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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

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

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

3、主要流程

3.1采集流程

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

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

3.2解析函數(shù)流程

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

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

4、接口設(shè)計(jì)

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

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

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

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

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

對(duì)驅(qū)動(dòng)的開發(fā)人員來(lái)說(shuō),需要關(guān)注的接口僅有以下部分:

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

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

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

5.1三種采集模式

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

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

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

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

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

密集采集執(zhí)行流程:設(shè)置一個(gè)采集周期如1000ms。每當(dāng)開頭一個(gè)新采集周期時(shí),重新計(jì)算采集通道的優(yōu)先級(jí)別。遍歷全部的通道,找出目前優(yōu)先級(jí)最高的通道,進(jìn)行采集。對(duì)通道進(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ā)送線程消息啟動(dòng)下一次采集直到一次通訊循環(huán)結(jié)束;直到遍歷完全部需采集的通道。

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

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

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

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

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

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論