“自由通訊”的意思是:上位可以依據(jù)下位給出的協(xié)議,按照該協(xié)議對下位進(jìn)行存取操作。用在觸摸屏或者
永宏P(guān)LC上就是:通訊命令完全交由宏指令(對HMI而言)或者梯形圖(對PLC而言)來完成。
這里要舉的例子就是用
永宏P(guān)LC自由通訊(FUN151 MD1模式)實現(xiàn)對MODBUS_RTU通訊(MODBUS_RTU協(xié)議內(nèi)容網(wǎng)上可以下載)。我覺得RTU的比較難的在于CRC校驗的實現(xiàn),當(dāng)然永宏本身是有 CRC16 指令的,這樣可以省去CRC生成算法,但在一些沒有CRC指令的永宏P(guān)LC上面,就需要自己編寫了,這里來編寫CRC算法。
CRC算法說明,大概就是下面這幾個意思:
1.設(shè)置CRC寄存器,并給其賦值FFFF(hex)。
2.將數(shù)據(jù)的第一個8-bit字符與16位CRC寄存器的低8位進(jìn)行異或,并把結(jié)果存入CRC寄存器。
3.CRC寄存器向右移一位,MSB補(bǔ)零,移出并檢查LSB。
4.如果LSB為0,重復(fù)第三步;若LSB為1,CRC寄存器與多項式碼相異或。
5.重復(fù)第3與第4步直到8次移位全部完成。此時一個8-bit數(shù)據(jù)處理完畢。
6.重復(fù)第2至第5步直到所有數(shù)據(jù)全部處理完成,最終CRC寄存器的內(nèi)容即為CRC值。