基于Modbus_TCP協(xié)議的儀表驅(qū)動程序開發(fā)_第1頁
基于Modbus_TCP協(xié)議的儀表驅(qū)動程序開發(fā)_第2頁
基于Modbus_TCP協(xié)議的儀表驅(qū)動程序開發(fā)_第3頁
基于Modbus_TCP協(xié)議的儀表驅(qū)動程序開發(fā)_第4頁
基于Modbus_TCP協(xié)議的儀表驅(qū)動程序開發(fā)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、低壓電器(20034)基于Modbus/TCP協(xié)議的儀表驅(qū)動程序開發(fā)基于Modbus/TCP協(xié)議的儀表驅(qū)動程序開發(fā)梁元其其格郭科成都理工大學(xué)信息管理學(xué)院(610059)陳志文成都太力信息產(chǎn)業(yè)有限公司(610001)摘要Modbus通信協(xié)議已經(jīng)成為一種工業(yè)標(biāo)準(zhǔn),在電力自動化和過程控制中廣泛應(yīng)用,但這種Modbus信息不能在TCP/IP協(xié)議的Internet或Intranet環(huán)境中應(yīng)用。為此,采用Modbus與TCP協(xié)議相結(jié)合的方法,開發(fā)出了基于Modbus/TCP協(xié)議的儀表驅(qū)動程序,實現(xiàn)Modbus的全部通信功能,并在施耐德儀表組網(wǎng)中得到了具體應(yīng)用,驗證了本方法的可靠性和可行性。敘詞:Modbu

2、s協(xié)議TCP協(xié)議Modicon控制器可編程序控制器中圖分類號:TP393.02TP930.9第一作者:梁元,男,1976年生,2001年畢業(yè)于成都理工大學(xué),碩士研究生。研究方向:最優(yōu)化及其自動化監(jiān)控。InstrumentDriversExploitationBasedonModbus/TCPLIANGYuanQI121.CollegeofTechnology(610059)Co.,Ltd.(610001)Abstract:communicationprotocolhasbeenwidelyappliedinelectricpowerautomationandprocessKeywords:Mo

3、dbusprotocolTCPprotocolModiconcontrollerPLC1引言目前,Modbus/TCP協(xié)議正逐漸成為一種自動化控制的通信協(xié)議的標(biāo)準(zhǔn)。而TCP/IP協(xié)議是在基于PLC的以太網(wǎng)中、I/O模式、或?qū)τ谑褂脛e的數(shù)據(jù)總線或I/O網(wǎng)絡(luò)的網(wǎng)關(guān)用的最多的一種通信協(xié)議。由此,筆者嘗試將Modbus協(xié)議與TCP協(xié)議相結(jié)合,在通用自動化設(shè)備的交互應(yīng)用中大大促進(jìn)了工業(yè)中Modbus協(xié)議的使用,具有里程碑的意義。2Modbus協(xié)議Modbus在可編程控制器之間可相互通信,也網(wǎng)絡(luò)信息存取可由控制器內(nèi)置的端口、網(wǎng)絡(luò)適配器以及Modicon提供的模塊選件和網(wǎng)關(guān)等設(shè)備實現(xiàn),對OEM(機械設(shè)備制造

4、商)來說,Modicon可為合作伙伴提供現(xiàn)有的程序,可使Modbus+網(wǎng)絡(luò)緊密地集成到他們的產(chǎn)品設(shè)計中去。Modicon的各種控制器使用的公共語言被稱為Modbus協(xié)議,該協(xié)議定義了控制器能識別和使用的信息結(jié)構(gòu)。當(dāng)在Modbus網(wǎng)絡(luò)上進(jìn)行通信時,協(xié)議能使每一臺控制器知道它本身的設(shè)備地址,并識別對它尋址的數(shù)據(jù),決定應(yīng)起作用的類型,取出包含在信息中的數(shù)據(jù)和資料等,控制器也可組織回答信息,并使用Modbus協(xié)議將此信息傳送出去??膳c不同網(wǎng)絡(luò)上的其他設(shè)備進(jìn)行通信,支撐網(wǎng)絡(luò)有Modicon的Modbus和Modbus+工業(yè)網(wǎng)絡(luò)。403TCP協(xié)議TCP/IP協(xié)議族分為鏈路層、網(wǎng)絡(luò)層、傳輸層基于Modbus

