999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

西門子CM PtP模塊Modbus RTU主站通信程序設計

2022-07-26 13:55:52薛春陽尤麗靜陳炳秋冀衛杰
自動化與儀表 2022年7期
關鍵詞:程序設計

薛春陽,尤麗靜,陳炳秋,冀衛杰

(北京和利時系統集成有限公司,北京 100176)

Modbus RTU 作為一種開放高效的通信協議在眾多工業領域中的智能控制器以及智能儀表上已經得到了廣泛的應用,它成功解決了現場智能控制器以及工業儀表與PLC 之間數據交換的問題,這樣不僅節省了傳統的大量通信電纜,而且其數據傳輸可靠性也得到了大幅度提升[1]。隨著科技的不斷發展和進步,工業以太網以其低成本、高效率及一網到底的便捷性,正在逐步取代傳統工業總線,在工業自動化控制領域得到了迅速推廣和普及[2]。西門子ET200SP CM PtP 正是以太網結構下的串口通信模塊,相比傳統總線結構下的串口通信模塊,CM PtP的實現方法和資料還比較少,編程方法仍停留在基礎功能塊上,不滿足PLC 結構化編程理念。

本文結合城市軌道交通地鐵BAS(環境與設備監控系統)機電設備和西門子STEP7 編程環境特點,對西門子ET200SP 串口通信模塊CM PtP 的Modbus RTU 主站通信程序的設計開發進行重點研究,其開發后的程序組織結構規范、清晰、簡明,通用性和可讀性強,更容易被閱讀者理解,有利于對常用功能進行標準化,將難化簡,更適合多人分工合作共同編寫的復雜項目,且易于查錯、修改和調試[3]。

1 研究背景

城市軌道交通BAS 是對地鐵建筑物內的環境與空氣條件、通風、給排水、照明、乘客導向、自動扶梯及電梯、屏蔽門、防淹門等建筑設備和系統進行集中監視、控制和管理的系統,以確保設備處于安全、可靠、高效、節能的最佳運行狀態[4]。其中BAS 系統中有很多使用Modbus RTU 通信協議的設備,如隧道風機、空調機組、冷水機組、遠程水表、電保溫等。

在項目實際應用中,Modbus 通信部分相關的硬件配置如圖1所示。

針對上述配置,Modbus 通信程序需設計為面向CM PtP 的通用程序塊,項目中每增加一個CM PtP的硬件,則在程序中增加一次對通用程序塊的調用,調用時只需修改塊的輸入參數,而不必修改其內部程序。

2 設計思路

西門子編程環境STEP7 提供了串口通信的基礎程序Modbus_Comm_Load 和Modbus_Master。其中Modbus_Comm 用于設置PtP 參數,例如數據傳輸速率、奇偶校驗和數據流控制,Modbus_Master 用作Modbus 主站指令,與一個或更多的Modbus 從站設備進行通信。

在西門子技術手冊《ET 200MP/ET 200SP 用于S7-300/400 分布式I/O 的PtP 通信指令》中有如下要求:①Modbus_Comm_Load 來完成將用于Modbus通信的每個通信端口的組態。必須為使用的每個端口分配唯一的Modbus_Comm_Load 背景數據塊。②對于該端口,可以使用一個或多個Modbus_Master的實例。但是,所有版本的Modbus_Master 都必須為該端口使用相同的背景數據塊。鑒于西門子手冊的要求,每個PtP 不允許使用多個Modbus_Comm_Load以及不能在同一時間調用多個Modbus_Master,故在程序中設計一個功能塊FB(Sub_ModbusRTU),該FB 以Modbus_Comm_Load 和Modbus_Master 為基礎,能夠完成一次完整的發送查詢信息和接收響應信息的過程,并且通過修改該FB 的輸入參數和觸發條件能夠完成下一次的通信。

在實際應用中,一個PtP 可以和多個對象通信,每個通信對象根據數據量的大小和數據寄存器地址的分布情況,可能需要多次通信才能讀回和寫出全部數據,所以Sub_ModbusRTU 的功能是完成針對某個PtP 的全部通信過程,該過程需要調用一次或多次Modbus_Master 來實現。考慮到程序的通用性,Sub_ModbusRTU 應該是一個模塊化的程序,模塊內部的程序是固定不變的,當用于不同的PtP 時只需要修改輸入參數即可。

在試驗對比梯形圖(LAD)、語句表(STL)、結構化文本(SCL)三種編程語言之后,本文最終選擇了 結構化文本(SCL)。結構化文本(SCL)是用于SIMATIC S7 系列CPU 編程的類PASCAL 高級語言,特別適合復雜算法、數學函數、過程優化、數據和配方管理等編程任務。

