Operator LinkParamTranslator

Operator Library: Parameters

该算子提供对所连接链路的 Property 的读或写访问权限。写访问可能会通过写入操作触发次要参数更新。

此算子的优点在于,它能够通过库 Parameters 的其他算子更改链路 Property。此外,当链路 Property 发生更改时,您可以使用此算子更改其他模块参数。为此,您可以定义写入操作。您还可以使用此算子来固定链路 Property 并强制实施多个链路 Property 之间的依赖关系。

输出端口 O 的链路格式严格遵循输入端口 I 的格式。模块参数反映了端口 I 处链路 Property 的当前状态。您可以将模块参数从 Read(默认值)更改为 Write。Read 模式意味着相应的链路 Property 是只读的。通过这种方式,该算子的表现类似于 LinkProperties 算子。如果某个参数设置为 Write,则可以对该参数进行设置。在这种情况下,参数值将传播到相应的链路 Property。这还有一个附加效果,即输出端口 O 处的相应链路 Property 将无法再进行编辑,这对于选择性地冻结链路 Property 非常有用。此外,来自输入连接的相应链路 Property 将不再传播到 I 和 O 的 Property。在 Write 模式下,即使无法编辑所连接输入链路的相同 Property,也可以编辑链路 Property 参数。在这种情况下,输入链路上可能会显示一个错误,指示附加的前置模块的格式与 LinkParamTranslator 实例的格式不匹配。

在参数 WriteAction 中,您可以定义链路 Property 更改时发生的情况。Activate 参数用于激活在 WriteAction 中定义的写入操作:

  • 如果 Activate 设置为 No,则访问标志为 Write 的参数可能仍会更改,但不会执行任何写入操作。由于任何链路 Property 都是静态参数,因此可能的写入目标也必须是静态的。
  • 如果写入目标是自身模块的参数,则寻址的模块参数可以具有 Read 或 Write 模式。
  • 如果参数的模式为 Read,则该写入操作可用于强制实施有关链路 Property 的某些规则。

写入操作由一个或多个方程式组成。如果定义了多个方程式,请用分号将方程式隔开。在这些方程式的左侧,您可以定义哪个模块的哪个参数接收计算结果。使用以下符号 this 引用此模块的参数时。一旦链路 Property 发生更改(无论是由于传入链路的更新,还是由于对该模块参数的写访问),参数 WriteAction 中定义的方程式右侧的公式将被执行,并且结果将转发给方程式左侧指定的参数。与左侧一样,您可以使用以下符号引用此模块的参数 this.

示例:

${this.MaxImgWidth} = (${this.MaxImgWidth} <= 1024) ? ${this.MaxImgWidth} : 1024;

该公式可以引用设计中任意位置的静态模块参数的值。该公式不仅可以包含参数的值,还可以包含参数的特定 Property,例如最小值、最大值、步长或枚举项的数值。

[提示]

公式语法:数学运算

该语法符合 GenICam API 标准 2.0 版本。允许的公式元素与 GenICam 标准中定义的公式元素相同:

基本运算:
() 括号
+ - * / 加法、减法、乘法、除法
% 求余
** 电源
& | ^ ~ 按位:and / or / xor / not
<> = > < <= >= 逻辑关系:不等于 / 等于 / 大于 / 小于 / 小于或等于 / 大于或等于
&& || 逻辑与 / 逻辑或
<< >> 左移 / 右移

表 54. 基本运算


条件运算符

<condition> ? <true_expr> : <false_expr>

示例:

${target.Value} = (${this.BitWidth} > 8) ? 2 : 1;

函数:
SGN(x) 返回 x 的符号。正参数返回 +1,负参数返回 -1。
NEG(x) 切换 x 的符号。
ABS(x) 返回 x 的绝对值。
SQRT(x) 返回 x 的平方根。
TRUNC(x) 对 x 进行截断,即返回绝对值不大于 x 的最接近的整数值。
FLOOR(x) 向下取整,返回不大于 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 为底的指数函数,即 e 的 x 次方:ex。
LN(x) 返回 x 的自然对数。自然对数是以 e 为底的对数,即自然指数函数 (exp) 的反函数。
LG(x) 返回 x 的常用对数(以 10 为底)。
E() 返回欧拉常数,2.7182818284590451。
PI() 返回圆周率常数,3.1415926535897931。

表 55. 函数


示例:

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

[提示]

参数路径

要在设计中的任意位置访问算子参数,您需要在公式中提供该参数的路径。

要访问算子的参数,请使用以下结构:

PathToModule:在此处,您定义要访问其参数的算子的相对路径。该路径相对于翻译算子本身所在的层级。您还需定义被访问算子的名称。使用斜杠作为层级分隔符。

