Vb6.0 实现计算机与三菱PLC的通信
2004/7/28 12:03:00
概述:本文介绍了VB 进行串口通信的各种基本方式和三菱可编程控制器之间的通信的程序设计,重点介绍了利用MSCOMM.OCX进行串行通信的设计方法。 关键词:串行通信, PLC, Visual Basic 6.0 Abstract: Describes all kinds of basic serial port communication methods using Visual Basic 6.0 and design of free port communication program of MITSUBISH PLC, furthermore set focus on the designing method of serial port communication through dynamic linked library in Visual Basic 6.0 Key Words: Serial port communication, PLC, Visual Basic 6.0 一、引言 在工业生产中,人们常常面临着数据采集与管理。作为工厂自动化的三大支柱可编程控制器PLC(Programmable Logic Controller),由于其安全可靠,广泛的用于数据采集与控制。生产过程中,要监视PLC内部的数据与运行状况,选用市场上的人机界面或组态软件,虽然功能丰富,但大都价格昂贵,在一些中小规模的生产场合,人们希望能自己用高级语言开发一个简易实用的通信程序。微软公司推出的Visual Basic 6.0,开发串行通信程序时,有两种方法,一种是用Windows API函数,另一种是用VB支持的通信控件MSCOMM.OCX。利用Windows API函数是通过调用读写等函数来操作串口。两种比较,使用MSCOMM.OCX控件编程方便,具有更完善的发送和接收功能。这里采用了MSCOMM.OCX控件。 本文根据杭州某包装材料公司原料配料控制系统为背景,简述实现计算机与三菱FX系列PLC通信的实现过程。 二、硬件与选型 日本三菱公司是国际著名的工厂自动化设备制造商,工业可编程控制器在国内市场占有率一直保持前列。项目选用三菱FX2N-64MR型PLC,SC-09电缆作为计算机与PLC通信的连线。连接电缆的9针端连接在计算机串口上,另一端连接在PLC的RS-422编程口。系统框图如图一所示: 三、软件编程 软件设计主要包括PLC梯形图设计和计算机VB程序、数据库设计。计算机操作系统为Windows98,编程语言用Visual Basic 6.0,数据库选用ACESS97,梯形图程序在三菱PLC编程软件GPPWIN 软件环境设计。上位机软件实现计算机对PLC内部数据读去、写入参数和保存数据到数据库。 三菱FX2N型PLC编程口通信协议如下: 数据读取子程序: Public Function GetData(ByVal StartAddress As String, 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子程序。 参数设置程序可参考读取子程序,只是改变命令而已。 ACESS97数据库中包含三个表单,包括参数表、历史记录表、报警记录表。 通过如下子程序写报警记录到数据库: Private Sub SaveData() Dim i As Integer Dim valid As Boolean On Error Resume Next valid = True For i = 0 To 5 If FixWeight(i) <= 0 Then valid = False Next i Data1.Recordset.AddNew Data1.Recordset.Fields("ddate") = CDate(Format(Str(OnDay) + "/" + Str(OnMonth) + "/" + Str(OnYear), "yy/mm/dd")) Data1.Recordset.Fields("dtime") = CDate(Format(Str(OnHour) + ":" + Str(OnMinute) + ":" + Str(OnSecond), "hh:mm:ss")) Data1.Recordset.Fields("ddate") = DateSerial(OnYear, OnMonth, OnDay) Data1.Recordset.Fields("dtime") = TimeSerial(OnHour, OnMinute, OnSecond) Data1.Recordset.Fields("systime") = Time Data1.Recordset.Fields("get_sl") = LF(0) Data1.Recordset.Fields("get_xl") = LF(1) Data1.Recordset.Fields("get_fjs") = LF(2) Data1.Recordset.Fields("get_cs") = LF(3) Data1.Recordset.Fields("get_sys") = LF(4) Data1.Recordset.Fields("get_cj") = LF(5) On Error Resume Next Data1.Recordset.Update ‘更新数据库 Data1.Recordset.MovePrevious End Sub 保存参数子程序只是对数据库操作,程序结构可参考以上子程序。 上位机与PLC通信质量的好坏,对系统的安全可靠运行影响极大,因此,编写程序时,除了在两者之间的通信协议上保持绝对一致和采取相应的容错技术外,还要考虑系统的整体容错技术,防止系统的不正常。 四、结束语 本设计中充分利用计算机和PLC的资源,在几乎不增加设备开支的情况下实现上位机与PLC的通信和监控。 参考文献 1、夏云 ·Windows环境下串行数据通信程序设计·PC应用,1995; 2、舒继武·Visual Basic 中通信及应用·微型机与应用,1996;
提交
查看更多评论
其他资讯
三菱电机力推过程处理PLC
携手杭州和华,宁波三菱FA产品技术讲座圆满结束
步进电机和交流伺服电机性能比较