Operator IntParamTranslator

Operator Library: Parameters

Operator IntParticipantTranslator 允許對一個或多個其他 operator 的參數進行轉換式存取(讀取與寫入)。 您可為計算定義公式。這些公式的語法符合 GenICam API 2.0 版標準。 下方提供詳細的語法說明。

此外,此 operator 也可用於建立使用者定義的全域常數,以便在轉換公式中使用。 當 Value 為靜態時,您可以透過將 DisplayHierarchy 參數設定為 :: 來建立全域常數。 所產生的常數將在全系統範圍內生效,並可在所有 參數轉換公式中進行存取。如需在轉換公式中使用全域常數的詳細資訊,請參閱 DisplayHierarchy 參數說明。

Operator IntParamTranslator 會產生一個型別為 VA_SINT 的對應參數。 該對應參數的名稱為 Value。

儘管此 operator 將其參數 Value 的型別定義為 VA_SINT,但它並不會限制在寫入或讀取操作期間所存取參數的資料型別。 例如,operator 中定義的公式可以包含對浮點數型別參數的存取。

讀取動作

在參數 ReadAction 中,您可以定義對轉換 operator 的參數 Value 進行讀取存取時所發生的情況。 參數 Value 不僅僅是保存一個值。 相反地,參數 Value 的值是透過公式計算得出的。 您可以在參數 ReadAction 中定義此公式。 一旦發生對參數 Value 的讀取存取, 您在 ReadAction 中定義的公式就會執行, 並將結果轉發給請求該值的元素。

該公式可以包含設計中任意位置的 operator 參數值。 只要這些值其中之一發生變更,轉換 operator 參數 Value 的計算就會得出新的結果 (與參數 Value 之前保存的值不同)。 該公式不僅可以結合參數的值,還可以結合參數的特定 Property,例如最小值、最大值、步進大小或列舉項目的數值。

寫入動作

在參數 WriteAction 中,您可以定義對轉換 operator 的參數 Value 進行寫入存取時所發生的情況。 與使用參考 operator 不同,您不只是簡單地將參數 Value 的值轉發到設計中的另一個參數。相反地,參數 Value 的值是用於您在轉換 operator 的參數 WriteAction 中定義的一組寫入動作。 寫入動作由一個或多個方程式組成。 在這些方程式的左側,您定義哪個 operator 的哪個參數接收計算結果。 如果您定義了多個方程式,請使用分號將方程式隔開。 一旦發生對參數 Value 的寫入存取,您在參數 WriteAction 中定義的方程式右側公式就會被執行, 並將結果轉發給方程式左側指定的參數。

該公式可以參照設計中任何位置的 operator 參數值。 只要這些值之一發生變更,當您將與之前相同的價值重新寫入 Value 參數時,計算結果就會有所不同。 該公式不僅可以納入參數的值, 還可以納入參數的特定 Property,例如最小值、 最大值、步進大小或列舉項目的數值。

數值範圍計算公式

您也可以新增公式來計算參數 Value 的目前數值範圍。 您可以在參數 RangeFrom、 RangeTo 和 RangeIncrement(步進大小)中定義對應的公式。 這些公式可以包含設計中任意位置的模組參數值, 以及這些參數的特定 Property,例如最小值、最大值、 步進大小或列舉項目的數值。

[提示]

公式語法:數學運算

語法符合 GenICam API 2.0 版標準。 允許使用的公式元素與 GenICam 標準中定義的公式元素完全相同:

基本運算:
() 括號
+ - * / 加法、減法、乘法、除法
% 餘數
** 次方
& | ^ ~ 位元運算:and / or / xor / not
<> = > < <= >= 邏輯關係:不等於 / 等於 / 大於 / 小於 / 小於或等於 / 大於或等於
&& || 邏輯與 / 邏輯或
<< >> 左移 / 右移

表 52. 基本運算


條件運算子

<condition> ? <true_expr> : <false_expr>

範例:

${target.Value} = (${this.Value} > 0) ? 1 : 0;

