前面我们讲了如何用串口调试工具通讯变频器,也学习了Modbus的报文格式。今天老冯教你们怎么用PLC写通讯程序。 首先看我们要准备的硬件: 1.三菱FX3U 2.三菱FX3U-485BD板 3.台达VFD-M变频器 4.台达变频器通讯水晶头(RJ11) 首先是接线,RDA和SDA接到485+,RDB和SDB接到485-,也就是半双工模式。这里解释一下什么是半双工,什么是全双工。 半双工:同一时间只能发送或者接收数据,接收和发送不能同时进行。 全双工:接收发送可以同时进行,互不影响。 接完线我们需要定义两边的通讯参数一致。我们以Modbus RTU为例。设置变频器站号为01,波特率为9600,8个数据位,1个停止位,偶校验。那PLC这边如何定义呢?看下图的实例程序。 图1 首先我们要置位特殊继电器M8161,M8161=ON时,这样是为了把所有数据都存放到数据寄存器的低八位。然后D8120为通讯格式寄存器,具体如何设置可以参考图2。最后利用RS指令配置发送区和接收区,发送区为D0开始的8个数据寄存器,此例只讲解如何发送报文,不需要接收数据,所以后面是K0。 图2 通过前面的学习我们已经知道正转启动的报文为01 06 20 00 00 12 02 07。我们依次把报文赋值到发送区,程序如图3-图5。 图3 图4 图5 接下来是计算CRC校验码,上期已经讲了三菱有自己的CRC指令,所以可以直接利用D0-D5里面的值计算出校验码,因为是低八位模式,所以校验码依次存放到D6和D7的低八位。到此我们的报文已经全部赋值到发送区,也就是D0-D7。我们只需要set M8122就可以把报文发送给变频器了。 图6 特别说明一下,置位M8122后不需要手动对其复位,PLC在检测到数据发送完成以后,会自行复位。 以上便是如何利用PLC给变频器发送报文的案例程序。下期我们讲如何接收,接收到的数据如何处理。没看明白的朋友可以私信我交流讨论。感谢支持! |
|