Module:模块的名称。

对于翻译算子实例本身的名称,请使用名称 this.

[重要] 保持模块的独立性

不允许定义指向高于翻译算子所在层级的层级的路径。 这一规则遵循的逻辑是:分层模块不得了解其实例化环境的任何信息,因为只有在这种情况下,它才能被用作可自由重新定位和复制的模块。

[提示]

访问 Property

公式不仅可以合并参数的数值,还可以合并参数的特定 Property,例如最小值、最大值或步长:

  • ${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 指翻译算子实例本身。

您可以在以下位置找到库的一般介绍 Parameters in Library Parameters.

I/O Property

Property 值
Operator Type O
Input Link I,图像数据输入
Output Link O,图像数据输出

Supported Link Format

Link Parameter Input Link I Output Link O
Bit Width [1, 64]1 作为 I
Arithmetic {Unsigned, signed} 作为 I
Parallelism 任意 作为 I
Kernel Columns 任意 作为 I
Kernel Rows 任意 作为 I
Img Protocol {VALT_IMAGE2D, VALT_LINE1D, VALT_PIXEL0D, VALT_SIGNAL} 作为 I
Color Format 任意 作为 I
Color Flavor 任意 作为 I
Max. Img Width 任意 作为 I
Max. Img Height 任意 作为 I

1

输入 Bit Width 的范围为 [1, 64]。对于有符号输入,范围为 [2, 64]。对于无符号彩色输入,范围为 [3, 63],对于有符号彩色输入,范围为 [6, 63]。

参数

状态
键入 静态读取(尽管 GUI 显示为写入)参数
默认 无
范围 OK 否则会发生错误消息

显示错误状态。如果参数 Activate 设置为 Yes,则会检查其他模块参数。此参数显示此检查的结果,即出现 OK 或错误消息。

此参数不包含在最终的小程序中。

协议
键入 静态写参数
默认 VALT_IMAGE2D
范围 {VALT_IMAGE2D,VALT_LINE1D,VALT_PIXEL0D,VALT_SIGNAL}

允许访问 link Property Protocol。可能的值为 VALT_IMAGE2D、VALT_LINE1D、VALT_PIXEL0D、VALT_SIGNAL。

ColorFormat
键入 静态写参数
默认 VAF_GRAY
范围 {VAF_GRAY,VAF_COLOR,VAF_NONE,VAF_UNDEFINED}

允许访问 link Property ColorFormat。可能的值为 VAF_GRAY、VAF_COLOR、VAF_NONE、VAF_UNDEFINED。

ColorFlavor
键入 静态写参数
默认 FL_NONE
范围 {FL_NONE,FL_RGB,FL_HSI,FL_YUV,FL_LAB,FL_XYZ,FL_HSL,FL_HSV,FL_YCrCb}

允许访问链接 Property ColorFlavor。可选值为 FL_NONE、FL_RGB、FL_HSI、FL_YUV、FL_LAB、FL_XYZ、FL_HSL、FL_HSV 和 FL_YCrCb。

Arithmetic
键入 静态写参数
默认 UNSIGNED
范围 {SIGNED, UNSIGNED}

允许访问链接 Property Arithmetic。可选值为 SIGNED 和 UNSIGNED。

BitWidth
键入 静态写参数
默认 1
范围

允许访问链接 Property BitWidth。

Parallelism
键入 静态写参数
默认 1
范围

允许访问链接 Property Parallelism。

KernelRows
键入 静态写参数
默认 1
范围

允许访问链接 Property KernelRows。

KernelColumns
键入 静态写参数
默认 1
范围

允许访问链接 Property KernelColumns。

MaxImgWidth
键入 静态写参数
默认 1024
范围

允许访问链接 Property MaxImgWidth。

MaxImgHeight
键入 静态写参数
默认 1024
范围

允许访问链接 Property MaxImgHeight。

WriteAction
键入 静态写参数
默认
范围

定义用于在对链接 Property 参数进行写访问期间进行转换的方程式。

对于此参数,您可以使用自动完成功能和语法高亮显示。要使用自动完成功能,请点击 Module Properties 对话框中该参数的 Parameter Values 字段,并键入 “${”。有关自动完成功能的更多详细说明,请访问 'Autocompletion and Syntax Highlighting for Translator and Reference Operators'。

Activate
键入 动态写入参数
默认 无
范围 {No, Yes}

Yes = 已激活通过 WriteAction 中的写方程式访问引用的参数。

No = 通过写方程式访问引用的参数已被停用,并且参数 Status 已禁用。

使用示例

以下示例展示了算子 LinkParamTranslator 的使用: