4 S7-200的指令系统

Download Report

Transcript 4 S7-200的指令系统

第四章
S7-200PLC基本指令
本章学习目的





位操作类指令,主要是位操作及运算指令,
与时也包含与位操作密切相关的定时器和计
数器指令等。
运算指令,包括常用的算术运算和逻辑运算
指令。
其他数据处理类,包括数据的传送、移位、
填充和交换等指令。
表功能指令,包括对表的存取和查找指令。
转换指令,包括数据类型转换、码转换和字
符转换指令。
返回本章首页
4.1 概述
4.1.1数据类型


(1)数据类型及范围
SIMATIC S7-200系列PLC数据类型可以是
布尔型、整型和实型(浮点数)。实数采
用32位单精度数来表示,其数值有较大
的 表 示 范 围 : 正 数 为 +1.175495E-38 ~
+3.402823E+38 ; 负 数 为 1.175495E~38~-3.402823E+38。

不同长度的整数所表示的数值范如
表3.8所示。


(2)常数
在编程中经常会使用常数。常数数据长度可为
字节、字和双字,在机器内部的数据都以二进
制存储,但常数的书写可以用二进制、十进制、
十六进制、ASCII码或浮点数(实数)等多种
形式。几种常数形式分别如表3.9所示。
4.1.2 S7-200数据区


数据区是PLC中存储器存放工作数据的区域。
存储器按功能分区,可分为:








数字量输入和输出映像区I/Q
模拟量输入和输出映像区AI/AQ
变量存储器区V—存储变量或中间结果。可位、字节、字
双字
顺序控制继电器区S—为顺序控制开辟的存储区
位存储器区M—存储标志,相当于中间继电器
特殊存储器区SM--存系统状态和有关控制信息
定时器T、计数器存储器区C
每个存储单元编排了地址,称为软元件。
编程元件
输入继电器(I)
CPU226为例
I0.0~I15.7
Q0.0~Q15.7

输出继电器(Q)

通用辅助继电器(M) M0.0~M31.7

特殊标志继电器(SM) SM0.0~SM299.7

变量存储器(V)


256点
VB0~VB5119
局部变量存储器(L) LB0~LB63(后4个不
可用)
顺序控制继电器(S) S0.0~S31.7






定时器(T)
T0~T255
计数器(C)
C0~C255
模拟量输入映像寄存器(AI)
AIW0~AIW62
模拟量输出映像寄存器(AQ)
AQW0~AQW62
高速计数器(HSC) HSC0~5
累加器(AC)
AC0~AC3

S7-200将编程元件统一归为存储器单元,存储单元按
字节进行编址,无论所寻址的是何种数据类型,通常
应指出它在所在存储区域和在区域内的字节地址。每
个单元都有惟一的地址,地址用名称和编号两部分组
成,元件名称(区域地址符号)如表3.10所示。
按位寻址的格式为:Ax.y


必须指定元件名称、字节地址和位号,如图
3.8 所示。图3.8中MSB表示最高位,LSB表示
最低位。
MSB
LSB
7 6 5 4 3 2 1 0
I 4 .5
I0
I1
I2
I3
I4
字节的位,即位号
位地址与字节地址之间的间隔
×Ö½ÚµØÖ·
元件名称(区域标志)
I 14 .2
I15
图3.8
位寻址格式
4.1.3 S7-200寻址方式



立即寻址
直接寻址
间接寻址
1立即寻址
指令中操作数就是操作码所需要的具体的数
据。立即数可以是字节、字、双字 。
例:MOVB 200 ,VB100
源操作数 目标操作数
例:MOVB 16#2A ,VB100

2. 直接寻址方式
操作码后面的操作数以地址形式给出
(1)编址形式
按位寻址的格式为:Ax.y
存储区内另有一些元件是具有一定功能
的硬件,由于元件数量很少,所以不用
指出元件所在存储区域的字节,而是直
接指出它的编号。其寻址格式为:Ay
数据寻址格式为:ATx
例: MOVB VB0 , VB100
3.间接寻址方式




间接寻址方式是,数据存放在存储器或寄存器中,
在指令中只出现所需数据所在单元的内存地址的地
址。存储单元地址的地址又称为地址指针。这种间
接寻址方式与计算机的间接寻址方式相同。
例: MOVB *VD0 VB100
(VD0的内容
VB10,即VB10的内容送VB100,*表示地址)
间接寻址在处理内存连续地址中的数据时非常方便,
而且可以缩短程序所生成的代码的长度,使编程更
加灵活。
用间接寻址方式存取数据需要作的工作有3步:建
立指针、间接存取和修改指针。
(1)建立指针





建立指针必须用双字传送指令(MOVD),将存储
器所要访问的单元的地址装入用来作为指针的存储
器单元或寄存器,装入的是地址而不是数据本身,
格式如下:
例:
MOVD &VB10,VD0
MOVD
&MB10,AC2
MOVD
&C2,LD14
注意:建立指针用MOVD指令。
(2)间接存取






指令中在操作数的前面加“*”表示该操作数为一
个指针。
下面两条指令是建立指针和间接存取的应用方法:
MOVD
&VB2,AC0
MOVW
*AC0,AC1
若存储区的地址及单元中所存的数据如下所示
执行过程如下:
(3)修改指针




下面的两条指令可以修改指针的用法:
INCD
AC0
INCD
AC0
MOVW
*AC0,AC1
返回本节
4.1.4 S7-200的程序结构