5、/TCP協(xié)議的儀表驅(qū)動程序開發(fā)低壓電器(20034)和應(yīng)用層4層,每一層各有不同的任務(wù)。在TCP/IP中,網(wǎng)絡(luò)層和傳輸層之間的區(qū)別是最為關(guān)鍵的,網(wǎng)絡(luò)層(IP)提供點到點的服務(wù),而運輸層(TCP和UDP)提供端到端的服務(wù)。(1)鏈路層。有時也稱作數(shù)據(jù)鏈路層或網(wǎng)絡(luò)斷為止。通過Modbus/TCP句柄,一個連接能在協(xié)議層很易被認(rèn)證通過,一個簡單的連接能執(zhí)行多個獨立的傳輸。另外,TCP允許巨大數(shù)目的并行連接。所以,在很大程度上無論是被要求重新連接或者重新使用一個新的連接,它都應(yīng)該是第一選擇。所有Modbus中的請求和應(yīng)答都是通過這樣一種方法設(shè)計的,即要求接受方能夠證實所傳輸?shù)男畔⑹峭暾?。請求和?yīng)答的

6、功能碼的長度是固定的,而且僅有一個功能碼就足夠了。因為功能碼在請求和應(yīng)答中執(zhí)行的是變化的數(shù)據(jù),這部分?jǐn)?shù)據(jù)將被一個字節(jié)數(shù)來表示。當(dāng)Modbus和TCP集成使用時,額外長度的信息要打上標(biāo)記,允許接收方驗證信息的邊界,即使這信息不得不分成很多個數(shù)據(jù)包來傳輸。這種CRC232錯誤檢查與TCP/IP協(xié)議相結(jié)合的使用大大方便了工業(yè)中尤其是自動化控制中數(shù)據(jù)采集、傳輸、應(yīng)用,使得互聯(lián)網(wǎng)與工業(yè)網(wǎng)絡(luò)特別是電力網(wǎng)絡(luò)的互通性得到加強。結(jié)合TelePower軟件,筆者成功地使Modbus/TCP協(xié)議得到了充分的應(yīng)用。TelePower系統(tǒng)是一個全開放的電力自動化系統(tǒng)開發(fā)平臺,它是太力公司與國內(nèi)主要電力產(chǎn)品供應(yīng)商深入合作

7、的結(jié)晶。太力公司通過與主要電力設(shè)備生產(chǎn)商及電力系統(tǒng)集成商的合作,根據(jù)電力系統(tǒng)對相關(guān)軟件產(chǎn)品的需求,并利用筆者在自動化領(lǐng)域多年積累的經(jīng)驗,將工業(yè)自動化軟件的一些先進(jìn)思想滲透到TelePower的產(chǎn)品研發(fā)中。接口層,通常包括操作系統(tǒng)中的設(shè)備驅(qū)動程序和計算機中對應(yīng)的網(wǎng)絡(luò)接口卡。它們共同處理與電纜(或其他任何傳輸媒介)的物理接口細(xì)節(jié)。(2)網(wǎng)絡(luò)層,有時也稱作互聯(lián)網(wǎng)層。處理分組在網(wǎng)絡(luò)中的活動,例如分組的選路。在TCP/IP協(xié)議族中,網(wǎng)絡(luò)層協(xié)議包括IP協(xié)議(網(wǎng)際協(xié)議),ICMP協(xié)議(Internet互聯(lián)網(wǎng)控制報文協(xié)議),以及IGMP協(xié)議(Internet組管理協(xié)議)。(3)傳輸層主要為兩臺主機上的應(yīng)用程序

8、提供端到端的通信。在TCP/IP協(xié)議族中,有2個互不相同的傳輸協(xié)議:TCP(傳輸控制協(xié)議)和UDP(用戶數(shù)據(jù)協(xié)議)。TCP為兩臺主機提供高可靠性的數(shù)據(jù)通信,它所做的工作包括把應(yīng)用程層,超時時鐘等。端的通信,。而UDP則為應(yīng)用層提供一種非常簡單的服務(wù),它只是把稱作數(shù)據(jù)報的分組從一臺主機發(fā)送到另一臺主機,但并不保證該數(shù)據(jù)報能到達(dá)另一端,任何必需的可靠性必須由應(yīng)用層來提供。這兩種傳輸層協(xié)議分別在不同的應(yīng)用程序中有不同的用途,這一點將在后面看到。(4)應(yīng)用層負(fù)責(zé)處理特定的應(yīng)用程序細(xì)節(jié)。幾乎各種不同的TCP/IP實現(xiàn)都會提供下面這些通用的應(yīng)用程序:Telnet遠(yuǎn)程登錄;FTP文件傳輸協(xié)議;SMTP簡單郵

