臧 峰, 蔡 丹, 徐衛(wèi)峰, 吳 波, 牛洪海
(南京南瑞繼保電氣有限公司,江蘇 南京 211102)
控制器間數(shù)據(jù)共享方案的設(shè)計與實現(xiàn)
臧 峰, 蔡 丹, 徐衛(wèi)峰, 吳 波, 牛洪海
(南京南瑞繼保電氣有限公司,江蘇 南京 211102)
針對當前控制器之間數(shù)據(jù)共享組態(tài)復(fù)雜、通信不可靠等問題,設(shè)計了一種基于UDP協(xié)議的數(shù)據(jù)共享方案。該方案需要組態(tài)工具和控制器固件程序相配合,組態(tài)工具負責配置控制器之間數(shù)據(jù)共享的邏輯,控制器固件程序負責解析組態(tài)軟件下發(fā)的組態(tài)信息,以實現(xiàn)數(shù)據(jù)共享。源控制器負責采用UDP廣播的方式將共享數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)上,接收控制器負責接收、解析數(shù)據(jù)。該方案具有組態(tài)簡單、程序可實時修改的優(yōu)勢。
控制器; 數(shù)據(jù)共享; 通信; 可靠性;UDP;OPC;TCP/IP; 組態(tài)工具
工業(yè)過程控制系統(tǒng)通常由工程師站、操作員站、過程控制器(或PLC)和現(xiàn)場生產(chǎn)設(shè)備所組成[1]。隨著工業(yè)自動化控制水平的不斷提高,對過程控制器間進行數(shù)據(jù)交互的需求也越來越大[2]。由于企業(yè)擴展生產(chǎn)線或?qū)υ猩a(chǎn)線進行升級改造,可能會導致一條生產(chǎn)線上并存西門子、ABB、施耐德和通用等多個廠家的控制系統(tǒng)。這種情況下,通常采用OPC集成技術(shù),實現(xiàn)不同廠家控制器之間的數(shù)據(jù)共享[3]。一般過程控制器廠家都會提供本品牌控制器間數(shù)據(jù)共享的解決方案,例如西門子S7-300控制器間采用全局數(shù)據(jù)包(globaldata,GD)的方式[4]。但是這種方案存在通信速率低、組態(tài)繁瑣、限制報文長度、明文傳輸、校驗簡單、不支持冗余傳輸?shù)葐栴}[5]。
源控制器采用“源控制器號+組態(tài)頁號+資源號+數(shù)據(jù)類型+數(shù)據(jù)品質(zhì)”的數(shù)據(jù)格式,使用高效的用戶數(shù)據(jù)報協(xié)議(userdatagramprotocol,UDP)將源數(shù)據(jù)廣播到網(wǎng)絡(luò)上。接收控制器監(jiān)聽網(wǎng)絡(luò)廣播報文,將接收的廣播報文解析,并查看是否有本控制器需要的共享數(shù)據(jù)。
1.1 總體設(shè)計
基于目前控制器之間數(shù)據(jù)共享存在的問題,本文提出了一種基于UDP協(xié)議的數(shù)據(jù)共享方案,以實現(xiàn)以下目標:①組態(tài)簡單,且能實現(xiàn)數(shù)據(jù)在線解析;②采用較高效率的UDP協(xié)議,實現(xiàn)數(shù)據(jù)的快速傳輸;③保證數(shù)據(jù)傳輸?shù)目煽啃院桶踩?。為了便于理解,定義源控制器通過UDP廣播發(fā)送共享數(shù)據(jù)為“上網(wǎng)點數(shù)據(jù)”,定義接收控制器接收網(wǎng)絡(luò)廣播報文數(shù)據(jù)為“下網(wǎng)點數(shù)據(jù)”。
該方案需要組態(tài)工具和固件程序的配合,才能實現(xiàn)數(shù)據(jù)共享的功能。組態(tài)工具在源控制器組態(tài)中配置上網(wǎng)點數(shù)據(jù),接收控制器配置下網(wǎng)點數(shù)據(jù),然后把組態(tài)在線下載到控制器中??刂破鲗崟r解析配置文本,實現(xiàn)數(shù)據(jù)共享功能。本設(shè)計的方案原理如圖1所示。處理器采用TI公司的C674X系列雙核CPU,ARM運行Linux操作系統(tǒng),并且提供TCP/IP協(xié)議棧,數(shù)字信號處理器(digitalsignalprocessor,DSP)負責算法頁面的解析和控制算法的執(zhí)行。源控制器DSP把上網(wǎng)點數(shù)據(jù)壓入循環(huán)隊列,通過共享內(nèi)存的方法把數(shù)據(jù)傳輸?shù)紸RM,然后ARM把上網(wǎng)點數(shù)據(jù)通過UDP廣播到以太網(wǎng)上。接收控制器監(jiān)聽以太網(wǎng)數(shù)據(jù),接收網(wǎng)點數(shù)據(jù),并解析是否需要存儲這些數(shù)據(jù)。如果需要存儲,就把下網(wǎng)點數(shù)據(jù)壓入ARM數(shù)據(jù)共享循環(huán)隊列,通過共享內(nèi)存?zhèn)鬏數(shù)紻SP。
圖1 方案設(shè)計原理圖
1.2 組態(tài)軟件設(shè)計
組態(tài)軟件定義組態(tài)規(guī)則并生成上網(wǎng)點和下網(wǎng)點的關(guān)系。例如:圖1中的源控制器(控制器號=1)設(shè)置上網(wǎng)點數(shù)據(jù),接收控制器(控制器號=2~n)設(shè)置下網(wǎng)點數(shù)據(jù)。在組態(tài)中,控制器既可以作為源控制器為其他控制器提供上網(wǎng)點數(shù)據(jù),又可以接收其他控制器廣播的下網(wǎng)點數(shù)據(jù)。
1.3 固件設(shè)計
隨著計算機技術(shù)的不斷發(fā)展,軟件開發(fā)成為一項復(fù)雜的系統(tǒng)工程[5]。設(shè)計復(fù)雜軟件時,使用遞歸分解技術(shù)將大業(yè)務(wù)予以分解,提高了程序可修改性以及可擴展性[6]。本文設(shè)計的控制器固件程序是一個包含各個子功能的程序集合。采用模塊化的設(shè)計思想對數(shù)據(jù)共享功能進行模塊化設(shè)計與分解,主要包括以下6大模塊。
①接收模塊,負責接收控制器監(jiān)聽網(wǎng)絡(luò)廣播報文,將廣播在以太網(wǎng)上的共享內(nèi)存數(shù)據(jù)保存下來,并解析是否為本控制器所需的共享數(shù)據(jù)。
②發(fā)送模塊,負責把上網(wǎng)點數(shù)據(jù)組包,然后進行網(wǎng)絡(luò)廣播。
③冗余模塊,負責把數(shù)據(jù)通過A/B雙網(wǎng)發(fā)送,接收控制器對A/B雙網(wǎng)接收到的冗余數(shù)據(jù)進行解析,并把重復(fù)報文丟棄。
④配置文件解析模塊,負責實時解析組態(tài)軟件下發(fā)的組態(tài)文本。
⑤安全模塊,負責進行數(shù)據(jù)報文的校驗、加密、糾錯等。
⑥診斷模塊,負責診斷接收到的數(shù)據(jù)品質(zhì),檢測源控制器是否掉線。
固件程序模塊如圖2所示。
圖2 固件程序模塊示意圖
根據(jù)共享數(shù)據(jù)的流向,數(shù)據(jù)共享功能模塊設(shè)計可以分為以下4部分:①源控制器DSP側(cè)設(shè)計;②源控制器ARM側(cè)設(shè)計;③接收控制器ARM側(cè)設(shè)計;④接收控制器DSP側(cè)設(shè)計。以下對這4部分設(shè)計進行介紹。
1.3.1 源控制器DSP側(cè)設(shè)計
源控制器DSP側(cè)周期性地執(zhí)行算法頁面,在算法頁面開始執(zhí)行時,設(shè)置一個全局變量g_AlgorithmTaskRunFlag為“1”,通知源控制器算法頁面正在執(zhí)行。當算法頁面執(zhí)行時,如果有上網(wǎng)點數(shù)據(jù)配置,就把數(shù)據(jù)壓入上網(wǎng)點循環(huán)隊列;當算法頁面執(zhí)行完畢后,設(shè)置全局變量為“0”。源控制器DSP側(cè)上網(wǎng)點算法周期性檢查全局變量是否為“0”,為“0”就把上網(wǎng)點循環(huán)隊列中的數(shù)據(jù)取出,并通過共享內(nèi)存?zhèn)鬏斀oARM。由于是使用循環(huán)隊列的數(shù)據(jù)結(jié)構(gòu)作為上網(wǎng)點數(shù)據(jù)的基本結(jié)構(gòu),因此如算法頁在下一個執(zhí)行周期增加或刪除了上網(wǎng)點數(shù)據(jù),可以立刻通知ARM側(cè)上網(wǎng)點數(shù)據(jù)發(fā)生了改變。
1.3.2 源控制器ARM側(cè)設(shè)計
源控制器ARM側(cè)也使用循環(huán)隊列作為基本數(shù)據(jù)結(jié)構(gòu)存儲上網(wǎng)點數(shù)據(jù)。當DSP側(cè)通過共享內(nèi)存發(fā)送上網(wǎng)點數(shù)據(jù)時,需要把數(shù)據(jù)壓入循環(huán)隊列;而通過UDP廣播上網(wǎng)點時,需要把數(shù)據(jù)從循環(huán)隊列中取出。為了避免數(shù)據(jù)發(fā)送不完整,當通過共享內(nèi)存接收從DSP側(cè)發(fā)送的上網(wǎng)點數(shù)據(jù)時,設(shè)置全局變量g_CpuTransOutDataProcessing為“1”,處理完成后設(shè)置為“0”。通過UDP廣播線程周期性檢查變量標志,為“0”時檢查上網(wǎng)點循環(huán)隊列是否有數(shù)據(jù)需要發(fā)送。如果有,則組包通過A/B網(wǎng)廣播發(fā)送。
1.3.3 接收控制器ARM側(cè)設(shè)計
接收控制器ARM側(cè)由于在起始時刻不知道本控制器DSP需要哪些下網(wǎng)點數(shù)據(jù),所以考慮通過DSP把本控制器需要的下網(wǎng)點信息在算法頁面執(zhí)行完畢后,形成一份鏡像數(shù)據(jù),通過共享內(nèi)存?zhèn)鬏數(shù)紸RM。ARM監(jiān)聽到網(wǎng)絡(luò)廣播報文后,將網(wǎng)絡(luò)廣播數(shù)據(jù)與DSP傳輸?shù)溺R像數(shù)據(jù)進行逐個比較判斷。如果是本控制器需要的數(shù)據(jù),就保存下來,通過共享內(nèi)存?zhèn)鬏數(shù)紻SP;如果不是,就丟棄。
1.3.4 接收控制器DSP側(cè)設(shè)計
接收控制器DSP側(cè)接收ARM通過共享內(nèi)存?zhèn)鬏數(shù)南戮W(wǎng)點數(shù)據(jù)。如果有接收到數(shù)據(jù),就解析這些數(shù)據(jù),并把輸出存儲到相應(yīng)的內(nèi)存地址。
UDP協(xié)議是ISO參考模型中一種無連接的傳輸層協(xié)議,提供面向操作的簡單非可靠信息傳輸服務(wù)[5]。UDP協(xié)議不存在數(shù)據(jù)分包和組包的管理開銷,能夠?qū)崿F(xiàn)數(shù)據(jù)的高效傳輸,而且通信帶寬利用率比TCP協(xié)議高[7]。考慮到控制器使用嵌入式操作系統(tǒng)、系統(tǒng)資源有限等限制,所以使用UDP協(xié)議進行數(shù)據(jù)傳輸。但是UDP協(xié)議沒有連接過程,傳輸過程不可靠,需要增加額外手段來保證數(shù)據(jù)傳輸?shù)目煽啃院桶踩?。本文設(shè)計的數(shù)據(jù)共享方案采用了A/B雙網(wǎng)冗余方案,可以大大降低丟包概率;使用CRC32算法進行發(fā)送數(shù)據(jù)校驗,保證數(shù)據(jù)的完整性和可靠性。通信可靠性方法如表1所示。
表1 通信可靠性方法
表1中,“√”代表具有此功能。
3.1 試驗環(huán)境搭建
試驗環(huán)境如圖3所示。
圖3 試驗環(huán)境示意圖
具體配置由以下5個部分組成。
①真實控制器采用由南京南瑞繼保電氣有限公司研制的PCS-9150過程控制器,此控制器具備上述的數(shù)據(jù)共享功能。
②采用匹配的虛擬控制器軟件,此軟件運行在PC機上,具有和真實控制器相同的功能。
③組態(tài)軟件和HMI站位于同一臺PC機上,組態(tài)軟件能夠?qū)崟r更新控制器中運行的算法頁,HMI站可以監(jiān)視數(shù)據(jù)變化。
④所有設(shè)備都通過A/B雙網(wǎng)連接到2臺交換機上,實現(xiàn)數(shù)據(jù)的交互。
⑤組態(tài)中上網(wǎng)點和下網(wǎng)點配置如表2所示。
表2 網(wǎng)點配置表
3.2 測試結(jié)果分析
通過采用網(wǎng)絡(luò)抓包工具MMS發(fā)現(xiàn),無論配置多少個上網(wǎng)點,控制器在廣播上網(wǎng)點時都是通過一幀報文上送,所以控制器配置的上網(wǎng)點數(shù)量不會對網(wǎng)絡(luò)負荷有太多影響。沒有配置上網(wǎng)點的控制器不會發(fā)送網(wǎng)絡(luò)廣播報文。主要測試結(jié)果如表3所示。
表3 主要測試結(jié)果
本文在分析現(xiàn)有控制器數(shù)據(jù)共享方案優(yōu)缺點的基礎(chǔ)上,提出了基于UDP網(wǎng)絡(luò)廣播報文形式的數(shù)據(jù)共享方案。利用自主研發(fā)的組態(tài)工具和控制器固件程序的優(yōu)勢,解決了目前其他品牌控制器組態(tài)復(fù)雜、可靠性低的缺點。
本文提出的控制器間共享方案中,控制器下網(wǎng)點數(shù)據(jù)沒有保存到存儲器中,控制器重啟會導致數(shù)據(jù)清零。如果組態(tài)邏輯中根據(jù)下網(wǎng)點開關(guān)量的狀態(tài)進行邏輯運算,可能會有跳變現(xiàn)象發(fā)生??刂破髦g數(shù)據(jù)傳輸沒有加密功能,容易被非法用戶竊取。以上不足可以在后續(xù)研發(fā)中加以完善。
[1] 郝久清,肖立.PLC控制系統(tǒng)的可靠性設(shè)計[J].自動化儀表,2005,26(11):21-24.
[2] 程金良.不同PLC之間的通信技術(shù)實例[J].寶鋼技術(shù),2005(S1):40-42.
[3] 曾蓉,馮繼勇,丁亮,等.國產(chǎn)DCS與PLC集成方案的比較及其在電廠的應(yīng)用[J].自動化儀表,2009,30(12):46-48.
[4] 王長棟,左先波,胥小萍.西門子S7系列PLC的MPI網(wǎng)絡(luò)與全局數(shù)據(jù)通信[J].機械工人(冷加工),2000(11):29-30.
[5] 趙艷領(lǐng).PLC之間非實時數(shù)據(jù)共享設(shè)計與實現(xiàn)[J].自動化儀表,2016,37(3):9-12.
[6] 王小峰.試論基于架構(gòu)的軟件設(shè)計[J].信息系統(tǒng)工程,2015(3):36.
[7] 趙飛,葉震.UDP協(xié)議與TCP協(xié)議的對比分析與可靠性改進[J].計算機技術(shù)與發(fā)展,2006,16(9):219-221.
DesignandImplementationaboutDataSharingamongControllers
ZANGFeng,CAIDan,XUWeifeng,WUBo,NIUHonghai
(Nari-RelaysElectricCo.,Ltd.,Nanjing211102,China)
AdatasharingschemeusingUDPprotocolisdesigned,whichisbasedontheproblemthatthedatasharingconfigurationiscomplexandthecommunicationisnotreliable.Thisschemerequiresthecooperationofconfigurationtoolandcontrollerfirmware.Theconfigurationtoolisresponsiblefordeployingtherelationaboutdatasharinglogic,andthefirmwareprogramisresponsibleforparsingconfigurationsoftwareconfigurationinformationtorealizedatasharing.ThesourcecontrollerisresponsiblefortransmittingtheshareddatatothenetworkbyUDPusingbroadcastmode,andthereceivingcontrollerisresponsibleforreceivingandanalyzingthedata.Theschemehastheadvantagesofsimpleconfiguration,andcanbemodifiedinrealtime.
Controller;Datasharing;Communication;Reliability;UDP;OPC;TCP/IP;Configurationtool
臧峰(1983—),男,碩士,工程師,主要從事電力系統(tǒng)自動化產(chǎn)品的研發(fā)工作。E-mail:zangf@nrec.com。
TH7;TP
ADOI: 10686/j.cnki.issn1000-0380.201701012
修改稿收到日期:2016-08-10