摘 要:供電系統(tǒng)是工廠的重要組成部分,對其可能發(fā)生的故障及生產(chǎn)故障進(jìn)行及時的監(jiān)控和報警是生產(chǎn)運作順利進(jìn)行的有力保障。本文介紹了歐姆龍PLC和PC上位機(jī)在石油化工廠的電路監(jiān)控系統(tǒng)中的應(yīng)用,詳細(xì)介紹了該系統(tǒng)的硬件、軟件設(shè)計,以及通訊連接。
關(guān)鍵詞:PLC、PC上位機(jī)、串口通信
Abstract:This paper setting out from an actual problem introduces a circuit-alarm monitoring system of petrochemical factory based on PLC and PC. It introduces the system’s design of hardware, software and the connection of network in detail.
KEYWORDS:PLC、PC、Serial communication
一、引言
在復(fù)雜的電網(wǎng)供電系統(tǒng)中,傳統(tǒng)的故障報警一般采用報警烽鳴器、故障指示燈等硬件方式報警。這種方式存在很多缺點,例如如果電網(wǎng)分布分散,則故障報警點也分散,需要安排一定人力巡邏檢查,造成人力資源浪費,且報警、維修不及時;故障報警點太多則需要大量報警器,且造成線路復(fù)雜化;硬件報警得到的故障信息太少等等。隨著計算機(jī)和自動化技術(shù)在工廠中的大量應(yīng)用,可以將故障信息通過PLC進(jìn)行初步監(jiān)控,然后再由PLC上傳到計算機(jī)中,由計算機(jī)處理故障信息,進(jìn)行報警、記錄、顯示故障信息。具有可進(jìn)行集中監(jiān)控,節(jié)省人力,故障信息直觀、豐富,便于分析等優(yōu)點。
二、系統(tǒng)介紹
系統(tǒng)由PLC檢測48個故障繼電器的狀態(tài)變化,上位機(jī)PC定時查詢并讀取PLC內(nèi)部4個通道61位的狀態(tài)信息(包括48個輸入點和13個歸類輸出點),進(jìn)行分析并用數(shù)據(jù)庫加以管理和記錄。程序采用VisualBasic6.0開發(fā),數(shù)據(jù)庫采用Microsoft的Access2003。
每個故障點按照對應(yīng)的位置標(biāo)識于車間電路分布圖上,如圖1所示。程序運行進(jìn)入監(jiān)控狀態(tài)以后,PC將檢測與PLC的通信連接。如果通訊連接正常,程序?qū)z測現(xiàn)場信號變化。如果信號由正常變?yōu)閳缶?,對?yīng)指示燈及總狀態(tài)指示燈將閃爍并聲音報警,右上方顯示故障信息,運行狀態(tài)信息及故障信息將存入數(shù)據(jù)庫。單擊閃爍指示燈,將停止閃爍,并顯示當(dāng)前狀態(tài),報警為紅色,正常為淺黃色;如果信號由報警變正常,對應(yīng)指示燈停止閃爍,運行狀態(tài)信息及故障修復(fù)信息將存入數(shù)據(jù)庫。當(dāng)前狀態(tài)由紅色變?yōu)闇\黃色。如果要查看各個節(jié)點信息,則單擊指示燈,右上方圖框會顯示該節(jié)點的位號,對應(yīng)PLC位以及該報警點名稱和觸點狀態(tài)。右上方文本框顯示當(dāng)前系統(tǒng)總運行狀態(tài),有相應(yīng)的指示燈標(biāo)示,分為“正?!?和“報警”兩種狀態(tài),紅色為報警綠色為正常。
[align=center]

圖1 報警監(jiān)控畫面(正常狀態(tài))[/align]
報警時畫面如圖2所示。
[align=center]

圖2 報警監(jiān)控畫面(報警狀態(tài))[/align]
三、監(jiān)控系統(tǒng)構(gòu)成
1.系統(tǒng)的結(jié)構(gòu)
系統(tǒng)配置如圖3所示。本系統(tǒng)主要由上位機(jī)PC和下位機(jī)PLC組成,監(jiān)控48個故障點并將其分為13大類,然后將故障信息顯示在計算機(jī)屏幕上。PLC使用的是歐姆龍的C200H,采用3個輸入模塊,一個輸出模塊,一個通訊模塊。將故障繼電器兩端引出作為PLC的干接點,通過輸入模塊將故障信息轉(zhuǎn)化為開關(guān)量輸入PLC,并由PLC對故障進(jìn)行分類,然后PLC通過RS232-422轉(zhuǎn)換器和RS232C串口與上位機(jī)通信,由上位機(jī)讀取并處理故障信息進(jìn)行監(jiān)控報警。
[align=center]

圖 3 系統(tǒng)結(jié)構(gòu)[/align]
2.軟件設(shè)計
本系統(tǒng)PLC的編程使用CX-ProgrammerV3.1編寫,實現(xiàn)PLC對故障繼電器的初步監(jiān)控;上位機(jī)監(jiān)控使用VisualBasic6.0編寫主監(jiān)控程序,實現(xiàn)故障實時監(jiān)控報警、顯示、記錄、故障點信息查詢修改以及運行狀態(tài)查詢等功能。
?。?)PLC程序:該程序包括三個輸入模塊和一個輸出模塊,用于對48個故障信息的采集和分類,并對PLC后備電池狀態(tài)監(jiān)控。
將故障信息轉(zhuǎn)存到20通道:
將故障分類:
PLC后備電池狀態(tài)轉(zhuǎn)存至23通道:

?。?)上位機(jī)程序:主要負(fù)責(zé)與PLC進(jìn)行串口通信,讀取PLC內(nèi)部通道狀態(tài)加以分析,在主界面上實現(xiàn)故障報警、顯示、故障點信息查詢、故障信息記錄查詢以及節(jié)點信息修改查詢等功能。
上位機(jī)PC與PLC通訊時,按應(yīng)答方式進(jìn)行,由上位計算機(jī)發(fā)給PLC一組ASCⅡ碼字符數(shù)據(jù),這一數(shù)據(jù)稱為命令塊。PLC收到命令塊后經(jīng)分析認(rèn)為命令正常,則按照命令進(jìn)行操作,將操作結(jié)果返回給上位計算機(jī),PLC返回給上位計算機(jī)的這一組數(shù)據(jù)稱為響應(yīng)塊。若PLC收到命令后經(jīng)分析確認(rèn)命令不正常,則返回給上位計算機(jī)錯誤命令響應(yīng)塊。上位計算機(jī)和PLC通訊時,PLC是被動的,必須由上位計算機(jī)給PLC發(fā)出命令塊,PLC作出響應(yīng)發(fā)還給上位計算機(jī)響應(yīng)塊。
本程序采用多重通訊方式,多重通訊時首幀以單元號(即HOST LINK的機(jī)號)開始,然后為報頭、報文、校驗碼、結(jié)束符(只有一幀時)或分隔符(多幀時)。中間幀以報文開始,然后為校驗碼、分隔符,中間幀報文每幀最多125個字符。尾幀以報文開始,然后為校驗碼、結(jié)束符,尾幀報文最多124個字符。
校驗碼FCS(Frame Check Sequence)是8位(bit)二進(jìn)制數(shù)轉(zhuǎn)換成的2位字符。這8位二進(jìn)制數(shù)是一幀中校驗碼前的所有字符的ASCⅡ碼按位異或的結(jié)果。轉(zhuǎn)換成字符時按照2位十六進(jìn)制數(shù)字轉(zhuǎn)換成對應(yīng)的數(shù)字字符。
PLC收到上位計算機(jī)發(fā)出的命令塊后,經(jīng)分析操作返回給上位計算機(jī)響應(yīng)塊,在響應(yīng)塊中含有響應(yīng)碼。如果PLC正常完成上位計算機(jī)的命令,則響應(yīng)碼為00,否則,響應(yīng)碼中含有出錯信息。
上位機(jī)PC與PLC的串口通信部分:
Timer2的值設(shè)為2000,即每隔2s上位機(jī)PC向PLC發(fā)送一次讀取命令,讀取信息。
Private Sub Timer2_Timer()
Dim a(10) As String
a(0) = "@00RR00200004" ’單元號和報頭報文
a(1) = FCS(a(0)) ’命令格式中的校驗位
a(2) = a(0) + a(1) + "*" + Chr$(13) ’命令碼
MSComm1.Output = a(2) ’向PLC發(fā)送命令
a(3) = MSComm1.Input
a(4) = Mid$(a(3), 6, 2) ’響應(yīng)碼
Call Message(a(4)) ’調(diào)用響應(yīng)碼的錯誤信息
If errortime > 3 Then
Timer2.Enabled = False
intr = MsgBox(“通訊錯誤,是否退出檢查連接?”, vbYesNoCancel + vbExclamation, “通訊連接中”)
If intr = vbYes Then
。。。。。。。。。
Else
。。。。。。。。。
End If
End If
’如果通訊連接正常則讀取數(shù)據(jù):
a(6) = Mid$(a(3), 24, 2) ’響應(yīng)塊中的校驗碼
a(7) = Mid$(a(3), 1, 23)
a(8) = FCS(a(7)) ’計算校驗碼
If a(8) = a(6) Then ’比較校驗碼是否相同
a(9) = Mid$(a(3), 8, 16)
a(10) = Hex2Bin$(a(9))
z = a(10) ’得到PLC內(nèi)部通道數(shù)據(jù)
Else
MsgBox (“校驗碼不正確”)
。。。。。。。
End If
校驗碼計算函數(shù):
Function FCS(ByVal inputstr As String) As String
Dim slen, n, xorresult As Integer
Dim tempfcs As String
slen = Len(inputstr)
xorresult = 0
For n = 1 To slen
xorresult = xorresult Xor Asc(Mid$(inputstr, n, 1))
Next n
tempfcs = Hex$(xorresult)
If Len(tempfcs) = 1 Then
tempfcs = "0" + tempfcs
End If
FCS = tempfcs
End Function
將響應(yīng)碼中的數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制數(shù)據(jù):
Function Hex2Bin$(HexValue$)
Const BinTbl = "0000000100100011010001010110011110001001101010111100110111101111"
Dim X, Work$
Work$ = ""
For X = 1 To Len(HexValue$)
Work$ = Work$ + Mid$(BinTbl, Val("&h" + Mid$(HexValue$, X, 1)) * 4 + 1, 4)
Next
Hex2Bin$ = Work$
End Function
監(jiān)控程序功能:故障信息及節(jié)點查詢?nèi)鐖D4;PLC電池故障顯示如圖5;數(shù)據(jù)庫將記錄系統(tǒng)運行狀態(tài),記錄故障發(fā)生的時間及相關(guān)信息,故障修復(fù)的時間及相關(guān)信息并提供查詢功能如圖7;可以查看主界面上位號所對應(yīng)的PLC位、名稱、觸點狀態(tài)等信息以便于故障分析,如圖8;系統(tǒng)運行總狀態(tài)指示如圖6所示。

[align=center]

圖 6 系統(tǒng)運行狀態(tài)指示

圖 7 數(shù)據(jù)庫查詢

圖 8 位號對應(yīng)信息查詢[/align]
四、監(jiān)控程序完成的功能
1.故障指示:有報警時,對應(yīng)指示燈及總狀態(tài)指示燈將閃爍并聲音報警,右上方顯示故障信息,單擊閃爍指示燈,將停止閃爍,并顯示當(dāng)前狀態(tài),報警為紅色,正常為淺黃色;如果故障修復(fù),則對應(yīng)指示燈停止閃爍,當(dāng)前狀態(tài)由紅色變?yōu)闇\黃色。單擊指示燈,則可以查看各個節(jié)點信息,右上方圖框會顯示該節(jié)點的位號,對應(yīng)PLC位以及該報警點名稱和觸點狀態(tài)。右上方文本框有相應(yīng)的指示燈顯示當(dāng)前系統(tǒng)總運行狀態(tài),紅色為報警綠色為正常。
2.歷史記錄:數(shù)據(jù)庫記錄系統(tǒng)運行狀態(tài),記錄報警的位號、名稱、PLC位、觸點狀態(tài)、以及報警時間等內(nèi)容,當(dāng)故障解除后同樣記錄解除的位號、名稱、PLC位、觸點狀態(tài)、以及故障解除時間。數(shù)據(jù)庫中有位號名稱對應(yīng)表,以方便查詢每個點的對應(yīng)關(guān)系。
3.通訊連接:用于重新連接上位機(jī)和下位機(jī)間的通訊,當(dāng)單擊工具欄中連接按鈕時,程序檢測通信連接。
4.聲音測試:用于測試聲音報警是否正常。若正常,點擊此按鈕時系統(tǒng)發(fā)出報警聲音。
5.消音:用于消除系統(tǒng)報警時的聲音,不影響指示燈閃爍報警。
五、結(jié)束語
本系統(tǒng)是為齊魯石化氯堿廠生產(chǎn)車間設(shè)計的電路故障報警系統(tǒng),現(xiàn)已投入運行。在實際應(yīng)用中提供了真實可靠的生產(chǎn)實時數(shù)據(jù),運行情況良好。為企業(yè)減少了人力資源浪費,化工廠生產(chǎn)車間環(huán)境較差,改善了工人的工作環(huán)境降低了工作強(qiáng)度,并實現(xiàn)了集中監(jiān)控。本系統(tǒng)的可擴(kuò)展性也很好的適應(yīng)了車間改良的需求,可根據(jù)用戶的要求增加監(jiān)控點并將本車間故障分類輸出到上一級監(jiān)控站,受到了用戶的好評。
參考文獻(xiàn):
1.徐德 孫同景 《可編程序控制器(PLC)應(yīng)用技術(shù)》 山東科技出版社 2000
2.李勇帆 《Visual Basic 6.0程序設(shè)計與應(yīng)用》 人民郵電出版社 2006
3.李長林 《Visual Basic串口通信技術(shù)與典型實例》 清華大學(xué)出版社 2006