第8章PLC的通信功能和应用.docx
《第8章PLC的通信功能和应用.docx》由会员分享,可在线阅读,更多相关《第8章PLC的通信功能和应用.docx(41页珍藏版)》请在冰豆网上搜索。
![第8章PLC的通信功能和应用.docx](https://file1.bdocx.com/fileroot1/2023-1/1/c9987fea-75ad-4234-aee4-ab1abbed9989/c9987fea-75ad-4234-aee4-ab1abbed99891.gif)
第8章PLC的通信功能和应用
第8章PLC通信功能及应用
学习目标
理解计算机、文本显示器、人机界面在S7-200系列PLC网络中的作用及PLC与变频器通信的实现方法;
理解S7-200系列PLC自由端口通信协议的含义及实现方法;
掌握S7-200系列PLC网络通信协议及网络通信的实现方法。
随着计算机网络技术的发展,现代企业的自动化程度越来越高。
在大型控制系统中,由于控制任务复杂,点数过多,各任务间的数字量、模拟量相互交叉,因而出现了仅靠增强单机的控制功能及点数已难以胜任的现象。
所以,各PLC生产厂家为了适应复杂生产的需要,也为了便于对PLC进行监控,均开发了各自的PLC通讯技术及PLC通讯网络。
PLC的通讯就是指PLC与计算机之间、PLC与PLC之间、PLC与其它智能设备之间的数据通讯问题。
8.1S7-200系列PLC的通信协议及通信指令
8.1.1S7-200系列PLC的自由端口通信
1.自由端口通信模式
S7-200系列PLC的串行通信口可以由用户程序来控制,这种由用户程序控制的通信方式称为自由端口通信模式。
利用自由口模式,可以实现用户定义的通信协议,可以同多种智能设备进行通信。
当选择自由端口通信模式时,用户程序可通过发送/接收中断、发送/接收指令来控制串行通信口的操作。
通讯所使用的波特率、奇偶校验以及数据位数等由特殊存储器位SMB30(对应端口0)和SMBl30(对应端口1)来设定。
特殊存储器位SMB30和SMB130的具体内容如表8-1所示。
表8-1通信用特殊存储器位SMB30和SMBl30的具体内容
端口0
端口1
内容
SMB30格式
SMBl30格式
7
0
p
p
d
B
b
b
m
m
自由端口模式控制字
SM30.7
SM30.6
SMl30.7
SM130.6
pp:
奇偶校验选择
00:
无奇偶校验;01:
偶校验;
10:
无奇偶校验;11:
奇校验
SM30.5
SMl30.5
d:
每个字符的数据位
d=0:
每个字符8位有效数据
d=1:
每个字符7位有效数据
SM30.4
SM30.3
SM30.2
SMl30.4
SM130.3
SM130.2
bbb:
波特率
000:
38400波特;001:
19200波特;010:
9600波特;
011:
4800波特;100:
2400波特;101:
1200波特;
110:
600波特;111:
300波特
SM30.0
SM30.1
SMl30.0
SM130.1
mm:
协议选择
00:
点对点接口协议(PPI从机模式);01:
自由端口协议
10:
PPI/主机模式;11:
保留(默认为PPI/从机模式)
为了方便的设置自由口通信模式,可参照表8-2直接选取SMB30(或SMB130)的值。
表8-2SM30通信功能控制字节值与自由口通信模式特性选项参照表
波特率(bps)
38.4K
CPU224
19.2K
9.6K
4.8K
2.4K
1.2K
600
300
说明
8
位字符
无校验
01H
81H
05H
85H
09H
89H
0DH
8DH
11H
91H
15H
95H
19H
99H
1DH
9DH
两组数任取
偶校验
41H
45H
49H
4DH
51H
55H
59H
5DH
奇校验
C1H
C5H
C9H
CDH
D1H
D5H
D9H
DDH
波特率(bp)
38.4K
CPU224
19.2K
9.6K
4.8K
2.4K
l.2K
600
300
说明
7
位字符
无校验
21H
A1H
25HA5H
29HA9H
2DHADH
31HB1H
35HB5H
39HB9H
3DH
BDH
两组数任取
偶校验
61H
65H
69H
6DH
71H
75H
79H
7DH
奇校验
E1H
E5H
E9H
EDH
F1H
F5H
F9H
FDH
在对SMB30赋值之后,通信模式就被确定。
要发送数据则使用XMT指令;要接收数据则可在相应的中断程序中直接从特殊存储区中的SMB2(自由口通信模式的接收寄存)读取。
若是采用有奇偶校验的自由口通信模式,还需在接收数据之前检查特殊存储区中的SMB3.0(自由口通信模式奇偶校验错误标志位,置位时表示出错)。
注意:
只有PLC处于RUN模式时,才能进行自由端口通讯。
处于自由端口通讯模式时,不能与可编程设备通讯,比如编程器、计算机等。
若要修改PLC程序,则需将PLC处于STOP方式。
此时,所有的自由口通信被禁止,通信协议自动切换到PPI通信模式。
2.自由口通信发送/接收指令
(1)发送/接收数据指令格式与功能(见表8-3)
表8-3发送/接收数据指令格式及功能
梯形图LAD
语句表STL
功能
操作码
操作数
发送数据指令
XMT
TBL,PORT
当使能输入EN有效时,把TBL指定的数据缓冲区的内容通过PORT指定的串行口发送出去。
接收数据指令
RCV
TBL,PORT
当使能输入EN有效时,通过PORT指定的串行通信口把接收到的信息存入TBL指定的数据缓冲区。
说明:
1)TBL指定接收/发送数据缓冲区的首地址。
可寻址的寄存器地址为VB、IB、QB、MB、SMB、SB、*VD、*AC;
2)TBL数据缓冲区中的第一个字节用于设定应发送/应接收的字节数,缓冲区的大小在255个字符以内。
3)PORT指定通讯端口,可取0或1。
4)对发送XMT指令
①在缓冲区内的最后一个字符发送后会产生中断事件9(通信端口0)或中断事件26(通信端口1),利用这一事件可进行相应的操作。
②SM4.5(通信端口0)或SM4.6(通信端口1)用于监视通信口的发送空闲状态,当发送空闲时,SM4.5或SM4.6将置1。
利用该位,可在通信口处空闲状态时发送数据。
5)对接收RCV指令
①可利用字符中断控制接收数据
每接收完成1个字符,通信端口0就产生一个中断事件8(或通信端口1产生一个中断事件25)。
接收到的字符会自动的存放在特殊存储器SMB2中。
利用接收字符完成中断事件8(或25),可方便地将存储在SMB2中的字符及时取出。
②可利用接收结束中断控制接收数据
当由TABLE指定的多个字符接收完成时,将产生接收结束中断事件23(通信端口0)或接收结束中断事件24(通信端口1),利用这个中断事件可在接收到最后一个字符后,通过中断子程序迅速处理接收到缓冲区的字符。
③接收信息特殊存储器字节SMB86~SMB94(SMB186~SMB194)
PLC在进行数据接收通信时,通过SMB87(或SMB187)来控制接收信息;通过SMB86(或SMB186)来监控接收信息。
其具体字节含义如表8-4所示。
表8-4通讯用特殊存储器字节SMB86(SMBl86)~SMB94(SMB194)的含义
端口0
端口1
字节含义
SMB86
SMBl86
7
0
N
R
E
0
0
T
C
P
接受信息状态字节
N=1:
用户的禁止命令,使接收信息停止;R=1:
因输入参数错误或缺少起始条件引起的接收信息结束;E=1:
接收到结束字符;
T=1:
因超时引起的接收信息停止;C=1:
因字符数超长引起的接收信息停止;
P=1:
因奇偶校验错误引起的接收信息停止:
SMB87
SMB187
7
0
EN
SC
EC
IL
C/M
TMR
BK
0
接受信息控制字节
EN=0:
禁止接收信息的功能,EN=1:
允许接收信息的功能;
每当执行RCV指令时,检查允许接收信息位。
SC:
是否用SMB88或SMB188的值检测起始信息。
0=忽略,1=使用;
EC:
是否用SMB89或SMBl89的值检测结束信息。
0=忽略,1=使用;
IL:
是否用SMW90或SMWl90的值检测空闲状态。
0=忽略,1=使用;
C/M:
定时器定时性质。
0=内部字符定时器,1=信息定时器;
TMR:
是否使用SMW92或SMWl92的值终止接收。
0=忽略,1=使用;
BK:
是否使用中断条件来检测起始信息。
0=忽略,1=使用。
SMB88
SMB188
信息的开始字符
SMB89
SMB189
信息的结束字符
SMB90
SMB9l
SMB190
SMB191
空闲线时间段。
按毫秒设定。
空闲线时间溢出后接收的第一个字符是新信息的开始字符。
SMB90(或SMBl90)是最高有效字节,而SMB9l(或SMBl91)是最低有效字节。
SMB92
SMB93
SMB192
SMB193
字符间/信息间定时器超时。
按毫秒设定。
如果超过这个时间段,则终止接收信息。
SMB92(或SMB192)是最高有效字节,而SMB93(或SMBl93)是最低有效字节。
SMB94
SMB194
要接收的最大字符数(1~255字节)
注:
不论何情况,这个范围必须设置到所希望的最大缓冲区大小。
(2)发送/接收指令编程举例
例1当输入信号I0.0接通并发送空闲状态时,将数据缓冲区VB200中的数据信息发送到打印机或显示器。
编程要点是首先利用首次扫描脉冲,进行自由口通信协议的设置,即初始化自由端口;然后在发送空闲时执行发送命令。
对应的梯形图程序如用8-1所示。
例2用本地CPU224的输入信号I0.0上升沿控制接收来自远程CPU224的20个字符,接收完成后,又将信息发送回远程PLC;当发送任务完成后用本地CPU224的输出信号Q0.1进行提示。
设置通信参数SMB30=9,即无奇偶检验、有效据数位8位、波特率9600bps、自由口通信模式;不设超时时间,接收和发送使用同一个数据缓冲区,首地址为VB200。
对应的梯形图程序如图8-2所示。
例3两个PLC之间的自由口通信。
已知有两台S7-224型号PLC甲和乙。
要求甲机和乙机采用可编程通信模式进行数据交换。
乙机的IB0控制甲机的QB0。
对发送和接收的时间配合关系无特殊要求。
1)编程要领
设乙机发送数据缓冲区首地址为VB200,在方式开关由RUN位置转向TERM位置时,建立自由口通信协议,将IB0的数据送至数据缓冲区,执行XMT指令发送数据;甲机通过SMB2接收乙机发送过来数据,在方式开关由RUN位置转向TERM位置时,建立自由口通信协议,将接收字符中断事件8连接到中断子程序0,在中断服务程序中从SMB2读取乙机数据,然后再送至QB0。
2)控制程序
乙机的发送程序如图8-3所示,甲机的接收程序如图8-4所示。
3)程序说明
①发送程序由于指令XMT的格式要求,其PORT端除支持直接寻址方式外,还可支持间接寻址。
考虑到该程序对发送数据所存放地址的灵活性,故选用指针方式的间接寻址。
指针的内容放在VD300中。
通过查表8-3,将SMB30设置为09H表示:
自由口通信模式,每字符8位,无奇偶校验,波特率为9600bps等特性。
一直将IB0的内容送往发送缓冲区表VB201中,这样可保证乙机的IB0对甲机的QB0的控制作用一直有效。
②接收程序同发送程序,先进行通信方式的设定,在主程序中将接收中断(事件号8)与中断子程序0相连接,之后全局开中断。
在中断服务程序中只是简单地读取接收缓冲寄存器SMB2的内容送至甲机的QB0即可,这样符合中断程序编制得越短越好的原则。
图8-4甲机接收梯形图程序
8.1.2S7-200系列PLC的网络通信
1.S7-200系列PLC的网络连接形式
1)点对点通信网络
在这种连接形式中,采用一根PC/PPI电缆,将计算机与PLC连接在一个网络中,PLC之间的连接则通过网络连接器来完成,如图8-5所示。
这种网络使用PPI协议进行通讯。
PPI协议是一个主/从协议。
这是一种基于字符的协议,共使用字符11位:
1位起始位,8位数据位,1位奇偶较验位,1位结束位。
通讯帧依赖于特定起始位字符和结束字符,源和目的站地址,帧长,以及全部数据和校验字符。
这个协议支持一主机多从机连接和多主机多从机连接方式。
在这个协议中,主站给从站发送申请,从站进行响应。
从站不初始化信息,但是当主站发出申请或查询时,从站才响应。
网络上的所有S7-200CPU都作为从站。
如果在程序中允许PPI主站模式,一些S7-200CPU在RUN模式下可以作为主站。
一旦允许主站模式,就可以利用网络读和网络写指令读写其他CPU。
当S7-200CPU作为PPI主站时,它还可以作为从站响应来自其他主站的申请。
对于任何一个从站有多少个主站和他通讯,PPI没有限制,但是在网络中最多只能有32个主站。
2)多点网络
在计算机或编程设备中插入一块MPI(多点接口卡)卡或CP(通讯处理卡)卡,由于该卡本身具有RS—232/RS—485信号电平转换器,因此可以将计算机或编程设备直接通过RS-485电缆与S7-200系列PLC进行相连,如图8-6所示。
这种网络使用MPI协议通讯。
MPI协议可以是主/主协议或主/从协议。
协议如何操作有赖于设备类型。
如果设备是S7-300CPU,那么就建立主/主连接。
因为所有的S7-300CPU都是网络主站。
如果是S7-200CPU,那么就建立主/从连接,因为S7-200CPU是从站。
MPI总是在两个相互通讯的设备之间建立连接。
主站为了应用可以短时间建立一个连接,或无限地保持连接的断开。
3)PROFIBUS网络
S7-200系列PLC通过EM277PROFIBUS-DP模块可以方便地与PROFIBUS现场总线进行连接,进而实现低档设备的网络运行,如图8-7所示。
PROFIBUS协议设计用于分布式I/O设备(远程I/O)的高速通讯。
在S7-200中,CPU222、CPU224和CPU226都可以通过EM277PROFIBUS-DP扩展模板支持PROFIBUS-DP网络协议。
PROFIBUS网络通常由一个主站和几个I/O从站。
主站初始化网络并核对网络上的从站设备和配置中的是否匹配。
当DP(DistributedPeripheral)主站成功的组态一个从站时,他就拥有该从站,如果网络中有第二个主站,它只能很有限的访问第一个主站的从站。
4)IT网络
通过CP-243-1IT通讯处理器,可以将S7-200系统连接到工业以太网(IE)中。
通过工业以太网,一台S7-200可以与另一台S7-200、S7-300或S7-400PLC进行通讯,也可与OPC服务器及PC机进行通讯。
还可以通过CP-243-1IT通讯处理器的IT功能,非常容易的与其它计算机以及控制器系统交换文件,可以在全球范围内实现控制器和当今办公环境中所使用的普通计算机之间的连接。
这种连接的系统示意图如图8-8所示。
2.网络读/写通信指令
在SIMATICS7的网络中,S7-200被默认为从站。
只有在采用PPI通信协议时,有些S7-200系列的PLC允许工作于PPI主站模式。
将PLC的通信端口0或通信端口1设定工作于PPI主站模式,是通过设置SMB30或SMB130的低两位的值来进行的(见表8-1)。
所以只要将SMB30或SMB130的低两位取值2#10,就将PLC的通信端口0或通信端口1设定工作于PPI主站模式,就可以执行网络读写指令了。
1)网络读指令的格式与功能(见表8-5)
表8-5网络读指令的格式与功能
梯形图LAD
语句表STL
功能
操作码
操作数
网络读指令
NETR
TBL,PORT
当使能输入EN有效时,通过PORT指定的通信口,根据TBL指定的表中的定义读取远程装置的数据
网络写指令
NETW
TBL,PORT
当使能输入EN有效时,通过PORT指定的通信口,根据TBL指定的表中的定义将数据写入远程设备中去
说明:
(1)TBL指定被读/写的网络通信数据表,其寻址的寄存器为VB、MB、*VD、*AC,其表的格式见表8-5;
(2)PORT指定通信端口0或1;
(3)NETR(NETW)指令可从远程站最多读入(写)16字节的信息,同时可最多激活8条NETR和NETW指令。
例如,在一个S7-200系列PLC中可以有4条NETR和4条NETW指令,或6条NETR指令和2条NETW指令。
2)网络通信数据表的格式
在执行网络读写指令时,PPI主站与从站之间传送数据的网络通信数据表(TBL)的格式如表8-6所示。
表8-6PPI主站与从站之间传送数据的网络通信数据表格式
字节偏移地址
字节名称
描述
0
状态字节
7
0
D
A
E
0
E1
E2
E3
E4
D:
操作完成位。
D=0:
未完成;D=1:
完成
A:
操作排队有效位。
A=0:
无效;A=1:
有效
E:
错误标志位。
E=0:
无错误;E=1:
有错误
E1,E2,E3,E4为错误编码。
如果执行指令后,E=1,则E1,E2,E3,E4返回一个错误编码,编码及说明见表8-7。
1
远程设备地址
被访问的PLC从站地址
2
远程设备的数据指针
被访问数据的间接指针
指针可以指向I,Q,M和V数据区
3
4
5
6
数据长度
远程站点上被访问数据的字节数
7
数据字节0
数据字节1
……
数据字节15
收或发送数据区:
对NETR,执行NETR后,从远程站点读到的数据存放在这个数据区中;对NETW,执行NETW前,要发送到远程站点的数据存放在这个数据区
8
…
22
表8-7网络通信指令错误编码表
E1E2E3E4
错误码
含义
0000
0
无错误
0001
1
时间溢出错误:
远程站无响应
0010
2
接收错误:
校验错误,或检查时出错
0011
3
离线错误:
站号重复或硬件损坏
0100
4
队列溢出出错:
激活超过8个NETR/NETW框
0101
5
违反协议:
没有在SMB30中使能PPI,却要执行NETR/NETW指令
0110
6
非法参数:
NETR/NETW的表中含有非法的或无效的值
0111
7
没有资源:
远程站忙
1000
8
Layer7错误:
应用协议冲突
1001
9
信息错误:
错误的数据地址或数据长度不正确
1010~1111
A~F
未用,为将来的使用保留
3)网络读/写指令编程举例
例4要求A机用网络读指令读取B机的IB0的值后,将它写入本机的QB0,A机同时用网络写指令将它的IB0的值写入B机的QB0中。
在这一网络通信过程中,B机是被动的,它不需要编写通信程序。
所以只要求设计A机的通信程序。
假定A机的网络地址是2,B机的网络地址是3。
对应的网络通信数据表如表8-8所示,对应的梯形图程序如图8-9和图8-10所示。
表8-8网络通信数据表
字节意义
状态字节
远程站地址
远程站数据区指针
读写的数据长度
数据字节
NETR缓冲区
VB200
VB201
VD202
VB206
VB207
NETW缓冲区
VB210
VB211
VD212
VB216
VB217
图8-9A机通信与控制程序
8.2PLC与变频器之间的通讯
PLC与变频器之间的通讯在西门子产品中是分以下几个步骤来完成的:
首先要在STEP7-MicroWIN编程软件上对变频器的控制通过USS协议指令进行各种设定,然后将其设定下载到PLC,最后连接变频器与PLC。
当PLC进入运行状态后,就会根据USS协议指令的要求与变频器进行通信,实现对变频器的控制。
1.USS协议指令
1)USS_INIT初始化指令(见表8-9)
表8-9USS_INIT初始化指令格式及功能
梯形图LAD
语句表STL
功能
操作码
操作数
CALLUSS_INIT
Mode,Baud,Active,Error
用于允许和初始化或禁止MicroMaster变频器通信
指令格式及功能中各输入输出端子名称、功能及寻址的寄存器如表8-10所示。
表8-10USS_INIT初始化指令的输入输出端子说明
符号
端子名称
状态
作用
可寻址寄存器
EN
使能端
1
USS_INIT指令被执行,USS协议被启动
Mode
通讯协议选择端
字节
为1时,将PLC的端口0分配给USS协议,并允许该协议
VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD,常数
为0时,将PLC的端口0分配给PPI协议,并禁止USS协议
Baud
通讯速率设置端
字
可选择的波特率为1200、2400、4800、9600或19200
VW,QW,IW,MW,SW,SMW,LW,T,C,AIW,AC,*VD,*AC,*LD,常数
Active
变频器激活端
双字
用于激活需要通信的变频器,双字寄存器的位表示被激活的变频器的地址(范围0~31)
VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LD,常数
Done
完成USS协议设置标志端
位
当USS_INIT指令顺利执行完成时,Done输出接通,否则出错
I,Q,M,S,SM,T,C,V,L
Error
USS协议执行出错指示端
字节
当USS_NIT指令执行出错时,Error输出错误代码。
其可能的错误类型如表8-11所示
VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD
表8-11执行USS协议可能出现的错误
出错代码
说明
出错代码
说明
0
没有出错
11
变频器响应的第一字符不正确
1
变频器不能响应
12
变频器响应的长度字符不正确
2
检测到变频器响应中包含加和校验错误
13
变频器错误响应
3
检测到变频器响应中包含奇偶校验错误
14
提供的DB-PTR地址不正确
4
由用户程序干扰引起的错误
15
提供的参数号不正确
5
企图执行非法命令
16
所选择的协议无效
6
提供非法的变频器地址
17
USS激活;不允许更改
7
没有为USS协议设置通信口
18
指定了非法的波特率
8
通信口正忙于处理指令
19
没有通信;变频器没有激活
9
输入的变频器速率超出范围
20
在变频器中响应中的参数和数值有错
10
变频器响应的长度不正确
2)USS_CTRL驱动变频器指令(见表8-12)
表8-12USS_CTRL驱动变频器指令格式及功能
梯形图LAD
语句表STL
功能
操作码
操作数
CALLUSS-CTRL
RUN,OFF2,OFF3,
F_ACK,DIR,
Drive,Speed_SP,
Resp_R,Error,
Status,Speed,
Run_EN,D_Dir,