基于Socket方式实现不同品牌PLC之间的通信
2020-03-30杨至诚
陈 峰 孟 宇 杨至诚
(1.北京金自天正智能控制股份有限公司;2.冶金自动化研究设计院)
随着科学技术的发展,PLC的运算速度、处理能力和通信功能得到极大提升。PLC的品牌众多,同是基于TCP/IP协议的通信方式,不同品牌PLC之间虽然IP地址在一个网段,但也无法实现互相通信,必须借助第三方硬件或软件才可以实现数据交换。因此,研究基于Socket方式实现不同品牌PLC之间的通信,有着非常重要的实际意义。
1 Socket协议概述
Socket又名套接字,是支持TCP协议或UDP协议的网络通信操作的基本单元,TCP或UDP协议应用层和传输层协议通过Socket接口区分不同程序进程或网络通信,以实现网络传输的并发[1]。
Socket的建立连接至少需要一对套接字完成,一个运行于客户端(SocketClient),另一个运行于服务器端(SocketServer)。
Socket的连接过程分为3个步骤:
a.服务器监听。服务器的套接字并不定位具体的来自客户端的套接字,而是一种等待连接的状态,通过实时监控网络状态,等待客户端的连接请求。
b.客户端请求。指SocketClient通过查找SocketServer的地址和端口号,发起连接请求。
c.当SocketServer监听到SocketClient发送的请求时,响应客户端请求,建立一个线程,把SocketServer描述发给客户端,当SocketClient确认后,建立连接成功。
Socket通信流程如图1所示。
图1 Socket通信流程
2 PLC通信协议设置
为了验证Socket通信的稳定性和有效性,笔者选取S7-400系列PLC与Controllogix系列PLC通过Socket实现相互通信。
S7-400系列414-2DP处理器支持SIEMENS的 PROFINET 协议[2],PROFINET 基于 TCP/IP 协议,可以实现控制层级横向与纵向的集成。Controllogix系列1756-L72处理器支持Rockwell的Ethernet IP协议[3]。由于两家公司配套软件不同,如需实现网络互通,需从物理连接和PLC硬件网络配置两个方面完成网络配置[2,3]。
2.1 物理连接
本项目有2套PLC和1台编程器,为验证系统的有效性,采用网络交换机连接方式,两套PLC和编程器都设定在一个局域网中,通过计算机CMD中的PING指令验证物理连接的有效性。
2.2 PLC硬件网络配置
Rockwell PLC的硬件网络配置。Controllogix系列1756-L72处理器采用Rockwell RSLogix5K、RSLinx软件进行硬件配置和软件编程,具体配置步骤如下:
a.通过“Rockwell Software>RSLinx”创建新连接,通过 “Communication>Configure Drivers>Available Driver Types”选择驱动,本项目选用“EtherNet devices”;
b. 添加新的驱动 “Add New>添加名称>点击 OK”;
c.配置以太网驱动,输入IP地址192.168.1.243并确定;
d.自动扫描网络,可查询在线网络设备;
e.打开RSLogix5K软件,通过RSWho关联RSLinx软件找到CPU,实现程序下载。
Rockwell RSLinx组态如图2所示。
图2 Rockwell RSLinx组态
SIEMENS的PLC硬件网络配置。414-2DP处理器选用STEP7编程软件完成414-2DP硬件配置后进入NetPro程序:
a.通过 “Insert>New Connection”创建新连接,在连接伙伴处选择“unspecified”,并选择“TCP connection1”作为连接类型;
b.在TCP属性窗口 “General Information”标签中选择PLC通信模块、ID号和Active connection establishment(该选项为通信设置中Socket-Server或者SocketClient的设定,本项目中选择SIEMENS的PLC作为SocketClient,这里打勾);
c.在addresses窗口中设定Local/Remote IP地址192.168.1.244和端口号10002;
d.编译后下载至PLC中。
SIEMENS硬件组态如图3所示。
图3 SIEMENS硬件组态
3 应用程序设计实现
3.1 Rockwell软件实现
Rockwell PLC是通过软件实现Socket通信功能的。MSG指令为1756-L72从网络中的另一个模块异步读取或异步写入数据块的软件指令,在使用MSG指令时:
a.定义一个新的数据类型为Message的Tag,对应一个MSG指令;
b.选择MSG结构类型,本项目为第三方通信,因此选择CIP Generic类型;
c.建立MSG的ServiceType服务类型标签,根据Socket通信原则,本项目使用了5种类型的服务类型标签——Custom(用户自定义类型,当Socket通信中断时可自动修复)、Socket Create(创建Socket通信连接标签)、OpenConnection(打开Socket通信连接类型)、WriteSocket(写数据块类型)和 ReadSocket(读数据块类型);
d.根据不同类型的MSG建立对应的参数设置。
MSG指令组态如图4所示。
在程序结构设计中:
a.Socket通信程序采用250ms定时扫描执行,因此将Socket封装在子程序块内,方便调用;
b.手动测试采用5个Bool位指令,即Delete_All_Request、 Create_Socket_Request、 Accept_Request、Read_Data_Request和 Write_Request,实现MSG指令调用;
图4 MSG指令组态
c.MSG参数设定,例如在Socket_Open_Par中设定SocketServer的IP地址和port号;
d.采用 Ton、Mov、Xic及 Xio 等指令实现自动Socket程序功能;
e.调试过程中,通过观察MSG指令的(EN)、(DN)、(ER)状态监控通信是否正常,其中(EN)代表MSG指令使能、(DN)代表MSG指令执行完成、(ER)代表MSG指令错误位。
Rockwell程序如图5所示。
图5 Rockwell程序
3.2 SIEMENS Socket软件实现
在SIEMENS的STEP7软件中,通过AGSEND(FC5)和 AGRECV(FC6)实现块的读写操作。AGSEND用于向另外的S7站、计算机站或者第三方系统发送数据;AGRECV用于从另外的S7站、计算机站或者第三方系统接收数据。
PLC程序为循环扫描,扫描时间可根据程序自动调节或者设定固定时间,本项目设定250ms执行一次读写操作过程。
在程序设计过程中,首先在OB1功能块中调用SD(250ms)计时器模块,计时器完成位是执行AGSEND和AGRECV指令。M0.0为控制位,在上升沿有效;ID为硬件组态设置;LADDR为通信模块的起始地址;SEND(RECV)为发送(接收)的地址区域;LEN为通信字的字长;DONE为完成位;ERROR为功能块的错误位,发生错误时报警;STATUS为功能块的状态字,显示功能块的运行状态。
SIEMENS程序如图6所示。
图6 SIEMENS程序
4 通信测试
4.1 搭建硬件环境
Rockwell PLC为SocketServer端,其硬件模块由电源模块PA72、CPU模块L73、以太网模块EN2T、A10框架组成。网络部分由交换机和网线组成。
SIEMENS PLC为SocketClient端,其硬件模块由电源模块PS407、CPU模块S7-400 414-2DP、以太网模块443-1和框架组成。网络设备和编程器选用IBM笔记本、8电口100M交换机及网线等。
4.2 下载程序
分别通过Rockwell和SIEMENS的配套软件,将对应的软件下装到PLC中。
4.3 通信测试
两套不同品牌PLC通信调试比较繁琐,很难一次调试成功。笔者在调试过程中,选用了一款第三方软件TCP/UDP测试软件,采用TCP/UDP软件可以模拟Socket服务器/客户端,先用两套PLC分别对TCP/UDP软件测试成功后再进行PLC通信。最终实现了PLC之间的通信,通信时间达到了毫秒级,而且通信中断后可自动连接。TCP/UDP通信软件如图7所示,STEP7中的监控通信数据如图8所示。
图7 TCP/UDP通信软件
图8 STEP7中的监控通信数据
5 结束语
随着工矿企业的快速发展,PLC和工业以太网技术在企业生产中广泛应用。笔者针对不同品牌PLC之间采用Socket进行通信做了一次尝试,实现了Rockwell和SIEMENS的PLC通信,希望能给工控领域的设计者们一个解决思路和途径。