三菱PLC编程口通信技术在机械手远程控制中的应用

导语:本文介绍了根据三菱FX系列PLC编程口通信技术的特点,设计基于VB的PC与PLC搬运机械手远程控制程序。通过搬运机械手监控系统软件的具体应用,系统地介绍了VB环境下的MSComm通讯控件、PLC与上位机的编程口通信协议、系统控制方法设计以及监控软件的实现过程。
济南二机床集团有限公司 徐霞 丁和平 史絮 陈乃建

本文介绍了根据三菱FX系列PLC编程口通信技术的特点,设计基于VB的PC与PLC搬运机械手远程控制程序。通过搬运机械手监控系统软件的具体应用,系统地介绍了VB环境下的MSComm通讯控件、PLC与上位机的编程口通信协议、系统控制方法设计以及监控软件的实现过程。

1 引言

可编程PLC由于可靠性高、适应性好、接口功能强、体积小以及组态灵活等优点,在工业控制领域得到了广泛的应用。但是PLC在实际的工程应用中一般与上位计算机组成分布式/分级型控制系统来完成监控任务,这就需要使用PLC的通讯技术。而PLC的编程口在上传控制程序后,一般处于闲置状态,在搬运机器手监控系统中,三菱FX1N 40MR PLC作为下位机并以编程口作为通信口,用来完成控制量的输出、传感器数据的采集等工作,上位机采用个人计算机(PC),用来完成传感数据分析、运动规划,状态显示等功能,以实现对搬运机械手的实时监控。为实现PLC与上位计算机的数据通讯,有多种开发平台可以使用,其中VB是一套完全独立的WINDOWS开发系统,是可视化的、面向对象、采用事件驱动方式的高级程序设计语言。尤其是它提供了一个预定义对象——MSComm通讯控件。通过设置该对象的属性,向对象发送信息,以及为对象事件编写响应代码,可以很方便地完成用户应用程序之间的串行通讯,对于通过编程口与串行口进行数据通讯的PLC与上位计算机组成的监控系统,它提供了稳定、可靠的通讯。

图1 搬运机械手的机械结构
图2 气动原理图

2 搬运机械手的系统控制方法

搬运机械手是由机械本体、气动控制系统、PC-PLC监控系统组成,其机械结构如图1所示。搬运机械手是由基座、腰部、手臂和手爪等几部分组成,分别完成扭转、升降、手爪翻转、手臂伸缩和手爪夹持动作。而上述5种动作是由气缸驱动实现的,气动原理如图2所示。其中扭转气缸、升降气缸、手臂伸缩气缸是由三位五通阀来控制,而手臂翻转、手爪夹持、气动系统通断是由二位五通阀来控制的。对各电磁阀的控制是由PLC远程实现的。

为了实现对机械手工作状态的监视和控制,充分利用计算机系统具有的远程控制和管理功能。为此,我们将控制系统确定为两级计算机监控系统:PC计算机为管理级,可编程PLC为控制级。系统组成如图3所示:系统由上位机PC、PLC、驱动电路、执行元件以及传感器、外部控制信号等几部分组成。

3 PLC编程口与上位机的通信协议基础

带有异步通信适配器的PC机与PLC只有满足以下几个条件,才能互联通信:

(1)PC与PLC的异步通信接口采用的总线标准一致,否则要通过“总线标准变换单元”变换后才能互联。在搬运机械手的控制系统中,PC机与FX系列PLC不能直接连接,要通过FX-232AW单元进行RS232C/RS-422的变换,即上位机与可编程是通过RS232/422编程电缆进行连接通信的。

(2)双方的初始化,使波特率、数据位数、停止位、奇偶校验都相同。FX系列PLC采用异步格式,由1位起始位、7位数据位、1位奇偶校验位以及1位停止位组成,波特率为9600bps,字符为ASCII码。

(3)严格按照PLC通信协议的规定及帧格式编写PC机的通信程序。FX系列PLC有4个通信命令,它们是读命令(0)、写命令(1)、强制通命令(7)、强制断命令(8)。同时FX系列PLC采用面向字符的传输规程,用到5个通信控制字符: ENQ——计算机发出请求(05H) ACK——PLC对ENQ的确认回答(06H) NAK——PLC对ENQ的否认回答(15H) STX——信息帧开始标记(02H); ETX——信息帧结束标记(03H)。

