加入
我们
投稿
反馈
评论 返回
顶部

内容字号: 默认 大号超大号

段落设置: 段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

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

2019-06-10 09:59 出处:未知 人气: 评论(

一、引言

  在工业生产中,人们常常面临着数据采集与管理。作为工厂自动化的三大支柱可编程控制器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的通信和监控。

分享给小伙伴们:
本文标签:

更多文章

相关文章

评论

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。


Copyright © 2002-2017 DEDECMS. 织梦科技 版权所有 Power by DedeCms