《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信与网络 > 业界动态 > Windows平台下压铸机控制系统的研究

Windows平台下压铸机控制系统的研究

2008-09-04
作者:吕 振 刘宝良 陈国志 孟

  摘? 要: 將Windows操作系統(tǒng)引入J11280型臥式冷室壓鑄機控制系統(tǒng)" title="控制系統(tǒng)">控制系統(tǒng)中,通過分析Windows系統(tǒng)的運行機制和壓鑄機的性能指標,解決了控制系統(tǒng)的實時性" title="實時性">實時性和設(shè)備相關(guān)性問題。使用多線程、共享內(nèi)存及ActiveX 技術(shù)提高了系統(tǒng)的效率和健壯性;采用模糊神經(jīng)網(wǎng)絡(luò)PID控制提高了系統(tǒng)性能。經(jīng)過實際調(diào)試和運行,證明該方法是有效的,對開發(fā)通用的工控軟件具有借鑒意義。

  關(guān)鍵詞: Windows? 壓鑄機? 設(shè)備相關(guān)? 實時控制" title="實時控制">實時控制? VxD? 多線程? ActiveX? 共享內(nèi)存

?

  Windows是一個基于消息的非搶先式多任務(wù)操作系統(tǒng),將其用于壓鑄機實時控制,有很多的困難與挑戰(zhàn)。本文薦于實際工作中遇到的問題,對基于Windows的壓鑄機控制系統(tǒng)進行了研究。

1 Windows的運行機制

  Windows9x操作系統(tǒng)由內(nèi)核、設(shè)備驅(qū)動程序" title="設(shè)備驅(qū)動程序">設(shè)備驅(qū)動程序和大量的動態(tài)鏈接庫及應(yīng)用程序組成。Windows9x操作系統(tǒng)的結(jié)構(gòu)如圖1所示。Windows9x內(nèi)核與設(shè)備驅(qū)動程序運行在保護模式的Ring0級,稱為核心態(tài);而一般應(yīng)用程序與動態(tài)鏈接庫運行在Ring3級,稱為用戶態(tài)。熟悉80386保護模式體系的人都知道,Ring3代碼不能直接調(diào)用Ring0代碼,在Windows9x操作系統(tǒng)中與硬件設(shè)備打交道的程序代碼必須運行在核心態(tài)(Ring0級)。運行在用戶態(tài)(Ring3級)的代碼必須通過核心態(tài)(Ring0級)代碼才能訪問硬件。即使在用戶態(tài)(Ring3級)執(zhí)行的所謂輸入輸出指令(in、out等)實際上也隱含調(diào)用了核心態(tài)(Ring0級)代碼才得以執(zhí)行。Windows9x由內(nèi)核統(tǒng)一管理所有的系統(tǒng)資源。在保護模式下運行時,創(chuàng)建特定的內(nèi)存區(qū)域——虛擬機(VM)。每個虛擬機都有完整的地址空間、I/O空間以及中斷向量表等系統(tǒng)資源。真正的系統(tǒng)核心——虛擬機管理程序(VMM)以時間片中斷調(diào)度各個虛擬機,這是多任務(wù)的本質(zhì)和要求。

?

?

  由以上分析,開發(fā)基于Windows的工控系統(tǒng),需要解決的兩個關(guān)鍵問題是:

(1)實時性

