顶级欧美丰满熟妇XXXXX视频,中文字幕亚洲精品乱码,久久黑国产,中文字幕一区二区三区日韩精品 ,色九月亚洲综合网

I/O 設備

Windows 95 下數(shù)控軟件實時控制的實現(xiàn)

ainet.cn   2008年10月06日

1 前言

  近年來,在Windows 95 平臺上進行數(shù)控軟件的開發(fā)是數(shù)控產(chǎn)品更新的標志和趨勢。利用Windows 95 豐富的資源,可方便地生成各種菜單及數(shù)控指令編輯軟件等,產(chǎn)品的開發(fā)周期短。而且,利用Windows 95 是多任務操作系統(tǒng)的特性,在保證前臺加工任務準確按時完成的情況下,還可執(zhí)行在線監(jiān)測、故障診斷等任務,充分發(fā)揮主機的性能。
  目前,國內(nèi)數(shù)控電火花成形機控制軟件的操作平臺一般采用DOS 系統(tǒng)或 16 位的Windows 3.X系統(tǒng),而國外如阿奇公司等已采用 Windows 95系統(tǒng)作為其控制軟件平臺,使軟件的數(shù)據(jù)庫和網(wǎng)絡等功能得到很大的提高,用戶使用效果很好。另外,基于 Windows 95 的 CAD/CAM 軟件及其他工具軟件很多,為了增強控制軟件的功能,在 Windows 95 平臺上開發(fā)電火花數(shù)控系統(tǒng)控制軟件是很有必要的。
  事實上,在電火花數(shù)控系統(tǒng)的開發(fā)中,常需實時采集一些狀態(tài)信息,通過接口板將信號傳送給主機,主機則通過中斷方式接受數(shù)據(jù)來實現(xiàn)實時的測量和控制。而 Windows 95 是消息驅(qū)動的多任務環(huán)境,各種消息都按它們到達的先后順序排隊處理,消息機制是不分任務輕重緩急的,若無中斷設置,僅憑消息機制,不能保證數(shù)控前臺控制任務在準確的時間內(nèi)執(zhí)行。因此,要想解決這個問題,必須實現(xiàn) Windows 95 的中斷處理。

2 Windows 95的中斷原理與實現(xiàn)

  關于 DOS 和 16 位的Windows 3.X 的中斷原
理和機制方面介紹的資料很多,實現(xiàn)起來相對容易,不再贅述。這里著重闡述Windows 95 的中斷原理,并簡要介紹其實現(xiàn)方法。
  眾所周知,Intel 的 80X86CPU 系列芯片規(guī)定了0、1、2和3四個級別的執(zhí)行代碼可信度(即ring 0~3級),Windows 95 中只用到了0級和3級。執(zhí)行ring 0級的代碼,可直接對硬件、中斷和文件系統(tǒng)進行物理訪問,僅有操作系統(tǒng)及其部件被允許在 ring 0 級內(nèi)執(zhí)行。而應用程序的代碼只在可信度最低的 ring 3 級內(nèi)執(zhí)行,其訪問硬件和自身進程空間以外的內(nèi)存能力受到限制。
  通常,在 Windows 95 下可用兩種方法實現(xiàn)中斷,一種是編寫 DLL 程序,另一種是使用虛擬設備驅(qū)動程序(VxD)。二者的區(qū)別在于:VxD 是作為操作系統(tǒng)的組件運行于 ring 0級的,而DLL程序運行于 ring 3級。事實上,VxD 也被認為是一個32位保護模式下的可執(zhí)行 DLL。應明確的是 VxD 運行在虛擬機管理器 (VMM) 控制之下,VMM 是位于最底層的操作系統(tǒng)部件(VMM 包含了所有基本的系統(tǒng)功能,如任務調(diào)度、虛擬內(nèi)存操作、程序裝入及終止、任務間通訊等,此外,還負責處理主要的中斷及例外情況)。硬件設備在數(shù)據(jù)準備好后就發(fā)中斷信號,但 VxD 并不直接截獲這些中斷信號,而是依賴于虛擬可編程中斷控制器 (VPICD) 來硬件中斷。 VPICD 可以將硬件中斷映射到其它設備,向其它設備提供服務,通過這些服務允許虛擬設備請求中斷,并可在 VMM 中模擬硬件中斷信號。由于 Windows 95 系統(tǒng)多任務在硬件上就是通過硬件的虛擬化來實現(xiàn)的,利用這種方法來實現(xiàn)較高的定時精度符合 Windows 95 系統(tǒng)本身的原則,簡單方便且有利于 Windows 95 系統(tǒng)的穩(wěn)定。見下圖。