程序组成:







主程序
子程序1
…
子程序N
中断程序1
…
中断程序N
OB1 一个
SBR0
SBR63
INT0
INT127
4.1.5 梯形图的基本画法




编制PLC程序前的准备:
1、设计PLC控制系统的结构、配置;确定
I/O位置
2、根据I/O位置确定信号的I/O地址(端
口表)
3、设计、整理输入/输出信号间的逻辑关
系
梯形图的基本画法
1、在左右两条逻辑电源线之间,按系统逻辑要求从
左到右排列接点和线圈;计算机编程可只画左边
2、逻辑可以是一个或多个接点的串并联,然后接到
输出线圈(或指令盒--定时器、锁存器、移位寄存器等)
3、所有接点必须在输出线圈左边
4、输出线圈不能不经过任何接点直接接在两个逻辑
电源线之间。


SM0.0为常ON继电器
上电后指令一直执行
如何解决:上电后指
令一直执行?
上电后指令只执行一
次?
SM0.1为第一周期ON继电器
上电后指令只执行一次

5、触点不要画在垂线上应画在水平线上
()
()

6、不含触点的分支不要放在水平方向
()

()
7、应尽量把串联多的电路放在最上边;把并联多
的电路放在最左边(节省指令、美观)
8尽量避免出现双线圈输出
同一个程序中,同一元件的线圈使用
了两次或多次,称为双线圈输出。
双线圈引起逻辑关系混乱
PLC梯形图语言的编程原则
1、 梯形图由多个梯级(网络NETWORK)组成,每个线圈
可构成一个梯级,每个梯级有多条支路,每个梯
级代表一个逻辑方程;
2、 梯形图中的继电器、继电器接点、线圈不是物理
的,是PLC存 储器中的位(1=ON;0=OFF);故编程
时常开/常闭接点可无限次引用,线圈输出只能是
一次;
3、 梯形图中流过的不是物理电流而是“概念电流”
成为“能流”,只能从左向右流;
PLC梯形图语言的编程原则
4、用户程序的运算是根据PLC的输入/输出映象寄存
器中的内容,逻辑运算结果可以立即被后面的程序使
用;
5、PLC的内部继电器不能做控制用,只能存放逻辑控
制的中间状态;
6、输出线圈不能直接驱动现场的执行元件,通过I/O
模块上的功率器件来驱动。
7、若梯形图中串联或并联的指令数超过网络规定的
数值时(32个),必须使用内部继电器经分段组合来完
成。
4. 工作方式


(1)STOP方式
(2)RUN方式
5. 改变CPU工作方式的方法



1)用PLC上的方式开关来手动切换,方式开
关有3个挡位 。
2)用STEP 7-Micro/Win32编程软件,应
首先把主机的方式开关置于TERM或RUN位
置,然后在此软件平台用鼠标单击STOP和
RUN方式按钮即可。
3)在用户程序中用指令由RUN方式转换到
STOP方式,前提是程序逻辑允许中断程序
的执行。
4.2 指令系统



