用户登陆 用户注册
您的位置:首页> 技术文章>内容正文
VB6.0在台安PLC与上位机通讯中的应用
[正文]: 1、引言  可编程控制器以其高可靠性,配置灵活和完善的功能,在工业控制系统中得到越来越广泛的应用。
但对于操作员所需要的报表打印、趋势图形显示、工况查寻、参数在线修改等功能,plc却不能直接方便地提供。
所以通常采用计算机pc与plc组成一个完整的监控系统。
本文以台安tp02系列plc为例,讨论用visual basic(vb)实现plc与上位机的通讯。
  2、vb在通讯控件中的使用  可编程控制器plc与上位机pc之间的通信,下位机为plc,基于其可靠性极高,主要承担控制功能,而上位pc机主要承担监察管理功能,有时兼备部分控制功能,如发出运行,停止命令。
vb语言是基于windows操作系统的功能强、易学易用、主要是面向学习对象的程序设计语言。
vb带有专门管理串行通讯的mscomm控件,只需设置几个主要参数就可以实现plc与pc串行通讯。
要完成通信必须设置mscomm的相关属性值:  (1)commport:设置或传回通信连接端口代号  (2)settings:设置初始化参数。
以字符串的形式设置或传回连接速度、奇偶校验、数据位、停止位等4个参数  (3)portopen:设置或传回通信连接端口的状态  (4)input:从输入寄存器传 回并移除字符  (5)output:将一个字符串写入输出寄存器  (6)inputlen:指定由串行端口读入的字符串长度  (7)inbuffercount:传回在接收寄存器中的字符数  3、软硬件之间:  台安tp02与上位机pc通信时,为了实现两者的通信需要配备通信线。
  4、通信程序的实现  4.1 通信初始化程序  首先,在窗体开始设计之前,添加mscomm控件。
  4.2程序编写:  4.2.1 通信控件mscomm1属性设置:   mscomm1.commport = 1 设置端口号  mscomm1.settings = "19200,e,7,2" 设置通信参数  mscomm1.inputlen = 0 设置读入字符串长度  mscomm1.portopen = true 设置通信端口状态  4.2.2 plc运行程序:  stx36; = "::"  transmitbuf36; = "01?5run"  sum36; = checksum(transmitbuf36;)  etx36; = chr36;(13)  sxd36; = stx36; + transmitbuf36; + sum36; + etx36;  mscomm1.output = sxd36;  do  doevents  loop until mscomm1.inbuffercount >= 12  in136; = mscomm1.input  4.2.3 从plc读取资料,将寄存器内的数据资料在pc上显示以便观察监控(反应时间50ms):  stx36; = "::"  transmitbuf36; = "01?5mrvd000102"  sum36; = checksum(transmitbuf36;)  etx36; = chr36;(13)  sxd36; = stx36; + transmitbuf36; + sum36; + etx36;  mscomm1.output = sxd36;  do  doevents  loop until mscomm1.inbuffercount >= 20  indata36; = mscomm1.input  label2.caption = mid36;(indata36;, 10, 4)  label3.caption = mid36;(indata36;, 14, 4)    4.2.4从plc读取资料,将relayc0001状态通过pc显示进行监控(反应时间50ms):  stx36; = "::"  transmitbuf36; = "01?5mcrc0001"  sum36; = checksum(transmitbuf36;)  etx36; = chr36;(13)  sxd36; = stx36; + transmitbuf36; + sum36; + etx36;  mscomm1.output = sxd36;  do  doevents  loop until mscomm1.inbuffercount >= 13  in436; = mscomm1.input  coil36; = mid36;(in436;, 10, 1)  c1% = cint(coil36;)  label6.caption = c1%  4.2.5 设定relay状态,将relay设定为on(反应时间50ms):  dim c1 as integer  stx36; = "::"  transmitbuf36; = "01?5scsy00011"  sum36; = checksum(transmitbuf36;)  etx36; = chr36;(13)  sxd36; = stx36; + transmitbuf36; + sum36; + etx36;  mscomm1.output = sxd36;  do  doevents  loop until mscomm1.inbuffercount >= 12  in236; = mscomm1.input  4.2.6 plc停止运行:  stx36; = "::"  transmitbuf36; = "01?5stp"  sum36; = checksum(transmitbuf36;)  etx36; = chr36;(13)  sxd36; = stx36; + transmitbuf36; + sum36; + etx36;  mscomm1.output = sxd36;  do  doevents  loop until mscomm1.inbuffercount >= 12  in336; = mscomm1.input    4.2.7 vb6.0下checksum函数代码如下:  private function checksum(transmitbuf36;)  l = len(transmitbuf36;)  add = 0  dim k, sum as integer  for k = 1 to l  tj36; = mid36;(transmitbuf36;, k, 1)  add = add + asc(tj36;)  next k  do while add >= 256  add = add - 256  loop  add = 255 - add + 1  tempbuf36; = hex36;(add)  checksum = ltrim(tempbuf36;)  end function    5、结论  plc与上位机的结合,并通过vb6.0传送数据所构成的计算机监控系统,对于近距离传输数据的现场控制来说是一种性价比很高的解决方案。
充分的利用的plc的抗干扰性能和pc强大的图形显示,浮点运算的特点,与之有效地结合,最大限度,合理的利用资源。



网站首页 培训课程 维修指南
技术文章 家电专栏 供应信息
求购信息 培训资讯 展会信息
电脑专栏 教程下载 资料下载
常用软件 PLC教程 PLC资料
变频伺服 低压电器 维修资料
人机界面 自控仪表 工控机类
文章标题: 搜文章
中国工控资源网手机版 2012
电话:010-67577139 13811659603
培训咨询QQ:657167934 471895637 销售咨询QQ:623769457
联系邮箱:zggkzyw@163.com
 京ICP备11002135号
报时(2026-04-03 04:47:18) 流量统计