




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、永宏plc在vb.net中的應(yīng)用fatek application of plc in five - axis reciprocating machines肖藝斌永宏電機(jī)范堤商貿(mào)(上海)有限公司上海摘要隨著it產(chǎn)業(yè)的進(jìn)步及網(wǎng)際網(wǎng)絡(luò)的發(fā)展,傳統(tǒng)的工業(yè)控制所使用之plc控制器,具有高度的穩(wěn)定性及抗雜訊的特性且配線容易價(jià)格便宜,因此被大量的在自動(dòng)化的場(chǎng)所,本文介紹了永宏plc在vb.net中的應(yīng)用。關(guān)鍵詞:fatek plc;vb.netabstractwith the progress of it industry and the development of the internet, the
2、traditional industrial control the use of plc controller, with high stability and resistance to static characteristics and wiring easy inexpensive, so it is a lot of places in the automation, this article describes fatek plc in vb.application of the net.key words :fatek plc;vb.net一 前言隨著it產(chǎn)業(yè)的進(jìn)步及網(wǎng)際網(wǎng)絡(luò)的
3、發(fā)展,傳統(tǒng)工業(yè)控制所使用之plc控制器,具有高度的穩(wěn)定性及抗雜訊的特性且配線容易及價(jià)格便宜,因此北大量應(yīng)用的在自動(dòng)化的場(chǎng)所,已由單機(jī)操作朝向網(wǎng)絡(luò)控制化發(fā)展,文本在探討網(wǎng)絡(luò)控制化的核心技術(shù),使pc借由rs-232通訊協(xié)定控制plc,并透過(guò)vb.net程序語(yǔ)言,達(dá)到遠(yuǎn)端控制及網(wǎng)際自動(dòng)化控制的功能。本文以自動(dòng)紅綠燈控制為主題,所使用之plc為國(guó)內(nèi)永宏電機(jī)公司所制fbs-plc,內(nèi)含通訊模組,因此不需額外增購(gòu),且可由該公司網(wǎng)站免費(fèi)下載及更新階梯圖軟體(winproladder)。二 永宏通訊協(xié)議2.1 主仆定位與通訊互動(dòng)關(guān)系在永宏 plc 的通訊結(jié)構(gòu)上,永宏 plc 是被定位為仆系統(tǒng)( slave )
4、,而任何與永宏 plc聯(lián)機(jī)的外圍設(shè)備都為主系統(tǒng)( master ),也就是說(shuō)任何外圍設(shè)備與永宏 plc 之間的通訊都是由主系統(tǒng)(外圍設(shè)備)來(lái)主動(dòng)發(fā)出命令,仆系統(tǒng)(永宏 plc )只有在收到命令信息后才根 據(jù)該命令的要求響應(yīng)信息給主系統(tǒng),而不能主動(dòng)發(fā)出信息給主系統(tǒng)。2.2永宏plc通訊訊息格式永宏plc的通訊信息格式無(wú)論是命令信息(主系統(tǒng)發(fā)出)或響應(yīng)信息(仆系統(tǒng)發(fā)出)都可大概分為 6 個(gè)數(shù)據(jù)域位,如下圖的范例:1) 開(kāi)頭字符(stx):ascii碼的開(kāi)始字符stx的16進(jìn)制碼數(shù)為02h ,無(wú)論命令或響 應(yīng)信息的開(kāi)頭字符都為 stx ,接收方以此來(lái)判斷傳輸數(shù)據(jù)的開(kāi)頭。 2) 仆站號(hào)碼:為兩位數(shù)的
5、16 進(jìn)制數(shù)值,在永宏 plc 通訊系統(tǒng)中的網(wǎng)絡(luò)結(jié)構(gòu)采用主仆系統(tǒng)在整個(gè)網(wǎng)絡(luò)系統(tǒng)中只有一個(gè)主系統(tǒng),但可以有 254 個(gè)仆系統(tǒng),每個(gè)仆系統(tǒng)都有一個(gè)獨(dú)一無(wú)二的站號(hào),分別為1 feh(站號(hào)0 則當(dāng)作對(duì)所有仆系統(tǒng)作廣播下命令),當(dāng)主系統(tǒng)都對(duì)仆系統(tǒng)下命令時(shí)是以站號(hào)來(lái)指定由那個(gè)plc,或所有plc(廣播時(shí))來(lái)接收這個(gè)命令。在響應(yīng)信息 時(shí),仆系統(tǒng)會(huì)將自己的站號(hào)響應(yīng)給主系統(tǒng),以供主系統(tǒng)確認(rèn)是它所指定的那個(gè)仆站(plc)所送回的信息。3) 命令號(hào)碼:為兩位數(shù)的 16 進(jìn)制數(shù)值,所謂命令號(hào)碼是由主系統(tǒng)要求仆系統(tǒng)所執(zhí)行的動(dòng)作類型,例如要求讀取或?qū)懭雴吸c(diǎn)狀態(tài)、填入或讀取緩存器數(shù)據(jù)、強(qiáng)制設(shè)定、運(yùn)轉(zhuǎn)、停止 .等,和站號(hào)一樣
6、,在響應(yīng)信息時(shí),仆系統(tǒng)也會(huì)將從主系統(tǒng)接收的命令號(hào)碼原原本本地隨同本文數(shù)據(jù)一塊傳回主系統(tǒng)。 4) 本文資料:本文數(shù)據(jù)可為 0 (無(wú)文本資料)500 個(gè) ascii 字符,在命令信息中此 字段數(shù)據(jù)用來(lái)指定命令所要運(yùn)作或存取的對(duì)象 (地址)或要寫(xiě)入的數(shù)值。在響應(yīng)信息中本字段的開(kāi)頭為一個(gè)錯(cuò)誤碼字符,在正常(沒(méi)有錯(cuò)誤)情況下此錯(cuò)誤碼必為字符 0 (30h ),其后跟著的才是要響應(yīng)給主系統(tǒng)的狀態(tài)或數(shù)值等本文數(shù)據(jù)。當(dāng)有錯(cuò)誤時(shí),本開(kāi)頭字符不再是 0 ,取而代之的是錯(cuò)誤碼,同時(shí)其后不再有其它本文數(shù)據(jù)(即本文數(shù)據(jù)僅為一個(gè)字符的錯(cuò)誤碼)。 5) 校驗(yàn)碼 (checksum) :校驗(yàn)碼是將前述 各字段的所有 asci
7、i 字符的 16 進(jìn)制數(shù)值以縱式余數(shù)查核法lrc(longitudinal redundancy check )計(jì)算產(chǎn)出一個(gè) byte 長(zhǎng)度(兩個(gè) 16 進(jìn)制數(shù)值 00 ff )的校驗(yàn)碼。當(dāng)接收端收到信息后按照同樣的計(jì)算方法則將 字段的所有字符算出其校驗(yàn)碼,兩個(gè)值相同表示傳輸?shù)臄?shù)據(jù)正確,否則就是有傳輸錯(cuò)誤發(fā)生。本通訊協(xié)議 lrc 校驗(yàn)碼的計(jì)算方法是將各 ascii 字符的 16 進(jìn)制數(shù)碼值( 8 位長(zhǎng)度)從頭到尾按照順序相加,但不考慮進(jìn)位,因此最終結(jié)果仍為 8 位長(zhǎng)度的校驗(yàn)碼。 6) 結(jié)尾字符( etx ):ascii 碼的結(jié)尾字符 etx 的 16 進(jìn)制數(shù)碼為 03h ,無(wú)論命令或響應(yīng)信息的
8、結(jié)尾字符均都為 etx ,當(dāng)接收方收到 etx 字符后便知道該次通訊已結(jié)束,可開(kāi)始處理該命令或數(shù)據(jù)了。三 紅綠燈控制階梯圖程序【程序說(shuō)明】 1. 按下啟動(dòng)按鈕x0交通燈開(kāi)始工作,按下停止按鈕x1,交通燈系統(tǒng)停止運(yùn)行。2. 設(shè)東西方西車流量較小,紅燈亮的時(shí)間為60秒,而南北方向車流量較大,紅燈亮的時(shí)間為30秒。3. 東西方向的紅燈時(shí)間就是南北方向的“綠燈時(shí)間綠燈閃爍時(shí)間黃燈時(shí)間”,反之,南北方向紅燈,時(shí)間就是東西方向的“綠燈時(shí)間綠燈閃爍時(shí)間黃燈時(shí)間”。4. 黃燈亮?xí)r車和人不能再通過(guò)馬路,黃燈亮5秒的目的是讓正在十字路口通行的人和車有時(shí)間到達(dá)對(duì)面馬路。5. 東西方向交通燈狀態(tài)變化規(guī)律:6. 南北方
9、向交通燈狀態(tài)變化規(guī)律:【階梯圖如下】四 vb.net即時(shí)監(jiān)控程序架構(gòu)及程序設(shè)計(jì)pc借由rs232與plc取得連線,通訊參數(shù)如下:9600,7,e,1,整個(gè)連線設(shè)定可參考form1_load()及btnstart_click()段。即時(shí)監(jiān)控如圖一所示,當(dāng)執(zhí)行系統(tǒng)啟動(dòng)按鈕時(shí),桌面將呈現(xiàn)如圖二圖五所示,狀態(tài)的偵測(cè)采用200ms定時(shí)觸發(fā)的方式,依次讀取y0y8,r0r1的即時(shí)狀態(tài),程序執(zhí)行段參考timer1_tick()段,系統(tǒng)啟動(dòng)功能代碼可參考button2_click()段,系統(tǒng)停止功能代碼可參考button3_click()段圖一 即時(shí)監(jiān)控畫(huà)面設(shè)計(jì) 圖二 狀態(tài)一 圖三 狀態(tài)二 圖四 狀態(tài)三 圖五
10、 狀態(tài)四五 結(jié)論隨著網(wǎng)際網(wǎng)絡(luò)的普及,遠(yuǎn)端監(jiān)控已是必然的趨勢(shì),本文所提供pc與fbs-plc間的連線,僅需在vb.net程序中加入網(wǎng)際網(wǎng)絡(luò)物件即可達(dá)到internet的遠(yuǎn)距控制,亦可透過(guò)rs485界面達(dá)到遠(yuǎn)端即時(shí)監(jiān)控。六 附錄6.1 參考文獻(xiàn)1 范堤商貿(mào)(上海)有限公司. 永宏可編程控制器使用手冊(cè)i【硬件篇&指令篇】. 20102 范堤商貿(mào)(上海)有限公司. 永宏可編程控制器使用手冊(cè)ii【進(jìn)階應(yīng)用篇】. 20106.2 vb.net程序段imports system.io.portspublic class form1 dim i as boolean = false dim withevent
11、s rs232 as serialport delegate sub settextcallback(byval inputstring as string) 聲明一個(gè)代理 private sub form1_load(byval sender as system.object, byval e as system.eventargs) handles mybase.load timer1.enabled = false button2.enabled = false button3.enabled = false textbox.enabled = false txtreceive.enab
12、led = false for each sp as string in serialport.getportnames() cmbcom.items.add(sp) next cmbcom.sorted = true cmbcom.selectedindex = 0 end sub private sub btnstart_click(byval sender as system.object, byval e as system.eventargs) handles btnstart.click dim mbaudrate as integer dim mparity as io.port
13、s.parity dim mdatabit as integer dim mstopbit as io.ports.stopbits dim mportname as string button2.enabled = true mportname = cmbcom.selecteditem.tostring mbaudrate = 9600 mparity = parity.even mdatabit = 7 mstopbit = stopbits.one me.txtreceive.text = mportname rs232 = new io.ports.serialport(mportn
14、ame, mbaudrate, mparity, mdatabit, mstopbit) try rs232.open() 打開(kāi)串口 txtreceive.text = rs232.isopen if rs232.isopen = true then txtreceive.text = 串口已連接“ txtreceive.forecolor = color.green timer1.enabled = true btnstart.enabled = false btnclose.enabled = true cmbcom.enabled = false end if catch ex as e
15、xception messagebox.show(ex.message) end try end sub private sub btnclose_click(byval sender as system.object, byval e as system.eventargs) handles btnclose.click button2.enabled = false button3.enabled = false try rs232.close() 關(guān)閉串口 txtreceive.text = rs232.isopen if rs232.isopen = false then timer1
16、.enabled = false txtreceive.text = 串口未打開(kāi) txtreceive.forecolor = color.red btnstart.enabled = true btnclose.enabled = false cmbcom.enabled = true button2.enabled = false end if catch ex as exception messagebox.show(ex.message) end try end sub 發(fā)送數(shù)據(jù) private sub timer1_tick(byval sender as system.object
17、, byval e as system.eventargs) handles timer1.tick if i = 0 then i = 1 try rs232.write(_014409y00004d_) catch ex as exception messagebox.show(ex.message) end try else i = 0 try rs232.write(_014602r0000071_) catch ex as exception messagebox.show(ex.message) end try end if end sub 觸發(fā)接收事件 public sub sp
18、_datareceived(byval sender as object, byval e as system.io.ports.serialdatareceivedeventargs) handles rs232.datareceived me.invoke(new eventhandler(addressof sp_receiving) 調(diào)用接收數(shù)據(jù)函數(shù) end sub 接收數(shù)據(jù) private sub sp_receiving(byval sender as object, byval e as eventargs) dim strincoming as string dim y0, y
19、1, y2, y6, y7, y8, r0, r1 as string dim y00, y01, y02, y06, y07, y08 as integer dim mystr as string try textbox.text = str(val(txtreceive.text) + rs232.bytestoread) if rs232.bytestoread 0 then threading.thread.sleep(100) 添加延時(shí) strincoming = rs232.readexisting.tostring 讀取緩沖區(qū)中的數(shù)據(jù) rs232.discardinbuffer(
20、) textbox.text = strincoming mystr = microsoft.visualbasic.mid(strincoming, 4, 2) if mystr = 44 then y0 = microsoft.visualbasic.mid(strincoming, 7, 1) y1 = microsoft.visualbasic.mid(strincoming, 8, 1) y2 = microsoft.visualbasic.mid(strincoming, 9, 1) y6 = microsoft.visualbasic.mid(strincoming, 13, 1
21、) y7 = microsoft.visualbasic.mid(strincoming, 14, 1) y8 = microsoft.visualbasic.mid(strincoming, 15, 1) y00 = integer.parse(y0) y01 = integer.parse(y1) y02 = integer.parse(y2) y06 = integer.parse(y6) y07 = integer.parse(y7) y08 = integer.parse(y8) if y00 = 1 then ovalshape6.backcolor = color.red els
22、e ovalshape6.backcolor = color.black end if if y01 = 1 then ovalshape4.backcolor = color.lime else ovalshape4.backcolor = color.black end if if y02 = 1 then ovalshape5.backcolor = color.yellow else ovalshape5.backcolor = color.black end if if y06 = 1 then ovalshape3.backcolor = color.lime else ovals
23、hape3.backcolor = color.black end if if y07 = 1 then ovalshape2.backcolor = color.yellow else ovalshape2.backcolor = color.black end if if y08 = 1 then ovalshape1.backcolor = color.red else ovalshape1.backcolor = color.black end if elseif mystr = 46 then r0 = microsoft.visualbasic.mid(strincoming, 7, 4) r1 = microsoft.visualbasic.mid(strincoming, 11, 4) label
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)關(guān)于讀書(shū)的演講稿(6篇)
- 大學(xué)誠(chéng)信考試演講稿(6篇)
- 礦井通風(fēng)與安全課件《安全部分》第十章火災(zāi)防治
- 辦公室接待與來(lái)賓信息表
- 公司股權(quán)無(wú)償轉(zhuǎn)讓合同
- 廠房合租合同范本
- 藝人團(tuán)隊(duì)簽約合同范本
- 合作投資經(jīng)營(yíng)合同范例
- 原木運(yùn)輸合同范例
- 變更購(gòu)房合同范本模板
- 2024年01月北京市地質(zhì)礦產(chǎn)勘查院所屬事業(yè)單位2024年公開(kāi)招考工作人員筆試歷年高頻考題(難、易錯(cuò)點(diǎn)薈萃)答案帶詳解附后
- 2025屆高考語(yǔ)文二輪復(fù)習(xí)備考策略《道法結(jié)合 科學(xué)備考》
- 2024年江蘇旅游職業(yè)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- 2024年全國(guó)高中數(shù)學(xué)聯(lián)賽試題(及答案)
- 鑄造車間整改和工資改革方案
- 哄女生消氣的100句話
- 企業(yè)稅務(wù)風(fēng)險(xiǎn)防控財(cái)務(wù)規(guī)劃中的稅法合規(guī)策略
- 煤場(chǎng)封閉施工方案
- 《系統(tǒng)集成項(xiàng)目管理工程師》必背100題
- 第三章-碾米工藝與設(shè)備
- 6AM2U7 Rules around us Rules and signs ppt英語(yǔ)教學(xué)課件
評(píng)論
0/150
提交評(píng)論