新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > 基于RTU油井遠程測控系統的數據采集與傳輸層軟件設計

        基于RTU油井遠程測控系統的數據采集與傳輸層軟件設計

        作者: 時間:2012-06-07 來源:網絡 收藏

        3.1.2 Modbus/通信協議
        Modbus/是一種應用層的協議,上層為Modbus協議,下層為協議,它規定了網絡互聯節點間的請求/應答的通信方式。幀格式必須嚴格遵守協議所規定的ADU(Application Data Unit)格式,才能在以太網上實現數據的傳輸。圖3所示即為Modbus/TCP的數據幀格式。

        d.jpg


        MBAP報文頭(Modbus Application Protocol Header)是TCP/IP使用的專用報文頭,用來識別Modbus的應用數據單元。MBAP共有7個字節,其具體組成及含義如表2所列。
        國際互聯網編號分配管理機構IANA(Internet Assigned Numbers Authority)專門為其賦予了一個TCP端口號502端口,利用TCP發送所有的Modbus/TCP ADU。
        3.1.3 Modbus/TCP與Modbus 數據幀的區別
        Modbus/TCP雖然包括了從站地址、功能碼和傳輸的數據,但是沒有校驗控制碼,這是因為Modbus/TCP校驗功能已經在下面的四層如TCP/IP協議和鏈路層的校驗機制得到了保證。
        3.2 數據采集與傳輸層系統軟件設計
        油井遠程測控系統的數據采集與傳輸層主要完成的功能:傳感器數據的采集、傳輸和對繼電器的控制。圖1中提到了兩種常見的工作方式。在井場1中存在主站和從站:主站主要負責對各從站進行輪詢、數據打包和向上位機發送數據,從站主要負責數據的采集、繼電器的控制和輪詢命令的響應,主從站之間的通信使用的是Modbus/。在井場2中只存在一個RTU,主要完成數據的采集、繼電器的控制和向上位機發送數據,通信使用的是Modbus/TCP。在數據采集與傳輸層的工作過程中,考慮到系統的兼容性,對RTU軟件設計提出了的要求,不需要重新下載程序,只需要使用系統配置軟件就可選擇不同的工作方式和通信方式,這就保證了系統的可操作性和兼容性,系統的適應性大大加強。
        在軟件開發過程中,考慮到串行通信速度較慢的特點,采用多線程技術,故引入實時操作系統μC/OS_II,將Modbus/RTU通信、Modbus /TCP通信等放在單獨的線程中進行,而數據采集和控制等則采用另的線程實現。
        3.2.1 μC/OS_II的移植
        μC/OS_II是可移植、可剪裁的搶占式實時多任務操作系統內核,適用于工業控制中的實時監控。本系統成功地將實時操作系統μC/ OS_II移植到S3C2440A微處理器上,并實現了Modbus通信協議。
        μC/OS_II可以管理64個任務,具有信號量、互斥信號量、消息隊列、任務管理、時間管理和內存塊管理等系統功能。μC/OS_II的移植主要包括三部分代碼:μC/OS_II核心代碼、μC/OS_II配置代碼、μC/OS_II移植代碼。其中μC/OS_II移植代碼包括1個匯編文件、1個C程序文件和1個頭文件。這部分代碼與微處理器相關,是移植的關鍵。
        3.2.2 Modbus通信的實現
        RTU與上位機使用Modbus/TCP進行以太網通信時,需不斷接收上位機發送的查詢命令,處于服務器(從站)狀態。RTU在使用。Modbus/ RTU進行串口通信時,需單獨完成主從站功能。在實際應用中,不存在Modbus/TCP和Modbus/RTU的從站并存在同一RTU的情況,因而在程序編寫過程中,Modbus/TCP和Modbus/RTU的從站使用同一個Modbus從站庫,但對其幀頭的處理略有不同。以下分別講述Modbus/TCP服務器(從站)在TCP/IP協議棧上的實現以及Modbus/RTU主站在串口通信上的實現。
        (1)Modbus/TCP通信協議實現
        由于操作系統μC/OS_II本身沒有TCP/IP協議棧,故先移植嵌入TCP/IP協議棧,再編寫Modbus/TCP服務器(從站)程序。在μC/OS_II下嵌入了TCP/IP協議棧后就監聽TCP502端口的連接請求,只有在與客戶機建立了連接之后才能進行數據處理。服務器端在收到客戶機的請求之后,會確認和客戶機的連接,同時接收并分析客戶機的請求報文。如果MBAP報文頭正確,則讀完所有的報文,只有協議類型值為0x00時才對請求幀進行下一步操作,否則直接丟棄報文。接著分析PDU中的功能代碼,不同的功能對參數要求也不同,最后根據數據域中的參數規定,執行相應的操作。若有錯誤出現,直接丟棄報文,仍繼續處理PDU的數據顯得不必要,影響實時性。根據對客戶端請求報文的分析處理,有兩種響應結果,一種是正常的響應報文,另一種是異常響應報文,即返回的是錯誤信息。其Modbus/TCP的從站通信流程如圖4所示。

        e.jpg



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 北宁市| 修武县| 石河子市| 昌黎县| 义马市| 旌德县| 南康市| 怀集县| 金湖县| 海城市| 图们市| 河曲县| 巨鹿县| 盐边县| 临武县| 松原市| 天门市| 昌平区| 崇仁县| 呈贡县| 新干县| 安新县| 龙海市| 加查县| 甘孜| 洞头县| 黄冈市| 谢通门县| 玉田县| 宜兴市| 安福县| 炉霍县| 广宁县| 菏泽市| 安丘市| 曲周县| 曲靖市| 徐闻县| 阿巴嘎旗| 天气| 忻城县|