S7-200指令系统中可分:
基本指令----取代继电器控制系统的指令
应用指令----程序控制类指令、特殊功能指
令
指令分类——按形式分
1.继电器 常开触点
动合
常闭触点
动开
LD I0.0
线圈
——( )
LDN I0.0
2.功能块
=Q0.0
地址
功能数据类型
条件
Enable
输入参数
EN
IN1
IN2
N 长度
OUT
输出参数
指令分类——按功能分
1。位操作功能
2。定时器/计数器
3。算术运算功能
4。关系运算功能
5。数据传送功能
6。转换功能
7。控制功能
4.2.1基本逻辑指令
I0.0
I0.1
逻辑关系
Q0.0
*
梯形图
助记符
当 I0.0与 I0.1 都 “ON” 时, I0.0 I0.1 Q0.0
与
AND
或
*
则输出 Q0.0 “ON”(1)。
当 I0.0 或 I0.1 “ON”
I0.0
时,则输出 Q0 “ON”(1)
I0.1
当 I0.1 “OFF” 时
I0.1
LD
A
=
I0.0
I0.1
Q0.0
LD
O
=
I0.0
I0.1
Q0.0
LDN
=
I0.1
Q0.0
Q0.0
OR
非
LD 装载
则输出 Q0.0 “ON”(1)
=线圈输出
Q0.0
注意:与、或、非运算均是对从该指令前面的
ST
指令到该指令的前一个指令处的结果进行
运算。
例:
A
I0.0 I0.1
I0.2
Q0.0
LD
A
O
=
I0.0
I0.1
I0.2
Q0.0
I0.2是与图中A点处的结果(即I0.0与I0.1的结
果)相或,而不是与I0.1相或。
逻辑关系
区块与
梯形图
助记符
ALD(And Stack)
M0.0
M0.2
当 “M0.0 或 M0.1”与
“M0.2 或M0.3” 都 “ON”
Q0.0
M0.1
M0.3
时,
LD
O
LD
O
ALD
=
M0.0
M0.1
M0.2
M0.3
Q0.0
则输出 Q0.0 “ON”。
区块或
OLD(Or Stack)
I0.0
M0.1
当 “I0.0 与 M0.1”或“I0.2
与
M0.3非” “ON” 时,则输
出 Q0.0 “ON”。
Q0.0
I0.2
M0.3
LD
A
LD
AN
OLD
=
I0.0
M0.1
I0.2
M0.3
Q0.0
例1:电动机直接启动停车控制
I0.1
I0.0
Q0.0
Q0.0
梯形图:
I0.1
Q0.0
L1
L2
启动优先
L3
QS
FU2
FU1
FR
KM
FR
SB1
3
SB2
PE
M
3~
继电器控制电路图
KM
KM
I/O分配:
I0.0:停车
I0.1:启动
Q0.0:KM
语句表
I0.0
Q0.0
LD
I0.1
O
Q0.0
A
I0.0
=
Q0.0
停止优先
I/O分配决定PLC的端子接线图
FR
KM
I/O分配:
I0.0:停车
I0.1:启动
Q0.1:KM
1L
1M
PLC的端子接线方式又决定编
程语言
I0.1
Q0.1
I0.0
Q0.1
Q0.0 Q0.1 Q0.2 Q0.3
I0.0
I0.1
SB1
SB2
I0.2
I0.3
2.双向控制电路
--电机的正反转控制
互锁
输入:正SB1、反转SB2
按钮,停止SB3按钮
输出:正、反转接触器
互锁
启、保、停
说明:双向控制电路要求2个接触器KM1、KM2不
能同时得电,否则会造成电机电源的短路。
置位、复位指令
Q0.1
S
1
I0.0
I0.1
Q0.1
R
1
I0.0
I0.1
Q0.1
与下面指令区别
I0.0
Q0.1
I0.0
Q0.1
立即I/O指令—立即输入
I2.1
Q1.1
I
一个扫描周期
执行指令
I2.3
Q1.2
I
I
输入端
子I2.1
输入映象寄
存器I2.1
执行立即输入指令
时,只是立即读取
物理输入点的值,
而不改变输入映像
寄存器的值。
输出映象寄
存器Q1.1
输出端子
Q1.1
输入端
子I2.3
输出映象
存器Q1.2
输出端子
Q1.2
一个扫描周期
执行指令
立即I/O指令—立即输出
I2.1
Q1.1
I
一个扫描周期
执行指令
I2.3
Q1.2
I
I
输入端
子I2.1
输入映象寄
存器I2.1
执行立即输出指令
时,则将结果同时
立即复制到物理输
出点和相应的输出
映象寄存器
输出映象寄
存器Q1.1
输出端子
Q1.1
输入端
子I2.3
输出映象
存器Q1.2
输出端子
Q1.2
一个扫描周期
执行指令
立即I/O指令—立即置位和复位指
令
I0.1
I0.2
LD
SI
LD
RI
Q2.0
SI
2
Q2.0
RI
2
I0.1
Q2.0,2
I0.2
Q2.0,2
须指出:立即I/O指令
是直接访问物理输入输出
点的,比一般指令访问输
入输出映象寄存器占用
CPU时间要长,因而不能
盲目地使用立即指令,否
则,会加长扫描周期时间
,反而对系统造成不利影
响。
空操作
空操作指令(NOP N)不影
响程序的执行。
操作数N是常数 0~255
取非
NOT
N
NOP
(
I0.0
点时,能流就通过。
I0.1
NOT
能流到达取非触点时,能流
就停止;能流未到达取非触
)
Q0.0
(
)
Q0.1
I0.0
N
(
)
Q0.2
I0.0
P
(
)
检测到每一次正跳变(信
正跳变
P
负跳变
N
号后,让能流通过一个扫
描周期的时间
检测到每一次负跳变信
号后,让能流通过一个
扫描周期的时间
输入映象寄
存器I0.0
输出映象寄
存器Q0.0
输出映象寄
存器Q0.2
输出映象寄
存器Q0.1
一个周期
一个周期
小结
1. 标准触点指令
(1)LD:装入常开触点(LoaD)
 (2)LDN:装入常闭触点(LoaD Not)
 (3)A:与常开触点(And)
 (4)AN:与常闭触点(And Not)。
 (5)O:或常闭触点(Or)
 (6)ON:或常闭触点(Or Not)
 (7)NOT:触点取非(输出反相)
 (8)= :输出指令

2. 区块与或
(1)ALD:区块与
(2)OLD:区块或


3. 正负跳变指令


(1)EU:上微分(正跳变)
(2)ED:下微分(负跳变)
4. 置位和复位指令


(1)S,置位指令
(2)R,复位指令
5. 立即指令




(1)立即输入触点指令 LDI、LDNI、AI、
ANI、OI和ONI。
(2)=I,立即输出指令
(3)SI,立即置位指令
(4)RI,立即复位指令
4.2.2. 定时器及定时器指令
具有计时功能的软继电器
定时器号码
(0~255)
T37
TON
IN
输入接点
设定值:
1~32767
有16位的计数器,每
过一个时基时间,当
前值SV加一
PT
类型
TON:接通延时定时器
TOF:断开延时定时器
TONR:有记忆接通延时定时器
定时器分辨率(时基)有三种:1ms、
10ms、100ms。定时器的分辨率由定时
器号决定
定时器的实际设定时间T=设定值PT×分辨率
延时接通定时器 TON
T38
I0.1
IN
定时器组成:
1)有一16位的计数器sv,用以计时
2)有一位存储器,反映定时器状态,
计时时间到为“1”,反之为“0”
1200
T38
TON
PT
Q0.1
(
)
其工作波形图如下:
I0.1
TS=1200*0.1=120S
TS
Q0.1
计时值复位
设定值PT
计时值SV
IN=1,开始计时
IN=0,复位
SV<PT, T38=0
SV>=PT, T38=1
延时断开定时器 TOF
使能输入
设定值
I0.1
T38
TOF
IN
T38
TOF
IN
1200 PT
T38
PT
Q0.1
( )
其工作波形图如下:
TS
TS=1200*0.1=120S
I0.1
IN=1,SV=0,T38=1
IN=0,开始计时,当
计时时间到,SV=PT
时,T38=0
Q0.1
设定值
计时值
计时值复位
保持型定时器 TONR
输入端
TONR
IN T4
设定值
PT
I0.1
T4
IN TONR
PT
120
M0.1
T4
(R )
T4
1
Q0.1
(
IN=1,开始计时,
SV<PT,T=0
当SV=>PT,T=1,;
)
其工作波形图如下:
TS= 120*10ms
输入端
TS
Q0.1
计时值不复位
M0.1
当IN=0,不复位
最大值32767
设定值 120
当前值
定时器的刷新方式
① 1ms分辩率定时器
中断刷新方式,每隔1ms刷新一次,刷新定时器位和定时
器当前值,在一个扫描周期中要刷新多次,当前值在一个扫
描周期内可能不一致。
② 10ms分辩率定时器
10ms分辩率定时器启动后,定时器对10ms时间间隔进行
计时。程序执行时,在每次扫描周期的开始对10ms定时器
刷新,在一个扫描周期内定时器位和定时器当前值保持不
变。
③ 100ms分辨率定时器
100ms定时器启动后,定时器对100ms时间间隔进行
计时。只有在定时器指令执行时,100ms定时器的当前
值才被刷新。如果定时器线圈被激励后,不能保证在每
个扫描周期都执行一次定时器指令,不能及时刷新,会
丢失时基脉冲,造成计时不准。
正确使用定时器
T33
T33
T32
/
A
T33
自复位式的定时器
+100
T32
IN
PT
TON
IN
+100
T32
Q0.0
(a)
T32
Q0.0
/
T32
TON
PT
Q0.0
(b) 正确
错误
T37
Q0.0
/
IN
+100
T37
PT
Q0.0
TON



