




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要:本文分析了Windows环境下串行通信的编程技术,介绍了在Windows环境下用VB6.0语言编写串行通信程序,实现了PC机与三菱Q00PLC之间的串行通信,并提出了在实际应用中提高串行通信性能的方法。关键词:VB;Win32API函数;串行通信;Q00PLC 一概述在工业控制中,串口是常用的计算机与外部串行设备之间的数据传输通道。由于串行通信结构简单、可靠性强、实现及使用成本低、通讯标准统一,因此在测控系统和工程中应用十分广泛。目前Windows在工业生产监控管理系统中已成为主流平台,Windows环境下的上、下位机之间的串行通信是设计与开发监控管理系统和集散控制系统的重要组成部分。Microsoft公司的VB+6.0是一种高级编程语言,它提供的串列通信控件封装了封装了Win32API中的标准通信函数,可以让开发者方便开发串列通信上位机程序。PLC是现在控制领域不可缺少的部分,已经非常普及,如何简便的与PLC交互已经成为众多厂商新的竞争战场。由此产生了人机界面、组态软件等产品。这些产品的产生大大简化了对PLC的控制,操作,使用更方便。但也有共同的缺点:价格过高和开放性较差。VB作为“原始的编程语言在这两方面无疑有着明显的优势。二串行通信串行通信是指计算机主机与外设之间以及主机系统与主机系统之间数据的串行传送。使用串口通信时,发送和接收到的每一个字符实际上都是一次一位的传送的,每一位为1或者为0。2.1串行通信的分类串行通信可以分为同步通信和异步通信两类。同步通信是按照软件识别同步字符来实现数据的发送和接收,异步通信是一种利用字符的再同步技术的通信方式。2.1.1同步通信同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。这里的信息帧与异步通信中的字符帧不同,通常含有若干个数据字符。它们均由同步字符、数据字符和校验字符(CRC)组成。其中同步字符位于帧开头,用于确认数据字符的开始。数据字符在同步字符之后,个数没有限制,由所需传输的数据块长度来决定;校验字符有1到2个,用于接收端对接收到的字符序列进行正确性的校验。同步通信的缺点是要求发送时钟和接收时钟保持严格的同步。2.1.2异步通信异步通信中,在异步通行中有两个比较重要的指标:字符帧格式和波特率。数据通常以字符或者字节为单位组成字符帧传送。字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收。发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。接收端检测到传输线上发送过来的低电平逻辑0(即字符帧起始位)时,确定发送端已开始发送数据,每当接收端收到字符帧中的停止位时,就知道一帧字符已经发送完毕。2.2几种流行的串行通信协议RS232、RS-422和RS485都是串行数据接口标准,最初都是由电子工业协会(EIA)制订并发布的,RS-232在1962年发布,后来陆续有不少改进版本,其中最常用的是RS-232-C版。目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。RS-232被定义为一种在低速率串行通信中增加通信距离的单端标准。RS-232采取不平衡传输方式,即所谓单端通信。标准规定,RS232的传送距离要求可达50英尺(约15米),最高速率为20kbps。图1RS232端口的硬件握手和连接方式RS232的通讯信号电平为正负515V,这不同于数字电路的03V或05V,所以要以RS232的方式进行通讯,源信号不匹配时需要进行电压转换。当进行数据传送时,只用一根数据线且只能进行单向传输的方式,称为单工方式;当进行数据传送时,只用一根数据线利用不同时段进行双向传输的方式,称为半双工方式;当进行数据传送时,利用两根数据线同时进行发送和接收的方式,称为全双工方式。由于RS-232存在传输距离有限等不足,于是RS-422诞生了。RS-422标准全称是“平衡电压数字接口电路的电气特性”,它定义了一种平衡通信接口,将传输速率提高到10Mbps,传输距离延长到4000英尺(约1219米),并允许在一条平衡总线上连接最多10个接收器。当然,RS422也有缺陷:因为其平衡双绞线的长度与传输速率成反比,所以在100kbps速率以内,传输距离才可能达到最大值,也就是说,只有在很短的距离下才能获得最高传输速率。一般在100米长的双绞线上所能获得的最大传输速率仅为1Mbps。另外有一点必须指出,在RS-422通信中,只有一个主设备(Master),其余为从设备(Salve),从设备之间不能进行通信,所以RS-422支持的是点对多点的双向通信。为扩展应用范围,RS于1983年在RS-422基础上制定了RS-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/RS-485-A标准。由于RS-485是从RS-422基础上发展而来的,所以RS-485许多电气规定与RS-422相仿,如都采用平衡传输方式、都需要在传输线上接终接电阻、最大传输距离约为1219米、最大传输速率为10Mbps等。但是,RS-485可以采用二线与四线方式,采用二线制时可实现真正的多点双向通信,而采用四线连接时,与RS-422一样只能实现点对多点通信,但它比RS-422有改进,无论四线还是二线连接方式总线上可接多达32个设备。三菱的Q00PLC的通讯接口为RS232。三三菱Q00PLC的通讯方式3.1通讯协议三菱的Q00PLC采用列MELSEC通讯协议,即MC协议。MC协议采用帧的形式进行通讯,它包括以下几种形式:(1)、QnA兼容3C帧。此种帧包括1-4种格式。(2)、QnA兼容4C帧。此种帧包括1-5种格式。(3)、QnA兼容2C帧。此种帧包括1-4种格式。(4)、QnA兼容3E帧。此种帧包括1-4种格式。(5)、A兼容1E帧。3.2实现方式(1)命令文件的发送采用MC协议进行的数据通讯采用半双工通讯方式进行。访问PLCCPU时对于刚刚进行的命令文件发送请在接收PLCCPU侧发送的响应文件后发送下一个命令文件(在响应文件的接受尚未完成之前不能进行下一个命令文件的发送)图2命令文件和响应的顺序(2)对于命令文件不能接收正常结束的响应文件时接受异常结束的响应文件时,可根据响应文件中的出错代码进行处理3.3Q00PLC的帧格式Q00PLC内置了MC通讯协议的QnA兼容3C帧和RS232通讯接口,所以不用外加通讯模块就可以实现与上位机的通讯。本例拟采用QnA兼容3C帧的第4种格式进行通讯。3.3.1对方设备读出上位站PLCCPU的数据时a上位机向PLCCPU侧传输命令传输文件,下图中箭头所指的区域为请求数据区。图3读取时的发送帧格式bPLCCPU侧响应上位机的应答传输文件,下图中箭头所指的区域为从PLC中读出并返回的数据图4返回的帧格式3.3.2对方设备向上位站PLCCPU写入数据时a帧格式与图3中的格式类似,只是帧中的命令和子命令为读取时的命令,请求数据区中增加了写入的数据。b帧格式与图34中的格式类似,只是没有返回的数据。四Windows环境下VB与Q00PLC通信的实现4.1系统分析与说明Windows系统为每个通信设备开辟了用户定义的输入/输出缓冲区,数据进出通信口均由系统后台来完成,应用程序只需完成对输入/输出缓冲区操作就可以了。实际过程是每接收一个字符就产生一个低级硬件中断,Windows系统中的串行驱动程序就取得了控制权,并将接收到的字符放入缓冲区,然后将控制权返还给正在运行的应用程序。如果输入缓冲区数据已满,串行驱动程序用当前定义的流控制机制通知发送方停止发送数据,而队列中的数据按先进先出(FIFO)的次序处理。在Windows中,串行通信有两种工作方式:查询方式和事件驱动方式。查询方式占用大量的CPU时间,效率较低,但是数据不易丢失;而Win32操作系统基于事件驱动(也称为消息驱动)机制的内核,支持基于进程的协同式多任务和基于多线程的抢先式多任务。基于事件驱动的多线程应用程序实际上在其内部实现了多任务扩展,为代码赋予了并行执行的特性,可以使应用程序对CPU的利用率大大提高,从而提高系统的响应能力,加快信息处理速度,提高通信程序的实时性和增大数据吞吐量。基于以上分析,以事件驱动方式实现Windows下的串行通信更具优势,它能完成较大数据量的实时通信,大大提高了通信的效率,故本程序采用此种方式进行串行通信,至于通信的可靠性可以通过软件设计来保证。Windows平台下利用VB实现串口通信主要有以下两种方法:1)使用WindowsAPI(ApplicationProgramInterface)函数。这种方法可编写移植性强的通信程序,但必须首先用Declare声明VB中所要用的动态链接库DLL,这需要对WindowsAPI函数有深入的了解,编程较复杂。2)使用Microsoft公司提供的ActiveX控件MSComm。该通信控件通过改变对象属性,向对象发送消息及为对象事件编写响应代码,可以方便地完成用户应用程序间的串行通信,既可实现API函数的所有功能,又使得编程效率提高,应用功能增强,并且程序简单明了。对于MSComm控件实现串口通信的操作很多文献都有论述,该控件的主要属性可参考相关文献,在此仅列出常用的属性和方法。需要强调的是:在数据发送与接收过程中,都要通过一个Variant类型变量作为中介。发送数据时,必须先将要发送的数据赋给一个Variant类型变量,再把该Variant变量赋值给MSComm的Output属性;同样接受数据时,也应先将MSComm的Input属性赋值给Variant变量,待接收端收到后必须转换成其它类型(如字符型、二进制型)的数据才能进行处理。本例采用MSComm控件来实现。下面介绍MSCOMM控件的属性:CommPort:设定通信连接端口代号,程序必须指定所要使用的串行端口号,Windows系统使用所设定的端口与外界通信。PortOpen:设定通信口状态,若为真,通信端口打开,否则关闭。Settings:设定通信口参数,其格式是bbbb,p,d,s,其中bbbb为通信速率(波特率),p为通信检查方式(奇偶校验),d为数据位数,s为停止位数,其设定应与PLC的设定一致。Input:将对方传送至输入缓冲区的字符读入到程序。Output:将字符写入输出缓冲区。InBufferCount:传回接收缓冲区中的字符数。OutBufferCount:传回输出缓冲区中的字符数。InputLen:设定串行端口读入字符串的长度。InputMode:设定接收数据的方式。Rthreshold:设定引发接收事件的字符数。CommEvent:传回OnComm事件发生时的数值码OnComm事件:无论是错误或事件发生,都会触发此事件。4.2具体实现本例程序为读取Q00PLC的输入输出点的状态。监控界面如下所示:图5监控界面4.2.1控件参数的初始化MSComm1.InBufferCount=0清空输入缓冲区MSComm1.OutBufferCount=0清空输出缓冲区MSComm1.CommPort=1设定串行通信口为com1MSComm1.Settings=19200,O,8,1波特率19200,奇校验,8位数据位,1位停止位MSComm1.InputLen=0一次读入输入缓冲区中的字符串的长度为缓冲区中的所有数据MSComm1.RThreshold=62输入缓冲区中每次接到62个字符就产生一次OnComm事件MSComm1.PortOpen=True打开端口DimSTXAsString以下为MC协议中的ASCII码DimENQAsStringDimACKAsStringDimCRAsStringDimLFAsStringDimNAKAsStringSTX=Chr$(&H2)ENQ=Chr$(&H5)ACK=Chr$(&H6)CR=Chr$(&HD)LF=Chr$(&HA)4.2.2计算机与PLC通信程序PrivateSubTimer1_Timer()DimSDAsStringMSComm1.InBufferCount=0MSComm1.OutBufferCount=0IfF=1ThenSD=ENQ+F9+0000FF00+0401+0001+X+000020+0030+CR+LFElseSD=ENQ+F9+0000FF00+0401+0001+Y+000050+0030+CR+LFEndIfMSComm1.Output=SDTimer1.Enabled=FalseEndSubOnComm事件PrivateSubMSComm1_OnComm()Dimi,jAsIntegerDimRD,Temp,RDwAsStringIfMSComm1.CommEvent=comEvReceiveThenRD=MSComm1.InputIfLeft(RD,1)=STXThenRDw=Mid(RD,12,48)j=0SelectCaseFCase1j=48Case-1j=96EndSelectFori=1To48Temp=Mid(RDw,i,1)IfF=1ThenIfTemp=1ThenLalel(i-1).BackColor=&H80FF80ElseIfi=3ThenLalel(i-1).BackColor=&H
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 饮料合作加盟合同范本
- 公司聘用文秘合同范本
- 隔热夹芯板采购合同范本
- 公司代签合同范本
- 香港公司股权合同范本
- 基地鱼塘租售合同范本
- 新款合同范本模板
- 衣物袋采购合同范本
- 仓库旧料回收合同范本
- 车辆安全协议合同范本
- 2022年江苏省春季高考数学试卷
- XXX加油站风险分级管控台账
- 甘12J8 屋面标准图集
- 购买设备合同
- GB/T 28288-2012足部防护足趾保护包头和防刺穿垫
- GB/T 19666-2019阻燃和耐火电线电缆或光缆通则
- GA/T 1241-2015法庭科学四甲基联苯胺显现血手印技术规范
- 小学和初中科学教学衔接
- 《循证医学》治疗性研究证据的评价和应用
- “李可中医药学术流派论治厥阴病”-课件
- 通用技术作品设计报告
评论
0/150
提交评论