Windows CE設(shè)備與PLC串行通信的實(shí)現(xiàn)
2.2 雙方通信程序的設(shè)計(jì)
根據(jù)對數(shù)控切紙機(jī)控制系統(tǒng)的機(jī)械、電氣、開關(guān)量等控制要求,上下位機(jī)之間要就多種不同的數(shù)據(jù)、指令進(jìn)行交互。并且這些數(shù)據(jù)、指令的數(shù)據(jù)位的長度不同。舉其中的機(jī)器狀態(tài)、機(jī)器參數(shù)、控制命令三種常見的指令為例。機(jī)器狀態(tài)要求下位機(jī)不間斷發(fā)送的機(jī)器的實(shí)時(shí)狀態(tài),一般包含數(shù)據(jù)量不大。機(jī)器參數(shù)往往是在開機(jī)發(fā)送或者重新設(shè)置了機(jī)器的參數(shù)時(shí)發(fā)送,機(jī)器參數(shù)的數(shù)據(jù)個(gè)數(shù)較多,但發(fā)送的次數(shù)較少??刂泼?,只有操作者通過控制面板上的操作時(shí)才會發(fā)送,它發(fā)送的內(nèi)容也不多,發(fā)送頻率也較低。但由于使用Fx2n PLC的RS數(shù)據(jù)通信時(shí),在每次進(jìn)行通信時(shí),必須知道本次要接收內(nèi)容的個(gè)數(shù)。如果把不同類型的數(shù)據(jù)采用定長結(jié)構(gòu)的發(fā)送方式,程序設(shè)計(jì)起來較為簡單,但是其中包含了大量的無用數(shù)據(jù),發(fā)送的效率較低。所以在進(jìn)行PLC通信時(shí),定義了下面的通信的協(xié)議形式:
本次通信標(biāo)志 | 下次發(fā)送的個(gè)數(shù) | 本次發(fā)送內(nèi)容 | 結(jié)束標(biāo)志 |
其中協(xié)議中具體含義如下表所示:
協(xié)議內(nèi)容 | 含義 |
本次通信標(biāo)志 | AA:機(jī)器狀態(tài) AF:機(jī)器參數(shù) AC:控制命令 |
下次發(fā)送的個(gè)數(shù) | 用于PLC確定下次接收的個(gè)數(shù) |
本次發(fā)送內(nèi)容 | DATA |
結(jié)束標(biāo)志 | FF |
表2 通信協(xié)議的格式
這樣,通過在本次通信中加入下次通信的個(gè)數(shù),在PLC端可以通過程序判定確定下次發(fā)送內(nèi)容的個(gè)數(shù),進(jìn)行處理。這樣可以提高發(fā)送的效率,保證數(shù)據(jù)的實(shí)時(shí)性。具體的發(fā)送流程如下圖所示。
圖3 通信流程圖
2.3 對數(shù)據(jù)接收緩沖區(qū)的處理
通過研究Windows CE提供的驅(qū)動程序代碼可以看出,驅(qū)動程序通過維護(hù)內(nèi)部的軟件緩沖區(qū)來保障當(dāng)應(yīng)用程序不能及時(shí)響應(yīng)數(shù)據(jù)到來時(shí),數(shù)據(jù)會先保存在驅(qū)動程序的數(shù)據(jù)緩沖區(qū)中,而不會發(fā)生數(shù)據(jù)丟失的現(xiàn)象。但是對于實(shí)時(shí)響應(yīng)要求很高系統(tǒng)來說就是有害的。這樣最新到來的數(shù)據(jù)不能被應(yīng)用程序及時(shí)處理,而被堆放到了緩沖區(qū)的后部等待前面的數(shù)據(jù)處理完成后才能被處理,降低系統(tǒng)的實(shí)時(shí)性。為了減少驅(qū)動程序數(shù)據(jù)緩沖區(qū)對系統(tǒng)實(shí)時(shí)性的影響,可以通過在串行通信的程序中加入對串行API函數(shù) PurgeComm的調(diào)用來及時(shí)清除緩沖區(qū)的內(nèi)容,以保證新到的數(shù)據(jù)及時(shí)被應(yīng)用程序處理,提高通信的實(shí)時(shí)性。
3 總結(jié)
本文詳細(xì)分析了在Windows CE下進(jìn)行串行通信的特點(diǎn),并設(shè)計(jì)了Windows CE與PLC進(jìn)行串行通信的程序流程和通信格式。實(shí)現(xiàn)了通過串行通信連接的由Fx2n PLC與PC104模塊組成的上下位機(jī)控制系統(tǒng),整套系統(tǒng)已經(jīng)成功的應(yīng)用到了高檔數(shù)控切紙機(jī)的電氣和運(yùn)動控制。產(chǎn)品經(jīng)過了用戶的長期檢驗(yàn)和國家的技術(shù)鑒定,合作企業(yè)三年內(nèi)已經(jīng)取得近600多萬元的經(jīng)濟(jì)效益。充分證明了整個(gè)系統(tǒng)結(jié)構(gòu)的可行性和可靠性。并且可以通過借助Windows CE的可移植性和強(qiáng)大的網(wǎng)絡(luò)功能以及PLC通用性等特點(diǎn),把這種通過串行通信連接構(gòu)成的上下位機(jī)結(jié)構(gòu)方式應(yīng)用推廣到其它類似的機(jī)電一體化產(chǎn)品中的控制系統(tǒng)應(yīng)用之中。
參考文獻(xiàn):
[1] Microsoft Corporation, Platform Builder for Windows CE 5.0 Help [OL], 2004.
[2] Douglas Boling, Programming Windows CE [M], 2001.
[3] Mitsubishi Electric Corporation, FX2n series Programmable Controller User's Manual [M], 2001.
[4] 田書峰,李欣.單片機(jī)與三菱PLC無協(xié)議串行通訊的實(shí)現(xiàn)[J],微計(jì)算機(jī)信息,2005,(10).[5] 陳向群,王雷等,Windows CE.NET 系統(tǒng)分析及實(shí)驗(yàn)教程[M],機(jī)械工業(yè)出版社,2002.
評論