1 接线
modbus的接线比较简单,就是正对正,负对负,如果你接错了也没关系,不会烧坏硬件的。我们分别看一下手册中的介绍
图一 ACS510变频器MODBUS接线
图二 TM218PLCmodbus接线
如上图所示,图一是ABB的端子图,图二是施耐德的端子图,施耐德PLC一般有两个独立的串口,这里我们使用串口2。
需要注意的是,图中黄色荧光笔部分,ABB 是B正A负,而施耐德是A正B负。所以,接线是A对B,B对A.
2 配置
配置,注意是设置各项与通讯有关的参数,主要是指地址,波特率,校验等。
图三 PLC侧设置参数
如图三所示,在PLC 的硬件树里找到串行线路2,双击Modbus_Manager,就是图中黄色荧光笔的部分,打开PLC 的modbus配置
图四 施耐德PLCMODBUS配置
如图四所示,黄色荧光笔部分是设置通讯模式为RTU,我们要用PLC去读取变频器,所以PLC是主站。红色圆圈部分是通讯参数设置。
3 变频器参数设置
变频器主要设置如下参数
图五 ABB变频器参数设置
变频器参数设置的重点就是红色圆圈部分,要保证和PLC侧一致,否则,你是通讯不上的。
4程序编写
重点来了,程序主要是使用三个功能块 ADDM READ_VAR WRITE_VAR,他们的功能分别是地址转换,写入变量,读取变量。
ADDM,用于把MODBUS 的地址转化成PLC可以识别的地址,这个功能块可以认为是用户和PLC底层的一个交互,可以不用理解,而且这个貌似是施耐德独有的机制,因为在施耐德 的UNITY中(非CODESYS平台)也是用这个功能块。
READ_VAR,WRITER_VAR,才是我们要真正使用的,它的作用就是写入和读取变量,看程序
图六 CFC编写的MODBUS通信程序
如图六所示,是程序的全貌,程序实在太大了,大家可能要费点眼神了,黄色荧光笔部分是程序的启动按钮,当变量Com_En产生一个上升沿时,程序就会自动执行。最后面红色大圆圈就是我们需要的结果。读取或写入的数据是放在数组里的,当你交互的数据是连续的时候,就很方便了。
其实,CFC的精髓就是可以自由移动,就像电路图一样,像通讯程序中,由于前后功能块需要联系,我们就需要中间变量来传递,而直接使用连线,省去了建立中间变量的麻烦。而欧系PLC对通讯的处理也很简单,不需要复杂的编程,配置参数都采用设置的方式,只需要在功能块中指定地址和数量,就可以轻松交互数据。为了方便大家看清楚,程序我分段放大
看上面三个图,小的红圈是使用的功能块,而大的红圈就是通讯的结果。
总结:MODBUS是一种性价比相当高的通迅解决方案,大家可以尝试使用,它比使用模拟量的优势不言而喻。节省配线,传递的信息量大,又可以有效节约成本,提升设备档次。