西门子PLC从入门到精通
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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,这样有些程序就无法实现了。