施耐德PLC与ABB变频器的MOSBUS/RTU通信

本例程是由施耐德codesys平台的plc m218与abb变频器 acs510的modbus/rtu通讯,由plc写入运行频率,并读取实际频率,电机电流。变频器的启动,停止则使用硬接线。大家可以思考一下,为什么要这么做。ps:此程序我已经在某工程项目中使用过,绝对可行,你可以私信“modbus” 获取。软件平台somachine v4.3。
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是一种性价比相当高的通迅解决方案,大家可以尝试使用,它比使用模拟量的优势不言而喻。节省配线,传递的信息量大,又可以有效节约成本,提升设备档次。