鄭俊朝,劉 松,金成日
(北京廣利核系統(tǒng)工程有限公司,北京 100094)
核電儀控系統(tǒng)內(nèi)數(shù)據(jù)下裝與校驗(yàn)方法的研究
鄭俊朝,劉 松,金成日
(北京廣利核系統(tǒng)工程有限公司,北京100094)
在核電儀控系統(tǒng)的維護(hù)過程中,需要對(duì)控制器進(jìn)行數(shù)據(jù)下裝來完成工程組態(tài)的校驗(yàn)與升級(jí)。為了保證數(shù)據(jù)下裝的準(zhǔn)確性與完整性,對(duì)核電儀控系統(tǒng)內(nèi)局域網(wǎng)(LAN)通信節(jié)點(diǎn)的組成特征進(jìn)行了研究。對(duì)現(xiàn)有的局域網(wǎng)通信方法進(jìn)行了分析,提出了一種基于IEEE802.3協(xié)議的數(shù)據(jù)下裝與校驗(yàn)方法。首先,通過設(shè)計(jì)功能指令以及預(yù)設(shè)錯(cuò)誤通知,保證系統(tǒng)能夠及時(shí)獲取局域網(wǎng)通信過程中出現(xiàn)的錯(cuò)誤;然后,基于MAC幀格式,設(shè)計(jì)了一種新的數(shù)據(jù)楨格式,通過封裝功能碼以及錯(cuò)誤通知指令來保證通信節(jié)點(diǎn)之間的交互性;最后,采用數(shù)據(jù)包CRC校驗(yàn)、文件CRC校驗(yàn)以及文件回讀比較等一系列方法,保證文件在局域網(wǎng)內(nèi)傳輸?shù)恼_性。經(jīng)過測(cè)試,該方法具有可靠性高、傳輸速度快以及配置要求低等優(yōu)點(diǎn),可以廣泛應(yīng)用于船舶、火電等嵌入式模塊較多的局域網(wǎng)系統(tǒng)。
核電儀控系統(tǒng); 局域網(wǎng)通信; 數(shù)據(jù)幀; 數(shù)據(jù)下裝; 通信協(xié)議; 嵌入式模塊
在核電儀控系統(tǒng)的維護(hù)過程中,經(jīng)常需要將核電控制工程組態(tài)內(nèi)的配置文件、算法文件、參數(shù)文件以及冗余數(shù)據(jù)等下裝到控制器內(nèi),以完成工程組態(tài)的校驗(yàn)與升級(jí)。在下裝的過程中,可能由于網(wǎng)絡(luò)的不確定性以及其他原因?qū)е聰?shù)據(jù)傳輸不完整。因此,需要一種高可靠性的局域網(wǎng)數(shù)據(jù)傳輸方法。
基于目前局域網(wǎng)通信方法的研究成果,以及核電儀控系統(tǒng)局域網(wǎng)節(jié)點(diǎn)主要由部分主機(jī)以及大量嵌入式板卡模塊組成的特征,本文采用IEEE802.3協(xié)議作為局域網(wǎng)通信的基礎(chǔ),提出了一種基于IEEE802.3協(xié)議的局域網(wǎng)通信方法。該方法既充分利用了IEEE802.3協(xié)議的優(yōu)勢(shì),又在一定程度上避免了其本身帶來的缺陷,可以滿足核電儀控通信系統(tǒng)對(duì)高可靠性的要求[1-2]。
和睦系統(tǒng)(FirmSys)是我國(guó)首個(gè)數(shù)字化核安全級(jí)儀控系統(tǒng)平臺(tái),其通信系統(tǒng)基于千兆工業(yè)以太網(wǎng)設(shè)計(jì)研發(fā),網(wǎng)絡(luò)節(jié)點(diǎn)主要由大量嵌入式板卡模塊與計(jì)算機(jī)主機(jī)構(gòu)成。
為了保證主機(jī)與板卡模塊之間文件數(shù)據(jù)傳輸?shù)耐暾砸约皽?zhǔn)確性,數(shù)據(jù)傳輸系統(tǒng)要求具有通信狀態(tài)確定、可靠性高、易用性強(qiáng)以及通信速率快等特點(diǎn)。
IEEE802.3是一種以太網(wǎng)協(xié)議,主要用來描述物理層和數(shù)據(jù)鏈路層的MAC子層的實(shí)現(xiàn)方法[3-4]。其中,以太網(wǎng)系統(tǒng)由3個(gè)基本單元組成:物理介質(zhì),用于傳輸計(jì)算機(jī)之間的以太網(wǎng)信號(hào)[5];媒體訪問控制規(guī)則,嵌入在每個(gè)以太網(wǎng)接口處,使得計(jì)算機(jī)可以共享以太網(wǎng)信道;以太幀,由一組標(biāo)準(zhǔn)比特位構(gòu)成,用于傳輸數(shù)據(jù)[6-7]。
以太網(wǎng)沒有中心控制器,每個(gè)節(jié)點(diǎn)都是獨(dú)立運(yùn)行的,所有連接到以太網(wǎng)的工作站都接入共享信令系統(tǒng),即前文提到的物理介質(zhì)。當(dāng)需要發(fā)送數(shù)據(jù)時(shí),工作站首先監(jiān)聽信道,如果信道空閑,則能夠以以太幀或數(shù)據(jù)幀格式傳輸數(shù)據(jù)。每幀傳輸完畢之后,各工作站必須公平爭(zhēng)取下一幀的傳輸機(jī)會(huì)。共享信道的訪問,取決于嵌入到每個(gè)工作站的以太網(wǎng)接口的媒體訪問控制機(jī)制。該機(jī)制建立在載波監(jiān)聽多路訪問/沖突檢測(cè)(CSMA/CD)的基礎(chǔ)上[8-10]。
2.1功能指令設(shè)計(jì)
首先,將需要發(fā)送數(shù)據(jù)的節(jié)點(diǎn)定義為上位機(jī),接收數(shù)據(jù)的節(jié)點(diǎn)定義為下位機(jī)。在此,共設(shè)計(jì)了15個(gè)功能指令,用于上、下位機(jī)之間的指令交互。其中,上位機(jī)負(fù)責(zé)發(fā)送6個(gè)指令,下位機(jī)負(fù)責(zé)發(fā)送9個(gè)指令。功能指令集如表1所示。
表1 功能指令集
2.2異常通知設(shè)計(jì)
在通信過程中,如果期間出現(xiàn)通信異常而系統(tǒng)沒有具體指出,則會(huì)影響系統(tǒng)測(cè)試與排查。因此,需要提前預(yù)估所有可能出現(xiàn)的通信異常。本文共設(shè)計(jì)了6個(gè)異常通知。異常通知設(shè)計(jì)如表2所示。
表2 異常通知設(shè)計(jì)
連接失敗可能包括的情況有:上、下位機(jī)無物理連接,超過規(guī)定時(shí)間(3s)未收到連接回復(fù)指令等。數(shù)據(jù)幀CRC校驗(yàn)失敗是指接收端獲取的數(shù)據(jù)楨內(nèi)的CRC值與重新計(jì)算得到的CRC值不一致。文件CRC校驗(yàn)失敗是指上、下位機(jī)對(duì)整個(gè)下裝文件計(jì)算得到的CRC值不一致。通信超時(shí)是指在正常通信過程中,接收端接收到數(shù)據(jù)幀的時(shí)間間隔超過規(guī)定時(shí)間(3s)。回讀文件與下裝文件不一致是指回讀完成后將上位機(jī)內(nèi)的下裝文件與下位機(jī)回讀上來的下裝文件進(jìn)行字節(jié)比對(duì)(此處比對(duì)作為CRC校驗(yàn)的一個(gè)補(bǔ)充驗(yàn)證),若存在不一致即視為文件不一致。錯(cuò)誤指令是指接收端收到了和發(fā)出指令不匹配的指令。
2.3數(shù)據(jù)幀格式設(shè)計(jì)
本文以IEEE802.3協(xié)議為基礎(chǔ),結(jié)合MAC幀,設(shè)計(jì)了一種數(shù)據(jù)幀格式,主要包括源MAC地址、目標(biāo)MAC地址、開始標(biāo)志、填充區(qū)、數(shù)據(jù)幀序列號(hào)、指令編碼、數(shù)據(jù)長(zhǎng)度、數(shù)據(jù)段、CRC校驗(yàn)碼以及結(jié)束標(biāo)志數(shù)據(jù)段。
本文設(shè)計(jì)的數(shù)據(jù)幀格式在MAC幀的基礎(chǔ)上增加了數(shù)據(jù)幀序列號(hào)、指令編碼和結(jié)束標(biāo)志等字段。增加數(shù)據(jù)幀序列號(hào)主要是因?yàn)橛袝r(shí)下裝文件過大而無法一次下裝,此時(shí)需要將其分為若干包進(jìn)行分批下裝。數(shù)據(jù)幀序列號(hào)區(qū)段則用來保存當(dāng)前數(shù)據(jù)幀的序列號(hào),方便檢查文件數(shù)據(jù)幀是否全部傳輸完成。指令編碼區(qū)段則是通知接收端當(dāng)前數(shù)據(jù)幀的功能。CRC校驗(yàn)碼是指使用CRC32查表法,對(duì)當(dāng)前數(shù)據(jù)幀內(nèi)從開始標(biāo)志到結(jié)束標(biāo)志之間的字段區(qū)域進(jìn)行計(jì)算后,所得到的數(shù)據(jù)幀CRC值。
數(shù)據(jù)幀格式如圖1所示。
圖1 數(shù)據(jù)幀格式
2.4通信流程
在進(jìn)行通信指令集、錯(cuò)誤集以及數(shù)據(jù)幀格式的設(shè)計(jì)之后,數(shù)據(jù)下裝與校驗(yàn)方法總流程為:首先在設(shè)備之間建立網(wǎng)絡(luò)連接;接著,上位機(jī)開始下裝文件數(shù)據(jù)[11-12];在下裝完成后,再將下裝到下位機(jī)的文件回讀到上位機(jī),并與之前的下裝文件進(jìn)行文件字節(jié)比對(duì),若比對(duì)結(jié)果為完全一致,則標(biāo)志文件傳輸正確[13-14]。
數(shù)據(jù)下裝與校驗(yàn)流程如圖2所示。
圖2 數(shù)據(jù)下裝與檢驗(yàn)流程圖
3.1文件下裝
上、下位機(jī)通過功能指令進(jìn)行交互,將文件數(shù)據(jù)傳輸給下位機(jī)。首先,獲取上位機(jī)網(wǎng)卡的MAC地址,而下位機(jī)的MAC地址則在生成下裝文件時(shí)已經(jīng)由工程組態(tài)確定。只需將要下裝的板卡進(jìn)行撥號(hào)即設(shè)置MAC地址。接著,由上位機(jī)向指定下位機(jī)發(fā)送連接指令。下位機(jī)接收到指令后,對(duì)指令進(jìn)行解析,獲取功能指令編碼并進(jìn)行CRC校驗(yàn)[15]。CRC采用的類型為CRC32,使用查表法計(jì)算。CRC32的生成多樣式如式(1)所示:
CRC32=x32+x26+x23+x22+x16+x12+x11+
x10+x8+x7+x5+x4+x2+x+1
(1)
若CRC校驗(yàn)正確,即返回下裝回復(fù)指令,否則提示數(shù)據(jù)幀CRC校驗(yàn)錯(cuò)誤。上位機(jī)收到下裝回復(fù)指令后,解析指令是否與發(fā)出的指令相匹配,并驗(yàn)證該指令的CRC值是否正確。若指令不匹配或者CRC值不正確,則分別提示錯(cuò)誤指令和數(shù)據(jù)幀CRC校驗(yàn)錯(cuò)誤。
上位機(jī)下裝前需先獲取待下裝文件的文件類型、文件大小、需要發(fā)送的數(shù)據(jù)幀總數(shù)以及文件CRC值,然后將這些信息封裝到下裝文件信息指令數(shù)據(jù)幀的數(shù)據(jù)段內(nèi)。下位機(jī)收到下裝文件信息指令后,需要對(duì)其進(jìn)行解析以及CRC校驗(yàn),驗(yàn)證通過則給上位機(jī)發(fā)送下裝文件信息回復(fù)指令。上位機(jī)接到回復(fù)指令后,需進(jìn)行指令匹配和CRC驗(yàn)證,然后開始發(fā)送下裝文件數(shù)據(jù)幀,其中還包括當(dāng)前數(shù)據(jù)幀的序號(hào)。當(dāng)下位機(jī)收到文件數(shù)據(jù)幀后,不但要進(jìn)行CRC校驗(yàn),而且還要解析當(dāng)前數(shù)據(jù)幀的序列號(hào)是否為上一幀的序列號(hào)加1,否則視為指令不匹配。如果當(dāng)前幀序列號(hào)等于之前下裝文件信息指令內(nèi)的數(shù)據(jù)幀總個(gè)數(shù),則視為下裝完成,下位機(jī)發(fā)送下裝完成指令。
上位機(jī)發(fā)送完所有數(shù)據(jù)幀后,會(huì)在規(guī)定時(shí)間內(nèi)等待下位機(jī)的下裝完成指令。如果在規(guī)定時(shí)間內(nèi)上位機(jī)未收到下裝完成指令,則會(huì)提示通信超時(shí)同時(shí)向下位機(jī)發(fā)送斷開連接指令;若上位機(jī)在規(guī)定時(shí)間內(nèi)收到下裝完成指令,則會(huì)提示下裝完成并向下位機(jī)發(fā)送斷開連接指令。
下裝流程如圖3所示。
圖3 下裝流程圖
在下裝過程的指令交互過程中,上位機(jī)在發(fā)送連接指令后,如果在規(guī)定時(shí)間內(nèi)未收到連接回復(fù)指令,會(huì)提示連接失敗并斷開連接,本文將此時(shí)間設(shè)定為3s。若下位機(jī)已經(jīng)收到連接指令,只是因?yàn)榫W(wǎng)絡(luò)等原因?qū)е律衔粰C(jī)未收到連接回復(fù)指令,此時(shí)上位機(jī)也認(rèn)為連接失敗并斷開連接。若下位機(jī)在規(guī)定時(shí)間內(nèi)未收到下一步指令,也會(huì)自動(dòng)斷開連接。
在成功建立連接后的通信過程中,不管是上位機(jī)還是下位機(jī),在3s內(nèi)必須發(fā)送或者接收一個(gè)指令,否則視為通信連接超時(shí)。由于發(fā)送指令是上、下位機(jī)自行決定的,一般不會(huì)出現(xiàn)收到指令后超時(shí)還未發(fā)送指令的情況存在,但不排除此種可能,只是一般認(rèn)為通信連接超時(shí)都是由于未收到指令而導(dǎo)致的。
上、下位機(jī)未收到匹配指令是指當(dāng)前接收的數(shù)據(jù)幀不符合通信流程設(shè)計(jì),例如下位機(jī)發(fā)送連接回復(fù)指令后,下一幀應(yīng)收到下裝指令,但實(shí)際收到了一個(gè)文件數(shù)據(jù)幀指令,則下位機(jī)會(huì)發(fā)送錯(cuò)誤指令并斷開連接。在下裝過程中,下位機(jī)會(huì)將收到的數(shù)據(jù)幀依次寫入一個(gè)新的文件內(nèi)。此文件存儲(chǔ)于下位機(jī)內(nèi)。
3.2文件回讀
回讀的主要功能是將下裝到下位機(jī)的下裝文件回讀到上位機(jī)內(nèi),并與之前的下裝文件進(jìn)行比對(duì),保證下裝到下位機(jī)內(nèi)文件的完整性和準(zhǔn)確性。
回讀流程如圖4所示。
圖4 回讀流程圖
下裝完成時(shí),上位機(jī)收到下裝完成指令后就會(huì)發(fā)送回讀指令;而下位機(jī)收到回讀指令后,則會(huì)將剛剛收到的下裝文件進(jìn)行解析,并將該文件長(zhǎng)度、需要發(fā)送的總包數(shù)和經(jīng)過計(jì)算得到的整個(gè)文件的CRC值封裝到回讀回復(fù)指令數(shù)據(jù)段內(nèi);上位機(jī)收到回讀回復(fù)指令后,先進(jìn)行指令本身的CRC校驗(yàn),然后進(jìn)行文件CRC比對(duì),若不一致則提示文件CRC校驗(yàn)錯(cuò)誤。
下位機(jī)在發(fā)送回讀回復(fù)指令之后,會(huì)持續(xù)發(fā)送回讀數(shù)據(jù)幀,而上位機(jī)會(huì)將收到的回讀數(shù)據(jù)幀寫入一個(gè)回讀文件內(nèi)。如果當(dāng)前數(shù)據(jù)幀的序列號(hào)為總包數(shù),下位機(jī)會(huì)主動(dòng)發(fā)送一個(gè)回讀完成指令,上位機(jī)收到回讀完成指令后,會(huì)繼續(xù)進(jìn)行下一步操作。
3.3文件比對(duì)
回讀過程完成后,在下裝文件目錄下會(huì)生成一個(gè)下裝回讀文件。根據(jù)實(shí)際情況,下裝文件大小一般都在幾KB到幾百KB之間。因此,本文選用的是較簡(jiǎn)單的內(nèi)存區(qū)域比較,按字節(jié)進(jìn)行逐一比對(duì)。若文件比對(duì)不一致,說明下裝到下位機(jī)的文件有錯(cuò)誤,需要重新下裝。該方法有效地保證了下裝文件的準(zhǔn)確性。
本方法在VisualStudio2012環(huán)境下采用C++語言實(shí)現(xiàn)。上位機(jī)為Intel?CoreTMi7CPU、內(nèi)存8GB、操作系統(tǒng)Windows7的主機(jī);下位機(jī)為本公司相關(guān)板卡,連接線使用標(biāo)準(zhǔn)網(wǎng)線,轉(zhuǎn)換接口使用MOXAEDS-205A-M-ST-T以太網(wǎng)交換機(jī)。
本文準(zhǔn)備了4個(gè)下裝文件進(jìn)行下裝試驗(yàn),具體參數(shù)如表3所示。
表3 下裝文件參數(shù)
將4個(gè)下裝文件分別下裝50次,以測(cè)試本文方法的有效性。其下裝過程中出現(xiàn)的錯(cuò)誤次數(shù)統(tǒng)計(jì)如表4所示。
表4 錯(cuò)誤統(tǒng)計(jì)
由表4可知,通信超時(shí)是唯一出現(xiàn)的錯(cuò)誤,且其出現(xiàn)頻率并不高。如果出現(xiàn)此錯(cuò)誤,表明數(shù)據(jù)傳輸失敗,可以通過重新下裝來保證數(shù)據(jù)傳輸?shù)耐暾院蜏?zhǔn)確性。其他錯(cuò)誤雖然未在試驗(yàn)中出現(xiàn),表明其出現(xiàn)頻率較低,但是仍然有可能出現(xiàn),因此只有建立完善的通信異常捕捉機(jī)制,才能滿足數(shù)據(jù)傳輸?shù)目煽啃砸蟆?/p>
本文基于核電儀控系統(tǒng)的局域網(wǎng)組成特征以及對(duì)于局域網(wǎng)數(shù)據(jù)傳輸系統(tǒng)的高可靠性要求,研究了目前的局域網(wǎng)通信方法,提出了一種基于IEEE802.3協(xié)議的數(shù)據(jù)下裝與校驗(yàn)方法。首先,設(shè)計(jì)了一組通信指令集用于交互;然后,通過分析可能出現(xiàn)的異常設(shè)計(jì)了一組錯(cuò)誤集合,用來及時(shí)反饋問題以及定位問題;最后,通過指令數(shù)據(jù)幀的對(duì)應(yīng)匹配、數(shù)據(jù)幀本身的CRC校驗(yàn)、整個(gè)文件的CRC校驗(yàn)和下裝完成后的回讀文件比較,保證了文件傳輸?shù)臏?zhǔn)確性和完整性。試驗(yàn)結(jié)果表明,本文方法能夠有效保證文件在局域網(wǎng)內(nèi)傳輸?shù)臏?zhǔn)確性與完整性,達(dá)到核電儀控系統(tǒng)對(duì)于數(shù)據(jù)傳輸?shù)目煽啃砸?。目前,該方法已試用于和睦系統(tǒng)。
[1] 韓云祿,束軍.基于TCP/IP的局域網(wǎng)通信工具的設(shè)計(jì)與實(shí)現(xiàn)[J].科技信息,2009(21):13.
[2] 高書亮,馬玉發(fā),楊東凱.基于多線程和消息的局域網(wǎng)通信程序?qū)崿F(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(2):323-325.
[3] 肖行詮,茍驍毅,肖嵐,等.基于UDP協(xié)議的局域網(wǎng)WAMS數(shù)據(jù)低延遲可靠傳輸方法[J].電力自動(dòng)化設(shè)備,2011,31(10):148-151.
[4] 林正浩.基于802.3以太網(wǎng)MAC協(xié)議的研究與實(shí)現(xiàn)[D].上海:同濟(jì)大學(xué),2007:1-7.
[5]GACANINH,ADACHIF.Broadbandanalognetworkcoding[J].IEEETransactionsonWirelessCommunications,2010,9(5):1577-1583.
[6] 張佳薇,陳巖,李明寶.用于無線傳感器網(wǎng)絡(luò)的高能效分幀MAC協(xié)議[J].信息與控制,2013,42(1):95-99.
[7] 劉佳.礦井下無線傳感器網(wǎng)絡(luò)路由協(xié)議的研究[J].自動(dòng)化儀表,2016,37(2):65-68.
[8]DAMT,LANGENDOENK.Anadaptiveenergy-efficientMACprotocolforwirelesssensornetworks[C]//Proceedingsof1thInternationalConferenceonEmbeddedNetworkedSensorSystems(SenSys),2003.
[9] 任曉明,付子義,劉芳芳.具有時(shí)延的網(wǎng)絡(luò)控制系統(tǒng)[J].自動(dòng)化儀表,2015,36(4):6-9.
[10]李清霞.局域網(wǎng)通信安全的評(píng)估與技術(shù)依托[J].制造業(yè)自動(dòng)化,2010,32(9):199-204.
[11]臧峰,蔡丹,徐衛(wèi)峰,等.控制器間數(shù)據(jù)共享方案的設(shè)計(jì)與實(shí)現(xiàn)[J].自動(dòng)化儀表,2017,38(1):50-52.
[12]趙明峰,周亞建,原泉,等.物理層網(wǎng)絡(luò)編碼研究進(jìn)展[J].計(jì)算機(jī)應(yīng)用,2011,31(8):2015-2020.
[13]張樹剛,張遂南,黃士坦.CRC校驗(yàn)碼并行計(jì)算的FPGA實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2007,17(2):56-62.
[14]CAMPOBELLOG,PATANEG,RUSSOM.ParallelCRCrealization[J].IEEETransactionsonComputers,2003,52(10):1312-1319.
[15]YEW,HEIDEMANNJ,ESTRIND.Mediumaccesscontrolwithcoordinatedadaptivesleepingforwirelesssensornetworks[J].IEEEACMTransactionsonNetworking,2004,12(3):493-506.
ResearchontheDataDownloadingandCheckingMethod
forControlSystemofNuclearPower
ZHENG Junchao,LIU Song,JIN Chengri
(China Techenergy Co.,Ltd.,Beijing100094,China)
In the process of the maintenance of nuclear power control system,it is necessary to download data in controllers to complete the calibration and upgrade of the engineering configuration.In order to guarantee the completeness and accuracy of the data downloaded,the composition characteristics of the local area network (LAN) communication node in nuclear power control system are studied.The existing LAN communication methods are investigated,and the data downloading and checking method based on IEEE802.3protocol is put forward.Firstly,through designing functional instructions and presetting error notification to ensure the errors in communication process can be obtained by the system promptly.Then,a new data frame format based on MAC frame format is designed,through encapsulating the functional codes and error notification instructions to ensure interactivity among communication nodes.Finally,a series of measures are adopted,such as data packet CRC check,file CRC check and file read back comparison,to ensure the correctness of the file transmission in the LAN.After testing,the advantages of this method are revealed,e.g.,higher reliability,fast transmission speed and lower configuration requirement,etc.The method can be widely used in LAN systems consisting more embedded modules,such as ship and thermal power.
Nuclear power control system; Local area network communication; Data frame; Data downloading; Commumication protocol; Embedded module
TH-39;TP273
10.16086/j.cnki.issn1000-0380.201710006
修改稿收到日期:2017-04-10
鄭俊朝(1990—),男,碩士,助理工程師,主要從事核安全級(jí)軟件的驗(yàn)證和確認(rèn)工作。E-mail784518217@qq.com。