2.7 数学运算类指令
PLC普遍具有较强的运算功能,其中数学运算指令是实现运算的主体,它包括四则运算指令、数学功能指令和递增、递减指令。其中四则运算指令包括整数四则运算指令、双整数四则运算指令、实数四则运算指令;数学功能指令包括三角函数指令、对数函数指令和平方根指令等。S7-200PLC对于数学运算指令来说,在使用时需注意存储单元的分配,在梯形图中,源操作数IN1、IN2和目标操作数OUT可以使用不一样的存储单元,这样编写程序比较清晰且容易理解。在使用语句表时,其中的一个源操作数需要和目标操作数OUT的存储单元一致,因此给理解和阅读带来不便,在使用数学运算指令时,建议读者使用梯形图。
2.7.1 四则运算指令
(1)加法/乘法运算
整数、双整数、实数的加法/乘法运算是将源操作数运算后产生的结果,存储在目标操作数OUT中,操作数数据类型不变。常规乘法两个16位整数相乘,产生一个32位的结果。
梯形图表示:IN1+IN2=OUT(IN1×IN2=OUT),其含义为当加法(乘法)允许信号EN=1时,被加数(被乘数)IN1与加数(乘数)IN2相加(乘)送到OUT中。
语句表表示:IN1+OUT=OUT(IN1×OUT=OUT),其含义为先将加数(乘数)送到OUT中,然后把OUT中的数据和IN1中的数据进行相加(乘),并将其结果传送到OUT中。
① 指令格式 加法运算指令格式如表2-24所示,乘法运算指令格式如表2-25所示。
表2-24 加法运算指令格式
表2-25 乘法运算指令格式
② 应用举例 按下启动按钮,小灯Q0.0会点亮吗?加法/乘法指令应用举例如图2-77所示。
图2-77 加法/乘法指令应用举例
(2)减法/除法运算
整数、双整数、实数的减法/除法运算是将源操作数运算后产生的结果,存储在目标操作数OUT中,整数、双整数除法不保留小数。而常规除法两个16位整数相除,产生一个32位的结果,其中高16位存储余数,低16位存储商。
梯形图表示:IN1-IN2=OUT(IN1/IN2=OUT),其含义为当减法(除法)允许信号EN=1时,被减数(被除数)IN1与减数(除数)IN2相减(除)送到OUT中。
语句表表示:IN1-OUT=OUT(IN1/OUT=OUT),其含义为先将减数(除数)送到OUT中,然后把OUT中的数据和IN1中的数据进行相减(除),并将其结果传送到OUT中。
① 指令格式 减法运算指令格式如表2-26所示,除法运算指令格式如表2-27所示。
表2-26 减法运算指令格式
表2-27 除法运算指令格式
② 应用举例 按下启动按钮,小灯Q0.0会点亮吗?减法/除法指令应用实例如图2-78所示。
图2-78 减法/除法指令应用举例
2.7.2 数学功能指令
S7-200PLC的数学函数指令有平方根指令、自然对数指令、指数指令、正弦指令、余弦指令和正切指令。平方根指令是将一个双字长(32位)的实数IN开平方,得到32位的实数结果送到OUT;自然对数指令是将一个双字长(32位)的实数IN取自然对数,得到32位的实数结果送到OUT;指数指令是将一个双字长(32位)的实数IN取以e为底的指数,得到32位的实数结果送到OUT;正弦、余弦和正切指令是将一个弧度值IN分别求正弦、余弦和正切,得到32位的实数结果送到OUT。以上运算输入/输出数据都为实数,结果大于32位二进制数表示的范围时产生溢出。
(1)指令格式
数学功能指令的指令格式如表2-28所示。
表2-28 数学功能指令的指令格式
(2)应用举例
按下启动按钮,观察哪些灯亮,哪些灯不亮,为什么?三角函数指令应用举例如图2-79所示。
图2-79 三角函数指令应用举例
2.7.3 递增、递减指令
(1)指令简介
字节、字、双字的递增/递减指令是源操作数加1或减1,并将结果存放到OUT中,其中字节增减是无符号的数,字和双字增减是有符号的数。
① 梯形图表示 IN+1=OUT,IN-1=OUT。
② 语句表表示 OUT+1=OUT,OUT-1=OUT。
值得说明的是,IN和OUT使用相同的存储单元。递增、递减指令格式如表2-29所示。
表2-29 递增、递减指令格式
(2)应用举例
按下启动按钮,观察Q0.0灯是否会点亮?递增/递减指令应用举例如图2-80所示。
图2-80 递增/递减指令应用举例
2.7.4 综合应用举例
例1:试用编程计算(9+1)×10-19,再开方的值。
具体程序如图2-81所示。程序编制并不难,按照数学(9+1)×10-19,一步步地用数学运算指令表达出来即可。这里考虑到SQRT指令输入/输出操作数均为实数,故加、减和乘指令也都选择了实数型。如果结果等于9,Q0.0灯会亮。
图2-81 例1程序
例2:控制1台3相异步电动机,要求电动机按正转30s→停止30s→反转30s→停止30s的顺序并自动循环运行,直到按下停止按钮,电动机方停止。
具体程序如图2-82所示。需要注意的是,递增指令前面习惯上加一个脉冲P,否则每个扫描周期都会加1。
图2-82 例2程序
重点提示
① 数学运算类指令是实现模拟量等复杂运算的基础,需要予以重视。
② 递增/递减指令习惯上用脉冲形式,如使能端一直为ON,则每个扫描周期都会加1或减1,这样有些程序就无法实现了。