PLC驅(qū)動程序設(shè)計開發(fā)_第1頁
PLC驅(qū)動程序設(shè)計開發(fā)_第2頁
PLC驅(qū)動程序設(shè)計開發(fā)_第3頁
PLC驅(qū)動程序設(shè)計開發(fā)_第4頁
PLC驅(qū)動程序設(shè)計開發(fā)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

PLC驅(qū)動程序設(shè)計開發(fā)本文爭論了設(shè)計和開發(fā)plc驅(qū)動程序的方法;具體介紹PLC底層驅(qū)動函數(shù)的設(shè)計和實(shí)現(xiàn);并探討了提高信道利用率的幾個關(guān)鍵問題。試驗(yàn)證明,能夠降低開發(fā)成本并大大提高計算機(jī)監(jiān)控系統(tǒng)與PLC之間的數(shù)據(jù)通信的效率和信道利用率。1、引言

隨著計算機(jī)科學(xué)技術(shù)、工業(yè)掌握等方面的新技術(shù)的快速進(jìn)展,使用計算機(jī)監(jiān)控系統(tǒng)與現(xiàn)場PLC設(shè)備進(jìn)行數(shù)據(jù)交換得到了廣泛的應(yīng)用。這類數(shù)據(jù)交換往往具有以下的特點(diǎn),數(shù)據(jù)量大,采集點(diǎn)分散,帶寬較窄。由于不同廠家所供應(yīng)的PLC現(xiàn)場設(shè)備的通訊機(jī)制并不相同,計算機(jī)監(jiān)控系統(tǒng)軟件需要開發(fā)的設(shè)備通信驅(qū)動程序就越來越多。這種簡單的設(shè)備驅(qū)動程序的開發(fā)具有以下的特點(diǎn):

首先,上位監(jiān)控系統(tǒng)與PLC設(shè)備間的數(shù)據(jù)交換,應(yīng)用較普遍。

其次,這種數(shù)據(jù)通訊過程,缺乏有通用性的框架設(shè)計,開發(fā)周期長,難度大,難以通用。

再者,在有限帶寬限制條件下的大數(shù)據(jù)量傳輸,普遍存在著信道利用率低,系統(tǒng)效率差,不穩(wěn)定的狀況,迫切需要大幅度提高信道利用率的算法。而且在已有的數(shù)據(jù)交換標(biāo)準(zhǔn)中,對于有限帶寬條件下的信道利用率也沒有成熟的設(shè)計。

如上所述,開發(fā)PLC設(shè)備的通用性數(shù)據(jù)通信接口具有廣泛的應(yīng)用前景和實(shí)現(xiàn)價值。本文主要針對上位監(jiān)控系統(tǒng)與PLC設(shè)備之間的數(shù)據(jù)通信進(jìn)行分析,介紹了PLC設(shè)備的驅(qū)動開發(fā)的方法,并供應(yīng)PLC通信的實(shí)例。

2、PLC驅(qū)動的使用

本文中以使用串口通訊的PLC為例進(jìn)行分析和說明,監(jiān)控系統(tǒng)為北京昆侖通態(tài)公司生產(chǎn)的MCGS監(jiān)控軟件。開發(fā)工具為VC++6.0。

MCGS中PLC已經(jīng)將串口通訊的波特率設(shè)置等功能集成至串口父設(shè)備中,因此PLC設(shè)備驅(qū)動是作為MCGS監(jiān)控軟件設(shè)備管理窗口中的子設(shè)備供應(yīng)的。它可以使用父設(shè)備的通訊功能,即可以與其他設(shè)備共享父設(shè)備的通訊功能。由于使用串口的PLC設(shè)備較多,在這里我們以使用串口通訊方式的PLC為例進(jìn)行說明PLC通用驅(qū)動的構(gòu)架的開發(fā)。如使用自定義編程電纜方式或使用以太網(wǎng)方式連接,此PLC驅(qū)動構(gòu)架同樣適用。

