版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PLCWORLD/ VB与PLC之实时控制系统一、前言随着IT产业的进步及因特网的发展,传统工业控制所使用之PLC控制器,具有高度的稳定性及抗噪声的特性且配线容易及价格便宜,因此被大量应用在自动化的场所,己由单机操作朝向网络控制化发展,本文在探讨网络控制化的核心技术,使PC藉由RS-232通讯协议加)控制PLC(如图一),并透过VB程序语言,达到远程控制及网络自动化控制的功能。本文以手动/自动红绿灯控制为主题,所使用之PLC为国内永宏电机公司所制FB-PLC,内含通讯模块,因此不需额外增购,且可由该公司网站免费下载及更新阶梯图发展软件(Winproladder)。PC命令讯息RS-232PLC
2、主系统;仆系统(Master)(Slave)响应讯息图一二、FB-PLC通讯协议FB-PLC藉由RS-232与PLC取得接口的传输,其传输格式(心)如图二所示,以起始字符(ASCn02H)与结束字符(ASCn03H)作为整个命令传输及响应讯息的传输封包,FB-PLC总计提供15种命令格式(ASCU40H4EH),当主系统将命令传至PLC后,PLC将依据命令自动回传所对应的讯息,如图三所示起始字符仆站号码命令号码本文资料侦误值checksum霧0500个ASCU字符图二范例:将PLC启动(RUN)Master命令STX(02H)0(30H)1(31H)4(34H)1(31H)1(31H)F(46
3、H)9(39H)ETX(03H)PLC回应STX(02H)0(30H)1(31H)4(弭H)1(31H)0(30H)F(46H)8(38H)ETX(03H)图三手动/自动红绿灯控制阶梯图程序利用缓存器RO,R4作为绿灯时间的计数器,Rl,R2作为绿灯闪烁次数及闪烁时间的计数器,R3作为黄灯停留时间计数器,YO、Yl、Y2分别代表东西向红、黄、绿三个灯,Y3、Y4、Y5分别代表南北向红、黄、绿三个灯。利用输入X2作手动/自动的切换控制。当PLC处于自动模式时,绿灯交换分别由缓存器RO、R4控制;当PLC处于手动模式时,由输入XI决定绿灯交换程序。红绿灯阶梯图的设计程序如图四所示。tuccrNOO
4、ON001N002N007N008N009NO1O图四手动/自动红绿灯控制阶梯图程序四、VB实时监程序架构及程序设计PC藉由RS232与PLC取得联机,传送速度设定为9600bps,整个联机设定请参考程序Fonn_Load()段。实时监控画面设计如图五所示,当执行实时侦测状态按钮时,桌面将呈现如图六图九所示实时状态图,状态的侦测采用轮询(polling)方式,依序读取PLC输出及输入的实时状态,程序执行请参考程序SendFrame(Data,No);执行参数传递按钮时,桌面将呈现如图十画面,当使用者修改参数后,执行传递参数按钮,PLC将依据新的数据执行其程序,程序执行请参考VB程序Send_R
5、eCClick()段。另传送命令按钮提供个别参数的读取和设定及PLC执行程序的加载和存盘等多项功能,桌面呈现如图一画面,程序执行请参考、卞程序SendCmd_Click()段。PLCWORLD/ #ZOXI3KX3X4X5X6XTX8XOX10XUXL2XI5XUXI5iTOn72Y3V4V5Y6TTT8YDY1011w:oooooooooooo-11-1H叫HHVPIV10图五实时监控画面设计图六东西向绿灯Y0监控状态图七东西向黄灯Y1监控状态图八南北向绿灯Y3监控状态图十参数设定传递画面图九南北向黄灯Y4监控状态僅姑缺可朋洲檢如命令號碼巨-|L图十一个别参数命令的传送选择画面PLCWORL
6、D/ # WORLD HYPERLINK file:/ #Check=Calculate_LRC(Data,0)计算LRC值sendtxt=ClirS(&H2)&Triin(ClientNo)&Tnm(CmdNo)&Trmi(Data)&Trmi(Check)&ChrS(&H3)开头字符+仆站号码+命令号码+本文数据+侦误值+结尾字符Case1:Check=Calculate_LRC(Data,1)计算LRC值sendtxt=ClirS(&H2)&Triin(ClientNo)&Tnm(Data)&Trim(Check)&ChrS(&H3)开头字符+仆站号码+本文数据+侦误值+结尾字符Case
7、2:sendtxt=Clir$(&H2)&Trmi(ClientNo)&Trmi(Data)&Trmi(Check_RegText)&Chr(&H3)开头字符+本文数据+结尾号符EndSelectMSConmi.Output=sendtxt。透过RS-232送出EndSubPublicFunctionCalculate_LRC(Data,No)AsStrmg计算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)、仆站号码与命令码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,取余数LRC的个位数取商数LRC的|位数回传I六进制值Y按钮0子程序如果是第0个按钮原先是High就让它变Low传送字符串多补一个0雯改
12、by(Index)内容为Low的状态Y接点状态原先是Low,就让它变High雯改by(Index)内容为High的状态如果是第1第11个按钮传送字符串为两位数,不须补一个0传送命令数据至RS-232命单淸单选择0子程序依据命令淸单来选择命令命令号码改变0子程序依据选择命令显示命令清单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错误!”EndSelectEndSubPrivateSubConiinandlClickOFormlHideForni2.SliowEndSubPrivateSubConnect_ClickOflag=1Connect.Enabled=FalseDoDoEventsSendFrameM440CY0000,1Fori=0To10DoEventsNextSendFrame”4410X0000”,1LoopWhile(
14、flag=1)EndSub同步状态侦测()子程序设定启动旗号同步状态侦测按钮失效要求回传Y0000Y000B共12个接点状态延迟时间,要求回传X0000X0010共16个接点状重复执行回传X与Y接点状态,直到启动旗号被停止为止PrivateSubForm_Actn-ateOCmdList.Listlndex=1EndSub窗体启用0子程序预设命令为PLC执行控制”PrivateSubRegText_Change()RegText改变0子程序ChecRegText=Calcula_LRC(RegText,1)计算LRC值显示在ChecRegText上EndSubPrivateSubSendCmd
15、ClickOW专送0子程序IfSendData=nHThenMsgBox“传送数据不可空白!化vbCnticaLn错误!”ElseCheckText=CalculateLRCCSendData,0)计算LRC值显示在检查码上SendFrameSendData,0,传送数据EndIfEndSubPrivateSubClearDataClickO,淸除()子程序Fori=0Tol5bx(i)=0InpX(i).BackColor=RGB(255,255,255),接点全部OFF,显示白色NextFori=0Tollby(i)=0OutYQ.BackColor=RGB(255,255,255),接点
16、全部OFF,显示白色NextEndSubPrivateSubEndCmd_Click()结束()子程序IfMSCoimn.PortOpeii=TrueThenMSConun.PortOpen=FalseEndIfEndEndSub关闭通讯端口程序结朿PrivateSubForm_Load()MSConun.ConmiPort=1MSConun.Settmgs=”9600、e,7,l”MSConmi.PortOpen=TnieMSConun.RTlireshold=1MSConun.InputLen=0MSConiin.RTSEnable=True送数据flag=1flagl=0flag2=1E
17、ndSub窗体加载0子程序指定C0M1作为通讯端口设定通讯协议的格式开起通讯端口设定输入缓冲区接到一个字,即起动接收事件(OaComm)设定每次读取输入缓冲区的数据的长度,0表示每次读取所有数据使RequestToSend(RTS)线有效。一般情况下,由计算机传送RTS信号到调制解调器,以请示准许传启动旗号设定读出PLC缓存器程序旗号设定写入PLC缓存器程序旗号PublicSubMSComm_OnCoinin()Dobuffer=buffer&MSConuii.Input止LoopUntilIiiStrCbuffer.Chr(&H3)IfIiiStr(buffer,Chr(&H2)Thenbu
18、ffer=Right(buffer,Len(buffer)-1)EndIfRS-232接收0子程序-直接收字符串,直到收到结尾字符为去除开头字符IfIiiStr(buffeEChr(&H3)Thenbuffer=Mid(buffer,l.InStr(l,buffer,Chr(&H3),1)-1)哙除结尾字符EndIfSelectCaseMid(buffer,3,2)CaseM40M:1HPLC系统状态Case”41”:PLC之RUN/STOP控制”Case42”:1”单一个单点之运作控制”Case“43”:1”连续多个单点之抑/致能状态读取”Case”44”:判别命令码1”连续多个单点之状态读
19、取XStatus=,M,YStatus=,M,IfLen(buffer)=23ThenFori=0To15XStatiis=XStatus&Mid(buffer,6+i,1)显示状态值谓除XStatus内容谓除YStatus内容接收到InputX的内容015共16个输入端将16个接点的ON/OFF状态显示在XStams上IfMid(XStanis.i+Ll)=lThenInpX(i).BackColor=RGB(255,0.0)bx(i)=1如果接点为ON,显示红色ElseInpXQ.BackColor=RGBQ55,255,255)bx(0)=0如果接点为OFF,显示白色EndIfNext接
20、收到OutputY的内容。11共12个输出端ElselfLen(buffer)=19ThenFori=0To11YStatiis=YStatiis&Mid(buffer6+i,1)将12个接点的ON/OFF状态显示在YStanis上IfMid(YStatiis5i+1,1)=1ThenOutY(i).BackColor=RGB(255,0.0)如果接点为ON,显示红色by(i)=1ElseOutY(i).BackColor=RGB(255,255,255),如果接点为OFF,显示白色by(i)=0EndIfNextEndIfCase”45”:”连续多个单点之状态写入”Case”46”:1”连续
21、多个缓存器之数据读取”Case”47”:*”连续多个缓存器之数据写入”Case”48”:”任意单点/缓存器混合之状态/数据读取”Case”49”:1”任意单点/缓存器混合之状态/数据写入”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()子程序预设扩展名为3Ttxt显示储存档案对话盒指定檔名fii如有错误发生,跳至错误处理将读出的缓存器内容存盘缓存器共128页每次淸除转换后要存档的Reg内容直到计算机读出PLC缓存器程序旗号为止从头开始至侦误码前结束将命令”4A”改成”4
23、B“少于两码的,补一位数的”0”本来就是两码的,不须补”0“将读取进来的RegText转换成要存档的RegNext1“程序存盘“Reg=bufier显示缓存器内容存入Regflagl=1设定读岀缓存器旗标,以利Read_PLC_Click()子程序执行CaseM4BH:”程序加载”flag2=1设定写入缓存器旗标,以利Wnte_PLC_Click()子程序执行Case4CH:缓存器数据存盘”CaseM4DH:缓存器数据加载”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执行0子程序1显示在RegText上写入档案淸除旗号,等待下次再执行错误处理关闭档案执行按钮失效停止按钮有效同步状态侦测按钮有效传送命令设宦启动旗号,执行循环传送数据改变0子程序计算检查码显示在Checksum上停止0子程序执行按钮有效停止按钮失效同
26、步状态侦测按钮有效停止启动旗号,跳离执行循环为防止无法立即关闭,传送三次命令,强迫停止接点全部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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB42-T 2401-2025 生物防火隔离带建设技术规范
- 十堰市2026-2027学年高考仿真模拟物理试卷(含答案解析)
- 2026年教务处二季度教学管理总结
- 工厂生产计划员2026年二季度生产计划排布工作总结
- 高温天气员工安全生产意识课件
- 2026年秋季初中开学第一课 交通安全知识课件
- 2026年北师大版小学三年级数学上册第一单元《时、分、秒》标准教案
- 会计学基础(第9版 立体化数字教材版)课件全套 陈爱玲 第1-8章 总论 -会计职业道德
- 稳定型冠心病康复方案
- 精神科护理发展现状
- 2026广西质量工程职业技术学院第一批公开招聘工作人员65人考试备考试题及答案详解
- CHS-GWPF2026:欧盟碳边境调节机制CBAM研究报告市场化路径还是市场失灵-中文译版-
- 2026年美妆个护行业洞察数据报告
- 安徽芜湖2026年无为市泉塘镇村级后备干部招聘考试试卷-含答案解析
- 2026年安徽省产品质量监督检验研究院见习人员招募备考题库及答案详解(历年真题)
- 康复专业面试题库和答案
- 2026中盐东兴盐化股份有限公司招聘17人笔试历年参考题库附带答案详解
- 医院综合运营提升方案
- 铁路物流中心设计规范(Q∕CR 9133-2016)
- QBQB5172023冷镦钢盘条规范
- 【《某轮腿复合式跳跃机器人的各参数计算及校核过程案例》10000字】
评论
0/150
提交评论