|
引言
隨著工業自動化的發展,MODBUS成(cheng)為(wei)了(le)工(gong)業(ye)控(kong)製(zhi)係(xi)統(tong)中(zhong)的(de)一(yi)種(zhong)通(tong)用(yong)協(xie)議(yi)。由(you)於(yu)該(gai)協(xie)議(yi)的(de)簡(jian)單(dan)且(qie)通(tong)用(yong),得(de)到(dao)了(le)眾(zhong)多(duo)儀(yi)表(biao)廠(chang)商(shang)的(de)支(zhi)持(chi),成(cheng)為(wei)儀(yi)表(biao)及(ji)智(zhi)能(neng)終(zhong)端(duan)的(de)一(yi)項(xiang)工(gong)業(ye)標(biao)準(zhun),在(zai)工(gong)業(ye)監(jian)控(kong)係(xi)統(tong)中(zhong)得(de)到(dao)了(le)廣(guang)泛(fan)的(de)應(ying)用(yong)。通(tong)過(guo)此(ci)協(xie)議(yi),控(kong)製(zhi)器(qi)相(xiang)互(hu)之(zhi)間(jian)、控製器經由網絡(例如以太網)和其它設備之間可以進行通信。它的開放性、kekuochongxinghebiaozhunhuashibutongchangshangshengchandekongzhishebeikeyijiandankekaodilianchenggongyewangluo,jinxingxitongdejizhongjiankong,congerchengweizuiliuxingdexieyizhiyi。tongyang,shijixingzutairuanjianyetigonglezhichishangweijihexiaweishebeijinxingMODBUS通信的驅動程序,使用戶可以方便使用裝有世紀星軟件的上位機和下位的設備進行通信。
MODBUS通信協議
MODBUS協議是莫迪康公司1978年發明的一種用於電子控製器進行控製和通信的協議。此協議支持傳統的RS232、RS422、RS485標準和以太網設備。不同廠商生產的符合MODBUS協議的控製設備可以連成工業網絡,進行集中監控。MODBUS協議采用主從(master-slave)技術,是一種問答方式的通信協議。每次通信均由主機發出數據請求信息,從機接收到正確消息後就可以發送數據到主機以響應請求;主機也可以直接發信息修改從機的數據,實現雙向讀寫。
MODBUS協議支持兩種數據傳送模式,即ASCII碼和MODBUS-RTU。
(1)MODBUS-RTU
表1 主機詢問數據幀報文

表2從機回答數據幀報文

(2)ASCII碼
表3主機詢問數據幀報文

表4從機回答數據幀報文

MODBUS在世紀星中的應用
在世紀星中,除了支持MODBUS-RTU和ASCII碼兩種數據傳送模式外,還支持MODBUS TCP/IP 傳送方式。事實上,MODBUS TCP/IP的命令格式和MODBUS-RUT是很相似的,MODBUS TCP/IP隻是缺少兩個字節的CRC校驗。在MODBUS協議中,是根據不同的功能碼來完成不同的讀寫功能的,世紀星中支持的功能碼及其功能如表5所示:
表5 世紀星所支持的功能碼