例:用TON构造各种类型的时间继电器触点。
有的厂商的PLC只有TON定时器,因此,在这种
情况下可以利用TON来构造断电延时型的各种触
点。
图4.14是用TON构造TOF作用的触点。其时序图
与TOF的时序完全相同。
瞬时闭合,延时断开继电器
LD
I0.0
//启动 M0.0
O
M0.0
//自保
AN
T33
//断开 M0.0
=
M0.0
//瞬时闭合
//延时 50ms 断开
AN
I0.0
TON T33, +5
图4.14
定时器应用
//连续输出
//
图4.15用通电延时定时器与输出继电器组成带瞬动
触点的定时器。
LD
I0.0
//
=
Q0.0
//定时器的瞬动触点
TON T33, +50
//通电延时定时器
//时间为 500ms
图4.15
LD
T33
//
=
Q0.1
//延时动作触点
定时器应用
图4.16是利用常开触点实现通电和断电都延时
的触点作用。
本程序实现的
功能是:用输
入端I0.0控制
输出端Q0.0,
当I0.0接通后,
过3个时间单
位Q0.0端输
出接通,当
I0.0断开后,
过6个时间单
位Q0.0断开。
LD
图4.16
I0.0
//
TON T33, +3
//常开通电延时
//用作通电延时定时
LD
Q0.0
//断电延时的基础
AN
TON
I0.0
//断电延时开始
T34, +6 //通电延时定时器
//用作断电延时计时
LD
T33
//
O
Q0.0
//
T34
//
定时器应用 AN
=
Q0.0
//用作通、断电延时
返回本节
练习:

锅炉鼓风机和引风机的控制,要求:鼓风机
比引风机晚10s启动,引风机比鼓风机晚18 s
停机,请设计梯形图控制程序。
启动
停止
引风机
鼓风机
10s
18s
作业:声光报警程序
防盗报警:
 有位置开关接I0.0,声音解除按钮接I0.1
 试验按钮接I0.2(检查灯、蜂鸣器是否完好)
 报警灯接Q0.0,报警的蜂鸣器接Q0.1
 要求:位置开关断开报警灯
闪烁(周期1S),蜂鸣器响,按解除
按钮,蜂鸣器停,按试验按钮灯
1L Q0.0 Q0.1 Q0.2
亮蜂鸣器响。
 分析:闪烁用两个定时器构成
1M I0.0 I0.1 I0.2
振荡器

SB1 SB2
Q0.3
I0.3
4.2.3 计数器指令
定时器是对PLC内部的时钟脉冲进行计数,而计
数器是对外部的或由程序产生的计数脉冲进行计
数。
当前值:计数器累计计数的当前值(16位有符号整数),
它存放在计数器的16位(bit)当前值寄存器中。
每个计数器只有一个16位的当前值寄存器地址。在一个程
序中,同一计数器号不要重复使用,更不可分配给几个不
同类型的计数器。
增计数器
计脉冲数
I0.3
C20
CU
R
复位
C20
CU CTU
I0.2
PV
设定值:
-32768~32767
计数器SV<PV,C=0;
SV>=PV时,计数器位被置
位“1”,并继续计数,
R=1时,SV=0,C=0
CTU
3
LD I0.2
LD I0.3
CTU C20,3
I0.2
I0.3
C20当 当 当
C20当 当 当 当
R
PV
减计数器
C40
I1.3
CD CTD
计脉冲数
CD
LD I1.4
I1.4
C(0~255)
LD
3
CTD
LD I1.3
CTD C40,3
PV
LD
复位,装设定值
PV
设定值
I1.3
I1.4
2
1
计数器SV=PV,C=0;
SV=0时,停止计数,同时
计数器位被置位“1”
LD=1时,SV=PV
当前值
输出
增/减计数器
C(0~255)
增计数
I1.0
C30
I1.1
CU CTUD
复位
I1.2
CD
4
R
PV
减计数
当前值
CU有脉冲,SV=SV+1;
CD有脉冲,SV=SV-1;
SV<PV,C=0,SV>=PV, C=1;
R=1时,SV=0,C=0
I1.0
I1.1
I1.2
当前值
输出端
C30
CU CTUD
LD
I1.0
CD
LD
LD
I1.1
I1.2
R
PV
CTUD C30,4
例5. 计数器应用举例:
 机械手动作后,