函數:
SGN(x) 傳回 x 的正負號。對於正數引數傳回 +1,對於負數引數傳回 -1
NEG(x) 交換 x 的正負號
ABS(x) 傳回 x 的絕對值
SQRT(x) 傳回 x 的平方根
TRUNC(x) 將 x 截斷,這意味著傳回絕對值不大於 x 的最接近整數值
FLOOR(x) Round downward, returning the largest integral value that is not greater than x
CEIL(x) 向上捨入,傳回不小於 x 的最小整數值
ROUND(x,precision) 將 x 捨入到 precision 指定的小數位數,中間情況採用遠離零捨入法
SIN(x) 傳回以弳度為單位之角度 x 的正弦值
COS(x) 返回 x 弧度角的餘弦值
TAN(x) 傳回 x 弧度角的正切值
ASIN(x) 傳回 x 的反正弦主值,以弧度表示
ACOS(x) 傳回 x 的反餘弦主值,以弧度表示
ATAN(x) 傳回 x 的反正切主值,以弧度表示
EXP(x) 傳回 x 的自然指數函數,即 e 的 x 次方:ex
LN(x) 傳回 x 的自然對數 自然對數是以 e 為底的對數:自然指數函數 (exp) 的反函數。
LG(x) 傳回 x 的常用對數(以 10 為底)
E() 傳回尤拉常數,2.7182818284590451
PI() 傳回圓周率常數,3.1415926535897931

表 53. 函數


範例:

${target.Value} = NEG(${this.Value})

[重要] GenICam 支援個別函數

透過 GenICam 存取時,保證支援 SGN(x) 和 NEG(x) 函數。上述提到的其他函數 可能會或可能不會受到特定 GenICam 實作的支援。

[提示]

參數路徑

若要在設計中的任何位置存取運算子參數,您需要在公式中提供此參數的路徑。

若要存取 operator 的 parameter,請使用下列語法結構:

"PathToModule":在此定義要存取其 parameter 的 operator 之相對路徑。 此路徑相對於 translation operator 本身所在的階層層級。 您同時也定義了所存取 operator 的名稱。請使用斜線作為階層分隔符號。

"Module":Module 的名稱。

對於 translation operator 實例本身,請使用名稱 "this"。

[重要] 保持您的 Modules 獨立

不得定義指向高於 translation operator 所在階層層級之階層層級的路徑。 此規則遵循以下邏輯:階層式 module 不得 知道任何關於其具現化所在環境的資訊,因為唯有如此, 它才能作為可自由重新定位與複製的 module 來使用。

[提示]

存取 Parameter Properties

公式不僅可以納入 parameter 的數值, 還可以納入 parameter 的特定 properties,例如最小值、最大值或步進值:

  • ${PathToModule/Module.ParamName.From} 或 ${PathToModule/Module.ParamName.Min}: parameter 的最小有效值 PathToModule/Module.ParamName.
  • ${PathToModule/Module.ParamName.To} 或 ${ PathToModule/Module.ParamName.Max}: parameter 的最大有效值 PathToModule/Module.ParamName.
  • ${PathToModule/Module.ParamName.Inc}: 兩個有效 parameter 值之間的遞增量(步進值) PathToModule/Module.ParamName.
  • ${PathToModule/Module.ParamName.Enum("EnumName")}:列舉名稱的整數值 EnumName.

在 translation 公式中,您也可以參照全域常數。全域常數在 translation 公式中 是使用 :: 前綴來參照,例如 ${::DesignClock} 或 ${::MyGlobalConst}.

[提示]

寫入存取方程式的語法

您可在 parameter WriteAction 中定義寫入動作的方程式。它們具有下列語法:

在此,您可以為多個目標 parameter 定義多個方程式。請使用分號作為個別 方程式之間的分隔符號。

"this" 是指 translation operator 實例本身。

WriteAction 方程式範例:

範例:

[提示]

讀取存取方程式的語法

The equation for the read action you define in parameter ReadAction. The equation always starts with "${this.Value}=" . It has the following syntax:

ReadAction 方程式範例:

參照 Map Parameters

您可以在設計階層中定義一個目標,在此目標中,map parameter Value 將會顯示且可供存取。 此目標由兩個 parameters 定義:DisplayHierarchy 與 DisplayName。 在 DisplayHierarchy 中,您指定的是 translation operator 本身所在的 同一個處理程序中的階層式方塊。 在 parameter DisplayName 中,您設定目標 parameter 的名稱。 如果同時設定了 DisplayHierarchy 與 DisplayName, 則由 DisplayName 定義的 parameter 將可在 由 DisplayHierarchy 指定的階層式方塊中使用。 如果 DisplayName 為空白,則不會建立任何 parameter。 如果設定了 DisplayName,但 DisplayHierarchy 為空白, 則由 DisplayName 定義的 parameter 將會新增至父階層(亦即 translation operator 本身所在的階層式方塊)。

這可讓您在(設計的)任何所需階層層級上, 使 map parameter Value 能夠被存取。 這在使用受保護的階層式方塊時特別有用。 您可以直接在受保護階層式方塊本身的 properties 下方, 使該 parameter 可用。

映射的參數本身也可以被引用。因此,您既可以引用轉換運算子中參數 Value 的內容,也可以引用您在參數 DisplayName 和 DisplayHierarchy 中定義的參數。當受保護的分層方塊是由其他受保護的分層方塊建構而成時,這一點尤為重要。