VxD運行過程圖

  因此,目前在 Windows 95 系統(tǒng)下實現(xiàn)較高精度的實時控制,一般采用編寫VxD 程序來實現(xiàn)。實現(xiàn)定時的方法如下:
  (1)采用 Windows 系統(tǒng)本身所提供的虛擬定時器的 API(VTDAPI)。應用程序必須首先得到 VTDAPI的入口地址,再通過功能 VTDAPI-Begin-Int-Period 來設置中斷周期,最后可用功能 VTDAPI-Start-User-Timer 啟動定時器,聲明一個將被周期調(diào)用的回調(diào)函數(shù)。需要指出的是 Windows 95 系統(tǒng)中可注冊32個這樣的定時器。
  (2)采用虛擬定時器設備虛擬硬件定時器,提供別的虛擬設備用來建立時鐘的中斷率服務或捕獲一個給定的虛擬設備 I/O 端口的禁止或開放。首先通過功能VTD-Begin-Min-Int-Period 設置系統(tǒng)中斷周期。然后可通過功能 VTD-Enable-Trapping 和 VTD-Disable-Trapping 來強迫定時設備禁止或開放端口。通過功能 Set-VM-Time-Out 啟動定時器,配合相應函數(shù)完成所要求的實時控制任務。實際上,對于外部的物理中斷,同樣可采用這種方法。
  為了說明虛擬設備的中斷控制,首先介紹一個數(shù)據(jù)結(jié)構(gòu),定義如下:
  STRUCT VPICD-IRQ-Descriptor {
   WORD VID-IRQ-Number; ∥虛擬設備申請的 IRQ 數(shù)
   WORD VID-Options; ∥初始化為0
   DWORD VID-Hw-Int-Proc; ∥用戶中斷處理程序的地址
   DWORD VID-Virt-Int-Proc; ∥虛擬中斷處理程序地址
   DWORD VID-EOI-Proc; ∥物理中斷結(jié)束后調(diào)用函數(shù)的地址
   DWORD VID-Mask-Change-Proc; ∥中斷屏蔽地址
   DWORD VID-IRET-Proc; ∥中斷請求地址
   DWORD VID-IRET-Time-Out; ∥中斷請求的最大時間,500ms
   PVOID VID-Hw-Int-Ref; ∥用戶中斷參數(shù) };
  虛擬設備中斷控制的處理過程如下:首先,用戶通過 CreateFile()函數(shù)裝載VxD,系統(tǒng)向 VxD 發(fā)送 DEVICE-DYNAMIC-INIT 消息,調(diào)用對應的初始化程序。然后,執(zhí)行中斷處理程序,它的步驟是調(diào)用 VPICD-Pyhs-EOI 結(jié)束物理中斷,調(diào)用 VPICD-Set-Int-Request 設置虛擬中斷,進行中斷處理,調(diào)用VPICD-Clear-Int-Request 清除虛擬中斷,調(diào)用VPICD-Virtual-EOI 結(jié)束虛擬中斷。當用戶通過 CloseHandle()函數(shù)卸載 VxD 時,系統(tǒng)向 VxD 發(fā)送 DEVICE-DYNAMIC-EXIT 消息,控制處理程序調(diào)用對應的退出處理程序。
  了解了虛擬設備中斷控制過程的原理,就可方便地使用 VxD 實現(xiàn)中斷處理。目前,具有代表性的 VxD 開發(fā)工具包括: Microsoft 公司出品的設備驅(qū)動程序開發(fā)包 DDK,該產(chǎn)品出現(xiàn)較早,使用的范圍也較廣,但要求開發(fā)人員具備一定的匯編語言基礎,工作量較大。Vireo Software 公司開發(fā)的用于編寫設備驅(qū)動程序的工具包 VtoolsD,它包括一個 VxD 代碼生成器 Quick VxD、可加載和卸載 VxD 的工具 VxDLoad,可給出系統(tǒng)已加載 VxD 信息的 VxDView,以及 ANSI C 運行庫、VMM/VxD 服務庫、VxD 的 C++類庫。VtoolsD 除了能工作在 Windows95 環(huán)境下,還具有很強的開發(fā)能力及較高的開發(fā)效率,是個相當優(yōu)秀的軟件包。另外,KRFTech 公司出品的編寫設備驅(qū)動程序的工具包 WinDriver 也是一個不錯的開發(fā)工具,與 VtoolsD 一樣,可使編程人員用 C++語言來編寫設備驅(qū)動程序,而不是將大量精力放在編寫那些復雜、難于調(diào)試的內(nèi)核模式代碼上,從而使用起來方便可靠。

