运算符
代表标准 IEC 函数子集的内置标准函数称为运算符。在安全编程中无法创建用户定义的函数。
这些运算符的语义与 CODESYS 标准。
它们可以连接到 SAFExxx 和 数据类型 标准。
插入运算符
也可以从工具箱中添加运算符 工具箱 视图。安全 FBD 编辑器中的工具箱包含以下类别:
布尔运算符
数学运算符
其他运营商
输入助手
输入助手中显示以下操作员类别:
运算符
转换 (不属于基础级别)
可扩展运算符
ANDORADD(仅限扩展级别)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 个输入)XORNOT
重要
粗心使用 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:比较“大于”或“等于”
SELMUX
BOOL_TO_INTBOOL_TO_DINTBOOL_TO_TIMEBOOL_TO_WORDBYTE_TO_INTBYTE_TO_DINTBYTE_TO_TIMEBYTE_TO_WORDDINT_TO_BOOLDINT_TO_BYTEDINT_TO_INTDINT_TO_TIMEDINT_TO_WORDDINT_TO_DWORDDWORD_TO_DINTDWORD_TO_TIMEINT_TO_BOOLINT_TO_BYTEINT_TO_DINTINT_TO_DWORDINT_TO_TIMEINT_TO_WORDTIME_TO_BOOLTIME_TO_BYTETIME_TO_INTTIME_TO_DINTTIME_TO_WORDTIME_TO_DWORDWORD_TO_BOOLWORD_TO_BYTEWORD_TO_DINTWORD_TO_INTWORD_TO_TIMEWORD_TO_DWORD
具有安全特征的操作人员
以下各节描述了一些特定运算符的特征
如果扩展级别的操作员超出范围,则会出现运行时错误
重要
开发人员有责任设计程序逻辑以避免发生运行时错误。
对以下超范围做出反应 运行时错误,导致应用程序停止并生成日志条目。
等级 | 语言元素 | 运行时错误 |
|---|---|---|
扩展 |
| 除以 0 |
扩展 |
| 使用第一个输入的负值或大于输入数减 1 的值 N 进行调用。例如: |
扩展 |
| 输出值不在目标类型的值范围内:在两种类型之间转换时
同样地
|
提示
标准行为 SEL/MUX (即,如果输入值太大则选择最大值,如果输入值为负数则选择 0)必须在安全应用程序中进行编程。
SEL:对于 k < 0
SEL:对于 k>max,n...最大值
MUX 对于k < 0
MUX 对于k>0