延时2秒,将机械手
产品数量检测
电磁铁切断,同时将
C10复位。C10复位
后,T37也复位
产品通过检测器
PH
(每24个产品
机械手动作1次)
传送带电机 KM1
机械手 KM2
PLC的I/O分配:
Q0.0—传送带电机KM1
I0.0— 传送带停机按钮
Q0.1—机械手KM2
I0.1—传送带起动按钮
T37—定时器,定时2秒
I0.2— 产品通过检测器PH
C10—计数器,初始值24
计数器应用举例:产品数量检测
I0.0
Q0.0
I0.1
(
)
 起、停传送带电机
Q0.0
 电机起动后,R1产生宽度为一个扫描
C20
I0.2
CU CTU
Q0.0
24
T37
每检测到一个产品,I0.2产生一个正脉冲,
R
P
PV
T37
TON
C20
周期的正脉冲,使C20和T37复位
使C20计一个数
IN
20
C20
T37
PT
 C20每计24个数,机械手动作一次
(
Q0.1
)
 机械手动作后,延时2秒,将机械手
电磁铁切断,同时将C20复位。C20
复位后,Q0.1和T37也复位
应用举例


1)循环计数。
以上三种类型的计数器如果在使用时,将计
数器位的常开触点作为复位输入信号,则可
I0.0
以实现循环计数。
CTU
C20
CU
R
C20

24
PV
2)用计数器和定时器配合增加延时时间,
如图4.22所示。试分析以下程序中实际延时
为多长时间。
长延时程序
LD
I0.0
//启动通电延时
AN
M0.0
//重新启动延时
TON T50, +30000
//通电延时定时器
//时间设定为 3000s
LD
T50
//延时时间到
=
M0.0
//关定时器,产生一个
//脉冲。
LD
M0.0
//每隔 3000s 输入一个
//脉冲
LDN I0.0
//复位输入
CTU C20, +10
//增计数器,累计脉冲
//的总数 30000S=8.3 小时。
I 0.0
1
2
3
4
5
10
11
T50位
C20位
图4.22
计数器应用例
返回本节






分析:
1.运料小车右行Q0.1:
车在1,2,3位,4要料;1,2位,3要料;1位,2要料
2.运料小车左行:
车在2,3,4位,1要料;3,4位,2要料;4位,3要料
3.运料小车停止:要料号与位号相同
例:
//响应优先级顺序(要料时刻相同时,料仓号小
者优先)
//停车(要料号与位号相同)
//右行(车在1,2,3位,4要料;1,2位,3要料;1,
2要 料)
//左行(车在2,3,4位,1要料;3,4位,2要料;4,
3要料)
分析:由I0.0或I0.1启
动时序控制,因此,用
定时器来实现。
用T101、T102、
T103、T104组成30s、
40s、45s、55s的延
时, T105延时5s
闪烁:用PLC内部的秒
时钟脉冲配计数器实现。
SM0.5---周期1s,占
空比0.5的脉冲(P58
SM功能)
4.2.4 比较指令
字节比较
整数比较
双字整数比较
实数比较
比较关系符有:
等于=,大于>,小于<,不等<>,大于等
于>=,小于等于<=。
5. 应用举例




