PLC与多台变频器的MODBUS/RTU通信方案

如果现在有个项目,需要modbus控制五个变频器,那该怎么办?
也许你会说,这还不简单,把前面的通信程序复制五遍不就行了?理论上,这是可行的,但却是不可行的,为什么呢?因为串口在同一时间,只能进行一次数据交互。这个一次,是指一次读或是写操作。这就好比一个很窄的路口,一次只能通过一辆汽车,如果五辆汽车一起通过,势必会引起堵塞,一辆也过不去,但我们需要过五辆怎么办?那就需要交通灯或是交警指挥交通,通信也一样,也需要有交通灯或是交警,而在modbus通信中,就需要我们自己来当交警,通过程序控制通信流程,这就是轮询方式。
而modbus通信实现轮询,有两个常用的方法。
1 时间间隔法
所谓时间间隔法,就是每个操作分配一个固定的时间,比如第一秒写入频率,第二秒读取频率,第三秒读取电流,当然,这个时间是要根据实际情况来设置的,我们看一个例子:
图一时间间隔
如图一所示,这是一个blink 和计数器两个功能块组成的程序,blink产生一个50毫秒的脉冲,而计数器对此脉冲进行计数,因此,计数器的当前计数值cv 也就是图中黄色荧光笔部分,就会从1 到6每隔50毫秒递增一次。这样,就为每一次操作分配了50毫秒的时间。
图二 利用时间间隔触发通信
如图二,红色圆圈部分,当数值等于1的时候,我们写入地址0002,当数值等于2的时候,我们读取103,依次类推。黄色荧光笔部分是触发路径。
2 功能块触发法
功能块触发法,是利用功能块的状态参数来触发下一次通信,也就是我在介绍通信的时候使用的busy信号。
图三 利用busy信号触发下一次读写
如图三所示,当写入0002通信完成后,利用busy信号来触发下一次通信,读取103的值。图中黄色荧光笔的部分,就是触发路径,当上一个通信功能块的busy信号产生下降沿的时候,证明这次通信已经完成,以此来触发下一次通信
以上,就是两种常用的轮询方法,它们各有优缺点,最好的方式就是两者结合。利用时间间隔,这个时间间隔的设置就很讲究,时间太短,可能通信还没完成,时间太长影响效率。而利用功能块的busy信号,可以很好解决这个问题,但是,一旦一个环节通信出错,busy信号无法给出,就会造成后面的通信无法进行,那么该如何结合呢?那就是用时间间隔来确定从站之间的通信间隔,而同一个从站的读写就用功能块信号触发,这样即使通信有错误,也只是影响一个从站。
我们为每个从站分配30毫秒的时间,那么轮询10个从站只需要300毫秒,这基本能满足我们的需求,而又能保证每个站的通信时间。因为超过10个从站,就不建议用modbus通信了,那样就要考虑使用总线了。而一个从站内部,要读写多次的时候,就用busy信号触发。这样,即使一个从站通信出现问题,也不会影响下一个从站的通信。

无线充电,那些你不知道的伤害
黑科技!Santa Cruz计划用按钮 摇杆替换当前控制器触控板
基于DRV8825驱动芯片的步进电机
如何自制简单的夹具来测量电容器的特征参数
院士谈共融机器人产业群的创新发展和跨越发展
PLC与多台变频器的MODBUS/RTU通信方案
ZYNQ开发案例:GPIO的结构体系及使用案例
如何使平板电脑背光耗电减少
AMD明年初推出下一代GPU架构 命名Vega10和Vega11
受三星S8冲击,华为P10销量不佳!
MySQL端口可以从MySQL数据库中存储和检索数据
中国光伏陷利润、出口、资金链三大困境分析
3D打印面具成功解锁iPhone X
大众ID Buzz电动汽车将推迟到2023年在美国上市
GSM测试仪 HP8922M HP8922M HP8922M
如何选择图像传感器的镜头
食品安全综合检测仪的生产厂家如何选择?
智能猫眼很可能成为叩开智能家居大门的最佳契机
f5负载均衡工作原理详解
自动焊接机器人的编程好学吗?