3 詳細設計

3.1 設計目標

Sub_ModbusRTU 作為供編程者直接應用的通用程序,設計目標如下:①該程序要設計和封裝為一個面向對象的子程序,及每個PtP 模塊調用一次,并為其分配一個背景數據塊,當PtP 模塊改變時,僅需修改通信參數即可實現功能。②該程序支持Modbus 協議中的8 個常用的功能碼01,02,03,04,05,06,15,16。③由于PtP 在BAS 系統中作為Modbus RTU 主站使用,所以Sub_ModbusRTU 還要能夠與多個Modbus RTU 從站通信,本次設計為最多帶8 個從站。④Modbus 協議具有問答式的通信特點,其通信過程是由多個問答過程組成的,在對這些過程的調度上,Sub_ModbusRTU 還要設計靈活的觸發方式,即:事件觸發,當前過程完成后,自動觸發下一個通信過程;輪詢方式,通過設置輪詢時間參數,控制通信過程之間的時間間隔。

3.2 接口參數

Sub_ModbusRTU 程序的接口參數設計如下:

輸入參數:

(1)LADDR:INT 型,在STEP7 中組態硬件時產生的CM PtP 模塊的地址。

(2)InPar:ARRAY[0..7,0..5,0..6] OF INT,在程序中以InPar[k,x,y]的形式出現,三位數組類型,其中“k”用來區分接在同一PtP 上的不同從站設備,一個PtP 模塊設計最多帶8 個不同的從站,“x”用來區分同一從站下的不同通信過程,每個從站設計最多6 個不同的通信過程,“y”包含7 個參數,設置方法如下:

InPar[k,x,0]——ModbusRTU 從站ID 號;

InPar[k,x,1]——通訊模式選擇,該參數與西門子提供的Modbus_Master 的輸入參數MODE 一致;

InPar[k,x,2]——Modbus 數據的存儲區域,標準Modbus 地址萬位上數字,例如40001,則取4設置;

InPar[k,x,3]——Modbus 數據起始地址;

InPar[k,x,4]——Modbus 數據長度;

InPar[k,x,5]——目標數據所在的DB 塊編號;

InPar[k,x,6]——目標數據所在的DB 塊內的起始地址。

(3)TimePoll:INT 型;每次通訊過程的輪詢時間(以100 ms 為最小單位)。TimePoll=10 時,表示每隔1000 ms 進行一次通訊;TimePoll=0 時,表示上一次通訊過程結束后觸發本次通訊。

(4)PARITY:校驗方式,0 無校驗,1 奇校驗,2偶校驗。

(5)DataChange:BOOL 型;此變量為True 時,執行寫命令,否則只執行讀命令。

輸出參數:①CommOK,BOOL 型;Modbus 從站通信狀態,正常時為True,不正常時為False;②STATUS:WORD 型,錯誤代碼,該參數與西門子提供的Modbus_Master 的輸出參數STATUS 一致,在調試過程中遇到問題時可從西門子手冊中查找相關信息,判斷故障原因。

3.3 編程要點

Sub_ModbusRTU 程序的流程如圖2所示。

圖2 串口通信程序設計流程Fig.2 Serial communication program design flow chart

本程序核心思路是利用雙重循環依次完成每個從站設備的每個通信過程,外層循環以從站順序號為依據,內層循環以從站內的通信過程順序號為依據。程序從第一個從站的第一個通信過程開始執行,當執行完第一個從站的最后一個通信過程后,接著執行第二個從站的第一個通信過程,依次類推,當執行完最后一個從站的最后一個通信過程后,重新開始第一個從站的第一個通信過程,只要程序被使能,便如此循環下去。

具體的實現方法如下:

本程序的亮點:①將RTU 從站的通信參數存儲在三維數組中,在數組的基礎上充分結合循環的程序結構特點,實現對通信過程的組織調度。程序結構清晰明了,同時也縮減了代碼的體積,使代碼更加優化。②本程序在處理Modbus_Master 不同從站通信過程的時候使用了西門子ANY 指針的方法給Modbus_Master 的DATA_PTR 管腳賦值[5]。該方法可以將Modbus 數據傳送到不同設備的背景DB 塊的指定位置中,省去了數據處理的問題。③利用Modbus_Master 的輸出參數Done 和Error 以及Modbus_Comm_Load 的輸出參數Error 來判斷Modbus每從站的通信狀態,并將錯誤代碼反饋輸出。④程序設置看門狗,用于程序第一次運行和模塊斷電后重新運行以及程序發生故障卡死時保障程序可靠性和穩定性。⑤利用結構化文本SCL 編程,可讀性以及可移植性更強,處理復雜數據更容易。

