目錄
- EnumParamReference
- EnumParamTranslator
- EnumVariable
- FloatFieldParamReference
- FloatParamReference
- FloatParamTranslator
- FloatVariable
- IntFieldParamReference
- IntParamReference
- IntParamTranslator
- IntVariable
- IntFieldVariable
- LinkProperties
- LinkParamTranslator
- StringParamReference
- ResourceReference
- IntParamSelector
- FloatParamSelector
![]()
函式庫 Parameters為 設計階段及執行階段的設計參數化提供了幾項主要優勢:
- 它允許設定通往特定參數的路徑,這些參數可能深層 嵌入在層級結構中。 如此一來,即使是位於受保護 層級方塊中的參數(或位於其他 受保護層級方塊內嵌的受保護層級方塊中的參數),也能在執行期間進行設定與重設,因為其 參數化介面已在層級結構中提升至一個 不受存取限制的層級。
- 您可以在設計中建立參數網和/或參數鏈, 藉此將一個參數值傳遞給其他各種運算子。 透過這種方式, 您可以簡化最終小程式的參數化:最終使用者可以, 例如,僅需設定一個參數一次,而此寫入過程將觸發設計中 其他各項參數據此自動設定,無需任何進一步的 使用者互動。
- 透過該函式庫的轉換運算子,您不僅可以傳遞 參數值,還能讓設計根據各項參數的當前 值計算出新值,並將結果寫入設計中任何 位置的其他參數。 公式由您自行定義。這些 公式的語法符合GenICam 標準(GenICam API 2.0版),並於 下文進行說明。
參數函式庫的好處在於,您可以建立 設計中參數值之間的連結(網路或鏈),而無需實際觸及 設計的資料流結構。
「函式庫參數」包含七個參考 運算子與四個轉換運算子。請參閱下方, 進一步了解這兩種類型的運算子。
You find example designs using the operators of the Parameters Library in your VisualApplets installation: <installation_directory>\VisualApplets\Examples\AdvancedVAFunctions\Parameters Library.
************************************************************
參考運算子
「參數」函式庫中的 「參考」運算子,可將運算子 參數與參考運算子的地圖參數「值」(或 「欄位」)建立一對一的對應關係。您可在「參考」參數中指定 被參考的參數(路徑與名稱)。
您可以在設計 層級結構中定義一個目標,使被參照的參數在此處可見且可存取。該目標由 兩個參數定義:「DisplayHierarchy」和「DisplayName」。在「DisplayHierarchy」 中,您指定一個位於與參照運算子本身 相同流程內的層級方塊。 在「DisplayName」參數中,您可設定目標參數的名稱。若 「DisplayHierarchy」與「DisplayName」皆已設定,則由 「DisplayName」所定義的參數,將可在「DisplayHierarchy」所指向的層級方塊中使用。 若「DisplayName」為空,則不會建立任何參數。若「DisplayName」已設定,但 「DisplayHierarchy」為空,則由「DisplayName」定義的參數將被新增至 父層級結構(即參考運算子本身所處的 層級方塊)。
這讓您能夠將設計中的 參數,設定為可在您指定的任何層級(該設計的)上使用。例如,您 可以將受保護層級方塊內模組的參數,設定為可 直接在該受保護層級方塊本身的屬性下方進行參數化設定。
已映射的參數本身亦可被引用。 因此,您可以在引用運算子中引用參數 Value的內容,或引用 您在參數「DisplayName」和「DisplayHierarchy」中定義的該 參數。當受保護的層級方塊是由其他 受保護的層級方塊所組成時,這一點 尤為重要。
![]() |
所有連接的參數會同時更新 |
|---|---|
|
若其中一個相連的參數發生變更(被引用參數、地圖 參數「值」,或目標參數),則所有其他相連的 參數的值也會隨之變更。 |
要設定地圖參數,您只需按照以下 2 至 3 個步驟操作:
- 實作一個參考運算子。
- 定義一個來源參數(例如,一個深層嵌套 於層級結構中的參數)。此時,該來源參數的值會 立即反映在參考運算子實例的映射參數中。
- (可選)定義第二個地圖參數的名稱與位置(目標層級方塊的 路徑及參數名稱)。
所有地圖參數在環境中均被視為一般參數。您可以 透過Framegrabber API 或Framegrabber SDK 工具(microDiagnostics 及 microDisplay)以與存取「原始」操作員參數相同的方式來存取這些參數。
每個參考運算子的實例,皆可建立設計中 任何參數的值與參考運算子實例的映射參數(參數 值)之間的一對一對應關係。
參考運算子所支援的資料類型:
要建立地圖參數,您首先需要實例化一個參考運算子。 針對每種可能的資料類型,您都可使用一個參考運算子:
| Operator Name | 此運算子所支援的資料類型 |
|---|---|
| IntParamReference | 整數 (VA_SINT, VA_UINT) |
| EnumParamReference | 枚舉 (VA_ENUM) |
| FloatParamReference | 浮點數 (VA_DOUBLE) |
| IntFieldParamReference | 整數欄位 (VA_SINTFIELD, VA_UINTFIELD) |
| FloatFieldParamReference | 浮點數欄位 (VA_DOUBLEFIELD) |
| StringParamReference | 字串 (VA_STRING, VA_FILENAME, VA_METADATA) |
| ResourceReference | 整數 (VA_SINT, VA_UINT) |
表 48:參考運算子支援的資料類型
使用參考運算子建立對應值的程序:
-
將所需的資料類型參考運算子具現化。
-
按兩下參考運算子執行個體以開啟其模組 Property。

-
在 Parameter Reference 中,指定您要讓參考運算子執行個體連接的來源參數。
在以下範例中,名為 Reference Operator Example 的運算子 IntParamReference 執行個體會連接到模組 Buffer 中的參數 YLength。在此範例中,兩個模組(Reference Operator Example 與 Buffer)都位於相同的階層層級。
參考參數的路徑:

參考參數:

![]() |
參考語法 |
|---|---|
|
語法如下:
![]()
<Path> is the relative path to the hierarchical level where the referenced module "Module" is located. Use a slash as separator between different hierarchical levels. Define the path as relative path from the hierarchical level the reference operator instance is located in. <Module> is the name of the module (operator instance or hierarchical box) that contains the referenced parameter. <ParamName> is the actual name of the referenced parameter. If <Path> starts with a slash, the path is interpreted as absolute path
starting from design level (e.g., 您也可以使用 |
-
將 Parameter Activate 設定為「Yes」。
-
按一下 Apply。參考參數的值會顯示在 Parameter Value(即對應參數)中。
在我們的範例中,運算子 Buffer 中的參數 YLength 值現在也可用於參考運算子執行個體的 Parameter Value 中:

透過參考運算子中的 Parameter Value,您可以執行許多操作。
例如,您可以讓 Parameter Value 中的值在設計中任何其他位置的另一個模組(運算子執行個體或階層式方塊)中可用。若要這樣做:
-
定義要具有與 Parameter Value 相同值的新參數名稱。您可以在參考運算子的 Parameter DisplayName 中執行此操作。您可以完全自由地定義名稱。
-
定義設計中要擁有此新參數的模組。您可以在參考運算子的 Parameter DisplayHierarchy 中執行此操作。
![]() |
設定顯示目標路徑的語法 |
|---|---|
|
如果您想讓新參數顯示在設計的其他位置,您需要在 Parameter DisplayHierarchy 中指定包含新參數的階層式方塊路徑。 語法如下:
![]()
<Path> is the relative path from process level to the hierarchical level of the design where the <Hierarchical Box> is located that is to receive the new parameter. Thus, parameter DisplayHierarchy can only address hierarchical boxes within the same process. Use a slash as separator between different hierarchical levels. <HierarchicalBox> is the name of the hierarchical box that is to receive the new map parameter. 範例: |
在我們的範例中,參考運算子執行個體的 Parameter Value 已連接到模組 ModuleWithConnectedParameter 的新參數 ConnectionToYLengthInModuleBuffer:

如果將 Parameter Activate 設定為「Yes」,按一下 Apply 按鈕後,新參數將會以正確的值顯示在連接的模組中:

因此,模組 ModuleWithConnectedParameter 的新參數 ConnectionToYLengthInModuleBuffer 具有與模組 Buffer 的參數 YLength 相同的值。
對應是由參考運算子執行個體完成的。
若這三個模組中的任何一個其相關參數被重設,該值 也會在所有其他模組中被重設:

階層式方塊:
Parameters 程式庫中的 Reference 運算子可讓您在您想要的任何階層層級(設計層級)上使用設計的參數。如果您想在執行階段允許對深層巢狀於受保護階層式方塊中的參數進行參數化(即,如果您想使其作為動態寫入參數可用),這會特別有幫助。為了便於對階層式方塊進行參數化,階層式方塊現在可以包含參數(作為階層式方塊本身的 Properties 中的參數)。
Reference 運算子允許設定從階層式方塊表面(階層式方塊的 Properties)到可能深度嵌入的特定參數的路徑。透過這種方式,甚至連受保護階層式方塊(或巢狀於其他受保護階層式方塊中的受保護階層式方塊)中的參數也可以在執行階段進行設定和重設,因為它們的參數化介面在階層中被提升到了沒有存取限制的階層層級。
對應參數本身可以被參考。因此,您可以在參考運算子中參考參數 Value(或 Field)的內容,或者參考您在參考運算子的參數 DisplayName 和 DisplayHierarchy 中定義的參數。當受保護階層式方塊是由其他受保護階層式方塊建構而成時,這一點尤為重要。
在我們的範例中,這意味著您可以參考模組 ReferenceOperatorExample 中的參數 Value,以及模組 ModuleWithConnectedParameter 中的參數 ConnectionToYLengthInModuleBuffer。
對參考運算子執行個體 ReferenceOperatorExample 的參數 Value 的參考:

對模組 ModuleWithConnectedParameter 的參數 ConnectionToYLengthInModuleBuffer 的參考:

![]() |
切勿建立參考迴圈 |
|---|---|
|
請確保您不會實作參考迴圈,例如 ModuleA.Value 參考 ModuleB.Value,且 ModuleB.Value 參考 ModuleA.Value。 |
透過六個可用的參考運算子,提供了所有可能作為受保護階層式方塊中參數值的資料類型。
************************************************************
轉譯運算子
parameters 程式庫的轉譯運算子允許對一個或多個其他運算子的參數進行轉譯存取。
您需要定義公式來進行計算。這些公式的語法符合 GenICam API 2.0 版,並在下方說明。
讀取動作:
在參數 ReadAction 中,您定義了對轉譯運算子的參數 Value 進行讀取存取時發生的情況。
與參考運算子的主要區別之一在於,轉譯運算子不只是保存一個值。相反,參數 Value 的值是透過公式計算出來的。您可以在參數 ReadAction 中定義此公式。
一旦對參數 Value 進行讀取存取,就會執行您在 ReadAction 中定義的公式,並將結果轉發給請求該值的元素。

公式可以包含設計中任何位置的運算子參數值。一旦這些值之一發生變更,轉譯運算子的參數 Value 的計算將產生新的結果(與先前保留的值參數 Value 不同)。
公式不僅可以納入參數的值,還可以納入參數的特定屬性,例如最小值、最大值、步長或列舉項目的數值。
寫入動作
在參數 WriteAction 中,您定義了對轉譯運算子的參數 Value 進行寫入存取時發生的情況。
與參考運算子不同,您不只是將參數 Value 的值轉發給設計中的另一個參數。相反,參數 Value 的值用於您在轉譯運算子的參數 WriteAction 中定義的一組寫入動作。寫入動作由一個或多個方程式組成。透過這些方程式的左側,您定義哪個運算子的哪個參數接收計算結果。如果您定義多個方程式,請用分號將方程式分隔開。
一旦對參數 Value 進行寫入存取,就會執行您在參數 WriteAction 中定義的方程式右側的公式,並將結果轉發給方程式左側指定的參數。
公式可以參照設計中任何位置的運算子參數值。一旦這些值之一發生變更,當您將與先前相同的值重新寫入 Value 參數時,計算結果將會不同。
公式不僅可以納入參數的值,還可以納入參數的特定屬性,例如最小值、最大值、步長或列舉項目的數值。
資料類型:
您所選取的 operator 會定義其參數 Value 的資料類型,亦即:
Operator IntParamTranslator -> 整數值
Operator FloatParamTranslator -> 浮點數整數值
Operator EnumParamTranslator -> 列舉 (enumeration) 的值
然而,儘管 operator 定義了其參數 Value 的類型,但它並不會限制在寫入或讀取作業期間所存取之參數的資料類型。例如,operator IntParamTranslator 定義其參數 Value 為整數類型;但 operator 中定義的公式可以包含對例如 double 類型參數的存取。
數值範圍計算公式
您也可以新增公式來計算參數 Value 的目前值域。您可以在參數 RangeFrom、RangeTo 和 RangeIncrement(步進大小)中定義對應的公式。
這些公式可以包含設計中任何位置的模組參數值,以及這些參數的特定 Property,例如最小值、最大值、步進大小或列舉項目的數值。
![]() |
翻譯 Operator 參數的語法 | ||
|---|---|---|---|
|
此語法遵循 GenICam API 標準 2.0 版。允許的公式元素與 GenICam 標準中定義的公式元素完全相同。如需明確說明,請參閱 FloatParamTranslator 與 IntParamTranslator operator 的個別說明文件。 參數路徑 若要從設計內的任何位置存取 operator 參數,您需要在公式中提供通往此參數的路徑。 若要存取 operator 的參數,請使用下列語法:
![]()
存取 Parameter Properties 這些公式不僅可以納入參數的值,還可以納入參數的特定 Property,例如最小值、最大值或步進大小:
寫入存取公式的語法 在參數中定義寫入動作的方程式
![]()
在這裡,您可以為多個目標參數定義多個方程式。使用分號作為個別方程式之間的分隔符號。
WriteAction 方程式範例:
![]()
範例:
![]()
讀取存取方程式的語法 為
![]()
ReadAction 方程式範例:
![]()
全域常數 在轉譯公式中,您也可以參考全域常數。在轉譯公式中參考全域常數時,請使用 :: 前綴來參照,例如
|
參考全域常數
除了存取模組參數及其 Property 之外,轉譯公式還可以參考全域常數。全域常數提供可在參數轉譯表達式中使用的全系統值。
在轉譯公式中,您可以使用 :: 前綴來定址全域常數。一般語法為 ${::ConstantName},例如
${::DesignClock} 或 ${::ConstantName}
預設情況下,以下標準全域常數可用於轉譯公式中:
-
${::DesignClock}– 以 MHz 為單位的目前設計時脈頻率 -
${::DesignClock.Min}– 最小有效時脈值 -
${::DesignClock.Max}– 最大有效時脈值
當 Value 是靜態的,您可以透過將 DisplayHierarchy 模組參數設定為 :: 資料夾內的 IntVariable,
FloatVariable,
IntParamTranslator或
FloatParamTranslator 運算子來建立使用者自訂全域常數。這會建立一個用於轉譯公式的全域常數。您可以使用 ${::myGlobalConst}.
來存取它
運算子清單
| Operator Name | 短說明 | 推出時間 | |
|---|---|---|---|
| EnumParamReference |
以下清單總結了 Library Parameters 的所有運算子 |
版本 3.0.1 | |
| EnumParamTranslator |
產生 VA_ENUM 類型的轉譯對應參數。使用 VA_ENUM 類型的參數在其他模組中建立多個轉譯對應參數。 |
版本 3.0.1 | |
| EnumVariable |
產生一個軟體變數。 |
版本 3.1 | |
| FloatFieldParamReference |
從 VA_DOUBLEFIELD 類型的參考參數產生對應參數。 |
版本 3.0.1 | |
| FloatParamReference |
從 VA_DOUBLE 類型的參考參數產生對應參數。 |
版本 3.0.1 | |
| FloatParamTranslator |
產生 VA_DOUBLE 類型的轉譯對應參數。 使用 VA_DOUBLE 類型的參數在其他模組中建立多個轉譯對應參數。 |
版本 3.0.1 | |
| FloatVariable |
產生一個軟體變數。 |
版本 3.1 | |
| IntFieldParamReference |
從 VA_SINTFIELD 或 VA_UINTFIELD 類型的參考參數產生對應參數。 |
版本 3.0.1 | |
| IntParamReference |
從 VA_SINT、VA_UINT 或 VA_ENUM 類型的參考參數產生 Int64 對應參數。 |
版本 3.0.1 | |
| IntParamTranslator |
產生 VA_SINT 類型的轉譯對應參數。 使用 VA_SINT 類型的參數在其他模組中建立多個轉譯對應參數。 |
版本 3.0.1 | |
| IntVariable |
產生一個軟體變數。 |
版本 3.1 | |
| IntFieldVariable |
此運算子會產生軟體變數欄位。 |
版本 3.5 | |
| LinkProperties |
允許存取已連接 link 的 Property。 |
版本 3.0.1 | |
| LinkParamTranslator |
此運算子允許讀取或寫入已連接 link 的 Property,並可執行寫入動作。 |
版本 3.3.0 | |
| StringParamReference |
從 VA_STRING、VA_FILENAME 或 VA_METADATA 類型的參考參數產生對應參數(字串)。 |
版本 3.0.1 | |
| ResourceReference |
從裝置資源對應的參考產生對應參數(整數)。 |
版本 3.3.0 | |
| IntParamSelector |
此運算子會產生一個 Int64-map Property,可在多個參考的 VA_SINT、VA_UINT 或 VA_ENUM 類型 Property 之間進行切換。 |
版本 3.3.0 | |
| FloatParamSelector |
此運算子會產生一個 map Property,可在多個參考的 VA_DOUBLE 類型 Property 之間進行切換。 |
版本 3.3.0 | |
表 49. Parameters Library 的運算子

![[備註]](../common/images/admon/note.png)


![[提示]](../common/images/admon/tip.png)

![[重要]](../common/images/admon/important.png)





上一頁

