用户中心

资讯 > 自动化软件

Vb6.0 实现计算机与三菱PLC的通信

2008.06.11阅读 8887

  摘要:本文介绍了VB 进行串口通信的各种基本方式和三菱可编程控制器之间的通信的程序设计,重点介绍了利用MSCOMM.OCX进行串行通信的设计方法。

  关键词:串行通信,    PLC,   Visual Basic 6.0

  一、引言

  在工业生产中,人们常常面临着数据采集与管理。作为工厂自动化的三大支柱可编程控制器PLC(Programmable Logic Controller),由于其安全可靠,广泛的用于数据采集与控制。生产过程中控制工程网版权所有,要监视PLC内部的数据与运行状况,选用市场上的人机界面或组态软件,虽然功能丰富,但大都价格昂贵,在一些中小规模的生产场合,人们希望能自己用高级语言开发一个简易实用的通信程序。微软公司推出的Visual Basic 6.0,开发串行通信程序时,有两种方法,一种是用Windows API函数,另一种是用VB支持的通信控件MSCOMM.OCX。利用Windows API函数是通过调用读写等函数来操作串口。两种比较,使用MSCOMM.OCX控件编程方便,具有更完善的发送和接收功能。这里采用了M

SCOMM.OCX控件。

  本文根据杭州某包装材料公司原料配料控制系统为背景,简述实现计算机与三菱FX系列PLC通信的实现过程。

  二、硬件与选型

  日本三菱公司是国际著名的工厂自动化设备制造商,工业可编程控制器在国内市场占有率一直保持前列。项目选用三菱FX2N-64MR型PLC,SC-09电缆作为计算机与PLC通信的连线。连接电缆的9针端连接在计算机串口上,另一端连接在PLC的RS-422编程口。系统框图如图一所示

Vb6.0 实现计算机与三菱PLC的通信如图

  三、软件编程

  软件设计主要包括PLC梯形图设计和计算机VB程序、数据库设计。计算机操作系统为Windows98,编程语言用Visual Basic 6.0,数据库选用Access97,梯形图程序在三菱PLC编程软件GPPWIN 软件环境设计。上位机软件实现计算机对PLC内部数据读取、写入参数和保存数据到数据库。

  三菱FX2N型PLC编程口通信协议如下:

     

Vb6.0 实现计算机与三菱PLC的通信如图

  波特率9600,偶校验,8位数据位,一位停止位。

  在新建工程的表单上添加MSCOMM.OCX控件,初始化程序:

  Private Sub Form_Load()

  MSComm1.CommPort = 1 '选择COM1口

  MSComm1.Settings = "9600,e,7,1" 

  End Sub

 

  系统参数主画面如下图所示: 

Vb6.0 实现计算机与三菱PLC的通信如图

  图二

  数据读取子程序:

  Public Function GetData(ByVal StartAddress As StringCONTROL ENGINEERING China版权所有, ByVal GetBytes As Integer, ByVal Hex_Bytes As String) As String

  MSComm1.InputLen = GetBytes * 2 + 4

  MSComm1.Output = STX + CMD_Read + StartAddress + Hex_Bytes + ETX + GetSumChk(CMD_Read + StartAddress + Hex_Bytes + ETX)

  '传送数据组成:起始符+命令+首地址+数据位+结束符+和检验码

  GetData = MSComm1.Input

  MSComm1.InBufferCount = 0

  MSComm1.InputLen = 0

  End Function

  如需读取数据控制工程网版权所有,通过调用GetData子程序。

  参数设置程序可参考读取子程序控制工程网版权所有,只是改变命令而已。

  Access97数据库中包含三个表单,包括参数表、记录表、报警记录表。

  通过如下子程序是将实际称量值(记录表)更新到数据库:

 

  Private Sub SaveData()

  Dim i As Integer

  Dim valid As Boolean

  On Error Resume Next

  valid = True

  Data1.Recordset.AddNew

  Data1.Recordset.Fields("dtime") = TimeSerial(OnHour, OnMinutewww.cechina.cn, OnSecond)

  Data1.Recordset.Fields("systime") = Time      '系统时间

  Data1.Recordset.Fields("

标签:PLC,
版权声明:版权归控制工程网所有,转载请注明出处!

频道推荐

关于我们

控制工程网 & CONTROL ENGINEERING China 全球工业控制、自动化和仪器仪表领域的先锋媒体

CE全球

联系我们

商务及广告合作
任小姐(北京)                 夏小姐(上海)
电话:010-82053688      电话:18616877918
rendongxue@cechina.cn      xiashuxian@cechina.cn
新闻投稿:王小姐

关注我们的微信

关于我们 | 网站地图 | 联系我们
© 2003-2020    经营许可编号:京ICP证120335号
公安机关备案号:110102002318  服务热线:010-82053688