版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、PLCWORLD/ VB與PLC之實(shí)時(shí)控制系統(tǒng)一、前言隨著IT產(chǎn)業(yè)的進(jìn)步及因特網(wǎng)的發(fā)展,傳統(tǒng)工業(yè)控制所使用之PLC控制器,具有高度的穩(wěn)定性及抗噪聲的特性且配線容易及價(jià)格便宜,因此被大量應(yīng)用在自動(dòng)化的場所,己由單機(jī)操作朝向網(wǎng)絡(luò)控制化發(fā)展,本文在探討網(wǎng)絡(luò)控制化的核心技術(shù),使PC藉由RS-232通訊協(xié)議加)控制PLC(如圖一),并透過VB程序語言,達(dá)到遠(yuǎn)程控制及網(wǎng)絡(luò)自動(dòng)化控制的功能。本文以手動(dòng)/自動(dòng)紅綠燈控制為主題,所使用之PLC為國內(nèi)永宏電機(jī)公司所制FB-PLC,內(nèi)含通訊模塊,因此不需額外增購,且可由該公司網(wǎng)站免費(fèi)下載及更新階梯圖發(fā)展軟件(Winproladder)。PC命令訊息RS-232PLC
2、主系統(tǒng);仆系統(tǒng)(Master)(Slave)響應(yīng)訊息圖一二、FB-PLC通訊協(xié)議FB-PLC藉由RS-232與PLC取得接口的傳輸,其傳輸格式(心)如圖二所示,以起始字符(ASCn02H)與結(jié)束字符(ASCn03H)作為整個(gè)命令傳輸及響應(yīng)訊息的傳輸封包,F(xiàn)B-PLC總計(jì)提供15種命令格式(ASCU40H4EH),當(dāng)主系統(tǒng)將命令傳至PLC后,PLC將依據(jù)命令自動(dòng)回傳所對(duì)應(yīng)的訊息,如圖三所示起始字符仆站號(hào)碼命令號(hào)碼本文資料偵誤值checksum霧0500個(gè)ASCU字符圖二范例:將PLC啟動(dòng)(RUN)Master命令STX(02H)0(30H)1(31H)4(34H)1(31H)1(31H)F(46
3、H)9(39H)ETX(03H)PLC回應(yīng)STX(02H)0(30H)1(31H)4(弭H)1(31H)0(30H)F(46H)8(38H)ETX(03H)圖三手動(dòng)/自動(dòng)紅綠燈控制階梯圖程序利用緩存器RO,R4作為綠燈時(shí)間的計(jì)數(shù)器,Rl,R2作為綠燈閃爍次數(shù)及閃爍時(shí)間的計(jì)數(shù)器,R3作為黃燈停留時(shí)間計(jì)數(shù)器,YO、Yl、Y2分別代表東西向紅、黃、綠三個(gè)燈,Y3、Y4、Y5分別代表南北向紅、黃、綠三個(gè)燈。利用輸入X2作手動(dòng)/自動(dòng)的切換控制。當(dāng)PLC處于自動(dòng)模式時(shí),綠燈交換分別由緩存器RO、R4控制;當(dāng)PLC處于手動(dòng)模式時(shí),由輸入XI決定綠燈交換程序。紅綠燈階梯圖的設(shè)計(jì)程序如圖四所示。tuccrNOO
4、ON001N002N007N008N009NO1O圖四手動(dòng)/自動(dòng)紅綠燈控制階梯圖程序四、VB實(shí)時(shí)監(jiān)程序架構(gòu)及程序設(shè)計(jì)PC藉由RS232與PLC取得聯(lián)機(jī),傳送速度設(shè)定為9600bps,整個(gè)聯(lián)機(jī)設(shè)定請參考程序Fonn_Load()段。實(shí)時(shí)監(jiān)控畫面設(shè)計(jì)如圖五所示,當(dāng)執(zhí)行實(shí)時(shí)偵測狀態(tài)按鈕時(shí),桌面將呈現(xiàn)如圖六圖九所示實(shí)時(shí)狀態(tài)圖,狀態(tài)的偵測采用輪詢(polling)方式,依序讀取PLC輸出及輸入的實(shí)時(shí)狀態(tài),程序執(zhí)行請參考程序SendFrame(Data,No);執(zhí)行參數(shù)傳遞按鈕時(shí),桌面將呈現(xiàn)如圖十畫面,當(dāng)使用者修改參數(shù)后,執(zhí)行傳遞參數(shù)按鈕,PLC將依據(jù)新的數(shù)據(jù)執(zhí)行其程序,程序執(zhí)行請參考VB程序Send_R
5、eCClick()段。另傳送命令按鈕提供個(gè)別參數(shù)的讀取和設(shè)定及PLC執(zhí)行程序的加載和存盤等多項(xiàng)功能,桌面呈現(xiàn)如圖一畫面,程序執(zhí)行請參考、卞程序SendCmd_Click()段。PLCWORLD/ #ZOXI3KX3X4X5X6XTX8XOX10XUXL2XI5XUXI5iTOn72Y3V4V5Y6TTT8YDY1011w:oooooooooooo-11-1H叫HHVPIV10圖五實(shí)時(shí)監(jiān)控畫面設(shè)計(jì)圖六東西向綠燈Y0監(jiān)控狀態(tài)圖七東西向黃燈Y1監(jiān)控狀態(tài)圖八南北向綠燈Y3監(jiān)控狀態(tài)圖十參數(shù)設(shè)定傳遞畫面圖九南北向黃燈Y4監(jiān)控狀態(tài)僅姑缺可朋洲檢如命令號(hào)碼巨-|L圖十一個(gè)別參數(shù)命令的傳送選擇畫面PLCWORL
6、D/ # WORLD HYPERLINK file:/ #Check=Calculate_LRC(Data,0)計(jì)算LRC值sendtxt=ClirS(&H2)&Triin(ClientNo)&Tnm(CmdNo)&Trmi(Data)&Trmi(Check)&ChrS(&H3)開頭字符+仆站號(hào)碼+命令號(hào)碼+本文數(shù)據(jù)+偵誤值+結(jié)尾字符Case1:Check=Calculate_LRC(Data,1)計(jì)算LRC值sendtxt=ClirS(&H2)&Triin(ClientNo)&Tnm(Data)&Trim(Check)&ChrS(&H3)開頭字符+仆站號(hào)碼+本文數(shù)據(jù)+偵誤值+結(jié)尾字符Case
7、2:sendtxt=Clir$(&H2)&Trmi(ClientNo)&Trmi(Data)&Trmi(Check_RegText)&Chr(&H3)開頭字符+本文數(shù)據(jù)+結(jié)尾號(hào)符EndSelectMSConmi.Output=sendtxt。透過RS-232送出EndSubPublicFunctionCalculate_LRC(Data,No)AsStrmg計(jì)算LRC值()子程序SelectCaseNoCase0:LRC=2+Asc(Left(ClientNo.1)+Asc(Mid(ClientNo,2,1)+Asc(Left(CmdNo.1)+Asc(Mid(CmdNo,2,1)包含開頭字符
8、Chr$(&H2)、仆站號(hào)碼與命令碼Case1:LRC=2+Asc(Left(ClientNo.1)+Asc(Mid(ClientNo,2,1)EndSelect,將Data一次取一字符加入LRC中Fori=1ToLen(Data)LRC=LRC+Asc(Mid(Data,i,1)NextLRC_Remam=LRCMod16LRC_Quotient=LRC16LRC_Quotient=LRC_QuotientMod16Calculate_LRC=Hex(LRC_Quotieiit)&Hex(LRC_Remain)EndFunctionPTivateSubB_Y_Click(IiidexAsIn
9、teger)IfIndex=0ThenIfby(Iiidex)=1Thenseiidtxt=n424Y0000Mby(Index)=0Elsesendtxt=n423Y0000Mby(Index)=1EndIfElseIfby(Iiidex)=1Thensendtxt=H424Y000M&Fomiat(Hex(Index),H#H)by(Index)=0Elsesendtxt=H423Y000M&Fomiat(Hex(Index),by(Index)=1EndIfEndIfSendFramesendtxt.1EndSubPrivateSubCmdList_Click()SelectCaseCm
10、dList.ListliidexCase0:CmdNo=n40HCasel:CmdNo=n41HCase2:CmdNo=”42“Case3:CmdNo=”43“Case4:CmdNo=n44HCase5:CmdNo=”45“Case6:CmdNo=”46”Case7:CmdNo=n47HCase&CmdNo=n48HCase9:CmdNo=n49HCase10:CmdNo=n4AMCase11:CmdNo=n4BHCase12:CmdNo=”4C”Case13:CmdNo=”4DCase14:CmdNo=n4EHEndSelectEndSubPrivateSubCmdNo_ChangeOSel
11、ectCaseCmdNo.TextCase40:CmdList.Listindex=0Case41:CmdList.Listindex=1Case42”:CmdList.Listindex=2Case”43”:CmdList.Listindex=3Case44:CmdList.Listindex=4Case45”:CmdList.Listindex=5Case46:CmdList.Listlndex=6Case”47”:CmdList.Listlndex=7,取余數(shù)LRC的個(gè)位數(shù)取商數(shù)LRC的|位數(shù)回傳I六進(jìn)制值Y按鈕0子程序如果是第0個(gè)按鈕原先是High就讓它變Low傳送字符串多補(bǔ)一個(gè)0雯改
12、by(Index)內(nèi)容為Low的狀態(tài)Y接點(diǎn)狀態(tài)原先是Low,就讓它變High雯改by(Index)內(nèi)容為High的狀態(tài)如果是第1第11個(gè)按鈕傳送字符串為兩位數(shù),不須補(bǔ)一個(gè)0傳送命令數(shù)據(jù)至RS-232命單淸單選擇0子程序依據(jù)命令淸單來選擇命令命令號(hào)碼改變0子程序依據(jù)選擇命令顯示命令清單Case”48”:CmdList.Listlndex=8PLCWORLD/PLCWORLD/ Case49:CmdList.Listindex=9Casen4AH:CmdList.Listlndex=10Casen4BH:CmdList.Listlndex=11Casen4CH:CmdList.Listlndex=
13、12Casen4DH:CmdList.Listlndex=13CaseM4En:CmdList.Listlndex=14CaseElse:MsgBox”無此命令!vbCntical,M錯(cuò)誤!”EndSelectEndSubPrivateSubConiinandlClickOFormlHideForni2.SliowEndSubPrivateSubConnect_ClickOflag=1Connect.Enabled=FalseDoDoEventsSendFrameM440CY0000,1Fori=0To10DoEventsNextSendFrame”4410X0000”,1LoopWhile(
14、flag=1)EndSub同步狀態(tài)偵測()子程序設(shè)定啟動(dòng)旗號(hào)同步狀態(tài)偵測按鈕失效要求回傳Y0000Y000B共12個(gè)接點(diǎn)狀態(tài)延遲時(shí)間,要求回傳X0000X0010共16個(gè)接點(diǎn)狀重復(fù)執(zhí)行回傳X與Y接點(diǎn)狀態(tài),直到啟動(dòng)旗號(hào)被停止為止PrivateSubForm_Actn-ateOCmdList.Listlndex=1EndSub窗體啟用0子程序預(yù)設(shè)命令為PLC執(zhí)行控制”PrivateSubRegText_Change()RegText改變0子程序ChecRegText=Calcula_LRC(RegText,1)計(jì)算LRC值顯示在ChecRegText上EndSubPrivateSubSendCmd
15、ClickOW專送0子程序IfSendData=nHThenMsgBox“傳送數(shù)據(jù)不可空白!化vbCnticaLn錯(cuò)誤!”ElseCheckText=CalculateLRCCSendData,0)計(jì)算LRC值顯示在檢查碼上SendFrameSendData,0,傳送數(shù)據(jù)EndIfEndSubPrivateSubClearDataClickO,淸除()子程序Fori=0Tol5bx(i)=0InpX(i).BackColor=RGB(255,255,255),接點(diǎn)全部OFF,顯示白色NextFori=0Tollby(i)=0OutYQ.BackColor=RGB(255,255,255),接點(diǎn)
16、全部OFF,顯示白色NextEndSubPrivateSubEndCmd_Click()結(jié)束()子程序IfMSCoimn.PortOpeii=TrueThenMSConun.PortOpen=FalseEndIfEndEndSub關(guān)閉通訊端口程序結(jié)朿PrivateSubForm_Load()MSConun.ConmiPort=1MSConun.Settmgs=”9600、e,7,l”MSConmi.PortOpen=TnieMSConun.RTlireshold=1MSConun.InputLen=0MSConiin.RTSEnable=True送數(shù)據(jù)flag=1flagl=0flag2=1E
17、ndSub窗體加載0子程序指定C0M1作為通訊端口設(shè)定通訊協(xié)議的格式開起通訊端口設(shè)定輸入緩沖區(qū)接到一個(gè)字,即起動(dòng)接收事件(OaComm)設(shè)定每次讀取輸入緩沖區(qū)的數(shù)據(jù)的長度,0表示每次讀取所有數(shù)據(jù)使RequestToSend(RTS)線有效。一般情況下,由計(jì)算機(jī)傳送RTS信號(hào)到調(diào)制解調(diào)器,以請示準(zhǔn)許傳啟動(dòng)旗號(hào)設(shè)定讀出PLC緩存器程序旗號(hào)設(shè)定寫入PLC緩存器程序旗號(hào)PublicSubMSComm_OnCoinin()Dobuffer=buffer&MSConuii.Input止LoopUntilIiiStrCbuffer.Chr(&H3)IfIiiStr(buffer,Chr(&H2)Thenbu
18、ffer=Right(buffer,Len(buffer)-1)EndIfRS-232接收0子程序-直接收字符串,直到收到結(jié)尾字符為去除開頭字符IfIiiStr(buffeEChr(&H3)Thenbuffer=Mid(buffer,l.InStr(l,buffer,Chr(&H3),1)-1)噲除結(jié)尾字符EndIfSelectCaseMid(buffer,3,2)CaseM40M:1HPLC系統(tǒng)狀態(tài)Case”41”:PLC之RUN/STOP控制”Case42”:1”單一個(gè)單點(diǎn)之運(yùn)作控制”Case“43”:1”連續(xù)多個(gè)單點(diǎn)之抑/致能狀態(tài)讀取”Case”44”:判別命令碼1”連續(xù)多個(gè)單點(diǎn)之狀態(tài)讀
19、取XStatus=,M,YStatus=,M,IfLen(buffer)=23ThenFori=0To15XStatiis=XStatus&Mid(buffer,6+i,1)顯示狀態(tài)值謂除XStatus內(nèi)容謂除YStatus內(nèi)容接收到InputX的內(nèi)容015共16個(gè)輸入端將16個(gè)接點(diǎn)的ON/OFF狀態(tài)顯示在XStams上IfMid(XStanis.i+Ll)=lThenInpX(i).BackColor=RGB(255,0.0)bx(i)=1如果接點(diǎn)為ON,顯示紅色ElseInpXQ.BackColor=RGBQ55,255,255)bx(0)=0如果接點(diǎn)為OFF,顯示白色EndIfNext接
20、收到OutputY的內(nèi)容。11共12個(gè)輸出端ElselfLen(buffer)=19ThenFori=0To11YStatiis=YStatiis&Mid(buffer6+i,1)將12個(gè)接點(diǎn)的ON/OFF狀態(tài)顯示在YStanis上IfMid(YStatiis5i+1,1)=1ThenOutY(i).BackColor=RGB(255,0.0)如果接點(diǎn)為ON,顯示紅色by(i)=1ElseOutY(i).BackColor=RGB(255,255,255),如果接點(diǎn)為OFF,顯示白色by(i)=0EndIfNextEndIfCase”45”:”連續(xù)多個(gè)單點(diǎn)之狀態(tài)寫入”Case”46”:1”連續(xù)
21、多個(gè)緩存器之?dāng)?shù)據(jù)讀取”Case”47”:*”連續(xù)多個(gè)緩存器之?dāng)?shù)據(jù)寫入”Case”48”:”任意單點(diǎn)/緩存器混合之狀態(tài)/數(shù)據(jù)讀取”Case”49”:1”任意單點(diǎn)/緩存器混合之狀態(tài)/數(shù)據(jù)寫入”CaseM4AH:EndSubPrivateSubRead_PLC_Click()FileDlg.Filter=FileDlg.ShowSavefh=FileDlg.FileNameOnErrorGoToerrOpenfiiForAppendAs#1Forpage_no=0To127RegTxt=“SendFrame4A”&Forniat(Hex(page_no),1DoUntilflagl=1DoEvent
22、sLoopFori=3ToLen(Reg)-2Ifi=4TlienRegTxt=RegTxt&Elselfi=5ThenIfpage_no16ThenRegTxt=RegTxt&H0H&Hex(pagjno)ElseRegTxt=RegTxt&Hex(page_no)EndIfElseRegTxt=RegTxt&Mid(Reg,i,1)EndIf讀取PLC()子程序預(yù)設(shè)擴(kuò)展名為3Ttxt顯示儲(chǔ)存檔案對(duì)話盒指定檔名fii如有錯(cuò)誤發(fā)生,跳至錯(cuò)誤處理將讀出的緩存器內(nèi)容存盤緩存器共128頁每次淸除轉(zhuǎn)換后要存檔的Reg內(nèi)容直到計(jì)算機(jī)讀出PLC緩存器程序旗號(hào)為止從頭開始至偵誤碼前結(jié)束將命令”4A”改成”4
23、B“少于兩碼的,補(bǔ)一位數(shù)的”0”本來就是兩碼的,不須補(bǔ)”0“將讀取進(jìn)來的RegText轉(zhuǎn)換成要存檔的RegNext1“程序存盤“Reg=bufier顯示緩存器內(nèi)容存入Regflagl=1設(shè)定讀岀緩存器旗標(biāo),以利Read_PLC_Click()子程序執(zhí)行CaseM4BH:”程序加載”flag2=1設(shè)定寫入緩存器旗標(biāo),以利Wnte_PLC_Click()子程序執(zhí)行Case4CH:緩存器數(shù)據(jù)存盤”CaseM4DH:緩存器數(shù)據(jù)加載”CaseU4EH:測試回傳”CaseElse:1”未知命令”&Mid(buffer,3,2)&vbCrLf&bufferEndSelect|PLCWORLD/PLCWOBL
24、D RegText=RegTxtWrite#1,RegTextflagl=0Nexterr:Close#1EndSubPrivateSubRunCmd_Click()IfMSConini.PortOpen=FaLseThenMSConun.PortOpen=TnieEndIfRunCmd.Enabled=FalseStopCmd.Enabled=TnieConnect.Enabled=TnieSendFrame”411”,1flag=1EndSubPrivateSubSendData_Change()ClieckSum=Calculate_LRC(SendData,0)EndSubPrivat
25、eSubStopCmd_Click()RunCmd.Enabled=TrueStopCmd.Enabled=FalseConnect.Enabled=Falseflag=0Fori=0To4SendFrame410”,1NextFori=0Tollby(i)=0OutY(i).BackColor=RGB(255,255,255)NextEndSub執(zhí)行0子程序1顯示在RegText上寫入檔案淸除旗號(hào),等待下次再執(zhí)行錯(cuò)誤處理關(guān)閉檔案執(zhí)行按鈕失效停止按鈕有效同步狀態(tài)偵測按鈕有效傳送命令設(shè)宦啟動(dòng)旗號(hào),執(zhí)行循環(huán)傳送數(shù)據(jù)改變0子程序計(jì)算檢查碼顯示在Checksum上停止0子程序執(zhí)行按鈕有效停止按鈕失效同
26、步狀態(tài)偵測按鈕有效停止啟動(dòng)旗號(hào),跳離執(zhí)行循環(huán)為防止無法立即關(guān)閉,傳送三次命令,強(qiáng)迫停止接點(diǎn)全部OFF,顯示白色Fo”2程序代碼如下:DimRO.RhR2.R3.R4PnvateSubBackMainClick()UnloadMeFomil.ShowEndSubPcvateSubDefault_Ref_ClickOEWGreenTin=25GreenFlashCoimt=2GreenFlashTime=4YellowTmie=20SN_GreenTmie=25EndSubPnvateSubEW_GreenTmie_Change()VScrollGTZEWAlue=EWGreenTinieEndSubPcvateSubForm_Activate()DefaultRefClickEndSubPcvateSubForm_Load()VScrollGFT=GreeiiFlashTinieVScrollGFC=GreeiiFlashCountVScrollYT=YellowTimeVScrollGTEW=EWGreenTimeVScrollGTSN=SN.GreenTimeEndS
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年廈門市計(jì)量檢定測試院招聘備考題庫帶答案詳解
- 2026年天津光華外國語學(xué)校招聘備考題庫附答案詳解
- 2026年廈門市濱海小學(xué)關(guān)于非在編人員招聘備考題庫完整答案詳解
- 2026年農(nóng)業(yè)農(nóng)村部科技發(fā)展中心招聘備考題庫及完整答案詳解1套
- 2026年國網(wǎng)英大國際控股集團(tuán)有限公司高校畢業(yè)生招聘調(diào)劑備考題庫(第一批)及參考答案詳解1套
- 2026年北京寶鋼北方貿(mào)易有限公司招聘備考題庫帶答案詳解
- 2026年中建新疆建工集團(tuán)第三建設(shè)工程有限公司招聘備考題庫及答案詳解1套
- 2026年廣州市荔灣區(qū)西關(guān)實(shí)驗(yàn)小學(xué)龍溪學(xué)校事業(yè)編制教師招聘備考題庫帶答案詳解
- 2026年廈門波特曼七星灣酒店有限公司招聘備考題庫及完整答案詳解一套
- 2026年廈門市翔安教育集團(tuán)海濱幼兒園臨時(shí)頂崗幼兒教師招聘備考題庫及答案詳解1套
- DB32T 5124.1-2025 臨床護(hù)理技術(shù)規(guī)范 第1部分:成人危重癥患者目標(biāo)溫度管理
- 專題13 三角函數(shù)中的最值模型之胡不歸模型(原卷版)
- 職高高二語文試卷及答案分析
- 2025屆江蘇省南通市高三下學(xué)期3月二?;瘜W(xué)試題(含答案)
- 班主任安全管理分享會(huì)
- 消防救援預(yù)防職務(wù)犯罪
- 畢業(yè)論文答辯的技巧有哪些
- 酒店安全風(fēng)險(xiǎn)分級(jí)管控和隱患排查雙重預(yù)防
- 2018年風(fēng)電行業(yè)事故錦集
- 一體化泵站安裝施工方案
- 《重點(diǎn)新材料首批次應(yīng)用示范指導(dǎo)目錄(2024年版)》
評(píng)論
0/150
提交評(píng)論