语句表中的数学运算指令对累加器1和累加器2的数据进行运算,运算结果在累加器1中(见图3-98)。对于有4个累加器的CPU,累加器3的内容复制到累加器2,累加器4的内容复制到累加器3,累加器4原有的内容保持不变。数学运算指令影响状态位CC1、CC0、OV和OS。
图3-98 数学运算示意图
1.语句表中的整型数学运算指令
语句表中的整型数学运算指令的操作见表3-17。下面是整数加法运算的例子。
表3-17 整型数学运算指令
语句表中的整数乘法指令“*I”将累加器1、2低字的16位整数相乘,32位双整数运算结果在累加器1。如果整数乘法的运算结果超出了16位整数允许的范围,OV和OS位均为1。在语句表中输入程序时,不能使用中文的加号和减号。
2.梯形图中的整型数学运算指令
梯形图中的整型数学运算指令对输入参数IN1和IN2进行运算,运算结果送输出参数OUT(见图3-99)。四则运算指令的操作为IN1+IN2=OUT,IN1-IN2=OUT,IN1*IN2=OUT,IN1/IN2=OUT。(www.xing528.com)
图3-99 压力计算程序
【例3-9】AI模块的输出值为N,改用整型数学运算指令实现(3-1)式的压力计算公式为
在运算时一定要先乘后除,否则会损失原始数据N的精度。应根据指令的输入、输出数据可能的最大值选用整数运算指令或双整数运算指令。
假设用于测量压力的AI模块的通道地址为PIW320,模拟量满量程时A-D转换后的数字N的值为0~27648,乘以10000以后乘积可能超过16位整数的允许范围,因此应采用双整数乘法指令MUL_DI。除法指令中的被除数是双整数,也应采用双整数除法指令DIV_DI。
首先用I_DI指令将PIW320中的原始数据(16位整数)转换为双整数(见图3-99)。双整数乘、除法指令中的常数应使用“L#”开始的32位的双整数常数。3.8节的程序见随书光盘中的例程“数学运算”。
如果某一方框指令的运算结果超出了整数运算指令的允许范围,状态位OV和OS将为1,使能输出ENO为0,不会执行该方框指令右边的指令。
双整数除法指令DIV_DI的运算结果为双字,但是由式(3-2)可知运算结果实际上不会超过16位正整数的最大值32767,所以运算结果在MD26的低字MW28中。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。