PC机向PLC发送的报文格式如下:

例如,PC机向PLC发送读取数据寄存器D0的数据命令的报文格式为: Chr$(2) + 0 + 100001 + Chr$(3) + 55 ′′′读取D0数据,即:┑0100001┖55 其中1000是D0的地址号,01是读取数据的长度。 PLC向PC机发送的报文格式如下:

PLC对PC读取命令的反馈信息报文格式为:9402000092

4 利用VB编写通信程序

利用VB提供的定时器控件和MSComm通讯控件,可以很方便地编制面向对象的应用程序,命令传递、数据交换、图形显示在定时器控件和通讯控件中完成。

图3 系统控制原理图

使用MSComm通讯控件的第一步是建立与串行口的连接。通过设置CommPort , PortOpen和Settings属性来打开串行端口。

CommPort属性: 设置或返回通讯端口号。注意:每个使用的MSComm控件对应着一个串行端口。如果应用程序要访问多个串行端口,例如应用程序需要和多个下位PLC通讯,必须使用多个使用MSComm控件。

Settings属性:以字符串的形式设置或返回串行通讯协议。该属性值由4个设置值组成,有如下的形式:BBBB, P, D, S, BBBB为波特率,P为奇偶校验,D为数据位数,S为停止位数。在实现上位机和PLC的通讯中,Settings属性值的设置应该根据下位机PLC的D8120单元的值来设定。Fx系列的标准通讯参数为9600,E,7,1。

PortOpen属性:设置并返回通讯端口的状态。将PorlOpen属性设置为True打开端口,将PortOpen属性设置为False关闭端口。注意:打开端口建立连接之前,必须先用CommPort, Settings属性正确指定端口号(必须是物理或逻辑存在的端口)和通讯协议,一旦打开端口后,不可以随便更改CommPort , Settings属性的设置,如果在程序运行中必须更改这两项属性,应该先关闭端口,改变设置值之后,再重新打开端口。

端口打开后,就创建了空的接收和发送缓冲区,端口关闭缓冲区被清零。MSComm控件提供了一系列的属性来管理这些缓冲区。

InBufferSize和OutBufferSize属性:分配接收和发送缓冲区内存的大小。

InBufferCount和OutBuffeiCount属性:分别获得接缓冲区和发送缓冲区中字节的数目。在程序执行过程中,将这两个属性的值设置为零,即可清空接收或发送缓冲区。

Rthreshold和Sthreshold属性:设定OnComm事件发生前,接收或发送缓冲区中可以存放的字节数。将这两个属性值设置为零,可以抑制相应的OnComm事件发生。

(a)手动控制界面 (b)自动控制界面
图4 机械手控制界面

Input属性:获取输入缓冲区中的数据,并将保存在输人缓冲区的数据删除。

Output属性:向发送缓冲区写人数据。

InputLen属性:设置并返回Input属性从接收缓冲区读取的字符数。如果把Input属性设置为零,在使用Input属性时,MSComm控件将读取接收缓冲区的所有内容。 通信口初始化程序举例如下: Private Sub Form_Load() 进行通讯端口和初始化设置。

MSComm1.CommPort = 1 MSComm1.Settings = 9600,e,7,1 端口设置:波特率为9600bit/s、偶校验、7位数据位、1位停止位。 MSComm1.InputMode = comInputModeText ‘文本字符串接收方式 MSComm1.InBufferSize = 1024 ‘输入数据接收缓冲区长度 MSComm1.OutBufferSize = 512 ‘输出数据缓冲区长度 MSComm1.RThreshold = 0 ‘每接受到字符就产生接受中断 MSComm1.SThreshold = 0 ‘禁止发送中断,进行无条件发送 If MSComm1.PortOpen = False Then MSComm1.PortOpen = True ‘打开串行通信接口COM1 End If End Sub

5 搬运机械手监控软件的实现

利用计算机语言VB编写的搬运机械手监控程序主要分为以下几部分:登陆及选择控制方式画面、手动控制界面和自动控制界面。手动控制界面与自动控制界面如图4所示。

上位计算机主要完成运动命令的生成,在获取机械手传感器信息的基础上,完成机械手动作在计算机屏幕上的实时显示。在机械手出现故障时,允许通过手动控制界面的按钮来远程控制机械手动作。下位机PLC完成对电磁阀的控制从而驱动气动执行元件。