在(zai)硬(ying)件(jian)設(she)備(bei)中(zhong),數(shu)據(ju)存(cun)儲(chu)在(zai)寄(ji)存(cun)器(qi)內(nei),每(mei)個(ge)存(cun)儲(chu)數(shu)據(ju)的(de)寄(ji)存(cun)器(qi)對(dui)應(ying)一(yi)個(ge)寄(ji)存(cun)器(qi)地(di)址(zhi),上(shang)位(wei)機(ji)就(jiu)是(shi)根(gen)據(ju)這(zhe)些(xie)地(di)址(zhi)組(zu)織(zhi)命(ming)令(ling)去(qu)讀(du)寫(xie)寄(ji)存(cun)器(qi)裏(li)的(de)數(shu)據(ju)。一(yi)個(ge)兩(liang)個(ge)字(zi)節(jie)的(de)整(zheng)型(xing)數(shu)據(ju)存(cun)儲(chu)在(zai)一(yi)個(ge)寄(ji)存(cun)器(qi)地(di)址(zhi)中(zhong),一(yi)個(ge)四(si)字(zi)節(jie)的(de)整(zheng)型(xing)或(huo)浮(fu)點(dian)型(xing)數(shu)據(ju)則(ze)要(yao)存(cun)儲(chu)在(zai)連(lian)續(xu)的(de)兩(liang)個(ge)寄(ji)存(cun)器(qi)地(di)址(zhi)中(zhong),通(tong)常(chang)都(dou)是(shi)高(gao)地(di)址(zhi)存(cun)放(fang)數(shu)據(ju)的(de)高(gao)字(zi),低(di)地(di)址(zhi)存(cun)放(fang)數(shu)據(ju)的(de)低(di)字(zi)。
由於很多用MODBUS協xie議yi的de儀yi表biao廠chang家jia都dou在zai以yi自zi己ji的de方fang式shi來lai說shuo明ming儀yi表biao上shang的de參can數shu以yi及ji它ta對dui應ying的de寄ji存cun器qi地di址zhi,所suo以yi一yi部bu分fen廠chang家jia是shi以yi十shi六liu進jin製zhi來lai標biao記ji寄ji存cun器qi地di址zhi,而er另ling一yi部bu分fen廠chang家jia用yong十shi進jin製zhi。為wei了le使shi用yong戶hu在zai工gong程cheng裏li建jian立li變bian量liang時shi方fang便bian的de和he儀yi表biao上shang的de寄ji存cun器qi連lian接jie,世shi紀ji星xing分fen別bie在zaiMODBUS-RTU和ASCII碼(ma)兩(liang)種(zhong)通(tong)信(xin)方(fang)式(shi)下(xia),支(zhi)持(chi)十(shi)六(liu)進(jin)製(zhi)通(tong)道(dao)號(hao)和(he)十(shi)進(jin)製(zhi)通(tong)道(dao)號(hao)兩(liang)種(zhong)變(bian)量(liang)連(lian)接(jie)方(fang)式(shi),因(yin)此(ci),就(jiu)免(mian)去(qu)了(le)用(yong)戶(hu)做(zuo)很(hen)多(duo)的(de)十(shi)六(liu)進(jin)製(zhi)和(he)十(shi)進(jin)製(zhi)之(zhi)間(jian)轉(zhuan)換(huan)的(de)工(gong)作(zuo)。
在設備的說明書中,一般會指定寄存器地址,數據類型,該地址的寄存器支持的功能碼等要素,以MODBUS-RTU 十六進製的驅動為例,如果寄存器地址為0005H,數據類型為兩個字節的整形,支持03H功能碼讀數據,則對應到世紀星軟件中需要連接的變量為4x0005,變量類型為I/O整數,數據類型可以分為有符號的INT或無符號的UINT 或者BCD碼,在進行通信時,世紀星發送的以及設備返回的命令如下表所示:
主機發送:

從機返回:

由設備返回的命令,可以知道設備返回了兩個字節的有效數據(00 1A),則寄存器地址為0005H裏的數據為001AH=26。
如果寄存器地址為0009H,數據類型為兩個字節的整型,支持06H功能碼寫數據,則對應到世紀星軟件中需要連接的變量為4x0009,變量類型為I/O整數,數據類型可以為有符號的INT或無符號的UINT 或者BCD碼,在通信時,世紀星發送的以及設備返回的命令如下表所示(寫入數據258=0102H):
主機發送:

從機返回:

經過發送上表中的命令,0102H便成功寫入到寄存器地址為0009H號的寄存器中。
如果寄存器地址為0010H,數據類型為四個字節的整型或浮點型,支持10H功能碼寫數據,則對應到世紀星軟件中需要連接的變量為4x0010,變量類型為I/O實數,數據類型可以為有整型的LONG或浮點型的FLOAT,在通信時,世紀星發送的以及設備返回的命令如下表所示(寫入數據258=0102H):
主機發送:

從機返回:

經過發送上表中的命令,0102H便成功寫入到寄存器地址為0010H號的寄存器中,0000H成功寫入了寄存器地址為0011H號的寄存器中。
shangshuneirongjiushizaishijixingzhonggenjushebeishuomingshulianjiebaochijicunqidebianlianglianjiefangshi,yijitongxindeguocheng,qitadelirushurujicunqi,shuruxianquandengdouhebaochijicunqishileiside,tongguotedingdegongnengmaduitedingdizhidejicunqijinxingduxiecaozuo,zhelijiubuyiyijieshaole。
小結 在平時用戶使用世紀星和支持MODBUS協xie議yi的de儀yi表biao進jin行xing通tong信xin的de過guo程cheng中zhong,我wo們men和he客ke戶hu也ye有you很hen多duo的de交jiao流liu,在zai多duo數shu情qing況kuang下xia,世shi紀ji星xing都dou能neng很hen正zheng常chang的de和he儀yi表biao進jin行xing通tong信xin,但dan現xian在zai還hai是shi避bi免mian不bu了le的de一yi種zhong情qing況kuang是shi,有you些xie用yong戶hu的de儀yi表biao支zhi持chi的de並bing不bu是shi標biao準zhun的deMODBUS協議。MODBUS是一種通用的協議,但就細節來說,很多廠家還是各有各的用法,這使我們認識到了我們的MODBUS通信還是缺少一些靈活性,而我們一定會針對這種情況做一些改進工作,力求更多的使用MODBUS協議的客戶能夠方便使用我們的軟件和儀表高效可靠的通信。客戶的滿意,永遠是我們努力追求的目標。
|