控制要求:
一自动仓库存放某种货物,最多6000箱,需
对所存的货物进出计数。货物多于1000箱,
灯L1亮;货物多于5000箱,灯L2亮。
其中,进货信号I0.0,出货信号I0.1;L1和
L2分别受Q0.0和Q0.1控制,数值1000和5000
分别存储在VW20和VW30字存储单元中。
本控制系统的程序如图4.23所示。程序执行
时序如图4.24所示。
LD
I0.0
//增计数输入端
LD
I0.1
//减计数输入端
LD
I0.2
//复位输入端
CTUD
C30, +10000
//增减计数,
//设定脉冲数
//为 10000。
LDW>=
C30, VW20
//比较计数器
//当前值是否大于
//VW20 中的值
=
Q0.0
//输出触点
LDW>=
C30, VW30 //比较计数器
//当前值是否大于
//VW30 中的值
=
Q0.1
图4.23 程序举例
//输出触点
5000 5000
C30 当前值
1000
1000
Q 0.0
Q 0.1
图4.24
时序图
返回本节
4.2.5传送指令—数据传送指令
MOV-B
EN ENO
IN
MOVB
MOV-W
EN ENO
OUT
IN,OUT
IN
MOVW
OUT
IN,OUT
IN
IN
OUT
MOVDW IN,OUT
例:
MOVR
MSB
VW100
I0.1
MOV-R
EN ENO
MOV-DW
EN ENO
MOV-W
EN ENO
VW100
VD10IN
MOVW VW100,AC0
OUT AC0
10
OUT
IN,OUT
LSB
46
MSB
AC0
LSB
10
46
若I0.1=1,则将VW100的数据传送到AC0
数据块传送指令
BLKMOV-B
EN
IN
N
MOVB
ENO
OUT
IN,OUT
BLKMOV-W
BLKMOV-DW
EN
IN
N
EN
IN
N
MOVW
ENO
OUT
IN,OUT
ENO
OUT
MOVDW IN,OUT
数据块传送指令把
从输入(IN)指定
地址的N个连续字
节、字、双字的内
容传送到从输出(
OUT)指定地址开
始的N个连续字节
、字、双字的存储
单元中去。
传送字节立即读、写指令
传送字节立即读(BIR)指令,读取输入端(IN)指定字节地址的物理输入
点(IB)的值,并写入输出端(OUT)指定字节地址的存储单元中。
MOV-BIR
EN ENO
IN
BIR
OUT
传送字节立即写(BIW)指令,
MOV-BIW
EN ENO
将从输入端(IN)指定字节地址的
OUT
内容写入输出端(OUT)指定字节
IN
地址的物理输出点(QB)。
IN,OUT
传送字节立即读
传送字节立即写
BIW
IN,OUT
不受扫描周期影响
4.2.6移位寄存器指令
SHR_B---右移指令
EN
VB20
SHL_B---左移指令
SHR_W
SHL_W
SHR_DW
SHL_DW
5
SHR_B
IN
VB0
N
左右被移走的位填0
ROR_B---循环右移指令
ROL_B---循环左移指令
ROR_W
ROL_W
ROR_DW
ROL_DW
右移N位,移出的位送最左边
OUT
左移N位,移出的位送最右边


自定义移位指令
N>0由低向高位移,反之向低移
I0.1
I0.1
SH RB
P
EN
I0.2
V10.0
4
DATA
EENNOO
正跳变
I0.2
S_BIT
S_BIT
N
移位前
7
0
1 0 0 1
7
0
0 0 1 1
VB10.0
LD
EU
SHRB
I0.1
移位一次后
VB10.0
I0.2,V10.0,4
SM1.1 溢出位 1
I0.2
在自动生产线上的应用
说明:生产线有5个工位,
0号工位是检查站,I0.0
4号工位是剔除站。Q0.0
产品经过检查站检查是否合格。
当不合格产品移到4号工位时,剔
除不合格产品 。
传送带启动I0.1
PLC如何编程?
SHRB指令的功能示意图
5
4.2.7 数学运算指令—1.加法指令
ADD-I
EN ENO
IN1
IN2 OUT
+I
IN1,OUT
ADD-R
ADD-DI
EN ENO
IN1
IN2 OUT
+D
IN1,OUT
EN ENO
IN1
IN2 OUT
+R
IN1,OUT
2.减法指令
SUB-I
EN ENO
IN1
IN2 OUT
-I
IN2,OUT
SUB-R
SUB-DI
EN ENO
IN1
IN2 OUT
-D
IN2,OUT
EN ENO
IN1
IN2 OUT
-R
IN2,OUT
整数完
全乘法
3.乘法指令
整数
乘法
MUL-I
EN ENO
IN1
IN2 OUT
*I
IN1,OUT
EN ENO
IN1
IN2 OUT
*D
IN1,OUT
MUL
MUL-R
MUL-DI
EN ENO
IN1
IN2 OUT
*R
IN1,OUT
EN ENO
IN1
IN2 OUT
MUL
IN1,OUT
4.除法指令
整数
除法
整数完
全除法
DIV-I
16位整
数商
EN ENO
IN1
IN2 OUT
/I
IN2,OUT
EN ENO
IN1
IN2 OUT
/D
IN2,OUT
DIV
DIV-R
DIV-DI
EN ENO
IN1
IN2 OUT
/R
IN2,OUT
EN ENO
IN1
IN2 OUT
DIV
IN2,OUT
整数完全除法指令,把输入端(IN)指定的两个16位整数相除,产生一个32位
结果,并送到输出端(OUT)指定的存储单元中去。其中高16位是余数,低16
位是商。
整数加法、减法、乘法、除法------字
双整数加法、减法、乘法、除法-----------双字
整数完全乘法、除法----------输入位字,输出为双字
实数加法、减法、乘法、除法--------双字



例:
DIV VW10, VD100
/I
VW20, VW200
两条指令的编程及执行情况比较如图4.26所示。
LD
I0.0
//使能输入端
DIV
VW10, VD100 //完全除法
//
VW102/VW10=VD100
LD
I0.1
//使能输入端
/I
VW20, VW200 //整数除法
//VW200/VW20=VW200
图4.26
除法指令应用
对于完全除法指令:
2003
对于除法指令:
2003
返回本节
例

5.加一指令
I0.4
INC_B
EN ENO
VB0
IN
OUT VB10
INC_B
EN ENO
IN
OUT
INCB OUT

INC_W
EN ENO
IN
OUT
INCW OUT
INC_D
EN ENO
IN
OUT
INCD OUT
6.减一指令
DEC_B
EN ENO
IN
OUT
INCB OUT
DEC_W
EN ENO
IN
OUT
INCW OUT
DEC_D
EN ENO
IN
OUT
INCD OUT
应用实例




