基于嵌入式實時操作系統的現場控制系統
3.2 模擬量輸入輸出與數字量處理任務
模擬量輸入輸出任務屬于周期性執行的任務。它包括幾個組成部分:模擬信號量的輸入,控制算法的運算,產生控制輸出。任務首先從物理通道讀取經過A/D轉換后的傳感器信號,對其進行平滑濾波、工程單位轉換和報警檢測后與控制給定值進行比較,其誤差經過內置的PID控制功能塊運算后,得到相應的控制量,此控制量經過工程單位轉換后直接送給D/A轉換輸出給現場執行機構,控制其輸出,從而實現了現場化的閉環控制。
數字量指的是變量的輸入或輸出值只能是0或者1這兩種狀態中的一種。與模擬量輸入輸出任務相同,數字量處理任務也屬于周期性執行的任務,它負責讀取現場開關量狀態并完成對離散輸出的控制。相對來說讀取數字量輸入是比較簡單的任務,對數字量的基本操作,就是微處理器的相應的端口進行讀寫。比較復雜的是對于脈沖累計型的輸入信號和要求以預定義的一定頻率轉換輸出狀態的輸出信號,在嵌入式實時操作系統下可以通過設定任務的執行間隔來得到簡化
3.3 Web Server守護任務
服務器功能是通過Web Server守護任務來實現,它的服務是被動的,需要用戶對它進行訪問,然后響應用戶的請求。系統通過監聽來自客戶機的連接請求,一旦監聽到連接建立請求并建立連接后,接收來自客戶端的數據,并根據相應的命令返回所請求的頁面作為響應。任務實現的流程圖如圖3所示。

圖3 Web Server守護任務流程圖
3.4 通訊任務
網絡通信任務是基于C/S模式的,即客戶/服務器模式。現場設備作為服務方,它在等待客戶的請求,提供數據和信息,客戶方是控制方,它可以運行于工業現場的同等現場設備,也可以是遠程瀏覽器,客戶方提出請求,對應著雙方約定好的命令,現場設備在驗證命令后,開始根據不同的命令字發送相關數據或者修改本地參數變量。通訊任務主要完成兩方面的任務,一方面考慮到工業現場中,不同的控制節點之間有相互數據交換的需求,另一方面用于響應客戶端瀏覽器中嵌入的applet通過Socket連接向服務器請求實時數據的請求,二者的區別在于通過不同的通信端口向服務器請求數據。
通訊任務主要通過Socket編程實現,現場設備控制器和現場設備之間的通信采用TCP協議,通信端口選擇1000;而瀏覽器內嵌的applet與服務器的通訊則選擇2000端口。應用于工業現場的程序應該是“健壯”的,然而在實際中,已經打開的TCP Socket連接隨時可能會中斷,原因是多方面的,可能是網絡問題引起的連接超時,或者是接收端發出了RST重置標識或放棄連接等等。因此在應用程序中設計了一個狀態機檢測機制,隨時檢測TCP Socket上的連接狀態,根據當前連接的不同狀態采取相應的處理方法,這樣就增強了程序的“健壯性”。程序中先后對兩個端口的Socket連接進行監視并根據其不同狀態轉入不同條件下處理,由于對兩個端口的操作原理基本相同,區別在于Socket連接建立后,自定義的通信內容的不同所引起的服務器對其響應的不同。
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)








評論