高小劍
中交機電工程局有限公司
港口控制系統設備類型多、數量大,控制流程復雜,一個港口可能包含幾十個甚至上百個控制模式,一個設備可能參與在幾個甚至幾十個控制模式中。不同的模式下,同一設備控制邏輯極易交叉。采用完全枚舉法,極少的設備數量或控制模式改變,都會引起程序巨大的改變[1]。將關系型數據結構引入控制,用關系型數據模式字確認代替模式的解析過程,使模式解析和設備執行分層進行,減少模式之間的邏輯交叉,增強程序的可擴展性和編程靈活性,在復雜控制系統中具有重要意義。
以港口皮帶機系統控制為例,為確保其有效性和穩定性,同時兼顧項目成本投入,控制系統采用經典的分層結構,分為中心級控制和現場級控制(見圖1)。

圖1 港口控制系統分層結構圖
中心級控制位于整個港口控制系統的核心,負責整個港口傳輸控制系統的協調,將控制模式的選擇、執行前的判斷、流程的控制命令根據現場實際連接有序地下發到各個分站控制器;同時接收各個分站的狀態信息,并通過與上位軟件的通信,將現場控制系統設備的實時狀態在上位界面上進行呈現[2]。
現場級控制中各分站負責收集本站周圍的皮帶機系統的運行狀態信息,接收中控的控制命令,并經過邏輯運算,將最終的控制命令下發到控制區域內的設備控制器中。在和中心級控制發生通信故障時,能夠按照預先設置好的程序,對區域內的設備進行有序的控制。
系統的主控制字用于對控制模式的快速選擇、下發前的快速的判斷,借助數據結構,將現場控制單元的控制命令、位置信息、和運行狀態反饋信息、故障信息以一定的數據結構進行編碼。
為了方便介紹,假設該系統包含8條皮帶機,3個三通,15個控制單體,將所有的設備按照順序,用1個位(bit)表示1個控制單體,用1個字(Word)型變量表示編碼系統所含設備的控制信息(見圖2)。

圖2 主控制字編碼示意圖
(1)主控制字(Main Control)編碼。主要負責將港口皮帶機控制系統所有皮帶機、三通閘門等與流程連鎖控制有關的控制單體進行編碼。1個控制單體用1個位(bit)編碼,如皮帶機參與該條流程控制,則對應位置1。例如Main Control[0]=1,表明該BC01皮帶機參與該條流程的控制,否則,Main Control[0]=0,表明該BC01皮帶機在該條流程中不需要參與控制。
(2)位置字(Remote/Locel)編碼。對所有參與系統流程的單體設備的遠程或就地位置進行編碼,每個控制單元用1位(bit)表示。位置字為“1”,表示當前該控制單元處于遠程狀態,可以通過上位機控制;否則,表示該控制單元處于就地狀態,不能參與流程控制。只有當所有參與流程控制的單體都處在遠程位置時,該流程才具備執行的先決條件。
(3)故障字(Fault)編碼。系統自動控制過程中,為了避免設備帶故障運行,需要將所有控制單體的綜合故障進行編碼,如果系統中有控制單體處于故障狀態,則不允許該流程被選中執行。這里的故障指綜合故障,是所有能夠引起控制單體停機的故障的綜合體,例如皮帶機的拉繩禁停、重跑偏、撕裂開關、堵塞故障、開關柜故障、電機繞組及驅動軸溫度過高等可能引重大事故或者設備重大損害的故障。如果控制單體處于故障狀態,將在故障字中對應的位(bit)置0,否則置1。
在執行過程中,將設備的Remote/Local、Fault狀態時刻進行掃描,將設備反饋狀態實時的寫入Remote/Local、Fault狀態字,以上狀態字的編碼,可為流程下發執行前的判斷做好準備。
流程輔助控制字(Auxiliary)格式見圖3。根據主控制的排列順序,對每個控制可能具有的控制命令進行編碼,如BC01皮帶機有正轉控制、反轉控制、停止控制,則由輔助控制字Auxiliary[1]的第0、1、2共3個(bit)表示,“001、010、100”分別表示BC01正轉控制、反轉控制、停止控制3個控制命令。同理,電動三通ST01有2個導通方向,由輔助控制字Auxiliary[2]的第2、3共2個位(bit)表示,“01、10、00”分別表示ST01 A向導通、反轉控制、無需控制。這樣把所有控制單體按照主控制字的順序依次在Auxiliary[1]、Auxiliary[2]中排列編碼。某一條控制流程所包含控制單體的控制命令都存儲在Auxiliary[1]、Auxiliary[2]2個輔助字中。如果設備較多,可以多設置幾個字節,增加設備時,僅需將設備的控制特性排列在Spare區域即可,不需改變數據結構和后續已有控制單體的執行程序。

