体验模块化的MODBUS通讯以及GML开放计划

电子说

1.3w人已加入

描述

去年一个偶然的机会, 发现了一款国产的PLC编程平台,ANYCONTROL, 我们约等于可以认为它是一款国产的CODESYS。比较新颖,据说已经成功于不少国产PLC和驱动器平台。

这个软件平台的特点是比较小。最新得到的版本才80M,然而我测试下来,功能相当完备,一点都不比完整的CODSYS软件差。非常惊讶他是如何做到的。

软件平台天生支持各种主流通讯总线协议, PROFINET, ETHERCAT, ETHERNET/IP , MODBUS TCP, MODBUS RTU等。

我们可以用电脑模拟PLC控制器来做通讯实验,系统给了一定的试用时间授权,对于实现功能测试,足够了。

上来测试,我没有使用PN, EIP等的硬件设备,一则硬件需要成本,二则硬件需要接线,也比较麻烦。所以我选择最入门的MODBUS  TCP来做测试。因为它的成本最低。我们甚至可以在1台电脑内通过运行模拟软件,就可以实现。

当然,通讯成功后如果还想继续拓展,也可以用一台S7-1200来做PN从站,EIP从站以及MODBUS TCP服务端来实现硬件实验。我本来是有S7-1214的,所以本来想对为什么用软件模拟的理由解释是没有硬件,后来发现不对,我主要还是懒得折腾了。对面的从站那些功能的实现都是基本功能, 对我来说没什么悬念的,所以就没什么必要。

但读者们如果技能还不够熟练,也正在想尽各种途径找一些折腾的方案以锻炼自己, 那么搞一台S7-1200甚至SMART 200,再配合本题,就可以做很多事情,积累很多经验。尤其,西门子官方有出了PORTAL环境下的EIP通讯库,可以借机会了解一下。    

上面是对读者的建议,而我本文的主题只做MODBUS TCP的通讯实验。

ANYCONTROL中建立X64的标准项目,增加ETHETNET网口,再在其中添加MODBUS TCP SERVER, 并在SERVER之下增加若干个从站,我这里是7个。

我在去年一开始第一次摸这个软件的时候,没有找到MODBUS TCP,以为其没有,就觉得很奇怪。后来发现在ETHERNET的类里。我是想当然的把ETHERNET当成了AB公司推行的ETHERNET/IP了。然而认知不一样,软件里是把EIP和MODBUS都作为了ETHERNET的一个子类。    

modbus通讯

为每一个从站设定网络参数,其中IP指向本地电脑网卡的IP,当然也可以127.0.0.1的。而ID各不同,相当有一个MODBUS TCP网关下的多个RTU从站。    

modbus通讯

也给每个从站设置分配了所要通讯读写的数值,这里分别是读写40001开始的10个字

modbus通讯

在IO映射配置中就自动得到了输入输出地址。

modbus通讯

比如2#站,读取40001数据的地址在IW60,而要写入数据到40001,则是QW60。

多个从站所分配得到的地址,分别为IW/QW 50,60,70,80,90,100,110。

PLC_PRG任务中,简单编写一些程序:    

modbus通讯

即完成了各站点数据的通讯编程工作。

电脑中打开MODSIM32软件,建立多个数据模拟窗口,分别设置不同的ID,对应PLC中所定义的各个从站。    

modbus通讯

然后PLC和MODSIM32分别开启模拟运行,通讯实验就成功了!

对。就是这么简单。

即便是MODBUS通讯这样在我们用习惯了SIEMENS PLC, 通常认为比较麻烦, 需要在PLC中编制复杂策略的轮询程序来实现,在这里都异常简单,就是简单地以模块化的组态的方式拖拖拽拽,填填参数,就完成了。尤其是,即便实际项目中,需要增加或者删除一个站点,也只是增加或者减少这个站点本身,而不需要对其他原本存在的站点进行任何变动。这样的模块化才是真正的模块化。

而在SIEMENS应用圈里,要实现MODBUS和MODBUS TCP通讯,可是一件了不得的大事。所有在工程项目中有成功应用的工程师,都值得拿出来总结一下大书特书。历届的西门子专家会议论文中,这方面的话题总是不断。而网上相关这方面的文章更是多如牛毛。    

我自己,写过的关于MODBUS通讯的文章就不下20篇。因为我逐步不仅仅实现了轮询,还做了封装和模块化,并做成了标准的库函数GML,做到了如本文ANYCONTROL组态一样简单设置参数就可以实现通讯任务。当然,我们的组态是在程序里,通过模块的参数设置实现。

也曾经想征集有理想有需求的同行, 将这个模式拓展到三菱,欧姆龙等同样配置需求的PLC系统中。然而得到响应并不积极。

现在则发现,就像汽车有传统车厂和新的造车新势力一样, PLC行业也有传统势力和新势力之分。对于PLC新势力,不管是ANYCONTROL , CODESYS,以及我没摸过的其它平台,至少在MODBUS通讯方面已经系统内置了轮询功能,应用工程师在使用时,只需要简单模块化使用, 当然,对施耐德来说,MODBUS本来就是其自家协议,当然也早就内置的,根本不需要专门做逻辑程序实现。

近些年, PLC新势力蓬勃发展,这种细节方面的简单易用一定在其中起到了重要的作用。也不可避免地导致了那些旧势力的被日渐冷落。而即便如西门子这样的行业龙头,也必然不可避免会受到冲击。

那么对于我们这些多年使用西门子,偏爱西门子,甚至曾经入职西门子为其工作,将其视为自己家人般的工程师来说, 指出来事实真相当然不能算作是背叛,而我们能做的则是对发现的其中的短板帮忙加以补足,也算是弥补这一缺陷方面做出些自己的贡献。

所以,我打算将我前面开发的S7-1200/1500和SMART 200的MODBUS 封装库GML以极低的价格出售。3年前都是价格1000的。但现在需要的工程师以几十元价格就可以得到,就可以以后在项目中重复永久使用了。    

因为在TIA PORTAL中的库函数在软件升级后加密块无法编译,所以会针对V16-V19的每个版本单独做成加密库,TCP和RTU分开,S7-1200和S7-1500因为代码参数不同也分开的,另外SMART 200只做了RTU版本, 对于TCP因为一直没有需求,所以暂时没做,以后估计不大会有这方面的需求。







审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分