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”。