欢迎进入PLC功能块藏馆 !
不同品牌PLC用工业以太网通讯
来源:PLC Library 功能块藏馆原创开发 | 作者:PLCLibrary | 发布时间: 2021-12-14 | 5275 次浏览 | 分享到:

中国工控PLC市场大部分份额由国外品牌占领,我等工控人多数只能被动接受,不同品牌PLC经常会由通讯需求,目前主要用网关解决,此处写无网关解决方案,为你提供备用方案,以免你受我之苦,开发背景见全球首发屠龙技-PLC之间无网关通讯

 谈及通讯,OSI或者TCP/IP模型就不能避免,稍微了解以下,也会有不小的收获!我以西门子1500读写AB的1769为例,说明此方案。

如果西门子1500跟AB的1769PLC用一根网线连起来,并设置各自的IP为同一网段,我们发现在OSI或者TCP/IP模型中就已经满足的下面的4层

物理层-----RJ45网线已经连接

数据链路层-----同一网段,交换机可以交换数据

网络层-----ICMP等报文都可以回应(ping)

传输层-----都可以用TCP协议连接

这么多曾都已经通了,离交换数据仅仅相差应用层的数据交换而已。

常用的方法是在此处做server-client发送接收数据,此时需要两个PLC分别扮作server和client,双方都需要编程。

此处我们介绍另一种方法,用PLC自己的协议。如采用AB plc的ethernet/ip协议。

如果用ethernet/ip协议向AB PLC发送数据时,AB PLC会自己识别报文,并处理返回信息,完全不用我们去编程。对AB PLC来说只要收到了ethernet/ip协议的报文,就返回一个信息,并不关心这个报文从哪个设备发出来的。我们就是利用这个原理,用西门子1500 PLC编写一个报文发送给AB,然后就可以收到AB PLC的数据了。

大概流程如下:

1,1500 TCP连接AB PLC(即IT常说的3次握手,1500直接调用指令即可)

2,发送认证信号,得到一个认证码(AB PLC在连接时需要按照它的要求,发送一个认证信号,然后AB'会返回一个认证码,有这个认证码才能通讯)

3,利用得到的认证码,按照ethernet/ip报文规则,编写报文,请求AB 读变量内容或者写变量类容

4,AB PLC 返回信息

5,1500得到信息后,按照报文规则,解码内容。转换数据格式

6,重复3-5动作,就可以不停的交换数据了

7,断开连接。

封装以上过程,得到功能块,类似高级语言的DLL文件,就可以方便调用了。

开发后效果为,西门子1500 PLC仅需要以太网线连接AB PLC,不再需要网关,通过调用功能块DLL,直接读写AB PLC数据,AB PLC无需为通讯编程。

利用以上方法可以开发出各类功能块DLL,如各品牌PLC都可以用S7DLL读写西门子PLC内容,各品牌PLC都可以用MCDLL读写三菱PLC内容,各品牌PLC都可以用finsDLL读写欧姆龙PLC内容,各品牌PLC都可以用EIPDLL读写 AB PLC内容

部分实例程序点此处