欢迎进入PLC功能块藏馆 !
全球首发屠龙技:一个功能块搞定所有PLC通讯
来源: | 作者:PLCLibrary-王工 | 发布时间: 2021-12-12 | 3143 次浏览 | 分享到:

每天都忙于工作,从来都没有抬起头看看天空!

有一天,接到一个改造项目,生产线增加部分设备,并和原有设备连接。原设备用罗克韦尔AB PLC,我用西门子,需要连接的时候,问题来了:对方不让我修改他的程序要我自己想办法通讯。天呐!脑袋瓜子嗡嗡声,什么叫通讯,通讯最基本的是方法就是两边互相发送接收,结果有一边什么都不做,还要怎么通讯?

事情出了总要想办法解决,分别咨询了全球最大的两家PLC厂家,好像也没有什么收获,最后百度谷歌必应轮番上阵,总结和枪毙的方案如下:

1,最简单的方式,硬件IO交换数据,这种只适合交换少量的布尔量,很多熟悉日系PLC的工程师常用这种方法。或者以太网server-Client收发数据,欧美多用这种方式。但是这些都需要对方配合编程。哎!

2,网络上所有宣称不编程就可以使不同品牌PLC交换数据的网关都是假的,不编程不是什么都不做,而是换了一个说法“组态”,基本上通讯双方都需要导入EDS GSD类文件来组态一个中间网关,把需要通讯的数据设置到中间网关,通过中间网关中转,中间网关还需要用专用软件配置,一番操作下来工作量不比编程少。好处是使用了硬件设备来交换数据,速度一般可以保证。这类方法的代表厂家赫优讯anybus,最终我没能用上这种方法,因为需要改对方PLC!

3,使用OPC,多数PLC的默认设置是允许OPC来取得数据的,刚好AB的PLC也是,不用特别设置,OPC就能直接读写数据。但是OPC一般都是装在电脑上,为了交换数据就放一个电脑在现场?就算不是强迫症好像看着也不舒服啊。

虽然以上方法都没有解决我的问题,但是OPC的方案却给了我提示。刚好我的强迫症又犯了,都是插网线的,内部走的都是01信号,凭什么不能互通?

搜索网上资料时,大多数人都说这种单边编程的很难实现,但是很多人又承认有可能可以。因为PLC厂家提供给我们的编程软件不就是单边读写了PLC的数据吗?曙光终于来了,仔细研究发现这两PLC不能通讯,只是因为协议不同,西门子用S7协议,AB用ethernet/ip协议,底层的连接都是一样的,就像我只懂中文,听不懂老外说英语一样。关键点找到了,解决方法就很简单了,用我的西门子写一个Ethernet/ip协议数据发过去不就可以嘛!敲代码,测试,连接......终于AB PLC回复数据过来了,它应该也很欣慰终于听懂我说话了吧...haha!

搞通了这个顺便也研究一下三菱的MC/SLMP协议,欧姆龙Fins协议,初步敲了下代码,等时机成熟再测试这几大品牌PLC之间用对方协议读写数据,再遇到这种问题终于可以轻松一点了。

后来分析认为万能的互联网为什么没有这方面的资料,我这种方式有可能全球首例,可能是其它人不会有这个需求,欧洲大部分用西门子,美国大部分用AB,日本大部分用三菱,只有中国才会混用各品牌PLC,即使需要通讯的以上方法足以解决问题。谁又会像我这么多灾多难呢!

全球首发的屠龙技!!!龙呢,龙去哪里了......