Windows CE設備與PLC串行通信的實(shí)現
Windows CE操作系統是微軟公司針對嵌入式系統的特點(diǎn)如內存容量小、運行速度低、實(shí)時(shí)性要求高等,而設計出的一種緊湊、高效、模塊化的嵌入式實(shí)時(shí)操作系統。 Windows CE可以提供桌面Windows絕大多數系統服務(wù)與功能,同時(shí)又保持系統體積很小的特點(diǎn)并可以支持應用程序的實(shí)時(shí)應用。它還支持數據庫、 COM(Component Object Model)、Internet等功能的開(kāi)發(fā),可以使用標準的Windows控件來(lái)完成界面設計。支持眾多的標準設備接口,并能夠移植到多種嵌入式CPU 架構中。選擇Windows CE作為嵌入式產(chǎn)品的操作系統較之現有嵌入式系統中軟件結構上多采用DOS系統或者無(wú)操作系統而言,可以極大的提升了產(chǎn)品的功能,增加用戶(hù)界面的美觀(guān)程度,并大大減少了程序開(kāi)發(fā)的工作量?;谏鲜鰞?yōu)點(diǎn)在數控切紙機控制系統設計中可以把Windows CE的設備與PLC相結合使用,構成上下位機系統。如圖1所示,上位機由PC104構成,通過(guò)在PC104上移植Windows CE系統使其成為Windows CE設備,這樣就可以充分利用Windows CE強大的系統功能來(lái)完成控制系統中的控制功能程序開(kāi)發(fā)和用戶(hù)界面設計。下位機通過(guò)使用PLC來(lái)完成的各種電氣控制功能。上下位機之間通過(guò)通信的方式來(lái)實(shí)現控制信息和機器狀態(tài)信息的交換。高速、實(shí)時(shí)、穩定的通信是保證系統穩定運行、工作可靠的關(guān)鍵,在結合PLC的特點(diǎn)基礎之上,具有普遍性高、編程簡(jiǎn)單、實(shí)時(shí)性好等特點(diǎn)的串行通信是上下位機通信形式的一種理想選擇方案。下面就Windows CE下如何與PLC實(shí)現串行通信的這一問(wèn)題進(jìn)行詳細的分析。
圖1 上下位機系統結構
1 WINDOWS CE下實(shí)現串行通信的特點(diǎn)
Windows CE的設計目標就是為了滿(mǎn)足嵌入式系統和移動(dòng)設備的使用需要,所以其系統本身的通信功能比較強大。市場(chǎng)上主流的Windows CE的5.0版本主要提供了三種主要的通信形式:串行通信、網(wǎng)絡(luò )(其中包括WinSock和TCP/IP)、電話(huà)API (TAPI)[1]。在工業(yè)控制領(lǐng)域串行I/O和網(wǎng)絡(luò )通信的使用較多,其中串行通信幾乎在所有嵌入式的設備中提供物理器件的支持,硬件電路實(shí)現也比較簡(jiǎn)單。通過(guò)研究TCP /IP網(wǎng)絡(luò )通信和串行通信在ISO通信模型中的描述,如圖2所示,可以看出串行通信模型比網(wǎng)絡(luò )通信模型的實(shí)現要簡(jiǎn)單的多。操作系統只需要實(shí)現Data- link layer中的驅動(dòng)程序和Serial API函數的封裝即可,不需要其它的協(xié)議支持,這樣就使串行通信應用程序的開(kāi)發(fā)要相對簡(jiǎn)單,系統調用也較少。對于嵌入式環(huán)境來(lái)說(shuō),意味著(zhù)需要更少的軟、硬件資源的開(kāi)銷(xiāo),也就等于提高了系統的快速性和實(shí)時(shí)性。
圖2 Windows CE通信的ISO模型
1.1 Windows CE提供了完善的串行通信API支持
在Windows CE平臺下提供了與桌面Windows平臺一致的串行通信操作API[2]。使用這些API可以用于打開(kāi)、關(guān)閉和操作串口,傳輸和接收數據,以及管理串行連接等。掌握和使用好下面的API函數是串行通信程序設計成敗的關(guān)鍵,其中主要使用有API函數及功能如下表所示:
函數名 | 功能 |
CreateFile | 用于打開(kāi)串口 |
SetCommState | 按定義的DCB結構配置通信設備 |
SetCommTimeOuts | 設置通信設備上所以讀寫(xiě)操作的超時(shí)參數 |
ReadFile | 向串口讀數據 |
WriteFile | 向串口寫(xiě)數據 |
SetCommMask | 設置通訊設備的事件掩碼值 |
WaitCommEvent | 等待通信設備發(fā)生指定的事件 |
PurgeComm | 清空通信緩存及通信錯誤 |
CloseHandle | 關(guān)閉打開(kāi)的串行口 |
表1 Serial Communication API
評論