基于嵌入式實(shí)時(shí)操作系統(tǒng)的現(xiàn)場(chǎng)控制系統(tǒng)
3.2 模擬量輸入輸出與數(shù)字量處理任務(wù)
模擬量輸入輸出任務(wù)屬于周期性執(zhí)行的任務(wù)。它包括幾個(gè)組成部分:模擬信號(hào)量的輸入,控制算法的運(yùn)算,產(chǎn)生控制輸出。任務(wù)首先從物理通道讀取經(jīng)過(guò)A/D轉(zhuǎn)換后的傳感器信號(hào),對(duì)其進(jìn)行平滑濾波、工程單位轉(zhuǎn)換和報(bào)警檢測(cè)后與控制給定值進(jìn)行比較,其誤差經(jīng)過(guò)內(nèi)置的PID控制功能塊運(yùn)算后,得到相應(yīng)的控制量,此控制量經(jīng)過(guò)工程單位轉(zhuǎn)換后直接送給D/A轉(zhuǎn)換輸出給現(xiàn)場(chǎng)執(zhí)行機(jī)構(gòu),控制其輸出,從而實(shí)現(xiàn)了現(xiàn)場(chǎng)化的閉環(huán)控制。
數(shù)字量指的是變量的輸入或輸出值只能是0或者1這兩種狀態(tài)中的一種。與模擬量輸入輸出任務(wù)相同,數(shù)字量處理任務(wù)也屬于周期性執(zhí)行的任務(wù),它負(fù)責(zé)讀取現(xiàn)場(chǎng)開(kāi)關(guān)量狀態(tài)并完成對(duì)離散輸出的控制。相對(duì)來(lái)說(shuō)讀取數(shù)字量輸入是比較簡(jiǎn)單的任務(wù),對(duì)數(shù)字量的基本操作,就是微處理器的相應(yīng)的端口進(jìn)行讀寫(xiě)。比較復(fù)雜的是對(duì)于脈沖累計(jì)型的輸入信號(hào)和要求以預(yù)定義的一定頻率轉(zhuǎn)換輸出狀態(tài)的輸出信號(hào),在嵌入式實(shí)時(shí)操作系統(tǒng)下可以通過(guò)設(shè)定任務(wù)的執(zhí)行間隔來(lái)得到簡(jiǎn)化
3.3 Web Server守護(hù)任務(wù)
服務(wù)器功能是通過(guò)Web Server守護(hù)任務(wù)來(lái)實(shí)現(xiàn),它的服務(wù)是被動(dòng)的,需要用戶(hù)對(duì)它進(jìn)行訪問(wèn),然后響應(yīng)用戶(hù)的請(qǐng)求。系統(tǒng)通過(guò)監(jiān)聽(tīng)來(lái)自客戶(hù)機(jī)的連接請(qǐng)求,一旦監(jiān)聽(tīng)到連接建立請(qǐng)求并建立連接后,接收來(lái)自客戶(hù)端的數(shù)據(jù),并根據(jù)相應(yīng)的命令返回所請(qǐng)求的頁(yè)面作為響應(yīng)。任務(wù)實(shí)現(xiàn)的流程圖如圖3所示。
圖3 Web Server守護(hù)任務(wù)流程圖
3.4 通訊任務(wù)
網(wǎng)絡(luò)通信任務(wù)是基于C/S模式的,即客戶(hù)/服務(wù)器模式。現(xiàn)場(chǎng)設(shè)備作為服務(wù)方,它在等待客戶(hù)的請(qǐng)求,提供數(shù)據(jù)和信息,客戶(hù)方是控制方,它可以運(yùn)行于工業(yè)現(xiàn)場(chǎng)的同等現(xiàn)場(chǎng)設(shè)備,也可以是遠(yuǎn)程瀏覽器,客戶(hù)方提出請(qǐng)求,對(duì)應(yīng)著雙方約定好的命令,現(xiàn)場(chǎng)設(shè)備在驗(yàn)證命令后,開(kāi)始根據(jù)不同的命令字發(fā)送相關(guān)數(shù)據(jù)或者修改本地參數(shù)變量。通訊任務(wù)主要完成兩方面的任務(wù),一方面考慮到工業(yè)現(xiàn)場(chǎng)中,不同的控制節(jié)點(diǎn)之間有相互數(shù)據(jù)交換的需求,另一方面用于響應(yīng)客戶(hù)端瀏覽器中嵌入的applet通過(guò)Socket連接向服務(wù)器請(qǐng)求實(shí)時(shí)數(shù)據(jù)的請(qǐng)求,二者的區(qū)別在于通過(guò)不同的通信端口向服務(wù)器請(qǐng)求數(shù)據(jù)。
通訊任務(wù)主要通過(guò)Socket編程實(shí)現(xiàn),現(xiàn)場(chǎng)設(shè)備控制器和現(xiàn)場(chǎng)設(shè)備之間的通信采用TCP協(xié)議,通信端口選擇1000;而瀏覽器內(nèi)嵌的applet與服務(wù)器的通訊則選擇2000端口。應(yīng)用于工業(yè)現(xiàn)場(chǎng)的程序應(yīng)該是“健壯”的,然而在實(shí)際中,已經(jīng)打開(kāi)的TCP Socket連接隨時(shí)可能會(huì)中斷,原因是多方面的,可能是網(wǎng)絡(luò)問(wèn)題引起的連接超時(shí),或者是接收端發(fā)出了RST重置標(biāo)識(shí)或放棄連接等等。因此在應(yīng)用程序中設(shè)計(jì)了一個(gè)狀態(tài)機(jī)檢測(cè)機(jī)制,隨時(shí)檢測(cè)TCP Socket上的連接狀態(tài),根據(jù)當(dāng)前連接的不同狀態(tài)采取相應(yīng)的處理方法,這樣就增強(qiáng)了程序的“健壯性”。程序中先后對(duì)兩個(gè)端口的Socket連接進(jìn)行監(jiān)視并根據(jù)其不同狀態(tài)轉(zhuǎn)入不同條件下處理,由于對(duì)兩個(gè)端口的操作原理基本相同,區(qū)別在于Socket連接建立后,自定義的通信內(nèi)容的不同所引起的服務(wù)器對(duì)其響應(yīng)的不同。
linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論