欢迎光临~爱游戏在线官网
爱游戏在线官网
全国客服热线:

0532-83790688

技术支持

手把手带小白做MODBUS通讯实验

来源:爱游戏在线官网    发布时间:2024-07-24 08:22:45

  换大白话说便是,即便一个啥都不懂的小白,经过简单的辅导,就能轻松实现应用。具备应用到工程现场中的能力。而至于原理不懂, 无所谓。能独立先把工作任务完成了最重要。这就是优雅。

  我曾经发布了《0601 【万泉河】优雅的80个MODBUS通讯的变频器例子》,并将例子有偿或无偿分发给了部分感兴趣的学员。

  然而发现,其实MODBUS通讯的技能, 并不是工控行业必备。有一些做非标设备的学员,各种轴类,张力控制应用等非常娴熟,然而十几年工作经验,都可能会没用过MODBUS通讯。因为实在用不到。

  而有用过的学员, 经验也非常少。可能也就有过一次两次跟MODBUS仪表的通讯经验,所带的站点也不过是1-2台。所以80的例子就对他们来说有些上头。有学员来参加会议从飞机场见面后,就开始反复问我程序块中的SUBNET接口是什么。反复解释都不能理解。主要是他们的工程应用中没机会遇到我们一个CPU下动辄几百台RTU需要控制的情况。

  然后,我在会上就许诺大家,我会做一个小白教程,带大家学会使用这套GML库的方法。所以本文另一个题目可以叫做: GML 库函数使用方法。

  即,我们大家可以在只有一台电脑+一台CPU的情况下,就完成MODBUS通讯实验学习。当然,也有一定的可能不使用实体的CPU硬件,只用一台电脑,电脑上用的某个版本也能轻松实现。但我因为有这个CPU硬件,而电脑上跑不起来更高性能的PLCSIM,所以就没做这方面的测试验证。欢迎有读者参照本完实验后,可以再尝试在PLCSIM中验证实现。然后把是否可行的结果告诉我。

  打开程序中的NM_ACS500 (FB32),看到程序中读取变频器的频率和电流分别在4005和4006 。那么我们大家都知道了,如果相应的地址有数据了,并且通讯成功了,PLC程序监控中就会有数值。

  当然,这部分工作是倒叙的,是在已经有现成的设备块的情况下。而实际应用中,你应该根据所要通讯的设备的数据表来编写相应设备的控制程序。

  运行MODSIM,打开MODBUS TCP通讯,并将40005和40006设置为数值自动增长。这里的device ID为1, 代表站地址为1,也可以再新开一个窗口,地址为2,则模拟了地址=2的站。

  运行MODSCAN来检查从站通讯,设置通讯目标的IP为本机IP,或者127.0.0.1

  程序段3中IP4=13,即电脑的IP。这里是SUBNET=101,如果有更多的网络总线等等。这个块里最多做了7条线。每条线对应了不同的IP。而工程应用中,同事们已经最多做到了10条,都是在这里简单复制增加。

  设备块(变频器)的实例化调用中,检查调用的SUBNET和站地址对应正确。

  我前面给的例子的版本中,忘记了这里的MODBUS TCP通讯的SUBNET是从101开始的,因为原本做的是MODBUS RTU,定义在100以下,是另外一个程序块中实现的。当时大量使用的CP ptp模块来实现和RTU的通讯,后来增加了MODBUS TCP网关的方式,库函数中就做了2种方式兼容,再后来基本不会再使用PTP模块,而是统一都用网关来转换,就把旧的模块删掉了,而SUBNET的定义还没变。

  程序修改下载之后,CPU切换到运行,自动就通讯上了,ABB01站的频率和电流的数据已有数值了。

  而再MODSIM中增加站号2和3的数据模拟,相应的站的数据也会通讯成功读上来。

  更进一步,如果增加一台电脑,比如运行虚拟机,通过不同的IP中运行MODSIM的数据仿真,也能轻松实现更多SUBNET总线的数据通讯。

  而实现之后发现,对MODBUS通讯的机理特别是轮询部分丝毫没有涉及,有多少个站就平行调用多少个站的实例。就像PROFINET 的PN站点一样简单。

  对MODBUS通讯需要做轮询这一点, 其实只有西门子和三菱等老牌PLC系统里面才需要做。而对于新的CODESYE等环境的平台, 子站都是组态之后就能直接通讯的,与ETHERCAT, PROFINET并没多少区别。这应该也是一大半同行对轮询不太感兴趣的原因。因为他们根本用不到啊!

  所以倒过来看, 掌握所谓的轮询的技能也并不是行业必备的必杀技。你可完全不选用这一些产品, 以绕过这些难点嘛!比如顶多可以花点钱买个贵一点的PN/MODBUS网关,也可以省掉这些工作量。而实际上,我们开发这一套库函数,也只是因为以前的方案选用的专用的网关产品太贵,工程中反复用到,花费有点多,出于要省一点成本的目的,而另外花出了几个月的时间做的库。

  最后对那些白嫖不到却强烈要求开源的同行说一下, 所谓的开源,是建立在各方水平级别相等的基础上的。至少对方开放源代码的代码,自己要能看得懂,理念方法要能认同,要有共同的价值观。最好还要能对方开源的内容有改进有贡献,这种开源才有意义。否则都算不上真正意义的开源。开源从来不是单向输出,也更不是什么道德楷模。

  我近几年专门制作了不少例子的源代码供同行学习提高。比如80系列的一些例子,80模拟量的标准答案等,然而收效并不太好,大多数的同行表示从中学到了技能。然而也有不少的声音认为我做的太简单而借此反而嘲笑攻击我。甚至有人在我的帖子下面回复:看到有人骂你我就放心了。

  我不知道他放的什么心。我唯一可以让他, 以及让所有同行放心一点的是,只要有一个这样谩骂的声音在,我就不会免费开源。毫无价值,毫无意义。我没有必要去讨好这样的价值观的同行。


导航栏目

联系我们

联系人:彤起

手 机:0532-66912111

邮 箱:Tongqi@163.com

公 司:爱游戏在线官网

地 址:青岛市李沧区瑞金路1号(青岛汽车厂北1000米)