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