基于LabVIEW的Modbus協議兩種校驗碼的實現方法
介紹基于LabVIEW的Modbus協議兩種校驗碼的實現方法,該方法可在基于PC機的測控系統中加以實際運用。
關鍵詞:Modbus協議;LabVIEW;CRC校驗;LRC校驗
下面僅討論與本文有關的Modbus協議的內容。
1.1Modbus協議的數據傳輸方式
Modbus協議定義了兩種數據傳輸方式,即ASCII模式和RTU模式(表1、表2)。控制器可以設置為兩種傳輸方式(ASCII或RTU)中的任何一種,在標準的Modbus網絡中進行通信。用戶可選擇想要的模式,包括串口通信參數(波特率、檢驗方式等);在配置每個控制器的時候,在一個Modbus網絡上的所有設備都必須選擇相同的傳輸模式和串口參數。
1.1Modbus協議的數據傳輸方式
Modbus協議定義了兩種數據傳輸方式,即ASCII模式和RTU模式(表1、表2)。控制器可以設置為兩種傳輸方式(ASCII或RTU)中的任何一種,在標準的Modbus網絡中進行通信。用戶可選擇想要的模式,包括串口通信參數(波特率、檢驗方式等);在配置每個控制器的時候,在一個Modbus網絡上的所有設備都必須選擇相同的傳輸模式和串口參數。
?
1.2.1ASCII幀
使用ASCII模式,消息以冒號(:)字符(ASCII碼3AH)開始,以回車換行符結束(ASCII碼0DH,0AH)。
其他域可以使用的傳輸字符是十六進制的0…9,A…F。網絡上的設備不斷偵測“:”字符,當有一個冒號接收到時,每個設備都解碼下個域(地址域)來判斷是否發給自己。
消息中字符間發送的時間間隔最長不能超過1s,否則接收的設備將認為傳輸錯誤。一個典型消息幀如表3所示。
使用ASCII模式,消息以冒號(:)字符(ASCII碼3AH)開始,以回車換行符結束(ASCII碼0DH,0AH)。
其他域可以使用的傳輸字符是十六進制的0…9,A…F。網絡上的設備不斷偵測“:”字符,當有一個冒號接收到時,每個設備都解碼下個域(地址域)來判斷是否發給自己。
消息中字符間發送的時間間隔最長不能超過1s,否則接收的設備將認為傳輸錯誤。一個典型消息幀如表3所示。
?
?
選用ASCII模式作字符幀,錯誤檢測域包含兩個ASCII字符。這是使用LRC(縱向冗余檢測)方法對消息內容計算得出的,不包括開始的冒號符及回車換行符。LRC字符附加在回車換行符前面。?
1.3.2RTU模式
選用RTU模式作字符幀,錯誤檢測域包含一16Bits值(用兩個8位的字符來實現)。錯誤檢測域的內容是通過對消息內容進行循環冗余檢測得出的。CRC域附加在消息的最后,添加時先是低字節然后是高字節。故CRC高字節是發送消息的最后一個字節。
1.4Modbus的數據校驗方式
1.4.1CRC-16(循環冗余錯誤校驗)
冗余循環碼(CRC)包含2個字節,即16位二進制。CRC碼由發送設備計算,放置于發送信息的尾部。接收信息的設備再重新計算接收到信息的CRC碼,比較計算得到的CRC碼是否與接收到的相符,如果兩者不相符,則表明出錯。
在進行CRC碼計算時只用8位數據位。起始位、停止位、奇偶校驗位都不參與CRC碼計算。
計算CRC碼的步驟為:
① 預置16位寄存器為十六進制FFFF(即全為1)。稱此寄存器為CRC寄存器。
② 把第一個8位數據與16位CRC寄存器的低位相異或運算,把結果放于CRC寄存器。
③ 把寄存器的內容右移一位,用0填補最高位,檢查最低位。
④ 如果最低位為0:重復第3步,再次右移一位;如果最低位為1:CRC寄存器與多項式A001(1010 0000 0000 0001)進行異或運算。
⑤ 重復步驟③和④,直到右移8次,這樣整個8位數據全部進行了處理。
⑥ 重復步驟②到⑤,進行下個8位數據的處理。
⑦ 最后得到的CRC寄存器的值即為CRC碼。
⑧ 將CRC碼分成高8位和低8位,按低位在先,高位在后,將它們加到傳送數據之后。
1.4.2LRC(縱向冗余錯誤校驗)
LRC錯誤校驗用于ASCII模式。這個錯誤校驗碼是一個8位二進制數,可作為2個ASCII十六進制字節傳送。計算LRC碼時,僅設備地址、功能代碼、數據塊字節參加運算,而冒號(:)、回車符號(CR)、換行字符(LF)不參加運算。具體計算LRC碼的步驟為:
① 需運算的所有字節相加,所得之和丟棄進位。
② 將上步計算出的8位字節取反或由FFH減去該8位字節。
③ 將取反后的值加1即為LRC碼。
接收端判斷接收到的信息是否正確的簡單方法是:將除冒號(:)、回車符號(CR)、換行字符(LF)以外的所有字節,包括LRC碼相加并丟棄進位,若結果為0,則表明信息傳送正確,否則出錯。?
1.3.2RTU模式
選用RTU模式作字符幀,錯誤檢測域包含一16Bits值(用兩個8位的字符來實現)。錯誤檢測域的內容是通過對消息內容進行循環冗余檢測得出的。CRC域附加在消息的最后,添加時先是低字節然后是高字節。故CRC高字節是發送消息的最后一個字節。
1.4Modbus的數據校驗方式
1.4.1CRC-16(循環冗余錯誤校驗)
冗余循環碼(CRC)包含2個字節,即16位二進制。CRC碼由發送設備計算,放置于發送信息的尾部。接收信息的設備再重新計算接收到信息的CRC碼,比較計算得到的CRC碼是否與接收到的相符,如果兩者不相符,則表明出錯。
在進行CRC碼計算時只用8位數據位。起始位、停止位、奇偶校驗位都不參與CRC碼計算。
計算CRC碼的步驟為:
① 預置16位寄存器為十六進制FFFF(即全為1)。稱此寄存器為CRC寄存器。
② 把第一個8位數據與16位CRC寄存器的低位相異或運算,把結果放于CRC寄存器。
③ 把寄存器的內容右移一位,用0填補最高位,檢查最低位。
④ 如果最低位為0:重復第3步,再次右移一位;如果最低位為1:CRC寄存器與多項式A001(1010 0000 0000 0001)進行異或運算。
⑤ 重復步驟③和④,直到右移8次,這樣整個8位數據全部進行了處理。
⑥ 重復步驟②到⑤,進行下個8位數據的處理。
⑦ 最后得到的CRC寄存器的值即為CRC碼。
⑧ 將CRC碼分成高8位和低8位,按低位在先,高位在后,將它們加到傳送數據之后。
1.4.2LRC(縱向冗余錯誤校驗)
LRC錯誤校驗用于ASCII模式。這個錯誤校驗碼是一個8位二進制數,可作為2個ASCII十六進制字節傳送。計算LRC碼時,僅設備地址、功能代碼、數據塊字節參加運算,而冒號(:)、回車符號(CR)、換行字符(LF)不參加運算。具體計算LRC碼的步驟為:
① 需運算的所有字節相加,所得之和丟棄進位。
② 將上步計算出的8位字節取反或由FFH減去該8位字節。
③ 將取反后的值加1即為LRC碼。
接收端判斷接收到的信息是否正確的簡單方法是:將除冒號(:)、回車符號(CR)、換行字符(LF)以外的所有字節,包括LRC碼相加并丟棄進位,若結果為0,則表明信息傳送正確,否則出錯。?
遵照1.4.1節中計算CRC碼的步驟進行軟件設計如圖1所示。
相關推薦
LabVIEW實現modbus CRC校驗碼生成
最近在用LabVIEW編寫一個上位機界面,要求要用modbus通訊協議與下位機進行通信,現在根據材料編寫了一個crc校驗的子vi,試過能用了,有需要的可以直接下載去用。
2015-04-22 09:39:10
LabVIEW編程LabVIEW開發Modbus協議講解
LabVIEW編程LabVIEW開發Modbus協議講解Modbus是一種工業協議,于1979年開發,旨在實現自動化設備之間的通信。 Modbus最初是作為通過串行層傳輸數據的應用級協議實現的,現已
2022-01-25 20:23:07
MODBUS-RTU CR16校驗碼自動計算.VI。可自動添加至字符串末尾。
自動添加上校驗碼。MODBUS協議是通用的定制串口協議,能兼容國際上很多標準設備,用處還是很大滴~~~ps:串口數據記得用“字節數組至字符串”函數生成哦~
2014-07-15 18:51:43
MODBUS協議和RS485硬件電路兩者之間的聯系
文章目錄前言一、RS4851.介紹2.兩者之間的聯系二、通信格式1.MODBUS協議2.通信代碼總結前言Modbus 是屬于工業上常用的通訊協議,包括RTU、ASCII、TCP,其中
2021-11-30 07:41:24
ModBus CRC16校驗碼學習筆記(附手稿)精選資料分享
ModBus CRC16校驗碼學習筆記(附手稿)學習背景最近在玩輪轂電機的驅動控制,該電機配套的驅動器可以使用485或者CAN總線協議。該電機的485通信協議的報文中最后兩個字節按照某寶賣家
2021-08-30 06:28:27
Modbus庫開發筆記之十一:關于Modbus協議棧開發的說明
:Modbus協議在串行鏈路上的實現指南》GB/T 19582.3-2008 《基于Modbus協議的工業自動化網絡規范 第1部分:Modbus協議在TCP/IP上的實現指南》最后,歡迎大家使用這個協議棧,但我
2017-08-27 20:32:49
Modbus通訊協議的幾種實現方式
Modbus通訊的方式
針對Modbus的串口和TCP兩種不同的方式,在LabVIEW中通常可以通過以下幾種方法實現Modbus通訊。其中一些實現方式需要安裝LabVIEW 數據記錄與監控(DSC
2023-05-05 16:19:56
Modbus協議Modbus M16程序及Modbus協議文檔幾篇
,在幀收完了計算有點浪費且不好控制。Modbus協議英文Modbus協議中文Modbus協議介紹含流程圖,上面crc16程序中高低位反了,有點問題
2011-11-11 10:12:37
Modbus協議中文版
MODBUS標準分為三部分。第一部分(“Modbus協議規范”)描述了MODBUS 事物處理。第二部分(“MODBUS報文傳輸在TCP/IP上的實現指南”)提供了一個有助于開發者實現TCP/IP 上
2018-07-09 07:16:07
Modbus協議中文版(總共127頁pdf下載)
MODBUS標準分為三部分。第一部分(“Modbus協議規范”)描述了MODBUS 事物處理。第二部分(“MODBUS報文傳輸在TCP/IP上的實現指南”)提供了一個有助于開發者實現TCP/IP 上
2018-07-03 01:10:00
Modbus協議的理解
校驗碼(8位),校驗碼的范圍為由地址碼開始到數據區結束,不包含起始碼。
停止碼:數據格式的幀尾,用 “CR”(0DH),“LF”(0AH)表示(8位)
控制器在MODBUS網絡上以ASCII碼
2023-05-05 16:47:03
Modbus協議的相關資料推薦
一、基本概念Modbus協議是全球最早用于工業現場的總線規約,許多工業設備,包括PLC,DCS,智能儀表等都在使用此協議作為他們之間的通信標準。Modbus協議是一個請求/應答協議,發起請求的為
2021-11-29 06:58:41
Modbus協議相關資料推薦
,自帶原生接口和采集引擎 (gitee.com)目錄前言驅動目的適用范圍使用示例驅動代碼驅動解析前言Modbus協議是應用于電子控制器上的一種通用語言。通過此協議,控制器相互之間、控制器經由網絡例如以太網)和其它設備之間可以通信。它已經成為一...
2021-11-16 06:50:44
Modbus協議說明及VC代碼
來說,其中TCP和RTU協議非常類似,我們只要把RTU協議的兩個字節的校驗碼去掉,然后在RTU協議的開始加上5個0和一個6并通過TCP/IP網絡協議發送出去即可。所以在這里我僅介紹一下Modbus
2017-08-03 15:14:37
labview Modbus協議,將4個字節轉換為浮點;IEEE754;
的支持,自動CRC校驗,可以很方便的實現Modbus通信,支持串口和TCP兩種傳輸方式。如1圖所示。圖1 Modbus Master 選板如果是簡單的Modbus通信,沒有必要使用DSC工具。NI公司
2015-11-27 17:13:25
labview 與s7-200 串口通信 modbus協議
,PLC串口通信接線圖如下4. 使用串口調試助手,發送功能碼,實現通過modbus協議與PLC通信.例如 發送幀 01 05 00 00 FF 00 8C 3A.功能說明 置位 Q0.0.發送幀 01
2016-04-14 15:15:34
labview 中MODBUS校驗碼計算方法字符串
字符串互聯后通過MODBUS校驗碼校驗程序,發出的數據不正確,但是我把需要校驗的數據直接填在MODBUS校驗碼校驗程序內部,數據是正確的,原因在哪呢?
2020-05-20 19:16:14
labview與rs485通信的modbus協議
labview與rs485通信的modbus協議編程怎么用,知道有mdbus模塊,但是網上例程少而且特別簡單所以,想看看大家是怎么利用這個modbus協議的
2017-05-18 08:54:45
modbus三種通訊方式的字符介紹
Modbus協議分為三種通信方式:Modbus RTU、Modbus ASCII以及Modbus TCP。首先,Modbus TCP的通信格式和Modbus RTU非常相似,唯一的差別
2019-04-27 06:00:00
modbus協議筆記
1 Modbus協議概要? Modbus通信協議由Modicon公司(現在的施耐德電氣Schneider Electric)于1979年為可編程邏輯控制(即PLC)通信而發表。目前,Modbus
2021-07-02 07:17:37
校驗碼碼距是如何去定義的
嵌入式系統設計師學習筆記⑨:校驗碼碼距的定義:一個編碼系統的碼距就是整個編碼系統中任意(所有)兩個碼字(合法編碼)的最小距離。例如:要對A,B兩個字母進行編碼若用1位長度的二進制編碼,若A=1,B
2021-12-22 07:21:56
PIC單片機與觸摸屏串行通信的MODBUS協議實現
介紹一種在PIC單片機與觸摸屏之間采用MODBUS協議實現異步串行通信的方法.簡單介紹了MODBUS通信協議,給出了硬件電路連接圖程序流程圖以及用PIC單片機C語言編寫的部分通信程序.實際使用證明該方法數據傳輸穩定可靠并提供了良好的人機交互環境.
2011-03-07 12:52:57
RS485和Modbus通信協議讓工業自動化更高效
00 00 00 01是Modbus RTU協議的通信格式,后面兩位C4和0B即為CRC校驗碼。
接收端接收到的數據包:01 03 02 00 01 39 3E
該數據包中,前6位01 03
2023-05-05 16:25:31
RT-Thread freemodbus協議的移植實現
。modbus功能碼:0x10使用modbus slave,模擬modbus從機運行:mb_master_samlpefreemodbus主機,功能驗證正常。使用現有的modbus協議,熟悉modbus協議的實現、移植。熟悉基于uart的 freemodbus主機的移植。原作者:張世爭
2022-04-29 14:40:29
dfplayer mini播放模塊校驗碼怎么計算
產品說明如下:鏈接根據官方說明,可以用串口發送命令來控制模塊的工作,串口指令需要兩位的校驗碼,琢磨好久,都算不對,后來發現是文檔標識錯誤。按圖片所寫,即可算出校驗碼。
2022-01-07 07:16:34
【原創】白話文講解ModBus協議
串行傳輸還有兩種模式,RTU模式和ASCII模式。我們先來了解一下RTU模式:對于報文格式就是上面這樣的,子節點收到信息先解析是否是自己節點,然后對校驗做出比對處理。然后就是上層的功能碼和數據的處理
2021-08-03 11:04:20
一文讀懂Modbus協議
1、Modbus是什么? Modbus協議,從字面理解它包括Mod和Bus兩部分,首先它是一種bus,即總線協議,和I2C、SPI類似,總線就意味著有主機,有從機,這些設備在同一條總線
2022-10-28 14:23:43
什么是Modbus協議?如何寫穩定的Modbus代碼?
什么是Modbus協議?Modbus協議有哪些分類?使用Modbus時有哪些注意事項?如何寫穩定的Modbus代碼?
2021-07-02 06:54:34
臺達PLC通信支持modbus協議的4號功能碼嗎?
使用modbus協議的4號功能碼采集PH值,系統部署如下圖:本來這是個很簡單的項目,可是在PLC的通訊編程中出現了問題,DW-MC1無線監控器采樣modbus協議的4號功能碼(讀輸入寄存器)來采集遠程的4~20mA信號
2014-05-22 11:18:03
哪位大神能給個labview利用modbus協議進行串口通訊的例程啊?
本帖最后由 tianbowen1234 于 2016-6-13 15:13 編輯
我現在要實現的,僅僅是通過RS232串口利用modbus協議傳輸數據,不是控制PLC。 之前無論是從論壇還是
2016-06-13 15:10:50
基于modbus協議的空間分布式溫濕度測控系統設計
討論通過基于Modbus協議的485網絡來實現溫濕度的采集與控制的具體方法。文章根據項目中的具體操作,給出了系統硬件、嵌入式軟件、PC機軟件等各個環節的具體實現方法,以便于設計者在開發應用中作為
2018-11-14 15:04:04
實用資料——CRC校驗碼生成算法
按上述步驟計算完成后,最后得到的CRC寄存器的內容即為CRC校驗碼,將其附著在原通訊信息幀后進行傳輸即可。如果用于Modbus協議設備則還需交換高低8位,非Modbus協議設備可以不必交換。接收方依
2012-01-11 21:10:42
實用資料——CRC校驗碼生成算法
按上述步驟計算完成后,最后得到的CRC寄存器的內容即為CRC校驗碼,將其附著在原通訊信息幀后進行傳輸即可。如果用于Modbus協議設備則還需交換高低8位,非Modbus協議設備可以不必交換。接收方依
2012-02-14 19:45:06
怎么看這款單片機的校驗碼是多少呢
很久以前寫的程序,由于程序有很多版本,所以想看一下最終版的程序校驗碼來確定最終的程序。請問如何用燒錄器來看校驗碼呢我開始是直接用CSWrite來read chip看看單片機的校驗碼但是最后發現每一個的校驗碼都是FFFF,就很奇怪,想問一下怎么看校驗碼
2020-07-01 16:16:01
淺析ModBus通信協議的相關知識
端發出數據請求消息,Slave端接收到正確消息后就可以發送數據到Master端以響應請求;Master端也可以直接發消息修改Slave端的數據,實現雙向讀寫。
Modbus協議需要對數據進行校驗
2023-05-05 15:51:17
利用Modbus 協議實現無線通信
本文介紹了Modbus 的控制網絡及協議特點,著重分析Modbus ACSII 模式的消息幀組成、校驗碼的計算及主要的功能。并對利用Modbus 協議實現遠程無線通信的有關要點作了說明。
2009-06-11 09:42:5411
電話網遠程通信中CRC校驗碼的設計及實現
本文介紹了基于電話網遠距離分布式測控系統的通信方法,重點介紹了傳輸協議中CRC 循環校驗碼校驗原理,CRC 碼的生成、檢測方法及其在Dephi 環境中的實現,并給出了實例。
2009-08-12 10:24:2118
奇偶校驗碼,奇偶校驗碼原理是什么?
奇偶校驗碼,奇偶校驗碼原理是什么?
奇偶校驗碼是奇校驗碼和偶校驗碼的統稱,是一種最基本的檢錯碼。它是由n-1位信息元和1位校驗元組成,可
2010-03-17 17:39:1261481
一種MODBUS協議實現方法
針對無損探傷試驗儀中變頻器通信問題,依據MODBUS協議規定,利用RealView MDK開發了基于ARM Cortex-M3微控制器的嵌入式軟件,實現了與變頻器的MODBUS通信,完成變頻調速的運動控制功能。
2011-07-19 10:16:294796
Modbus協議在永磁同步電動機伺服系統中的應用
摸屏常常用作永磁同步伺服系統中的控制器,通過 Modbus通信協議 與驅動器進行數據交換。文章針對觸摸屏的主要功能,詳細介紹了Modbus協議中常見功能的實現、CRC一16校驗碼的生成,然
2011-08-15 14:17:5242
基于LabVIEW的Modbus協議兩種校驗碼的實現方法
2012-05-14 23:08:3418
Modbus協議的介紹和應用及錯誤檢查方法的資料說明
本文檔的主要內容詳細介紹的是Modbus協議的介紹和應用及錯誤檢查方法的資料說明包括了:1.介紹 Modbus 協議介紹 2. 兩種串行傳輸模式 3. 信息幀 4. 錯誤檢查方法
2019-05-10 08:00:002
采用LabVIEW實現Modbus通訊協議的方式
針對Modbus的串口和TCP兩種不同的方式,在LabVIEW中通常可以通過以下幾種方法實現Modbus通訊。其中一些實現方式需要安裝LabVIEW 數據記錄與監控(DSC)模塊.
2020-01-16 17:22:0016063
基于Modbus協議通訊的DEMO稱重程序
EMERSONEV1000/EV2000變頻器與MITSUBISHFX2PLC基于Modbus協議通訊的DEMO程序一、硬件連接二、通訊方式Modbus協議,ASCII格式,LRC校驗;主從方式
2022-02-14 10:05:01831
EtherCAT協議和Modbus協議在風電領域
Modbus協議還可以與其他工業自動化協議進行集成,例如Ethernet/IP、Profinet等,以實現更高效和可靠的數據傳輸和控制。在風電領域,EtherCAT協議和Modbus協議都有其獨特
2023-12-22 15:03:07155
modbus協議與485協議區別
Modbus協議與485協議是工業通信領域中常用的兩種協議,它們在不同的層面上具有不同的功能和設計理念。本文將對Modbus協議與485協議在協議層面、物理層面、數據傳輸方式、使用場景等方面的區別
2024-01-11 11:06:031634
modbus協議功能碼分類 modbus協議功能碼是什么,有什么作用
Modbus協議是一種用于工業領域常見的通信協議,它基于主從結構,用于在不同設備之間實現數據交換。Modbus協議的功能碼是決定數據交換類型和操作的重要部分。下面將詳細介紹Modbus協議功能
2024-01-31 14:47:14749
評論
查看更多