控制要求:
食品加工厂对
饮料生产线上
的盒装饮料进
行 计 数 , 每 24
盒为一箱,要
求能记录生产
的箱数。
程序及说明:
程序如图4.29所
示。
LD
I0.0
//增脉冲输入端
LD
C30
//复位输入端
//循环计数
CTU C30, +24
//增计数指令
//设定脉冲数为 24
LD
C30
//装入计数器触点
//作为双字增的
//脉冲输入
INCD
VD100
//双字增指令
//
图4.29
增减指令的应用
返回本节
均为32位双字,如:VD*,AC0~4

7.开平方指令
9.指数函数指令
SQRT
EN ENO
OUT
IN
SQRT

EXP
EN ENO
IN
IN,OUT
EXP
OUT
IN,OUT
8.自然对数指令 10.三角函数指令(弧度)
LN
EN ENO
IN
OUT
LN
IN,OUT
SIN
EN ENO
IN
SIN
OUT
IN,OUT
COS
EN ENO
IN
COS
OUT
IN,OUT
TAN
EN ENO
IN
TAN
OUT
IN,OUT
例:求常用对数(变量在VD0)
例:求150度的正弦
4.2.8表功能指令



1 表存数指令
2 表取数指令
3 表查找指令
表只对字型数据存储,表
的格式例如表4.21所示。
AD_T_TBL
1、表存数指令



EN
ENO
DATA
TBL
ATT DATA,TBL
ATT,表存数指令。
该指令在梯形图中有2个数据输入端:DATA
为数值输入,指出将被存储的字型数据或其
地址;TBL表格的首地址,用以指明被访问
的表格。当使能输入有效时,将输入字型数
据添加到指定的表格中。
表存数特点:
表存数时,新存的数据添加在表中最后一
个数据的后面。每向表中存一个数据,实际
填表数EC会自动加1。
AD_T_TBL

执行后表
VW0
VW0
VW100
1234
EN
ENO
DATA
TBL
ATT DATA,TBL
0005
1234
数据4,EC=5
2表取数指令


1.)FIFO,先进先出指令
2.)LIFO,后进先出指令
1) FIFO先进先出指令






当使能输入有效时,从TBL指明的表中移出第一
个字型数据并将其输出到DATA所指定的字单元。
FIFO表取数特点:
取数时,移出的数据总是最先进入表中的数据。
每次从表中移出一个数据,剩余数据依次上移一
个字单元位置,同时实际填表数EC会自动减1。
指令格式:
FIFO TBL, DATA
例:
FIFO VW100, AC0
如果仍是对表4.21存取,则指令执行情况如表
4.23所示。
表4.23
指令FIFO执行结果
2)LIFO后进先出指令






当使能输入有效时,从TBL指明的表中移出最后
一个字型数据并将其输出到DATA所指定的字单
元。
LIFO表取数特点:
取数时,移出的数据是最后进入表中的数据。每
次从表中取出一个数据,剩余数据位置保持不变,
实际填表数EC会自动减1。
指令格式:
LIFO TBL, DATA
例:
LIFO VW100, AC0
如 果 仍 是 对 表 4.21 存 取, 则 指 令 执 行 情 况 如 表
4.24所示。
表4.24
指令LIFO执行结果
4.4.3 表查找指令




FND?,表查找指令。通过表查找指令可以从字
型数表中找出符合条件的数据所在的表中数据
编号,编号范围为0~99。
在梯形图中有4个数据输入端:
TBL表格的首地址,用以指明被访问的表格;
PTN是用来描述查表条件时进行比较的数据;
CMD是比较运算符“?”的编码,它是一个
1~4的数值,分别代表=、<>、<和>运算符;
INDX用来指定表中符合查找条件的数据的地址。
注意:执行查表指令前应对
INDX的内容清零
表4.25
表查找指令执行结果
5000
例题
电梯停层信号的获取可通过查表指令来确定
以6层电梯控制为例:

在存储单元中设置内呼信号表、外上呼信号表和外下呼信号
表----呼梯信号与楼层相同----停车,有呼梯信号时,
轿厢内停车命令
外上呼层
外下呼 层
VW100 0010
VW102 007
TL
VW120 0010
有某层呼梯信号时,将相
TL
EC
VW122 006
EC
应楼层数存入相应单元
VW104 0
d0
VW106 停1层
d1
2
d2
VW108 2
VW110 3
d3
VW112 4
d4
VW114 5
d5
VW116 6
d6
VW124 0
d0
VW140 0010
VW142 007
TL
VW144 0
d0
EC
d1
VW146 1
d1
VW126 1层上呼
没有呼梯信号的楼层表内填0
d2
VW148 2
d2
VW128 2
d3
VW150 3
d3
VW130 3
d4
VW152 4
d4
VW132 4
d5
VW154 5
d5
0
VW134 5
d6
VW156 6
d6
VW136 0
确定前方停层站原则



停层判断在每次电动机启动后进行,每次只
查询本方向前一站是否停层。
电动机上行启动后楼层数加1,反之减1,然
后在三个表中查询有相同层号否,若有停车,
若无前方站不停,继续前行,楼层数加1开
始下一轮查询。
查表顺序:

先查内停层,再查同向的外呼表