??? 實時性要求開發(fā)的系統(tǒng)能實時處理中斷,并能處理定時事件。但Windows9x是一個基于消息機制的非搶先式多任務(wù)操作系統(tǒng),而且設(shè)計初衷是面向事務(wù)處理,對多任務(wù)和圖形用戶界面的支持難免使得系統(tǒng)運行速度下降;其保護系統(tǒng)和內(nèi)核運行機制也使用于系統(tǒng)切換的時間無法確定。通常,Windows下的中斷響應(yīng)時間是DOS下的1/20;基于消息的機制和非剝奪性,當消息隊列中的某個消息沒有響應(yīng)時,整個系統(tǒng)處于阻塞狀態(tài),無法響應(yīng)其他操作。事實上,一個基于Windows的實時操作系統(tǒng),以下三個時間是非常重要的:

  ·中斷由操作系統(tǒng)和設(shè)備驅(qū)動程序屏蔽的最大時間;

  ·設(shè)備驅(qū)動程序處理中斷的最大時間;

  ·從中斷開始到任務(wù)執(zhí)行的中斷延遲。

  通常情況下,這些參數(shù)都是不可預測的,只能通過具體的實驗進行確定。這不但加大了實時應(yīng)用系統(tǒng)的難度,而且是系統(tǒng)不穩(wěn)定的重要因素。

  (2)設(shè)備相關(guān)性

  設(shè)備相關(guān)性是指系統(tǒng)能很好地控制硬件,包括I/O端口的讀寫、內(nèi)存直接讀寫和中斷服務(wù)設(shè)備無關(guān)性問題,亦即Windows9x下直接訪問外設(shè)的問題。但是,因為Windows9x是多任務(wù)操作系統(tǒng),設(shè)備保護在Windows下是必需的。它的保護系統(tǒng)用來保護用戶數(shù)據(jù)和程序不受同一系統(tǒng)內(nèi)同時運行的其他程序的干擾,保護物理設(shè)備不受未經(jīng)允許的訪問。Windows系統(tǒng)的一個重要宗旨就是程序員對硬件操作的透明性,屏蔽了對底層硬件的直接訪問,由操作系統(tǒng)統(tǒng)一管理所有的硬件資源和硬件訪問。這使得Windows一般用戶在Windows下完成硬件操作具有較大的難度。

2 Windows下壓鑄機實時控制的實現(xiàn)

2.1 壓鑄機系統(tǒng)的功能和要求

  J11280型臥式冷室壓鑄機控制系統(tǒng),主要的性能要求是:

  ·能夠完成調(diào)整、聯(lián)動兩種工作機制;

  ·壓鑄工作過程的某些過程和工作參數(shù)具有實時動態(tài)可調(diào)性和可選性;

  ·具有對壓鑄過程中各個行程開關(guān)、按鈕、繼電器等狀態(tài)實時監(jiān)控和顯示功能;

  ·實時檢測合型力、壓射速度和油壓,用實時曲線顯示,具備保存和打印的功能;

  ·實時故障診斷與故障處理的功能。

  壓鑄機控制系統(tǒng)結(jié)構(gòu)見圖2。其中,合型力檢測的采樣周期為0.5ms,油壓檢測的采樣周期為5ms,位移傳感器接觸壓射桿產(chǎn)生的脈沖信號經(jīng)變換處理作為壓鑄機的外部中斷,配合A/D板卡上的8253計數(shù)器,完成速度檢測。可以看出,由于控制過程采樣周期極短,并有大量的數(shù)據(jù)計算和邏輯判斷以及在線動態(tài)檢測、監(jiān)視和參數(shù)調(diào)整,整個系統(tǒng)對實時性的要求很高。

?

?

