当前课程知识点:电气控制技术与PLC > 第6章 功能指令的应用 > 6.5 算术运算指令及其应用 > 算术运算指令及其应用
大家好
之前课程我们学习了什么是功能指令
今天我们来学习
功能指令中的算术运算指令
算术运算指令
在实际应用比较广泛
如模拟量转换计算
脉冲长度计算等
算术运算指令
主要包括四则运算指令
和递增递减指令
根据不同数据类型
每个指令又分为
对整数
双整数
实数的运算
首先我们来了解一下
四则运算指令
四则运算指令
主要包括加法指令
减法指令
乘法指令
除法指令
其功能
分别为
将IN1和IN2的数据相加
分别为将IN1和IN2 的数据相加
将IN1和IN2的数据相加
相减 相乘 相除后
送到OUT所指定的地址单元
我们以加法指令ADD为例进行介绍
加法指令包括整数加法指令
双整数加法指令
实数加法指令
其指令格式如右图所示
LAD表示指令的梯形图格式
我们可以看到
指令输入端有EN IN1和IN2
输出端有ENO和OUT
STL表示指令的语句表形式
表示为数据类型
空格 IN1 逗号 OUT
其功能为
当EN=1时
将两个输入端
IN1和 IN2指定的数据相加
结果送到输出端
OUT所指定的地址单元
(OUT)所指定的地址单元
ADD I表示将两个16位整数相加
产生一个16位的和
ADD D表示将两个32位整数相加
产生一个32位的和
ADD R表示将两个32位实数相加
产生一个32位实数的和
其中IN1 IN2和 OUT的操作数
可以采用表格中最后一列的数据
加法指令在使用时要注意
1 加法运算指令将
将影响特殊存储器的零标志位
SM1.0
溢出标志位
SM1.1和负数标志位SM1.2
2 执行加法运算时
源操作数和目标操作数的数值
都不能超过其运算范围
整数加法的运算范围为
-32 768~32 767
双整数的运算范围为
-2 147 483 648~2 147 483 647
若运算结果超出允许的范围
则溢出标志位SM1.1置1
下面我们来看右图所示程序
第1段程序
I0.0接加法指令的EN端
输出ENO端接Q0.0
当I0.0为1时
ADD I开始执行
将IN1和IN2的数据
VW0和VW2相加后
送到OUT所指定的地址单元VW6中
并且Q0.0为1
第2段程序
若运算结果为0时
SM1.0为1则后面Q0.1为1
第3段程序
若运算结果溢出时
SM1.1为1则后面Q0.2为1
如图所示
如果VW0数据为-2
VW2数据为+20
则加法指令执行完之后
VW6的数据为+18
且Q0.0为1
执行结果不为0
所以Q0.1为0
由于整数加法的范围为
-32 768~32 767
所以没有溢出
Q0.2为0
我们可以通过
状态图表监测到各变量的值
如图所示
如果令VW0=32 000
VW2=1 000
则VW0+VW2=33 000
但是由于整数加法的范围为
-32 768~32 767
运算结果值超过数值范围
则加法指令执行完之后
VW6的数据为-32536
且Q0.0为0
代表未能正常输出
运算过程存在溢出
溢出标志位SM1.1为1
所以Q0.2为1
我们可以通过状态图表监测到各变量的值
减法指令SUB
包括整数减法指令
双整数减法指令
实数减法指令
其指令格式如右图所示
其LAD形式
STL形式
操作数和加法指令类似
功能为
当EN=1时
将两个输入端IN1和IN2
指定的数据相减
结果送到输出端OUT所指定的地址单元
减法指令使用时的注意事项和加法指令相似
大家使用时留意即可
右图所示梯形图
当I0.0为1时
执行SUB指令
将IN1的数据8和IN2的数据17相减
并将结果送到VD10
执行完之后结果为-9
所以负数标志位SM1.2为1
则Q0.1为1
乘法指令MUL
包括整数乘法指令
双整数乘法指令
实数乘法指令
产生双整数的整数乘法指令
其指令格式如右图所示
其LAD形式STL形式
操作数和加法指令类似
功能为
当EN=1时
将两个输入端IN1和IN2
指定的数据相乘
结果送到输出端
OUT所指定的地址单元
乘法指令使用时要注意
1产生双整数的整数乘法指令
MUL的源操作数
和目标操作数的数据类型不同
它是两个16位整数相乘
产生一个32位的结果
2乘法指令将影响特殊存储器
SM1.0
SM1.1
SM1.2
若在乘法运算中溢出标志位SM1.1为1
则运算结果不写到输出
且其他状态位均清零
3 整数数据作乘2运算
其二进制数据左移1位
作乘4运算
左移2位
作乘8运算
左移3位
右图所示梯形图
当I0.0为1时
先执行ADD指令
将IN1的数据+40
和IN2的数据+50相加
并将结果送到VW10
则VW10为+90
之后执行MUL指令
将VW10的数据+90
和IN2的数据5相乘
并将结果送到VD20
所以VD20数据为450
当执行第2段程序中的比较指令时
VD20等于450
所以Q0.1输出为1
除法指令DIV
包括整数除法指令
双整数除法指令
实数除法指令
带余数的整数除法指令
其指令格式如右图所示
其LAD形式
STL形式
操作数和乘法指令类似
功能为当EN=1时
将两个输入端IN1和IN2指定的数据相除
结果送到输出端OUT所指定的地址单元
除法指令使用时的注意事项
和乘法指令相似
只需要将乘法换成除法即可
右图所示梯形图
当I0.0为1时
执行DIV指令
将IN1的数据25
和IN2的数据3相除
并将结果送到VW10
同时将高位的余数传送到AC0
将低位的商传送到AC1
下面
我们来看一下递增递减指令
递增递减指令
和四则运算指令类似
包括字节递增指令
字递增指令
双字递增指令
字节递减指令
字递减指令
双字递减指令
助记符分别为INC和DEC
功能为EN=1时
将输入端IN的数据加1或者减1后
结果送到输出端OUT所指定的地址单元
递增 递减指令使用时要注意以下事项
1 字节递增
递减指令是无符号循环数
最大值255加1结果为0
即执行加1指令后
数据分别为0→1→2…→254→255→0
最小值0减1结果为255
即执行减1指令后
数据分别为0→255→254…→1→0
2 字递增
递减指令是有符号循环数
+32767加1结果为-32768
-32768减1结果为+32767
3 双字递增
递减指令是有符号循环数
2147483647加1结果为-2147483648
-2147483648减1结果为2147483647
4 递增递减指令的运算结果
影响特殊存储器零标志位SM1.0
溢出标志位SM1.1
负数标志位SM1.2
右图所示梯形图
其中包含递增指令INC
递减指令DEC和传送指令MOV
VW10中写入32767
此时按下I0.2
就执行递增指令
即32 767加1
VW10中的数值就会变为-32 768
VW10中写入-32 768
此时按下I0.3
执行递减指令
即-32 768减1
则VW10中的数值就会变为32 767
最后我们来看一个实例分析
控制要求为
用乘除法指令实现8盏流水灯的移位点亮循环
有一组灯共 8 盏
接于 Q1.0~Q1.7
要求
当I0.2=1时
灯每隔1s正序单个移位点亮
接着
灯每隔1s反序单个移位点亮
并不断循环
我们可以用乘法指令实现正序状态的切换
灯依次向左亮
输出QB0每次向左移动一位
用除法指令实现反序状态的切换
灯依次向右亮
输出QB0每次向右移动一位
程序设计如图所示
共有4段程序
程序段1中
当I0.2=1时
将启动标志M0.0置为1
同时将1送入QW0中
将Q1.0点亮
程序段2中
当I0.3=1时
将启动标志M0.0复位
同时对Q1.0~Q1.7点亮
程序段3
则是用定时器T37和T38
构成正序8s和反序8s的震荡电路
程序段4
用乘法指令MUL-I实现1*2=2
2*2=4
4*2=8
形成正序移位
用除法指令DIV-I实现1*2=2
2*2=4
4*2=8
形成反序移位
这样就可以乘除法指令
实现8盏流水灯的移位点亮循环
今天我们主要学习了四则运算指令
和递增递减指令
大家在后续使用中
要特别注意每种指令的数据类型
数据长度
以及执行结果
对特殊标志位寄存器的影响
本讲到此结束
谢谢大家
期待下次课程再见
-1.1 低压电器简介
--低压电器简介
-1.2 低压开关电器
--低压开关电器
-1.3 主令电器
--主令电器
-1.4 接触器
--接触器
-1.5 熔断器
--熔断器
-1.6 继电器(一)热继电器和速度继电器
-1.7 继电器(二)时间继电器
-小测验
-2.1 三相异步电动机的直接起动控制
-2.2 三相异步电动机点动控制和长动控制
-2.3 三相异步电动机降压起动控制(一)
-2.4 三相异步电动机降压起动控制(二 )
-2.5 三相异步电动机的多点控制和顺序控制
-2.6 三相异步电动机的调速控制
-2.7 三相异步电动机的制动控制(一)
-2.8 三相异步电动机的制动控制(二)
-2.9 三相异步电动机正反转控制(一)
-2.10 三相异步电动机正反转控制(二)
-2.11 电气控制线路的设计方法
-小测验
-3.1 电气控制电路图的绘制(一)
-3.2 电气控制电路图的绘制(二)
-3.3 电气控制电路图的绘制(三)
-3.4 电气控制电路的设计方法 (一)
-3.5 电气控制电路的设计方法 (二)
-小测验
-4.1 认识PLC
--认识PLC
-4.2 PLC组成及工作原理
-4.3 S7-200 SMART PLC硬件介绍(上)
-4.4 S7-200 SMART PLC硬件介绍(下)
-4.5 STEP 7-Micro/WIN SMART编程软件(上)
--STEP 7-MicroWIN SMART编程软件(上)
-4.6 STEP 7-Micro/WIN SMART编程软件(下)
--STEP 7-MicroWIN SMART编程软件(下)
-小测验
-5.1 PLC编程语言与程序结构
-5.2 指令基础
--指令基础
-5.3 位逻辑指令
--位逻辑指令
-5.4 PLC编程规则与技巧
-5.5 定时器指令的工作原理
-5.6 定时器指令应用举例
-5.7 计数器指令的工作原理
-5.8 计数器指令的应用
--计数器指令应用
-小测验
-6.1 功能指令概述
--功能指令概述
-6.2 数据处理指令(一):比较指令与数据传送指令
-6.3 数据处理指令(二):数据转换指令
--数据转换指令
-6.4 数据处理指令(三):表格指令和时钟指令
-6.5 算术运算指令及其应用
-6.6 逻辑运算指令及其应用
-6.7 程序控制指令:跳转指令、循环指令
-6.8 子程序的编写与调用
-6.9 中断程序与中断指令
-6.10 高速计数器指令与高速脉冲输出指令(一)
-6.11 高速计数器指令与高速脉冲输出指令(二)
-小测验(一)
-小测验(二)
-小测验(三)
-7.1 梯形图的经验设计法
-7.2 顺序控制设计法与顺序功能图概述
-7.3 顺序功能图的基本结构和绘制方法
-7.4 使用SCR指令的顺序控制梯形图设计方法
-7.5 使用起保停电路的顺序控制梯形图设计方法
-7.6 使用置位复位指令的顺序控制梯形图设计法
-小测验
-8.1模拟量控制概述
--模拟量控制概述
-8.2模拟量输入输出配置及数值的规范化
-8.3PID控制指令
--PID控制指令
-8.4水箱水位PID控制程序举例
-小测验