計算機應(yīng)用基于Windows多線程開放數(shù)控主控系統(tǒng)的實現(xiàn)張政,馬書根,曹秉剛(西安交通大學(xué)機戒工程學(xué)院機電系,陜西西安710049)如何用多線程機制實現(xiàn)數(shù)控系統(tǒng)的多任務(wù),以及多任務(wù)之間的協(xié)調(diào)和同步問題。同時,還討論了實現(xiàn)數(shù)控機床上位機(Windows)和下位機(DOS)之間的串口通信問題。該主控系統(tǒng)已經(jīng)用于一臺數(shù)控機床的改造實驗,并且取得了良好的效果。
1引百在現(xiàn)有數(shù)控系統(tǒng)中,大多數(shù)系統(tǒng)是基于DOS環(huán)境的,其綜合性能相對于Windows環(huán)境就弱一些,尤其是界面、人機交互能力、多任務(wù)以及開放性方面比較差。因此說,開發(fā)基于本文的主控系統(tǒng)是基于一種開放式數(shù)控機床體系結(jié)構(gòu)數(shù)控軟件化體系結(jié)構(gòu)進行研究的。該體系結(jié)構(gòu)(所示)就是為了解決封閉系統(tǒng)的不足而提出來的。在這一結(jié)構(gòu)下,工藝軟件在一臺Host―PC上運行,所生成的設(shè)備動作信息由串行口傳送給完備數(shù)字機床。
用VC++編制了主控系統(tǒng)的控制軟件,并且通過實驗驗證,取得了滿意的效果。該主控系統(tǒng)可以支持齒輪加工和復(fù)雜曲面的加工,大大簡化了工藝軟件的編制。
0、張政(972-)男,陜西三原人,博士研究生,主要研究方向數(shù)控技術(shù)、機器人遠程控制?!筁.件的測量數(shù)據(jù)進行比較,現(xiàn)加工過程中中的系統(tǒng)誤cMliShM記記錄線程就被喚el對ei新數(shù)tf進行處理把*新數(shù)bookmark4利用VC++開發(fā)的基于Windows的開放數(shù)控主控系統(tǒng)界面如該系統(tǒng)的主要功能:裝配自動加工文件;手工編輯自動加工文件;機床位置調(diào)整;機床坐標原點設(shè)定;離線仿真走刀軌跡;在線實時仿真走刀軌跡;數(shù)字機床狀態(tài)顯示。
2多線程技術(shù)在主控系統(tǒng)中的應(yīng)用每一個Windows應(yīng)用程序都是一個進程,并由線程來負責(zé)執(zhí)行包含在進程地址空間中的代碼。實際上,單個進程可以擁有多個線程,它們在進程的地址空間中“同時地”執(zhí)行代碼。操作系統(tǒng)以一種輪轉(zhuǎn)的方式為每個獨立的線程分配CPU時間片,客觀上使所有的線程近乎同時進行。
系統(tǒng)同時又是根據(jù)所有活動線程的優(yōu)先級來決定何時調(diào)用哪個線程以及調(diào)度多長時間。系統(tǒng)為每一個線程分配了優(yōu)先級,從*低的0到*高的31.不管低級別的線程正在干什么,高級別的線程總會搶先低級別的線程。
2.1線程優(yōu)先級的設(shè)定在Windows中一個線程的優(yōu)先級是由它所在的進程和它相對于該進程的優(yōu)先級確定的。當(dāng)線程被創(chuàng)建時,它的優(yōu)先級是所在進程的優(yōu)先級類。例如,一個REALTIME-PRIORITY-CIASS的進程主線程的初始優(yōu)先級為24.不過,可以通過設(shè)定線程相對于進程的優(yōu)先級,來改變線程優(yōu)先級。
這樣,在一個應(yīng)用程序中的幾個線程就可以被設(shè)定為不同的優(yōu)先級。例如:在上下位機通信線程中使用:在時間顯示線程中,使用);/可以把該線程的優(yōu)先級設(shè)定為16表1給出了系統(tǒng)如何根據(jù)進程的優(yōu)先級類和線程的相對優(yōu)先級相結(jié)合,決定線程的基本優(yōu)先級。
表1系統(tǒng)如何確定線程的基本優(yōu)先級線程相對優(yōu)先級進程優(yōu)先級類空閑普通高實時2.2主控系統(tǒng)中的線程主控系統(tǒng)中的線程主要有:顯示年月日和北京時間。如:002年1月21日星期一北京自動記錄線程。在自動加工時,把從下位機接收到的數(shù)據(jù)存儲到文本文件。這樣就可以保存完整的加工數(shù)據(jù),把加工過程記錄下來。加工完成后,可以根據(jù)該文件和實際零而米取措施進一步提高加工精度。
跡按照三視圖繪制在界面上,有利于操作者掌握加工進度和實際的加工情況。
*后驗證自動加工程序的正確性。從而可以發(fā)現(xiàn)錯誤,避免造成損失。
串口通信線程。該線程負責(zé)把自動加工數(shù)據(jù)或者機床調(diào)整數(shù)據(jù)通過串口發(fā)送給下位機,同時還要從串口讀取下位機傳來的機床狀態(tài)數(shù)據(jù),顯示于界面上。
以上介紹的各個線程的優(yōu)先級列于表2表2主控系統(tǒng)中幾個線程的優(yōu)先級。
線程顯示時間線程自動記錄線程在線仿真線程離線仿真線程串口通信線程優(yōu)先級23各線程之間的協(xié)調(diào)和同步在有幾個線程并行運行的環(huán)境中,同步不同線程的活動是很重要的。Windows中主要提供了5種用于同步線程的對在本主控系統(tǒng)中主要用到了臨界區(qū)和事件進行線程同步。
臨界區(qū)是一小段代碼,它要求在執(zhí)行以前取得對某些共享數(shù)據(jù)的獨占的訪問。臨界區(qū)一次只允許一個線程取得對某個數(shù)據(jù)區(qū)的訪問權(quán)。通過使用臨界區(qū)就能確保對數(shù)據(jù)結(jié)構(gòu)的存取能在線程之間得到協(xié)調(diào)。如果某個線程已經(jīng)取得了臨界區(qū)的所有權(quán),其它想要獲得訪問權(quán)的線程都會被置于睡眠狀態(tài)。當(dāng)擁有所有權(quán)的線程放棄了所有權(quán)時,系統(tǒng)只喚醒正等待中的一個線程,給它所有權(quán),而讓其它的線程繼續(xù)睡眠。例如,在線仿真線程中使用程序段:在主線程中使用程序段:可以同步在線仿真線程和主線程對全局變量strSimuOnlineX的訪問。
事件*常用于一個進程進行初始化工作后,發(fā)信號給另一個線程,讓其完成剩余的工作。初始化線程將事件設(shè)置為無信號狀態(tài)后開始進行初始化。當(dāng)初始化完成后,線程把事件設(shè)置為有信號態(tài),工作線程就醒來執(zhí)行余下的必要工作。
在主控系統(tǒng)中主要定義了如下事件:其中rote-eventStart用于表示主線程初始化已經(jīng)完成,自動加工開始,可以啟動自動記錄線程。當(dāng)該事件為有信號態(tài)據(jù)寫入文件。在自動記錄線程中使用等待該時間有信號。當(dāng)主線程開始自動加工,并且向下位機發(fā)送了**組數(shù)據(jù)后,使用語句就可以啟動自動記錄線程開始記錄。由于篇幅所限,其它事件的具體應(yīng)用就不再討論。
3Windows和DOS間的串口通信3.1串口通信的硬件基礎(chǔ)RS―232-C是在數(shù)據(jù)終端設(shè)備(DTE)和數(shù)據(jù)通信設(shè)備(DCE)之間進行二進制交換的接口標準,可用于實現(xiàn)兩臺微機間的近距離直接通信。實現(xiàn)雙機連接,只要將兩臺微機的串行口或并行口以適當(dāng)電纜按一定方式連接起來即可。
9針在本主控系統(tǒng)中,采用的就是9針三線連接方式。
RS―232―C只是計算機之間串行通信的接口標準,其電器特性則是由計算機中稱作通用異步收/發(fā)器(UART)的器件來完成的。
DOS串口通信DOS和BIOS都提供了支持串行異步通信的功能調(diào)用,可以利用這些功能調(diào)用來設(shè)計簡單的串行異步通信程序。中斷控制方式是串行通信采用*多的收/發(fā)控制方式。在下位PC機運行的DOS環(huán)境下,就采用了基于中斷的方式。
Windows串口通信在Windows下,串行口作為系統(tǒng)資源,由設(shè)備驅(qū)動程序統(tǒng)一管理,用戶不能像在DOS下一樣直接對串行口硬件端口進行編程。Windows將串行口和其它通信設(shè)備如Modem、傳真機等統(tǒng)一視作文件,對串行口的打開、關(guān)閉、讀寫等操作與操作還由于需要結(jié)合Windows的線程編程、事件驅(qū)動等新技術(shù),因而使得Windows下的串行通信編程比較復(fù)雜。
串行通信會話以調(diào)用CreateFileC)函數(shù)打開串行口開始,接著設(shè)置串行口波特率、數(shù)據(jù)位、校驗位、停止位等參數(shù)以及超時參數(shù),*后選擇一種工作方式讀、寫串行口。在Windows中,串行通信有詢方式和事件驅(qū)動兩種工作方式。
查詢是*為直接、易于理解的技術(shù)。但是查詢會占用大量的CPU時間,效率較低。事件驅(qū)動I/O方式是指線程通過監(jiān)視通信資源中的一組事件來進行I/O操作,這種方式類似于DOS下的中斷工作方式,效率高。主控系統(tǒng)中使用的就是事件驅(qū)動的通信方式。在主控系統(tǒng)中,建立了一個CSerialPort類,用于實現(xiàn)串口的初始化和讀寫操作。
3.4Windows和DOS的串口通信兩種操作系統(tǒng)之間的串口通信并不難,只要在兩者之間建立了正確的硬件連接,然后分別編寫各自的通信程序,并且按照同樣的通信協(xié)議設(shè)置,就可以通信了。這也就是本主控系統(tǒng)上位機和下位機的通信實現(xiàn)方式,并且通信速率達到了4結(jié)語該主控系統(tǒng)的實用性已經(jīng)通過實驗驗證,取得了良好的效果。