基于以太網(wǎng)的遠程液位監(jiān)控系統(tǒng)設(shè)計與開發(fā)
引言
在工業(yè)過程控制系統(tǒng)中液位對象是一種十分普遍的對象,對液位對象的監(jiān)測與控制是系統(tǒng)實現(xiàn)其功能必不可少的環(huán)節(jié)。在過去屏歹,液位的監(jiān)控裝置多數(shù)是使用單片機實現(xiàn)點對點控制和顯示[1],工作人員必須到工業(yè)現(xiàn)場操作這些儀器之碗,且單片機功能十分有限蝙眶,只能完成一些相對簡單的操作。
隨著網(wǎng)絡(luò)通信技術(shù)的發(fā)展褪那,以太網(wǎng)在工業(yè)控制領(lǐng)域的應(yīng)用日趨廣泛牵深,基于以太網(wǎng)的遠程監(jiān)控系統(tǒng)實現(xiàn)遠程監(jiān)測、控制和管理的有效集成[2]喷围。使用遠程監(jiān)控系統(tǒng)通過網(wǎng)絡(luò)對工業(yè)生產(chǎn)過程進行監(jiān)測粉越,及時了解現(xiàn)場信息职涛,快速進行決策。
遠程控制的關(guān)鍵技術(shù)在于如何解決工業(yè)現(xiàn)場設(shè)備的網(wǎng)絡(luò)接入問題薄罕。目前揖们,主要有兩種方法:一種是使用PC機通過PC機端口(如RS232、USB接口)或數(shù)據(jù)采集卡來采集數(shù)據(jù)同時提供網(wǎng)絡(luò)接口[3]妆崇,這種方法利用強大的PC機軟件支持捣潭,容易實現(xiàn)網(wǎng)絡(luò)通信功能,但是PC機端口資源有限猜休,專用采集卡成本較高军霸,難以推廣;另一種就是在現(xiàn)場使用嵌入式系統(tǒng)實現(xiàn)網(wǎng)絡(luò)接入,嵌入式系統(tǒng)具有功耗低飞灰、體積小幻彪、成本低、可靠性高卵渴、實時性強等特點栏妖,使用在工業(yè)控制現(xiàn)場比較合適。
本文將嵌入式技術(shù)和網(wǎng)絡(luò)技術(shù)相結(jié)合奖恰,在現(xiàn)場利用嵌入式系統(tǒng)實現(xiàn)網(wǎng)絡(luò)通信功能以實時傳輸液位信號和控制信號吊趾,在客戶端PC機上通過套接字編程實現(xiàn)與現(xiàn)場嵌入式系統(tǒng)的遠程通信,從而達到對遠程液位的監(jiān)控瑟啃。
1 遠程液位監(jiān)控系統(tǒng)結(jié)構(gòu)
本文設(shè)計的遠程液位監(jiān)控系統(tǒng)結(jié)構(gòu)如圖1所示:其中论泛,處理器芯片采用ARM微處理器S3C44B0X;S3C44B0X自帶8路10位ADC進行A/D轉(zhuǎn)換來采集液位數(shù)據(jù),通過擴展DAC0832實現(xiàn)D/A轉(zhuǎn)換以輸出控制量;S3C44B0X連接10M以太網(wǎng)卡RTL8019AS蛹屿,提供網(wǎng)絡(luò)功能的硬件接口;μC/OS-Ⅱ移植到S3C44B0X上屁奏,提供操作系統(tǒng)的支持,方便了應(yīng)用程序的開發(fā)和對整個系統(tǒng)的管理;嵌入式TCP/IP協(xié)議棧LwIP移植到μC/OS-Ⅱ平臺上错负,實現(xiàn)對網(wǎng)絡(luò)數(shù)據(jù)的軟件處理坟瓢,從而為嵌入式系統(tǒng)提供網(wǎng)絡(luò)通信功能;遠程PC機客戶端登錄到嵌入式系統(tǒng)服務(wù)器上,通過以太網(wǎng)實現(xiàn)兩端數(shù)據(jù)的實時交互犹撒。
圖1 遠程液位監(jiān)控系統(tǒng)結(jié)構(gòu)圖
2 硬件介紹與設(shè)計
三星的S3C44B0X微處理器芯片采用ARM公司16/32位ARM7TDMI RISC結(jié)構(gòu)的CPU核折联,主頻為66MHz,通過擴展一系列通用外圍部件栈站,提供豐富的外設(shè)功能疟弹。它的存儲系統(tǒng)具有8個存儲體,每個有32MB的存儲空間歇刺,通過nGCS0-7這8個片選來分配福晋。本文使用的設(shè)計方案中nGCS0接Flash芯片AM29LV160DB,起始地址0x00000000,大小為2MB逼税,nGCS6接SDRAM芯片HY57V641620ET-7堕武,起始地址為0x0c000000,大小為8MB惜选,nGCS3接RTL8019AS版痪,起始地址為0x06000000。
RTL8019AS是一款高度集成的全雙工以太網(wǎng)控制器狞荤,收發(fā)可同時達到10Mbps的速度;支持8位、16位數(shù)據(jù)總線棋捷,8個中斷請求線可供選擇;支持UTP脸狸、AUI和BNC的自動檢測;內(nèi)置16K的SRAM,用于數(shù)據(jù)緩沖藐俺,以256B為單位的分頁結(jié)構(gòu)炊甲,可以自行分配用于收發(fā)的分頁的大小和位置,一般前12頁用于發(fā)送緩沖欲芹,后52頁用于接收緩沖;硬件自帶收發(fā)CRC校驗卿啡、FIFO邏輯隊列等,減少了主CPU處理網(wǎng)絡(luò)數(shù)據(jù)的工作量菱父。S3C44B0X對RTL8019AS的操作主要集中在對網(wǎng)卡寄存器的讀寫和網(wǎng)卡內(nèi)SRAM的處理颈娜。
3 軟件設(shè)計
3.1 基于嵌入式系統(tǒng)的服務(wù)器端程序設(shè)計
3.1.1 S3C44B0X上μC/OS-Ⅱ的移植
嵌入式操作系統(tǒng)μC/OS-Ⅱ可以運行于各種不同類型的微處理器上,其內(nèi)核小浙宜、效率高官辽,并且具有高度的模塊化和可移植性,支持多任務(wù)實時調(diào)度粟瞬,擴展后可支持網(wǎng)絡(luò)功能同仆、圖形界面等,使得應(yīng)用程序的開發(fā)更加簡單裙品,功能更加豐富俗批。
在使用μC/OS-Ⅱ之前,要先將它移植到S3C44B0X上斩憾,移植工作主要包括三個方面[4]:
∈胶ァ(1) 設(shè)置與處理器和編譯器相關(guān)的代碼,包括一系列數(shù)據(jù)類型的定義淳习,開中斷宏芳迅、關(guān)中斷宏的實現(xiàn),定義堆棧的生長方向;
」菝巍(2) 用C語言編寫6個操作系統(tǒng)相關(guān)的函數(shù):OSTaskStkInit()初始化任務(wù)的堆棧結(jié)構(gòu)蕾胶,和5個鉤子函數(shù)OSTaskDelHook()、OSTaskSwHook()、OSTaskStatHook()刘耀、OSTimeHook()泉互、OSTaskCreateHook();
(3) 用匯編語言編寫4個與處理器相關(guān)的函數(shù):運行優(yōu)先級最高的就緒任務(wù)函數(shù)OSStartHighRdy()召藻,任務(wù)級的任務(wù)切換函數(shù)OS_TASK_SW()严钞,中斷級的任務(wù)切換函數(shù)OSIntCtxSw(),時鐘節(jié)拍服務(wù)函數(shù)OSTickISR()忆某。
3.1.2 μC/OS-Ⅱ上TCP/IP協(xié)議棧的實現(xiàn)
LwIP(Light-weight IP)是瑞典計算機科學(xué)院(Swedish Institute of Computer Science)的Adam Dunkels等開發(fā)的一套開源的TCP/IP協(xié)議棧[5]点待,LwIP在保持TCP/IP協(xié)議主要功能的基礎(chǔ)上減少對RAM的占用,這使得它適合在低端嵌入式系統(tǒng)中使用弃舒。
LwIP協(xié)議棧在設(shè)計時已經(jīng)把所有與硬件癞埠、操作系統(tǒng)、編譯器等移植相關(guān)的部分獨立出來聋呢,放在/src/arch目錄下苗踪。因此LwIP在μC/OS-Ⅱ上的實現(xiàn)就是修改這個目錄下的文件[6]。
∠髅獭(1) 與CPU通铲、編譯器相關(guān)的部分
主要是cc.h、cpu.h器贩、peRF.h文件中有關(guān)數(shù)據(jù)長度颅夺、字的高低位順序等的定義,這些應(yīng)該與實現(xiàn)μC/OS-Ⅱ時參數(shù)的定義保持一致蛹稍。另外碗啄,一般情況下C語言的結(jié)構(gòu)體struct是4字節(jié)對齊的,但是在處理數(shù)據(jù)包的時候队乔,LwIP使用的是通過結(jié)構(gòu)體中不同數(shù)據(jù)的長度來讀取相應(yīng)的數(shù)據(jù)隅贫,所以,一定要在定義struct的時候使用_packed關(guān)鍵字拾肚,讓編譯器放棄struct的字節(jié)對齊做销。
(2) 與操作系統(tǒng)相關(guān)的部分
LwIP中需要使用信號量通信奶匆,所以在sys_arch.h对夹、sys_arch.c中應(yīng)實現(xiàn)信號量結(jié)構(gòu)體sys_sem_t,和相關(guān)的信號量處理函數(shù):包括創(chuàng)建一個信號量結(jié)構(gòu)sys_sem_new()晕围,釋放一個信號量結(jié)構(gòu)sys_sem_free()极哨,發(fā)送信號量sys_sem_signal(),請求信號量sys_arch_sem_wait()黑寻。
LwIP使用消息隊列來緩沖硼屁、傳遞數(shù)據(jù)報文,因此要在sys_arch.h、sys_arch.c中實現(xiàn)消息隊列結(jié)構(gòu)體sys_mbox_t赠懊,以及相應(yīng)的操作函數(shù):包括創(chuàng)建一個消息隊列sys_mbox_new()蛛挚,釋放一個消息隊列sys_mbox_free(),向消息隊列發(fā)送消息sys_mbox_post()囚企,從消息隊列中獲取消息sys_arch_mbox_fetch()丈咐。
LwIP中每個與外界網(wǎng)絡(luò)連接的線程都有自己的timeout屬性,即等待超時時間龙宏,移植工作需要實現(xiàn)sys_arch_timeouts()函數(shù)棵逊,返回當前正處于運行態(tài)的線程所對應(yīng)的timeout隊列指針。
LwIP中網(wǎng)絡(luò)數(shù)據(jù)的處理需要線程來操作银酗,所以需要實現(xiàn)創(chuàng)建新線程函數(shù)sys_thread_new()辆影。而在μC/OS-Ⅱ中,沒有線程的概念花吟,只有任務(wù)。因此必須要把創(chuàng)建新任務(wù)的函數(shù)OSTaskCreate()封裝一下厨姚,才可以實現(xiàn)sys_thread_new()衅澈。
(3) 相關(guān)庫函數(shù)的實現(xiàn)
LwIP協(xié)議棧中用到了8個外部函數(shù)谬墙,主要是來完成16位數(shù)據(jù)的高低字節(jié)交換今布、32位數(shù)據(jù)的大小頭對調(diào)、返回字符串長度育另、字符串比較掩半、內(nèi)存數(shù)據(jù)塊拷貝、指定長度的數(shù)據(jù)塊清零等功能衷谋,與系統(tǒng)或編譯器有關(guān)溉谣,需要用戶實現(xiàn)。
“翊纭(4) 網(wǎng)絡(luò)設(shè)備驅(qū)動程序
在LwIP中可以有多個網(wǎng)絡(luò)接口胧含,每個網(wǎng)絡(luò)接口都對應(yīng)了一個netif結(jié)構(gòu),這個netif包含了相應(yīng)網(wǎng)絡(luò)接口的屬性怠竞、收發(fā)函數(shù)费控。在網(wǎng)絡(luò)設(shè)備驅(qū)動程序中主要就是實現(xiàn)四個網(wǎng)絡(luò)接口函數(shù):網(wǎng)卡初始化、網(wǎng)卡接收數(shù)據(jù)哨遭、網(wǎng)卡發(fā)送數(shù)據(jù)以及網(wǎng)卡中斷處理函數(shù)咸培。
3.2 PC機上客戶端程序的設(shè)計
VC++6.0環(huán)境下客戶端程序?qū)崿F(xiàn)包括以下幾個部分:
(1) 建立客戶端的Socket:客戶端應(yīng)用程序首先構(gòu)造一個CAsyncSocket[7]對象CltSock骑跳,然后調(diào)用CltSock.Create()函數(shù)來建立CltSock實體疑跑。
(2) 提出連接請求:客戶端套接字CltSock通過調(diào)用(暫不可見)nnect(strAddr,nPort)函數(shù)向服務(wù)器套接字提出連接請求。
∠灰(3) 傳輸數(shù)據(jù):在客戶端應(yīng)用程序中重載消息處理函數(shù)OnReceive()和OnSend()裆熙。在OnReceive()中通過調(diào)用CltSock.Receive()函數(shù)從服務(wù)器端接收數(shù)據(jù);在OnSend()中通過調(diào)用CltSock.Send()函數(shù)向服務(wù)器端發(fā)送數(shù)據(jù)。
∏菪Α(4) 關(guān)閉連接:客戶端套接字CltSock通過調(diào)用CltSock.Close()函數(shù)來關(guān)閉連接入录。
4 遠程液位監(jiān)控應(yīng)用程序的開發(fā)
本文設(shè)計完成的基于以太網(wǎng)的遠程液位繼電自整定PID控制系統(tǒng),其控制算法在遠端主機(客戶機)上實現(xiàn)佳镜,兩端通過TCP協(xié)議通信僚稿,本地的嵌入式系統(tǒng) (服務(wù)器)上一方面實現(xiàn)對網(wǎng)絡(luò)數(shù)據(jù)的處理,一方面完成對液位高度的采集與控制;遠端PC機上一方面處理網(wǎng)絡(luò)上的實時數(shù)據(jù)蟀伸,一方面通過PID計算出控制量蚀同,顯示相關(guān)參數(shù)。實時液位變化狀況如圖2所示啊掏,從圖中可以看出蠢络,實際液位(紅色曲線)能夠穩(wěn)定在液位設(shè)定值(藍色曲線)處。同時迟蜜,從用戶界面上既可以讀出液位高度值刹孔,PID自整定參數(shù)等,還可以改變液位高度設(shè)定值略匕,從而真正實現(xiàn)了液位對象的遠程監(jiān)控缓贤。
圖2 遠程液位繼電自整定PID控制效果圖
5 結(jié)語
本文設(shè)計解決了在嵌入式系統(tǒng)中實現(xiàn)網(wǎng)絡(luò)功能的問題,引入并實現(xiàn)了一種新的設(shè)計方案熟督,即采用三星ARM7處理器S3C44B0X+Realtek的10M網(wǎng)卡RTL8019AS硬件組合卿黍,通過在μC/OS-Ⅱ操作系統(tǒng)內(nèi)核的支持下,添加嵌入式TCP/IP協(xié)議棧LwIP雨株,來實現(xiàn)網(wǎng)絡(luò)通信的功能见拴,與PC機客戶端的Socket通信,在此基礎(chǔ)上開發(fā)了基于以太網(wǎng)的遠程液位監(jiān)控系統(tǒng)贫迫,達到了良好的控制效果宇赁。可以看出芹蟹,這類系統(tǒng)在遠程監(jiān)控中的具有良好的應(yīng)用前景凳嘁。
本文作者創(chuàng)新點:本文將嵌入式網(wǎng)絡(luò)技術(shù)引入到工業(yè)過程遠程監(jiān)控領(lǐng)域,提出了自己的設(shè)計方案绍绽,并成功開發(fā)了一個遠程液位監(jiān)控系統(tǒng)只磷。
聲明:本網(wǎng)站所收集的部分公開資料來源于互聯(lián)網(wǎng),轉(zhuǎn)載的目的在于傳遞更多信息及用于網(wǎng)絡(luò)分享泌绣,并不代表本站贊同其觀點和對其真實性負責(zé)钮追,也不構(gòu)成任何其他建議预厌。本站部分作品是由網(wǎng)友自主投稿和發(fā)布、編輯整理上傳元媚,對此類作品本站僅提供交流平臺轧叽,不為其版權(quán)負責(zé)。如果您發(fā)現(xiàn)網(wǎng)站上所用視頻刊棕、圖片炭晒、文字如涉及作品版權(quán)問題,請第一時間告知甥角,我們將根據(jù)您提供的證明材料確認版權(quán)并按國家標準支付稿酬或立即刪除內(nèi)容网严,以保證您的權(quán)益!聯(lián)系電話:010-58612588 或 Email:editor@mmsonline.com.cn嗤无。
- 暫無反饋
編輯推薦
- 2025新年特刊:打造新質(zhì)生產(chǎn)力,智啟未來新篇章
- 定義制造業(yè)未來的數(shù)控加工中心技術(shù)專題
- 航空航天及交通領(lǐng)域先進制造技術(shù)應(yīng)用專題
- 解碼消費電子產(chǎn)品生產(chǎn)的數(shù)字化之路技術(shù)專題
- 精密智能機床皂甘,助力制造升級技術(shù)專題
- 汽車輕量化驅(qū)動下的零部件加工應(yīng)用專題
- 高性能銑刀實現(xiàn)高精加工生產(chǎn)技術(shù)專題
- 航空航天發(fā)動機解決方案專題
- 高效齒輪加工生產(chǎn)技術(shù)方案專題
- 金屬加工液的性能不止?jié)櫥夹g(shù)應(yīng)用專題