本發(fā)明應(yīng)用于工業(yè)過(guò)程控制領(lǐng)域,提供一種冗余控制系統(tǒng)的邏輯算法無(wú)擾更新方法,實(shí)現(xiàn)冗余控制系統(tǒng)無(wú)擾邏輯算法更新的功能。
背景技術(shù):
隨it技術(shù)的發(fā)展,芯片處理能力的增強(qiáng),極大的拓寬了自動(dòng)控制系統(tǒng)在工業(yè)方面的應(yīng)用場(chǎng)景。對(duì)于一些應(yīng)用場(chǎng)合,任何時(shí)刻都不允許設(shè)備或系統(tǒng)停止運(yùn)行,以防止其損壞或引起人身傷害;對(duì)其控制系統(tǒng)而言,日常維護(hù)或升級(jí)改造可能涉及修改控制邏輯,這就要求控制系統(tǒng)支持在線邏輯算法的無(wú)擾更新,即可對(duì)正在運(yùn)行的控制系統(tǒng)修改邏輯算法將其生效,而不對(duì)當(dāng)前運(yùn)行系統(tǒng)造成負(fù)面影響。另外一方面,單機(jī)的控制系統(tǒng)存在控制系統(tǒng)電源丟失,或則長(zhǎng)期運(yùn)行發(fā)生故障導(dǎo)致系統(tǒng)不可用的情況,這對(duì)于一些不允許停機(jī)的應(yīng)用場(chǎng)合是不可接受的,因此采用冗余控制系統(tǒng)以提高系統(tǒng)運(yùn)行的可靠性,最大限度保證系統(tǒng)可用。
互為冗余的控制器需確保功能一致,因而體現(xiàn)其具體功能的算法組態(tài)文件則必須時(shí)刻保持一致。但有些控制系統(tǒng)由于獨(dú)特的設(shè)計(jì)風(fēng)格或理念,導(dǎo)致其組態(tài)文件較大,加上組態(tài)文件通常要求在最短時(shí)間內(nèi)完成同步以降低期間發(fā)生故障主從切換帶來(lái)的異常風(fēng)險(xiǎn),因此這些控制系統(tǒng)放棄了自動(dòng)同步的方案,而采用手動(dòng)同步的方案,即邏輯組態(tài)修改時(shí)僅針對(duì)主控制器生效,如果需確保從控制器與其一致,則需手動(dòng)進(jìn)行同步操作。雖然手動(dòng)同步方案可以有效降低同步次數(shù),也降低了同步進(jìn)行時(shí)的風(fēng)險(xiǎn),但在系統(tǒng)異常發(fā)生主從切換時(shí)帶來(lái)的后果卻是災(zāi)難性的,特別是無(wú)法預(yù)知的一些異常。另外一方面,手動(dòng)觸發(fā)同步也增加了對(duì)使用者的要求,手動(dòng)同步的時(shí)機(jī)和同步的次數(shù)對(duì)于使用者而言都是依賴于經(jīng)驗(yàn)的決策考驗(yàn),該方式顯然不滿足工業(yè)自動(dòng)控制簡(jiǎn)單、易用的理念。
典型的冗余控制系統(tǒng)應(yīng)用如圖1所示,本方法應(yīng)用于圖中所示的冗余控制器內(nèi)的基礎(chǔ)軟件,在邏輯算法組態(tài)軟件的配合下實(shí)現(xiàn)功能。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)現(xiàn)了一種冗余控制系統(tǒng)的邏輯算法無(wú)擾更新方法,通過(guò)該方案使得冗余控 制器也支持算法的無(wú)擾更新,且無(wú)需額外干預(yù)。
本發(fā)明的具體實(shí)現(xiàn)方案通過(guò)四個(gè)步驟實(shí)現(xiàn):步驟一,在一個(gè)邏輯運(yùn)算周期內(nèi),主控制器和從控制器運(yùn)行基于相同組態(tài)文件的邏輯算法,通過(guò)通訊方式交互同步數(shù)據(jù),主控制器與從控制器的運(yùn)算同步;步驟二,主控制器判斷邏輯組態(tài)是否發(fā)生變化,如果發(fā)生變化,執(zhí)行下面的步驟三,如果沒(méi)有發(fā)生變化,返回至步驟一;步驟三,主控制器更新組態(tài)文件,解析、更新算法任務(wù),并將組態(tài)文件發(fā)給從控制器;步驟四,從控制器接收組態(tài)文件,校驗(yàn)文件有效性,對(duì)其解析并更新算法任務(wù),返回至步驟一。
進(jìn)一步地,邏輯組態(tài)文件更新時(shí),不論主控制器和從控制器,其實(shí)現(xiàn)任務(wù)優(yōu)先級(jí)不高于實(shí)時(shí)邏輯算法任務(wù);更新過(guò)程不退出同步狀態(tài)。
進(jìn)一步地,同步數(shù)據(jù)包括控制器的所有外部輸入數(shù)據(jù)及部分邏輯運(yùn)算數(shù)據(jù),外部數(shù)據(jù)包括人機(jī)交互指令和io數(shù)據(jù),部分邏輯運(yùn)算數(shù)據(jù)指算法運(yùn)算過(guò)程中的部分中間結(jié)果。
進(jìn)一步地,邏輯組態(tài)更新時(shí),僅對(duì)主控制器下載,從控制器更新由主控制器發(fā)起。
進(jìn)一步地,從控制器校驗(yàn)主控控制器同步數(shù)據(jù)的有效性,當(dāng)主控制器新邏輯算法已生效且從控制器未生效期間,忽略主控控制器間的算法運(yùn)算結(jié)果同步數(shù)據(jù),但忽略最大僅允許一個(gè)邏輯算法運(yùn)算周期。
進(jìn)一步地,邏輯算法的更新及主控控制器間的信息交換采用報(bào)文機(jī)制,通過(guò)校驗(yàn)對(duì)異常報(bào)文進(jìn)行診斷處理。
附圖說(shuō)明
圖1是典型的冗余控制系統(tǒng)應(yīng)用示意圖;
圖2是算法組態(tài)文件下載冗余主從控制器更新示意圖;
圖3是控制器組態(tài)文件更新任務(wù)鏈?zhǔn)疽鈭D;
圖4是從機(jī)接收主機(jī)周期同步數(shù)據(jù)校驗(yàn)示意圖;
圖5是主從同步信息報(bào)文結(jié)構(gòu)示意圖;
具體實(shí)施方式
本發(fā)明通過(guò)組織有效的雙機(jī)通信信息,合理利用高優(yōu)先級(jí)及普通優(yōu)先級(jí)任務(wù)鏈和校驗(yàn)機(jī)制實(shí)現(xiàn)一種冗余控制系統(tǒng)的邏輯算法無(wú)擾更新方法。為使上訴發(fā)明內(nèi)容便于理解,下面結(jié)合附圖實(shí)施例對(duì)本發(fā)明方案進(jìn)行描述。
主從之間的算法組態(tài)文件下載冗余主從控制器更新如圖2所示。當(dāng)通過(guò)組態(tài)工具軟件觸發(fā)文件下載到主控制器后,步驟201將該組態(tài)文件首先加載到內(nèi)存空間,在校驗(yàn)文件完整性后,一方面通過(guò)步驟202將當(dāng)前最新的組態(tài)文件添加到冗余發(fā)送隊(duì)列等待系統(tǒng)發(fā)送,另外一方面通過(guò)步驟203對(duì)該算法組態(tài)文件進(jìn)行解析、比對(duì)組態(tài)變化并拷貝相同算法模塊數(shù)據(jù)、更新任務(wù)鏈并置完成標(biāo)志。步驟201、202和203由主控制器完成,當(dāng)僅有主控制器或從控制器故障時(shí),步驟202不執(zhí)行。
步驟204、205和206由從控制器完成。首先步驟204中,從控制器接收主控制器發(fā)送的文件報(bào)文,并將其組織成新的組態(tài)文件,如果接收的組態(tài)文件校驗(yàn)后與主控制器不一致,則請(qǐng)求重新發(fā)送。當(dāng)組態(tài)文件接收完整后,步驟205開(kāi)始執(zhí)行,即從控制器與主控制器一樣開(kāi)始對(duì)新組態(tài)文件進(jìn)行解析、比對(duì)組態(tài)變化并拷貝相同算法模塊數(shù)據(jù)、更新任務(wù)鏈并置完成標(biāo)志。另外,步驟206在主要系統(tǒng)任務(wù)的空閑時(shí)間段將保存在內(nèi)存中的組態(tài)文件回寫到電子盤保存,避免從控制器異常時(shí)已同步的操作信息丟失,同時(shí)由于其優(yōu)先級(jí)較低,不影響系統(tǒng)主要功能的運(yùn)行。
控制器組態(tài)文件更新對(duì)算法的無(wú)擾是通過(guò)任務(wù)優(yōu)先級(jí)及任務(wù)節(jié)點(diǎn)先后順序來(lái)保證的,詳細(xì)說(shuō)明如圖3所示。步驟301為快速任務(wù)鏈的起始邊界,步驟305為正常運(yùn)算任務(wù)鏈的起始邊界,對(duì)于快速任務(wù)其享有比正常運(yùn)算任務(wù)更高的優(yōu)先級(jí),即優(yōu)先執(zhí)行快速任務(wù)鏈中的各個(gè)任務(wù),當(dāng)所有快速任務(wù)執(zhí)行完了以后才可以執(zhí)行正常運(yùn)算任務(wù),而且在正常運(yùn)算任務(wù)執(zhí)行的過(guò)程中,如果有快速任務(wù)滿足條件,則暫停正常運(yùn)算任務(wù)轉(zhuǎn)而優(yōu)先執(zhí)行快速任務(wù),直至快速任務(wù)全部執(zhí)行完成。優(yōu)先執(zhí)行的快速任務(wù)有302主從雙機(jī)心跳處理,該步驟由從機(jī)主動(dòng)發(fā)送自己的信息,主機(jī)收到后進(jìn)行判斷再回復(fù)給從機(jī)。當(dāng)主機(jī)判斷自己的故障等級(jí)高于從機(jī),或則從機(jī)發(fā)出心跳后主機(jī)多次未回復(fù),則從機(jī)自動(dòng)切為主機(jī),如果主機(jī)可以執(zhí)行命令則主機(jī)強(qiáng)制切為從機(jī)。303和304步驟分別為冗余數(shù)據(jù)的發(fā)送和冗余數(shù)據(jù)的接收任務(wù)。該發(fā)送和接收對(duì)于主機(jī)和從機(jī)各有不同,其中步驟303冗余發(fā)送對(duì)于主機(jī)包括心跳報(bào)文回復(fù)、組態(tài)文件更新發(fā)送、包括算法數(shù)據(jù)、io數(shù)據(jù)、人機(jī)界面下發(fā)的指令等數(shù)據(jù)的周期同步發(fā)送等;而步驟304對(duì)于主機(jī)主要是心跳發(fā)送以及 接收數(shù)據(jù)的確認(rèn)。對(duì)于接收,則上訴內(nèi)容主機(jī)和從機(jī)角色互換。
對(duì)于算法運(yùn)算執(zhí)行,首先通過(guò)步驟306對(duì)采集的io數(shù)據(jù)進(jìn)行斷面處理,避免運(yùn)算過(guò)程中由于io數(shù)據(jù)的變化引起的邏輯運(yùn)算不可預(yù)測(cè)結(jié)果的問(wèn)題;緊接著通過(guò)步驟307進(jìn)行主從周期同步數(shù)據(jù)處理,對(duì)于主機(jī)主要是數(shù)據(jù)發(fā)送,對(duì)于從機(jī)則為數(shù)據(jù)接收和解析生效;步驟308進(jìn)行組態(tài)文件的更新,該更新包括算法組態(tài)文件進(jìn)行解析、比對(duì)組態(tài)變化并拷貝相同算法模塊數(shù)據(jù)、更新任務(wù)鏈并置完成標(biāo)志,本步驟實(shí)際也屬于運(yùn)算前所需數(shù)據(jù)的處理,將組態(tài)文件更新放在步驟309算法運(yùn)算之前而不放在步驟306或307之前,實(shí)際是為了避免步驟308更新過(guò)程中io數(shù)據(jù)的變化以及同步數(shù)據(jù)變化帶來(lái)的影響,即確保算法更新前各類輸入數(shù)據(jù)處理完畢,數(shù)據(jù)狀態(tài)可控。當(dāng)邏輯運(yùn)算完成,則通過(guò)步驟310對(duì)運(yùn)算結(jié)果進(jìn)行輸出。
對(duì)圖2中步驟202、204和205,主機(jī)發(fā)送需更新的組態(tài)文件給從機(jī),從機(jī)接收及更新處理均需時(shí)間,同時(shí)對(duì)于周期同步數(shù)據(jù)而言,主控制器并不會(huì)中止數(shù)據(jù)的發(fā)送,因此當(dāng)主機(jī)已經(jīng)更新了最新的組態(tài)文件后而從機(jī)并沒(méi)有更新時(shí),存在主機(jī)與從機(jī)間周期同步數(shù)據(jù)與實(shí)際組態(tài)不一致情況。此時(shí)如果從機(jī)繼續(xù)按原方式對(duì)數(shù)據(jù)進(jìn)行解析生效,勢(shì)必影響從機(jī)算法數(shù)據(jù)的正確性,因此必須對(duì)同步狀態(tài)建立以后組態(tài)文件不一致時(shí)的同步數(shù)據(jù)進(jìn)行處理,具體方案如圖4所示。通過(guò)步驟401主機(jī)發(fā)出周期同步數(shù)據(jù),步驟402中從機(jī)接收主機(jī)發(fā)出的周期同步數(shù)據(jù)并開(kāi)始解析,并將其中包含組態(tài)文件校驗(yàn)碼的信息提取出來(lái),當(dāng)從機(jī)通過(guò)步驟403對(duì)組態(tài)文件校驗(yàn)碼進(jìn)行核對(duì),如果校驗(yàn)碼主機(jī)和從機(jī)的比較后一致,則認(rèn)為周期同步數(shù)據(jù)是正常有效數(shù)據(jù),在步驟404中對(duì)該數(shù)據(jù)進(jìn)行解析和更新,如果步驟403檢測(cè)到校驗(yàn)碼不一致,則在步驟405中主動(dòng)丟棄已接受到的周期同步數(shù)據(jù),從機(jī)沿著上一周期的結(jié)果繼續(xù)運(yùn)行,等待下一次有效數(shù)據(jù)。
主控制器和從控制器之間的信息交互全部采用報(bào)文方式進(jìn)行交互,這些報(bào)文包括心跳發(fā)送及確認(rèn)、組態(tài)文件請(qǐng)求及發(fā)送、周期同步數(shù)據(jù)、人機(jī)界面指令、soe數(shù)據(jù)等等多個(gè)類型,為對(duì)報(bào)文進(jìn)行有效管理,設(shè)計(jì)了圖5所示的報(bào)文結(jié)構(gòu)。該報(bào)文結(jié)構(gòu)主要由報(bào)文頭和具體的報(bào)文內(nèi)容構(gòu)成。其中報(bào)文頭中編號(hào)501為報(bào)文類別,通過(guò)不論主控制器還是從控制器通過(guò)該類別識(shí)別不同類型的報(bào)文,從而調(diào)用想要的處理程序?qū)?bào)文進(jìn)行解析處理;編號(hào)502為報(bào)文編號(hào),主機(jī)在發(fā)送每個(gè)報(bào)文的時(shí)候自動(dòng)加1,從機(jī)收到后首選與自己上次收到的序號(hào)比較,如果序號(hào)偏差超過(guò)1,則存在報(bào)文丟失的情況,需記錄異常, 比較及處理結(jié)束后,將本次收到的編號(hào)保存下來(lái)以便下次繼續(xù)檢測(cè);編號(hào)503為報(bào)文長(zhǎng)度,數(shù)據(jù)解析根據(jù)此信息獲取報(bào)文內(nèi)容中有意義的數(shù)據(jù),另外一方面也可以檢驗(yàn)報(bào)文是否完整;序號(hào)504為校驗(yàn)碼,為保證較低的重碼概率,采用crc32對(duì)所有發(fā)送的數(shù)據(jù)進(jìn)行校驗(yàn),由發(fā)送方對(duì)數(shù)據(jù)校驗(yàn)后填入報(bào)文頭內(nèi),接收方在收到后提取校驗(yàn)碼,并根據(jù)報(bào)文長(zhǎng)度信息對(duì)接收到的數(shù)據(jù)同樣采用crc32進(jìn)行校驗(yàn),而后進(jìn)行比對(duì),如果校驗(yàn)碼相同,則報(bào)文有效,不一致情況下,丟棄該幀報(bào)文,同時(shí)對(duì)異常進(jìn)行記錄。編號(hào)505為具體的報(bào)文內(nèi)容,該內(nèi)容數(shù)據(jù)格式與報(bào)文類別一一對(duì)應(yīng),主控制器和從控制器采用同一規(guī)范,避免歧義。