




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VB与FXPLC串口通讯一前言随着生产自动化程度的不断提高,可编程序控制器PLC得到了广泛的应用,特别是小型PLC具有编程简单、性能可靠和价格低的特点,被大量应用于单机控制系统中,如啤酒的稀释控制、离心机控制等。作为设备维修技术人员,一般都能掌握PLC和计算机PC的应用知识,但如何利用PLC和PC来设计小型自控系统,实现简单的数据采集和监控操作,从而满足生产需要,却是一个要深入学习研究的问题。面向生产操作,设计简单有效的控制系统,涉及到三部分的软件编程:第一:PC上人机操作界面的设计。PC作为上位机,一般都是运行在Windows98/2000操作系统下,利用微软提供的可视化编程软件VisualBasic6.0,设备维修技术人员就可设计出优美的人机操作界面,只需进行主要操作功能编程和少量界面控制编程。第二:实现生产工艺要求的PLC控制程序设计。因为是小型控制系统,其生产控制过程并不复杂,技术人员只要充分了解了生产工艺和控制要求,运用PLC编程工具,此部分设计编程并不难。第三:PC与PLC通讯程序的设计。此部分的开发设计较难,需要掌握PC和PLC的有关通讯硬件驱动和通讯协议的知识。但对于小型控制系统来说,主要通过PC串口来通讯,所以通讯程序设计的关键是如何利用VisualBasic6.0中的串口通信控件MSComm控件,并根据PLC的串口通信协议设计出上下位机的数据交换程序。下面以啤酒稀释自控系统设计为例,主要讲解PC和PLC通讯程序的设计要点。二啤酒稀释自控系统设计分析1.啤酒稀释控制要求啤酒稀释是啤酒生产中一个重要环节,通过把高浓度的酒液与脱氧水按比例混合成稀释酒,从而提高啤酒产量和增加啤酒品种,稀释的控制过程很简单,主要步骤有:1)输入高浓度的浓度A和稀释后要达到的浓度B;2)计算出加水量的百分比(B-A)/A*100%;3)根据此百分比和高浓酒的瞬时流量,计算出脱氧水要达到的流量;4)比较水的瞬时流量和计算出的流量,来控制水调节阀的开度,使水瞬时流量等于计算流量。由于酒和水的瞬时流量是变化的,所以3)、4)步要反复进行。以上所有的计算功能和PID调节功能都由PLC完成。2.啤酒稀释的人机操作界面:人机操作主要用来输入啤酒浓度数据、操作命令,直观显示各种流量数据并记录偏差曲线,界面图如下:3.硬件配置本例子中上位机PC选用联想奔腾品牌机,外加RS232转RS485通讯转换卡。下位机PLC选用三菱FX2N-16MR,另加模拟输入模块FX2N-2AD和模拟输出模块FX2N-2DA各一块,外加一个485串口通讯模块PC-485BD。三PC与PLC通讯程序设计分析在分析具体的VB通讯程序之前,先要介绍有关VB串口通信控件MSComm的应用知识和三菱PLC通讯协议。1.MSComm控件简介如图所示是Mscomm控件的图标。它可以用来提供简单的串行端口通信功能,也可以用来创建功能完备、事件驱动的高级通信工具。Mscomm控件提供了一系列标准通信命令的使用界面。使用它可以建立与串行端口的连接,通过串行端口再连接到其它设备(如调制解调器、PLC),发出命令,交换数据,以及监视和响应串行连接中发生的事件和错误。2.MSComm控件的基本属性MSComm控件有很多重要的属性,基本属性如下:属性描述CommPort设置并返回通讯端口号。Settings以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。PortOpen设置并返回通讯端口的状态。也可以打开和关闭端口。Input从接收缓冲区返回和删除字符。Output向传输缓冲区写一个字符串。如下程序打开串行端口COM1MSComm1.CommPort=1使用COM1MSComm1.Settings=9600,N,7,19600波特率,无奇偶校验,7位数据,一个停止位。MSComm1.PortOpen=True打开端口,开始通信。3.MSComm控件的通信方式通信控件有2种不同的方式来处理和解决各类通信软件的开发和设计问题。(1)事件驱动事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如:当线路数据到达本端或CD线和RTS信号线状态发生变化时,要求我们使用相应的事件来跟踪和出理。在这些情况下,Mscomm控件将触发OnComm事件,CommEvent属性值也将被改变。所以在OnComm事件中读取CommEvent属性值就可以检测和处理通信错误等方面的问题。(2)查询方式利用定时器控件Timer,我们可以设计程序每隔一段时间去读取CommEvent的值并处理所发生错误和事件。4.本实例中采用的通讯方式在本例子中,PC与PLC采用无握手协议的串行通信,它们只用两根数据线TD和RD、一根信号地线连接,数据通信采用查询方式。根据系统功能要求,PC需发送两种类型的命令:(1)周期性命令,它由定时器触发引起,每隔0.5秒发送一次。用它来向PLC查询实时显示的数据。如酒、水的瞬时流量,调节阀开度等。(2)非周期性命令,它由操作者按动命令按钮引起,非周期性发送。用它来传送输入参数、操作命令给PLC。在啤酒稀释的人机操作界面中,有运行时不可见的通信控件(MSComm1)一个、定时器控件一个Timer1。通信控件(MSComm1)用于初始化串口数据并打开串口;定时器控件(Timer1)用于每隔0.5秒执行通讯命令,把查询命令从PC发送到PLC,同时接收PLC返回的应答数据。设计通讯数据的发送和查询功能,必须掌握PLC所遵循的通讯协议。5.三菱FX系列PLC通讯协议三菱FX系列PLC共有四种通信模式,本实例采用的是PLC与计算机专用协议通信方式(无须PLC编程,电脑直接读写操纵PLC),其通讯命令字和通讯格式介绍如下:PC发送给PLC的通信命令字命令字注释BR以1点为单位,读出位元件的状态WR以16点为单位,读出位元件的状态,或以1字为单位,读出字元件的值BW以1点为单位,写入位元件的状态WW以16点为单位,写入位元件的状态,或以1字为单位,写入值到字元件BT以1点为单位,设置/复位位元件WT以16点为单位,设置/复位位元件,或以1字为单位,写入值到字元件RR控制PLC运行RUNRS控制PLC停止STOPPC读出PLC设备类型TT连接测试PC发送给PLC的通信命令格式约定说明:ENQ为请求标志,ASCII值5,VB中以chr(5)表示;ACK为正确标志,ASCII值6,VB中以chr(6)表示;STX为请求标志,ASCII值2,VB中以chr(2)表示;EXT为请求标志,ASCII值3,VB中以chr(3)表示;表格中粗体字为需要求和效验的部分;和效验为每一项的ASCII值的总和转换成十六进制后,取其低两位;站号、PLC号、元件数量、和效验都是以十六进制表示;等待延时为0-150毫秒,以十六进制0H-FH表示,如100ms为AH。1)批量读出位元件BR指令格式12345678151617PC侧:ENQ站号PLC号BR延时首地址数量和校验ACK站号PLC号PLC侧:STX站号PLC号数据EXT和校验91011121314例如:要读出站号为5的PLC的X40到X44共5点的状态值,延时100毫秒,假设PLC中X40与X43为OFF,其余为ON,则指令数据如下:注释:请求站号PLC号命令延时元件首地址元件数量和校验代码:ENQ05FFBRAX00400547ASCII码:05H30H35H46H46H42H52H41H5830H30H34H30H30H35H34H37H只要将以上代码以字符串形式(VB中可以表示为chr(5)&”05FFBRAX00400547”)发送到PLC,就会有正确的回应信息,如下:注释:头站号PLC号位元件状态值尾和校验代码:STX05FF01101EXTE7ASCII码:02H30H35H46H46H30H31H31H30H31H03H45H37H2)批量读出字元件WR指令格式12345678151617PC侧:ENQ站号PLC号WR延时首地址数量和校验ACK站号PLC号PLC侧:STX站号PLC号数据EXT和校验91011121314该命令使用与BR命令相同。3)批量写入位元件BW指令格式123456789PC侧:ENQ站号PLC号BW延时首地址数量写入值和校验PLC侧:ACK站号PLC号1011124)批量写入字元件WW指令格式123456789PC侧:ENQ站号PLC号WW延时首地址数量写入值和校验PLC侧:ACK站号PLC号1011126.VB通讯功能块设计分析根据三菱PLC的通讯指令格式,在PC中编写数据查询功能块RevData()和数据发送功能块SendData(),就可以在定时中断处理块TIMER1()中调用查询功能块RevData(),实现PC界面数据定时刷新;在每一次操作命令执行时,调用数据发送功能块SendData(),把控制值写入PLC中,从而实现控制。下面给出这两个功能块的设计程序。1)查询数据函数RevData()(没有和校验)SubRevPLC(iNoAsString,iTypeAsString,iAddAsString,iNumAsString)iNo为PLC站号,iType为元件类型,iAdd为首地址,iNum为元件数量DimStmpAsStringDimcha,jAsIntegerDimChaCountAsIntegerDimCommAsStringSelectCaseiTypeCaseD查询数据寄存器的值Comm=WR命令类型:数据字读cha=Val(&H&iNum)*4数据寄存器的值为十六进制表示,占4个字符CaseM,X,Y查询继电器触电的值Comm=BR命令类型:二进制位读cha=Val(&H&iNum)EndSelectiAdd=Right$(000&iAdd,4)iNum=Right$(0&iNum,2)Stmp=Chr$(5)&iNo&FF&Comm&A&iType&iAdd&iNum输出命令格式ChaCount=6+cha要返回字符个数main.MSComm1.InBufferCount=0输入缓冲区清零main.MSComm1.Output=Stmp设传送缓冲区内容为命令格式Now=Second()DoDoEvents转让控制权,以便让操作系统进行数据传输IfSecond()-Now1ThenExitSubLoopUntilmain.MSComm1.InBufferCount=ChaCount当接收到规定字符时停止循环RevDataTmp=Mid$(main.MSComm1.Input,6,cha)返回数据字符串保存在全局变量RevDataTmp中EndSub2)发送数据函数SendData()(没有和校验)SubSendPLC(iNoAsString,iTypeAsString,iAddAsString,iNumAsString,ivalueAsString)iNo为PLC站号,iType为元件类型,iAdd为首地址,iNum为元件数量,ivalue为写入值DimStmpAsStringDimCommAsStringSelectCaseiTypeCaseD写数据寄存器的值Comm=WW命令类型:数据字写ivalue=Right$(0000+Hex$(Val(ivalue),4)写入值转换成十六进制表示CaseM写继电器触点的值Comm=BW命令类型:二进制位写EndSelectiAdd=Right$(000&iAdd,4)iNum=Right$(0&iNum,2)Stmp=Chr$(5)&iNo&FF&Comm&A&iType&iAdd&iNum&ivalue输出命令格式MSComm1.Output=Stmp输出命令到传送缓冲区Now=Second()DoDoEvents转让控制权,以便让操作系统进行数据传输IfSecond()-Now1ThenExitSubLoopUntilmain.MSComm1.OutBufferCount
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 糖尿病合并外伤的护理
- 面部深导后的护理
- 腹腔镜胃癌切除术护理
- 公司消防知识安全培训
- 2025年重庆招标采购从业人员考试(招标采购专业实务初、中级)试题库及答案
- 渠道对账工作汇报
- 酒精戒断综合症患者的护理
- 结核性脑膜炎病人的护理
- 解读心理学书籍
- 2025建筑材料采购合同
- 注塑行业仓库管理制度
- DB32/T 3691-2019 成品住房装修技术标准
- 2025年广东惠州市交通投资集团有限公司招聘笔试参考题库附带答案详解
- 能源系统工程课件
- 学校膳食监督家长委员会章程
- 《新能源汽车发展历程》课件
- 学校承接社会考试协议书
- 护罩钣金合同协议
- 单位物品借用协议书
- 患乳腺癌的心理护理
- 大学生国家安全教育第1章总论课件可编辑全文
评论
0/150
提交评论