將故障分類:
PLC后備電池狀態轉存至23通道:
(2)上位機程序:主要負責與PLC進行串口通信,讀取PLC內部通道狀態加以分析,在主界面上實現故障報警、顯示、故障點信息查詢、故障信息記錄查詢以及節點信息修改查詢等功能。上位機PC與PLC通訊時,按應答方式進行,由上位計算機發給PLC一組ASCⅡ碼字符數據,這一數據稱為命令塊。PLC收到命令塊后經分析認為命令正常,則按照命令進行操作,將操作結果返回給上位計算機,PLC返回給上位計算機的這一組數據稱為響應塊。若PLC收到命令后經分析確認命令不正常,則返回給上位計算機錯誤命令響應塊。上位計算機和PLC通訊時,PLC是被動的,必須由上位計算機給PLC發出命令塊,PLC作出響應發還給上位計算機響應塊。
本程序采用多重通訊方式,多重通訊時首幀以單元號(即HOST LINK的機號)開始,然后為報頭、報文、校驗碼、結束符(只有一幀時)或分隔符(多幀時)。中間幀以報文開始,然后為校驗碼、分隔符,中間幀報文每幀最多125個字符。尾幀以報文開始,然后為校驗碼、結束符,尾幀報文最多124個字符。
校驗碼FCS(Frame Check Sequence)是8位(bit)二進制數轉換成的2位字符。這8位二進制數是一幀中校驗碼前的所有字符的ASCⅡ碼按位異或的結果。轉換成字符時按照2位十六進制數字轉換成對應的數字字符。
PLC收到上位計算機發出的命令塊后,經分析操作返回給上位計算機響應塊,在響應塊中含有響應碼。如果PLC正常完成上位計算機的命令,則響應碼為00,否則,響應碼中含有出錯信息。
(3)上位機PC與PLC的串口通信程序設計。
Timer2的值設為2000,即每隔2s上位機PC向PLC發送一次讀取命令,讀取信息。
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發送命令
a(3)=MSComm1.Input
a(4)=Mid$(a(3),6,2) ’響應碼
Call Message(a(4)) ’調用響應碼的錯
誤信息
If errortime > 3 Then
Timer2.Enabled=False
intr=MsgBox(“通訊錯誤,是否退出檢查連接?”,vbYesNoCancel+vbExclamation,“通訊連接中”)
If intr=vbYes Then
………
Else
………
End If
End If
’如果通訊連接正常則讀取數據:
[NextPage]
a(6)=Mid$(a(3),24,2) ’響應塊中的校驗碼
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內部通道數據
Else
MsgBox (“校驗碼不正確”)
………
End If
(4)校驗碼計算函數設計
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
將響應碼中的數據轉換為二進制數據:
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
4 監控程序完成的功能
4.1 監控程序功能
故障信息及節點查詢參見圖4。PLC電池故障顯示參見圖5。數據庫將記錄系統運行狀態,記錄故障發生的時間及相關信息,故障修復的時間及相關信息并提供查詢功能參見圖7?梢圆榭粗鹘缑嫔衔惶査鶎腜LC位、名稱、觸點狀態等信息以便于故障分析,參見圖8。系統運行總狀態指示如圖6所示。
圖 4 故障點信息顯示
[NextPage]
圖 5 PLC后備電池故障顯示
圖 6 系統運行狀態指示
圖 7 數據庫查詢
圖 8 位號對應信息查詢
5 結束語
本系統是為齊魯石化氯堿廠生產車間設計的電路故障報警系統,現已投入運行。在實際應用中提供了真實可靠的生產實時數據,運行情況良好。為企業減少了人力資源浪費,化工廠生產車間環境較差,改善了工人的工作環境降低了工作強度,并實現了集中監控。本系統的可擴展性也很好的適應了車間改良的需求,可根據用戶的要求增加監控點并將本車間故障分類輸出到上一級監控站,受到了用戶的好評。