關(guān)鍵詞:VB PLC 監(jiān)控系統(tǒng) 交通燈
Abstract: This paper introduces the system of communication between VB and PLC. The system takes PC machine of VB as main-machine, PLC as submitted-machine. The system uses MSComm control components of VB, the free communication port of PLC by user defining protocol, links PC machine and PLC by PC/PPI cable, achieves the serial communication between the main-machine and the submitted-machine. And gives concrete application in the real time testing and controlling system of traffic lights in crossroad.
Key words: VB PLC monitor system traffic lights
1. 引言
隨著經(jīng)濟發(fā)展,汽車數(shù)量急劇增加汗洒,城市道路日漸擁擠议纯,交通擁塞已成為一個國際性的問題父款。因此溢谤,設(shè)計可靠、安全憨攒、便捷的多功能交通燈控制系統(tǒng)有極大的現(xiàn)實必要性世杀。通常情況下,交通信號燈控制的主要缺陷是交通信號燈控制系統(tǒng)缺乏有效的應(yīng)急措施肝集,導(dǎo)致十字路交通受阻瞻坝,造成不必要的經(jīng)濟損失。為此芙糙,我們考慮設(shè)計十字路口的監(jiān)控系統(tǒng)牢簸。以便方便、快速的對交通燈控制鹊逛。Siemens公司生產(chǎn)的PLC由于價格低渺类、適應(yīng)工業(yè)現(xiàn)場以及強大聯(lián)網(wǎng)功能特點被廣泛使用∠笱龋考慮到這些因素累换,本系統(tǒng)以PLC作為下位機。上位機可以采用VC++盏拐、VB待插、Delphi等高級語言,由于本系統(tǒng)實現(xiàn)的功能相對簡單,涉及的數(shù)據(jù)處理和數(shù)據(jù)管理要求不是太高捷妥,因此考慮用價格便宜你义,通訊容易實現(xiàn)的VB作為上位機。
2. 系統(tǒng)構(gòu)成
圖1 系統(tǒng)構(gòu)成
監(jiān)控系統(tǒng)主要由計算機和PLC構(gòu)成摩潮。用PC/PPI電纜連接計算機的RS-232口和PLC的RS-485口诬像,作為數(shù)據(jù)轉(zhuǎn)換器(使用PC/PPI電纜上的DIP開關(guān)來為電纜配置正確的波特率)。
本系統(tǒng)選用的計算機處理器型號是Pentium (R) 4 CPU; 有40G的硬盤空間闸婴;選用Microsoft windows XP 操作系統(tǒng)坏挠;有一個COM口。
Siemens 公司提供多種型號的CPU以適應(yīng)各種應(yīng)用邪乍。本系統(tǒng)選用的是Siemens 公司生產(chǎn)的CPU224型號的S7-200PLC, 它有一個RS-485口降狠, 14個輸入口,10個輸出口庇楞,完全可以滿足該系統(tǒng)的要求(該系統(tǒng)需要8個輸出口)榜配。
3. 操作流程及通訊原理
3.1 操作流程
a 在SETP7-Micro/WIN軟件的操作欄中點擊system block 圖標(biāo),出現(xiàn)圖2所示的界面吕晌。
d 在所示的界面3上點擊右邊欄的“雙擊刷新”按鈕蛋褥,以便搜尋正確的波特率。
e 將程序下載至PLC睛驳。
f 將 PLC處于RUN模式烙心。
g 打開VB界面,點擊菜單的“運行”選項乏沸,出現(xiàn)圖4的所示的監(jiān)控界面淫茵,在監(jiān)控界面中輸入需要傳輸?shù)臄?shù)據(jù)。
h 單擊圖4的監(jiān)控界面上的開始按鈕牲耐,通訊開始师莫。
3.2 通訊原理
當(dāng)程序開始時,初始化VB界面琐惩,打開通信端口狮消,當(dāng)按下VB界面上的開始按鈕時,啟動定時器目溶,用于采集通信數(shù)據(jù)搪古,該定時器每隔0.1s采集一次通信數(shù)據(jù);同時接收和發(fā)送函數(shù)也已經(jīng)打開腻俏,這時可以在VB界面中輸入南北长尼、東西交通燈的運行時間。即在VB中輸入數(shù)據(jù)傳送給PLC目尘。
PLC程序開始時瞻替,初始化PLC的通訊端口栗沫,接收VB發(fā)送過來的數(shù)據(jù),PLC判斷是否接收到結(jié)束字符遥倦,如果沒有接收到結(jié)束字符谤绳,PLC將處于接收狀態(tài),如果接收到結(jié)束字符袒哥,PLC延時0.01s后開始向VB發(fā)送數(shù)據(jù)缩筛。如果由于任何其它原因接收完成,啟動一個新的接收堡称。
VB接收PLC發(fā)送過來的數(shù)據(jù)“1”或“0”來控制交通燈的“亮”或“滅”瞎抛,同時控制對應(yīng)車的“運行”或“停止”。
當(dāng)沒有按下停止或結(jié)束按鈕時却紧,VB每隔0.1s發(fā)送一次數(shù)據(jù)給PLC, PLC接收到數(shù)據(jù)后桐臊,如果滿足發(fā)送條件,就把數(shù)據(jù)發(fā)送給VB晓殊。這樣就達到了計算機上的模擬界面來監(jiān)控實際路面交通的運行狀況断凶,如果遇到緊急事件,需要調(diào)整車輛的運行時間巫俺,只需要在計算機中輸入需要的時間即可认烁。
3. 4. VB中的MSComm控件簡介
4.1在Windows環(huán)境下,操作系統(tǒng)通過驅(qū)動程序控制各種硬件資源柿癞,不允許用戶像在DOS 環(huán)境下那樣直接對串口進行底層操作来鸟。為此,Visual Basic 6.0提供了一個串口通訊控件 Miscrosoft Comm Control,簡 稱MSComm 控件刚驶。操作員只需設(shè)置和監(jiān)視MSComm控件的屬性和事件剩知,就可以輕而易舉地實現(xiàn)串行通信。
4.2 MSComm控件的屬性
.CommPort: 設(shè)置并返回通信端口號牙吼。
.Settings: 以字符串的形式設(shè)置并返回波特率、奇偶校驗位今搂、數(shù)據(jù)位和停止位柱称。其中以字符n、o饼簸、e分別表示無校驗臼磁、奇校驗和偶校驗。
.PortOpen: 設(shè)置并返回通信端口狀態(tài)倾皿。設(shè)置為True時吊磕,打開端口;設(shè)置為False時惩阶,關(guān)閉端口挎狸。
.Input: 從接收緩沖區(qū)讀取數(shù)據(jù)扣汪,類型為Variant。
.Output: 向發(fā)送緩沖區(qū)寫入數(shù)據(jù)锨匆,類型為字符串或字節(jié)數(shù)組崭别。
.InputMode: 設(shè)置從緩沖區(qū)讀取數(shù)據(jù)的格式,設(shè)為0時為字符串格恐锣;設(shè)為1為二進制格式茅主。
.InBufferCount: 設(shè)置和返回接收緩沖區(qū)的字節(jié)數(shù),設(shè)為0時清空接收緩沖區(qū)土榴。
.OutBufferCount: 設(shè)置和返回發(fā)送緩沖區(qū)的字節(jié)數(shù)诀姚,設(shè)為0時清空發(fā)送緩沖區(qū)。
.Inputlen: 設(shè)置和返回Input每次讀出的字節(jié)數(shù),設(shè)為0時讀出接收緩沖區(qū)的全部內(nèi)容玷禽。
.Rthreshold: 表示在串口事件OnComm發(fā)生之前学搜,接收緩沖區(qū)接收的最少字節(jié)數(shù)。若設(shè)為0论衍,可以禁止發(fā)生OnComm事件瑞佩。一般設(shè)為1,即當(dāng)接收緩沖區(qū)中的字節(jié)數(shù)大于等于1時瓤计,就會產(chǎn)生接收事件智谓。
CommEvent: 返回相應(yīng)的Oncomm事件常數(shù)。
4.3 MSComm控件處理接收信息的方式
MSComm控件提供了兩種處理方式:
(1)事件驅(qū)動方式:Rthreshold 屬性非0時圾峭,收到字符或傳輸線發(fā)生變化時就會產(chǎn)生串口事件OnComm嚎蛀。通過查詢CommEvent屬性可以捕獲并處理這些通信事件。
(2)查詢方式:通過查詢InputBufferCount(接收緩沖區(qū)的字節(jié)數(shù))屬性值堤谴, 處理接收到的信息缰畦。
本文采用事件驅(qū)動方式
5. 方案的具體實現(xiàn)
5.1程序設(shè)計
5.1.1 VB發(fā)送數(shù)據(jù)給PLC
MSComm1.Output = Text2.Text & Text3.Text &Text4.Text & Text5.Text & Chr(10)
‘利用MSComm控件向PLC發(fā)送數(shù)據(jù) (文本框內(nèi)分別為控制交通燈南北直行、南北彎行栋固、東西直行肥稠、東西彎行的時間) 說明:由于PLC識別從VB發(fā)送過來的ASCII碼,所以這些文本框內(nèi)為經(jīng)過運算的, PLC的識別的ASCII碼埋署。這里用
p = Val(txt1.Text)
Text2.Text = Chr((p - 3) * 10)等語句玫桅。
5.1.2 VB接收PLC發(fā)送過來的數(shù)據(jù)
Private Sub MSComm1_OnComm()
If (暫不可見)mEvent = comEvReceive Then
‘如果接收到字符
S1 = MSComm1.Input
‘把接收緩沖區(qū)內(nèi)的數(shù)據(jù)賦值給臨時變量"S1"
If (S1 = Chr(&H1B)) And (Len(SCOMS) > 2) Then ‘如果變量"S1"(接收緩沖區(qū)內(nèi)的數(shù)據(jù)接收到起始字符‘&H1B‘,并且變量"SCOMS"中的字節(jié)數(shù)大于2)绷匀,則
SCOMS = ""
清空變量"SCOMS"中的數(shù)據(jù)
Else
‘否則
If S1 <> Chr(&HD) Then
‘如果變量"S1"沒有接收到結(jié)束字符‘&H0D‘哭振,則
SCOMS = SCOMS&S1
‘將"S1"中的數(shù)據(jù)累加到"SCOMS"中
Else
‘否則
……
‘?dāng)?shù)據(jù)處理
End sub
‘ 結(jié)束 Text5.text=MSComm1.input
xt5.T ‘ text5.Text為存放PLC發(fā)送過來的數(shù)據(jù)
End Sub
5.2下位機程序設(shè)計
5.2.1 PLC 接收VB發(fā)過來的數(shù)據(jù) (PLC接收緩沖區(qū)的分配如圖5)
RCV VB100, 0
圖6 PLC 的接收緩沖區(qū)的數(shù)據(jù)分配
5.2.2 PLC向VB發(fā)送數(shù)據(jù)(PLC發(fā)送緩沖區(qū)的分配如圖6)
MOVB 8, VB400
//設(shè)置發(fā)送字節(jié)個數(shù)為8,發(fā)送緩沖區(qū)為VB400
MOVB 16#1B, VB401
//設(shè)置發(fā)送信息的起始字符為"16#1B"
MOVB 16#0D, VB408
//設(shè)置發(fā)送信息的結(jié)束字符為"16#0D"楔绞,
MOVB ‘1‘, VB402
NOT
MOVB ‘0‘, VB402
//若Q0.0有輸出结闸,VB402為"1",否則為"0"
XMT VB400, 0
//在端口0向用戶回送信息酒朵,發(fā)送緩沖區(qū)指向VB400
圖7 PLC的發(fā)送緩沖區(qū)的數(shù)據(jù)分配
6. 結(jié)論
通過VB實現(xiàn)與PLC通訊桦锄。使PLC的工作納入微型計算機的管理之下扎附。經(jīng)試驗驗證,編制的VB程序在Microsoft windows XP系統(tǒng)下和PLC之間通訊運行良好察纯、無誤碼帕棉,能有效的解決十字路口交通的運行狀況。
聲明:本網(wǎng)站所收集的部分公開資料來源于互聯(lián)網(wǎng)饼记,轉(zhuǎn)載的目的在于傳遞更多信息及用于網(wǎng)絡(luò)分享香伴,并不代表本站贊同其觀點和對其真實性負責(zé),也不構(gòu)成任何其他建議具则。本站部分作品是由網(wǎng)友自主投稿和發(fā)布即纲、編輯整理上傳,對此類作品本站僅提供交流平臺博肋,不為其版權(quán)負責(zé)低斋。如果您發(fā)現(xiàn)網(wǎng)站上所用視頻、圖片刹震、文字如涉及作品版權(quán)問題司逗,請第一時間告知,我們將根據(jù)您提供的證明材料確認(rèn)版權(quán)并按國家標(biāo)準(zhǔn)支付稿酬或立即刪除內(nèi)容环自,以保證您的權(quán)益改佛!聯(lián)系電話:010-58612588 或 Email:editor@mmsonline.com.cn。
- 暫無反饋
編輯推薦
- 2025新年特刊:打造新質(zhì)生產(chǎn)力匣描,智啟未來新篇章
- 定義制造業(yè)未來的數(shù)控加工中心技術(shù)專題
- 航空航天及交通領(lǐng)域先進制造技術(shù)應(yīng)用專題
- 解碼消費電子產(chǎn)品生產(chǎn)的數(shù)字化之路技術(shù)專題
- 精密智能機床罕腿,助力制造升級技術(shù)專題
- 汽車輕量化驅(qū)動下的零部件加工應(yīng)用專題
- 高性能銑刀實現(xiàn)高精加工生產(chǎn)技術(shù)專題
- 航空航天發(fā)動機解決方案專題
- 高效齒輪加工生產(chǎn)技術(shù)方案專題
- 金屬加工液的性能不止?jié)櫥夹g(shù)應(yīng)用專題