运算符
代表标准 IEC 函数子集的内置标准函数称为运算符。在安全编程中无法创建用户定义的函数。
这些运算符的语义与 CODESYS 标准。
它们可以连接到 SAFExxx
和 数据类型 标准。
插入运算符
也可以从工具箱中添加运算符 工具箱 视图。安全 FBD 编辑器中的工具箱包含以下类别:
布尔运算符
数学运算符
其他运营商
输入助手
输入助手中显示以下操作员类别:
运算符
转换 (不属于基础级别)
可扩展运算符
AND
OR
ADD
(仅限扩展级别)MUL
(仅限扩展级别)MUX
(仅限扩展级别)
这 EQ
, LT
, LE
, GT
, 和 GE
运算符同样可以根据 IEC 进行扩展,但只能与两个输入一起使用(与标准的情况一样)。
这 插入输入 命令为可扩展操作员框添加了进一步的输入。
基础层操作员
AND
(2 个输入)AND
(3 个输入)OR
(2 个输入)OR
(3 个输入)
所有操作数 OR
必须是 SAFEBOOL
。
扩展级别的运算符
AND
(2 个输入)AND
(3 个输入)OR
(2 个输入)OR
(3 个输入)XOR
NOT
重要
粗心使用 XOR
和 NOT
操作员可能导致故障安全特性的丧失 SAFExxx
变量。安全检查器不会针对此类构造生成任何警告。
这 XOR
和 NOT
操作员可以否定故障安全属性 SAFExxx
变量,这样 SAFE
变量失去其故障安全属性,即变为“非故障安全”。这可能导致设备意外启动。
编程规则: SAFExxx
输出 NOT
和 XOR
必须确定。随后,必须确保这些 NOT
/XOR
输出未连接至输出 (I/O)。
ADD
(2 个输入):算术ADD
操作员ADD
(3 个输入):三个输入的加法SUB
:减法MUL
:乘法DIV
: 分配EQ
:比较是否相等NE
:不等式比较LT
:比较“小于”LE
:比较“小于”或“等于”GT
:比较“大于”GE
:比较“大于”或“等于”
SEL
MUX
BOOL_TO_INT
BOOL_TO_DINT
BOOL_TO_TIME
BOOL_TO_WORD
BYTE_TO_INT
BYTE_TO_DINT
BYTE_TO_TIME
BYTE_TO_WORD
DINT_TO_BOOL
DINT_TO_BYTE
DINT_TO_INT
DINT_TO_TIME
DINT_TO_WORD
DINT_TO_DWORD
DWORD_TO_DINT
DWORD_TO_TIME
INT_TO_BOOL
INT_TO_BYTE
INT_TO_DINT
INT_TO_DWORD
INT_TO_TIME
INT_TO_WORD
TIME_TO_BOOL
TIME_TO_BYTE
TIME_TO_INT
TIME_TO_DINT
TIME_TO_WORD
TIME_TO_DWORD
WORD_TO_BOOL
WORD_TO_BYTE
WORD_TO_DINT
WORD_TO_INT
WORD_TO_TIME
WORD_TO_DWORD
具有安全特征的操作人员
以下各节描述了一些特定运算符的特征
如果扩展级别的操作员超出范围,则会出现运行时错误
重要
开发人员有责任设计程序逻辑以避免发生运行时错误。
对以下超范围做出反应 运行时错误,导致应用程序停止并生成日志条目。
等级 | 语言元素 | 运行时错误 |
---|---|---|
扩展 |
| 除以 0 |
扩展 |
| 使用第一个输入的负值或大于输入数减 1 的值 N 进行调用。例如: |
扩展 |
| 输出值不在目标类型的值范围内:在两种类型之间转换时
同样地
|
提示
标准行为 SEL
/MUX
(即,如果输入值太大则选择最大值,如果输入值为负数则选择 0)必须在安全应用程序中进行编程。
SEL
:对于 k < 0
SEL
:对于 k>max,n...最大值
MUX
对于k < 0
MUX
对于k>0