由於此運算子不會干擾設計的資料流結構,因此沒有輸入與輸出。

關於 Library Parameters 的一般介紹,請參閱 Library Parameters。

I/O Properties

Property Value
Operator Type 無(由於沒有輸入或輸出)

支援的 Link 格式

無

參數

Status
Type 靜態讀取(儘管 GUI 顯示為寫入)參數
Default 無
Range OK 或錯誤訊息

顯示錯誤狀態。如果參數 Activate 設為 Yes,則會檢查其他運算子設定。此參數會顯示此檢查的結果,即 OK 或錯誤訊息。

此參數不屬於最終 applet 的一部分。

DisplayName
Type 靜態寫入參數
Default 無
Range 任意字串

如果您想要在設計中的其他位置授予對參數 Value 的存取權(無論是自該處存取還是存取該處),您需要定義一個新參數。請在此處指定此新參數的名稱。

如果此欄位為空,則不會建立新參數。

DisplayHierarchy
Type 靜態寫入參數
Default 無
Range 任意字串

在此指定您要附加在引數 DisplayName 中定義的新對應引數的階層方塊。

對於此參數,您可以使用自動完成功能和語法突顯。若要使用自動完成功能,請點擊 Module Properties 對話方塊中此參數的 Parameter Values 欄位,然後按鍵盤上的 TAB 鍵。關於自動完成功能的更詳細說明,請參閱 'Autocompletion and Syntax Highlighting for Translator and Reference Operators'。

如果您定義了一個新引數 DisplayName,但將引數 DisplayHierarchy 留空:新引數將會新增至包含參考運算子實例的階層方塊中。(請注意,如果參考運算子實例位於最高(處理程序)層級,則無法這樣做。)

[備註] 設定顯示目標路徑的語法

如果您希望新引數顯示在設計的其他位置,您需要在引數 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.

範例: Level0/Level1

[備註] 定義全域常數

當 Value 為 static 時,您可以將 DisplayHierarchy 參數設定為 :: 來建立使用者自訂的全域常數。

例如,如果 DisplayName 且 myGlobalConst 和 DisplayHierarchy 且 :: ,則運算子會建立全域常數 ${::myGlobalConst} 以便在轉換公式中使用。

該全域常數可在系統範圍內存取,並可在轉換公式中被引用。

Value
Type 靜態、動態、寫入、讀取引數
Default 0
Range 有號整數 (64 位元)

用於透過為讀取和寫入存取指定的方程式存取其他參數的參數。

若要建立用於轉換公式的使用者自訂全域常數,此參數必須是 static。關於如何建立全域常數的說明,請參閱 DisplayHierarchy 參數說明。

單位
Type 靜態寫入參數
Default -
Range Latin-1

在此輸入引數 Value 的單位。

描述
Type 靜態寫入參數
Default -
Range 任意文字

在此輸入引數 Value 的說明。

RangeFrom
Type 靜態寫入參數
Default 0
Range

最小有效值的定義。您也可以在此處輸入公式。

RangeTo
Type 靜態寫入參數
Default 255
Range

最大有效值的定義。您也可以在此處輸入公式。

RangeIncrement
Type 靜態寫入參數
Default 1
Range

有效值之間間隔的定義(步長的定義)。您也可以在此處輸入公式。

WriteAction
Type 靜態寫入參數
Default
Range

定義在寫入存取參數 Value 期間進行轉換的方程式。

對於此參數,您可以使用自動完成功能和語法突顯。若要使用自動完成功能,請點擊 Module Properties 對話方塊中此參數的 Parameter Values 欄位,然後輸入 “${”。關於自動完成功能的更詳細說明,請參閱 'Autocompletion and Syntax Highlighting for Translator and Reference Operators'。

ReadAction
Type 靜態寫入參數
Default
Range

定義在讀取存取參數 Value 期間進行轉換的方程式。

方程式一律以「${this.Value}=」開頭。

對於此參數,您可以使用自動完成功能和語法突顯。若要使用自動完成功能,請點擊 Module Properties 對話方塊中此參數的 Parameter Values 欄位,然後輸入 “${”。關於自動完成功能的更詳細說明,請參閱 'Autocompletion and Syntax Highlighting for Translator and Reference Operators'。

Activate
Type 動態寫入參數
Default 否
Range {No,Yes}

Yes = 啟用對參照參數的存取(透過讀取與寫入方程式)。

No = 停用對參照參數的存取(透過讀取與寫入方程式), 並停用 Status 參數。 DisplayName 與 DisplayHierarchy 參數將無效。

使用範例

以下範例顯示了 IntParamTranslator 運算子的使用方式: