1 引言
石油化工生產(chǎn)中plc常常用于大機組的聯(lián)鎖與控制。對于機組的振動、位移等參數(shù),點數(shù)較少時,可以采用變送器、傳感器轉(zhuǎn)換成4-20ma信號送入plc,實現(xiàn)聯(lián)鎖控制,但對鍵相、差脹等特殊測量參數(shù)或振動、位移等測量參數(shù)點數(shù)較多時,信號轉(zhuǎn)換的難度大、成本高,使用傳統(tǒng)的框架式機械保護系統(tǒng)反而會經(jīng)濟、有效。美國bently公司3500系統(tǒng)是傳統(tǒng)的框架式機械保護系統(tǒng)之一,它可以運行于各種冗余級別,包括雙電源供電和更高要求下的三重模塊冗余(tmr)監(jiān)測器組態(tài)。每個i/o卡可以對 4-6個點的信號進行轉(zhuǎn)換處理,并通過編程的方法實現(xiàn)聯(lián)鎖邏輯。茂名乙烯廠在2006年7月建成投產(chǎn)的2#丁二烯裝置的壓縮機聯(lián)鎖、控制中,采用德國西門子公司的s7-400h系統(tǒng)實現(xiàn)總的聯(lián)鎖和過程控制,外殼振動、軸瓦溫度的聯(lián)鎖主要在bently3500中實現(xiàn)。為了實現(xiàn)數(shù)據(jù)共享和聯(lián)鎖冗余,需要將bently3500中的模擬信號和報警、聯(lián)鎖信號以通訊方式傳輸?shù)絪7-400h。本文以2#丁二烯壓縮機控制系統(tǒng)為例,描述了simatic s7-400h與bently 3500之間modbus rtu協(xié)議通訊實現(xiàn)的過程。
2 控制系統(tǒng)簡介
s7-400是大型可編程序控制器,由電源模板(ps)、中央處理單元(cpu)、信號模板(sm)、通信處理器(cp)等部分組成。s7-400h系統(tǒng)是s7-400的冗余系統(tǒng),通過將發(fā)生中斷的單元自動切換到備用單元的方法實現(xiàn)系統(tǒng)的不中斷工作。它可以通過本地機架與s7-400的i/o模件、通訊網(wǎng)關(guān)連接,也可以通過基于profibus-dp總線的et200m分布式i/o與s7-300的i/o模塊、通訊網(wǎng)關(guān)連接,以實現(xiàn)過程控制、與其它控制系統(tǒng)通訊。
3500機械保護系統(tǒng)是一個全功能監(jiān)測保護系統(tǒng),其設(shè)計應(yīng)用了最新微處理器技術(shù)。由1塊或2塊電源模塊(3500/15)、框架接口模塊(3500/20)、溫度監(jiān)測器模塊(3500/60)、位移、速度、加速度監(jiān)測模塊(3500/42)、繼電器模塊(3500/32)、通信網(wǎng)關(guān)(3500/92)等組成。3500/92通信網(wǎng)關(guān)是3500系統(tǒng)主要通信通道,是與其它系統(tǒng)通訊的橋梁。
3 通訊方案選擇
通訊實現(xiàn)的目標(biāo)是將3500中的15個溫度點和6個壓縮機外殼振動點的值以及其報警、聯(lián)鎖狀態(tài)送到s7-400h,由于通訊的數(shù)據(jù)量不大,選用modbus rtu協(xié)議。
s7-400h與3500之間通訊主要有兩種方式:一是在s7-400h的本地機架上安裝一個cp(通訊處理器)。s7-400h有兩個冗余子系統(tǒng),cp安裝在其中一個子系統(tǒng)上,兩個冗余的子系統(tǒng)都從該cp獲得數(shù)據(jù),并在兩個相同的用戶程序中進行計算。因此,就冗余系統(tǒng)模式中的信息處理而論,cp是連接到主cpu 還是熱備cpu并無多大關(guān)系。缺點是,當(dāng)子系統(tǒng)出現(xiàn)故障時,該子系統(tǒng)機架上的cp不再可用。另一種方式是,將cp安裝在切換式i/o(et200m 分布式 i/o)上,該設(shè)備有一個有源板總線和一個冗余profibus-dp 從站接口模板im153-2,每個s7-400h子系統(tǒng)與et200m兩個dp從接口中的一個相連。這樣,某個s7-400h冗余子系統(tǒng)故障,cp會切換到它的冗余伙伴,可靠性高,而且經(jīng)濟。我們選用了該方案,通訊處理器采用cp341。
4 通訊系統(tǒng)硬件配置與接線
s7-400h的通訊處理器是cp341,在使用modbus rtu協(xié)議時需要一個硬件狗(dongle)。3500的通訊處理器是3500/92。由于它們處于同一柜內(nèi),距離在15米以內(nèi),傳輸接口形式選用了rs-232 。rs-232采用9 pin引腳,通常只用到引腳2、3、5,即接收數(shù)據(jù)、發(fā)送數(shù)據(jù)和信號地,接口連接如圖1所示。
圖1 傳輸接口的連接
3 軟件實現(xiàn)
modbus rtu格式通信協(xié)議是以主從方式進行數(shù)據(jù)傳輸?shù)?,在傳輸?shù)倪^程中主站是主動方,即主站發(fā)送數(shù)據(jù)請求報文到從站,從站返回響應(yīng)報文。modbus系統(tǒng)間的數(shù)據(jù)交換是通過功能碼(function code)來控制的,有些功能碼是對位操作的,通訊的用戶數(shù)據(jù)是以位(bit)為單位的:
fc01 讀輸出位的狀態(tài)
fc02 讀輸入位的狀態(tài)
fc05 強制單一輸出位
fc15 強制多個輸出位
有些功能碼是對16位寄存器操作的,通訊的用戶數(shù)據(jù)是以字(word)為單位的:
fc03 讀輸出寄存器
fc04 讀輸入寄存器
fc06 寫單一輸出寄存器
fc16 寫多個輸出寄存器[1]
cp341與3500/92的通訊,cp341做主站,3500/92做從站,主站、從站都需要設(shè)置波特率、停止位、校驗位。這里設(shè)置波特率為9600bit/s,一位停止位,無奇偶校驗。cp341 modbus協(xié)議通訊是通過simatic step7編程軟件,并利用庫函數(shù)fb8(p-snd-rk)和fb7(p-rcv-rk)功能塊進行發(fā)送和讀取數(shù)據(jù)操作的。它們均通過組態(tài)數(shù)據(jù)庫的方法進行發(fā)送源信息和接收目的數(shù)據(jù)的信息,請求信息時,從源數(shù)據(jù)庫讀取相應(yīng)字段后發(fā)送,接收信息是根據(jù)發(fā)送的內(nèi)容進行對應(yīng)字段數(shù)據(jù)的存儲。報文格式存放在db42中前6個字節(jié)中,采用語句表語言編寫程序,如下:
l 2
t db42.dbb0 //從站地址
l 3
t db42.dbb1 //使用fc03功能碼
l 5000
t db42.dbw2 //10進制的5000在bently 3500中是modbus寄存器組態(tài)區(qū)域的起始地址
l 63
t db42.dbw4 //63是要從從站讀16-bit字的數(shù)量
由于3500/92modbus rs-232/422 i/o模件通常響應(yīng)時間少于0.5秒,因此,0.5秒發(fā)送一次對從站的數(shù)據(jù)請求:
an m30.0
an m120.7 //其為1時發(fā)出讀的命令
l s5t#500ms
sd t30 //對bently 3500請求數(shù)據(jù)的速率
a m0.0
r t30
a t30
= m30.0
a m30.0
s m120.7
如果正在發(fā)送請求、發(fā)送完成或發(fā)送錯誤,就不能發(fā)出向從站的讀數(shù)據(jù)請求命令:
a m120.7
an db40.dbx 0.0 //發(fā)送請求
an db40.dbx 0.4 //發(fā)送完成
an db40.dbx 0.5 //發(fā)送錯誤
r m120.7
s db40.dbx 0.0 //向bently 3500發(fā)出發(fā)送請求命令
發(fā)送請求必須是邊緣發(fā)出的:
a(
o db40.dbx 0.4
o db40.dbx 0.5
)
a db40.dbx 0.0
r db40.dbx 0.4
調(diào)用cp341的發(fā)送功能塊fb8:
call fb8,db50
sf :=‘s’
req := db40.dbx 0.0
r:= db40.dbx 0.1
laddr:=624 //cp341的模塊地址
db_no:=42 //發(fā)送數(shù)據(jù)塊=db42
dbb_no:=0 //db42中的起始地址
len :=6 //6 bytes
r_typ:=‘x’
done:=db40.dbx 0.4
error:=db40.dbx 0.5
status:=db40.dbw12
接收從站響應(yīng)數(shù)據(jù):
set
= db41.dbx 0.0 //允許cp341接收數(shù)據(jù)
call fb7 ,db70
en_r:= db41.dbx 0.0
laddr:=624
db_no:=43 //接收用戶數(shù)據(jù)的數(shù)據(jù)塊
dbb_no:=0
ndr:=db41.dbx 0.4
error:=db41.dbx 0.5
len:=db41.dbw10
status:=db41.dbw12
3500/92作為從站只是發(fā)送數(shù)據(jù),所以設(shè)置很簡單。從3500傳輸數(shù)據(jù)到plc,可以使用固定的協(xié)議地址,也可以使用可組態(tài)寄存器。可組態(tài)寄存器modbus地址范圍是45001-45500(浮點:46001-46000)。由3500手冊可知,通道的每種狀態(tài)用一個bit表示,全部通道狀態(tài)可用一個word表示,見表1。對于modbus協(xié)議,每一種功能碼控制一個信息幀,即讀位、讀字要在兩個信息幀中完成。為了提高通訊速度,通道的狀態(tài)作為一個字與模擬量在同一個幀中傳輸,到plc后再將位取出。我們選用可組態(tài)寄存器作為modbus協(xié)議地址。
3500/92的modbus通訊組態(tài)是通過rack configuration software實現(xiàn)的。進入communication gateway界面后,點擊configue按鈕進入congigurable registers窗口,選擇要傳送的數(shù)據(jù),將其拖入可組態(tài)的寄存器即可,見圖2。
圖2 3500/92 modbus寄存器組態(tài)
4 結(jié)束語
通過采用modbus rtu通信協(xié)議,實現(xiàn)了cp341與3500/92之間數(shù)據(jù)交換,高效地實現(xiàn)了西門子s7-400h可編程控制器與bently 3500的通信,實現(xiàn)了關(guān)鍵聯(lián)鎖的冗余,方便了對現(xiàn)場設(shè)備的控制和操作,避免大量的變送器的使用,降低了成本。
作者簡介
李 楨(1970-) 男 碩士 高級工程師 儀表主管工程師,煉油與化工自動化應(yīng)用工程方向。
參考文獻
[1]崔堅.西門子工業(yè)網(wǎng)絡(luò)通信指南(下冊).北京:機械工業(yè)出版社,2006