使用串口通訊的PLC與上位機(jī)的通訊方式中,有RS232、RS485、RS422多種方式。假如設(shè)備是采納RS232方式通訊,那么在一個串口下面只能掛接一個設(shè)備。假如采納RS485或者RS422的方式通訊,那么可以使用多個設(shè)備構(gòu)成一個網(wǎng)絡(luò),在這個網(wǎng)絡(luò)中,為了識別各個不同的設(shè)備,給每一個設(shè)備加上一個標(biāo)志,一般來說把這個標(biāo)志稱作設(shè)備地址。這個總線上的設(shè)備分為主設(shè)備和從設(shè)備兩類。在工作時,從設(shè)備始終在監(jiān)聽通訊線路上的數(shù)據(jù),并對這些數(shù)據(jù)進(jìn)行分析,當(dāng)收到對自己的懇求時,會發(fā)送一個相應(yīng)的應(yīng)答幀。主設(shè)備在工作時會依據(jù)需要向從設(shè)備發(fā)送懇求幀,懇求一些數(shù)據(jù)或者是發(fā)送一條命令,在發(fā)完懇求幀后主設(shè)備需等待從設(shè)備的回答,這個等待的過程有一個超時時間限制。假如過了肯定的時間還沒有收到回答,它會認(rèn)為本次通訊失敗,然后根據(jù)肯定的規(guī)律推斷是應(yīng)當(dāng)重發(fā)懇求還是放棄。

通訊使用的通訊協(xié)議,分為ASCII通訊和16進(jìn)制通訊兩類。PLC的通訊協(xié)議中大多數(shù)都是使用16進(jìn)制通訊。而且在串口通訊中,為了保證通訊的正確性、完整性,通常在通訊幀的尾部加上校驗(yàn),常見的有和校驗(yàn),異或校驗(yàn),CRC校驗(yàn)等等。

在通訊過程中,上位機(jī)的MCGS監(jiān)控軟件調(diào)用PLC驅(qū)動,依據(jù)詳細(xì)協(xié)議,向PLC設(shè)備發(fā)送寄存器的讀寫命令,并接收應(yīng)答數(shù)據(jù)。

3、主要流程

3.1采集流程

為便于說明,此處以一個采集周期內(nèi)僅需單次采集的最簡狀況為例。在5.1中的密集采集模式中,描述了對一周期內(nèi)需多次采集的算法。

采集過程描述如下:首先進(jìn)行初始化,隨后創(chuàng)建通道。進(jìn)入數(shù)據(jù)采集周期,在每個數(shù)據(jù)采集周期中,首先形成讀命令,隨后校驗(yàn)發(fā)送數(shù)據(jù)幀,讀寫串口完成一次通訊,假如通訊勝利,那么校驗(yàn)后將接收到的數(shù)據(jù)解碼輸出到通道,返回勝利標(biāo)識,假如通訊不勝利或校驗(yàn)失敗,返回失敗標(biāo)識。

3.2解析函數(shù)流程

上圖為解析數(shù)據(jù)幀的流程圖。不同的設(shè)備具有不同的協(xié)議內(nèi)容,使用定義好的模版解析函數(shù)只需要開發(fā)人員根據(jù)設(shè)備協(xié)議將幀分割為有效的數(shù)據(jù)部分,添入聯(lián)合體FrameField即可。該聯(lián)合體可將協(xié)議數(shù)據(jù)最小分割為位來進(jìn)行操作。

如上圖所示,第一個字節(jié)為幀頭,最終一個字節(jié)為幀尾,其次個字節(jié)為狀態(tài)標(biāo)示,第三至第六個字節(jié)為模擬量,第七個字節(jié)為單位,第八個字節(jié)按位分為四路輸入和四路輸出。

4、接口設(shè)計

