可以用可下述指令库编程实现此功能对数据值求绝对值(ABS)和求负值(NEG)。
“Sign Operation”指令库说明
“Sign Operation”库包括几个分别对浮点数(实数)、整数和双整数数值求绝对值和求负值的功能块。
绝对值 (ABS)
求绝对值的功能块 ABS_R,ABS_I 和 ABS_DI 分别用来求 REAL,INTEGER 和 DOUBLE INTEGER 类型数据的绝对值。
公式: y = |x|
函数 | 参数 | 数据类型 | 操作数 | ABS_R | IN | [REAL] | VD, ID, QD, MD, SD, SMD, LD, AC, Constant, *VD, *LD, *AC | OUT | [REAL] | VD, ID, QD, MD, SD, SMD, LD, AC, *VD, *LD, *AC | ABS_I | IN | [INT] | VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, Constant, AC, *VD, *AC, *LD | OUT | [INT] | VW, T, C, IW, QW, SW, MW, SMW, LW, AC, *VD, *AC, *LD | ABS_DI | IN | [DINT] | VD, ID, QD, MD, SD, SMD, LD, AC, HC, Constant, *VD, *LD, *AC | OUT | [DINT] | VD, ID, QD, MD, SD, SMD, LD, AC, *VD, *LD, *AC | 表 01: ABS_R,ABS_I 和 ABS_DI 函数的配置
负值 (NEG)
求负值的功能块 NEG_R,NEG_I 和 NEG_DI 分别用来求 REAL,INTEGER 和 DOUBLE INTEGER 类型数据的负值:
公式: y = - x
函数 | 参数 | 数据类型 | 操作数 | NEG_R | IN | [REAL] | VD, ID, QD, MD, SD, SMD, LD, AC, Constant, *VD, *LD, *AC | OUT | [REAL] | VD, ID, QD, MD, SD, SMD, LD, AC, *VD, *LD, *AC | NEG_I | IN | [INT] | VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, Constant, AC, *VD, *AC, *LD | OUT | [INT] | VW, T, C, IW, QW, SW, MW, SMW, LW, AC, *VD, *AC, *LD | NEG_DI | IN | [DINT] | VD, ID, QD, MD, SD, SMD, LD, AC, HC, Constant, *VD, *LD, *AC | OUT | [DINT] | VD, ID, QD, MD, SD, SMD, LD, AC, *VD, *LD, *AC | 表 02: NEG_R,NEG_I 和 NEG_DI 函数的配置
使能位
二进制位 EN (使能位) 置位时将执行此功能的操作。 输出使能位 ENO
由于数据范围定义的不对称,整型 (INTEGER) 和双整型 (DOUBLE INTEGER) 数的最小边界值(最小负值)不能被转换为正值!
因此为这些函数功能块提供了输出位 ENO (使能输出) 用来给出无错化处理的信息:功能块因 EN 置位而调用并且运算无误是,ENO 位置位(为真);如果发生了错误(例如溢出),则 ENO 不置位(为假),同时输出值不做运算。 ABS_I,ABS_DI,NEG_I 和 NEG_DI 函数功能块的运算结果限制如下:
整型(INTEGER): | -2^15-1 | = -32.767 | <= x | <= 32.767 | = 2^15-1 | 双整型(DOUBLE INTEGER): | -2^31-1 | = -2.147.483.647 | <= x | <= 2.147.483.647 | = 2^31-1 |
|