用户登陆 用户注册
您的位置:首页>
技术文章>内容正文
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)