9、件傳送協(xié)議;SNMP簡單網(wǎng)絡(luò)管理協(xié)議。5基于Modbus/TCP協(xié)議的編程主機可對各從機尋址,發(fā)出廣播信息,從機返回信息作為對查詢的響應(yīng)。從機對于主機的廣播查詢,無響應(yīng)返回Modbus/TCP協(xié)議。根據(jù)設(shè)備地址、請求功能代碼、發(fā)送數(shù)據(jù)、錯誤校驗碼,建立主機查詢格式,從機的響應(yīng)信息也用Modbus/TCP協(xié)議組織,它包括確認(rèn)動作的代碼,返回數(shù)據(jù)和錯誤校驗碼。若在接收信息時出現(xiàn)一個錯誤或從機不能執(zhí)行要求的動作時,從機會組織一個錯誤信息,并向主機發(fā)送作為響應(yīng)(見圖1)。414Modbus/TCP協(xié)議在Modbus/TCP中,數(shù)據(jù)的傳輸不是傳統(tǒng)的固定格式,故它能在很大程度上抵制信號的干擾,另外維持它傳

10、送到另一端的恢復(fù)信息也是最少的。另一方面,程序的執(zhí)行也希望一個面向連接的通路。這可以通過一個簡單的而且唯一的登陸標(biāo)志獲得,在Modbus中,打上標(biāo)記的變量通過外在程序通道維持雙方的聯(lián)系直到該程序通道被中低壓電器(20034)基于Modbus/TCP協(xié)議的儀表驅(qū)動程序開發(fā)回與原始代碼相等效的一個碼,并把最高有效位設(shè)定為“1”。如主機要求從機讀1組保持寄存器時,則發(fā)送信息的功能碼為:00000011(16進(jìn)制03);若從機正確接收請求的動作信息后,則返回相同的代碼值作為正常響應(yīng)。發(fā)現(xiàn)錯時,則返回一個不正常響應(yīng)信息:10000011(16進(jìn)制83)。從機對功能代碼作了修改,此外,還把一個特殊碼放入響