通常來說,一個廠家的同系列的PLC產(chǎn)品,通訊協(xié)議一般是一樣的。區(qū)分只是在于其中一些寄存器的大小不同。這樣我們就考慮可以讓這一個系列的設(shè)備使用同一個驅(qū)動。為了提高通用性,同時一般狀況下,用戶也不需要使用全部的寄存器,所以把這種設(shè)備構(gòu)件的通道設(shè)計成用戶可以在組態(tài)時自己進(jìn)行定義。全部的通道及其所對應(yīng)的參數(shù)(即是寄存器地址)都由用戶自己進(jìn)行定義。驅(qū)動程序依據(jù)用戶定義的信息進(jìn)行通訊。而且PLC當(dāng)中可能有一些參數(shù)用戶并不常用,假如組成通道,每一個采集周期都要進(jìn)行通訊,效率比較低下,考慮到這種狀況,我們供應(yīng)了一些外部接口供監(jiān)控系統(tǒng)調(diào)用,在這些接口中可以發(fā)送命令,支持全部的寄存器通道。

而對不同廠家的PLC設(shè)備進(jìn)行分析,也可以發(fā)覺,可以將通訊過程和協(xié)議方式進(jìn)行抽象,提取它們的共同點(diǎn)和變化點(diǎn),封裝和隱蔽數(shù)據(jù)交換過程中的細(xì)節(jié),達(dá)到通用的目的。通過封裝格式,規(guī)范代碼,統(tǒng)一接口,提高驅(qū)動開發(fā)效率,降低驅(qū)動開發(fā)的難度。提高代碼的重用性,增加驅(qū)動的穩(wěn)定性,削減設(shè)計中簡單消失的錯誤。使開發(fā)人員把主要的精力放在對設(shè)備的熟識和對協(xié)議的分析上,而不是過多地糾纏于編程實(shí)現(xiàn)的細(xì)枝末節(jié)上。

封裝的數(shù)據(jù)和操作包括:

隱蔽一次數(shù)據(jù)采集中的底層通訊過程(某些設(shè)備完成一次采集需要一次以上的發(fā)收過

程,如西門子S7200);封裝針對采集點(diǎn)分散的動態(tài)采集算法;封裝常用的命令操作;對與監(jiān)控系統(tǒng)間的交互供應(yīng)統(tǒng)一的接口;PLC驅(qū)動封裝了底層的通訊過程,只將接口方法暴露在外面,開發(fā)人員以統(tǒng)一的方式去調(diào)用這個方法,從而保證軟件對客戶的透亮?????性,使開發(fā)人員從低層的開發(fā)中脫離出來,降低開發(fā)的難度。

對驅(qū)動的開發(fā)人員來說,需要關(guān)注的接口僅有以下部分:

定義設(shè)備本身的屬性;如地址、實(shí)時采集的時間要求等;定義設(shè)備的讀寫操作屬性;如通道數(shù)量等;通用設(shè)計僅供應(yīng)跟設(shè)備協(xié)議相關(guān)的組包和解包接口,實(shí)現(xiàn)過程將由開發(fā)人員完成。

5、關(guān)鍵問題分析

為供應(yīng)信道利用率,提高系統(tǒng)效率,在PLC的通信框架設(shè)計中考慮了幾個關(guān)鍵問題。

5.1三種采集模式

經(jīng)過對現(xiàn)有的數(shù)據(jù)交換的分析,將用戶的一般需求擬概括為三種采集模式,即密集采集,按需采集,定時采集。

密集采集模式:在這種狀況下,用戶盼望能盡量利用物理帶寬,保證最快的采集速度和更新。在這種模式下,抱負(fù)狀態(tài)是設(shè)備始終處于采集狀態(tài)。采集目前全部激活通道中離需要采集的周期時間最小的通道。保證全部的通道都能獲得采集機(jī)會,但是相對與其他模式,在該模式下CPU占用率會比較高。

按需采集模式:在通訊鏈路需要受控的狀況下,比如用戶采納GPRS進(jìn)行采集,按流量計費(fèi),所以不能進(jìn)行大量的通訊。這時候通過設(shè)置采集模式為按需采集,然后在需要時再調(diào)用接口函數(shù)啟動單次采集。否則不進(jìn)行數(shù)據(jù)采集。

