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