Design and Implementation about Non-real-time Data Sharing among PLCs
趙艷領(lǐng)(機(jī)械工業(yè)儀器儀表綜合技術(shù)經(jīng)濟(jì)研究所網(wǎng)絡(luò)控制研究中心,北京 100055)
?
PLC之間非實(shí)時(shí)數(shù)據(jù)共享設(shè)計(jì)與實(shí)現(xiàn)
國(guó)家863基金資助項(xiàng)目(編號(hào):2013AA040304)。
修改稿收到日期:2015-09-17。
作者趙艷領(lǐng)(1984-),男,2009年畢業(yè)于哈爾濱工業(yè)大學(xué)控制科學(xué)與工程專業(yè),獲碩士學(xué)位,工程師;主要從事工業(yè)自動(dòng)化系統(tǒng)開發(fā)、工控系統(tǒng)信息安全、嵌入式軟件開發(fā)、樓宇自動(dòng)化等方面的研究。
PLC控制系統(tǒng)通常由工程師站、操作員站、PLC和生產(chǎn)現(xiàn)場(chǎng)設(shè)備組成[1]。隨著自動(dòng)化控制水平的不斷提高,PLC之間的數(shù)據(jù)交換要求也越來越高[2]。由于企業(yè)升級(jí)改造,一條主作業(yè)線上可能并存西門子、ABB、GE等多家的PLC系統(tǒng),對(duì)于這種情況,經(jīng)常使用現(xiàn)場(chǎng)總線或者OPC集成技術(shù)進(jìn)行不同廠家PLC之間數(shù)據(jù)的交換和共享[3]。
總體而言,一般廠商都提供本品牌PLC之間數(shù)據(jù)共享解決方案,如西門子S7-300分布式PLC之間的數(shù)據(jù)共享采用全局?jǐn)?shù)據(jù)包(global data,GD)的方式[4]。目前PLC之間的數(shù)據(jù)共享大多數(shù)是類似GD這種方式,存在通信速率低(有的不使用以太網(wǎng))、組態(tài)繁瑣(要求接收方和發(fā)送方都要組態(tài)相同的數(shù)據(jù)個(gè)數(shù)、順序、類型)、限制數(shù)據(jù)報(bào)文長(zhǎng)度、明文傳輸、校驗(yàn)機(jī)制簡(jiǎn)單、不支持網(wǎng)絡(luò)冗余等問題。
本文利用獨(dú)立開發(fā)組態(tài)軟件和PLC固件程序的優(yōu)勢(shì),確定PLC之間的數(shù)據(jù)共享關(guān)系,采用數(shù)據(jù)名稱+數(shù)據(jù)類型的組合作為PLC之間共享數(shù)據(jù)項(xiàng)的通信唯一標(biāo)志; PLC之間數(shù)據(jù)的交換和共享采用高效的用戶數(shù)據(jù)報(bào)協(xié)議(user datagram protocol,UDP),并采用通信可靠性等技術(shù)手段確保數(shù)據(jù)傳輸?shù)目煽?、機(jī)密和穩(wěn)定。
基于類似GD全局?jǐn)?shù)據(jù)包方式,不同PLC之間數(shù)據(jù)共享與交換的技術(shù)原理如圖1所示。
圖1 類似GD的數(shù)據(jù)共享方式示意圖Fig. 1 The data sharingmethod similar to GD
假設(shè)有3臺(tái)PLC設(shè)備,PLC1的IP地址是192. 168. 1. 10,PLC2的IP地址是192. 168. 1. 11,PLC3的IP地址是192. 168. 1. 12。
PLC1與PLC2和PLC3之間的數(shù)據(jù)共享和交換的步驟如下。
①組態(tài)軟件組態(tài)出PLC1有兩組需要供應(yīng)給PLC2和PLC3的數(shù)據(jù)組(如果PLC1需要共享PLC2的數(shù)據(jù),則稱PLC1為消費(fèi)方,PLC2為供應(yīng)方),數(shù)據(jù)組1包含一個(gè)Bool類型的A變量和浮點(diǎn)類型的B變量,數(shù)據(jù)組2包含一個(gè)Bool類型的C變量和浮點(diǎn)類型的D變量。
②組態(tài)軟件組態(tài)出PLC2有一組需要從PLC1消費(fèi)的數(shù)據(jù)組1(包含一個(gè)Bool類型的A變量和浮點(diǎn)類型的B變量)。
③組態(tài)軟件組態(tài)出PLC3有一組從PLC1消費(fèi)的數(shù)據(jù)組2(包含一個(gè)Bool類型的C變量和浮點(diǎn)類型的D變量)。
④把組態(tài)信息下載到PLC之中。
⑤PLC1周期性地向PLC2和PLC3發(fā)送數(shù)據(jù)。
⑥PLC2和PLC3實(shí)時(shí)地接收數(shù)據(jù)。
這種方案的優(yōu)點(diǎn)是傳輸數(shù)據(jù)不用包括變量的任何信息,只需要傳輸數(shù)據(jù)值,因此通信效率高,但也存在很多缺點(diǎn)。
①組態(tài)復(fù)雜。如PLC2需要增加一個(gè)消費(fèi)PLC1的數(shù)據(jù)點(diǎn)項(xiàng),則PLC1和PLC2都需要重新組態(tài)。
②無法發(fā)現(xiàn)數(shù)據(jù)長(zhǎng)度一致但類型不一致的問題。如B在PLC1中是Float類型,在PLC2中是int類型(假設(shè)用戶組態(tài)錯(cuò)誤),報(bào)文無法識(shí)別該類錯(cuò)誤。
③無法發(fā)現(xiàn)順序顛倒,如PLC1中的A、B的順序,PLC2中的B、A順序仍然通信正常。
④無校驗(yàn)或者校驗(yàn)簡(jiǎn)單;明文傳輸、難以滿足日益嚴(yán)峻的工業(yè)信息安全要求。
2. 1總體設(shè)計(jì)
鑒于目前存在的問題,本方案應(yīng)當(dāng)優(yōu)先實(shí)現(xiàn)的目標(biāo)是:①較高的通信效率保證數(shù)據(jù)的實(shí)時(shí)性;②組態(tài)簡(jiǎn)單;③保證通信可靠性和安全性。
該方案的完成同樣需要組態(tài)軟件和固件程序的配合,在組態(tài)軟件中利用設(shè)定的規(guī)則配置出PLC之間共享數(shù)據(jù)的消費(fèi)和供應(yīng)關(guān)系,然后連同邏輯配置下載到相應(yīng)PLC設(shè)備之中。作為消費(fèi)方的PLC首先向供應(yīng)方的PLC發(fā)出消費(fèi)請(qǐng)求,單個(gè)點(diǎn)項(xiàng)使用變量名和數(shù)據(jù)類型的組合來標(biāo)志消費(fèi)數(shù)據(jù)的信息,這就可以保證消費(fèi)數(shù)據(jù)信息的唯一性。供應(yīng)方的PLC查詢自己的供應(yīng)數(shù)據(jù)庫(kù),若消費(fèi)信息存在,則周期性應(yīng)答;否則應(yīng)答錯(cuò)誤。消費(fèi)方在發(fā)出請(qǐng)求之后,則周期性接收供應(yīng)信息,若一定時(shí)間收不到信息,則重新發(fā)送消費(fèi)信息,設(shè)計(jì)原理如圖2所示。
圖2 方案設(shè)計(jì)原理圖Fig. 2 The design principle of scheme
2. 2組態(tài)軟件的實(shí)現(xiàn)
組態(tài)軟件主要是定義組態(tài)規(guī)則和生成PLC之間數(shù)據(jù)共享的消費(fèi)和供應(yīng)關(guān)系,規(guī)則示例如在PLC1中組態(tài)PLC2#Bool#A,其含義是PLC1需要消費(fèi)PLC2中的變量類型為Bool變量A。在PLC2中需要把變量A加入到共享數(shù)據(jù)庫(kù)中,為了方便,可以把經(jīng)常用到的I/O測(cè)點(diǎn)變量增加到共享數(shù)據(jù)庫(kù)中。若無別的消費(fèi)方PLC請(qǐng)求,消費(fèi)信息對(duì)系統(tǒng)沒有影響;而當(dāng)PLC1中需要消費(fèi)更多變量時(shí),PLC2無需再次下載程序。
對(duì)于同一個(gè)PLC,可能既是消費(fèi)方也是供應(yīng)方,因此最終生成消費(fèi)信息和共享數(shù)據(jù)庫(kù)信息兩類組態(tài)信息。消費(fèi)信息的數(shù)據(jù)結(jié)構(gòu)如圖3所示,共享數(shù)據(jù)庫(kù)以列表的形式包含所有的共享數(shù)據(jù)信息。
圖3 消費(fèi)信息結(jié)構(gòu)圖Fig. 3 The structure of consumption information
2. 3固件程序的實(shí)現(xiàn)
2. 3. 1固件程序模塊劃分
隨著技術(shù)的進(jìn)步,軟件的應(yīng)用日趨廣泛,軟件開發(fā)也成為系統(tǒng)工程,復(fù)雜軟件的設(shè)計(jì)應(yīng)用遞歸分解技術(shù)將大業(yè)務(wù)加以分解,提高程序可修改性以及可擴(kuò)展性[5]。PLC固件程序也是一個(gè)包含各個(gè)子功能的程序集合,數(shù)據(jù)共享功能使用模塊化的設(shè)計(jì)思想進(jìn)行功能劃分和分解,功能模塊劃分如圖4所示,包含6大模塊。
①配置解析模塊主要是解析組態(tài)軟件下發(fā)的消費(fèi)信息和共享數(shù)據(jù)庫(kù)信息。
②調(diào)度模塊主要是控制接收、發(fā)送與PLC自身的其他模塊的調(diào)度關(guān)系。
③診斷模塊主要是發(fā)現(xiàn)請(qǐng)求超時(shí)、接收異常等信息。
④發(fā)送模塊主要是完成消費(fèi)信息的請(qǐng)求和提供共享數(shù)據(jù)應(yīng)答發(fā)送的功能。
⑤接收模塊主要是控制周期性接收消費(fèi)請(qǐng)求信息和消費(fèi)請(qǐng)求應(yīng)答信息的管理。
⑥安全性模塊主要包括數(shù)據(jù)報(bào)文的校驗(yàn)、加密、糾錯(cuò)等方式。
圖4 固件程序模塊Fig. 4 The module of firmware program
本文不對(duì)所有模塊進(jìn)行一一說明,只介紹此方案實(shí)現(xiàn)過程中碰到的容易出錯(cuò)的地方,詳見2. 3. 2及其以后的章節(jié)。
2. 3. 2數(shù)據(jù)共享功能調(diào)度順序
為便于調(diào)試,PLC廠商一般會(huì)提供強(qiáng)制功能。強(qiáng)制的含義是指在沒有實(shí)際設(shè)備的情況下可以對(duì)輸入、輸出測(cè)點(diǎn)進(jìn)行數(shù)據(jù)值的控制。當(dāng)強(qiáng)制輸入點(diǎn)時(shí)由于該輸入點(diǎn)值為“強(qiáng)制值”,就相當(dāng)于“真正的輸入點(diǎn)”[6]。
PLC基本的運(yùn)行機(jī)制是掃描輸入數(shù)據(jù)、邏輯運(yùn)算、輸出控制。共享數(shù)據(jù)的消費(fèi)方實(shí)際是從網(wǎng)絡(luò)上獲取供應(yīng)方PLC采集的數(shù)據(jù)或者運(yùn)算的結(jié)果,與本身從實(shí)際I/O測(cè)點(diǎn)獲得的數(shù)據(jù)類似也可以成為網(wǎng)絡(luò)I/O測(cè)點(diǎn)。
結(jié)合以上兩點(diǎn),數(shù)據(jù)共享功能的調(diào)度順序如圖5所示,否則可能會(huì)出現(xiàn)無法強(qiáng)制和消費(fèi)方接收的數(shù)據(jù)更新滯后的情況。
圖5 調(diào)度順序示意圖Fig. 5 The scheduling sequence
2. 3. 3共享數(shù)據(jù)變量的保持屬性
由于實(shí)際運(yùn)行中的PLC可能會(huì)因?yàn)榈綦娀蛘叱绦虍惓6匦聠?dòng),重啟之后有些數(shù)據(jù)必須保持在重啟之前的狀態(tài),否則現(xiàn)場(chǎng)會(huì)失去控制。譬如西門子的PLC內(nèi)部繼電器R僅用于內(nèi)部,不提供外部輸出。R可按保持型/非保持型設(shè)置,保持與非保持的意義如下。
保持:是指在工作電源掉電或PLC工作方式由RUN轉(zhuǎn)為PROG時(shí),存儲(chǔ)區(qū)的內(nèi)容不會(huì)丟失或被修改。
非保持:是指在工作電源掉電或PLC的工作方式由RUN轉(zhuǎn)為PROG時(shí),存儲(chǔ)區(qū)的內(nèi)容將會(huì)丟失或被修改[7]。
我們開發(fā)的PLC仍然存在這兩類屬性,對(duì)于組態(tài)軟件生成的消費(fèi)信息和共享數(shù)據(jù)庫(kù)信息中的變量必須具有保持型屬性(無需用戶設(shè)置系統(tǒng)自動(dòng)生成),否則極端情況下會(huì)出現(xiàn)現(xiàn)場(chǎng)失控現(xiàn)象,如PLC1需要消費(fèi)PLC2中一個(gè)Bool變量A。該變量A在PLC1中參與一個(gè)連鎖控制重啟前為True,若A為False時(shí)觸發(fā)一個(gè)事件并進(jìn)行記錄。當(dāng)PLC1重啟之后A如無特殊屬性則歸零為False,在沒有收到PLC2發(fā)來的數(shù)據(jù)之前將利用False參與運(yùn)算導(dǎo)致錯(cuò)誤。有些廠家的PLC需要用戶添加,而用戶一旦忘記只有重啟時(shí)才可能發(fā)現(xiàn),平時(shí)很難測(cè)試出來,為系統(tǒng)埋下較大的隱患。
2. 3. 4通信安全性保障
用戶數(shù)據(jù)報(bào)協(xié)議(UDP)是ISO參考模型中一種無連接的傳輸層協(xié)議,提供面向操作的簡(jiǎn)單非可靠信息傳送服務(wù)。由于不存在數(shù)據(jù)分片和連接管理,系統(tǒng)開銷比較小,通信帶寬有效利用率要高于基于連接的通信方式;用戶無需從其中接收的通信數(shù)據(jù)進(jìn)行組裝和判斷,內(nèi)部通信基于消息機(jī)制,每次收發(fā)的數(shù)據(jù)報(bào)文具有獨(dú)立意義。相對(duì)傳輸控制協(xié)議(transmission control protocol,TCP),采用UDP可以降低用戶最終數(shù)據(jù)的解釋帶來的額外系統(tǒng)開銷[8]。
考慮到PLC系統(tǒng)資源,使用UDP協(xié)議進(jìn)行數(shù)據(jù)的傳輸,但是UDP是一種無連接不安全的網(wǎng)絡(luò)協(xié)議,有必要通過增加一些手段來確保數(shù)據(jù)傳輸?shù)目煽啃院桶踩?。常見的?shù)據(jù)通信錯(cuò)誤有損壞、重復(fù)、亂序、丟失等,本方案參考IEC 61784-3關(guān)于通信錯(cuò)誤和對(duì)策的建議,取舍之后采用的方法如表1所示。需要說明的是,考慮到系統(tǒng)資源,本加密算法是極其簡(jiǎn)單的處理,而非常用的AES、DES等加密算法。
表1 通信可靠性方法Tab. 1 The measures of communication reliability
表1中,“!”表示具有該項(xiàng)功能。
3. 1測(cè)試環(huán)境
測(cè)試環(huán)境組成如圖6所示。
圖6 測(cè)試驗(yàn)證圖Fig. 6 The testingverification
①開發(fā)的實(shí)際功能安全PLC共5個(gè)(沈陽中科博微自動(dòng)化技術(shù)有限公司開發(fā),內(nèi)部型號(hào)Cybersafe)。
②采用匹配的虛擬仿真軟件虛擬27個(gè)PLC,虛擬仿真軟件運(yùn)行于PC機(jī)上,可以實(shí)現(xiàn)PLC的邏輯執(zhí)行、HMI通信等各種功能。
③組態(tài)軟件和操作員站合為一臺(tái)PC機(jī),所有的設(shè)備采用交換機(jī)連接。
④數(shù)據(jù)共享信息組態(tài)。真實(shí)PLC1需要共享PLC2、PLC3、PLC4、PLC5以及其他27個(gè)虛擬PLC的數(shù)據(jù)信息,包括50個(gè)模擬量和50個(gè)數(shù)字量。
⑤采用故障注入的方法插入無序、重復(fù)報(bào)文,查看處理結(jié)果。
3. 2測(cè)試結(jié)果分析
根據(jù)實(shí)現(xiàn)原理可知,PLC1開始時(shí)需要進(jìn)行數(shù)據(jù)共享信息的請(qǐng)求,請(qǐng)求成功后,4個(gè)真實(shí)PLC和27個(gè)虛擬PLC周期性向PLC1進(jìn)行共享信息的發(fā)送,因此會(huì)影響PLC1的CPU負(fù)荷和網(wǎng)絡(luò)負(fù)荷,測(cè)試結(jié)果如表2所示。
表2 主要測(cè)試項(xiàng)結(jié)果Tab.2 The main testing results
本文在分析現(xiàn)有技術(shù)優(yōu)缺點(diǎn)基礎(chǔ)之上,根據(jù)存在的問題,采用網(wǎng)絡(luò)通信的方式,利用自主開發(fā)的優(yōu)勢(shì),通過組態(tài)軟件和固件程序的上下配合,解決了目前組態(tài)復(fù)雜、通信可靠性低等缺點(diǎn),給出了實(shí)際開發(fā)中的關(guān)鍵問題的解決方法。
由于嵌入式系統(tǒng)資源的有限性,報(bào)文的加密算法比較簡(jiǎn)單。在工業(yè)信息安全日益引起重視的今天,在不引入外部防護(hù)設(shè)備的情況下,作為網(wǎng)絡(luò)I/O的共享數(shù)據(jù)的安全性和可靠性依靠PLC自身策略的保障仍是一個(gè)尚待解決的問題。
參考文獻(xiàn)
[1]郝久清,肖立.PLC控制系統(tǒng)的可靠性設(shè)計(jì)[J].自動(dòng)化儀表,2005,26(11):21-24.
[2]程金良.不同PLC之間的通信技術(shù)實(shí)例[J].寶鋼技術(shù),2005(S1):40-42.
[3]曾蓉,馮繼勇,丁明亮,等.國(guó)產(chǎn)DCS與PLC集成方案的比較及其在電廠的應(yīng)用[J].自動(dòng)化儀表,2009,30(12):46-48.
[4]王長(zhǎng)棟,左先波,胥小萍.西門子S7系列PLC的MPI網(wǎng)絡(luò)與全局?jǐn)?shù)據(jù)通信[J].機(jī)械工人(冷加工),2000(11):29-30.
[5]王小峰.試論基于架構(gòu)的軟件設(shè)計(jì)[J].信息系統(tǒng)工程,2015(3):36.
[6]姜陽,彭賽.西門子PLC強(qiáng)制及保持功能應(yīng)用[J].沈陽大學(xué)學(xué)報(bào),2002,14(4):90-92.
[7]趙靜. PLC內(nèi)部保持/非保持繼電器設(shè)置的技巧[J].機(jī)床電器,2004(4):34-35.
[8]趙飛,葉震. UDP協(xié)議與TCP協(xié)議的對(duì)比分析與可靠性改進(jìn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2006,16(9):219-221.
Design and Implementation about Non-real-time Data Sharing among PLCs
趙艷領(lǐng)
(機(jī)械工業(yè)儀器儀表綜合技術(shù)經(jīng)濟(jì)研究所網(wǎng)絡(luò)控制研究中心,北京100055)
摘要:針對(duì)PLC之間非實(shí)時(shí)數(shù)據(jù)共享組態(tài)復(fù)雜、通信不可靠等問題,提出了一種PLC之間非實(shí)時(shí)數(shù)據(jù)共享方案。方案的實(shí)現(xiàn)需要組態(tài)軟件和PLC固件程序的配合,組態(tài)軟件主要負(fù)責(zé)配置各個(gè)PLC之間數(shù)據(jù)共享的關(guān)系,固件程序解析組態(tài)軟件下發(fā)的配置信息,采用主動(dòng)請(qǐng)求的方式建立PLC與PLC之間的數(shù)據(jù)共享關(guān)系。該方案采用UDP協(xié)議,并考慮通信數(shù)據(jù)的完整性與機(jī)密性,同時(shí)詳細(xì)分析了調(diào)度、數(shù)據(jù)屬性、數(shù)據(jù)可靠性保證的實(shí)現(xiàn)。測(cè)試驗(yàn)證了該方案滿足設(shè)計(jì)目標(biāo)。
關(guān)鍵詞:可編程控制器用戶數(shù)據(jù)報(bào)協(xié)議數(shù)據(jù)完整性數(shù)據(jù)共享可靠性信息源
Abstract:Aiming at the problems of the complexity of software configuration and communication unreliability in non-real-time data sharing,a new policy about non-real-time data sharing among PLCs is proposed. The implementation of the policy needs the cooperation between configuration software and PLC firmware program. The configuration software is responsible for deploying the relation about data sharing among the PLCs; the PLC firmware program issues the configuration information and builds the relation about data sharing by sending request actively. User datagram protocol(UDP)is used in this scheme,and data integrity and data confidentiality are also considered,meanwhile,the details about scheduling,data attributes and the implementation of data reliability insurance are analyzed. The policy is proved to accord with the design target by testing.
Keywords:PLCUDP Data integrity Data sharing Reliability Information sources
中圖分類號(hào):TH7; TP319
文獻(xiàn)標(biāo)志碼:A
DOI:10.16086/j.cnki.issn1000-0380.201603003