4 實例調用

Sub_ModbusRTU 將Modbus_Master 指令以及Modbus_Comm_Load 指令高效地整合在一起,使其直接作為通用子程序被調用,實現每個PtP 模塊只調用一次就可以實現全部功能。很適合地鐵BAS 這種通信設備數量多和種類多的大型機電項目PLC編程工作,Sub_ModbusRTU 的調用如圖3所示。

圖3 通信程序塊Sub_ModbusRTUFig.3 Communication block Sub ModbusRTU

每個CM PtP 模塊的Sub_ModbusRTU 輸入參數,即InPar 的賦值直接采用在SCL 中編寫初始化功能函數FC1000(Initialize)的方式來實現,輸入參數以每個CM PtP 模塊下每個Modbus 子站的每條讀寫命令為單位編寫設置,每個Modbus RTU 子站最多配置6 條讀寫命令,每條命令有7 個參數信息,分別對應到Sub_ModbusRTU 的輸入參數InPar 中,編制方法簡單清晰,利于修改和調試維護,如圖4所示。

每個CM PtP 模塊調用Sub_ModbusRTU 后集中放到FC1040(Com_Modbus_RTU)中,在地鐵車站中,一個典型的S7-400H 系統中會存在多個CM PtP模塊,因此在實例調用時,會把通信塊集中到一個功能塊,將程序分為功能塊調用和參數初始化設置兩部分,如圖5所示。

5 結語

本文的設計成果已成功應用在深圳地鐵2 號線三期、深圳地鐵8 號線一期、成都地鐵5 號線、北京地鐵新機場線中,經現場調試驗證,程序運行穩定可靠,通信效果良好。程序Sub_ModbusRTU 是面向通信模塊硬件的通用程序,編程時可根據項目的實際需要靈活調用,其它行業的工控系統也可借鑒使用,具有較大的實際應用價值。

猜你喜歡
程序設計
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
主站蜘蛛池模板: 亚洲狼网站狼狼鲁亚洲下载| 日本91视频| 精品1区2区3区| 日韩一级二级三级| 一区二区三区国产精品视频| 视频在线观看一区二区| 欧美精品高清| 欧美日本不卡| 亚洲天堂视频在线观看免费| 亚洲精品无码av中文字幕| 久久婷婷五月综合色一区二区| 四虎国产精品永久在线网址| 中国精品久久| 久久亚洲国产最新网站| 青青青国产在线播放| 日本国产在线| 综合亚洲网| 亚洲AV无码乱码在线观看裸奔 | 亚洲三级电影在线播放| 在线人成精品免费视频| 亚洲福利片无码最新在线播放| 欧美翘臀一区二区三区| 国产成年女人特黄特色大片免费| 久久中文字幕av不卡一区二区| 国产00高中生在线播放| 日韩无码视频专区| 伊人成人在线| 国产乱子伦无码精品小说| 天堂成人在线| 高清亚洲欧美在线看| 国产视频大全| 无码高清专区| 亚洲天堂视频在线观看免费| 免费在线a视频| 国产精品福利社| 91色在线视频| 一级成人a做片免费| 欧美天天干| 精品国产福利在线| 亚洲欧美在线精品一区二区| 亚洲日韩AV无码精品| 欧美成人日韩| 日本AⅤ精品一区二区三区日| 日本三级黄在线观看| 亚洲日韩AV无码一区二区三区人| 国产女主播一区| 亚洲最新在线| 亚洲精品波多野结衣| 香蕉视频在线精品| 亚洲欧美激情另类| 97影院午夜在线观看视频| 四虎精品国产永久在线观看| 日本免费a视频| 国产无码制服丝袜| 国内精品视频区在线2021| 2019年国产精品自拍不卡| 久久狠狠色噜噜狠狠狠狠97视色 | 性欧美在线| h网站在线播放| 中文字幕第4页| 日韩精品高清自在线| 久久黄色一级片| 国产91蝌蚪窝| 欧美国产日韩在线| 青青草a国产免费观看| 免费A级毛片无码免费视频| 亚洲区视频在线观看| 91福利免费视频| 国产精品网址你懂的| 国产亚洲男人的天堂在线观看| 无码有码中文字幕| 91亚洲精品国产自在现线| 第九色区aⅴ天堂久久香| 人妻免费无码不卡视频| 少妇精品久久久一区二区三区| 自拍亚洲欧美精品| 乱人伦中文视频在线观看免费| 在线国产91| 欧美成人一级| 丁香六月激情婷婷| 色综合色国产热无码一| 国产亚洲欧美在线人成aaaa|