Design and Implementation about Non-real-time Data Sharing among PLCs
趙艷領(機械工業儀器儀表綜合技術經濟研究所網絡控制研究中心,北京 100055)
?
PLC之間非實時數據共享設計與實現
國家863基金資助項目(編號:2013AA040304)。
修改稿收到日期:2015-09-17。
作者趙艷領(1984-),男,2009年畢業于哈爾濱工業大學控制科學與工程專業,獲碩士學位,工程師;主要從事工業自動化系統開發、工控系統信息安全、嵌入式軟件開發、樓宇自動化等方面的研究。
PLC控制系統通常由工程師站、操作員站、PLC和生產現場設備組成[1]。隨著自動化控制水平的不斷提高,PLC之間的數據交換要求也越來越高[2]。由于企業升級改造,一條主作業線上可能并存西門子、ABB、GE等多家的PLC系統,對于這種情況,經常使用現場總線或者OPC集成技術進行不同廠家PLC之間數據的交換和共享[3]。
總體而言,一般廠商都提供本品牌PLC之間數據共享解決方案,如西門子S7-300分布式PLC之間的數據共享采用全局數據包(global data,GD)的方式[4]。目前PLC之間的數據共享大多數是類似GD這種方式,存在通信速率低(有的不使用以太網)、組態繁瑣(要求接收方和發送方都要組態相同的數據個數、順序、類型)、限制數據報文長度、明文傳輸、校驗機制簡單、不支持網絡冗余等問題。
本文利用獨立開發組態軟件和PLC固件程序的優勢,確定PLC之間的數據共享關系,采用數據名稱+數據類型的組合作為PLC之間共享數據項的通信唯一標志; PLC之間數據的交換和共享采用高效的用戶數據報協議(user datagram protocol,UDP),并采用通信可靠性等技術手段確保數據傳輸的可靠、機密和穩定。
基于類似GD全局數據包方式,不同PLC之間數據共享與交換的技術原理如圖1所示。

圖1 類似GD的數據共享方式示意圖Fig. 1 The data sharingmethod similar to GD
假設有3臺PLC設備,PLC1的IP地址是192. 168. 1. 10,PLC2的IP地址是192. 168. 1. 11,PLC3的IP地址是192. 168. 1. 12。
PLC1與PLC2和PLC3之間的數據共享和交換的步驟如下。
①組態軟件組態出PLC1有兩組需要供應給PLC2和PLC3的數據組(如果PLC1需要共享PLC2的數據,則稱PLC1為消費方,PLC2為供應方),數據組1包含一個Bool類型的A變量和浮點類型的B變量,數據組2包含一個Bool類型的C變量和浮點類型的D變量。
②組態軟件組態出PLC2有一組需要從PLC1消費的數據組1(包含一個Bool類型的A變量和浮點類型的B變量)。
③組態軟件組態出PLC3有一組從PLC1消費的數據組2(包含一個Bool類型的C變量和浮點類型的D變量)。
④把組態信息下載到PLC之中。
⑤PLC1周期性地向PLC2和PLC3發送數據。
⑥PLC2和PLC3實時地接收數據。
這種方案的優點是傳輸數據不用包括變量的任何信息,只需要傳輸數據值,因此通信效率高,但也存在很多缺點。
①組態復雜。如PLC2需要增加一個消費PLC1的數據點項,則PLC1和PLC2都需要重新組態。
②無法發現數據長度一致但類型不一致的問題。如B在PLC1中是Float類型,在PLC2中是int類型(假設用戶組態錯誤),報文無法識別該類錯誤。
③無法發現順序顛倒,如PLC1中的A、B的順序,PLC2中的B、A順序仍然通信正常。
④無校驗或者校驗簡單;明文傳輸、難以滿足日益嚴峻的工業信息安全要求。
2. 1總體設計
鑒于目前存在的問題,本方案應當優先實現的目標是:①較高的通信效率保證數據的實時性;②組態簡單;③保證通信可靠性和安全性。
該方案的完成同樣需要組態軟件和固件程序的配合,在組態軟件中利用設定的規則配置出PLC之間共享數據的消費和供應關系,然后連同邏輯配置下載到相應PLC設備之中。作為消費方的PLC首先向供應方的PLC發出消費請求,單個點項使用變量名和數據類型的組合來標志消費數據的信息,這就可以保證消費數據信息的唯一性。供應方的PLC查詢自己的供應數據庫,若消費信息存在,則周期性應答;否則應答錯誤。消費方在發出請求之后,則周期性接收供應信息,若一定時間收不到信息,則重新發送消費信息,設計原理如圖2所示。