定時采集模式:該模式是在CPU的占用率和采集速度之間進(jìn)行折衷的采集框式,保證在用戶設(shè)置的通道刷新周期的時間內(nèi)進(jìn)行通道的采集,之后直到下一次通道的刷新周期到達(dá)再進(jìn)行下一次采集。

在模塊設(shè)計中,采集模式作為設(shè)備類的一個屬性,由開發(fā)人員依據(jù)詳細(xì)狀況,選擇合適的采集模式。不同采集模式的采集算法實(shí)現(xiàn)如下:

密集采集執(zhí)行流程:設(shè)置一個采集周期如1000ms。每當(dāng)開頭一個新采集周期時,重新計算采集通道的優(yōu)先級別。遍歷全部的通道,找出目前優(yōu)先級最高的通道,進(jìn)行采集。對通道進(jìn)行分塊(塊中包含最需要刷新的通道)。進(jìn)入通訊循環(huán)(某些設(shè)備進(jìn)行一次采集至少需要兩次通訊所以需要通訊循環(huán))。發(fā)送數(shù)據(jù)懇求并等待回應(yīng);依據(jù)返回的信息解析出結(jié)果,并作相應(yīng)處理;推斷是否需要下一次采集,假如不需要跳出循環(huán);更新通道和采集標(biāo)志;連續(xù)發(fā)送線程消息啟動下一次采集直到一次通訊循環(huán)結(jié)束;直到遍歷完全部需采集的通道。

按需采集執(zhí)行流程:循環(huán)對每個通道進(jìn)行采集,保存采集勝利的值,并進(jìn)行后續(xù)處理。定時采集執(zhí)行流程由定時器觸發(fā),采集流程與密集采集一樣,但在推斷沒有滿意采集要求的通道不進(jìn)行采集。

5.2采集點(diǎn)分散的動態(tài)采集算法

在現(xiàn)有的數(shù)據(jù)交換過程中,用戶關(guān)懷的數(shù)據(jù)往往只占全部信息的很小一部分,而且這些采集點(diǎn)分散在海量的數(shù)據(jù)中,假如不加推斷的依次讀取數(shù)據(jù),有效信息與采集信息的比例很低,實(shí)時性差;假如僅采集有效信息,安排的采集粒度過小,又會造成系統(tǒng)效率低下,信道利用率差。針對這一問題,實(shí)行以下的解決方法:

(1)只采集用戶關(guān)懷的數(shù)據(jù)。如當(dāng)有多個通道時,只傳送當(dāng)前用戶只關(guān)懷的通道的數(shù)據(jù),而不關(guān)懷其它的通道。保證采集盡量少的通道,為每個需要采集的通道供應(yīng)更快的采集周期。從而削減通訊量。

(2)對于待采集的數(shù)據(jù)安排不同的優(yōu)先級,對實(shí)時性要求高的部分?jǐn)?shù)據(jù)優(yōu)先采集??梢砸罁?jù)用戶設(shè)置的數(shù)據(jù)刷新時間來轉(zhuǎn)變其優(yōu)先級。

(3)實(shí)現(xiàn)一個動態(tài)分塊算法,在一個合理的粒度上對采集的信息分塊傳輸,兼顧信道利用率與有效信息獵取的實(shí)時性;實(shí)現(xiàn)的分塊算法簡述如下:在采集時推斷,假如當(dāng)前采集的寄存器類的激活通道可以組成一個數(shù)據(jù)懇求包,則進(jìn)行處理,提高一次采集的通道數(shù)。依據(jù)開發(fā)人員定義的通道優(yōu)先級,找出優(yōu)先級最高的通道地址四周的地址連續(xù)(或緊密)的通道,這些通道形成一個通道塊。重復(fù)同樣的過程,將剩下的通道連續(xù)分塊,直到形成的塊數(shù)大于某一規(guī)定的數(shù)值比如20或?qū)⒈炯拇嫫鞯娜客ǖ腊才磐瓿伞?/p>

(4)依據(jù)通訊協(xié)議的特點(diǎn),在打包數(shù)據(jù)懇求時盡量保證包含更多的懇求,從而削減

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論