“自由通訊”的意思是:上位可以依據下位給出的協議,按照該協議對下位進行存取操作。用在觸摸屏或者
永宏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值。