圖2 方案設計原理圖Fig. 2 The design principle of scheme
2. 2組態軟件的實現
組態軟件主要是定義組態規則和生成PLC之間數據共享的消費和供應關系,規則示例如在PLC1中組態PLC2#Bool#A,其含義是PLC1需要消費PLC2中的變量類型為Bool變量A。在PLC2中需要把變量A加入到共享數據庫中,為了方便,可以把經常用到的I/O測點變量增加到共享數據庫中。若無別的消費方PLC請求,消費信息對系統沒有影響;而當PLC1中需要消費更多變量時,PLC2無需再次下載程序。
對于同一個PLC,可能既是消費方也是供應方,因此最終生成消費信息和共享數據庫信息兩類組態信息。消費信息的數據結構如圖3所示,共享數據庫以列表的形式包含所有的共享數據信息。

圖3 消費信息結構圖Fig. 3 The structure of consumption information
2. 3固件程序的實現
2. 3. 1固件程序模塊劃分
隨著技術的進步,軟件的應用日趨廣泛,軟件開發也成為系統工程,復雜軟件的設計應用遞歸分解技術將大業務加以分解,提高程序可修改性以及可擴展性[5]。PLC固件程序也是一個包含各個子功能的程序集合,數據共享功能使用模塊化的設計思想進行功能劃分和分解,功能模塊劃分如圖4所示,包含6大模塊。
①配置解析模塊主要是解析組態軟件下發的消費信息和共享數據庫信息。
②調度模塊主要是控制接收、發送與PLC自身的其他模塊的調度關系。
③診斷模塊主要是發現請求超時、接收異常等信息。
④發送模塊主要是完成消費信息的請求和提供共享數據應答發送的功能。
⑤接收模塊主要是控制周期性接收消費請求信息和消費請求應答信息的管理。
⑥安全性模塊主要包括數據報文的校驗、加密、糾錯等方式。

圖4 固件程序模塊Fig. 4 The module of firmware program
本文不對所有模塊進行一一說明,只介紹此方案實現過程中碰到的容易出錯的地方,詳見2. 3. 2及其以后的章節。
2. 3. 2數據共享功能調度順序
為便于調試,PLC廠商一般會提供強制功能。強制的含義是指在沒有實際設備的情況下可以對輸入、輸出測點進行數據值的控制。當強制輸入點時由于該輸入點值為“強制值”,就相當于“真正的輸入點”[6]。
PLC基本的運行機制是掃描輸入數據、邏輯運算、輸出控制。共享數據的消費方實際是從網絡上獲取供應方PLC采集的數據或者運算的結果,與本身從實際I/O測點獲得的數據類似也可以成為網絡I/O測點。
結合以上兩點,數據共享功能的調度順序如圖5所示,否則可能會出現無法強制和消費方接收的數據更新滯后的情況。

圖5 調度順序示意圖Fig. 5 The scheduling sequence
2. 3. 3共享數據變量的保持屬性
由于實際運行中的PLC可能會因為掉電或者程序異常而重新啟動,重啟之后有些數據必須保持在重啟之前的狀態,否則現場會失去控制。譬如西門子的PLC內部繼電器R僅用于內部,不提供外部輸出。R可按保持型/非保持型設置,保持與非保持的意義如下。
保持:是指在工作電源掉電或PLC工作方式由RUN轉為PROG時,存儲區的內容不會丟失或被修改。
非保持:是指在工作電源掉電或PLC的工作方式由RUN轉為PROG時,存儲區的內容將會丟失或被修改[7]。
我們開發的PLC仍然存在這兩類屬性,對于組態軟件生成的消費信息和共享數據庫信息中的變量必須具有保持型屬性(無需用戶設置系統自動生成),否則極端情況下會出現現場失控現象,如PLC1需要消費PLC2中一個Bool變量A。該變量A在PLC1中參與一個連鎖控制重啟前為True,若A為False時觸發一個事件并進行記錄。當PLC1重啟之后A如無特殊屬性則歸零為False,在沒有收到PLC2發來的數據之前將利用False參與運算導致錯誤。有些廠家的PLC需要用戶添加,而用戶一旦忘記只有重啟時才可能發現,平時很難測試出來,為系統埋下較大的隱患。
2. 3. 4通信安全性保障
用戶數據報協議(UDP)是ISO參考模型中一種無連接的傳輸層協議,提供面向操作的簡單非可靠信息傳送服務。由于不存在數據分片和連接管理,系統開銷比較小,通信帶寬有效利用率要高于基于連接的通信方式;用戶無需從其中接收的通信數據進行組裝和判斷,內部通信基于消息機制,每次收發的數據報文具有獨立意義。相對傳輸控制協議(transmission control protocol,TCP),采用UDP可以降低用戶最終數據的解釋帶來的額外系統開銷[8]。
考慮到PLC系統資源,使用UDP協議進行數據的傳輸,但是UDP是一種無連接不安全的網絡協議,有必要通過增加一些手段來確保數據傳輸的可靠性和安全性。常見的數據通信錯誤有損壞、重復、亂序、丟失等,本方案參考IEC 61784-3關于通信錯誤和對策的建議,取舍之后采用的方法如表1所示。需要說明的是,考慮到系統資源,本加密算法是極其簡單的處理,而非常用的AES、DES等加密算法。

