假设现在有个项目,需要MODBUS控制7个变频器,那该怎么办?
理论上把前面的通信程序复制7遍不就行了,但却是不可行的,为什么呢?因为串口在同一-时间,只能进行一次数据交互。这个一次,是指一次读或是写操作。这就好比-一个很窄的路口,一次只能通过一辆汽车,如果7辆汽车一起通过,势必会引起堵塞,一辆也过不去,但我们需要过7辆怎么办?那就需要交通灯或是交警指挥交通,通信也一样,也需要有交通灯或是交警,而在MODBUS通信中,就需要他来当交警,通过程序控制通信流程,这就是轮询方式。而M0DBUS通信实现轮询,有两个常用的方法:
1时间间隔法
所谓时间间隔法,就是每个操作分配一个固定的时间,比如第一秒写入频率,第二秒读取频率,第三秒读取电流,当然,这个时间是要根据实际情况来设置的。
2功能块触发法
功能块触发法,是利用功能块的状态参数来触发下一次通信,也就是通信的时候使用的BUSY信号。
这两种常用的轮询方法,它们各有优缺点,最好的方式就是两者结合。利用时间间隔; . 这个时间间隔的设置就很讲究,时间太短,可能通信还没完成,时间太长影响效率。而利用功能块的BUSY信号,可以很好解决这个问题,但是,一旦一个环节通信出错,BUSY信号无法给出,就会造成后面的通信无法进行,所以以往超过10个从站,就不建议用MODBUS通信了,那样就要考虑使用总线了。现在,华杰智控来解决一下这个问题。
华杰智控HJ6311拥有11路独立485网关用于一对多集成ModbusSRS485设备,形成MODBUS协议并连接到PROFINET,实现PROFINET监控MODBUS设备的技术要求。可以实现Modbus转profinet、profinet转Modbus Rtu、协议转换功能;主要用于西门子、Modbus 协议相关接口的变频器、 智能电表、温控表、称重仪、智能高低压电器、电量测量装置、各种变送器、智能现场测量设备及仪表等。
通过把modbus RTU的命令映射到对应的PLC的寄存器地址,生成GSD文件, 然后导入西门子编程软件S7或者博图,组态下载到PLC。 西门子PLC无需进行modbus编程,可以直接通过读取寄存器地址来读写RTU数据实现控制RTU。 11路独立485网关每个485可以接多个RTU设备,11路网关同时并发数据,速度更快。