Operator FloatParamTranslator

Operator Library: Parameters

運算子FloatParamTranslator允許對一個或多個其他運算子的參數進行轉換存取(讀取與寫入) 。 您需定義公式以進行計算。這些公式的語法符合GenICam API 2.0 版本規範。

此外,可利用此運算子建立用於轉換公式中的使用者自訂全域常數。 當Value為 static 時,您可以透過將DisplayHierarchy 參數設定為 :: 。 所建立的常數將在整個系統中生效,並可在所有 參數轉換公式中存取。有關在轉換公式中使用全域常數的詳細資訊,請參閱 DisplayHierarchy參數說明。

運算子FloatParamTranslator會產生一個類型為 VA_DOUBLE 的地圖參數。 該地圖參數的名稱為Value。

雖然該運算子將其參數Value的類型定義為 VA_DOUBLE 類型,但並未限制在寫入或讀取操作過程中所存取的 參數之資料類型。

讀取動作

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

該公式可以包含設計中任何位置的 operator 參數值。 一旦其中一個值發生變更,轉譯 operator 參數 Value 的計算將會產生新的結果 (與先前保存的 Value 參數值不同)。 該公式不僅可以納入參數的值,還可以納入參數的特定屬性,例如最小值、最大值、步進值或列舉項目的數值。

寫入動作

在參數WriteAction 中,您可定義在對 轉換運算子的參數Value進行寫入存取時,會發生什麼情況。 與使用參考運算子不同,您不會單純將參數Value的值 轉發給設計中的另一個參數。 相反地,參數Value的值 將用於執行您在 轉換運算子的參數WriteAction中所定義的一組寫入動作。 寫入動作由一個或多個方程式組成。 在這些方程式的左邊,您需定義哪個運算子的 哪個參數將接收計算結果。 若定義多個方程式,請以分號分隔各方程式。 一旦發生對參數Value 的寫入存取,您在參數WriteAction中定義的方程式 左側所列的公式 便會被執行,而結果將傳送至 方程式左側所指定的參數。

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

價值範圍的計算公式

您也可以新增公式,用以計算參數「Value」的當前值範圍。 您可在RangeFrom、 RangeTo 及RangeIncrement(步長)參數中定義相應的公式。 這些公式可包含設計中任何位置的模組參數值, 以及這些參數的特定屬性,例如最小值、最大值、 步長,或枚舉項的數值。

[提示]

公式語法:數學運算

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

基本操作:
() 括號
+ - * / 加法、減法、乘法、除法
% 餘數
** 權力
& | ^ ~ 位元運算:與 / 或 / 異或 / 非
<> = > < <= >= 邏輯關係:不等於/等於/大於/小於/小於或等於/大於或等於
&& || 邏輯與/邏輯或
<< >> 向左移動/向右移動

表 50. 基本操作


條件運算子

<condition> ? <true_expr> : <false_expr>

範例:

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

功能:
SGN(x) return sign of x. Returns +1 for positive argument and -1 for negative argument
NEG(x) 交換 x 的正負號
ABS(x) 返回 x 的絕對值
SQRT(x) 返回 x 的平方根
TRUNC(x) 對 x 進行截斷,意即返回最接近且絕對值不超過 x 的整數值
FLOOR(x) 向下取整,返回不超過 x 的最大整數值
CEIL(x) 向上取整,返回不小於 x 的最小整數值
ROUND(x,precision) round x to the number of decimal fractional digits given by precision, with halfway cases rounded away from zero
SIN(x) 返回 x 拉迪安角的正弦值
COS(x) 返回 x 拉迪安角的餘弦值
TAN(x) 返回 x 拉迪安角的正切值
ASIN(x) 返回 x 的反正弦值(以弧度為單位)
ACOS(x) 返回 x 的反正弦值(以弧度為單位)
ATAN(x) 返回 x 的反正切值的主值,單位為弧度
EXP(x) 返回 x 的以 e 為底的指數函數,即 e 的 x 次冪:ex
LN(x) 返回 x 的自然對數 自然對數即是以 e 為底的對數:自然指數函數 (exp) 的逆函數。
LG(x) 返回 x 的常用(十進位)對數
E() 返回歐拉數,2.7182818284590451
PI() 返回圓周率常數,3.1415926535897931

表 51. 函式


範例:

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

[提示]

參數路徑

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

若要存取 operator 的參數,請使用下列結構:

"PathToModule":在此處,您需定義要存取其參數的運算子的相對路徑。 此路徑是以翻譯運算子本身所處的層級為基準的相對路徑。 您還需定義要存取的運算子的名稱。請使用斜線作為層級分隔符。

「Module」:模組名稱。

作為轉譯 operator 實例本身的名稱,請使用名稱「this」。

[重要] 保持模組獨立性

不允許定義指向比 翻譯運算子所在層級更高的層級的路徑。 此規則的邏輯在於,層級模組不應知曉 其被實例化的環境的任何資訊,因為唯有如此, 該模組才能作為可自由重定位且可複製的模組使用。

