陜西省商洛市西門子辦事處---西北Siemens(授權)總代理
| 更新時間 2024-11-24 08:00:00 價格 請來電詢價 西門子PLC 西門子伺服電機 西門子觸摸屏 西門子電纜 西門子變頻器 西門子模塊 聯系電話 13510737515 聯系手機 13185520415 聯系人 董海波 立即詢價 |
五、數據校驗方式
1.CRC:
CRC域是兩個字節,包含一16位的二進制值。它由傳輸設備計算后加入到消息中。接收設備重新計算收到消息的CRC,并與接收到的CRC域中的值比較,如果兩值不同,則有誤。
CRC是先調入一值是全“1”的16位寄存器,然后調用一過程將消息中連續的8位字節和當前寄存器中的值進行處理。僅每個字符中的8Bit數據對CRC有效,起始位和停止位以及 奇偶校驗位均無效。
CRC產生過程中,每個8位字符都單獨和寄存器內容相異或(XOR),結果向Zui低有效位方向移動,Zui高有效位以0填充。LSB被提取出來檢測,如果LSB為1,寄存器單獨和預置的值或一下,如果LSB為0,則不進行。整個過程要重復8次。在Zui后一位(第8位)完成后,下一個8位字節又單獨和寄存器的當前值相異或(XOR)。Zui終寄存器中的值,是消息中所有的字節都執行之后的CRC值。
CRC添加到消息中時,低字節先加入,然后高字節。
CRC-16錯誤校驗程序如下:報文(此處只涉及 數據位,不指起始位、停止位和任選的 奇偶校驗位)被看作是一個連續的二進制,其Zui高有效位(MSB)shouxuan發送。報文先與X↑16相乘(左移16位),然后看X↑16+X↑15+X↑2+1除,X↑16+X↑15+X↑2+1可以表示為二進制數11000,0000,0000,0101。整數商位忽略不記,16位余數加入該報文(MSB先發送),成為2個CRC校驗字節。余數中的1全部初始化,以免所有的零成為一條報文被接收。經上述處理而含有CRC字節的報文,若無錯誤,到接收設備后再被同一多項式(X↑16+X↑15+X↑2+1)除,會得到一個零余數(接收設備核驗這個CRC字節,并將其與被傳送的CRC比較)。全部運算以2為模(無進位)。
習慣于成串發送數據的設備會shouxuan送出字符的Zui右位(LSB-Zui低有效位)。而在生成CRC情況下,發送首位應是被除數的Zui高有效位MSB。由于在運算中不用進位,為便于操作起見,計算CRC時設MSB在Zui右位。生成多項式的位序也必須反過來,以保持一致。多項式的MSB略去不記,因其只對商有影響而不影響余數。
生成CRC-16校驗字節的步驟如下:
①裝如一個16位 寄存器,所有數位均為1。
②該16位寄存器的高位 字節與開始8位字節進行“異或”運算。運算結果放入這個16位寄存器。
③把這個16寄存器向右移一位。
④若向右(標記位)移出的數位是1,則生成多項式10,1000,000,0000,001和這個寄存器進行“異或”運算;若向右移出的數位是0,則返回③。
⑤重復③和④,直至移出8位。
⑥另外8位與該十六位寄存器進行“異或”運算。
⑦重復③~⑥,直至該 報文所有字節均與16位 寄存器進行“異或”運算,并移位8次。
⑧這個16位寄存器的內容即2字節CRC錯誤校驗,被加到報文的Zui高有效位。 另外,在某些非ModBus通信協議中也經常使用CRC16作為校驗手段,而且產生了一些CRC16的變種,他們是使用CRC16多項式X↑16+X↑15+X↑2+1,單首次裝入的16位寄存器為0000;使用CRC16的反序X↑16+X↑14+X↑1+1,首次裝入寄存器值為0000或FFFFH。CRC簡單函數如下:
2.LRC:
LRC錯誤校驗用于ASCII模式。這個錯誤校驗是一個8位二進制數,可作為2個ASCII十六進制字節傳送。把十六進制字符轉換成二進制,加上無循環進位的二進制字符和二進制補碼結果生成LRC錯誤校驗(參見圖)。這個LRC在接收設備進行核驗,并與被傳送的LRC進行比較,冒號(:)、回車符號(CR)、換行字符(LF)和置入的其他任何非ASCII十六進制字符在運算時忽略不計。
Modbus與PROFIBUS-DP協議比較
Modbus的協議內容是完全公開的,內容是簡單滴,實現起來是非常容易滴,單片機、PLC、DCS統統都能輕易實現。
Profibus則要復雜一些,關鍵是需要專用芯片進行二次開發,并且需要得到上級組織的認證,開發成本肯定高不少 。
當然從性能上講,基于串口的modbus rtu/ASCII通訊性能肯定比不過profibus dp,但是就一些儀表級的簡單通訊或者控制器級別的小數據量通訊,modbus是足以勝任的。說白了,就是modbus是*絲,profibus是高富帥!
聯系方式
- 電 話:13510737515
- 聯系人:董海波
- 手 機:13185520415
- 微 信:13185520415