刘瑞通
(一汽解放汽车有限公司 车桥分公司,吉林 长春 130011)
MX Component是三菱电机自动化公司发布的第三方通信软件包,可以通过简单方法实现从计算机至可编程控制器的通信[1]。
本文主要对基于MX Component的PC与PLC以太网通讯方法进行研究。
逻辑站号可以设置的范围为0~1 023,逻辑站号不可重复使用。打开Communication Setup Utility软件,选择”Target Setting”选项卡,点击”Wizard”按钮,设置Logical station number。
在“PC side I/F”中选择“Ethernet board”,使用以太网通信、网关功能通信;在“Connect module”中选择“CPU module”;在“Protocol”中选择“TCP”。
首先为PLC设定固定IP,将PLC通过网线连入PC所在的局域网中,其次为PLC接通电源,然后设置相关参数:“PLC side I/F”中选择“CPU module”,Host(IP Address)通过“Find CPU(Buitt-in Ethernet port) on network”按钮浏览能使用的终端IP,如果没有浏览到可以直接写入为PLC设置的固定IP。
Station type选择“Host station”。
CPU type选择“Q03UDE”(此CPU类型可根据实际使用CPU类型进行设置),Multiple CPU 选择“None”。
在“Comment”写入注释内容,完成设置,如图1所示。
图1 参数设置
完成设置后,测试连接,结果如图2所示。
本节主要介绍基于VB.NET的编程方法。
(1) 添加引用。在VB.NET程序工程引用中添加ActUtlTypeLib。
(2) 定义全局变量:
Public comUtlType As ActUtlTypeLib.ActUtlType
(3) 实例化ActUtlTypeLib.ActUtlType对象,代码如下所示:
comUtlType = New ActUtlTypeLib.ActUtlType
AddHandler comUtlType.OnDeviceStatus, AddressOf comUtlType_OnDeviceStatus
(4) 设置逻辑端口,此逻辑端口需要和本文1.1中设置的MX Component逻辑站号保持一致,才能保证通信的顺利进行。设置逻辑端口代码如下所示:
comUtlType.ActLogicalStationNumber = mLogicalStationNumber
(5) 打开ult服务:
iReturnCode = comUtlType.Open()
图2 测试结果
此功能通过指定所需读取的所有软元件名和读取的点数进行软元件值的随机读取。软元件随机读取代码如下:
Private Function BitRead(ByVal szDeviceName As String(), ByRef iReturnCode As Integer) As Short()
Dim iNumberOfDeviceName As Integer
Dim strDeviceName As String
iReturnCde = 1
strDeviceName = String.Join(vbLf, szDeviceName)
iNumberOfDeviceName = szDeviceName.Length
Dim sharrDeviceValue(iNumberOfDeviceName - 1) As Short '软元件数
iReturnCode = comUtlType.ReadDeviceRandom2(strDeviceName,iNumberOfDeviceName, sharrDeviceValue(0))
Return sharrDeviceValue
End Function
此功能通过指定所需写入的软元件名、写入的点数及相应软元件的值进行软元件的随机写入。软元件随机写入代码如下:
Private Function BitWrite(ByVal szDeviceName As String(), ByVal sharrDeviceValue As Short()) As Integer
Dim iReturnCode As Integer = 1
Dim iNumberOfDeviceName As Integer
Dim strDeviceName As String
iNumberOfDeviceName = szDeviceName.Length
strDeviceName = String.Join(vbLf, szDeviceName)
iReturnCode = comUtlType.WriteDeviceRandom2 (strDeviceName, iNumberOfDeviceName, sharrDeviceValue(0))
Return iReturnCode
End Function
此功能通过指定软元件名和读取的点数进行软元件值的批量读取。软元件批量读取代码如下:
Private Function DataRead(ByVal szDeviceName As String, ByVal iNumberOfDeviceName As Integer, ByRef iReturnCode As Integer) As
Short()
Dim sharrDeviceValue(iNumberOfDeviceName - 1) As Short '软元件数
iReturnCode = comUtlType.ReadDeviceBlock2(szDeviceName, iNumberOfDeviceName, sharrDeviceValue(0))
Return sharrDeviceValue
End Function
此功能通过给出软元件名、写入的点数及相应软元件的值进行软元件的批量写入。软元件批量写入代码如下:
Private Function DataWrite(ByVal szDeviceName As String, ByVal sharrDeviceValue As Short()) As Integer
Dim iReturnCode As Integer = 1
Dim iNumberOfDeviceName As Integer
iNumberOfDeviceName =harrDeviceValue.Length
iReturnCode =comUtlType.WriteDeviceBlock2( szDeviceName, iNumberOfDeviceName, sharrDeviceValue(0))
Return iReturnCode
End Function
此功能可以利用软件在PLC上注册事件,然后调用事件对PLC软元件进行监控,当软元件的值发生变化时,自动调用事件处理函数进行事件处理。注册事件能够实现PLC主动上传信息、上位机及时捕捉到PLC状态变化信息并进行处理,减少PC机因采用轮询方式造成的CPU占用。注册事件代码如下所示:
(1) 打开ult服务:
comUtlType.Open()
(2) 调用注册事件:
Dim lData(0) As Integer
lData(0) = 1
comUtlType.EntryDeviceStatus("M0", 1, 1, lData)
上述设置中当“M0”状态发生变化时,将触发事件处理函数。
(3) 事件处理函数:
Private Sub comUtlType_OnDeviceStatus(ByVal szDevice As String, ByVal iData As Integer, ByVal iReturnCode As Integer)
HandleFunction() '自定义处理函数
End Sub
(4) 关闭ult服务:
comUtlType.Close()
在软元件随机读取、软元件随机写入、软元件批量读取、软元件批量写入的过程中返回代码iReturnCode为非0x0时,需要重新启动ult服务。
本文介绍了MX Component在使用过程中的设置方法和几种基于VB.NET编程软件的常用函数编程方法,为将PLC控制的生产设备连接到上位机提供了一种简单方法。
参考文献:
[1] 程晓鹏,刘园,任素利,等.基于MX Component的PC—PLC通讯设计[J].福建电脑,2014(3):34-35.
[2] 三菱电机自动化(中国)有限公司.MX Component软件介绍 [CP/OL].2015-04-10/2016-09-02.http://cn.mitsubishielectric.com/fa/zh/download/dwn_idx_softwareDetail.asp?sid=45.