肖鼎新,吳旭光,馮歡歡,侯京鋒
XIAO Ding-xin, WU Xu-guang, FENG Huan-huan, HOU Jing-feng
(西北工業大學 航海學院,西安 710072)
隨著計算機及其控制技術的快速發展,工業制造加工技術與嵌入式系統的結合越來越緊密。注塑機是將熱固性材料利用成型模具制成不同形狀塑料制品的主要成型設備,目前市場上的注塑機多以單片機作為處理器或以工控機為基礎開發而來,集成度不高,穩定性不好,操作不夠直觀,不能適應制造加工行業復雜的環境。
PC/104是專為嵌入式工業控制而定義的專業總線,在軟件和硬件上與標準臺式PC結構兼容,適合應用在具有高精度控制、高速注塑、大容量儲存、人性化界面、良好擴展性特點的高檔工業注塑機上。本系統上位機采用昭營公司PC/104結構的VDX-6354系統和Windows XPe 操作系統為硬、軟件核心,下位機以MSP430F149和μC/OS-II操作系統為硬、軟件核心,以工業注塑機為應用對象,重點研究了PC/104結構上層軟件的開發,并對所涉及的硬件資源進行了描述,提供了一種基于PC/104的控制器設計方案。
本系統具有高精度、可靠性的特點,設備可以對目標信號數據進行快速捕獲、采集和反饋。系統的硬件結構主要包括基于Vortex86處理器的PC/104結構VDX-6354系統,8寸LCD顯示器、CF儲存器、專用64鍵鍵盤和下位機控制器的通信端口,另外為了方便控制器系統升級,預留了網口和USB接口。下位機控制器硬件結構主要包括處理器MSP430F149,A/D轉換和D/A轉換等。系統總體硬件結構如圖1所示。

圖1 硬件系統結構圖
PC/104采用ISA總線架構,在硬件與軟件上與標準臺式PC體系結構完全兼容,極大方便了外圍硬件設備的擴展。LCD液晶模塊、CF儲存卡以及USB接口等設備無需底層驅動,系統開機即自檢設備正常使用。在系統軟件方面,Windows Xpe保留了Windows所需最小功能,并把相關硬件驅動編譯進入系統內核,適合嵌入式開發和使用。系統首先安裝Windows XPe系統到VDX-6354,以此為平臺,擴展硬件外設及軟件開發。
利用Visual C++制作注塑機的人機界面窗口,主要包括:主監控界面、全自動操作界面、半自動操作界面、參數設定界面、系統設置界面等。可視化是VC編程開發的特點,在主監控界面中,_CMy1Dlg類包含的_OnPoint()函數和_OnTimer函數描述注塑機工作狀態直觀圖,CMy1Dlg::DoDataExchange()函數顯示發送和接收的數據,BOOL CMy1Dlg::OnInitDialog()函數初始化圖形界面。作為圖形界面的核心部分,CMy1Dlg:OnPaint()函數表達如下:
設置變量m_6=_T(5); m_10=_T(5); m_13=_T(5); 計算關模、座進、射出幾項進程的時間,調用OnTimer(UINT nIDEvent)函數時被調用。當一個加工周期結束時,從緩沖區尾取走計時總和、數量總和返回變量m_47,進行相應處理,主監控界面如圖2所示。

圖2 主監控界面
為適應注塑機的實際需要,配置了一塊基于ZLG7289芯片的專用鍵盤,通過擴展Vortex86資源中的GPIO接口實現鍵盤功能,使鍵盤具有去抖、連擊鍵處理、雙鍵互鎖等功能。芯片與VDX-6354的接口僅需4根信號線,方便了驅動程序的設計和應用層程序的編寫。
通過winio函數庫可以使32位Windows應用程序直接訪問硬件I/O端口,方法是在Visual C++編譯環境下將winio.lib添加到所建立的工程中,在使用winio函數時需要調用初始使化函數bool _stdcall InitializeWinIo( );和關閉函數void _stdcall ShutdownWinIo( )。讀取鍵值的程序結構為:


VDX-6354系統的COM2端口是RS232/422/485復合串口,串口類型和波特率參數可以在BIOS設置中選擇,系統選用RS485串口與下位機通信。下位機系統基于MSP430F149芯片,通過MAX3485可以擴展RS485串口。

圖3 MSP430F149擴展RS485串口電路圖
在本系統中對串口的操作包括串口端口設置、波特率設置、校驗位、數據位、停止位的設置。對端口初始化的函數定義如下:

在程序中設置m_ctrl_baudrate.GetCurSel()的值m_baude=115200,設置m_ctrl_databits.GetCurSel()值m_databits=7,指定停止位m_stopbits值為1。
串口接收和發送模塊的通信協議功能包括:標志一次通信數據的開始,標志一次通信數據的類型,標志一次通信數據的長度,對一次通信數據進行校驗。每一數據幀的格式如圖4所示。

圖4 數據幀格式
定義起始字節為0AAH,結束字節為0FFH,參數與數據字節均采用HEX碼傳送,累加校驗和是對第二字節到第五字節進行累加和,取單字節并舍去第七位。若校驗正確發回確認信號,若校驗錯誤,發回重發信號。
系統開機后,首先啟動VDX-6354引導進入Windows Xpe系統,啟動上位機應用軟件,把所涉及到的硬件驅動靜態加載進內核中,以備系統主程序在運行時調用。系統主程序流程如圖5所示。

圖5 主程序結構流程圖
系統主程序啟動后,首先進行自檢,通過后即調用監控函數,對從下位機傳送過來的需要監控的數據進行循環監控。當達到或超越設置的閾值時啟動報警。同時,不斷進行鍵盤掃描,根據鍵值不同判斷要執行的任務類型并執行。系統涉及到的相關功能還包括參數設定、關機等。
下位機系統軟件采用嵌入式μC/OS-II作為平臺,對多路數據采集和發送以及電器驅動進行多任務調試,并完善添加了與多任務操作系統相關的一些系統服務。
本系統中,μC/OS-II通過OSTaskCreate()建立4個優先級不同的任務。初始化任務TaskIint()的主要功能是系統自檢,優先級定義為1,系統上電后執行此任務;第2個任務是TaskUartGet(),主要功能是通過串口接收上位機指令,為了防止接收命令時被其他任務打斷,將其優先級定義為2;第3個任務是TaskWork(),優先級定義為3,此任務由主控模塊完成,具有較強的實時性,它是一個無限循環,執行周期為20ms;第4個任務是TaskDataSend(),向串口發送數據,優先級定義為4,為程序中優先級最低的任務。
本系統中定義的3個任務調度和通信:系統上電后首先執行任務TaskIint(), 在初始化任務執行完成并返回正常的情況下利用OSTaskDel()函數將該任務返回并處于休眠狀態。此時TaskUartGet()成為優先級最高的任務,執行此任務,通過串口接收來自上位機的指令參數,之后執行OSTimeDlyHMSM(0,0,0,50)函數延遲50ms, 在TaskUartGet()掛起中循環執行TaskWork()任務,使用OSTimeDlyHMSM(0,0,0,20)函數延時20ms,即任務TaskWork()將CPU的控制權交給其他任務。當任務TaskWork()執行20次后,向任務TaskDataSend()發送一次消息,消息中包含需要與上位機通信的數據,在TaskWork()掛起中的20ms中,TaskUartSend()運行,實現向上位機發送數據。任務調度與通信偽代碼結構如下:


本系統以VDX-6354、MSP430F149、Windows Xpe、μC/OS-II操作系統為硬件及軟件核心,提出了一種注塑機控制器的設計方法,并著重闡述了軟件部分的設計過程。目前,系統已經基本調試完畢,通過了硬件性能檢測。通過實驗測定,表明系統符合功能上的預期要求,可以滿足實際應用需要,同時預留了相關硬件接口,使系統具有良好的擴展性。系統實現了PC/104結構的嵌入式技術在工業注塑機控制器上的應用,同時也是其他工業控制器設計方案的參考。
[1]張武,張春華,唐勁松.基于PC104 Plus 總線數據采集系統設計與實現[J].微計算機應用,2006,(4).
[2]儲世玉.基于PC104總線的檢測儀研制[J].計算機仿真,2003,(12).
[3]Jean J.Labrosse,邵貝貝,等.嵌入式實時操作系統μC/OS-2(第2版)[M].北京:北京航空航天大學出版社,2003.
[4]張國雄,金篆芷.測控電路[M].北京:機械工業出版社,2001.
[5]李現勇.Visual C++串口通信技術與工程實踐[M].北京:人民郵電出版社,2004.
[6]周立功公司.zlg7289串行接口8位LED數碼管及64鍵鍵盤智能控制芯片[Z].
[7]ICOP Technology Inc. VDX-6354/VDX-6354-PLUS User's Manual[Z].
[8]Hur S H,Kim D W,Park G T.Building automation system via Lon Works and Linux based personal computer[J].Automation in Construction,2006,15(4).