3 VxD 在數(shù)控系統(tǒng)中的一個應用

  在我們研制開發(fā)的電火花成形機數(shù)控系統(tǒng)中,對主軸的伺服控制要求很高,因此需要相當高的實時性。采用 Windows 95 操作系統(tǒng)之后,必須解決實時性問題,為此編制了 VxD 程序。限于篇幅,只能結(jié)合功能簡單介紹一下其實現(xiàn)過程。
  根據(jù)設計方案,采用 IRQ10 作為硬件中斷信號,中斷源由外部硬件定時器提供,設定為 1ms。使用 VtoolsD 中 VxD 代碼生成器 Quick VxD 自動生成一個 VxD 框架。在其中添加自己的代碼,如硬件中斷處理函數(shù):
  VOID MyHwInt::OnHardwareInt(VMHANDLE hVM)
  { 
   InterruptHandling(); ∥中斷處理函數(shù),包含了具體要實現(xiàn)的控制任務
   sendPhysicalEOI();
   ClearCarry();
  }
  VxD 程序動態(tài)加載和卸載函數(shù):
  BOOL MyintDevice::OnSysDynamicDeviceInit()
  { 
   pMyIRQ=new MyHwInt();
   if(pMyIRQ&&pMyIRO->hook()){ 
    pMyIRQ->physicalUnmask();
    return TRUE;
   }
   else return FALSE;
  }
  BOOL MyintDevice::OnSysDynamicDeviceExit()
  { 
   pMyIRQ->physicalMask();
   delete pMyIRQ;
   return TRUE;
  }
  VxD 與主程序之間的通訊函數(shù):
  DWORD MyintDevice::OnW32DeviceIoControl(PIOCTLPARAMS pDIOCParams)
  {…
   switch(pDIOCParmas->dioc-IOCtlCode){
   case 111:
   …
    break;
   default:
    break;
   }
   return 0;
  …
  }
  等等。
  通常情況下,源代碼直接用 VC++就可編譯通過,生成需要的 VxD。如需要調(diào)試的話,采用 Numega Technologies 公司的 Soft/ICE for Windows 95 工具軟件來調(diào)試 VxD 相當方便。
  實踐證明,使用 VxD 之后,再結(jié)合一定的伺服策略,很好地解決了主軸的伺服控制問題,加工精度得到可靠保證,而且系統(tǒng)的穩(wěn)定性也很好,經(jīng)長時間考機后,沒出現(xiàn)任何異常。

4 實時控制應用程序的發(fā)展趨勢

  由于 Windows 系統(tǒng)的硬件不透明性,使得一般用戶要完成一定硬件操作具有較大的難度。鑒于 VxD 和 VMM 已成為 Windows 95 的系統(tǒng)核心,VxD 的設計業(yè)已成為實時控制應用程序的關鍵技術。
  另外,Microsoft 公司為了滿足工業(yè)上一些實時控制的要求,特別于 1999 年 6 月推出了實時操作系統(tǒng) Windows CE。
  我們知道,對于一個實時操作系統(tǒng)來講,有三個關鍵的參數(shù),即中斷由操作系統(tǒng)和設備驅(qū)動程序屏蔽的最大時間、設備驅(qū)動程序處理中斷的最大時間和從中斷開始到任務執(zhí)行的中斷延遲時間,Windows CE 系統(tǒng)中這三個參數(shù)限值的參考值均在微秒級,這對于現(xiàn)在的一些控制要求基本能滿足。由此看來,基于 Windows CE 系統(tǒng)的實時應用程序的開發(fā),將成為可能。

(轉(zhuǎn)載)

標簽:Windows 95 數(shù)控軟件 實時控制 實現(xiàn) 我要反饋 
泰科電子ECK、ECP系列高壓直流接觸器白皮書下載
億萬克
專題報道