技術頻道

娓娓工業(yè)
您現在的位置: 中國傳動網 > 技術頻道 > 應用方案 > 世紀星組態(tài)軟件標準Modbus協議驅動揭秘(一)

世紀星組態(tài)軟件標準Modbus協議驅動揭秘(一)

時間:2010-03-24 10:07:15來源:ronggang

導語:?MODBUS協議采用主從(master-slave)技術,是一種問答方式的通信協議。每次通信均由主機發(fā)出數據請求信息,從機接收到正確消息后就可以發(fā)送數據到主機以響應請求

  MODBUS協議是莫迪康公司1978年發(fā)明用于電子控制器進行控制和通信的協議。不同廠商生產的符合MODBUS協議的控制設備可以連成工業(yè)網絡,進行集中監(jiān)控。MODBUS協議采用主從(master-slave)技術,是一種問答方式的通信協議。每次通信均由主機發(fā)出數據請求信息,從機接收到正確消息后就可以發(fā)送數據到主機以響應請求;主機也可以直接發(fā)信息修改從機的數據,實現雙向讀寫。

      在具體介紹Modbus協議之前,先向大家簡單介紹一下設備中的數據如何存儲。我們常把設備中存儲數據的單元稱為寄存器,按照存儲數據的類型可以分為位寄存器和16位寄存器兩種,如圖1所示:

存儲數據的類型

圖1

  位寄存器的容量為1位,16位寄存器的容量為16位,每一個存儲數據的寄存器都有一個對應的寄存器地址,Modbus協議就是根據寄存器地址來查詢數據或者設置數據到特定的寄存器中。如圖1所示,位寄存器用來存儲離散值,即開關量;16位寄存器用來存儲16位整數,16位寄存器里的數據既可以獨立表示一個16位整數,也可以用兩個連續(xù)的16位寄存器表示32位整型或實型的數據,低地址存放低16位,高地址存放高16位。

  接下來詳細介紹Modbus協議。Modbus協議分為三種通信方式:Modbus RTU、Modbus ASCII以及Modbus TCP。

  首先,Modbus TCP的通信格式和Modbus RTU非常相似,唯一的差別只是Modbus RTU最后帶兩個字節(jié)的CRC校驗,而Modbus TCP沒有。

  其次,Modbus ASCII的通信格式與Modbus RTU其實“神合貌離”,就是把Modbus RTU的每一個字節(jié)(例如:27H)高四位(2)和低四位(7)拆分為兩個字節(jié),并以ASCII碼的方式表現出來(32 37),再給命令幀分別加上起始符和結束符便可以,當然Modbus RTU和Modbus ASCII的校驗的方式不同,這里暫不詳述,所以同一條命令用Modbus RTU方式和Modbus ASCII方式表現出來,雖然在命令長度的上有很大的區(qū)別,但其實際表達的意思卻是一樣。

  下面就以Modbus RTU為例,詳細表述世紀星組態(tài)軟件是如何讀取設備中的數據,并且將數據設置到設備中。

  1.讀數據:

  上位機發(fā)送命令:02 03 00 05 00 02 D4 39

  設備返回的數據:02 03 04 20 08 20 10 49 3D

  之前沒有接觸過Modbus RTU協議的朋友們看了上面列出的數據,會稍有不解,這里為大家詳細解釋一下。

  1)發(fā)送的命令:

  第一個字節(jié):02,它表示的是設備地址。在同一條485總線上,可能會接多個設備,而這個設備地址就相當于每一個設備的標識,繼而決定每一個設備的設備地址在同一條總線上必須是唯一。

  第二個字節(jié):03,這個字節(jié)是功能碼字節(jié),作用就是告訴設備,上位機想要讀取的是什么樣的數據,世紀星組態(tài)軟件支持的讀數據的功能碼有:01H、02H、03H和04H,具體含義請參照表1。