11、應(yīng)信息的數(shù)據(jù)區(qū)中,告訴主機出現(xiàn)的錯誤類型和不正常響應(yīng)的原因。主機設(shè)備的應(yīng)用程序圖1主、從響應(yīng)周期負(fù)責(zé)處理不正常響應(yīng),典型處理過程是主機把對信息的測試和診斷送給從機,并通知操作者。在信息級,盡管網(wǎng)絡(luò)通信方法是對等的,但Modbus/TCP協(xié)議仍采用主從方式,若1臺控制6Modbus/TCP協(xié)議的驅(qū)動程序開發(fā)/CModbus/TCP類型的驅(qū)動程序的基類classCModbusProBaseObj:publicCExternProObjpublic:=CString(-T(”);”器作為主機設(shè)備發(fā)送1個信息,則可從1臺從機設(shè)備返回1個響應(yīng);同樣,當(dāng)1臺控制器接受信息時,它就組織1個從機設(shè)備的響應(yīng)信息

12、,并返回至原發(fā)送信息的控制器。(1)查詢。查詢中的功能代碼為被尋址的從機設(shè)備應(yīng)執(zhí)行的動作類型。,從機,址及數(shù)量、錯誤校驗區(qū)的一些信息,為從機提供一種校驗方法,以保證信息內(nèi)容的完整性。(2)響應(yīng)。從機正常響應(yīng)時,響應(yīng)功能碼是查詢功能碼的應(yīng)答,數(shù)據(jù)字節(jié)包含從機采集的數(shù)據(jù),如寄存器值或狀態(tài)。如出現(xiàn)錯誤,則修改功能碼,指明為錯誤響應(yīng),并在數(shù)據(jù)字節(jié)中含有一個代碼來說明錯誤,錯誤檢查區(qū)允許主機確認(rèn)有效的信息內(nèi)容。(3)地址設(shè)置。主機把從機地址放入信息幀的地址區(qū),并向從機尋址。從機響應(yīng)時,把自己的地址放入響應(yīng)信息的地址區(qū),讓主機識別已作出響應(yīng)的從機地址。(4)功能碼設(shè)置。當(dāng)主機向從機發(fā)送信息時,功能代碼向從

13、機說明應(yīng)執(zhí)行的動作。如讀1組離散式線圈或輸入信號的ON/OFF狀態(tài),讀1組寄存器的數(shù)據(jù),讀從機的診斷狀態(tài),寫線圈(或寄存器),允許下載、記錄、確認(rèn)從機內(nèi)的程序等。當(dāng)從機響應(yīng)主機時,功能代碼可說明從機正常響應(yīng)或出現(xiàn)錯誤(即不正常響應(yīng))。正常響應(yīng)時,從機簡單返回原始功能代碼;不正常響應(yīng)時,從機返42();public:BYTEm-pBuffer;/接受RTU設(shè)備返回信息的緩沖區(qū)intm-nBufferLen;/緩沖區(qū)長度CPollingThreadm-pWorkThread;/查詢工作線程ling元素表CModbusNodeListm-1stNode;/按地址分類的Pol2CEventCodeTa

14、bleListm-1stSOEEventCode;BOOLm-bWaitExit;public:virtualvoidInitializeBuffer(intnMaxBufferLen=1024);/1.初始化接收信息virtualvoidCheckCRC(BYTE3pInfo,int&nLen);/2.CRCorLRC校驗/功能:返回長度為nLen的字節(jié)流的校驗碼/參數(shù):pInfo-字節(jié)流緩沖區(qū)/nLen-字節(jié)流的長度/nType校驗類型:/3.從字節(jié)流中取得一個完整幀,系統(tǒng)缺省的方式是:在給定的超時范圍內(nèi),通過對接收到的/響應(yīng)字節(jié)流作校驗,將滿足校驗的幀取作為響應(yīng)boolCheck

15、Response(BYTE3response-content,int&response-content-len);基于Modbus/TCP協(xié)議的儀表驅(qū)動程序開發(fā)低壓電器(20034)boolGetAFrame-new(BYTEnSourceAddr,BYTEszRes,intnLen,BYTE33/doublem-nCtrlValue;-控制命令的值/DWORDm-nTimeOut;-控制命令的超時(ms)/BYTEm-nType;-操作類型:0-選擇,1-執(zhí)&pInfo,int&nFrameLen);/3.等待一個完整響應(yīng)幀的返回virturlbookWaitResp

16、ondFrame(BYTEnSourceAddr,BYTE3行,2-取消/BYTEm-nRCType;-命令類型:/0-遙控,1-遙調(diào),2-遙設(shè),3-復(fù)歸/4-召喚定值,5-設(shè)置保護(hù)定值,6-備用,/7-寫設(shè)備號,8-保護(hù)投,9-保護(hù)切/BYTEm-nRetStatus;操作返回值0-失敗,1-成功/BYTEmnReason;操作失敗的原因:1-參數(shù)不對,/2-廠站通信失敗,3-超時,4-遙信變位,&pInfo,int&nLen,DWORDnTimeOut=2000);Frame分配內(nèi)存,調(diào)用者釋放/參數(shù):pInfo-接收緩沖區(qū),由動態(tài)WaitRespond2/nLen-為接收

17、到的幀的長度/nTimeOut-超時/返回:true-接收應(yīng)答幀成功/false-接收應(yīng)答幀失敗/上層規(guī)約實現(xiàn)/規(guī)約接口實現(xiàn)/1.初始化RTU,EpSynall/TelePower啟動驅(qū)動程/BYTEm-nDirectFlag;是否返校,1-直接發(fā)送命令,無需返校/0-需要返校/BYTEmnExtroData;/操作需要其他參數(shù),由驅(qū)動序時調(diào)用一次virtualERR-CODERTUStart();/2.結(jié)束RTU運行,EpSynall/TelePower在結(jié)束RTU/FTU運行時調(diào)用virtualERR-CODERTUClose();/3.初始化處理virtualBOOLCStringszO

18、wner,/廠站名稱longnID,/廠站標(biāo)號CChannelEntry33程序開發(fā)者決定;/5.校時命令下發(fā)入口virtualvoidAdjusticRTUTime();/6.2Table33(CMod23pDeviceProfile);FileName);GetSOEEventTable(CStringsz2pDic),/廠站變量變量字典voidAddSOEEventTable(CEventCodeTable3pTable);BOOLIsExitWaited()returnm-bWaitExit;pChannel,/占用的通道3CRawFrameBufferpRawMsg,/原始報文數(shù)組7結(jié)語目前,Modbus/TCP協(xié)議的驅(qū)動程序開發(fā)主要面向的是施耐德公司的PM600、DC150、MT開關(guān),ABB公司PMC2915和西門子公司等。本產(chǎn)品已廣泛使用于電力和自動化行業(yè),使用狀況滿意。參考文獻(xiàn)CCommuicInfoOfFactory3pCommInfo,/通信記錄反饋BOOLbSetupComm);/是否配置通信參數(shù)/4.下傳命令入口函數(shù)virtualERR-CODERemoteCtrlCmd(CRemoteCtrlInf

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論