圖3 流程輔助控制字結構圖
設備的執行狀態字Running與Auxiliary相對應,每一位為對應設備的運行狀態,如BC01正轉運行時,將Running[1].0置1,這樣流程的執行結果,均可以通過輔助控制字和執行狀態字相同的邏輯表達實現,極大地降低了控制算法工作量,增加了程序的通用性和擴展性。
流程控制表包含3個部分,流程索檢表、主控制字表、輔助控制字表。1組主控制字和輔助控制字組成1個流程的控制字組,稱為1條記錄,系統有多少控制流程就有多少條記錄。
根據工藝提供的要求,首先對所有流程進行編號,并將編號按照順序錄入控制程序的存儲區中,形成模式檢索表(見圖4)。為了增加控制系統的擴展性,在編制索檢表時要做好足夠的備用空間,在備用的區域Mode Num設為0,工藝增加控制流程時,只需將實際流程編號寫入對應的索檢表中Mode Num值中即可。

圖4 模式檢索表
主控制字、輔助控制字與索檢表相對應,在程序控制區中,分別為一個N×n1、N×n2矩陣,其中N為索檢表中記錄的個數,n1為每個主控制字中所占的字節數,n2為每個輔助控制字中所占的字節數。程序可以根據流程的索檢編號Index,根據線性對應關系快速定位到流程主控制字和輔助控制字的開始地址,將主控制字和輔助控制字搜索出來。
需增加模式時,只用在流程索檢表加入流程編號,主控制字表、輔助控制字表中將對應流程控制單體的編碼值填入即可,而不用修改具體設備的執行程序,使得流程的增減及擴展更加靈活,增加了程序的擴展性和移植性。
系統的流程執行控制流程見圖5。

圖5 系統流程執行控制流程圖
3.4.1 流程下發前的判斷
以下判斷過程,對主控制字、遠程就地位置字、故障字的邏輯過程均以字為單位進行,實際流程占用幾個字節,就進行幾次判斷。為了說明的簡潔性,所有的判斷過程均按占用1個字節為例說明。
當系統下發模式時,首先判斷當前系統所處的狀態,如果上一個模式還在執行過程中,模式執行標志位為1,則不能將新的模式下發,能夠避免2個模式存在設備交叉,要求設備執行相反操作,給設備帶來巨大沖擊,以保護設備安全,提高設備使用壽命。
模式執行中標志位為0且下發模式不等于已執行成功的模式時,允許程序掃描檢索表,找到程序下發的模式,根據索引值Index在主控制表中檢索出下發模式的主控制字和輔助控制字,并在下發前完成以下判斷。
(1)判斷流程所包含的設備是否均處于遠程狀態,判斷方式見式(1):
A=Main Control & Remote⊕Main Control
(1)
首先,對Main Control和Remote狀態字進行邏輯“與”操作,排除本流程外控制單體狀態對于本流程判斷的干擾,與本流程無關的控制單體將不會參與到后序邏輯運算。然后,將邏輯運算結果與Main Control控制字進行邏輯“異或”運算,如果A≠0,則說明本流程中至少有一個設備處于就地位置,不能遠程完成控制單元的控制,該流程不能執行成功,程序拒絕流程下發執行,同時會在上位機上顯示該流程無法下發,本流程中有控制單體未處于遠程狀態;如果計算結果A=0,則說明參與本流程執行的所有設備均處在遠程位置,可以遠程啟動或者停止流程中所有控制單體。
(2)判斷模式中所選中的設備是否有的處于故障狀態,將Main Control和Fault狀態字進行邏輯“與”操作,見式(2),排除與本條流程外的控制單體,如果流程包含的控制單體均正常,則B=0,可以下發該流程。
B=Main Control & Fault⊕Main Control
(2)
3.4.2 模式設備的執行
經過判斷,流程所涉及的控制單體均能遠程控制、狀態良好,且沒有被占用,符合流程下發的條件。程序根據索檢編號Index流程記錄的線性對應關系。快速定位到流程主控制及輔助控制字的開始地址,把主控字和輔助控制字搜索出來下發到程序的執行區中,同時將選中設備的執行結果實時更新到運行狀態字Running中,參與模式執行結果的判斷。
根據流程輔助控制字中的控制目標狀態和運行狀態字的實際執行結果,通過式(3)邏輯運算,判斷模式執行成功與否。
C=Auxiliary & Running⊕Auxiliary
(3)
在設定的流程執行時間內,C=0,則該模式包含的全部設備均達到了流程期望達到的狀態,模式執行成功;否則,超出了模式執行時間,或者有控制單體沒有達到預定的動作,程序判斷流程執行失敗。
將關系型數據結構引入港口復雜的流程控制中,用流程記錄代替傳統完全枚舉法執行過程的復雜邏輯關系,實現流程解析和設備運行的分層和相對獨立控制,減少程序控制過程中的邏輯交叉,使程序控制變的簡單,實現過程更加靈活,易于擴展和移植。此方案已在多個工程實踐中使用,操作簡單,運行穩定可靠,具有一定的推廣價值。