PC機與PLC的串行通信通過(guò)Modbus TCP協(xié)議實(shí)現
智能樓宇工程中的中央空調、電梯、通風(fēng)、給排水、照明、火災報警等個(gè)子系統的互聯(lián)方案中,采用Modbustcp協(xié)議的串行通信方式,全面兼容modbus工業(yè)標準,數據傳輸可靠,響應速度快,擴展靈活,通過(guò)互聯(lián)網(wǎng)實(shí)現各子系統與中央管理系統的通信。modbus tcp協(xié)議是在tcp/ip標準中,應用層采用工業(yè)領(lǐng)域事實(shí)標準modbus。modbus使用tcp/ip應用層的502端口,這是經(jīng)過(guò)國際公認的。該串行總線(xiàn)方式支持各種介質(zhì)的rs-232、rs-422、rs-485接口。modbus tcp的網(wǎng)絡(luò )通信模式采用client/server方式,如圖1所示。
2 modbus tcp串行通信分析與實(shí)現
某智能樓宇中各子系統主要采用PLC作為主控模塊,如圖2所示。網(wǎng)絡(luò )互聯(lián)采用modbus tcp網(wǎng)絡(luò )通信模式,中央管理系統與該網(wǎng)絡(luò )的互聯(lián)是亟待解決的問(wèn)題,plc將智能樓宇中各子系統的相關(guān)狀態(tài)和參數信息保存于它的寄存器中,中央管理系統需要讀取plc中一些保持寄存器的數值,以此來(lái)進(jìn)行智能樓宇的全面監控與管理。modbus tcp協(xié)議提供了相應指令來(lái)進(jìn)行保持寄存器的讀取。
2.1 協(xié)議分析
modbus tcp數據報文結構,如圖3所示。
一次modbus tcp讀取保持寄存器的通信分析(省略了ip/tcp頭):
從左向右分析該數據報文:00 03為此次通信編號,一般每次通信之后將被要求加1以區別不同的通信數據報文;00 00表示協(xié)議標識符,00 00為modbus協(xié)議;00 06為數據長(cháng)度,用來(lái)指示接下來(lái)數據的長(cháng)度,單位字節;03為設備地址,用以標識連接在串行線(xiàn)或者網(wǎng)絡(luò )上的遠程服務(wù)端的地址。以上七個(gè)字節也被稱(chēng)為modbus報文頭。03為功能碼,此時(shí)代碼03為讀取保持寄存器數據。00 00 00 01為功能碼的參數,指示將被讀取的保持寄存器的地址與長(cháng)度。從左向右分析該數據報文:00 03為此次通信編號,應答報文要求與先前對應的請求保持一致;00 00為協(xié)議標識符,00 00表示modbus協(xié)議;00 05為數據長(cháng)度,用來(lái)指示接下來(lái)數據的長(cháng)度,單位字節;03為設備地址,應答報文要求與先前對應的請求保持一致。以上七個(gè)字節同樣為modbus報文頭。03為功能碼,正常情況下應答報文要求與先前對應的請求保持一致,如果出錯則返回80h+先前的功能碼。02為功能碼的第一個(gè)參數,指示接下來(lái)數據的字節長(cháng)度;00 17為被讀取的保持寄存器中的數據值,即要求被讀取的地址為00 00的保持寄存器中的數值為0017h。
測試程序(master)發(fā)送數據(hex)及 plc(modbus tcp slave) 響應數據(hex)樣例分析如圖4所示。
2.2 程序流程
以下是主程序的流程圖,如圖5所示,主要功能是建立tcp/ip連接以及連接錯誤處理。
modbus tcp協(xié)議的每一次工作循環(huán)的流程圖,如圖6所示。
2.3 程序測試
;首先在ip中填上需要被連接的服務(wù)端ip地址,然后點(diǎn)擊connect進(jìn)行連接。連接成功后,在oFFset中填寫(xiě)需要讀取的保持寄存器的開(kāi)始地址,在length中填寫(xiě)需要讀取的保持寄存器的長(cháng)度。最后點(diǎn)擊trigger讀取一次上述保持寄存器,同時(shí)將在sent和received中顯示發(fā)送及收到的數據報文(hex),并且在data monitor中顯示對這些報文的解釋。
3 結束語(yǔ)
本文對Modbustcp協(xié)議以及modbus tcp串行通信在智能樓宇工程中的應用作了簡(jiǎn)單介紹,重點(diǎn)分析研究了modbus tcp讀取PLC的保持寄存器數據的過(guò)程,并提出實(shí)現modbus tcp協(xié)議通信的解決方案,進(jìn)行編程以及調試,成功實(shí)現了預期的功能。
評論