2.2 使用設(shè)備驅(qū)動程序?qū)崿F(xiàn)實時控制

  設(shè)備驅(qū)動程序作為操作系統(tǒng)內(nèi)核的一部分,處于Ring0層,具有直接操作硬件等特權(quán)。在實時控制中,中斷技術(shù)應(yīng)用得十分廣泛,其中實時時鐘" title="實時時鐘">實時時鐘的獲得基本上都是通過中斷來實現(xiàn)。時鐘控制在實時控制中處于十分重要的地位,它負責推進控制過程、激活各控制任務(wù)或發(fā)相關(guān)控制消息,起到了總控制器的作用。在Windows9x下實時時鐘的獲得可以有不同的方法。設(shè)置Win32定時器并通過響應(yīng)WM_TIMER消息進行實時處理是最簡單的方法。但是由于WM_TIMER消息的低優(yōu)先級和未處理消息在消息隊列中的排隊造成了系統(tǒng)實時處理的不穩(wěn)定,因此這種方法只適合實時性要求不高的應(yīng)用。若采用Windows多媒體定時器,通過設(shè)置回調(diào)函數(shù)可以獲得最高精度為1ms的定時信號;但是由于占用了系統(tǒng)寶貴的資源,而且當定時信號由用戶提供或需要更高的中斷頻率時,這種方法就顯得無能為力了。與類似軟件中斷的方法相比,基于硬件中斷的方法占據(jù)了主導地位,并在絕大多數(shù)的實時系統(tǒng)中得到了應(yīng)用。因為它保證了對實時控制系統(tǒng)至關(guān)重要的可靠性。

  經(jīng)過筆者探索,在Windows9x環(huán)境下,在虛擬設(shè)備驅(qū)動程序中對硬件直接編程并掛接中斷的思路,有兩種實現(xiàn)方法:

  (1)對8253直接編程

  8253定時器是計算機跳動的心臟,在計算機系統(tǒng)進入Windows前對8253重新編程,將周期從18.2s修改為所希望的周期。修改INT8中斷服務(wù)程序,每次定時時間到就調(diào)用另一新中斷號,并累計時間;若為55ms,則轉(zhuǎn)入舊INT 8中斷服務(wù)程序的入口,進入Windows以后掛接新的時鐘中斷即可實現(xiàn)所希望的定時時鐘。使用這種方法可以滿足任意精度。

  (2)對CMOS實時時鐘直接編程

  與上述方法相比,對CMOS實時時鐘進行編程獲得定時中斷的方法顯得更加優(yōu)越,所需的硬件知識相對較少,操作也相對簡便。在PC機中,CMOS實時時鐘似乎是唯一沒有現(xiàn)成的虛擬設(shè)備驅(qū)動程序的PC機硬件設(shè)備,所以可以直接開發(fā)VxD驅(qū)動程序來操作實時時鐘。通常,實時時鐘芯片的基本頻率初始化為32.768kHz,由它驅(qū)動內(nèi)部時鐘電路,同時對內(nèi)部寄存器A(D3~D0)編程選擇22個分頻級之一,使其按確定的頻率以寄存器B指定的方式周期性地輸出方波或中斷信號,作為實時鐘中斷信號經(jīng)反向直接連到8259A-5從片的第0級——IRQ8,然后把實時任務(wù)直接掛接到實時鐘中斷上,在中斷處理函數(shù)中進行實時任務(wù)處理。使用這種方法最高可獲得8.192kHz(周期為0.1ms)的中斷頻率,足以滿足系統(tǒng)的要求。需要注意:與上述方法類似,掛接中斷時,進入自己的中斷前必須保護好原先的中斷狀態(tài),退出時恢復,否則,系統(tǒng)將崩潰。

??? 無論使用哪種方法,都不可避免地與Windows中斷打交道。但是,VxD沒有義務(wù)必須向系統(tǒng)傳遞中斷消息,相反,它完全可以自己截獲中斷,進行實時處理。本文采用了對CMOS時鐘直接編程的方法,運行良好。

  總之,使用虛擬設(shè)備驅(qū)動程序直接控制硬件,解決了Windows環(huán)境下的設(shè)備無關(guān)性問題,同時保證了實時控制所需要的實時時鐘和中斷控制。但是,虛擬設(shè)備驅(qū)動程序編程要求技術(shù)人員對Windows內(nèi)核比較清楚,對底層硬件比較了解,也需要一定的匯編知識。由于Windows內(nèi)核資料非常少且大都較晦澀,有關(guān)VxD編程的部分更是艱深,所以使用這種方法有相當?shù)碾y度。而且這種方法易給系統(tǒng)帶來隱患,有可能造成Windows系統(tǒng)本身不穩(wěn)定,還要考慮兼容性和效率問題,在實際開發(fā)時需要小心謹慎。

