以太網遠程監控系統實現遠程監測控制和管理技術設計開發
LwIP中需要使用信號量通信,所以在sys_arch.h、sys_arch.c中應實現信號量結構體sys_sem_t,和相關的信號量處理函數:包括創建一個信號量結構sys_sem_new(),釋放一個信號量結構sys_sem_free(),發送信號量sys_sem_signal(),請求信號量sys_arch_sem_wait()。
LwIP使用消息隊列來緩沖、傳遞數據報文,因此要在sys_arch.h、sys_arch.c中實現消息隊列結構體sys_mbox_t,以及相應的操作函數:包括創建一個消息隊列sys_mbox_new(),釋放一個消息隊列sys_mbox_free(),向消息隊列發送消息sys_mbox_post(),從消息隊列中獲取消息sys_arch_mbox_fetch()。
LwIP中每個與外界網絡連接的線程都有自己的timeout屬性,即等待超時時間,移植工作需要實現sys_arch_timeouts()函數,返回當前正處于運行態的線程所對應的timeout隊列指針。
LwIP中網絡數據的處理需要線程來操作,所以需要實現創建新線程函數sys_thread_new()。而在μC/OS-Ⅱ中,沒有線程的概念,只有任務。因此必須要把創建新任務的函數OSTaskCreate()封裝一下,才可以實現sys_thread_new()。
(3) 相關庫函數的實現
LwIP協議棧中用到了8個外部函數,主要是來完成16位數據的高低字節交換、32位數據的大小頭對調、返回字符串長度、字符串比較、內存數據塊拷貝、指定長度的數據塊清零等功能,與系統或編譯器有關,需要用戶實現。
(4) 網絡設備驅動程序
在LwIP中可以有多個網絡接口,每個網絡接口都對應了一個netif結構,這個netif包含了相應網絡接口的屬性、收發函數。在網絡設備驅動程序中主要就是實現四個網絡接口函數:網卡初始化、網卡接收數據、網卡發送數據以及網卡中斷處理函數。
3.2 PC機上客戶端程序的設計
VC++6.0環境下客戶端程序實現包括以下幾個部分:
(1) 建立客戶端的Socket:客戶端應用程序首先構造一個CAsyncSocket[7]對象CltSock,然后調用CltSock.Create()函數來建立CltSock實體。
(2) 提出連接請求:客戶端套接字CltSock通過調用CltSock.Connect(strAddr,nPort)函數向服務器套接字提出連接請求。
(3) 傳輸數據:在客戶端應用程序中重載消息處理函數OnReceive()和OnSend()。在OnReceive()中通過調用CltSock.Receive()函數從服務器端接收數據;在OnSend()中通過調用CltSock.Send()函數向服務器端發送數據。
(4) 關閉連接:客戶端套接字CltSock通過調用CltSock.Close()函數來關閉連接。
4 遠程液位監控應用程序的開發
本文設計完成的基于以太網的遠程液位繼電自整定PID控制系統,其控制算法在遠端主機(客戶機)上實現,兩端通過TCP協議通信,本地的嵌入式系統 (服務器)上一方面實現對網絡數據的處理,一方面完成對液位高度的采集與控制;遠端PC機上一方面處理網絡上的實時數據,一方面通過PID計算出控制量,顯示相關參數。實時液位變化狀況如圖2所示,從圖中可以看出,實際液位(紅色曲線)能夠穩定在液位設定值(藍色曲線)處。同時,從用戶界面上既可以讀出液位高度值,PID自整定參數等,還可以改變液位高度設定值,從而真正實現了液位對象的遠程監控。
圖2 遠程液位繼電自整定PID控制效果圖
本文設計解決了在嵌入式系統中實現網絡功能的問題,引入并實現了一種新的設計方案,即采用三星ARM7處理器S3C44B0X+Realtek的10M網卡RTL8019AS硬件組合,通過在μC/OS-Ⅱ操作系統內核的支持下,添加嵌入式TCP/IP協議棧LwIP,來實現網絡通信的功能,與PC機客戶端的Socket通信,在此基礎上開發了基于以太網的遠程液位監控系統,達到了良好的控制效果。可以看出,這類系統在遠程監控中的具有良好的應用前景。
本文作者創新點:本文將嵌入式網絡技術引入到工業過程遠程監控領域,提出了自己的設計方案,并成功開發了一個遠程液位監控系統。
評論