| 品牌:安航牌 | 規(guī)格:MODBUS-RTU通訊協(xié)議簡介 | 材質(zhì):MODBUS-RTU通訊協(xié)議簡介 |
| 產(chǎn)地:安徽省天長市銅城鎮(zhèn)安樂工業(yè)園區(qū)2號 |

安徽藍(lán)普特種電纜集團(tuán)有限公司 【聯(lián)系電話:13965984935 0550-7531654 郭中清】
MODBUS 是MODICON公司先倡導(dǎo)的一種軟的通訊規(guī)約,經(jīng)過大多數(shù)公司
的實(shí)際應(yīng)用,逐漸被認(rèn)可,成為一種標(biāo)準(zhǔn)的通訊規(guī)約,只要按照這種規(guī)約進(jìn)行
數(shù)據(jù)通訊或傳輸,不同的系統(tǒng)就可以通訊。目前,在RS232/RS485通訊過程中,
更是廣泛采用這種規(guī)約。
常用的MODBUS 通訊規(guī)約有兩種,一種是MODBUS ASCII,一種是MODBUS RTU。
一般來說,通訊數(shù)據(jù)量少而且主要是文本的通訊則采用MODBUS ASCII規(guī)約,通訊數(shù)據(jù)數(shù)據(jù)量大而且是二進(jìn)制數(shù)值時(shí),多采用MODBUS RTU規(guī)約。
在實(shí)際的應(yīng)用過程中,為了解決某一個(gè)特殊問題,人們喜歡自己修改MODBUS規(guī)約來滿足自己的需要(事實(shí)上,人們經(jīng)常使用自己定義的規(guī)約來通訊,這樣能解決問題,但不太規(guī)范)。更為普通的用法是,少量修改規(guī)約,但將規(guī)約格式附在軟件說明書一起,或直接放在幫助中,這樣就方便了用戶的通訊。
MODBUS-RTU通訊協(xié)議簡介在本章主要講述如何利用軟件通過通訊口來操控該系列儀表。本章內(nèi)容的掌握需要您具有MODBUS協(xié)議的知識儲備并且通讀了本冊其它章節(jié)所有內(nèi)容,對本產(chǎn)品功能和應(yīng)用概念有較全面了解。本章內(nèi)容包括:MODBUS協(xié)議簡述,通訊應(yīng)用格式詳解,本機(jī)的應(yīng)用細(xì)節(jié)及參量地址表。 1.1 MODBUS協(xié)議簡述ACRXXXE系列儀表使 用的是MODBUS-RTU通訊協(xié)議,MODBUS協(xié)議詳細(xì)定義了校驗(yàn)碼、數(shù)據(jù)序列等,這些都是特定數(shù)據(jù)交換的必要內(nèi)容。MODBUS協(xié)議在一根通訊線上 使用主從應(yīng)答式連接(半雙工),這意味著在一根單獨(dú)的通訊線上信號沿著相反的兩個(gè)方向傳輸。首先,主計(jì)算機(jī)的信號尋址到一臺的終端設(shè)備(從機(jī)),然 后,終端設(shè)備發(fā)出的應(yīng)答信號以相反的方向傳輸給主機(jī)。MODBUS協(xié)議只允許在主機(jī)(PC,PLC等)和終端設(shè)備之間通訊,而不允許獨(dú)立的終端設(shè)備之間的數(shù)據(jù)交換,這樣各終端設(shè)備不會在它們初始化時(shí)占據(jù)通訊線路,而于響應(yīng)到達(dá)本機(jī)的查詢信號。 1.2 查詢—回應(yīng)周期 1.2.1 查詢查 詢消息中的功能代碼告之被選中的從設(shè)備要執(zhí)行何種功能。數(shù)據(jù)段包含了從設(shè)備要執(zhí)行功能的任何附加信息。例如功能代碼03是要求從設(shè)備讀保持寄存器并返回它 們的內(nèi)容。數(shù)據(jù)段包含要告之從設(shè)備的信息:從何寄存器開始讀及要讀的寄存器數(shù)量。錯(cuò)誤檢測域?yàn)閺脑O(shè)備提供了一種驗(yàn)證消息內(nèi)容是否正確的方法。1.2.2 回應(yīng)如 果從設(shè)備產(chǎn)生一正常的回應(yīng),在回應(yīng)消息中的功能代碼是在查詢消息中的功能代碼的回應(yīng)。數(shù)據(jù)段包括了從設(shè)備收集的數(shù)據(jù):如寄存器值或狀態(tài)。如果有錯(cuò)誤發(fā)生, 功能代碼將被修改以用于指出回應(yīng)消息是錯(cuò)誤的,同時(shí)數(shù)據(jù)段包含了描述此錯(cuò)誤信息的代碼。錯(cuò)誤檢測域允許主設(shè)備確認(rèn)消息內(nèi)容是否可用。 1.3 傳輸方式傳輸方式是指一個(gè)數(shù)據(jù)幀內(nèi)一系列獨(dú)立的數(shù)據(jù)結(jié)構(gòu)以及用于傳輸數(shù)據(jù)的有限規(guī)則,下面定義了與MODBUS 協(xié)議– RTU方式相兼容的傳輸方式。每個(gè)字節(jié)的位:· 1個(gè)起始位· 8個(gè)數(shù)據(jù)位,小的有效位先發(fā)送· 無奇偶校驗(yàn)位· 1個(gè)停止位錯(cuò)誤檢測(Error checking):CRC(循環(huán)冗余校驗(yàn)) 1.4 協(xié)議當(dāng)數(shù)據(jù)幀到達(dá)終端設(shè)備時(shí), 它通過一個(gè)簡單的“端口”進(jìn)入被尋址到的設(shè)備,該設(shè)備去掉數(shù)據(jù)幀的“信封”(數(shù)據(jù)頭),讀取數(shù)據(jù),如果沒有錯(cuò)誤,就執(zhí)行數(shù)據(jù)所請求的任務(wù),然后,它將自己 生成的數(shù)據(jù)加入到取得的“信封”中,把數(shù)據(jù)幀返回給發(fā)送者。返回的響應(yīng)數(shù)據(jù)中包含了以下內(nèi)容:終端從機(jī)地址(Address)、被執(zhí)行了的命令(Function)、執(zhí)行命令生成的被請求數(shù)據(jù)(Data)和一個(gè)校驗(yàn)碼(Check)。發(fā)生任何錯(cuò)誤都不會有成功的響應(yīng),或者返回一個(gè)錯(cuò)誤指示幀。 1.4.1 數(shù)據(jù)幀格式
| Address | Function | Data | Check |
| 8-Bits | 8-Bits | N x 8-Bits | 16-Bits |
1.4.2 地址(Address)域地址域在幀的開始部分,由 一個(gè)字節(jié)(8位二進(jìn)制碼)組成,十進(jìn)制為0~255,在我們的系統(tǒng)中只使用1~247,其它地址保留。這些位標(biāo)明了用戶指定的終端設(shè)備的地址,該設(shè)備將接 收來自與之相連的主機(jī)數(shù)據(jù)。每個(gè)終端設(shè)備的地址是的,僅僅被尋址到的終端會響應(yīng)包含了該地址的查詢。當(dāng)終端發(fā)送回一個(gè)響應(yīng),響應(yīng)中的從機(jī)地址數(shù)據(jù) 便告訴了主機(jī)哪臺終端正與之進(jìn)行通信。 1.4.3 功能(Function)域功能域代碼告訴了被尋址到的終端執(zhí)行何種功能。下表列出了該系列儀表用到的功能碼,以及它們的意義和功能。
| 代碼 | 意義 | 行為 |
| 03 | 讀數(shù)據(jù)寄存器 | 獲得一個(gè)或多個(gè)寄存器的當(dāng)前二進(jìn)制值 |
| 16 | 預(yù)置多寄存器 | 設(shè)定二進(jìn)制值到一系列多寄存器中(不對ACRXXXE開放) |
1.4.4 數(shù)據(jù)(Data)域數(shù)據(jù)域包含了終端執(zhí)行特定 功能所需要的數(shù)據(jù)或者終端響應(yīng)查詢時(shí)采集到的數(shù)據(jù)。這些數(shù)據(jù)的內(nèi)容可能是數(shù)值、參考地址或者設(shè)置值。例如:功能域碼告訴終端讀取一個(gè)寄存器,數(shù)據(jù)域則需要 指明從哪個(gè)寄存器開始及讀取多少個(gè)數(shù)據(jù),內(nèi)嵌的地址和數(shù)據(jù)依照類型和從機(jī)之間的不同內(nèi)容而有所不同。 1.4.5 錯(cuò)誤校驗(yàn)(Check)域該域允許主機(jī)和終端檢查傳 輸過程中的錯(cuò)誤。有時(shí),由于電噪聲和其它干擾,一組數(shù)據(jù)在從一個(gè)設(shè)備傳輸?shù)搅硪粋€(gè)設(shè)備時(shí)在線路上可能會發(fā)生一些改變,出錯(cuò)校驗(yàn)?zāi)軌虮WC主機(jī)或者終端不去響 應(yīng)那些傳輸過程中發(fā)生了改變的數(shù)據(jù),這就提高了系統(tǒng)的安全性和效率,錯(cuò)誤校驗(yàn)使用了16位循環(huán)冗余的方法(CRC16)。 1.5 錯(cuò)誤檢測的方法錯(cuò)誤校驗(yàn)(CRC)域占用兩個(gè)字節(jié),包含了一個(gè)16位的二進(jìn)制值。CRC值由傳輸設(shè)備計(jì)算出來,然后附加到數(shù)據(jù)幀上,接收設(shè)備在接收數(shù)據(jù)時(shí)重新計(jì)算CRC值,然后與接收到的CRC域中的值進(jìn)行比較,如果這兩個(gè)值不相等,就發(fā)生了錯(cuò)誤。CRC運(yùn)算時(shí),首先將一個(gè) 16位的寄存器預(yù)置為全1,然后連續(xù)把數(shù)據(jù)幀中的每個(gè)字節(jié)中的8位與該寄存器的當(dāng)前值進(jìn)行運(yùn)算,僅僅每個(gè)字節(jié)的8個(gè)數(shù)據(jù)位參與生成CRC,起始位和終止位 以及可能使用的奇偶位都不影響CRC。在生成CRC時(shí),每個(gè)字節(jié)的8位與寄存器中的內(nèi)容進(jìn)行異或,然后將結(jié)果向低位移位,高位則用“0”補(bǔ)充,低位 (LSB)移出并檢測,如果是1,該寄存器就與一個(gè)預(yù)設(shè)的固定值(0A001H)進(jìn)行一次異或運(yùn)算,如果低位為0,不作任何處理。上述處理重復(fù)進(jìn)行,直到執(zhí)行完了8次移位操作,當(dāng)后一位(第8位)移完以后,下一個(gè)8位字節(jié)與寄存器的當(dāng)前值進(jìn)行異或運(yùn)算,同樣進(jìn)行上述的另一個(gè)8次移位異或操作,當(dāng)數(shù)據(jù)幀中的所有字節(jié)都作了處理,生成的終值就是CRC值。生成一個(gè)CRC的流程為:1 預(yù)置一個(gè)16位寄存器為0FFFFH(全1),稱之為CRC寄存器。2 把數(shù)據(jù)幀中的第一個(gè)字節(jié)的8位與CRC寄存器中的低字節(jié)進(jìn)行異或運(yùn)算,結(jié)果存回CRC寄存器。3 將CRC寄存器向右移一位,高位填以0,低位移出并檢測。4 如果低位為0:重復(fù)第三步(下一次移位);如果低位為1:將CRC寄存器與一個(gè)預(yù)設(shè)的固定值(0A001H)進(jìn)行異或運(yùn)算。5 重復(fù)第三步和第四步直到8次移位。這樣處理完了一個(gè)完整的八位。6 重復(fù)第2步到第5步來處理下一個(gè)八位,直到所有的字節(jié)處理結(jié)束。7 終CRC寄存器的值就是CRC的值。此外還有一種利用預(yù)設(shè)的表格計(jì)算CRC的方法,它的主要特點(diǎn)是計(jì)算速度快,但是表格需要較大的存儲空間,該方法此處不再贅述,請參閱相關(guān)資料。 1.6 通訊應(yīng)用格式祥解本節(jié)所舉實(shí)例將盡可能的使用如圖所示的格式,(數(shù)字為16進(jìn)制)。安徽藍(lán)普特種電纜集團(tuán)有限公司【聯(lián)系電話:13965984935 0550-7531654 郭中清】
| Addr | Fun | Data start reg hi | Data start reg lo | Data #of regs hi | Data #of regs lo | CRC16 lo | CRC16hi |
| 01H | 03H | 00H | 00H | 00H | 03H | 05H | CBH |
Addr:從機(jī)地址Fun:功能碼Data start reg hi:數(shù)據(jù)起始地址 寄存器高字節(jié)Data start reg lo:數(shù)據(jù)起始地址 寄存器低字節(jié)Data #of reg hi:數(shù)據(jù)讀取個(gè)數(shù) 寄存器高字節(jié)Data #of reg lo:數(shù)據(jù)讀取個(gè)數(shù) 寄存器低字節(jié)CRC16 Hi: 循環(huán)冗余校驗(yàn) 高字節(jié)CRC16 Lo: 循環(huán)冗余校驗(yàn) 低字節(jié) 1.6.1 讀數(shù)據(jù)(功能碼03)l 查詢數(shù)據(jù)幀此功能允許用戶獲得設(shè)備采集與記錄的數(shù)據(jù)及系統(tǒng)參數(shù)。主機(jī)一次請求的數(shù)據(jù)個(gè)數(shù)沒有限制,但不能超出定義的地址范圍。下面的例子是從01號從機(jī)讀3個(gè)采集到的基本數(shù)據(jù)(數(shù)據(jù)幀中每個(gè)地址占用2個(gè)字節(jié))UA、UB、UC,其中UA的地址為0025H, UB的地址為0026H, UC的地址為0027H。安徽藍(lán)普特種電纜集團(tuán)有限公司【聯(lián)系電話:13965984935 0550-7531654 郭中清】
| Addr | Fun | Data startAddr hi | DatastartAddr lo | Data#ofregs hi | Data #ofregs lo | CRC16 lo | CRC16 hi |
| 01H | 03H | 00H | 25H | 00H | 03H | 14H | 00H |
l 響應(yīng)數(shù)據(jù)幀響應(yīng)包含從機(jī)地址、功能碼、數(shù)據(jù)的數(shù)量和CRC錯(cuò)誤校驗(yàn)。下面的例子是讀取UA、UB、UC (UA=082CH,UB=082AH,UC=082CH的響應(yīng)。安徽藍(lán)普特種電纜集團(tuán)有限公司 【聯(lián)系電話:13965984935 0550-7531654 郭中清】
| Addr | Fun | Byte count | Data1 hi | Data1 lo | Data2 hi | Data2 lo | Data3 hi | Data3 lo | CRC16 lo | CRC16 hi |
| 01H | 03H | 06H | 08H | 2CH | 08H | 2AH | 08H | 2CH | 94H | 4EH |
l 錯(cuò)誤指示碼如果主機(jī)請求的地址不存在則返回錯(cuò)誤指示碼:FFH。 1.6.2 預(yù)置多寄存器(功能碼16,不對ACRXXXE開放)l 查詢數(shù)據(jù)幀 功能碼16允許用戶改變多個(gè)寄存器的內(nèi)容,該儀表中系統(tǒng)參數(shù)、開關(guān)量輸出狀態(tài)等可用此功能號寫入。主機(jī)一次多可以寫入16個(gè)(32字節(jié))數(shù)據(jù)。 下面的例子是預(yù)置ACR220EK、ACR320EFK及ACR420EK地址都為1時(shí)同時(shí)輸出開關(guān)量Do1和Do2。ACR220EK:
| Addr | Fun | Data Start reg hi | Data start reg lo | Data #of regs hi | Data #of regs lo | Bytecount | Value hi | Value lo | CRC lo | CRC hi |
| 01H | 10H | 00H | 22H | 00H | 01H | 02 H | 30H | 00H | B4H | D2H |
ACR420EK:
| Addr | Fun | Data Start reg hi | Data start reg lo | Data #of regs hi | Data #of regs lo | Bytecount | Value hi | Value lo | CRC lo | CRC hi |
| 01H | 10H | 00H | 22H | 00H | 01H | 02 H | C0H | 00H | F0H | D2H |
ACR320EFK:安徽藍(lán)普特種電纜集團(tuán)有限公司 【聯(lián)系電話:13965984935 0550-7531654 郭中清】
| Addr | Fun | Data Start reg hi | Data start reg lo | Data #of regs hi | Data #of regs lo | Value hi | Value lo | CRC lo | CRC hi |
| 01H | 10H | 00H | 05H | 00H | 01H | 00H | C0H | 0DH | 96H |
l 響應(yīng)數(shù)據(jù)幀對于預(yù)置單寄存器請求的正常響應(yīng)是在寄存器值改變以后回應(yīng)機(jī)器地址、功能號、數(shù)據(jù)起始地址、數(shù)據(jù)個(gè)數(shù)(ACR320EFK為數(shù)據(jù)字節(jié)數(shù))、CRC校驗(yàn)碼。如圖。ACR220EK和ACR420EK:
| Addr | Fun | Data start reg hi | Data start reg lo | Data #of regs hi | Data #of regs lo | CRC16 lo | CRC16 hi |
| 01H | 10H | 00H | 22H | 00H | 01H | A1H | C3H |
ACR320EFK:
| Addr | Fun | Data start reg hi | Data start reg lo | Bytecount | CRC16 lo | CRC16 hi |
| 01H | 10H | 00H | 05H | 02H | 9FH | 91H |
l 錯(cuò)誤指示碼如果主機(jī)請求的地址不存在或數(shù)據(jù)個(gè)數(shù)不正確則返回錯(cuò)誤指示碼:FFH。 1.7 ACRXXXE的應(yīng)用細(xì)節(jié)及參量地址表該系列測量值用Modbus-RTU 通訊規(guī)約的03號命令讀出。通訊值與實(shí)際值之間的對應(yīng)關(guān)系如下表:(約定Val_t為通訊讀出值,Val_s為實(shí)際值)安徽藍(lán)普特種電纜集團(tuán)有限公司【聯(lián)系電話:13965984935 0550-7531654 郭中清】
| 適用參量 | 對應(yīng)關(guān)系 | 單位 |
| 電壓值UA、UB、UC | Val_s=(Val_t /10000)*(10^DPT) | 伏(V) |
| 電流值IA、IB、IC | 安培(A) | |
| 功率值PA、 PB、 PC、P、 QA、 QB、QC、Q | Val_s=(-1) (Val_t /10000)*(10^DPQ) | 瓦(W)、乏(Var) |
| 電度量一次側(cè)值EpI、 EpE、EqL、EqC | Val_s=Val_t*PT*CT | 瓦時(shí)(wh)乏時(shí)(varh) |
| 功率因數(shù)值PFA、PFB、PFC、PFS | Val_s=Val_t / 1000 | 無單位 |
| 頻率FR | Val_s=Val_t / 100 | 赫茲(Hz) |
范例:UA的通訊讀出值為08C6H(2246),DPT為5,則UA的實(shí)際值Va =(2246/10000)*(10^5) = 22.46KV。 IA的通訊讀出值為0FA0H(4000),DCT為3,則IA的實(shí)際值Ia =(4000/10000)*(10^3) = 400.0A。 幾點(diǎn)說明:1 數(shù)據(jù)類型:“BYTE”指1個(gè)字節(jié);“word” 指16位無符號整數(shù);“Integer”指16位有符號整數(shù);“Dword” 指32位無符號整數(shù),“Fword”指32位浮點(diǎn)數(shù)。2 讀寫屬性:“R”只讀,讀參量用03H號命令;“R/W”可讀可寫,寫系統(tǒng)參量用10H號命令。禁止向未列出的或不具可寫屬性的地址寫入。3 波特率的設(shè)定范圍4800 bps,9600 bps,19200 bps,38400 bps.在此范圍外的設(shè)定是不允許的。如果寫入超范圍的設(shè)定值,儀表會啟用默認(rèn)波特率:38400 bps。4 ACR320EFK所測電能值均為二次側(cè)電能。高字節(jié)在前,低字節(jié)在后,單位WH 或VARH, 統(tǒng)計(jì)一次側(cè)電能數(shù)據(jù)的時(shí)候,請乘以相應(yīng)的變比。例如10KV/100V,75A/5A 的儀表,請?jiān)谟?jì)量抄表的數(shù)據(jù)乘以PT=100和CT=15 的乘積1500。5 ACR320EFK 提供4 路開關(guān)量輸入功能和2路繼電器開關(guān)量輸出功能。4 路開關(guān)輸入是采用濕接點(diǎn)電阻開關(guān)信號輸入方式,儀表內(nèi)部配備+5V 的工作電源,無須外部供電。當(dāng)外部接通的時(shí)候,經(jīng)過儀表開關(guān)輸入模塊DI 采集其為接通信息、顯示為1;當(dāng)外部斷開的時(shí)候,經(jīng)過儀表開關(guān)輸入模塊DI 采集其為斷開信息、顯示為0。開關(guān)量輸入模塊不僅能夠采集和顯示本地的開關(guān)信息,同時(shí)可以通過儀表的數(shù)字接口RS485 實(shí)現(xiàn)遠(yuǎn)程傳輸功能,即“遙信”功能;2路繼電器輸出功能可用于各種場所下的報(bào)警指示、保護(hù)控制等輸出功能。在開關(guān)輸出有效的時(shí)候,繼電器輸出導(dǎo)通,顯示為1;開關(guān)輸出關(guān)閉的時(shí)候,顯示為0,繼電器輸出關(guān)斷。 6 ACRXXXE(K)電度一次側(cè)時(shí)的值采用浮點(diǎn)變量數(shù)據(jù)類型。它用符號位表示數(shù)的符號,用階碼和尾數(shù)表示數(shù)的大小。儀表采用的數(shù)據(jù)格式為IEEE754數(shù)據(jù)格式具有24位精度,尾數(shù)的高位始終為“1”,因而不保存,位的分布如下● 1位符號位;● 8位指數(shù)位;● 23位尾數(shù)。符號位是高位,尾數(shù)為低的23位,按字節(jié)描述如下:
| 地址 | +0 | +1 | +2 | +3 |
| 內(nèi)容 | SEEE EEEE | EMMM MMMM | MMMM MMMM | MMMM MMMM |
其中, S:符號位,1表示負(fù),0表示正;E:階碼(在兩個(gè)字節(jié)中)偏移為127;M:23位尾數(shù),高位為“1”。具體舉例如下:讀出0 10001110 100 1011 1010 1100 0000 0000B0 代表符號位,“1”為負(fù),“0”為正;10001110 為計(jì)算指數(shù),設(shè)為a, a為10進(jìn)制,a為142;100 1011 1010 1100 0000 0000 為計(jì)算尾數(shù),設(shè)為b,b為10進(jìn)制,b為4959232。計(jì)算公式: 一次側(cè)電量= 上例計(jì)算結(jié)果為: ==52140