CALCULATE:计算 |
说明:可以使用“计算”指令定义并执行表达式,根据所选数据类型计算数学运算或复杂逻辑运算。
可以从指令框的“???”下拉列表中选择该指令的数据类型。根据所选的数据类型,可以组合某些指令的函数以执行复杂计算。将在一个对话框中指定待计算的表达式,单击指令框上方的“计算器”图标可打开该对话框。表达式可以包含输入参数的名称和指令的语法。不能指定操作数名称和操作数地址。
在初始状态下,指令框至少包含两个输入(IN1 和 IN2)。可以扩展输入数目。在功能框中按升序对插入的输入编号。
使用输入的值执行指定表达式。表达式中不一定会使用所有的已定义输入。该指令的结果将传送到输出 OUT 中。
说明 如果表达式中的一个数学运算失败,则没有结果传送到输出 OUT,并且使能输出 ENO 返回信号状态“1”。 |
如果在表达式中使用了功能框中不可用的输入,则会自动插入这些输入。这要求表达式中新定义的输入编号是连续的。例如,如果表达式中未定义输入 IN3,就不能使用输入 IN4。
如果满足下列条件之一,则使能输出 ENO 的信号状态为“0”:
使能输入 EN 的信号状态为“0”。
“计算”指令的结果超出输出 OUT 指定的数据类型的允许范围。
浮点数的值无效。
执行表达式中某个指令期间出错。
下表列出了可在“计算”指令的表达式中一起执行的指令(取决于所选的数据类型):
数据类型 | 指令 | 语法 | 示例 |
---|---|---|---|
位字符串 | AND:“与”运算 | AND | IN1 AND IN2 OR IN3 |
OR:“或”运算 | OR | ||
XOR:“异或”运算 | XOR | ||
INV:求反码 | NOT | ||
SWAP:交换 1) | SWAP | ||
整数 | ADD:加 | + | (IN1 + IN2) * IN3; (ABS(IN2)) * (ABS(IN1)) |
SUB:减 | - | ||
MUL:乘 | * | ||
DIV:除 | / | ||
MOD:返回除法的余数 | MOD | ||
INV:求反码 | NOT | ||
NEG:取反 | -(in1) | ||
ABS:计算绝对值 | ABS( ) | ||
浮点数 | ADD:加 | + | ((SIN(IN2) * SIN(IN2) + (SIN(IN3) * SIN(IN3)) / IN3)); (SQR(SIN(IN2)) + (SQR(COS(IN3)) / IN2)) |
SUB:减 | - | ||
MUL:乘 | * | ||
DIV:除 | / | ||
EXPT:取幂 | ** | ||
ABS:计算绝对值 | ABS( ) | ||
SQR:计算平方 | SQR( ) | ||
SQRT:计算平方根 | SQRT( ) | ||
LN:计算自然对数 | LN( ) | ||
EXP:计算指数值 | EXP( ) | ||
FRAC:返回小数 | FRAC( ) | ||
SIN:计算正弦值 | SIN( ) | ||
COS:计算余弦值 | COS( ) | ||
TAN:计算正切值 | TAN( ) | ||
ASIN:计算反正弦值 | ASIN( ) | ||
ACOS:计算反余弦值 | ACOS( ) | ||
ATAN:计算反正切值 | ATAN( ) | ||
NEG:取反 | -(in1) | ||
TRUNC:截尾取整 | TRUNC( ) | ||
ROUND:取整 | ROUND( ) | ||
CEIL:浮点数向上取整 | CEIL( ) | ||
FLOOR:浮点数向下取整 | FLOOR( ) | ||
1) 不可使用数据类型 BYTE。 |
参数
下表列出了“计算”指令的参数:
参数 | 声明 | 数据类型 | 存储区 | 说明 |
---|---|---|---|---|
EN | Input | BOOL | I、Q、M、D、L 或常量 | 使能输入 |
ENO | Output | BOOL | I、Q、M、D、L | 使能输出 |
IN1 | Input | 位字符串、整数、浮点数 | I、Q、M、D、L、P 或常量 | 第一个可用的输入 |
IN2 | Input | 位字符串、整数、浮点数 | I、Q、M、D、L、P 或常量 | 第二个可用的输入 |
INn | Input | 位字符串、整数、浮点数 | I、Q、M、D、L、P 或常量 | 其它插入的值 |
OUT | Output | 位字符串、整数、浮点数 | I、Q、M、D、L、P | 最终结果要传送到的输出。 |
有关有效数据类型的更多信息,请参见“另请参见”。
示例
以下示例说明了该指令的工作原理:
下表将通过具体的操作数值对该指令的工作原理进行说明:
参数 | 操作数 | 值 |
---|---|---|
IN1 | Tag_Value_1 | 4 |
IN2 | Tag_Value_2 | 4 |
IN3 | Tag_Value_3 | 3 |
IN4 | Tag_Value_4 | 2 |
OUT | Tag_Result | 12 |
如果输入“Tag_Input”的信号状态为“1”,则将执行“计算”指令。将操作数“Tag_Value_1”的值与操作数“Tag_Value_2”的值相加。求得的和乘以操作数“Tag_Value_3”的值。求得的积除以操作数“Tag_Value_4”的值。求得的商作为最终结果传送到操作数“Tag_Result”中,并复制到该指令的输出 OUT 中。如果成功执行该指令,则将 ENO 使能输出和“Tag_Output”操作数的信号状态置位为“1”。