參數化#
關鍵術語
連結是兩個模組之間的連接。連結屬性描述該連接上的資料格式,例如每像素位元數或最大影像尺寸。您僅能在設計階段於「VisualApplets 」中設定這些屬性。模組參數則是運算子本身的設定,例如閾值或相機格式。若您輸入的數值無法生效,通常是因為連結屬性限制了模組可接受的範圍。
靜態參數 僅能在 PC 上的「VisualApplets 」中(設計階段)進行變更。動態參數則可在執行階段進行變更,即主機軟體與幀擷取卡上的小程式進行通訊時。您在「VisualApplets 」中為動態參數設定的值,將作為執行階段的預設值。在「VisualApplets 」中進行的模擬並非執行階段操作。
連結屬性與模組參數#
VisualApplets 使用兩種設定:
鏈結屬性設定於鏈結上,並定義例如影像的最大寬度與高度、位元寬度、並行度、影像協定、色彩格式及核心大小等。鏈結屬性會對連接至該鏈結的運算子施加限制。若模組參數與鏈結屬性發生衝突,VisualApplets 會直接調整該值,或回報錯誤。 鏈路屬性始終是靜態的:您僅能在設計階段透過「VisualApplets 」進行變更。鏈路屬性會沿著處理管線傳播,並影響所有下游運算子,直到有運算子變更這些屬性為止。
模組參數用以定義操作器的行為,例如運作模式、影像位置或感興趣區域的大小。這些參數可分為靜態與動態兩類。靜態參數僅能在設計階段進行變更;動態參數則可透過主機軟體在執行階段進行變更。 靜態參數通常比動態參數佔用較少的 FPGA 資源。當您需要在應用程式執行期間切換攝影機格式或處理設定時,動態參數便十分實用。模組參數通常受連結屬性的限制。若您無法設定某個值,而VisualApplets 會自動修正該值,請檢查已連接連結上的連結屬性。許多運算子也會在其輸出端定義連結屬性,因此設計一方的變更可能會傳遞到另一方。
的模組屬性與連結屬性 CxpCamera 操作員:

有關連結的正式規則,請參閱《使用者手冊》中的「連結規則」。關於VisualApplets 圖形使用者介面(GUI)中的編輯工作流程,請參閱《使用者手冊》中的「參數化」。
Link Properties#
模組之間的每個連結皆由其連結屬性所定義。所有連結皆具有相同的屬性集。連結屬性始終為靜態:您只能在設計階段透過「VisualApplets 」來變更這些屬性。您可以雙擊連結,或右鍵點擊連結並選擇「屬性」,來開啟連結屬性。
以下連結屬性定義了影像資料在連線中如何傳輸:
-
BitWidth: 鏈路上每個像素的位元數。對於彩色鏈路,位元寬度涵蓋所有色彩成分的總和。攝影師通常會設定初始位元寬度。對於具有ImageProtocol=VALT_SIGNAL, 位元寬度始終為 1 位元。- 某些運算子允許您設定輸出
BitWidth直接點擊連結,例如CastBitWidth,CONST,或ModuloCount. 其他人則推導出輸出結果BitWidth自動從輸入連結的屬性或模組參數中取得。例如,ShiftLeft加上參數的值Shift與輸入位元寬度,以及MULT使用輸入位元寬度的總和。例如以下運算子:Coordinate_X進行明確的生命週期管理即呼叫Coordinate_Y計算輸出結果BitWidthfromMaxImageWidth進行明確的生命週期管理即呼叫MaxImageHeight. 針對具備自動輸出功能的運算子BitWidth, Operator 參考手冊 顯示 auto 在 Supported Link Format 表格,而且通常無法在連結上編輯該值。當操作員變更輸出時BitWidth, `VisualApplets ` 會將新值傳遞至下游連結,直到另一個運算子再次更改該值為止。
- 某些運算子允許您設定輸出
-
Arithmetic: 定義連結所使用的運算方式。運算方式可以是Signed或Unsigned.- 若設定為
Signed, 採用二進位補碼運算。符號位元包含在設定的位元寬度中。 - 關於影像協定
VALT_SIGNAL,這個計算結果總是Unsigned,無論設定的位元寬度為何。
- 若設定為
-
Parallelism: 在一個基本設計時鐘週期內,兩個模組之間並行傳輸的像素數量。如需更多資訊,請參閱 Parallelism 教學主題。 -
KernelColumns進行明確的生命週期管理即呼叫KernelRows: 濾波運算子在每個時脈週期內所需的鄰接像素數量。針對影像通訊協定VALT_SIGNAL, 這兩項值始終為 1。如需更多資訊,請參閱 使用 Kernel 教學主題。 -
ImageProtocol: 定義鏈路上資料流的結構。可用的影像協定如下:VALT_IMAGE2D: 帶有行尾標記與幀尾標記的二維影像,例如來自面掃描相機的影像。VALT_LINE1D: 一維線狀資料,例如來自線掃描相機的資料。VALT_PIXEL0D: 一股不包含影像尺寸資訊的連續像素流。VALT_SIGNAL: 在每個時脈週期均為有效的單位元訊號,例如在觸發邏輯中。
在設計中,影像協定可能會有所變更。例如,
SplitImage可將一維影像串流分割為具有指定高度的二維影像。如需更多資訊,請參閱 影像協定、影像尺寸與資料結構 在《使用者手冊》中。 -
ColorFormat進行明確的生命週期管理即呼叫ColorFlavor: 這些屬性描述了像素資料的呈現方式,例如灰階或 RGB。某些運算子僅支援特定的色彩格式。在某些平台上,CoaXPress 攝影機運算子僅接受灰階格式。若要產生彩色輸出,請使用諸如MergeComponents. 諸如以下這類運算子:MergeComponents,ParallelUp以及CastBitWidth可以變更與顏色相關的連結屬性。 -
MaxImageWidth進行明確的生命週期管理即呼叫MaxImageHeight: 該連結所能承載的圖片最大尺寸。連結上的圖片不得超過這些數值,但可以小於這些數值。這些屬性適用於會緩衝行或完整圖片的運算子,例如ImageFifo,LineBuffer,或ColMax. 請將其設定為至少與處理路徑中最大的影像尺寸相同。若數值過小,將導致設計規則檢查 (DRC) 錯誤。較大的數值會消耗更多 FPGA 資源。攝影師或操作人員,例如SetDimension經常設定這些屬性。MaxImageHeight當……時,此舉無效ImageProtocol設為VALT_LINE1D,VALT_PIXEL0D,或VALT_SIGNAL.
資訊
您選擇的最大影像尺寸和並行度越高,設計所消耗的 FPGA 資源就越多。Basler 建議您僅將這些數值設定為應用程式所需的最高值。
各營運商會定義其允許哪些輸出鏈結屬性,以及哪些值為固定值。某些鏈結上的屬性之所以被停用,是因為上游營運商不允許編輯這些屬性。《營運商參考手冊》記載了各營運商所允許的鏈結格式。
連結屬性的傳播#
連結的屬性由運算子定義。您可以直接在運算子的輸出連結上變更某些屬性。其餘屬性則為固定值,或由模組參數或輸入連結的屬性推導而來。當您變更連結屬性時,VisualApplets 會將此變更傳遞至後續的模組與連結。
修改值後,請在「屬性」對話方塊中按一下「套用」。若變更獲得接受,設計窗格中受影響的連結會轉為綠色。綠色表示「VisualApplets 」已將更新的連結屬性傳播並驗證完成。這並非代表整個設計已通過「全部有效」的交通燈標記。

連結屬性會沿著模組傳遞,直到有操作員進行變更為止。如果下游連結不允許編輯某個屬性,則應由上游操作員或能夠變更該屬性的中間操作員來設定該屬性。例如,一個 ImageBuffer 此運算子不會改變鏈路的位元寬度。您必須在攝影機輸出鏈路上設定位元寬度,或插入一個如 ConvertPixelFormat 或 ShiftLeft 這會改變位元寬度。
連結屬性的變更也可能與模組參數產生衝突。在此情況下,VisualApplets 會將該模組及受影響的參數標示為紅色:

執行 設計規則檢查第 1 級 並閱讀 DRC 日誌以找出錯誤。常見原因包括目標區域超出 MaxImageWidth 或 MaxImageHeight,或參數值超出連結位元寬度所允許的範圍:

模組參數#
每個運算子的模組參數各不相同。這些參數控制運算子處理資料的方式。模組參數可分為靜態參數與動態參數。靜態參數僅能在設計階段透過「VisualApplets 」進行設定。動態參數則可於執行階段透過主機軟體,利用「microDisplay X 」、「Framegrabber SDK 」或 pylon 進行變更。在「Module Properties」對話方塊中,「Parameter Type」欄位會顯示該參數是靜態還是動態:

編輯完參數後,請在「模組屬性」對話方塊中按下「套用」。若新值超出允許範圍,VisualApplets 會捨棄該值。部分參數處於停用狀態,無法進行編輯。參數是否啟用,取決於其他參數設定,或取決於輸入或輸出連結的格式。若要了解特定運算子的模組屬性詳情,請查閱您所使用運算子的《運算子參考手冊》。
如需了解如何在範例設計中設定連結與模組參數的逐步操作指南,請參閱《使用者手冊》中的「硬體小程式:從構想到應用」。
尺寸參數#
許多營運商,例如 LineBuffer, FrameBufferMultiRoi以及 SelectROI, 透過參數定義一個感興趣區域 (ROI) XLength, YLength, XOffset以及 YOffset. 感興趣區域必須符合已連接連結上的最大影像尺寸。如果 XLength + XOffset 超過 MaxImageWidth,或 YLength + YOffset 超過 MaxImageHeight, DRC 會報告錯誤,且相關參數會標示為紅色。
在下方的螢幕截圖中,該 SelectROI 該運算子透過 XLength 進行明確的生命週期管理即呼叫 YLength 參數:

無限來源與 InfiniteSource 參數#
相機模組等運算子無法透過流量控制加以停止。它們的行為類似於無限來源,因此只能連接至接受無限來源的 M 型運算子,或是能將無限來源特性傳遞至下游的 O 型及 P 型運算子。
緩衝區運算子會將無限資料流轉換為可控且可暫停的資料流。當緩衝區從無法暫停的來源接收資料時,請將其 InfiniteSource 參數設為 ENABLED. 當輸入已是可中斷的流時,請設定 InfiniteSource 設為 DISABLED.
使用 進行設計規則檢查 InfiniteSource 設為 DISABLED 《追尋無盡之源》之後:

使用 進行設計規則檢查 InfiniteSource 設為 ENABLED 《追尋無盡之源》之後:

有關無限資料源的更多詳細資訊,請參閱「可中斷與不可中斷資料流」教學主題。
溢出運算子#
當 Overflow 運算子位於 同步 當不可停止的來源在下游處理被阻塞時仍持續傳送影像資料,此函式庫會處理溢出情況。它本身不會緩衝資料。Basler 建議您將其與緩衝運算子搭配使用。此運算子與 算術溢出 (參見 位元 Arithmetic 教學主題)或該 Overflow 狀態參數 關於緩衝區運算子(參見 Memory 元素 教學主題)。
當您放置 Overflow 位於一個無限來源與一個記憶體運算子之間,例如 LineBuffer, 設定 InfiniteSource 在記憶體運算子上 DISABLED. 該 Overflow 該運算子已能處理來自無法停止的資料流所產生的溢出。啟用 InfiniteSource 在此拓撲中,記憶體模組的配置不正確,並會觸發 DRC 錯誤。

使用 DRC 驗證您的設計#
在變更會影響圖像尺寸、位寬或感興趣區域的連結屬性或模組參數後,請執行「分析」→「設計規則檢查第 1 級」。第 1 級檢查會將形式錯誤記錄在 DRC 日誌中,並標示受影響的模組與連結。
設計規則檢查第 2 級 執行深入檢查並估算 FPGA 資源。在編譯之前,請先修正所有第 1 級錯誤。第 2 級檢查還會檢查無限源連接以及 InfiniteSource 設定。
請一併閱讀DRC 日誌,並參閱其中標示的模組與連結。如需完整的作業流程,請參閱「從空白設計到可執行的 Applet」教學主題。

