任東宇 王海群 胡 昊 劉運洲 孟廷豪
(北京航天石化技術裝備工程有限公司)
隨著石化和化工行業(yè)的蓬勃發(fā)展,工業(yè)裝置規(guī)模不斷提升,配套的控制系統(tǒng)也日趨復雜。 部分復雜工業(yè)裝置會使用到多臺PLC 和操作面板,這些控制設備之間使用現場總線或工業(yè)以太網等方式連接并進行數據交換,組成一套完整的控制系統(tǒng)。
工業(yè)裝置在實際運行過程中,如果發(fā)生系統(tǒng)故障,一般會按照時間軸查詢工藝參數記錄和歷史報警信息來進行故障診斷,這種故障診斷方法需要整個控制系統(tǒng)的時鐘保持精準同步,如果系統(tǒng)中不同PLC 或操作面板存在時間差,將會對故障診斷造成困難, 嚴重時甚至會引起事故誤判,影響裝置運行安全。
目前,西門子的中大型PLC 和部分以太網通信卡件(如CP343/443)等均自帶時鐘校準功能,主要有NTP 模式和SIMATIC 模式, 只要在PLC或通信卡件上進行相應的設置即可完成時鐘自動同步。 但這兩種時鐘校準模式的應用具有一定的局限性。 NTP 模式必須基于以太網,網絡內必須有穩(wěn)定的時鐘服務器,且不支持小型PLC(如S7-200 系列);SIMATIC 模式不必局限于以太網,也可以基于Profibus 或MPI 通信, 但必須購買CP343/443 等通信卡才可以使用,而且與NTP 一樣,SIMATIC 模式也不支持小型PLC (如S7-200系列)。
在實際使用中,受限于硬件有可能無法使用NTP 模式和SIMATIC 模式進行時鐘同步。此時也可采用單獨設備人工對時的方法。 但是這種對時方法存在一定的弊端,目前PLC、操作面板等電子設備, 內置時鐘均是基于晶振或RC 振蕩電路等方式生成的,存在一定的誤差,需要人為地定期進行對時,否則就會導致控制系統(tǒng)內部時間不一致。
針對上述問題,筆者提出了一種多設備控制系統(tǒng)時鐘自動同步方案,此方案基于通信,可自動同步裝置內多臺西門子系列PLC 和操作面板的系統(tǒng)時鐘,也能使裝置的系統(tǒng)時鐘與廠級DCS同步,有效避免由于系統(tǒng)時鐘不一致導致的故障誤判等問題。
當一套工業(yè)裝置內存在多個單體設備,或設計了備用設備時,每臺單體設備往往會單獨采用一套PLC 和操作面板進行控制,PLC 與控制面板之間、PLC 之間通過通信交換數據, 通信形式有可能為以太網、Profibus 或Modbus 等方式。 這樣既保證了整套裝置控制系統(tǒng)的完整性,也使得每個單體設備的控制系統(tǒng)相對獨立,其中任何一部分控制系統(tǒng)故障都不會對整套裝置產生太大的影響,分散了控制系統(tǒng)風險。 圖1 所示為典型控制系統(tǒng)結構。
圖1 典型控制系統(tǒng)結構
西門子系列PLC 具有專門的系統(tǒng)功能塊可以操作系統(tǒng)時鐘,以S7-300 系列PLC 為例,調用系統(tǒng)功能塊SET_CLK(SFC0)可實現寫入PLC 時鐘的功能,調用系統(tǒng)功能塊READ_CLK(SFC1)可實現讀取PLC 時鐘的功能。 系統(tǒng)功能塊SFC0 和SFC1 寫入、 讀取的時間值需存儲為西門子PLC專用的時間數據格式DATA_AND_TIME,其數據結構定義和數據范圍如圖2 所示。
圖2 DATA_AND_TIME 數據結構和范圍
該數據類型共占用8 個字節(jié), 分別以BCD碼存儲年、月、日、小時、分鐘、秒、毫秒及星期等時間數據[1]。
筆者設計的時鐘同步方案主要通過調用SFC0 和SFC1, 并通過通信傳輸時鐘數據等方式實現控制系統(tǒng)內時鐘同步和初始時鐘設置。 該方案的時鐘傳遞示意圖如圖3 所示。
圖3 時鐘傳遞示意圖
需要選擇一臺PLC 下發(fā)時鐘數據,相當于時鐘主站,其余PLC 接收時鐘數據,相當于時鐘從站。 例如選擇圖1 中的設備A_PLC 下發(fā)時鐘數據,設備B_PLC 和設備C_PLC 接收時鐘數據。 在設備A_PLC 內定義時鐘下發(fā)數據塊DB1,DB1 共14 個字節(jié),數據格式如圖4 所示。
圖4 時鐘下發(fā)數據塊
其中0~7 字節(jié)定義為DATA_AND_TIME 類型,8~11 字節(jié)占位備用,12~13 字節(jié)存儲時鐘下發(fā)脈沖。
設備A_PLC 中調用定時中斷系統(tǒng)組織塊OB35,每100ms 執(zhí)行一次中斷程序。OB35 內編寫時鐘下發(fā)程序,主要包含以下3 部分內容:
a. 系統(tǒng)時鐘讀取, 調用系統(tǒng)功能塊READ_CLK(SFC1),讀取當前系統(tǒng)時鐘并寫入至DB1 內。
b. 定時下發(fā)脈沖, 以每5s 執(zhí)行一次時鐘同步為例,調用兩個接通延時定時器,輸出一個占空比為1/6 的方波信號,即每5s 一個高電平脈沖信號,高電平持續(xù)1s,此脈沖信號作為時鐘同步標志位寫入DB1 的第12 字節(jié)0 位。
c. 時鐘數據下發(fā), 根據PLC 之間的通信形式, 調用相應的系統(tǒng)功能塊進行通信發(fā)送數據。例如若所有PLC 基于以太網通信, 在PLC 硬件組態(tài)內設置以太網連接后,調用西門子以太網通信功能塊AG_SEND, 將DB1 內容分別通信傳輸給設備B_PLC 和設備C_PLC。
設備B_PLC 和設備C_PLC 接收時鐘數據,并設置系統(tǒng)時鐘,主要包含以下3 部分內容:
a. 定義時鐘接收數據塊DB2,數據格式同設備A_PLC 內的DB1。
b. 根據PLC 之間的通信形式,調用相應的系統(tǒng)功能塊進行通信接收數據,例如若基于以太網通信, 調用西門子以太網通信功能塊AG_RECV,將設備A_PLC 下發(fā)的時鐘數據接收并存儲在DB2 內。
c. 調 用 系 統(tǒng) 功 能 塊SET_CLK (SFC0),將DB2 內的時鐘數據寫入PLC 時鐘寄存器,寫入時鐘的標志位為DB2 的第12 字節(jié)0 位。
通過上述操作即可實現多臺PLC 之間的時鐘同步,并可根據實際需求,自行設置時鐘同步頻率。
每臺PLC 中定義時間讀取數據塊DB3,數據格式與DB1、DB2 相同。
在定時中斷系統(tǒng)組織塊OB35 內調用系統(tǒng)功能塊READ_CLK(SFC1),讀取當前系統(tǒng)時鐘并寫入DB3 內。
使用西門子操作面板內全局區(qū)域指針,使操作面板訪問PLC 內的DB3 數據塊。 詳細設置如圖5 所示。
圖5 全局區(qū)域指針設置
全局區(qū)域指針設置需要指定連接,訪問模式設置為絕對訪問,訪問地址指向PLC 內存儲時鐘數據的初始地址, 以本方案為例即DB3.DBW0,若僅需要使用年、月、日、時、分、秒這6 個時間數據,則訪問長度設置為6,若還需要毫秒、星期等時間數據,需要將訪問長度設置為8。采集模式選擇循環(huán)連續(xù),采集周期可由用戶自行設定,本方案設定為5s。
主站時鐘可以通過兩種方式設置,若沒有第三方時鐘源(如DCS),則在設備A 操作面板上人為定期設置;若PLC 與DCS 有通信,則可以從廠級DCS 通過通信設置時鐘。
2.4.1 操作面板人為設置主站時鐘
在設備A_PLC 內定義初始時鐘數據塊DB4,數據格式同DB1。
設備A_PLC 操作面板上定義6 個時間變量,數據長度均為1Byte,分別對應年、月、日、時、分、秒,變量地址指向DB4 的相應地址。 再定義一個時間設置標志位,作為時間下發(fā)指令位。
通過操作面板組態(tài)時鐘下發(fā)畫面,即可將設置好的時間數據下發(fā)到PLC 內。
2.4.2 DCS 設定主站時鐘
設備A_PLC 通過工業(yè)總線與廠級DCS 建立通信連接,DCS 將時鐘數據和時鐘設置標志位通信至 PLC,PLC 解析通信數據并轉換為DATA_AND_TIME 格式后即可后調用SET_CLK(SFC0)進行時鐘設置。該方式可以定期對主站時鐘進行校準,進而使所有從站時鐘自動與DCS 時鐘同步[2]。
筆者提出了一種多設備控制系統(tǒng)內部時鐘自動同步方案,在受限于硬件而無法使用NTP 和SIMATIC 模式進行時鐘同步時,該方案可作為一個很好的補充方案。 該方案基于通信,定時將控制系統(tǒng)內部的多臺PLC、操作面板等控制設備的時鐘同步,可以長期保證系統(tǒng)內部時鐘統(tǒng)一。 該方案是一種通用方案,不拘泥于通信形式,普遍適用于西門子工控產品,稍作修改即可通用于其他品牌的工控產品,具有較強的可推廣性。