新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > 基于ARM9的RTU設計

        基于ARM9的RTU設計

        作者: 時間:2012-05-02 來源:網絡 收藏

        2.4 系統初始任務Task0
        從站經過系統基本初始化之后,還需要進一步的配置才能正常工作,而這部分的工作就在系統初始任務Task0中實現。Task0主要完成的工作有:讀取E2PROM中的數據,獲取各種配置信息;根據配置信息初始化各種硬件驅動(如Modbus傳輸波特率、RS232/RS485通信選擇、外部中斷功能引腳選擇、SPI和IIC總線初始化等等);根據配置需求有選擇地創建模擬量輸入量任務Task2(AD采集任務)、數字量輸入任務Task3、數字量輸出任務Task4、讀保持寄存器配置任務Task5和測溫任務Task6:最后讓一個LED指示燈定時閃爍表示工作正常;接著進行任務調度,切換到已創建的、優先級高的其它就緒任務中運行并且實時響應外部中斷(數字量輸入)。系統初始任務Task0程序流程圖如圖7所示。

        本文引用地址:http://www.104case.com/article/155057.htm

        g.JPG


        系統中的Task2主要完成AD采集任務Task2,本系統采用TI公司的ADS7952。ADS7952的AD采樣率是根據其SPI傳輸波特率來換算的,改變MCU(S3C2440A)的SPI底層驅動程序中的SPI分頻值就能實現不同AD采樣率的選擇。ADS7952可以根據E2PROM中的配置信息(采樣率、通道數、采樣點數)工作,也可以根據Task5中讀取保持寄存器對應表中的數據位來實時更新配置。
        Task3執行數字量輸入任務,數字量輸入包括開關量輸入和脈沖信號量輸入,可以把這兩種功能的端口分開,也可以把這兩種功能復用合并。功能復用合并實現方法:數字量輸入口對應的MCU管腳先作為普通GPIO引腳,讀取其GPIO狀態寄存器獲取高低電平狀態(即開關狀態),把開關狀態寫入Modbus離散輸入寄存器中,接著把管腳功能從GPIO引腳切換到外部中斷引腳,用于隨時獲取脈沖信號的輸入,在外部中斷函數中可以實現計數并且把計數值寫入Modbus輸入寄存器中。該任務執行時間必須短,代碼必須簡練,不能在其中加入延時之類的函數,任務掛起的時間也不能太長,不然會導致脈沖信號輸入數據出現誤碼。
        Task4主要完成數字量輸出任務。主站可以通過寫線圈寄存器來控制從站RTU固態繼電器的輸出,也可以根據要求讓從站RTU定時中斷控制繼電器輸出PWM信號。同時主站RTU可以通過讀線圈寄存器來獲取從站RTU當前繼電器的電平輸出狀態。
        Task5可執行讀保持寄存器配置任務。當Modbus保持寄存器中的數據發生變化時,根據保持寄存器對應表(與主站協商定義的一個從站配置表)對從站RTU進行相應配置,包括從站基本信息、AD采樣率、AD通道數、AD采樣點數、有線無線傳輸選擇、UART波特率等等,同時把新的配置信息寫入E2PROM中。配置代碼應該放在μC/OS-II臨界區中,臨界區中不響應中斷,這樣才能保證新配置的程序能正常地運行。
        Task6執行測溫任務。當RTU工作環境溫度過高時,可能會影響RTU的正常工作,測溫任務可以實時或定時把從站RTU工作溫度值寫入Mod bus輸入寄存器中,供主站RTU讀取。

        3 結語
        本文主要介紹了一種的RTU實現方法,對RTU硬件系統中的各個模塊過程進行了詳細的介紹,包括數字量輸入模塊、數字量輸出模塊、模擬量輸入模塊、RS232通信模塊、RS485通信模塊、以太網通信模塊、存儲器模塊、E2PROM和測溫模塊等等,同時提出了此硬件系統的RTU從站軟件方法。RTU從站采用μC/OS-II實時操作系統,數據傳輸采用Modbus/RTU通信協議。該RTU可以應用于市政、能源、交通設施、環境、氣象、地質、農業等有遠程終端測控站點需求的行業。


        上一頁 1 2 3 4 下一頁

        關鍵詞: 設計 RTU ARM9 基于

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 昔阳县| 彝良县| 敖汉旗| 梁平县| 游戏| 资阳市| 聊城市| 滦南县| 格尔木市| 九龙县| 永昌县| 广平县| 荣成市| 普安县| 格尔木市| 阿合奇县| 萨嘎县| 勃利县| 长丰县| 德安县| 蚌埠市| 宽城| 岐山县| 竹山县| 河北省| 天柱县| 石城县| 五家渠市| 名山县| 泰来县| 怀来县| 天门市| 扶风县| 永吉县| 乐至县| 班玛县| 肥东县| 泰宁县| 灌阳县| 宁蒗| 鄂托克旗|