其中VB5存放轿厢当前位置---当前层数
M30.0停层信号
M31.0启动信号
M12.1上行指示
M12.2下行指示
M15.1查询内呼表
M15.2查询外上呼表
M15.3查询外下呼表
•//轿厢当前层数送VB31
•层数加 1
•//查内呼表----等于前方层数
•//判断是否有内呼信号
•//查外上呼表----等于前方层数
•//判断是否有外上呼信号
•//查外下呼表----等于前方层数
无符号操作
4.2.9转换指令
1.BCD码与整数的转换
I-BCD
BCD-I
EN
ENO
EN
ENO
IN
OUT
IN
OUT
IBCD
OUT
BCDI
OUT
BCD码转为整数(BCDI)指令,将输入端(IN)
指定的BCD码转换成整数,并将结果存放到输出端(
OUT)指定的存储单元中去。输入数据的范围是0到
9999(BCD码)。
整数转为BCD码(IBCD)指令,将输入端
(IN)指定的整数转换成BCD码,并将结果存放
到输出端(OUT)指定的存储单元中去。输入数据
的范围是0到 9999。
指令影响的特殊存储器位:SM1.6(非法BCD)
双字整数转换为实数
2.双字整数与实数的转换
实数转换为双字整
数
实数转换为双字整数四舍
五入
ROUND
DI-R
TRUNC
实数转为双字整数指
EN ENO
EN ENO
EN ENO
令可分为四舍五入取
OUT
IN
OUT
OUT
IN
IN
整(ROUND)和舍
去尾数后取整
DTR IN, OUT ROUND IN, OUT
TRUNC IN, OUT
(TRUNC)指令。
双字整数转为实数(DTR)指令:将输入端(IN)指定的
32位有符号整数转换成32位实数
ROUND取整指令,转换时实数的小数部分四舍五入。
TRUNC取整指令,实数舍去小数部分后,转换成32位有
符号整数。
取整指令被转换的输入值应是有效的实数,如果实数值太
大,使输出无法表示,那末溢出位(SM1.1)被置位。
3.双整数与整数的转换
输入端(IN)的有符号
双整数转换成整数,并
存入OUT。被转换的输
入值应是有效的双整数
,否则溢出位(SM1.1
)被置位。
I-DI
DI-I
EN
ENO
EN
ENO
IN
OUT
IN
OUT
DTI
IN, OUT
ITD
IN, OUT
欲将整数转换为实数,可先用ITD指令把整数转
换为双整数,然后再用DTR指令把双整数转换
为实数。
4.整数与字节的转换
I-B
B-I
(1)字节到整数
EN ENO
EN ENO
OUT
IN
OUT
IN
 BTI,字节转换为整数指令。
使能输入有效时,将字节输入
ITB IN, OUT
BTI IN, OUT
数据IN转换成整数类型,并将
结果送到OUT输出。字节型是
无符号的,所以没有符号扩展。
 使能流输出ENO断开的出错条件:SM4.3(运
行时间);0006(间接寻址)。
 指令格式:
BTI IN, OUT
 例:
BTI VB0, AC0

例3-26



C10计数器的计数值为现场测的以英寸为单
位的长度,现将该长度改为厘米,并保存整
数部分。
1英寸=2.54厘米
要用实数乘法,故要将双整形变实数。程序
如下:
例:
C10
AC1
101
英寸
5编码和译码
EN
ENO
ENCO
EN ENO
IN
OUT
IN
DECO
OUT
1. 编码
 ENCO,编码指令。使能输入 DECO IN, OUT ENCO IN, OUT
有效时,将字型输入数据IN的最
低有效位(值为1的位)的位号输出到OUT所指定的
字节单元的低4位。即用半个字节来对一个字型数
据16位中的1位有效位进行编码。
 使能流输出ENO断开的出错条件:SM4.3(运行时
间);0006(间接寻址)。
 指令格式:
ENCO
IN, OUT
 例:
ENCO
AC0, VB0


以本指令为例,指令执行情况如表4.26所
示。 ENCO
AC0, VB0
表4.26
编码指令执行结果




2. 译码
DECO,译码指令。使能输入有效时,将字节
型输入数据IN的低4位所表示的位号对OUT所
指定的字单元的对应位置1,其他位置0。即对
半个字节的编码进行译码来选择一个字型数据
16位中的1位。
使能流输出ENO断开的出错条件:SM4.3(运
行时间);0006(间接寻址)。
指令格式:
DECO
IN, OUT


例:
DECO
VB0, AC0
本指令执行情况如表4.27所示。
6.七段码
SEG
EN ENO
IN
SEG

OUT
IN,OUT
SEG,七段码指令。使
能输入有效时,将字节
型输入数据IN的低4位
有效数字产生相应的七
段码,并将其输出到
OUT所指定的字节单元。
7.字符串转换
ATH
EN ENO
IN1
LEN OUT
HTA
EN ENO
IN1
LEN OUT
ATH IN1,OUT,LEN HTA IN1,OUT,LEN ITA






DTA
ITA
EN ENO
IN
FMT OUT
EN ENO
IN1
FMT OUT
IN1,OUT,FMT
DTA
1. 指令种类
(1)ASCII码转换16进制指令
(2)16进制到ASCII码
(3)整数到ASCII码
(4)双整数到ASCII码
(5)实数到ASCII码
IN1,OUT,FMT
练习




编写一段梯形图程序,要求:
1)有20个字型数据存储在从VB100开始的
存储区,求这20 个字型数据的平均值。
2)如果平均值小于1000,则将这20个数据
移到从VB200开始的存储区,这20个数据的
相对位置在移动前后不变。
3)如果平均值大于1000,则绿灯亮。