1 引 言
常規(guī)的通過PC機,利用PC對工藝對象的控制,大多都是在具有組態(tài)軟件或通訊模塊的情況下進行,但是對于一些小型的控制系統(tǒng)而言,由于受到簡單實用和成本低的原則限制,不適合使用常規(guī)方法。
為了滿足小型系統(tǒng)中帶上位機結(jié)合PLC實現(xiàn)自動控制的低成本的要求,把控制放在PLC中運行,利用Visual Basic結(jié)合PLC中的通信語言進行編程,實現(xiàn)上位機與PLC之間,在無通訊模塊情況下的數(shù)據(jù)信息的雙向通信傳輸,很好地解決了工程應(yīng)用中的一些實際問題。
2 控制系統(tǒng)的組成
2.1 工藝對象的介紹
由1個具有一定氣阻和氣容所構(gòu)成的壓力貯罐裝置是1個一階對象,而由3個一階特性的壓力貯罐串聯(lián),就組成了一個三階壓力對象裝置,在工程中通常認為是高階系統(tǒng)。如圖1所示,主流量經(jīng)調(diào)節(jié)閥、轉(zhuǎn)子流量計再依次進入1#、2#、3#貯罐中,從而分別實現(xiàn)一階、二階、三階對象,對象的時間常數(shù)分別由R1C1、R2C2、R3C3來決定(R為氣阻,C為氣容),并可由R1、R2、R3來改變對象的特征。而對對象產(chǎn)生干擾,即為進入各個貯罐的干擾源。
2.2 控制系統(tǒng)方案實施
在圖1中,3#罐的壓力是否穩(wěn)定,將直接反映出輸出介質(zhì)壓力的質(zhì)量,故以3#罐的壓力作為被控變量。如果以3#罐的壓力為測量值設(shè)計一單回路控制系統(tǒng),也能達到一定的自動控制的目的。由于干擾不僅從3#罐底部進入,而且也會從前面兩個罐子的底部進入。為了使自動調(diào)節(jié)具有較強的克服干擾的能力,設(shè)計了一個串級控制系統(tǒng)。以3#罐壓力為主被控變量,以干擾變化比較大且比較平凡的1#罐壓力為副被控變量。在此串級控制方案中,副調(diào)節(jié)器可以改善主調(diào)節(jié)器的廣義對象特性,同時副回路能自動克服對象的非線性影響,能夠按照主回路的要求,更精確地控制操縱變量的質(zhì)量流和能量流。具體方案如圖1所示。
在實施過程中,采用S7-226PLC作為下位機,以1臺PC機作為上位機進行監(jiān)控和管理。下位機的任務(wù)是CPU配合EM235模塊進行模擬量的輸入/輸出工作,能檢測3個壓力罐的壓力測量值,送CPU進行處理。能分別在手動V 自動情況下輸出3個壓力罐的6個高、低報警信號和最終的調(diào)節(jié)器輸出,并把輸出信號經(jīng)過隔離和轉(zhuǎn)換送到調(diào)節(jié)閥,最終達到控制流量的目的;同時與上位機進行數(shù)據(jù)傳輸,把測量值-輸出值-報警值及所處運行狀態(tài)輸入上位機。上位機除了接受下位機來的信號外,也向PLC輸出一些控制參數(shù),如PID調(diào)節(jié)參數(shù)的修改以及給定值的設(shè)定,動態(tài)地在流量圖上顯示變量的變化,并附有調(diào)節(jié)界面和各參數(shù)的變化曲線。
3 上、下位機的通信
3.1 兩者之間的物理連接
S7-226CPU是西門子SIMATIC S7-200系列中的一種,其內(nèi)部集成的PPI接口為用戶提供了強大的通信功能,PPI接口物理特性為RS485,可在多種模式下工作,其中自由口通信方式是S7-200PLC的一個很有特色的功能,它可以與任何協(xié)議公開的其它設(shè)備、控制器等進行通信。上位機串口符合RS-232標準協(xié)議,為了實現(xiàn)兩者的通信必須進行協(xié)議轉(zhuǎn)換,可以利用PC/PPI電纜連接兩者,并同時完成協(xié)議轉(zhuǎn)換的任務(wù)。
3.2 的通信
S7-200CPU支持多種通信方式,其系統(tǒng)協(xié)議為點對點接口(PPI),基于開放系統(tǒng)互聯(lián)(OSI)7層通訊結(jié)構(gòu)模型。PPI協(xié)議是一種主6 從協(xié)議,采用RS-485信號標準的令牌總線通信方式,通訊速率可在9600~19200bit之間選擇。PPI協(xié)議是基于字符的,使用11位字符、1位起始位、8位數(shù)據(jù)位、1位奇偶校驗位、1位結(jié)束位。通訊幀依賴起始和結(jié)束字符。S7-200CPU的通訊端口采用RS-485信號標準的9針D型連接口,PC/PPI電纜把S7-200CPU同個人計算機連接起來,S7-200的這個通訊端口可由LAD或STL程序來指定通訊方式,本程序中所指定的該端口的操作模式就是所謂自由端口模式。在自由端口模式下,用戶可用程序來定義波特率、每個字符位數(shù)、奇偶檢驗和通訊協(xié)議。
3.3 基于VB6.0的串行通信
VB6.0把與串行通信有關(guān)的操作都封裝在MSComm控件里,它是一種事件驅(qū)動的對象。VB同時也為這個控制提供了標準的事件處理函數(shù)、過程,并通過屬性的方法提供了通信接口的參數(shù)設(shè)置,從而解決了串行通信的問題。
涉及到的MSComm控件的主要屬性如下:
CommPort屬性用于設(shè)置或返回通信連接端口號碼。程序必須指定所要使用的串行端口的口號。Windows系統(tǒng)會使用所設(shè)置的通信端口與外界進行通信,程序也可以借助此屬性返回所使用的連接端口號。
Settings屬性用于設(shè)置初始化參數(shù),以字符串的形式設(shè)置或返回傳輸速率、校驗位、數(shù)據(jù)位、停止位等4個參數(shù)。其默認值是:“9600,N,8,1”,表示所使用的通信端口是以9600位/s的速度傳輸,不作校驗位檢查,每個數(shù)據(jù)單元是8位,而停止位是1位。需要注意的是:這4項必須按照上述順序,不可前后對調(diào),字母“N”可以大小寫,而且使用RS-232通信的雙方,Settings必須完全一樣,彼此才能順利的溝通。
PortOpen屬性用于設(shè)置或返回通信連接端口的狀態(tài)。使用前必須將要使用的串行接口先行打開,而在使用完畢后,也必須執(zhí)行關(guān)閉操作。串行通信端口各項功能都是在PortOpen的True與Fause之間完成的。
Input屬性用于從輸入緩存區(qū)返回并刪除字符,程序靠這個命令將對方傳到輸入緩存區(qū)中的字符讀出來,并清除緩存區(qū)中已被讀取的字符。
Output屬性用于將一個字符串寫入輸出緩存區(qū),當程序向?qū)Ψ絺鬏斪址畷r,可使用此命令將字符串寫入輸出緩存區(qū)中。
Rthreshold屬性用于設(shè)置或返回引發(fā)接收事件的字符數(shù),當緩存區(qū)達到所設(shè)置的字符數(shù)時,將會引發(fā)Ohcomm事件中的接收事件,它是引發(fā)接收事件的“門閥”,默認值為“0”,表示無論緩存區(qū)中有多少字符均不引發(fā)接收事件。
使用MSComm控件的方式表面上看來要比使用直接調(diào)用API函數(shù)來得復(fù)雜,但實際上使用MSComm控件可以省去不少底層程序的編寫,因此實際上要比API函數(shù)簡單多了。
3.4 接口編程
在高階壓力系統(tǒng)的自控中,PLC要向PC傳輸10多個參數(shù):3個壓力罐的壓力信號、調(diào)節(jié)輸出信號、6個報警信號及手動6 自動狀態(tài)信號等,同時要求PC向PLC傳送主副調(diào)節(jié)器中的調(diào)節(jié)參數(shù)及主調(diào)的給定值,并把手動/自動狀態(tài)命令送入PLC中,組成一個帶上位機的PLC智能控制系統(tǒng)。在高階壓力裝置監(jiān)控操作界面上,單擊調(diào)節(jié)器符號會彈出調(diào)節(jié)器操作面板界面和對應(yīng)的測量值曲線界面。
3.4.1 部分程序
初始化:
NETWORK 1
LD SM0.0
MOVB 9,SMB30
NETWORK 2
LD SM0.0
MOVB 16 # EC,SMB87
MOVB 103,SMB88
MOVE 71,SMB89
MOVW +1000,SMW92
MOVE 35,SMB94
R SM87.2,1
NETWORK 3
LD SM0.0
ATH RcvComp,23
ATH TxComp,9
NETWORK 4
LD SM0.0
ENI
RCV VB700,0
MOVE 2,VB750
MOVE 16#41,VB751
MOVE 16#35,VB752
NETWORK 5
LD SM0.7
=SM30.0
3.4.2 VB6.0的部分程序代碼
采用自由口通訊協(xié)議通訊,其代碼段為:
發(fā)送格式:開始字符(g)+命令字+4個字節(jié)ASCⅡ碼+BCC校驗碼(2個ASCⅡ)+結(jié)束字符(G)
Dim OutData As Variant
Dim Outllrrav(12)As Bvte
Dim i As Byte
Dim bcc As Byte
Dim count As Integer
Dim mvtime As Double
CommControl. OutBufferCount=0
OutArray(0)=Asc(“g”)
OutArray(1)=Command
OutArray(2)=Asc(Hex((PLCOUT1 And & HF0)/16W‘HIGH
OutArray(3)=Asc(Hex(PLCOUT1 And & HF))‘LOW
OutArray(4)=Asc(Hex((PLCOUT2 And & HF0)/16))‘HIGH
OutArray(5)=Asc(Hex(PLCOUT2 And & HF))‘LOW
OutArray(6)=Asc(Hex((PLCOUT3 And & HF0)/16))‘HIGH
OutArray(7)=Asc(Hex(PLCOUT3 And & HF))‘LOW
OutArray(8)=Asc(Hex((PLCOUT4 And & HF0)/16))‘HIGH
OutArray(9)=Asc(Hex(PLCOUT4 And & HF))‘LOW
bcc=0
For i=1 To 9‘計算機BCC校驗碼
bcc=bcc Xor OutArray(i)
Next i
OutArray(10)=Asc(Hex((bcc And & HF0)/16))‘HIGH
OutArray(11)=Asc(Hex(bcc And & HF0))‘LOW
OutArray(11)=Asc(“G”)
OutData=OutArray
count=0
Send:
CommControl.Output=OutData
mvtime=Timer
Do
DoEvents
Loop Until CommControl.InBufferCount≥4 Or
Timer>mytime+0.3
if CommControl.InBufferCount≥4 Then
PlcSetOut=True
CommControl.InBufferCount=0
Form 1.Iblplc.Caption=“PLC通訊正常”
Else
count=count+1
if count≤3 Then
Go To Send
Else
MsgBox“通訊失敗”
PlcSetOut=False
Form 1.Iblplc.Caption=“PLC通訊錯誤”
errcount=errcount+1
Form 1.Iblplc.Caption=errcount
Exit Function
End If
End If
End Function
4 結(jié)束語
文中所介紹的通信方案適用于中小型的智能控制系統(tǒng),具有使用方便、應(yīng)用可靠的特點,已成功應(yīng)用于所介紹的高階壓力系統(tǒng)的串級控制回路中。目前正用于研究不同壓力下,高階系統(tǒng)穩(wěn)定性的情況分析,以及不同壓力下調(diào)節(jié)器參數(shù)的變化規(guī)律。經(jīng)實踐證明這是一種非常有效、可靠的通信方法,其建立在通信基礎(chǔ)上的動態(tài)參數(shù)顯示及在線參數(shù)修改,大大提高了系統(tǒng)的控制性能。這種通信方法完全可以應(yīng)用于其它相關(guān)的通信場合,具有一定的普遍意義。
(審核編輯: 智匯李)
分享