9.6 SIMATIC整数数学运算指令
整数加法和整数减法
整数的加法和减法指令把两个 16 位整数相加或相减
在 LAD和 FBD 中
IN1 + OUT = OUT
OUT - IN1 = OUT
使 ENO = 0 的错误条件是SM4.3 (运行时间)
SM1.0 (零)
SM1.2 (负)
输入/输出操作数数据类型IN1, IN2 VW, IW, QW, MW, SW, SMW, LW, AIW, T, C, AC, 常数, *VD, *AC,
INT
*LD
OUT VW, IW, QW, MW, SW, SMW, LW, T, C, AC, *VD, *AC, *LD INT
双整数加法和双整数减法
双整数的加法和减法指令把两个 32 位双整数相加或相减
在 LAD和 FBD 中
IN1 + OUT = OUT
OUT - IN1 = OUT
使 ENO = 0 的错误条件是SM4.3 (运行时间)
SM1.0 (零)
SM1.2 (负)
输入/输出操作数数据类型
IN1, IN2 VD, ID, QD, MD, SMD, SD, LD, AC, HC, 常数, *VD, *AC, *LD DINT
OUT VD, ID, QD, MD, SM, SD, LD, AC, *VD, *AC, *LD DINT
整数乘法和整数除法
整数乘法指令把两个16位整数相乘
整数除法指令把两个16位整数相除不保
留余数
就置位溢出位
IN1 * IN2 = OUT
IN1 / IN2 = OUT
在 STL中
SM1.1 (溢出)
0006 (间接寻址)
这些指令影响下面的特殊存储器位SM1.1 (溢
出) SM1.3 (被 0 除)
如果在乘或除的操作过程中 SM1.1 (溢出) 被置位
并且所有其它的算术状态位被置为 0
???üμ???ê?×′
ì???±£á?2?±?·??ò
输入/输出操作数数据类型
IN1, IN2 VW, IW, QW, MW, SW, SMW, LW, AIW, T, C, AC, 常数, *VD, *AC, *LD INT
OUT VW, QW, IW, MW, SW, SMW, LW, T, C, AC, *VD, *LD, *AC INT
双整数乘法和双整数除法
整数乘法指令把两个32位双整数相乘
双整数除法指令把两个32位双整数相除
不保留余数
IN1 * IN2 = OUT
IN1 / IN2 = OUT
在 STL中
SM1.1 (溢出)
0006 (间接寻址)
这些指令影响下面的特殊存储器位SM1.1 (溢
出) SM1.3 (被 0 除)
如果在乘或除的操作过程中 SM1.1 (溢出) 被置位
并且所有其它的算术状态位被置为 0
???üμ???ê?×′
ì???±£á?2?±?·??ò
输入/输出操作数数据类型
IN1, IN2 VD, ID, QD, MD, SMD, SD, LD, HC, AC, 常数, *VD, *AC, *LD DINT
OUT VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *LD, *AC DINT
整数乘法产生双整数和整数除法产生双整数
整数乘法产生双整数指令把两个16位整数相乘
整数除法产生双整数指令把两个16位整数相除
其中16位是余数(最高有效位)
在STL乘法指令中
在STL乘法指令中
在 LAD和 FBD 中
IN1 * OUT = OUT
OUT / IN1 = OUT
使 ENO = 0 的错误条件是SM4.3 (运行时间)
SM1.0 (零) SM1.2 (负)
???üμ???ê?×′ì???±£á?2?±?
·??ò
输入/输出操作数数据类型IN1, IN2 VW, IW, QW, MW, SW, SMW, LW, AC, AIW, T, C, 常数, *VD, *AC, *LD INT
OUT VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *LD, *AC DINT
算术运算举例
VW102注
STL 和 FBD 举例
字节增和字节减
字节增 (INCB) 或字节减 (DECB) 指令把输入字节 (IN) 加 1 或减
1
字节增减指令是无符号的
IN + 1 = OUT
IN - 1 = OUT
在STL中
SM1.1 (溢出)
0006 (间接寻址)
这些指令影响下面的特殊存储器位SM1.1 (溢出)
输入/输出操作数数据类型
IN VB, IB, QB, MB, SB, SMB, LB, AC, 常数, *VD, *AC, *LD BYTE
OUT VB, IB, QB, MB, SB, SMB, LB, AC,*VD, *AC, *LD BYTE
字增和字减
字增 (INCW) 或字减 (DECW) 指令把输入字 (IN) 加1或减1
字增减指令是有符号的 (16#7FFF > 16#8000)
IN + 1 = OUT
IN - 1 = OUT
在STL中
SM1.1 (溢出)
0006 (间接寻址)
这些指令影响下面的特殊存储器位SM1.1 (溢
出)
双字增和双字减
字增或双字减指令把输入字 (IN) 加1或减1
在 LAD 和 FBD 中
在 STL中
SM1.1 (溢出)
0006 (间接寻址)
这些指令影响下面的特殊存储器位SM1.0(零)
SM1.2 (负)
输入/输出操作数数据类型IN VD, ID, QD, MD, SD, SMD, LD, AC, HC, 常数, *VD, *AC, *LD DINT
OUT VD, ID, QD, MD, SD, SMD, LD, AC, *VD, *AC, *LD DINT
增减举例
DEC_DW
ENO
VD100
图 9-26 增/ LAD
9.7SIMATIC 实数数学运算指令
实数的加减
实数的加减指令把两个 32 位实数相加或相减
在 LAD 和 FBD 中
IN1 + OUT = OUT
OUT - IN1 = OUT
使 ENO = 0 的错误条件是SM4.3 (运行时
间)
SM1.0 (零)
SM1.2 (负)
SM1.1 用来指示溢出错误和非法值SM1.0
和 SM1.2 的状态就无效如果 SM1.1 不
置位
输入/输出操作数数据类型
IN1, IN2 VD, ID, QD, MD, SD, SMD, AC, LD, 常数, *VD, *AC, *LD REAL
OUT VD, ID, QD, MD, SD, SMD, AC, LD, *VD, *AC, *LD REAL
注意
单精度若要得到更多信息
实数的乘
产生 32 位实数结果
(OUT)
μ?μ?32位实数商
IN1*IN2 = OUT
IN1/ IN2 = OUT
在 STL 中
SM1.1 (溢出)
0006 (间接寻址)
这些指令影响下面的特殊存储器位SM1.1 (溢
出或发现输入参数非法)
SM1.3 (被 0 除)
如果在除法操作过程中 SM1.3 被置位
原始输入操作数也不变
如果 SM1.1 置位原
始操作数不改变
SM1.0 和 SM1.2 的状态反映算术操作的结果
实数或浮点数在 ANSI/IEEE 754 1958 标准中有描述请参阅该标准
算术运算举例
9-
27 实数算术运算指令的 LAD
9.8 SIMATIC数学功能指令
平方根
实数的开方指令 (SQRT) 把一个 32 位的实数 (IN) 开方
如下面等式所示
SM1.1 (溢出)
0006 (间接寻址)
这些指令影响下面的特殊存储器位SM1.1 (溢
出)
è?1? SM1.1 置位
原始操作数不改变SM1.0 和 SM1.2的状态反映算术操作的结果
结果放入输出 OUT
ó? DIV_R (/R) 指令将自然对数除以 2.302585 即可(其值近似于以 10 为底的对数值)
SM1.1 (溢出)
该指令影响下列的特殊存储器位SM1.1 (溢出)
SM4.3 (运行时间)
输入/输出操作数数据类型
IN VD, ID, QD, MD, SMD, SD, LD, AC, 常数, *VD, *AC, *LD REAL
OUT VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *AC, *LD REAL
指数
指数指令将输入 IN 的值取以e为底的指数
使 ENO=0的出错条件0006 (间接寻址)
SM1.0 (零位)
SM1.2 (负数)
该指令可与前面的自然对数指令相配合任意数为指数计算
5的3次方=5^3=EXP=125
125的3次方根=125^(1/3)=EXP=5
输入/输出操作数数据类型IN VD, ID, QD, MD, SMD, SD, LD, AC, 常数, *VD, *AC, *LD REAL
OUT VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *AC, *LD REAL
正弦正切
正弦指令将输入 IN 的弧度值取正弦输入值为弧度值使用 MUL_R (*R) 将该角度值乘以π /180 以将其转换为弧度值
结果放入输出 OUT è?1?ê?è??a???è?μ
正切指令将输入 IN 的弧度值取正切输入值为弧度值则将该角度值乘以π /180 以将其转换为弧度值
SM1.1 (溢出)
这个功能影响下列的特殊存储器位SM1.1 (溢出)
SM4.3 (运行时间)