《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 基于Modbus TCP協(xié)議實(shí)現(xiàn)PC機(jī)與PLC的串行通信
基于Modbus TCP協(xié)議實(shí)現(xiàn)PC機(jī)與PLC的串行通信
摘要: 本文對(duì)modbustcp協(xié)議以及modbustcp串行通信在智能樓宇工程中的應(yīng)用作了簡(jiǎn)單介紹,,重點(diǎn)分析研究了modbustcp讀取plc的保持寄存器數(shù)據(jù)的過程,,并提出實(shí)現(xiàn)modbustcp協(xié)議通信的解決方案,,進(jìn)行編程以及調(diào)試,,成功實(shí)現(xiàn)了預(yù)期的功能。
Abstract:
Key words :

1  引言

                
   智能樓宇工程中的中央空調(diào),、電梯,、通風(fēng)、給排水,、照明,、火災(zāi)報(bào)警等個(gè)子系統(tǒng)的互聯(lián)方案中,,采用modbus tcp協(xié)議的串行通信方式,,全面兼容modbus工業(yè)標(biāo)準(zhǔn),數(shù)據(jù)傳輸可靠,,響應(yīng)速度快,,擴(kuò)展靈活,通過互聯(lián)網(wǎng)實(shí)現(xiàn)各子系統(tǒng)與中央管理系統(tǒng)的通信,。modbus tcp協(xié)議是在tcp/ip標(biāo)準(zhǔn)中,,應(yīng)用層采用工業(yè)領(lǐng)域事實(shí)標(biāo)準(zhǔn)modbus。modbus使用tcp/ip應(yīng)用層的502端口,這是經(jīng)過國(guó)際公認(rèn)的,。該串行總線方式支持各種介質(zhì)的rs-232,、rs-422、rs-485接口,。modbus tcp的網(wǎng)絡(luò)通信模式采用client/server方式,,如圖1所示。

            圖1  modbus tcp的網(wǎng)絡(luò)通信模式
           


2  modbus tcp串行通信分析與實(shí)現(xiàn)
               
  某智能樓宇中各子系統(tǒng)主要采用plc作為主控模塊,,如圖2所示,。網(wǎng)絡(luò)互聯(lián)采用modbus tcp網(wǎng)絡(luò)通信模式,中央管理系統(tǒng)與該網(wǎng)絡(luò)的互聯(lián)是亟待解決的問題,,plc將智能樓宇中各子系統(tǒng)的相關(guān)狀態(tài)和參數(shù)信息保存于它的寄存器中,,中央管理系統(tǒng)需要讀取plc中一些保持寄存器的數(shù)值,以此來進(jìn)行智能樓宇的全面監(jiān)控與管理,。modbus tcp協(xié)議提供了相應(yīng)指令來進(jìn)行保持寄存器的讀取,。

            圖2  智能樓宇系統(tǒng)示意圖
           


  2.1 協(xié)議分析
               
  modbus tcp數(shù)據(jù)報(bào)文結(jié)構(gòu),如圖3所示,。

            圖3  modbus tcp數(shù)據(jù)報(bào)文結(jié)構(gòu)
          

    
  一次modbus tcp讀取保持寄存器的通信分析(省略了ip/tcp頭):從左向右分析該數(shù)據(jù)報(bào)文:00 03為此次通信編號(hào),,一般每次通信之后將被要求加1以區(qū)別不同的通信數(shù)據(jù)報(bào)文;00 00表示協(xié)議標(biāo)識(shí)符,,00 00為modbus協(xié)議,;00 06為數(shù)據(jù)長(zhǎng)度,用來指示接下來數(shù)據(jù)的長(zhǎng)度,,單位字節(jié),;03為設(shè)備地址,用以標(biāo)識(shí)連接在串行線或者網(wǎng)絡(luò)上的遠(yuǎn)程服務(wù)端的地址,。以上七個(gè)字節(jié)也被稱為modbus報(bào)文頭,。03為功能碼,此時(shí)代碼03為讀取保持寄存器數(shù)據(jù),。00 00 00 01為功能碼的參數(shù),,指示將被讀取的保持寄存器的地址與長(zhǎng)度。從左向右分析該數(shù)據(jù)報(bào)文:00 03為此次通信編號(hào),,應(yīng)答報(bào)文要求與先前對(duì)應(yīng)的請(qǐng)求保持一致,;00 00為協(xié)議標(biāo)識(shí)符,00 00表示modbus協(xié)議,;00 05為數(shù)據(jù)長(zhǎng)度,,用來指示接下來數(shù)據(jù)的長(zhǎng)度,單位字節(jié),;03為設(shè)備地址,,應(yīng)答報(bào)文要求與先前對(duì)應(yīng)的請(qǐng)求保持一致,。以上七個(gè)字節(jié)同樣為modbus報(bào)文頭。03為功能碼,,正常情況下應(yīng)答報(bào)文要求與先前對(duì)應(yīng)的請(qǐng)求保持一致,,如果出錯(cuò)則返回80h+先前的功能碼。02為功能碼的第一個(gè)參數(shù),,指示接下來數(shù)據(jù)的字節(jié)長(zhǎng)度,;00 17為被讀取的保持寄存器中的數(shù)據(jù)值,即要求被讀取的地址為00 00的保持寄存器中的數(shù)值為0017h,。

  測(cè)試程序(master)發(fā)送數(shù)據(jù)(hex)及 plc(modbus tcp slave) 響應(yīng)數(shù)據(jù)(hex)樣例分析如圖4所示,。

            圖4  程序發(fā)送/接收數(shù)據(jù)包樣例分析
           
 

  2.2 程序流程
               
  以下是主程序的流程圖,如圖5所示,,主要功能是建立tcp/ip連接以及連接錯(cuò)誤處理,。modbus tcp協(xié)議的每一次工作循環(huán)的流程圖,如圖6所示,。

            圖5  主程序流程圖

            圖6  一次工作循環(huán)流程圖

  2.3 程序測(cè)試
               
  首先在ip中填上需要被連接的服務(wù)端ip地址,,然后點(diǎn)擊connect進(jìn)行連接。連接成功后,,在offset中填寫需要讀取的保持寄存器的開始地址,,在length中填寫需要讀取的保持寄存器的長(zhǎng)度。最后點(diǎn)擊trigger讀取一次上述保持寄存器,,同時(shí)將在sent和received中顯示發(fā)送及收到的數(shù)據(jù)報(bào)文(hex),,并且在data monitor中顯示對(duì)這些報(bào)文的解釋。
           
3  結(jié)束語
               
  本文對(duì)modbus tcp協(xié)議以及modbus tcp串行通信在智能樓宇工程中的應(yīng)用作了簡(jiǎn)單介紹,,重點(diǎn)分析研究了modbus tcp讀取plc的保持寄存器數(shù)據(jù)的過程,,并提出實(shí)現(xiàn)modbus tcp協(xié)議通信的解決方案,進(jìn)行編程以及調(diào)試,,成功實(shí)現(xiàn)了預(yù)期的功能,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。