2.3 保證系統(tǒng)性能的其他技術(shù)

  上一小節(jié)解決了最重要的實時性和設(shè)備相關(guān)性的問題,但是,考慮效率和性能,本系統(tǒng)研究了有關(guān)的增強系統(tǒng)性能的技術(shù)。實踐證明,效果比較明顯。

  (1)多線程

  Windows系統(tǒng)的基本單元是線程,線程是可供系統(tǒng)調(diào)用的最小單元。一個進程可有多個線程,系統(tǒng)調(diào)度程序?qū)PU的時間片劃分給各個線程,各個線程在各自的時間片內(nèi)使用CPU,從而實現(xiàn)了微觀上的輪流執(zhí)行和宏觀上的并發(fā)執(zhí)行。在實時性要求很高的工控系統(tǒng)中,如何避免程序反應(yīng)遲鈍以及死鎖問題是關(guān)鍵之一。利用多線程技術(shù),是提高效率的有效途徑,不僅可以挖掘潛在的CPU空閑時間,還可以提高程序的反應(yīng)速度。這在有多個任務(wù)需要完成且有巨大數(shù)據(jù)流量的程序中反映尤其明顯。根據(jù)系統(tǒng)要求,本主控制臺程序?qū)崿F(xiàn)了一個控制系統(tǒng)主要運行過程的主線程、一個負責壓鑄機工作過程的壓鑄過程線程(工作者線程)和一個實現(xiàn)速度壓力曲線的顯示線程(用戶界面線程)。主線程在每個Windows應(yīng)用程序啟動時由操作系統(tǒng)創(chuàng)建,不可或缺。在主線程中,主要負責線程間的同步、向壓鑄過程線程和顯示線程傳遞參數(shù)、管理人機界面、故障處理與實時檢測、與用戶交互等功能。顯示線程負責從共享內(nèi)存讀出數(shù)據(jù)并以動態(tài)曲線的形式在屏幕上繪制,保存實時曲線作為歷史紀錄以及讀取曲線歷史紀錄的功能。壓鑄過程線程控制壓鑄機的整個工作過程,包括數(shù)據(jù)采集、邏輯控制、算法實現(xiàn)及相關(guān)的處理。實踐證明,多線程的使用,明顯提高了系統(tǒng)特別是實時顯示的性能,增強了系統(tǒng)的效率和穩(wěn)定性。

  (2)共享內(nèi)存

  數(shù)據(jù)采集系統(tǒng)得到各模擬通道采樣值的轉(zhuǎn)換結(jié)果后,應(yīng)存放在一個規(guī)定的RAM區(qū)。由于Win32程序和虛擬驅(qū)動程序都需要直接訪問此內(nèi)存RAM區(qū),故稱為共享內(nèi)存。有經(jīng)驗的程序員都很清楚Windows的內(nèi)存分頁管理機制,所以應(yīng)該由VxD中斷功能程序申請后與Win32程序共享,原因不言自明。在VxD中申請連續(xù)內(nèi)存的函數(shù)一般使用:BOOL PageAllocate(DWORD nPages,DWORD pType,VMHANDLE hVM,DWORD AlignMask,DWORD minPhys,DWORD maxPhys,PVOID PhysAddr,DWORD Flags,PMEMHANDLE pHandle,PPVOID pAddress)。注意:必須明確指定pType為開辟VxD和Win32應(yīng)用程序共享內(nèi)存的PG_VM,其他常量不可取;必須指定Flags為不會被系統(tǒng)分頁交換的PAEGELOCKED;Hvm為使用此循環(huán)寄存器區(qū)的Win32應(yīng)用程序虛擬機句柄,須在使用PageAllocate()前傳到申請內(nèi)存的VxD。

  只要緩沖區(qū)足夠大,即使在采集頻率非常高的情況下,中斷程序填滿一個子緩沖區(qū)的時間也會比較長,而處理線程進行一次處理和存盤的時間相對比較短。因此,中斷程序和處理線程可以并行地訪問緩沖區(qū)而不會發(fā)生交疊,即中斷程序訪問的子緩沖區(qū)與處理線程訪問的子緩沖區(qū)總是不同的。這樣,就可以在不丟失任何數(shù)據(jù)的情況下實現(xiàn)長時間連續(xù)高速采集。實際相當于在PC機的內(nèi)存中開辟了一片F(xiàn)IFO隊列。與硬件FIFO相比,這種方法大大降低了成本。而且,由于將其放在內(nèi)存中,可以輕易地得到非常大的FIFO隊列,減輕了數(shù)據(jù)處理的負擔。另外,由于采用了雙緩沖的結(jié)構(gòu),避免了數(shù)據(jù)訪問的交疊,實現(xiàn)了不丟失任何數(shù)據(jù)的長時間連續(xù)高速采集。當然,由于采用中斷方式采集數(shù)據(jù),每次采集都要占用CPU時間,使采集速度受到一定限制,無法達到采用硬件FIFO隊列的水平。

  (3)ActiveX

  ActiveX控件作為一種可重用的軟件部件和一種標準接口元素,能方便地組裝到應(yīng)用程序中,快速創(chuàng)建應(yīng)用程序界面,從而直觀地實現(xiàn)控制組態(tài)和策略解釋,非常便于工程技術(shù)人員掌握。本系統(tǒng)中,實現(xiàn)了一個數(shù)據(jù)顯示功能的ActiveX控件,并掛接在顯示線程中,通過它支持的屬性、方法和事件機制,控制數(shù)據(jù)顯示,極大地改善了速度壓力曲線的顯示性能。

  (4)模糊神經(jīng)網(wǎng)絡(luò)PID控制

  智能控制特別是模糊控制和神經(jīng)網(wǎng)絡(luò)控制技術(shù)發(fā)展迅速,將其應(yīng)用于復雜模型和惡劣工況下的過程控制,具有理論優(yōu)勢,也是難點和熱點;另一方面,傳統(tǒng)的PID控制也不斷發(fā)展和完善,出現(xiàn)了各種與先進方法和理論結(jié)合的新型PID算法;最后,以前的壓鑄機系統(tǒng)盡管運行穩(wěn)定,但是基于開環(huán)算法,控制性能不理想。筆者通過研究和學習國內(nèi)外相關(guān)的理論和實踐,從現(xiàn)場實際控制的角度,給出了一種集模糊控制、神經(jīng)元控制和PID控制三者優(yōu)勢于一身的新型控制算法的實現(xiàn),大大提高了系統(tǒng)的性能,獲得了滿意的效果,限于篇幅,另文著述。

3 系統(tǒng)的總體框架

  依據(jù)上述各種技術(shù),使用Numega公司的VtoolsD工具開發(fā)了底層的虛擬設(shè)備驅(qū)動程序,使用VC++6.0開發(fā)用戶界面程序,在Windows98環(huán)境下,實現(xiàn)了2800噸J11280型臥式冷室壓鑄機控制系統(tǒng)的設(shè)計,并在阜新壓鑄機廠通過了測試,運行穩(wěn)定、操作簡便、界面友好、功能齊全、實踐證明是一個比較成功的工控系統(tǒng),圖3是主控制臺總體框架圖。

?

參考文獻

1 [美]David A. Solomon著,北京博彥科技發(fā)展有限公司譯.Windows NT技術(shù)內(nèi)幕(第2版)·[M]. 北京:清華大學出版社,

? 1999

2 武安河, 周利莉. Windows設(shè)備驅(qū)動程序(VxD與WDM)開發(fā)實務(wù)[M].北京:電子工業(yè)出版社,2002

3 喬 林,楊志剛. Visual C++ 6.0高級編程技術(shù)(MFC與多線程篇)[M].北京:中國鐵道出版社,2000

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。