表1

  第三第四個字節(jié):00 05,表示的是一個寄存器地址,它告訴設備上位機想要讀取的數據,是從寄存器地址5開始的一個或多個寄存器里的數據。

  第五第六個字節(jié):00 02,表示的是讀取寄存器的個數,結合第三第四個字節(jié),就是告訴設備,上位機想要讀取的數據是從寄存器地址5開始的2個寄存器里的數據,即寄存器地址為5和6的寄存器里的數據。

  第七第八個字節(jié):D4 39,是CRC校驗碼,不論是讀數據還是設置數據,發(fā)送和返回命令里的最后兩個字節(jié)都是CRC校驗碼,具體的計算方法這里暫不詳述。

  2)返回的數據:

  第一個字節(jié):02,表示設備地址,作用同發(fā)送命令中第一個字節(jié)02。

  第二個字節(jié):03,表示功能碼,作用同發(fā)送命令中第二個字節(jié)03。

  第三個字節(jié):04,表示返回有效數據的字節(jié)個數,這里要說明一下的是對于位寄存器(包括表1中的線圈狀態(tài)和輸入狀態(tài)),每一個寄存器的容量只有一位,如果上位機發(fā)送的命令中要求連續(xù)讀8個位寄存器(即發(fā)送命令中的第五第六個字節(jié)為00 08),設備返回的數據中的第三個字節(jié)只為1,因為一個字節(jié)的容量為8位,可以表示8個位寄存器的狀態(tài)。而對于表1中的保持寄存器和輸入寄存器,每一個寄存器的容量為16位,它可以表示一個16位的整型數據,或者一個32位整型或實型數據的高16位或低16位。所以設備回傳一個保持寄存器或輸入寄存器的數據需要兩個字節(jié),這就解釋了發(fā)送命令中要求讀取2個保持寄存器的數據,設備返回的有效數據為4個字節(jié)。

  緊跟在第三個字節(jié)后面的4個字節(jié)的數據便是設備返回的有效數據,結合發(fā)送的命令,我們可知在寄存器地址為0005H的寄存器中存儲的數據為2008H(十進制為8200),寄存器地址為0006H的寄存器中存儲的數據為2010H(十進制為8208)。

  第八第九個字節(jié):49 3D,是CRC校驗碼。

  2. 寫數據

  1)寫位寄存器

  上位機發(fā)送命令:02 05 00 05 FF 00 9C 08

  設備返回的數據:02 05 00 05 FF 00 9C 08

  第一個字節(jié):02,表示設備地址,這里就不做重復介紹。

  第二個字節(jié):05,為功能碼字節(jié),05號功能碼的作用為強置一個位寄存器的0/1(ON/OFF)狀態(tài)。

  第三第四個字節(jié):0005,表示的是上位機發(fā)送命令所強置的寄存器的地址。

  第五第六個字節(jié):FF00H,表示上位機要將地址為5的位寄存器強置為1,當強置為0時,第五第六個字節(jié)為:00 00。

  第七第八個字節(jié):9C 08,為CRC校驗字節(jié)。

  設備正常返回時,返回的數據與上位機發(fā)送的命令是完全一致的。

  2)寫單個16位寄存器

  上位機發(fā)送命令:02 06 00 05 00 12 19 F5

  設備返回的數據:02 06 00 05 00 12 19 F5

  第一個字節(jié):02,表示設備地址。

  第二個字節(jié):06,為功能碼字節(jié),06號功能碼的作用為預置單個16位寄存器。

  第三第四個字節(jié):0005,表示的是上位機發(fā)送命令所預置的寄存器的地址。

  第五第六個字節(jié):0012H,表示上位機要將地址為5的16位寄存器預置為12H(十進制為18)。

  第七第八個字節(jié):19 F5,為CRC校驗字節(jié)。

  設備正常返回時,返回的數據與上位機發(fā)送的命令完全一致。

  3)寫多個16位寄存器

  上位機發(fā)送命令:02 10 00 06 00 02 04 01 02 00 00 DC FD

  設備返回的數據:02 10 00 06 00 04 21 F8

  發(fā)送的命令:

  第一個字節(jié):02,表示設備地址。

  第二個字節(jié):10H(十進制為16),為功能碼字節(jié),10H號功能碼的作用為預置多個16位寄存器。

  第三第四個字節(jié):0006,表示的是上位機發(fā)送命令所預置的多個寄存器的起始地址為0006H。

  第五第六個字節(jié):0002,表示上位機要連續(xù)預置連續(xù)的兩個寄存器。

  第七個字節(jié):04,表示后面跟著的4個字節(jié)數據是要預置到指定寄存器中去的。

  緊跟在第七個字節(jié)后的四個字節(jié)便是要預置到指定寄存器中的數據,結合前面的信息,我們知道這條命令是要將0102H(十進制為258)預置到地址為6的寄存器中,0000H預置到地址為7的寄存器中。

  最后兩個字節(jié):9C08,為CRC校驗字節(jié)。

  返回的數據:

  第一個字節(jié):02,表示設備地址。

  第二個字節(jié):10H(十進制為16),為功能碼字節(jié)。

  第三第四個字節(jié):0006,表示的是上位機發(fā)送命令所預置的多個寄存器的起始地址位0006H。

  第五第六個字節(jié):0004,表示上位機預置了連續(xù)的兩個寄存器即4個字節(jié)的有效數據。

  第七第八個字節(jié):19 F5,為CRC校驗字節(jié)。

  無論是強制位寄存器還是預置16位寄存器,設備返回數據的作用僅僅是告訴上位機數據已經成功設置到設備寄存器中了。

標簽:

點贊

分享到:

上一篇:世紀星組態(tài)軟件在鍋爐液位控...

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(m.u63ivq3.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。

本網轉載并注明其他來源的稿件,均來自互聯網或業(yè)內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

網站簡介|會員服務|聯系方式|幫助信息|版權信息|網站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網-工業(yè)自動化與智能制造的全媒體“互聯網+”創(chuàng)新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號