利用嵌入式技術(shù),給工業(yè)系統(tǒng)安裝智能控制器,對(duì)其進(jìn)行在線監(jiān)控和檢測,就能及時(shí)發(fā)現(xiàn)故障并處理,從而不但保證工業(yè)系統(tǒng)始終處于良好的運(yùn)行狀態(tài),同時(shí)也減輕值機(jī)維護(hù)人員的負(fù)擔(dān)。面向工業(yè)應(yīng)用的智能控制系統(tǒng)一般包括如下功能:多路模擬量和開關(guān)量的實(shí)時(shí)采集并顯示、通過控制器或上位機(jī)進(jìn)行啟停等命令控制、工作狀態(tài)采集并記錄、數(shù)據(jù)上傳、故障記錄并報(bào)警、歷史數(shù)據(jù)保存、定時(shí)開關(guān)機(jī)等,同時(shí)還應(yīng)具有網(wǎng)絡(luò)數(shù)據(jù)傳輸與控制和軟件升級(jí)功能。傳統(tǒng)的智能控制器一般多采用8位單片機(jī)實(shí)現(xiàn),但隨著實(shí)際功能復(fù)雜度的增加,尤其是實(shí)現(xiàn)大量數(shù)據(jù)采集和保存、彩色圖形交互和網(wǎng)絡(luò)通信等,單片機(jī)已很難滿足實(shí)時(shí)控制的要求。因此,采用32位ARM處理器來實(shí)現(xiàn)的方案是較為理想的選擇。 1 智能控制器硬件平臺(tái) 根據(jù)功能需求,系統(tǒng)主控芯片采用S3C44B0X。該處理器是基于ARM7TDMI內(nèi)核SOC芯片,片內(nèi)集成LCD控制器、SDRAM控制器、RTC、UART和ADC等模塊,這為硬件系統(tǒng)的設(shè)計(jì)帶來方便同時(shí)也提供系統(tǒng)可靠性。除此之外,硬件上還需擴(kuò)展存儲(chǔ)系統(tǒng)、鍵盤液晶、CPLD芯片、串口通信、網(wǎng)卡通信等模塊。存儲(chǔ)系統(tǒng)選用較大容量的Nor Flash來存放代碼和工作過程中需記錄的數(shù)據(jù)。LCD采用320×240的STN彩色液晶屏幕,模擬量數(shù)據(jù)采集采用內(nèi)部ADC和外擴(kuò)多路選擇器,開關(guān)量采集與控制采用CPLD芯片來實(shí)現(xiàn)I/O口的擴(kuò)展。系統(tǒng)硬件總體框圖如圖1所示: 圖1 系統(tǒng)硬件框圖 2 智能控制器軟件總體方案概述 智能控制器軟件部分主要包括啟動(dòng)模塊、系統(tǒng)初始化模塊實(shí)時(shí)時(shí)鐘顯示、IIC鍵盤、串口通信、液晶顯示、網(wǎng)絡(luò)通信、數(shù)據(jù)采集及控制、數(shù)據(jù)保存及故障記錄和自動(dòng)升級(jí)等模塊.軟件系統(tǒng)流程圖見圖2。 3 軟件主要設(shè)計(jì)方法 3.1 IIC鍵盤和開關(guān)量處理 本系統(tǒng)采用一片CPLD來擴(kuò)展I/O端口,并利用S3C44B0X處理器的PF1和PF5等IO端口來模擬IIC協(xié)議完成數(shù)據(jù)通信。首先使用vhdl硬件描述語言設(shè)計(jì)IIC協(xié)議的硬件電路,并下載到CPLD芯片中,主要完成對(duì)外部端口的輸入采集和輸出控制以及與主處理器的通信。按照此協(xié)議標(biāo)準(zhǔn),編寫數(shù)據(jù)傳輸?shù)膯?dòng)停止、數(shù)據(jù)接收發(fā)送以及確認(rèn)位接收等子程序。調(diào)試時(shí)應(yīng)注意SDA和SCL信號(hào)的時(shí)序關(guān)系。由于此種方式下處理器只能通過查詢方式才能判斷是否有鍵按下,因此本設(shè)計(jì)采用定時(shí)器定時(shí)幾毫秒來讀IIC接口片內(nèi)數(shù)據(jù),主程序判斷按鍵標(biāo)記。此外,系統(tǒng)的32路開關(guān)量實(shí)時(shí)控制也是通過此接口來實(shí)現(xiàn)。 3.2 GUI顯示 良好的人機(jī)交互設(shè)計(jì)給系統(tǒng)的操作帶來方便。嵌入式系統(tǒng)中的GUI設(shè)計(jì)應(yīng)綜合考慮代碼占用的資源、GUI響應(yīng)的速度和易于使用三個(gè)因素。若移植成熟的GUI源碼,占用資源太大,響應(yīng)速度相對(duì)較慢,本設(shè)計(jì)采用面向?qū)ο蟮脑O(shè)計(jì)方法,合理的定義了一些數(shù)據(jù)結(jié)構(gòu),使得圖形化顯示既滿足要求,又具有良好的擴(kuò)展性。 依據(jù)人機(jī)界面設(shè)計(jì)的具體要求,分析顯示數(shù)據(jù)的特點(diǎn),為方便參數(shù)的顯示和處理我們定義了一系列的數(shù)據(jù)結(jié)構(gòu),從而使得系統(tǒng)的顯示和修改異常方便。首先確定系統(tǒng)需要多少個(gè)窗口,每個(gè)窗口有多少個(gè)菜單,畫出窗口之間的變遷圖,可以知道所有的窗口應(yīng)當(dāng)組成一個(gè)樹形結(jié)構(gòu)。主要的數(shù)據(jù)結(jié)構(gòu)如圖2-5所示。 軟件設(shè)計(jì)時(shí),首先按照定義的數(shù)據(jù)結(jié)構(gòu)定義每屏的顯示數(shù)據(jù)和窗口處理函數(shù),當(dāng)有鍵按下時(shí),系統(tǒng)依據(jù)當(dāng)前鍵值、當(dāng)前窗口號(hào)和當(dāng)前光標(biāo)確定系統(tǒng)按鍵后的新窗口號(hào)和當(dāng)前光標(biāo),然后根據(jù)窗口號(hào)和光標(biāo)從該窗口的數(shù)據(jù)區(qū)中取出將要顯示的數(shù)據(jù)給窗口緩沖區(qū),液晶顯示的界面就是從窗口緩沖區(qū)中將數(shù)據(jù)直接取出并顯示。 依據(jù)顯示窗口中數(shù)據(jù)處理的行為,可把顯示方法分為兩種。一種是利用上述的顯示方法,具有良好的統(tǒng)一性,另一種的單獨(dú)處理。因?yàn)樵陲@示的各個(gè)界面中,有些界面數(shù)據(jù)處理特別少,有些處理特別多,比如參數(shù)修改窗口界面,此時(shí)需要把這些窗口獨(dú)立出來單獨(dú)處理。當(dāng)按鍵調(diào)用此窗口時(shí),系統(tǒng)調(diào)用此窗口的專用窗口處理函數(shù)來處理,直到檢測到退出此窗口的消息時(shí),才結(jié)束此操作,調(diào)用另外模塊。在實(shí)際工程中,合理利用這兩種顯示方法對(duì)于復(fù)雜行為的人機(jī)交互的處理帶來方便。一般是系統(tǒng)的主要頂級(jí)窗口顯示使用統(tǒng)一顯示,而葉子窗口使用單獨(dú)處理較好。 3.3 數(shù)據(jù)采集及控制 模擬量數(shù)據(jù)采集主要含有采集算法和數(shù)據(jù)處理兩部分。為了確保采集的正確性,本文采用中位值平均濾波方法。采集的數(shù)據(jù)多達(dá)32路,而且被系統(tǒng)頻繁執(zhí)行,因此好的設(shè)計(jì)結(jié)構(gòu)至關(guān)重要。在綜合權(quán)衡多路開關(guān)切換時(shí)間、啟動(dòng)轉(zhuǎn)換切換時(shí)間和數(shù)據(jù)轉(zhuǎn)換時(shí)間后,采用一路采集多次方法。采集模塊在啟動(dòng)當(dāng)前路模數(shù)轉(zhuǎn)換的同時(shí),對(duì)前一路的采集進(jìn)行濾波處理并保存顯示,這樣節(jié)約了采集模塊所用的時(shí)間。 3.4 網(wǎng)絡(luò)通信模塊 網(wǎng)絡(luò)通信主要完成網(wǎng)卡芯片的初始化、數(shù)據(jù)的收發(fā)以及網(wǎng)絡(luò)協(xié)議棧的移植。本系統(tǒng)網(wǎng)卡芯片RTL8019AS內(nèi)含16KRAM,用作發(fā)送和接收緩沖區(qū)。當(dāng)有數(shù)據(jù)過來,通過本地DMA將數(shù)據(jù)從網(wǎng)線拷貝到網(wǎng)卡接收緩沖區(qū),當(dāng)緩沖區(qū)滿時(shí),再通過遠(yuǎn)程DMA將數(shù)據(jù)拷貝到內(nèi)存供處理器處理。 網(wǎng)卡芯片的驅(qū)動(dòng)程序主要通過對(duì)網(wǎng)卡芯片內(nèi)部一系列寄存器的配置來實(shí)現(xiàn)網(wǎng)卡的復(fù)位、物理地址配置、讀寫緩沖區(qū)指針的配置和數(shù)據(jù)收發(fā)配置等。編寫程序過程中應(yīng)熟悉網(wǎng)卡芯片前32個(gè)地址空間的所完成的功能和操作方法,從而使網(wǎng)卡能正常工作。當(dāng)完成了驅(qū)動(dòng)程序后,就需要移植TCP/IP協(xié)議棧。在熟悉ARP、IP、ICMP、TCP、UDP、TELNET等協(xié)議以及各種公開源碼的協(xié)議棧的基礎(chǔ)上,本文選用代碼小、效率高的uIP協(xié)議棧。在調(diào)試的過程中,依據(jù)網(wǎng)絡(luò)原理的分層結(jié)構(gòu)以及網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)拇虬徒獍^程,一層一層的調(diào)試,并用VC編寫一些網(wǎng)絡(luò)截包程序和收發(fā)程序來聯(lián)合調(diào)試,確保數(shù)據(jù)在傳輸過程中收發(fā)正常并按正確的方式流動(dòng)。此外,調(diào)試過程應(yīng)注意數(shù)據(jù)寬度以及邊界對(duì)齊問題,否則數(shù)據(jù)將不能正確收發(fā)。 4 小結(jié) 本智能控制器的設(shè)計(jì)不僅完成了基本的人機(jī)界面和輸入輸出操作,而且具有良好的通信、數(shù)據(jù)查詢、自動(dòng)升級(jí)、自動(dòng)開關(guān)機(jī)、數(shù)據(jù)自動(dòng)記錄、故障自動(dòng)記錄到片內(nèi)FLASH以及故障數(shù)據(jù)向上位機(jī)傳輸?shù)裙δ堋=?jīng)過反復(fù)測試與實(shí)驗(yàn),各項(xiàng)性能均滿足要求。 |