吳小俊,李上,于洋
(南京軌道交通系統(tǒng)工程有限公司,南京 210019)
綜合監(jiān)控系統(tǒng)或電力監(jiān)控系統(tǒng)的順控多采用調度順控模式[1],是多個遙控命令的組合,調度操作員只需通過界面點擊1個按鈕即可以完成一系列控制的操作,操作過程簡單,自動化程度高,但某些特定情境下也可能會存在一些風險。
順控前置條件是在執(zhí)行順控遙控命令前的一系列邏輯閉鎖或特定狀態(tài)檢測的一種有效手段,實現(xiàn)遙控防誤閉鎖[2]的功能。結合中綴表達式的應用,在執(zhí)行遙控命令前,判斷是否存在閉鎖條件或閉鎖條件是否滿足[3],可提高順控執(zhí)行的安全性,同時各前置條件的結果會直觀在界面上顯示,操作員能根據(jù)顯示結果盡量排查原因,減少人工故障檢測時間。下面針對基于中綴表達式的前置條件設計實現(xiàn)進行介紹。
順控是一系列遙控對象的集合,即順控卡片,是電氣操作票的倒閘過程[4],用戶操作時,程序會按照預先配置的步驟依次進行命令下發(fā),自動按照規(guī)則完成一系列遙控對象的操作[5],實現(xiàn)停送電道閘操作。
順控模塊包括順控配置模塊和順控執(zhí)行模塊2個部分。
順控配置模塊主要是按照順控卡片配置前置條件和遙控對象。順控執(zhí)行模塊是根據(jù)順控的配置檢測前置條件和執(zhí)行遙控操作命令。2個模塊與系統(tǒng)平臺的配置庫和實時庫數(shù)據(jù)交互的關系如圖1所示。
圖1 順控與系統(tǒng)平臺數(shù)據(jù)交互示意圖
順控配置模塊通過讀寫配置數(shù)據(jù)庫,根據(jù)預先定義的順控卡片根據(jù)系統(tǒng)平臺的數(shù)據(jù)點進行綁定和設置。
順控操作的每一步驟在配置數(shù)據(jù)庫中即1個順控對象。順控對象的配置主要包括順控序號、順控類型、順控對象和順控條件屬性等字段。各主要字段說明如下。
(1)順控序號:順控執(zhí)行步驟序號,由1開始,依次增加。
(2)順控類型:順控對象具有控制類型,控制類型包括條件與控制命令,用于區(qū)別順控對象是前置條件還是遙控操作。
(3)順控對象:對應系統(tǒng)中的遙信點、遙測點或遙控點。其中當順控對象是條件時配置為遙信(DI)或遙測點(AI);當順控對象是遙控命令時配置遙控點(DO)。
(4)順控對象配置條件屬性,針對順控對象類型,配置的意義不同。
①當順控對象類型是前置條件時,條件屬性為條件算術表達式。
條件算術表達式采用比較運算符,==、!=、>、<、>=、<=。順控對象是系統(tǒng)中的DI或AI點,通過比較運算符,建立每一個條件的比較結果。示例見表1。
表1 條件對象配置表
第1行表示第1個順控對象為遙信點1011隔離開關,配置為前置條件,當隔離開關1011的值為1時(開關狀態(tài)為分位),此順控序號條件滿足。
第2行表示第2個順控對象為遙信點1012隔離開關,配置為前置條件,當隔離開關1012的值為2時(開關狀態(tài)為合位),此順控序號條件滿足。
第3行和第1、2行配置類同。
采用DI遙信點狀態(tài)作為條件是常見的做法,也可以對AI遙測點建立條件,如101進線電壓>=34.5 kV等形式,但如果使用35.5 kV>=101進線電壓>=34.5 kV這樣條件形式,則需要將條件拆分為2個條件,35.5 kV>=101進線電壓并且101進線電壓>=34.5 kV,在后面配置中將2個條件使用邏輯運算&進行合并。
②當順控對象類型為遙控命令時,條件屬性為前置條件表達式。順控對象為遙控點。
前置條件表達式為邏輯表達式,采用中綴表達式形式,使用邏輯運算符,與(&)、或(|)、非(!),操作符優(yōu)先級為?。?>|[6],并可以使用括號(),括號具有最高優(yōu)先級,使用括號可以使更好理解與配置表達式邏輯,避免配置與預期結果不一致。每一個運算分量是前置條件對應的順控執(zhí)行順序,計算表達式的邏輯結果[7]。配置示例見表2。
表2 遙控對象前置條件配置表
第四行表示順控對象是遙控命令對象,條件屬性為1&2|3,表示第1個順控對象1011隔離開關實時狀態(tài)==1和第2個前順控對象隔離開關1012狀態(tài)==2或者第3個順控對象隔離開關1013狀態(tài)!=2時,前置條件結果才為真。
順控執(zhí)行模塊首先從配置庫中讀取配置的數(shù)據(jù),按照順控序號根據(jù)獲取的實時值逐一檢測順控對象。檢測過程見表3。
表3 遙控對象前置條件執(zhí)行表
第1個順控對象為遙信點1011隔離開關為前置條件,執(zhí)行模塊通過實時數(shù)據(jù)庫獲取當前配置遙信點的實時值[8],當隔離開關1011的實時值為1時(開關分位),此順控序號條件滿足,否則提示不滿足。
第2個順控對象為遙信點1012隔離開關為前置條件,執(zhí)行模塊通過實時數(shù)據(jù)庫獲取隔離開關1012的值實時為2時(開關合位),此順控序號條件滿足,否則提示不滿足。
第3個順控對象為遙信點1013隔離開關,也為前置條件,執(zhí)行模塊通過實時數(shù)據(jù)庫獲取隔離開關1013的實時值!=1(不是開關分位),此順控序號條件滿足,否則提示不滿足。
第4個順控對象是遙控命令對象,順控條件為1&2|3,執(zhí)行模塊在執(zhí)行遙控命令前,需要通過表達計算前置條件的邏輯結果,在當?shù)?個順控對象1011隔離開關實時狀態(tài)==1和第2個前順控對象隔離開關1012實時狀態(tài)==2或者第3個順控對象隔離開關1013實時狀態(tài)!=1時,順控對象前置條件結果才為真,可以繼續(xù)執(zhí)行斷路器101遙控命令,否則不能執(zhí)行遙控命令,并給出順控條件不滿足的提示。
順控前置條件采用中綴表達式形式,中綴表達式是一種統(tǒng)一的算術或邏輯公式表示方法,操作符以中綴形式處于操作數(shù)的中間,很容易理解與分析,可方便配置人員進行配置。但計算機很難之間計算中綴表達式,通常需要將中綴表達式轉換為前綴表達式[9]或后綴表達式[10-11],再對前綴或后綴表達式進行求值。
本方案采用中綴表達式轉后綴表達式的方式,使用C++/Qt框架,利用Qt框架的QVector、QList、QStack等容器類實現(xiàn)。
順控前置條件判斷基本流程如圖2所示。
圖2 前置條件判斷流程圖
本方案中關鍵的流程包括以下3個步驟。
(1)使用splitExp(QString& sExp,QList<QChar>& listChar)函數(shù)將字符串性的表達式轉換成QList<QChar>字符串列表,方便后續(xù)轉換使用
(2)使用infixToSuffix(QString& sExp,QVector<QChar>& suffixExp)函數(shù)將QList<QChar>字符串列表的中綴表達式轉換成QVector<QChar>后綴表達式
(3)使用calulateSuffix(QString sExp,QMap<int,bool>& conditionMap)函數(shù)將各順控條件的邏輯結果值代入后綴表達式數(shù)組,計算最終前置表達式的結果。
工程應用中,調試人員根據(jù)預先設計的順控卡片配置順控對象,包括順控序號、順控對象、順控類型、順控動作(只針對遙控對象)、順控前置條件和執(zhí)行次數(shù)等。配置示例如圖3所示。
圖3 配置示例圖
在進行電氣倒閘操作時,調度操作員在點擊執(zhí)行按鈕后,順控執(zhí)行模塊依次檢測各條件是否滿足,再根據(jù)中綴表達式計算最終前置條件結果,如不滿足則不執(zhí)行,并顯示錯誤提示信息,如滿足則正常執(zhí)行下一步遙控操作,下發(fā)遙控命令,執(zhí)行界面效果示例展示如圖4所示。
圖4 執(zhí)行示例圖
采用中綴算術表達式作為順控前置條件,工程調試人員可自由配置各類順控執(zhí)行條件,配置方式簡單明了,方便實現(xiàn)不同順控應用場景,同時,使用前置條件方式的順控方案可防止運營調度人員誤操作,執(zhí)行前檢測先決條件,提前告知順控卡片可否執(zhí)行,提高工作效率。適用于城市軌道交通和電氣化鐵路綜合監(jiān)控系統(tǒng)和電力監(jiān)控系統(tǒng),并可應用類似邏輯順控判斷如聯(lián)動功能[12]等的工業(yè)控制領域。本設計方案已在城市軌道交通綜合監(jiān)控系統(tǒng)等多個類似系統(tǒng)中應用和實施,得到了很好的驗證。