表1 通信可靠性方法Tab. 1 The measures of communication reliability
表1中,“!”表示具有該項功能。
3. 1測試環境
測試環境組成如圖6所示。

圖6 測試驗證圖Fig. 6 The testingverification
①開發的實際功能安全PLC共5個(沈陽中科博微自動化技術有限公司開發,內部型號Cybersafe)。
②采用匹配的虛擬仿真軟件虛擬27個PLC,虛擬仿真軟件運行于PC機上,可以實現PLC的邏輯執行、HMI通信等各種功能。
③組態軟件和操作員站合為一臺PC機,所有的設備采用交換機連接。
④數據共享信息組態。真實PLC1需要共享PLC2、PLC3、PLC4、PLC5以及其他27個虛擬PLC的數據信息,包括50個模擬量和50個數字量。
⑤采用故障注入的方法插入無序、重復報文,查看處理結果。
3. 2測試結果分析
根據實現原理可知,PLC1開始時需要進行數據共享信息的請求,請求成功后,4個真實PLC和27個虛擬PLC周期性向PLC1進行共享信息的發送,因此會影響PLC1的CPU負荷和網絡負荷,測試結果如表2所示。

表2 主要測試項結果Tab.2 The main testing results
本文在分析現有技術優缺點基礎之上,根據存在的問題,采用網絡通信的方式,利用自主開發的優勢,通過組態軟件和固件程序的上下配合,解決了目前組態復雜、通信可靠性低等缺點,給出了實際開發中的關鍵問題的解決方法。
由于嵌入式系統資源的有限性,報文的加密算法比較簡單。在工業信息安全日益引起重視的今天,在不引入外部防護設備的情況下,作為網絡I/O的共享數據的安全性和可靠性依靠PLC自身策略的保障仍是一個尚待解決的問題。
參考文獻
[1]郝久清,肖立.PLC控制系統的可靠性設計[J].自動化儀表,2005,26(11):21-24.
[2]程金良.不同PLC之間的通信技術實例[J].寶鋼技術,2005(S1):40-42.
[3]曾蓉,馮繼勇,丁明亮,等.國產DCS與PLC集成方案的比較及其在電廠的應用[J].自動化儀表,2009,30(12):46-48.
[4]王長棟,左先波,胥小萍.西門子S7系列PLC的MPI網絡與全局數據通信[J].機械工人(冷加工),2000(11):29-30.
[5]王小峰.試論基于架構的軟件設計[J].信息系統工程,2015(3):36.
[6]姜陽,彭賽.西門子PLC強制及保持功能應用[J].沈陽大學學報,2002,14(4):90-92.
[7]趙靜. PLC內部保持/非保持繼電器設置的技巧[J].機床電器,2004(4):34-35.
[8]趙飛,葉震. UDP協議與TCP協議的對比分析與可靠性改進[J].計算機技術與發展,2006,16(9):219-221.
Design and Implementation about Non-real-time Data Sharing among PLCs
趙艷領
(機械工業儀器儀表綜合技術經濟研究所網絡控制研究中心,北京100055)
摘要:針對PLC之間非實時數據共享組態復雜、通信不可靠等問題,提出了一種PLC之間非實時數據共享方案。方案的實現需要組態軟件和PLC固件程序的配合,組態軟件主要負責配置各個PLC之間數據共享的關系,固件程序解析組態軟件下發的配置信息,采用主動請求的方式建立PLC與PLC之間的數據共享關系。該方案采用UDP協議,并考慮通信數據的完整性與機密性,同時詳細分析了調度、數據屬性、數據可靠性保證的實現。測試驗證了該方案滿足設計目標。
關鍵詞:可編程控制器用戶數據報協議數據完整性數據共享可靠性信息源
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
中圖分類號:TH7; TP319
文獻標志碼:A
DOI:10.16086/j.cnki.issn1000-0380.201603003