王明成,王玉成,何 彥
1 前言
為改善柴油質量,甘肅玉門油田分公司煉化總廠擴建了柴油加氫裝置,但由于其危險性高,在控制系統時需考慮DCS與ESD(Emergency Shut Down)系統獨立設置。DCS用于對生產過程進行連續動態監控,使生產裝置在設定值下平穩運行;而ESD系統用于對生產過程的關鍵參數及過程工作狀況進行連續監視,檢測其相對于預定安全操作條件的變化,當所監測的過程變量超過其安全限定值時,ESD系統即取代DCS進行操作,按預置的安全邏輯順序動作,將過程設置成安全的非正常操作狀態,把發生惡性事故的可能性降到最低。柴油加氫裝置DCS選用ABB公司的Freelance2000系統,ESD選用Moore公司的QUADLOG系統。為便于DCS操作人員了解ESD聯鎖過程數據,有必要將ESD關鍵參數傳至DCS中進行顯示,這就涉及到DCS與ESD間數據通訊的問題。
2 Modbus從設備
在DCS與ESD通訊時,ESD作為Modbus的從設備,QUADLOG系統提供的Modbus從功能塊庫能將QUADLOG的控制器設置成Modbus的從設備,從設備提供數據響應Modbus主設備發出的請求。
Modbus從功能塊庫提供了MODBUS_S和SERIAL功能塊,Modbus主設備要能從Modbus從設備取得數據,MODBUS_S功能塊必須將這些數據映射成Modbus主設備能識別的寄存器(Registers)或線圈(Coils)地址,然后主設備通過Modbus協議讀取這些寄存器或線圈地址。把數字量如布爾值映射為線圈(地址從00001到09999)或輸入線圈(地址從10001到19999);把模擬量如實數、整數映射為輸入寄存器(地址從30001到39999)或保持寄存器(地址從40001到49999)。
2.1 SERIAL功能塊
該功能塊用來初始化Modbus通訊端口、激活從設備的串行端口,以便同Modbus網絡和Freelance2000進行通訊,該功能塊如圖1所示。
EN為TRUE,激活該功能塊并產生一個ID號,該ID號提供給串行通訊功能塊如MODBUS_S使用。激活后,SERIAL功能塊處理串行功能塊和連接到串口的主設備的請求。在SERIAL提供的參數表中,可設置串行通信的波特率、數據位、奇偶校驗、停止位、流量控制、超時和串口號。
圖1 SERIAL功能塊 圖2 MODBUS_S功能塊
2.2 MODBUS_S功能塊
該功能塊將QUADLOG系統的控制器設置成Modbus從設備,使用Modbus協議使QUADLOG系統同Modbus主設備Freelance2000交換數據,MODBUS_S功能塊如圖2所示。
EN為TRUE時,MODBUS_S響應Freelance2000的讀請求;ID是SERIAL功能塊產生的ID號,且該ID號可供同一個控制器中的多個MODBUS_S使用;ADDR是分配給控制器作為Modbus從設備的地址,Freelance2000發出的請求必須使用該地址才能同QUADLOG控制器進行正常通訊;START是Freelance2000讀取數據的起始地址;NUM是線圈或寄存器數量;DATA是存放實際數據的數組。
3 Modbus主設備
Freelance2000是Modbus主設備,采用AC800F現場控制器。同ESD的串行通訊由FI820接口模件完成,在FI820下必須設置一個Modbus主對象(MODM_DEV),在該對象中組態并完成相關設置以實現通訊。
在Modbus主功能塊庫中,提供了Read-coil、Read-register和轉換功能塊。由于在數據通訊時,Read-coil比Read-register簡單,故只介紹后兩者。
(1) Read-register功能塊
讀寄存器功能塊有三種類型:MODM_R1R,MODM_R8R,MODM_R16R,分別最大輸出1個、8個、16個報文數據。該功能塊通過Freelance2000的串行接口從ESD讀取數據并將讀來的數據轉換成Freelance2000 WORD數據類型。
(2) 轉換功能塊
由于實數在ESD中占用兩個寄存器地址,在通訊過程中,讀寄存器功能塊分別將其讀為尾數和指數,并轉換成實數格式。
4 Freelance2000與QUADLOG系統的數據通訊
4.1 QUADLOG系統軟件的實現
圖3 QUADLOG系統程序流程圖
在柴油加氫裝置中,DCS與ESD進行數據通訊的點數大約有200多個位號,為敘述方便,僅舉4個壓縮機軸振動位移傳給DCS進行顯示。QUADLOG系統程序實現如圖3所示。
MODBUS_S的ID輸入值來自SERIAL塊,ID為“2”表示SERIAL在控制器的串行端口2上進行通訊;控制器作為從設備的地址設為10;由于從QUADLOG系統的模擬卡件的內存讀取模擬數據,數據應放入保持寄存器,保持寄存器地址從40001~40009,所以START的起始地址設為40001;由于壓縮機軸振動位移是實數,占用兩個寄存器,故NUM為位移個數的兩倍,NUM等于8;SLVDATA是一維數組,維數為4,用來存放傳給DCS的4個位移數據,SLVDATA[1]……SLVDATA[4]分別存放DI_101……DI_104值。Freelance2000從QUADLOG系統讀取的寄存器地址范圍從40001到40008,DI_101值映射為寄存器地址40001和40002,DI_102值映射為寄存器地址40003和40004,DI_103值映射為寄存器地址40005和40006,DI_104值映射為寄存器地址40007和40008。
4.2 Freelance2000軟件的實現
圖4 Freelance2000工作原理框圖
使用Modbus協議,通過Freelance2000的串口讀取QUADLOG系統SLVDATA數組元素映射成的寄存器。在Freelance2000為讀取寄存器,將8輸出的讀寄存器功能塊放入組態區域。由于實數映射成兩個寄存器,因此R01讀的是40001寄存器,R02讀的是40002寄存器,要能把兩個寄存器還原為實數,還要把轉換功能塊放入組態區,R01連至轉換功能塊的指數管腳,R02連至轉換功能塊的尾數管腳,轉換功能塊將讀取來的報文數據轉換成對應的壓縮機軸振動位移數據,并在DCS上顯示出來,位號為DI_101。其它三個位移同理可得,全部8個輸出的連接如圖4所示。
在MODM_R8R的參數表中還要進行一些設置后,Freelance2000才能同ESD進行正常通訊。在Interface name中設該功能塊的MODM_DEV對象;在Slave addr中設ESD控制器的地址,此處為10;Function code設為讀保持寄存器;Start addr是MODBUS_S的START地址,地址為40001;Register count是MODM_R8R的最大輸出個數:8個。
4.3 QUADLOG系統與Freelance2000硬件結構
QUADLOG系統的控制器有兩個串口P1和P2。P1用于模塊間通訊,P2用于同DCS交換數據。FI820也有兩個串口Ser1和Ser2,均可用于同ESD進行通訊。但是,每個串口必須插入一個MODM_DEV對象,然后在該對象下組態,在對象的參數表中可進行參數設置:串行通信的波特率、停止位、奇偶校驗、幀和串口標準;DCS與ESD間串行通訊的標準有:RS232、RS422、RS485。RS232的最大通訊距離只有20m,而RS422和RS485的最大通訊距離可達1200m,最大通訊速率可達12M。由于該廠的DCS與ESD相距較遠,故選用RS485標準,ESD端必須使用RS232/RS485轉換器將RS232轉換成RS485,Freelance2000可軟件組態成RS485。DCS與ESD的硬件連接如圖5所示。
圖5 DCS與ESD的硬件連接
5 結語
本文僅介紹了DCS從ESD讀數據,利用相應功能塊同樣可實現DCS寫數據到ESD,DCS將實數或整數轉換成尾數和指數,傳至Write register功能塊的兩個相鄰的wi和wi+1(i為奇數)。如果通訊的數據是數字量,就更為簡單,無需利用轉換功能塊進行轉換,把數值量映射成線圈地址即可,一個數字量只占用一個線圈地址。