首页 基于VB的上位机与PLC的串行通信

基于VB的上位机与PLC的串行通信

举报
开通vip

基于VB的上位机与PLC的串行通信1  引言 在现代控制系统中,pc机作为上位机负责系统管理、状态监控、信息处理和打印报表等工作,plc作为下位机进行面向现场的实时控制已成为一种典型的系统结构。因此,pc机与plc之间的通信问题便成了系统能否实现的关键。串行通信以其接线简单、容易实现的特点得到了广泛的应用。 visual basic编程软件简单易学、功能强大,利用它可以很方便的实现pc机与plc间的串行通讯。本文以omron公司的cpm2a plc为例,介绍了利用vb6.0实现pc机与plc串行通讯的具体方法。 omron公司的cpm2a plc...

基于VB的上位机与PLC的串行通信
1  引言 在现代控制系统中,pc机作为上位机负责系统管理、状态监控、信息处理和打印报 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 等工作,plc作为下位机进行面向现场的实时控制已成为一种典型的系统结构。因此,pc机与plc之间的通信问题便成了系统能否实现的关键。串行通信以其接线简单、容易实现的特点得到了广泛的应用。 visual basic编程软件简单易学、功能强大,利用它可以很方便的实现pc机与plc间的串行通讯。本文以omron公司的cpm2a plc为例,介绍了利用vb6.0实现pc机与plc串行通讯的具体 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 。 omron公司的cpm2a plc支持host-link通信 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 ,可以与上位计算机进行通信。使用host-link通信协议构成的通信网络,可以很方便的实现上位pc对下位plc的实时监控。 2  原理设计 2.1 系统结构 系统结构如图1所示,计算机作为上位机,plc作为下位机,因omron cpm2a本身带有rs-232串口,因此,利用rs-232电缆将其与pc机的串口(com1或com2)相连,便构成了一个1:1的简单的通讯系统[1]。 图1  系统结构 2.2 host-link通信协议[2] omron公司的host-link通信系统是由上位计算机(ibm pc或兼容机)通过安装在各台plc上的host-link单元连接多台plc构成的网络。上位机对系统中的plc进行集中管理与监控,通过与host link单元的通信,可以编辑或修改各台plc的程序,实时监控其运行过程,实现自动化系统的集散控制。对于小型plc,也可以通过其rs 232c通信端口进行链接。 系统使用host-link通信协议进行通信,上位机具有传送优先权,总是首先发出命令并启动通信,host link单元收到命令交由plc执行,然后将执行结果返回上位机,二者以通信帧为单位,轮流交换数据。通信时一组传送的数据称为“块”,它是命令或响应的单位,从上位机发送到host -link单元的数据块称为命令块,反过来,从host- link单元发送到上位机的数据块称为响应块。多点通信时,可作为单帧发送的最大数据块为131个字符,因此当一个数据块含有132个或更多字符时,要分成两帧或多帧发送。 每个数据块都以设备号及标题开始,以校验码(fcs)及结束符结束。响应块中还包括反应执行结果的响应码。通信 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 如图2所示。 图2  通信帧格式 3  软件实现 3.1 mscomm控件介绍[3] mscomm控件全称为microsoft communications control,是microsoft公司提供的简化windows下串行通信编程的activex控件,它为应用程序提供了通过串行接口收发数据的简化方法。 mscomm控件有两种通信方式,查询方式和事件驱动方式,本文采用事件驱动方式。mscomm控件的属性有许多,其中一些需要在编程时设置,另一些则取默认值即可,具体设置方法可参见相关资料,表1列出了mscomm控件的常用属性。 3.2 plc参数设置[4] plc的通信参数可以采用默认的host-link通信形式,即1位启动位,7位字长,偶校验,2位停止位,9600bit/s。设备号为00。 3.3 上位机软件设计 使用vb通信控件mscomm编写plc监控程序,通过rs-232端口发送并接收数据,关键代码如下: ‘程序初始化并设置串口参数 private sub form_load() mscom.commport = 1                mscom.settings = "9600,e,7,2"    `通信参数设置 mscom.inputmode= cominput -modetext      `以文本方式接收数据 mscom.portopen = true      `打开串口 end sub `向plc写入数据 private sub butwrite_click() `检验串口是否关闭,若串口已关闭,则打开它 if    mscom.portopen = false then mscom.portopen = true end if `plc必须处于编程状态才可以写入数据 plcend="@00sc00"    `“@”为“开始符”表示数据帧开始;“sc”为host-link指令;“00”表示下位plc的设备地址,ascii码表示[4]。 mscom.output = plcend + fcs(plcend) + "*" + chr$(13) mscom.inbuffercount = 0 dim outstring as string outstring="@00wr0010"+ trim(txtcontent.text) outstring = outstring + fcs(outstring) + "*" + chr$(13) `采用异或校验,即fcs校验;“*+ chr$(13)”表示结束符,表示数据帧的结束,即“*↙”[4]。 mscom.inbuffercount = 0 mscom.output = outstring    `向plc发送数据 end sub `从plc读取数据 private sub butread_click() if mscom.portopen = false then mscom.portopen = true end if dim outstring, instring as string outstring="@00rr00100001" outstring=outstring+fcs(outstring) + "*"+chr$(13) mscom.inbuffercount = 0 mscom.output=outstring    `向plc发送读取数据的命令 dim i as integer do while mscom.inbuffercoun -t <= 14 or i > 9000  `i为等待的时间 i = i + 1 loop `提取有用数据并显示 if i < 9000 then instring = mscom.input txtcontent.text = "输出010通道的数据为" + mid(instring, 8, 4) else msgbox ("读取失败") end if end sub `fcs校验 function fcs(byval fcsstr as string) as string dim slen, i, xorresult as integer dim tempfcs as string slen = len(fcsstr) xorresult = 0 for i = 1 to slen xorresult = xorresult xor asc(mid$(fcsstr, i, 1)) next i tempfcs = hex$(xorresult) if len(tempfcs) = 1 then tempfcs = "0" + tempfcs fcs = tempfcs end function 4  结束语 本文给出了利用vb(主要是其中的mscomm通信控件)开发通信程序,实现了plc与pc普通串口通信的实用方法。实验表明,该程序运行稳定可靠,且操作简便。将程序稍加修改,还可应用到其他工业控制设备,在小型工业控制系统中具有一定的应用价值。
本文档为【基于VB的上位机与PLC的串行通信】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_314871
暂无简介~
格式:doc
大小:24KB
软件:Word
页数:0
分类:互联网
上传时间:2019-04-24
浏览量:24