文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.179001
中文引用格式: 趙德政,黃兵,豐大軍,等. 基于MAC的PLC雙機(jī)冗余方法及系統(tǒng)[J].電子技術(shù)應(yīng)用,2017,43(8):81-84.
英文引用格式: Zhao Dezheng,Huang Bing,F(xiàn)eng Dajun,et al. Dual redundant method and system for PLC based on MAC[J].Application of Electronic Technique,2017,43(8):81-84.
0 引言
可編程邏輯控制器(Programmable Logic Controller,PLC)[1-2]在工業(yè)控制自動(dòng)化領(lǐng)域有著及其重要的作用,特別是在控制工藝流程比較復(fù)雜、被控參數(shù)較多的過程控制系統(tǒng)中,以通用PLC為核心搭建控制系統(tǒng)比專用控制器方式具有更強(qiáng)的靈活性、適用性和擴(kuò)展性[3-4]。核心控制單元PLC的可靠性直接關(guān)系到整個(gè)控制系統(tǒng)的安全性和穩(wěn)定性,因此為了提高控制系統(tǒng)的健壯性,首先要提高PLC的健壯性,而在提升PLC本身健壯性的同時(shí),引入PLC雙機(jī)冗余機(jī)制可以極大地改善控制系統(tǒng)的整體可用性[5-6]。相比于單純提升PLC本身健壯性的方式,PLC雙機(jī)冗余方式可以達(dá)到主PLC異常故障、備PLC接管控制邏輯、控制系統(tǒng)無擾運(yùn)行的目標(biāo),從而使整個(gè)控制系統(tǒng)最大限度地消除異常故障的影響,大幅提升控制系統(tǒng)的可用性。
目前在控制系統(tǒng)中PLC雙機(jī)冗余技術(shù)主要有兩種,即基于PLC站間通信的軟冗余技術(shù)[7-8]和基于專用冗余通信模塊的硬冗余技術(shù)[9-10]。前者需要用戶編寫帶有冗余功能的控制邏輯,并全程參與冗余的故障診斷判決和狀態(tài)切換,對(duì)用戶的要求較高,且由于沒有專用的冗余通信通道,冗余的數(shù)據(jù)同步和狀態(tài)切換帶有很大的滯后性。基于專用冗余通信模塊的硬冗余技術(shù)具有專用的冗余通信通道,可以有效地提升數(shù)據(jù)同步和狀態(tài)切換的實(shí)時(shí)性,但是其成本較高,且不易于維護(hù),只能應(yīng)用到一些投入成本較高、對(duì)可靠性極為敏感的控制系統(tǒng)之中,這極大地限制了這種冗余技術(shù)的應(yīng)用和普及。
為了克服PLC軟冗余方式中用戶工程與冗余技術(shù)的緊耦合和冗余處理遲滯問題,以及硬冗余技術(shù)中構(gòu)建成本高、維護(hù)困難的問題,需要開發(fā)一種擺脫專用冗余通信模塊限制的PLC雙機(jī)冗余技術(shù),無需用戶參與冗余數(shù)據(jù)同步、故障診斷判決和狀態(tài)切換,靈活地實(shí)現(xiàn)高可靠、高健壯性的PLC雙機(jī)冗余功能,降低PLC雙機(jī)冗余控制系統(tǒng)的構(gòu)建成本。
本文利用MAC(Medium/Media Access Control,介質(zhì)訪問控制)控制器作為冗余系統(tǒng)的數(shù)據(jù)同步收發(fā)器,構(gòu)成PLC雙機(jī)冗余系統(tǒng),并設(shè)計(jì)了與用戶控制邏輯無關(guān)的故障診斷判決和主備機(jī)切換機(jī)制,以及無需用戶參與的冗余狀態(tài)機(jī)和狀態(tài)轉(zhuǎn)移機(jī)制,可有效提升PLC雙機(jī)冗余系統(tǒng)的易用性,且能極大地提升冗余系統(tǒng)的運(yùn)行性能。下面將從總體方案設(shè)計(jì)、硬件平臺(tái)設(shè)計(jì)和軟件系統(tǒng)設(shè)計(jì)三個(gè)方面對(duì)所提出的PLC雙機(jī)冗余方法及系統(tǒng)進(jìn)行介紹。
1 總體方案
PLC雙機(jī)冗余的雙方為冗余主機(jī)和冗余備機(jī),冗余雙方內(nèi)部均包含MAC控制器芯片作為冗余通信的收發(fā)器,PLC雙機(jī)冗余的雙方搭載獨(dú)立于用戶控制邏輯的故障診斷判決和主備機(jī)切換機(jī)制,圖1為PLC雙機(jī)冗余系統(tǒng)的組成框圖。
整個(gè)PLC雙機(jī)冗余系統(tǒng)包含兩個(gè)完全一樣的PLC控制器,以及多個(gè)與現(xiàn)場(chǎng)被控對(duì)象連接的從站模塊,由此構(gòu)成了PLC雙機(jī)冗余系統(tǒng)和現(xiàn)場(chǎng)總線網(wǎng)絡(luò)。其中冗余控制器由主控單元、基于MAC的冗余通信單元以及現(xiàn)場(chǎng)總線主站組成,主控單元與現(xiàn)場(chǎng)總線主站之間通過雙口RAM連接,而作為冗余通信單元核心的MAC控制器直接掛到主控單元CPU的總線上。冗余控制器都帶有兩個(gè)獨(dú)立的MAC,分別為MAC0和MAC1,其MAC地址不一樣,所有控制器的MAC0都共用一個(gè)MAC地址,所有控制器的MAC1也都共用一個(gè)MAC地址。組成PLC雙機(jī)冗余系統(tǒng)的兩個(gè)控制器在物理上通過交叉方式構(gòu)成冗余連接,即冗余控制器A的MAC0接冗余控制器B的MAC1,冗余控制器A的MAC1接冗余控制器B的MAC0,如圖1所示。冗余連接通信的方向永遠(yuǎn)是從MAC0到MAC1,比如冗余控制器A向冗余控制器B發(fā)送請(qǐng)求要經(jīng)過冗余控制器A的MAC0到冗余控制器B的MAC1,冗余控制器B在MAC1上接到來自于冗余控制器A的請(qǐng)求后,會(huì)通過自身的MAC0向冗余控制器A的MAC1發(fā)送響應(yīng)。從站模塊通常包含I/O模塊以及其他用于特定功能控制的功能模塊,主要用于連接傳感器、電動(dòng)機(jī)、電磁閥、繼電器等現(xiàn)場(chǎng)被控對(duì)象。
2 系統(tǒng)硬件平臺(tái)設(shè)計(jì)
PLC雙機(jī)冗余系統(tǒng)中冗余控制器的硬件平臺(tái)如圖2所示。冗余控制器包括處理器、MAC控制器、PHY(Physical Layer)芯片、現(xiàn)場(chǎng)總線主站、存儲(chǔ)器外設(shè)、時(shí)鐘電路、復(fù)位電路和電源變換模塊等部件。
所選用的MAC控制器主要用于冗余控制器之間進(jìn)行冗余同步通信的數(shù)據(jù)收發(fā)器,PHY主要用于通信電平信號(hào)轉(zhuǎn)換。現(xiàn)場(chǎng)總線主站用于現(xiàn)場(chǎng)總線協(xié)議棧支持、控制器與從站之間的通信連接以及實(shí)際的I/O變量刷新操作。
該冗余控制器以處理器為核心,在處理器上運(yùn)行業(yè)務(wù)處理程序、用戶控制邏輯、冗余同步通信以及冗余故障診斷判決和狀態(tài)切換程序。該處理器通過現(xiàn)場(chǎng)總線主站采集現(xiàn)場(chǎng)設(shè)備的輸入信號(hào),然后執(zhí)行用戶控制邏輯,最后將控制邏輯執(zhí)行結(jié)果的控制輸出信息通過現(xiàn)場(chǎng)總線主站發(fā)送到被控設(shè)備,同時(shí)處于冗余主機(jī)工作模式的處理器還會(huì)實(shí)時(shí)地將用戶控制邏輯運(yùn)行結(jié)果的過程數(shù)據(jù)通過由MAC控制器控制的冗余通信連接同步到冗余備機(jī),而工作于冗余備機(jī)工作模式的處理器會(huì)將冗余主機(jī)同步過來的過程數(shù)據(jù)寫入到相應(yīng)的數(shù)據(jù)區(qū),同時(shí)時(shí)刻監(jiān)視著冗余主機(jī)的運(yùn)行狀態(tài),隨時(shí)準(zhǔn)備升為冗余主機(jī)并接管整個(gè)控制系統(tǒng)。
3 軟件設(shè)計(jì)
3.1 軟件總體方案
冗余PLC控制器可以工作于冗余主機(jī)和冗余備機(jī)兩種工作模式,兩種模式執(zhí)行的功能和所承擔(dān)的任務(wù)不同,其系統(tǒng)流程如圖3所示。冗余主機(jī)工作模式下,控制器的執(zhí)行功能主要包含初始化、通信處理、狀態(tài)切換、I/O輸出、I/O輸入、運(yùn)行用戶控制邏輯、同步過程數(shù)據(jù)幾個(gè)步驟。冗余備機(jī)工作模式下,控制器的執(zhí)行功能主要包含初始化、通信處理、狀態(tài)切換、獲取同步數(shù)據(jù)。相比于冗余主機(jī),冗余備機(jī)不運(yùn)行用戶控制邏輯,也不刷新I/O數(shù)據(jù),其所有用戶控制邏輯的運(yùn)行結(jié)果數(shù)據(jù)和I/O數(shù)據(jù)都直接來自于冗余主機(jī)的數(shù)據(jù)同步操作。冗余備機(jī)通過冗余通信連接時(shí)刻監(jiān)視著冗余主機(jī)的運(yùn)行狀態(tài),當(dāng)檢測(cè)到冗余主機(jī)發(fā)生異常故障時(shí),升為冗余主機(jī),同時(shí)接管整個(gè)控制系統(tǒng),并無擾地繼續(xù)執(zhí)行用戶控制邏輯。
3.2 冗余通信
在PLC雙機(jī)冗余控制系統(tǒng)中,冗余主機(jī)和冗余備機(jī)具有不同的工作方式,其冗余通信方式也不盡相同,冗余通信流程如圖4所示。
冗余主機(jī)采用的冗余通信流程如下:
(1)控制器對(duì)冗余通信進(jìn)行初始化,并與PLC雙機(jī)冗余系統(tǒng)的另一個(gè)控制器建立冗余連接,轉(zhuǎn)(2);
(2)控制器向與其建立冗余連接的控制器同步冗余配置,冗余配置主要為用于區(qū)分兩個(gè)控制器的CPU選項(xiàng),通過控制器背板的撥碼開關(guān)設(shè)置,有CPU0和CPU1兩種模式,轉(zhuǎn)(3);
(3)判斷PLC雙機(jī)冗余系統(tǒng)的兩個(gè)控制器的冗余配置是否沖突,即是否同為CPU0或同為CPU1,如果不沖突轉(zhuǎn)(4),否則轉(zhuǎn)(9);
(4)判斷控制器配置為主機(jī),默認(rèn)設(shè)為CPU0選項(xiàng)的控制器以冗余主機(jī)工作模式運(yùn)行,轉(zhuǎn)(5);
(5)刷新I/O數(shù)據(jù)并運(yùn)行用戶控制邏輯,轉(zhuǎn)(6);
(6)向冗余備機(jī)同步過程數(shù)據(jù),過程數(shù)據(jù)主要包含用戶控制邏輯的運(yùn)行結(jié)果數(shù)據(jù)和I/O變量數(shù)據(jù),轉(zhuǎn)(7);
(7)向冗余備機(jī)發(fā)送冗余心跳,轉(zhuǎn)(8);
(8)判斷是否接收到用戶結(jié)束控制器運(yùn)行操作,如果接收到結(jié)束運(yùn)行操作,轉(zhuǎn)(9)結(jié)束運(yùn)行控制器,否則轉(zhuǎn)(5)繼續(xù)運(yùn)行控制器;
(9)結(jié)束運(yùn)行控制器。
冗余備機(jī)采用的冗余通信流程如下:
(1)控制器對(duì)冗余通信進(jìn)行初始化,并與PLC雙機(jī)冗余系統(tǒng)的另一個(gè)控制器建立冗余連接,轉(zhuǎn)(2);
(2)控制器向與其建立冗余連接的控制器同步冗余配置,轉(zhuǎn)(3);
(3)判斷PLC雙機(jī)冗余系統(tǒng)的兩個(gè)控制器的冗余配置是否沖突,如果不沖突轉(zhuǎn)(4),否則轉(zhuǎn)(9);
(4)判斷控制器配置為主機(jī),默認(rèn)設(shè)為CPU1選項(xiàng)的控制器以冗余備機(jī)工作模式運(yùn)行,轉(zhuǎn)(5);
(5)通過冗余通信連接接收冗余主機(jī)同步過來的過程數(shù)據(jù),并寫入相應(yīng)的數(shù)據(jù)區(qū),轉(zhuǎn)(6);
(6)通過冗余通信連接獲取冗余主機(jī)發(fā)送過來的冗余心跳,轉(zhuǎn)(7);
(7)診斷主機(jī)是否發(fā)生異常故障,如果診斷出主機(jī)發(fā)生異常故障,控制器升為主機(jī),并以最近接收到的有效過程數(shù)據(jù)為起點(diǎn),繼續(xù)運(yùn)行用戶控制邏輯和執(zhí)行刷新I/O操作,否則轉(zhuǎn)(8);
(8)判斷是否接收到用戶結(jié)束控制器運(yùn)行操作,如果接收到結(jié)束運(yùn)行操作,轉(zhuǎn)(9)結(jié)束運(yùn)行控制器,否則轉(zhuǎn)(5)繼續(xù)運(yùn)行控制器;
(9)結(jié)束運(yùn)行控制器。
3.3 冗余狀態(tài)機(jī)
為了方便冗余方法及冗余系統(tǒng)的軟件實(shí)現(xiàn),根據(jù)所提出的冗余方法,其系統(tǒng)運(yùn)行狀態(tài)機(jī)如圖5所示。
系統(tǒng)的冗余狀態(tài)機(jī)主要包含9個(gè)狀態(tài),狀態(tài)定義及條件跳轉(zhuǎn)關(guān)系如表1所示。
4 功能驗(yàn)證和測(cè)試
為了驗(yàn)證本文設(shè)計(jì)的PLC雙機(jī)冗余系統(tǒng),總共設(shè)計(jì)了538個(gè)測(cè)試用例來對(duì)整個(gè)冗余系統(tǒng)的功能進(jìn)行測(cè)試。測(cè)試用例可以分為以下幾類:單機(jī)運(yùn)行模式測(cè)試(冗余狀態(tài)機(jī))、雙機(jī)切換過程測(cè)試(冗余狀態(tài)機(jī))、冗余同步數(shù)據(jù)測(cè)試(冗余通信)、雙機(jī)搶主測(cè)試等。測(cè)試結(jié)果表明,所設(shè)計(jì)的PLC雙機(jī)冗余方法及系統(tǒng)能夠在系統(tǒng)發(fā)生異常故障時(shí)保證整個(gè)控制系統(tǒng)的正常運(yùn)行,滿足提高PLC控制系統(tǒng)可用性的需求。
5 結(jié)論
本文設(shè)計(jì)了一種基于MAC的PLC雙機(jī)冗余系統(tǒng)。首先對(duì)雙機(jī)冗余系統(tǒng)的整體結(jié)構(gòu)進(jìn)行了闡述,然后分別對(duì)系統(tǒng)的硬件平臺(tái)設(shè)計(jì)和軟件系統(tǒng)設(shè)計(jì)進(jìn)行了詳細(xì)解釋,最后通過多種測(cè)試用例對(duì)整個(gè)PLC雙機(jī)冗余系統(tǒng)進(jìn)行了功能驗(yàn)證和測(cè)試。測(cè)試結(jié)果表明,本文設(shè)計(jì)的雙機(jī)冗余系統(tǒng)避免了PLC硬冗余技術(shù)對(duì)于控制器具有獨(dú)立專用冗余通信模塊的苛刻要求,降低了冗余系統(tǒng)的構(gòu)建成本,也克服了PLC軟冗余技術(shù)中冗余異常判決機(jī)制依賴于用戶的弊端,提高了系統(tǒng)的易用性,降低了用戶學(xué)習(xí)、使用成本。本文所提出的PLC雙機(jī)冗余方法及系統(tǒng)直接使用MAC作為冗余通信的數(shù)據(jù)收發(fā)器,省略了上層以太網(wǎng)協(xié)議棧,提高了冗余通信的實(shí)時(shí)性,增強(qiáng)了冗余系統(tǒng)的靈活性,也保證了冗余系統(tǒng)的便利性。后續(xù)可繼續(xù)對(duì)冗余狀態(tài)機(jī)的轉(zhuǎn)換算法進(jìn)行優(yōu)化,以減小冗余主備切換時(shí)間,從而提高整個(gè)系統(tǒng)的性能。
參考文獻(xiàn)
[1] 羅維平.基于PLC的太陽能電池板自動(dòng)跟蹤系統(tǒng)的研究[J].電子技術(shù)應(yīng)用,2009,35(9):138-140.
[2] 葉曉暉.PLC在電氣自動(dòng)化中的應(yīng)用現(xiàn)狀及發(fā)展前景概述[J].工業(yè)控制計(jì)算機(jī),2010,23(1):144-145.
[3] 劉爽,朱凱,董宸.基于PLC一維極軸自動(dòng)控制的對(duì)日跟蹤系統(tǒng)[J].電子技術(shù)應(yīng)用,2009,35(9):1-2.
[4] 王洪猛,謝建君,曾云,等.基于PLC的過程控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].自動(dòng)化技術(shù)與應(yīng)用,2004,23(7):25-27.
[5] 孟君.基于不同冗余結(jié)構(gòu)的PLC系統(tǒng)可靠性與可用性研究[J].電子技術(shù)應(yīng)用,2016,42(9):80-83.
[6] 陳子平.淺談控制系統(tǒng)冗余控制的實(shí)現(xiàn)[J].自動(dòng)化儀表,2005,26(9):4-6.
[7] 呂京梅.PLC軟冗余系統(tǒng)的研究與應(yīng)用[D].西安:西安電子科技大學(xué),2008.
[8] 路建強(qiáng),王華強(qiáng),王聯(lián)慶,等.S7-300軟冗余在壓縮機(jī)控制中的應(yīng)用[J].工業(yè)儀表與自動(dòng)化裝置,2012(1):80-83.
[9] 陳加杰.中型PLC冗余架構(gòu)研究與同步技術(shù)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2008.
[10] 韋杰.西門子400H PLC在天然氣輸配系統(tǒng)中的運(yùn)用[J].工業(yè)控制計(jì)算機(jī),2014,27(7):157-158.
作者信息:
趙德政,黃 兵,豐大軍,張曉莉,徐一鳳
(華北計(jì)算機(jī)系統(tǒng)工程研究所,北京100083)