在電子秤控制系統(tǒng)中廣泛使用的ModBus通信協(xié)議詳細介紹
在電子秤控制系統(tǒng)中廣泛使用的ModBus通信協(xié)議詳細介紹
在工業(yè)控制系統(tǒng)中廣泛使用的ModBus通信協(xié)議。以ModBus的ASCII方式為例,剖析了ModBus的指令結構,著重說明基于ModBus通信協(xié)議的設備之間如何進行數(shù)據(jù)通信、如何使用ModBus通信協(xié)議把電子秤接入PLC系統(tǒng),并簡單介紹了PLC系統(tǒng)與局域網(wǎng)的互聯(lián)。在衡器行業(yè)中,但凡涉及串行通信時,工程師們都會有一種無奈,就是通信協(xié)議問題。由于我國衡器廠眾多,各自采用自己的通信協(xié)議,使得通信協(xié)議五花八門,互不兼容。由于是自成一體,也為后續(xù)與其他系統(tǒng)聯(lián)網(wǎng)、維修、儀表配件互換等留有后遺問題。若采用一種工業(yè)控制領域的主流協(xié)議,各衡器廠的通信協(xié)議都與這個主流協(xié)議兼容,
那么上述問題自然迎刃而解。這個主流協(xié)議*ModBus
一、什么是ModBus
ModBus是一種通信協(xié)議,是由Modicon公司發(fā)表于1979年,主要用于PLC(可編程邏輯控制器)系
統(tǒng)。目前,在工業(yè)自動化設備通信連接中,ModBus已是相當常見的一種連接方式。
二、ModBus與其他通信協(xié)議比較
1、物理層簡單、價廉:ModBus可以在常用且廉價的RS232、RS485等物理媒介上運行,不像
CanBus、ProfiBus、BitBus等需昂貴的芯片支持。
2、免費:ModBus是一種公開的,可以無償使用的協(xié)議。而使用ProfiBus則需要向有關組織登
記繳費。
3、使用普及:ModBus是當前工業(yè)控制中使用zui廣的一種通信協(xié)議,基于這點,具有ModBus的設備
接入工控系統(tǒng)相對容易。
4、維護方便:由于接入ModBus總線相對其他工控總線而言,比較簡單。一般具有RS232、RS485
等串行口的PC機都可以接入,使用PC機自帶的超級終端軟件或其他串行控制軟件,就能觀察
ModBus通信過程,可以很方便地查出故障站點。
三、ModBus的主要型式
ModBus主要有四種型式:ASCII、RTU、TCP/IP和Plus。
1、ASCII型式:采用ASCII碼進行數(shù)據(jù)交換,使用縱向冗余校驗的校驗和(LRC)進行數(shù)據(jù)校驗。
2、RTU型式:采用二進制碼進行數(shù)據(jù)交換,使用循環(huán)冗余校驗的校驗和(CRC)進行數(shù)據(jù)校驗。
3、TCP/IP型式:主要用于以太網(wǎng),不使用校驗和進行數(shù)據(jù)校驗。
4、Plus型式:該型式為Modicon公司專有,采用專門的協(xié)處理器進行數(shù)據(jù)處理。
目前,使用zui廣泛的型式是ASCII和RTU,主要采用RS232、RS422、RS485進行物理連接,其中
RS485使用zui多。
四、ModBus的結構
ModBus協(xié)議是一個master(主)/slave(從)架構的協(xié)議。有一個節(jié)點是master節(jié)點,其他使用
Modbus協(xié)議參與通信的節(jié)點是slave節(jié)點。每一個slave設備都有一個*的地址。ModBus的通信比
較簡單,由master發(fā)通信指令,指令中含有欲于之通信的slave站號。當master發(fā)指令時,所有slave
都處于收聽狀態(tài),一旦slave收聽到與自己地址相同的站號時,立刻執(zhí)行指令的內(nèi)容,并回傳執(zhí)行的
結果。
五、ASCII型式的ModBus通信協(xié)議的格式
在ModBus上通信時,各站點的通信參數(shù)必須一致,如:波特率、奇偶校驗。
通信時,一個信息字節(jié)中的每8位分為兩個ASCII字符進行傳輸,允許字符傳輸間隔在1秒之內(nèi)。
1、ASCII型式每一字節(jié)的格式
16進制編碼,ASCII字符(0-9、A-F),即:0x30-0x39、0x41-0x46。
1位開始位、7位數(shù)據(jù)位(先低后高)、1位奇偶校驗(無奇偶校驗時為0)、1位停止位。
2、數(shù)據(jù)錯誤校驗采用縱向冗余校驗(LRC)
3、通信幀格式(ModBus命令格式)
一個基本的ModBus命令,除了開始、校驗、結束字符外,還必須有地址項及功能項。地址——也就
是站號,想要被操作的對象(slave站號);功能——想要被操作的對象完成的任務。ModBus命令可
以沒有數(shù)據(jù)項。
被操作的對象,在完成所要求的操作后,必須回傳一幀信息,傳遞操作結果?;貍餍畔⒌母袷脚c命
令格式相同,只是數(shù)據(jù)內(nèi)容為操作的結果。
六、利用ModBus,實現(xiàn)PLC與電子稱重設備的通信
為了使大家對Modbus有更進一步的了解,下面用例子方式說明如何把電子稱重設備接入PLC控制系
統(tǒng)的Modbus總線網(wǎng)絡。例子中的稱重儀表為上海彩信電子科技有限公司生產(chǎn)的XK311增強型儀
表。本例中,1臺PLC作為主機(master),10臺電子秤作為從機(slave),使用XK311增強型
儀表作為電子秤顯示儀表,從機地址為70、71、72、....79。通過RS485連接PLC和各儀表,采用
ModBus ASCII通信協(xié)議。PLC可以對各臺儀表進行置零、去皮、讀取重量等多項操作。
稱重系統(tǒng)示意圖如圖1所示,圖中的計算機是在系統(tǒng)調(diào)試時接入RS485總線的,用以觀察RS485中傳
輸?shù)臄?shù)據(jù),正常工作時是移除的。
上述系統(tǒng)可實現(xiàn)以下功能:
1、正常工作時,PLC每隔10秒輪詢一次,獲取每臺秤的重量。
2、當秤臺上重量異常時,PLC會發(fā)出警告信息,提示控制室人員注意。
3、控制人員可以通過PLC,對某臺秤發(fā)出置零、去皮等操作指令。
4、PLC可對各臺秤的稱量,進行各項統(tǒng)計,生成必要的統(tǒng)計報表。
七、ModBus與局域網(wǎng)互連
現(xiàn)在,很多PLC都具有局域網(wǎng)接口,通過該接口,就可以遠程控制稱重系統(tǒng)了。當然,也可以通過
接在Modbus總線上的PC機,利用PC機的軟、硬件資源,編制相應的軟件,將重量信號傳送到局域
網(wǎng)上。若局域網(wǎng)通過路由器接入因特網(wǎng),很顯然重量數(shù)據(jù)就可以在因特網(wǎng)上傳輸了。本系統(tǒng)是通過
PLC的DH+網(wǎng)絡接入局域網(wǎng)的。當然,網(wǎng)絡部分使用的協(xié)議,*TCP/IP、NetBEUI。
Modbus也有相關的TCP/IP型式,這里就不再贅述了,大家可以參考相關的書籍。
上述的稱重系統(tǒng)只是PLC的一個子系統(tǒng),是后期改造的一個項目。
是采用美國ROCKWELL公司的PLC,共有5臺PLC機箱(采用PLC5系列)、4臺工控機和2臺
服務器、若干臺PC組成的。PLC采用ROCKWELL公司的DH+網(wǎng)絡連接,使用DF1協(xié)議;其中1
臺PLC與稱重系統(tǒng)采用RS485連接,使用Modbus協(xié)議;DH+網(wǎng)絡通過1臺作為連接橋的工控機,
連入局域網(wǎng)。工控機上的監(jiān)控軟件是RSVIEW32,操作人員通過該軟件的人機界面,觀察各項數(shù)
據(jù),發(fā)出各項指令,當然也包括稱重數(shù)據(jù)及指令。另外,局域網(wǎng)上的PC機也安裝了RSVIEW32軟
件,只不過取消了操作指令,但可以通過該軟件觀察各項數(shù)據(jù),便于其他相關人員關注設備運行情
況。
八、結束語
本文簡單介紹了ModBus通信協(xié)議,例舉了電子秤采用RS485串行接口接入PLC系統(tǒng),用ModBus通
信協(xié)議,實現(xiàn)與PLC的實時通信。由于水平有限,如有錯誤的地方,望諒解。 PLC程序采用的是梯
形圖,其中有對串行口進行操作的梯形圖,設置圖中的相關屬性,如波特率、奇偶校驗,把相關的
Modbus操作命令寫入其中即可。有關PLC的編程請參閱ROCKWELL公
司的《PLC5指令系統(tǒng)與使用說明》。
關于XK311增強型儀表的ModBus協(xié)議及指令舉例,請看附錄。
附錄:
XK311增強型儀表的ModBus協(xié)議格式
首址:4個ASCII碼,讀寫數(shù)據(jù)的位置。
數(shù)據(jù)量:4個ASCII碼,讀寫數(shù)據(jù)的數(shù)量。
數(shù)據(jù)值:讀寫的數(shù)據(jù)。
校驗碼:2個ASCII碼,采用LRC校驗。
LRC校驗碼運算:報頭(:)不參與運算,LRC在數(shù)據(jù)之后,在\CR\LF之前。參加運算的是報頭之
后,LRC之前的所有數(shù)據(jù)。LRC為參加運算的數(shù)據(jù)之和的補碼,舍去進位。
當儀表執(zhí)行指令出錯時,會回傳錯誤碼,并將功能碼的zui高位置1。
錯誤碼:
00--接收到的功能碼出錯;
01--數(shù)據(jù)地址錯;
02--數(shù)據(jù)數(shù)量錯;
03--數(shù)據(jù)值錯,如:預置皮重大于zui大稱量FS;
04--稱量為負時去皮;
05--不在稱重狀態(tài)時置零;
06--稱量不穩(wěn)定時置零;
07--稱量>2%FS時置零;
08--稱量<-2%FS時置零。
接下來以地址為78(16進制為4E)號的儀表為例,詳述每條指令。PLC作為master,發(fā)送指令;電
子秤儀表作為slave,接收指令,并回傳執(zhí)行結果。
例中:站號4E,即78號;功能碼04表示要讀取重量數(shù)據(jù);儀表的重量數(shù)據(jù)專門放置在重量數(shù)據(jù)單
元,其地址從0000到0006,共7個字節(jié)。其中0000:狀態(tài)數(shù)據(jù);0001-0003:顯示值;0004-
0006:皮重值。讀取重量數(shù)據(jù)時,可以單獨讀,也可以2個一起讀或全部讀。首址0000表示從重量
數(shù)據(jù)的0000地址開始讀??;數(shù)據(jù)量0007表示共要讀取7字節(jié)數(shù)據(jù);校驗碼A7表示校驗和LRC=A7。
當PC發(fā)出指令后,每個從站儀表都會接收,只有與指令中的站號相同的儀表,才會響應,回傳
所需信息。
78號地址的儀表,收到上述指令后,會回傳“:4E0407120003E70000CAE1\CR\LF” 其中
“120003E70000CA”是PC想得到的78號站的重量信息。
12--狀態(tài)數(shù)據(jù),表示當前顯示為正、重量穩(wěn)定、顯示值是凈重,當前數(shù)據(jù)包含2位小數(shù);
0003E7--顯示值,同狀態(tài)數(shù)據(jù)結合考慮,即:當前的顯示是凈重9.99kg;
0000CA--皮重值,即:當前的皮重是2.02kg。
數(shù)據(jù)校驗:所有被參與校驗的數(shù)據(jù)+校驗碼=0(舍去進位)。