孔偉力 李勇 禹娟娟
?
IATools如何實(shí)現(xiàn)邏輯Check功能
孔偉力 李勇 禹娟娟
中核控制系統(tǒng)工程有限公司,北京 100176
以海南昌江1&2號(hào)機(jī)組DCS項(xiàng)目為起源,介紹了IA平臺(tái)組態(tài)文件的自動(dòng)審查軟件。核電DCS系統(tǒng)設(shè)計(jì)工作周期長(zhǎng)、工作量大、重復(fù)性強(qiáng),容易導(dǎo)致人為錯(cuò)誤,不易檢查發(fā)現(xiàn),并且增加過(guò)多人工時(shí),不利于項(xiàng)目成本控制?;谏鲜鼍売蒊ATools設(shè)計(jì)了Auto Check功能。
正則表達(dá)式;語(yǔ)言集成查詢;C#
在核電DCS系統(tǒng)設(shè)計(jì)過(guò)程中,由于核電工藝復(fù)雜,控制系統(tǒng)邏輯較為煩瑣,過(guò)程中會(huì)用到大量功能塊,而且功能塊的設(shè)置煩雜,給人工審查帶來(lái)相當(dāng)大的工作量。自動(dòng)審查軟件可以根據(jù)工程項(xiàng)目特點(diǎn)設(shè)置不同的Check規(guī)則,統(tǒng)一判斷標(biāo)準(zhǔn),達(dá)到批量和快速審查的目的,并提醒設(shè)計(jì)人員錯(cuò)誤所在,節(jié)省大量工作時(shí)間,降低審查工作強(qiáng)度,提高審查的可靠性和準(zhǔn)確性。
正則表達(dá)式這個(gè)概念最初是由Unix中的工具軟件普及開(kāi)的,又稱正規(guī)表示法、常規(guī)表示法。正則表達(dá)式使用單個(gè)字符串來(lái)描述、匹配一系列符合某個(gè)句法規(guī)則的字符串。在很多文本編輯器里,正則表達(dá)式通常被用來(lái)檢索、替換那些符合某個(gè)模式的文本。正則表達(dá)式在各種計(jì)算機(jī)語(yǔ)言或各種應(yīng)用領(lǐng)域得到了廣大的應(yīng)用和發(fā)展[1]。
2.2.1 LOGIC塊語(yǔ)法
在IA Series系統(tǒng)中,LOGIC 塊屬性見(jiàn)表1[2]:
表1 LOGIC 塊屬性
LOGIC 塊在核電DCS系統(tǒng)中常用的語(yǔ)句有IN、OUT、AND、OR、NOT、DOFF、DON、OSP、MRS、BIF、STM等等。
根據(jù)IA資料文件IACC all blocks description B0193AX-Rev AA的語(yǔ)法規(guī)則,定義LOGIC塊在Check功能中的正則表達(dá)式,事例如下:
LOGIC塊中AND指令后面可以為空、數(shù)字、操作數(shù),所以定義LOGIC中AND正則表達(dá)式分別如下:
AND=^s*((d*$)|(~?BI(0[1-9]|1[0-6]))|(~?BO0[1-4])|(~?M0[1-5]))s*(s+(~?BI(0[1-9]|1[0-6]))|(~?BO0[1-4]$)|(~?M0[1-5]))?$
LOGIC塊中DON、DOFF指令后面可以是數(shù)字、RIxx,所以定義LOGIC中DON、DOFF正則表達(dá)式分別如下:
DON=^((s*[1-9][0-9]*$)|(RI0[1-2]))$
DOFF=^((s*[1-9][0-9]*$)|(RI0[1-2]))$
2.2.2 CALCA塊語(yǔ)法
見(jiàn)表2。
表2 CALCA塊語(yǔ)法
CALCA 塊在核電DCS系統(tǒng)中常用的語(yǔ)句有IN、OUT、AND、OR、NOT、DOFF、DON、OSP、MRS、ADD、STM等等。
根據(jù)IA資料文件IACC all blocks description B0193AX-Rev AA的語(yǔ)法規(guī)則,定義CALCA塊在Check功能中的正則表達(dá)式,事例如下:
AND指令后面可以為空、數(shù)字、操作數(shù),所以定義CALCA中AND正則表達(dá)式分別如下:
AND=^(s*(d*$)|(~?BI(0[1-9]|1[0-6]))|(~?BO0[1-8])|(~?M((0[1-9])|(1[0-9])|(2[0-4])))s*(s(~?BI(0[1-9]|1[0-6]))|(~?BO0[1-8])|(~?M((0[1-9])|(1[0-9])|(2[0-4]))))?$
CALCA中DON、DOFF指令后面可以是數(shù)字、Mxx,這一點(diǎn)和LOGIC中有所不同,所以定義CALCA中DON、DOFF正則表達(dá)式分別如下:
DON=^((s*(([1-9][0-9]*(.[0-9]+)?)|(0.[0-9]+)))|((M0[1-9])|M(1[0-9])|(M2[0-4])))$
DOFF=^((s*(([1-9][0-9]*(.[0-9]+)?)|(0.[0-9]+)))|((M0[1-9])|M(1[0-9])|(M2[0-4])))$
LINQ語(yǔ)言集成查詢(Language Integrated Query)是一組用于C#和Visual Basic語(yǔ)言的擴(kuò)展。它允許編寫(xiě)C#或者Visual Basic代碼以查詢數(shù)據(jù)庫(kù)相同的方式操作內(nèi)存數(shù)據(jù)。
正是利用了LINQ實(shí)現(xiàn)了參數(shù)查詢和語(yǔ)法檢查的功能,核電DCS項(xiàng)目中,相同參數(shù)會(huì)有不同的參數(shù)設(shè)置。IATools中可以根據(jù)不同項(xiàng)目定義不同的Check規(guī)則,這樣方便對(duì)模塊參數(shù)設(shè)置的檢查。
以海南DCS項(xiàng)目中CIN塊為例,項(xiàng)目中要求所有IO點(diǎn)CIN塊的PERIOD=1、并且IOMOPT=1的CIN塊IOM_ID和PNT_NO兩參數(shù)不能為空,下面的語(yǔ)句定義了CIN塊針對(duì)這兩條要求的查詢方法:
[CIN]
COUNT=2
PARA01=PERIOD
DESC01=CIN塊周期應(yīng)該為1
RULE01=TYPE = "CIN" && N["PERIOD"] !=1
KEYS01=PERIOD
PARA10=IOMOPT
DESC10=檢查IOMOPT為1的CIN塊 IOM_ID和PNT_NO是否為空
RULE10=TYPE = "CIN" && N["IOMOPT"] =1 && (S["IOM_ID"]= "" || S["PNT_NO"]= "")
KEYS10=IOMOPT;IOM_ID;PNT_NO
IATools采用了Visual Studio 2010的C#語(yǔ)言開(kāi)發(fā),運(yùn)行平臺(tái)需要安裝.net framework 3.5。程序運(yùn)行流程主要有包括讀取配置文件、加載規(guī)則文件、讀取組態(tài)文件、程序執(zhí)行、結(jié)果輸出等[3],具體流程見(jiàn)圖1:
圖1 程序運(yùn)行流程圖
4.2.1 驗(yàn)證語(yǔ)法錯(cuò)誤
實(shí)驗(yàn)對(duì)象為海南昌江DCS #2機(jī)組2509UC ICCPRT文件,2KPR_N1:001CC_L1正確邏輯如下所示:
STEP01=CST
STEP02=
STEP03=AND BI01 BI02
STEP04=AND BI01 BI03
STEP05=AND BI02 BI03
STEP06=OR 3
STEP07=OUT B001
STEP08=
STEP09=NOT
STEP10=OUT B002
STEP11=
STEP12=END
STEP13=
STEP14=
STEP15=
首先,根據(jù)定義好的Rules文件和語(yǔ)法規(guī)則,IATools自動(dòng)審查完成后顯示結(jié)果見(jiàn)圖2:
圖2 IATools自動(dòng)審查完成后顯示結(jié)果
沒(méi)有輸出結(jié)果,而且LOGIC下面顯示沒(méi)有語(yǔ)法錯(cuò)誤。
然后我們將組態(tài)文件修改如下:
STEP01=CST
STEP02=
STEP03=AND BI01 BI17
STEP04=AND BI01 BI03
STEP05=AND BI02 BI03
STEP06=OR 3
STEP07=OUT B001
STEP08=
STEP09=NOT B001
STEP10=OUT B002
STEP11=
STEP12=END
STEP13=
STEP14=
STEP15=
不難看出,STEP03中不應(yīng)該出現(xiàn)BI17,STEP09中NOT指令不應(yīng)該有操作數(shù)。用IATools進(jìn)行自動(dòng)審查,結(jié)果見(jiàn)圖3。
軟件輸出結(jié)果顯示LOGIC中提示語(yǔ)法錯(cuò)誤,并且將錯(cuò)誤以高亮顯示。
圖3 IATools進(jìn)行自動(dòng)審查
4.2.2 驗(yàn)證參數(shù)錯(cuò)誤
實(shí)例主要驗(yàn)證在IOMOPT為1的情況下,IOM_ID、PNT_NO不能為空。實(shí)驗(yàn)對(duì)象為海南昌江DCS #2機(jī)組2509UC ICCPRT文件,2DVN_N1:160CC_2正確參數(shù)如下:
NAME=2DVL_NI:160CC_2
TYPE=CIN
DESCRP=LOC.103ZV MANU.CMN
PERIOD=1
PHASE=0
LOOPID=2DVL160CC_2
IOMOPT=1
IOM_ID=250906
PNT_NO=2
根據(jù)定義好的參數(shù)檢查規(guī)則,Check完成后顯示結(jié)果為空,見(jiàn)圖4:
圖4 Check完成后顯示結(jié)果
將IOM_ID、PNT_NO刪除,當(dāng)前參數(shù)如下:
NAME=2DVL_NI:160CC_2
TYPE=CIN
DESCRP=LOC.103ZV MANU.CMN
PERIOD=1
PHASE=0
LOOPID=2DVL160CC_2
IOMOPT=1
IOM_ID=
PNT_NO=
將修改的ICCPRT文件再進(jìn)行Check,結(jié)果顯示見(jiàn)圖5:
圖5 Check完成后顯示結(jié)果
輸出結(jié)果將空置的IOM_ID、PNT_NO進(jìn)行了高亮顯示。
IATools的Check功能在組態(tài)文件審查工作中能夠快速、準(zhǔn)確地定位問(wèn)題所在,降低了審查難度,提高了審查的效率。當(dāng)然仍有一些問(wèn)題存在,定義的規(guī)則只能檢查固定的語(yǔ)法錯(cuò)誤和參數(shù)錯(cuò)誤,一些不是語(yǔ)法類的錯(cuò)誤是不能檢查到的,所以組態(tài)文件還需要在不斷的測(cè)試和檢查過(guò)程中進(jìn)行完善。
[1]AndrewWatt.正則表達(dá)式入門(mén)經(jīng)典[M].北京:清華大學(xué)出版社,2008.
[2]查方興.I/A Series系統(tǒng)及應(yīng)用[Z].上海:??怂共_有限公司,2009.
[3]顧寧燕.21天學(xué)通ASP.NET[M].北京:電子工業(yè)出版社,2011.
How IATools Implements Logical Check Functions
Kong Weili Li Yong Yu Juanjuan
China Nuclear Control Systern Engineering Co., Ltd., Beijing 100176
Taking Hainan Changjiang 1&2 unit DCS project as the origin, the paper introduces the configuration file IA platform automatic review software. The design of nuclear power DCS system is long, heavy workload and repetitive. It is easy to cause human errors, and not easy to detect and find too much labor. It is not conducive to project cost control. Therefore, IATools designs Auto Check function based on above reason.
regular expressions; language integrated query; C#
TP311.5
A