|
引言
隨著工業自動化的發展,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。
由於很多用MODBUSxieyideyibiaochangjiadouzaiyizijidefangshilaishuomingyibiaoshangdecanshuyijitaduiyingdejicunqidizhi,suoyiyibufenchangjiashiyishiliujinzhilaibiaojijicunqidizhi,erlingyibufenchangjiayongshijinzhi。weileshiyonghuzaigongchenglijianlibianliangshifangbiandeheyibiaoshangdejicunqilianjie,shijixingfenbiezaiMODBUS-RTU和ASCIImaliangzhongtongxinfangshixia,zhichishiliujinzhitongdaohaoheshijinzhitongdaohaoliangzhongbianlianglianjiefangshi,yinci,jiumianquleyonghuzuohenduodeshiliujinzhiheshijinzhizhijianzhuanhuandegongzuo。
在設備的說明書中,一般會指定寄存器地址,數據類型,該地址的寄存器支持的功能碼等要素,以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號的寄存器中。
上(shang)述(shu)內(nei)容(rong)就(jiu)是(shi)在(zai)世(shi)紀(ji)星(xing)中(zhong)根(gen)據(ju)設(she)備(bei)說(shuo)明(ming)書(shu)連(lian)接(jie)保(bao)持(chi)寄(ji)存(cun)器(qi)的(de)變(bian)量(liang)連(lian)接(jie)方(fang)式(shi),以(yi)及(ji)通(tong)信(xin)的(de)過(guo)程(cheng),其(qi)它(ta)的(de)例(li)如(ru)輸(shu)入(ru)寄(ji)存(cun)器(qi),輸(shu)入(ru)線(xian)圈(quan)等(deng)都(dou)和(he)保(bao)持(chi)寄(ji)存(cun)器(qi)是(shi)類(lei)似(si)的(de),通(tong)過(guo)特(te)定(ding)的(de)功(gong)能(neng)碼(ma)對(dui)特(te)定(ding)地(di)址(zhi)的(de)寄(ji)存(cun)器(qi)進(jin)行(xing)讀(du)寫(xie)操(cao)作(zuo),這(zhe)裏(li)就(jiu)不(bu)一(yi)一(yi)介(jie)紹(shao)了(le)。
小結 在平時用戶使用世紀星和支持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)的(de)MODBUS協議。MODBUS是一種通用的協議,但就細節來說,很多廠家還是各有各的用法,這使我們認識到了我們的MODBUS通信還是缺少一些靈活性,而我們一定會針對這種情況做一些改進工作,力求更多的使用MODBUS協議的客戶能夠方便使用我們的軟件和儀表高效可靠的通信。客戶的滿意,永遠是我們努力追求的目標。
|