摘要:本文介紹了VB和PLC通訊的實(shí)現(xiàn)過(guò)程仰铃。該系統(tǒng)以裝有VB的PC機(jī)作為上位機(jī)露揽,PLC作為下位機(jī)础辉。利用VB中的MSComm控件, PLC的自由口模式創(chuàng)建用戶(hù)定義的協(xié)議衔耕,通過(guò)PC/PPI電纜連接PC機(jī)和PLC,實(shí)現(xiàn)上位機(jī)和下位機(jī)的串口通訊赊偿。并給出了該方法在十字路口交通燈實(shí)時(shí)監(jiān)控系統(tǒng)中的具體應(yīng)用。
關(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)濟(jì)發(fā)展悬鲜,汽車(chē)數(shù)量急劇增加绅鉴,城市道路日漸擁擠,交通擁塞已成為一個(gè)國(guó)際性的問(wèn)題厉源。因此既蛙,設(shè)計(jì)可靠、安全豆蝠、便捷的多功能交通燈控制系統(tǒng)有極大的現(xiàn)實(shí)必要性蓖社。通常情況下,交通信號(hào)燈控制的主要缺陷是交通信號(hào)燈控制系統(tǒng)缺乏有效的應(yīng)急措施项蝉,導(dǎo)致十字路交通受阻舆飒,造成不必要的經(jīng)濟(jì)損失。為此白找,我們考慮設(shè)計(jì)十字路口的監(jiān)控系統(tǒng)能真。以便方便、快速的對(duì)交通燈控制扰柠。Siemens公司生產(chǎn)的PLC由于價(jià)格低粉铐、適應(yīng)工業(yè)現(xiàn)場(chǎng)以及強(qiáng)大聯(lián)網(wǎng)功能特點(diǎn)被廣泛使用÷钡担考慮到這些因素蝙泼,本系統(tǒng)以PLC作為下位機(jī)。上位機(jī)可以采用VC++劝枣、VB汤踏、Delphi等高級(jí)語(yǔ)言,由于本系統(tǒng)實(shí)現(xiàn)的功能相對(duì)簡(jiǎn)單舔腾,涉及的數(shù)據(jù)處理和數(shù)據(jù)管理要求不是太高溪胶,因此考慮用價(jià)格便宜搂擦,通訊容易實(shí)現(xiàn)的VB作為上位機(jī)。
2. 系統(tǒng)構(gòu)成
圖1 系統(tǒng)構(gòu)成
系統(tǒng)構(gòu)成如圖1
監(jiān)控系統(tǒng)主要由計(jì)算機(jī)和PLC構(gòu)成哗脖。用PC/PPI電纜連接計(jì)算機(jī)的RS-232口和PLC的RS-485口瀑踢,作為數(shù)據(jù)轉(zhuǎn)換器(使用PC/PPI電纜上的DIP開(kāi)關(guān)來(lái)為電纜配置正確的波特率)。
本系統(tǒng)選用的計(jì)算機(jī)處理器型號(hào)是Pentium (R) 4 CPU; 有40G的硬盤(pán)空間才避;選用Microsoft windows XP 操作系統(tǒng)咱茂;有一個(gè)COM口。
Siemens 公司提供多種型號(hào)的CPU以適應(yīng)各種應(yīng)用棕优。本系統(tǒng)選用的是Siemens 公司生產(chǎn)的CPU224型號(hào)的S7-200PLC, 它有一個(gè)RS-485口缴碉, 14個(gè)輸入口,10個(gè)輸出口敢薄,完全可以滿(mǎn)足該系統(tǒng)的要求(該系統(tǒng)需要8個(gè)輸出口)帽惠。
3. 操作流程及通訊原理
3.1 操作流程
a 在SETP7-Micro/WIN軟件的操作欄中點(diǎn)擊system block 圖標(biāo),出現(xiàn)圖2所示的界面艇线。
d 在所示的界面3上點(diǎn)擊右邊欄的“雙擊刷新”按鈕剧鹏,以便搜尋正確的波特率。
e 將程序下載至PLC游鹿。
f 將 PLC處于RUN模式盔惑。
g 打開(kāi)VB界面,點(diǎn)擊菜單的“運(yùn)行”選項(xiàng)义誓,出現(xiàn)圖4的所示的監(jiān)控界面律坎,在監(jiān)控界面中輸入需要傳輸?shù)臄?shù)據(jù)。
h 單擊圖4的監(jiān)控界面上的開(kāi)始按鈕蟋定,通訊開(kāi)始粉臊。
3.2 通訊原理
當(dāng)程序開(kāi)始時(shí),初始化VB界面驶兜,打開(kāi)通信端口扼仲,當(dāng)按下VB界面上的開(kāi)始按鈕時(shí),啟動(dòng)定時(shí)器抄淑,用于采集通信數(shù)據(jù)屠凶,該定時(shí)器每隔0.1s采集一次通信數(shù)據(jù);同時(shí)接收和發(fā)送函數(shù)也已經(jīng)打開(kāi)肆资,這時(shí)可以在VB界面中輸入南北矗愧、東西交通燈的運(yùn)行時(shí)間。即在VB中輸入數(shù)據(jù)傳送給PLC郑原。
PLC程序開(kāi)始時(shí)唉韭,初始化PLC的通訊端口,接收VB發(fā)送過(guò)來(lái)的數(shù)據(jù)犯犁,PLC判斷是否接收到結(jié)束字符纽哥,如果沒(méi)有接收到結(jié)束字符钠乏,PLC將處于接收狀態(tài),如果接收到結(jié)束字符柬激,PLC延時(shí)0.01s后開(kāi)始向VB發(fā)送數(shù)據(jù)。如果由于任何其它原因接收完成斧与,啟動(dòng)一個(gè)新的接收行忘。
VB接收PLC發(fā)送過(guò)來(lái)的數(shù)據(jù)“1”或“0”來(lái)控制交通燈的“亮”或“滅”,同時(shí)控制對(duì)應(yīng)車(chē)的“運(yùn)行”或“停止”筋劣。
當(dāng)沒(méi)有按下停止或結(jié)束按鈕時(shí)牡徘,VB每隔0.1s發(fā)送一次數(shù)據(jù)給PLC, PLC接收到數(shù)據(jù)后,如果滿(mǎn)足發(fā)送條件正脸,就把數(shù)據(jù)發(fā)送給VB式伶。這樣就達(dá)到了計(jì)算機(jī)上的模擬界面來(lái)監(jiān)控實(shí)際路面交通的運(yùn)行狀況,如果遇到緊急事件鄙叼,需要調(diào)整車(chē)輛的運(yùn)行時(shí)間贡金,只需要在計(jì)算機(jī)中輸入需要的時(shí)間即可。
4. VB中的MSComm控件簡(jiǎn)介
4.1在Windows環(huán)境下群娃,操作系統(tǒng)通過(guò)驅(qū)動(dòng)程序控制各種硬件資源衅侥,不允許用戶(hù)像在DOS 環(huán)境下那樣直接對(duì)串口進(jìn)行底層操作。為此劫瞳,Visual Basic 6.0提供了一個(gè)串口通訊控件 Miscrosoft Comm Control,簡(jiǎn) 稱(chēng)MSComm 控件倘潜。操作員只需設(shè)置和監(jiān)視MSComm控件的屬性和事件,就可以輕而易舉地實(shí)現(xiàn)串行通信志于。
4.2 MSComm控件的屬性
.CommPort: 設(shè)置并返回通信端口號(hào)涮因。
.Settings: 以字符串的形式設(shè)置并返回波特率、奇偶校驗(yàn)位伺绽、數(shù)據(jù)位和停止位养泡。其中以字符n、o憔恳、e分別表示無(wú)校驗(yàn)瓤荔、奇校驗(yàn)和偶校驗(yàn)。
.PortOpen: 設(shè)置并返回通信端口狀態(tài)钥组。設(shè)置為T(mén)rue時(shí)输硝,打開(kāi)端口;設(shè)置為False時(shí)程梦,關(guān)閉端口点把。
.Input: 從接收緩沖區(qū)讀取數(shù)據(jù),類(lèi)型為Variant乞贡。
.Output: 向發(fā)送緩沖區(qū)寫(xiě)入數(shù)據(jù)氢碰,類(lèi)型為字符串或字節(jié)數(shù)組克酿。
.InputMode: 設(shè)置從緩沖區(qū)讀取數(shù)據(jù)的格式,設(shè)為0時(shí)為字符串格申广;設(shè)為1為二進(jìn)制格式限匕。
.InBufferCount: 設(shè)置和返回接收緩沖區(qū)的字節(jié)數(shù),設(shè)為0時(shí)清空接收緩沖區(qū)东六。
.OutBufferCount: 設(shè)置和返回發(fā)送緩沖區(qū)的字節(jié)數(shù)困荤,設(shè)為0時(shí)清空發(fā)送緩沖區(qū)。
.Inputlen: 設(shè)置和返回Input每次讀出的字節(jié)數(shù),設(shè)為0時(shí)讀出接收緩沖區(qū)的全部?jī)?nèi)容待讲。
.Rthreshold: 表示在串口事件OnComm發(fā)生之前捎鹤,接收緩沖區(qū)接收的最少字節(jié)數(shù)。若設(shè)為0殃烤,可以禁止發(fā)生OnComm事件亡荞。一般設(shè)為1,即當(dāng)接收緩沖區(qū)中的字節(jié)數(shù)大于等于1時(shí)情誊,就會(huì)產(chǎn)生接收事件水孩。
CommEvent: 返回相應(yīng)的Oncomm事件常數(shù)。
4.3 MSComm控件處理接收信息的方式
MSComm控件提供了兩種處理方式:
(1)事件驅(qū)動(dòng)方式:Rthreshold 屬性非0時(shí)腺逛,收到字符或傳輸線發(fā)生變化時(shí)就會(huì)產(chǎn)生串口事件OnComm荷愕。通過(guò)查詢(xún)CommEvent屬性可以捕獲并處理這些通信事件。
(2)查詢(xún)方式:通過(guò)查詢(xún)InputBufferCount(接收緩沖區(qū)的字節(jié)數(shù))屬性值棍矛, 處理接收到的信息安疗。
本文采用事件驅(qū)動(dòng)方式
5. 方案的具體實(shí)現(xiàn)
5.1程序設(shè)計(jì)
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)分別為控制交通燈南北直行、南北彎行够委、東西直行荐类、東西彎行的時(shí)間) 說(shuō)明:由于PLC識(shí)別從VB發(fā)送過(guò)來(lái)的ASCII碼,所以這些文本框內(nèi)為經(jīng)過(guò)運(yùn)算的, PLC的識(shí)別的ASCII碼茁帽。這里用
p = Val(txt1.Text)
Text2.Text = Chr((p - 3) * 10)等語(yǔ)句玉罐。
5.1.2 VB接收PLC發(fā)送過(guò)來(lái)的數(shù)據(jù)
Private Sub MSComm1_OnComm()
If (暫不可見(jiàn))mEvent = comEvReceive Then
‘如果接收到字符
S1 = MSComm1.Input
‘把接收緩沖區(qū)內(nèi)的數(shù)據(jù)賦值給臨時(shí)變量"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"沒(méi)有接收到結(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ā)送過(guò)來(lái)的數(shù)據(jù)
End Sub
5.2下位機(jī)程序設(shè)計(jì)
5.2.1 PLC 接收VB發(fā)過(guò)來(lái)的數(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é)個(gè)數(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向用戶(hù)回送信息溺硼,發(fā)送緩沖區(qū)指向VB400
圖7 PLC的發(fā)送緩沖區(qū)的數(shù)據(jù)分配
6. 結(jié)論
通過(guò)VB實(shí)現(xiàn)與PLC通訊肥刻。使PLC的工作納入微型計(jì)算機(jī)的管理之下。經(jīng)試驗(yàn)驗(yàn)證邪涕,編制的VB程序在Microsoft windows XP系統(tǒng)下和PLC之間通訊運(yùn)行良好茄溢、無(wú)誤碼哩敞,能有效的解決十字路口交通的運(yùn)行狀況。
聲明:本網(wǎng)站所收集的部分公開(kāi)資料來(lái)源于互聯(lián)網(wǎng)蝉狭,轉(zhuǎn)載的目的在于傳遞更多信息及用于網(wǎng)絡(luò)分享点级,并不代表本站贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé),也不構(gòu)成任何其他建議撞恰。本站部分作品是由網(wǎng)友自主投稿和發(fā)布痊追、編輯整理上傳,對(duì)此類(lèi)作品本站僅提供交流平臺(tái)粪趋,不為其版權(quán)負(fù)責(zé)。如果您發(fā)現(xiàn)網(wǎng)站上所用視頻舔艾、圖片磺浙、文字如涉及作品版權(quán)問(wèn)題,請(qǐng)第一時(shí)間告知徒坡,我們將根據(jù)您提供的證明材料確認(rèn)版權(quán)并按國(guó)家標(biāo)準(zhǔn)支付稿酬或立即刪除內(nèi)容撕氧,以保證您的權(quán)益!聯(lián)系電話(huà):010-58612588 或 Email:editor@mmsonline.com.cn喇完。
- 暫無(wú)反饋
編輯推薦
- 2025新年特刊:打造新質(zhì)生產(chǎn)力诽嘉,智啟未來(lái)新篇章
- 定義制造業(yè)未來(lái)的數(shù)控加工中心技術(shù)專(zhuān)題
- 航空航天及交通領(lǐng)域先進(jìn)制造技術(shù)應(yīng)用專(zhuān)題
- 解碼消費(fèi)電子產(chǎn)品生產(chǎn)的數(shù)字化之路技術(shù)專(zhuān)題
- 精密智能機(jī)床弟翘,助力制造升級(jí)技術(shù)專(zhuān)題
- 汽車(chē)輕量化驅(qū)動(dòng)下的零部件加工應(yīng)用專(zhuān)題
- 高性能銑刀實(shí)現(xiàn)高精加工生產(chǎn)技術(shù)專(zhuān)題
- 航空航天發(fā)動(dòng)機(jī)解決方案專(zhuān)題
- 高效齒輪加工生產(chǎn)技術(shù)方案專(zhuān)題
- 金屬加工液的性能不止?jié)櫥夹g(shù)應(yīng)用專(zhuān)題