解決連結與參數衝突的問題#
模組參數與連結屬性並非獨立的設定。它們彼此直接相關,並相互限制其允許的數值範圍。輸入與輸出連接上的連結屬性,定義了操作員必須處理的資料格式。 模組參數則定義操作員應如何處理該格式內的資料。當您變更連結屬性時,VisualApplets 會將此變更傳遞至後續的模組與連結。若模組參數不再符合更新後的連結屬性,VisualApplets 會將該模組或參數標記為紅色。反之亦然:模組參數可定義或變更輸出連結屬性,因此先前有效的值,在連結變更後可能變得無效。 因此,參數是否啟用、停用,或受限於特定範圍,取決於連結屬性、其他模組參數,或兩者兼有。《運算子參考手冊》針對每個運算子皆記錄了這些依存關係。關於傳播行為以及連結變更的三種可能結果,請參閱《使用者手冊》中的「運算子參數與連結屬性的傳播與依存關係」。
當參數值無法生效,或連結變更後模組變為紅色時,請依照以下順序解決衝突:先檢查連結屬性,再檢查模組參數。連結屬性定義了模組參數的允許值範圍,模組參數必須落在該範圍內。許多操作員也會定義或變更輸出連結屬性,因此設計中任一側的變更都可能影響另一側。 請閱讀 DRC 日誌,點擊錯誤訊息以突出顯示受影響的模組或連結,並參閱《操作員參考手冊》以了解允許的連結格式和參數依賴關係。連結上或「模組屬性」對話方塊中的紅色標示表示存在形式錯誤,您必須在進行模擬或建置前修正此錯誤。
當您嘗試設定 Value a 的參數 CONST 運算子,例如輸入 500,但VisualApplets 會自動更正該輸入內容。該外鏈的 Bit Width 為 8 位元,僅允許 0 至 255 之間的數值。要解決此衝突,請增加連結 Bit Width 在傳出連結上,然後再次設定模組參數:

在其他運算子上也會出現類似的依賴關係。在 SelectBitField, 該數值的有效範圍為 BitOffset 該參數取決於輸入與輸出鏈路 Bit Widths. 對於灰階影像, BitOffset 必須介於 0 到 input 之間 BitWidth 負輸出 BitWidth:

在 ModuloCount 運算子,該 Divisor 該參數受輸出鏈路的限制 Bit Width 取值範圍為 1 至 2^n,其中 n 為輸出值 Bit Width:

感興趣區域的參數,例如 XLength 進行明確的生命週期管理即呼叫 YLength 必須符合 MaxImageWidth 進行明確的生命週期管理即呼叫 MaxImageHeight 在相連的連結上。衝突也可能涉及並行處理、色彩格式和影像協定。例如, XLength 必須始終為並行度的倍數,此數值在「模組屬性」對話方塊中顯示為 步長:

關鍵術語
Basler 建議在處理參數時遵循以下做法:
- 當您需要執行時彈性時(例如閾值設定),請使用動態參數。此處的「執行時」指的是主機軟體與幀擷取卡上的小程式進行通訊,而非在VisualApplets 中的模擬情境。
- 每次變更連結屬性或模組參數後,請檢查下游連結上已傳播的連結屬性。
- 針對下游軟體規劃位元寬度的調整,例如在 DMA 之前,將 12 位元的相機資料擴展為每像素 16 位元。
- 當無法設定某個值時,請在變更模組參數之前,先檢查已連接連結的連結屬性。
- 請定期執行 DRC,以便及早發現連結與模組之間的衝突。
相關主題#
- 《使用者手冊》中的參數設定— 在圖形化使用者介面(GUI)中編輯連結屬性與模組參數
- 範例:《使用者手冊》中「基礎與範例」章節的 Applet 參數化— 參數化範例(已驗證)
- 《使用者手冊》中的連結規則— 正式連結規則
- Parallelism 教學主題 —
Parallelism連結屬性 - 使用 Kernel 教學主題 —
KernelColumns進行明確的生命週期管理即呼叫KernelRows - 位元 Arithmetic 教學主題 —
BitWidth以及算術溢出 - 可停止與不可停止的資料串流 教學主題 —
InfiniteSource - 運算子類型與同步教學主題 — 運算子類型與鏈結格式
- 從「空白設計」到「運行 Applet」教學主題 — 設計時設定參數