“自由通讯”的意思是:上位可以依据下位给出的协议,按照该协议对下位进行存取操作。用在触摸屏或者
永宏PLC上就是:通讯命令完全交由宏指令(对HMI而言)或者梯形图(对PLC而言)来完成。
这里要举的例子就是用
永宏PLC自由通讯(FUN151 MD1模式)实现对MODBUS_RTU通讯(MODBUS_RTU协议内容网上可以下载)。我觉得RTU的比较难的在于CRC校验的实现,当然永宏本身是有 CRC16 指令的,这样可以省去CRC生成算法,但在一些没有CRC指令的永宏PLC上面,就需要自己编写了,这里来编写CRC算法。
CRC算法说明,大概就是下面这几个意思:
1.设置CRC寄存器,并给其赋值FFFF(hex)。
2.将数据的第一个8-bit字符与16位CRC寄存器的低8位进行异或,并把结果存入CRC寄存器。
3.CRC寄存器向右移一位,MSB补零,移出并检查LSB。
4.如果LSB为0,重复第三步;若LSB为1,CRC寄存器与多项式码相异或。
5.重复第3与第4步直到8次移位全部完成。此时一个8-bit数据处理完毕。
6.重复第2至第5步直到所有数据全部处理完成,最终CRC寄存器的内容即为CRC值。