手动控制界面主要由状态显示区、按钮控制区、位置显示区、时间显示区以及各种交互控制按钮组成。如图4(a)所示。按钮控制区的按钮通过用户程序和PLC与各电磁阀的线圈相连,实现远程控制气缸动作。每个气缸控制按钮的多少是与电磁阀的线圈数相对应的,如果是三位五通阀则有三个按钮,二位五通阀有两个按钮。

自动循环控制界面主要由状态显示区、按钮控制区、位置显示区、时间显示区、报警区以及日志报告区等。如图4(b)所示。位置显示区的各状态显示是通过PC与PLC实时通信实现的。

(1)控制命令的发送

手动控制界面与自动循环控制界面中控制命令都是通过按钮控制区的按钮发送出去的,在发送控制命令之前,必须先形成控制命令帧。通常,按钮对PLC的控制是对中间辅助继电器的控制,是软件对PLC内部写命令过程,该过程是通过WriteTo PLC()函数实现的,其程序如下: Public Sub WriteToPLC() Dim DUMMY As String If MSComm1.PortOpen = False Then MSComm1.PortOpen = True ‘‘‘‘‘‘打开通信端口Comm1 End If MSComm1.InputLen = 0 ‘‘‘‘‘初始化通信端口Comm1 MSComm1.Output = MWRITE(nCmdCounter) ‘‘‘‘‘通信端口Comm1写出数据包 End Sub 控制界面中的所有的写命令又是通过数组MWRITE()来实现的。其元素包括举例如下: MWRITE(1) = Chr$(2) + 1 + 0111011 + Chr$(3) + 89 ‘‘‘手爪夹持M136置1 MWRITE(2) = Chr$(2) + 1 + 0111010 + Chr$(3) + 88 ‘‘‘‘‘手爪松开M136置0

(2)定时读取机械手状态信息

在状态显示区内,显示的是手爪气缸、手臂气缸、升降气缸、扭转气缸和手腕气缸的电磁阀的工作状态。当按钮控制区的按钮被按下时,状态显示区的状态指示灯将被点亮,表示PLC的某个对应的输出端子正在工作。该信号是通过与PLC进行的实时数据交换得到的,是PLC的端子的实时状态。同样地,在位置显示区,显示的是机械手运动气缸的活塞杆位置状态,是否到达左右极限。当活塞杆到达极限位置,相应的位置显示区的极限报警灯将被点亮,表示PLC的某个对应的输入端子正在工作。该信号也是通过与PLC进行的实时数据交换得到的,是PLC的端子的实时状态。软件对PLC各个元器件状态的获取是通过读命令和软件的定时器控件Timer()来实现的。读命令是通过函数Read From PLC()实现的。其程序为: Public Sub ReadFromPLC() Dim DUMMY As String ‘‘‘‘向计算机发送读取命令‘‘‘‘‘‘‘‘‘‘‘‘ If MSComm1.PortOpen = False Then MSComm1.PortOpen = True End If ‘‘读取D数据寄存器的数据‘‘‘‘‘‘ MSComm1.InputLen = 0 MSComm1.Output = ReadCmd(nCounter) ‘‘‘‘‘‘‘从MSComm1.Output发送数组ReadCmd(20)中的字符串 Do DUMMY=DoEvents() Loop Until MSComm1.InBufferCount >= 6 ReturnData(nCounter) = MSComm1.Input 将MSComm1.Input接收到的信号存放在数组ReturnData()中,然后根据接收到的数据分配给用户界面中的各种状态显示。

手控界面中的所有的读命令又是通过数组ReadCmd()来实现的。其元素包括举例如下: ReadCmd(0) = Chr$(2) + 0 + 100001 + Chr$(3) + 55 ‘‘‘读取D0数据

6 结束语

通过搬运机械手监控系统的具体程序,系统地阐述了VB环境下的PC与PLC编程口通信应用程序的设计方法。系统运行表明,用PLC编程口与VB通信控件编写的实时通讯程序可靠、稳定,很好地满足了搬运机械手实时监控系统的应用要求。

标签: 智能化方案
芯片的制作流程及原理-从设计到制造揭秘微电子工业的精密工艺
上一篇
新品上市图片-首发亮相全景解析新款智能手机的设计与功能
下一篇

相关推荐