3.1 LAD/FBD/STL基本指令
3.1.1 STEP 7位逻辑指令
针对S7-300/400 PLC的开关量控制,需要重点掌握STEP7的位逻辑指令。
STEP 7位逻辑指令可以分为位逻辑运算指令、定时器指令、计数器指令、位测试指令。
1.位逻辑运算指令
位逻辑运算指令是对“0”和“1”的布尔操作数进行扫描,经过相应的位逻辑运算,将逻辑运算结果“0”和“1”送到状态字的RLO位。
图3-1所示为AND与OR的电路图及LAD、STL与FBD的工作原理,与S7-200基本类似。
图3-2所示为XOR的工作原理,当两个信号中仅有一个满足时,输出信号状态才是“1”,其余全部为“0”。
其余置位和复位指令、上升沿与下降沿、取反等与S7-200等小型PLC相同,不再一一列出。
2.定时器指令
定时器可以提供等待时间控制,还可产生一定宽度的脉冲,也可以测量时间。它是一种由位和字组成的复合单元,定时器的触点由位表示,其定时时间值存储在字存储器中。STEP 7定时器可分为5种,见表3-1。
图3-1 AND与0R的工作原理
图3-2 XOR的工作原理
表3-1 S7定时器类型
这5种定时器的工作特点如图3-3所示,其中输入信号为I0.0,定时器触点信号接到输出Q4.0。
定时器字的0~9位包含二进制编码的时间值。此时间值指定多个单位。时间更新可按照由时间基准指定的间隔将时间值递减一个单位。递减会持续进行,直至时间值等于零为止。可以在累加器1的低字中以二进制、十六进制或二进制编码的十进制(BCD)格式装入时间值。
S7定时器可以用以下任一格式预装入时间值:
◆ W#16#wxyz,其中w=时间基准(即时间间隔或分辨率);此处xyz=以二进制编码的十进制格式表示的时间值。
◆ S5T#aH_bM_cS_dMS,其中H=小时,M=分钟,S=秒,MS=毫秒;a、b、c、d由用户定义。如自动选择时间基准,其值舍入为具有该时间基准的下一个较小的数字。
图3-3 定时器的工作特点
S7定时器可以输入的最大时间值是9990s或2H_46M_30S,具体如:
S5TIME#4S=4秒;
s5t#2h_15m=2小时15分钟;
S5T#1H_12M_18S=1小时12分钟18秒。
3.计数器指令
S7计数器用于对RLO正跳沿计数,计数器字中的0~11位包含二进制代码形式的计数值,当设置某个计数器时,计数值移至计数器字,计数值的范围为0~999,如图3-4所示。
图3-4 计数器的组成
可使用三种计数器指令在此范围内改变计数值:S_CUD为双向计数器;S_CD为降值计数器;S_CU为升值计数器。
3.1.2 STEP 7数据指令
对于复杂的开关量控制,尤其是点数多、过程复杂的项目来说,还必须了解STEP 7数据指令。如图3-5所示的万能转换开关,其位置多达12挡,如果纯粹用位来表示就会非常复杂,而采用数据变量就很简单,如MW=0~11就可以表示各挡位置。
STEP 7位数据指令可以分为装载与传送指令、比较指令、算术运算指令、数据逻辑运算指令、移位和循环指令、数据块指令。
1.数据格式
常见的数据包括:
(1)BCD码
单个的十进制数需要用4位二进制数进行编码。之所以需要4位二进制数表示是因为十进制的最大数9需要至少4位二进制数表示(1001)。为了用BCD码表示十进制数的0~9,使用与二进制数的相同表示方法。4位二进制数共有16可能组合,其中6种没有使用。这些组合称作伪4位二进制编码。
(2)整数
数据类型INT是整数(16位)。符号位(第15位)表示所处理的是正数还是负数(“0”=正数,“1”=负数)。整数的表示范围是-32768~+32767。整数占用存储器的一个字。用二进制表示,一个整数的负数用其正数的补码表示。所有的位取反加“1”可以得到正数的补码。
图3-5 万能转换开关
(3)实数
实数(也称浮点数)是用十进制数(例如0.339或-11.32)表示的正数或负数。为了表示10的乘方次数,可以用幂的形式表示实数。例如:1024可以表示为1.024E3。实数占用存储器的两个字,最高位是符号位。其余的位代表指数和尾数。实数的表示范围是:-3.402823×1038~3.402823×1038。
图3-6所示为整数205和实数125.5的数据保存格式。
图3-6 整数与实数的数据保存格式
以16位为例,图3-7所示为PG编程器内的数据下载到PLC内的实际存储情况。
图3-7 PG编程器内的数据下载到PLC后的数据变化
2.数据装载与传送指令
图3-8所示为数据装载与传送指令的三种方式,需要注意的是在字或双字指令中,高位赋值给低字节,而低位赋值给高字节。
图3-8 数据装载与传送指令
3.数据比较指令
图3-9所示为比较指令,用于比较累加器2与累加器1中的数据大小,比较时应确保两个数的类型相同。数据类型可以是整数、实数和长整数等。
4.算术运算指令
图3-10所示为基本数学运算指令,除此之外还可以有高级数学运算指令,如浮点数运算和三角函数计算等。
图3-9 数据比较指令
图3-10 基本数学运算指令
5.数据类型转换指令
由于PLC运算中存在不同的数据类型,现在需要将它们进行类型转换(如图3-11所示)。对于该数据转换任务,可以采取图3-12所示的数据转换,即先将MW12中的整数转换为MD14的双整数(指令为I_DI),然后将MD14转换为实数(指令为DI_R)。
6.数据逻辑运算指令
S7除了位逻辑运算之外,还可以大量地进行字或双字的数据逻辑运算,图3-13所示为典型的字逻辑运算异或WXOR_W、或WOR_W、与WAND_W指令。
数据逻辑运算遵循每一位的位逻辑原理,具体演算过程如图3-14所示。
图3-11 数据转换任务
图3-12 数据转换LAD
图3-13 字逻辑运算LAD指令
图3-14 字逻辑运算演算过程
7.移位和循环移位指令
移位指令将累加器1低字中或这个累加器1中的内容左移或右移,移动的次数在累加器2中或直接在指令中以常数给出。如图3-15所示是将MW4进行左移2位,其演算过程如图3-16所示。
图3-15 左移
图3-16 演算过程