[提示]

存取參數屬性

這些公式不僅能納入參數的數值, 還能納入參數的特定屬性,例如最小值、最大值或步長:

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

在轉換公式中,您也可以引用全域常數。在轉換公式中,可透過 以下方式引用全域常數: :: 字首,例如 ${::DesignClock} 或 ${::MyGlobalConst}.

[提示]

寫入存取方程式的語法

您在參數 WriteAction 中定義的寫入動作方程式。其語法如下:

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

"this" 是指轉換運算子執行個體本身。

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 方程式範例:

參照對應參數

您可以在設計階層中定義一個目標,對應參數 Value 將在此目標中顯示並可供存取。 此目標由兩個參數定義:DisplayHierarchy 和 DisplayName。 在 DisplayHierarchy 中,您可指定轉換運算子本身所在的 同一個處理程序內的階層方塊。 在參數 DisplayName 中,您可以設定目標參數的名稱。 如果同時設定了 DisplayHierarchy 和 DisplayName, 則由 DisplayName 定義的參數將可在 由 DisplayHierarchy 指定的階層方塊中使用。 如果 DisplayName 為空白,則不會建立任何參數。 如果設定了 DisplayName,但 DisplayHierarchy 為空白, 則由 DisplayName 定義的參數將會新增至父階層(亦即 轉換運算子本身所在的階層方塊)。

這可讓您在您想要的任何(設計)階層層級上存取 對應參數 Value。 這在處理受保護的階層方塊時特別有用。 您可以直接在受保護階層方塊本身的屬性下 使該參數可用。

對應參數本身也可以被參照。 因此,您可以選擇在轉換運算子中參照參數 Value 的內容, 或是參照您在參數 DisplayName 和 DisplayHierarchy 中定義的參數。 當由其他受保護階層方塊建構出 受保護階層方塊時,這一點特別重要。

此 operator 沒有輸入和輸出,因為它不會干擾設計的資料流結構。

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

I/O Properties

Property Value
Operator Type 無(因為沒有輸入或輸出)

Supported Link Format

無

Parameters

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

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

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

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

如果您想要從設計中的另一個位置 存取參數 Value 或授權存取該參數, 您需要定義一個新參數。 在此指定此新參數的名稱。

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

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

在此指定您要附加在參數 DisplayName 中定義的新 map 參數的階層式方塊。

針對此參數,您可以使用自動完成功能和語法高亮顯示。若要使用自動完成功能,請在「模組屬性」對話方塊中,點擊 此參數的「參數值」欄位 ,然後按下 TAB 鍵。有關自動完成 功能的更詳細說明,請參閱「翻譯運算子與參考 運算子的自動完成與語法著色」。

如果您定義了新參數 DisplayName, 但將參數 DisplayHierarchy 留空:新參數將會 新增至包含參考 operator 實例的階層式方塊。 (請記住,如果參考 operator 實例 位於最高(製程)層級,則無法這樣做。)

[注意] 設定顯示目標路徑的語法

若要讓新參數顯示在設計的其他位置, 您需要在 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為靜態時,您可以透過將DisplayHierarchy參數 設定為 :: 。

例如,如果 DisplayName 設為 myGlobalConst 進行明確的生命週期管理即呼叫 DisplayHierarchy 設為 :: ,則運算子會建立全域常數 ${::myGlobalConst} 供轉換公式使用。

該全域常數可在整個系統中存取,並可在 轉換公式中加以引用。

Value
Type static、dynamic、write、read 參數
Default 0
Range double

透過方程式存取其他參數的參數, 該方程式係針對讀取與寫入存取所指定。

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

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

在此輸入參數 Value 的單位。

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

在此輸入參數 Value 的描述。

RangeFrom
Type 靜態寫入參數
Default 0.1
Range

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

RangeTo
Type 靜態寫入參數
Default 1.0
Range

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

RangeIncrement
Type 靜態寫入參數
Default 0.1
Range

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

WriteAction
Type 靜態寫入參數
Default
Range

寫入存取參數 Value 期間的轉譯方程式定義。

針對此參數,您可以使用自動完成功能和語法著色。 若要使用自動完成功能,請在「模組屬性」對話方塊中, 點擊 此參數的「參數值」欄位 ,並輸入「${」。有關自動完成 功能的更詳細說明,請參閱〈翻譯運算子與參考 運算子的自動完成與語法著色〉。

ReadAction
Type 靜態寫入參數
Default
Range

讀取存取參數 Value 期間的轉譯方程式定義。

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

針對此參數,您可以使用自動完成功能和語法著色。 若要使用自動完成功能,請在「模組屬性」對話方塊中, 點擊 此參數的「參數值」欄位 ,並輸入「${」。有關自動完成 功能的更詳細說明,請參閱〈翻譯運算子與參考 運算子的自動完成與語法著色〉。

Activate
Type dynamic write parameter
Default 否
Range {No, Yes}

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

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

Examples of Use

以下範例展示了 FloatParamTranslator 運算子的使用方式: