基于LabVIEW的FX2N型PLC与计算机通信实现--控制网



基于LabVIEW的FX2N型PLC与计算机通信实现
企业:控制网 日期:2008-08-28
领域:仪器仪表 点击数:7352





张晖(1978-)
男,汉族,江苏南通人,在读硕士研究生,

讲师,研究方向为控制工程。

基金项目:江苏省交通厅资助项目(项目编号:04X016)。





  1 引言

  在计算机监控系统中,首先遇到的问题就是通信问题,只有通信问题解决了,才有可能实现计算机对整个工作系统的监控。LabVIEW软件多用在测试工程中,但随着科学技术的发展和LabVIEW软件功能的提高,在监控系统中也可以采用LabVIEW来完成编程。本文主要讨论LabVIEW与三菱FX2N系列PLC的通讯问题。

  2 利用动态链接库进行串口通信

  DLL(动态链接库)是Windows的重要组成部分,包含被程序或者其他动态链接库调用来完成某项工作的函数。使用它的目的就是给不同的应用程序提供完成某项工作的资源或函数。

  上海理工大学信息与控制工程研究所开发出了基于FX_BD通讯板的动态链接库。FX_ BD是三菱PLC通信的扩展板,主要分为FX232BD、FX485BD 和FX422BD 等3 种,而实现PLC 串口通信应使用FX232BD、FX485BD 模块。三菱PLC通信动态链接库的编写可以通过三菱PLC 上的编程口,利用编程电缆来实现对PLC的控制,但是因为串口通信的参数固定,且对PLC 可操作的寄存器数目有限,所以不采用这种通信方式。考虑到三菱PLC 支持计算机链接,采用计算机链接通信格式,利用FX_ BD ,可通过单个串行口来控制多PLC ,并且可以设定串口参数,适应不同的传输速率。通信时可以调整PLC 中的响应等待时间,支持PLC 内部所有寄存器,扩大了使用范围,适用于多PLC 联网和上位机通信等,满足工业现场的各种控制需要。

  使用DLL的动态链接库并不是将库代码拷贝,只是在程序中记录了函数的入口点和接口,在程序执行时才将库代码动态地装入内存,装载时DLL被映射到进程的地址空间中。动态连接库DLL调用方式如图1所示。


  图1 动态链接库调用方式

  调用DLL 主要完成如下一些操作: ①打开串口,完成对串口的参数设置; ②完成相关读写PLC、控制PLC 运行操作; ③操作完成关闭串口。

  3 利用LabVIEW标准串口函数进行串口通信

  这种方法适用于LabVIEW和FX2N PLC的编程口通信。

  3.1 在Labview中提供了几个标准的串口通讯函数

  在LabVIEW中进行串口通信的基本步骤是:

  (1)初始化端口,利用串口初始化函数设定进行串口通讯的端口号、波特率、停止位、校验位、数据位,注意在Labview中串行端口号是从0开始编号的。

  (2)读写端口,利用串口读写函数。从串口中读入或输出数据。

  (3)关闭端口。

  3.2 FX系列PLC编程口的通信协议

  3.2.1 数据格式

  数据格式如图2所示。


  图2 数据格式

  3.2.2通信命令

  FX系列PLC有4个通信命令,它们是读命令、写命令、强制通命令、强制断命令,如表1所示。表中X—输入继电器;Y—输出继电器;M—辅助继电器;S—状态元件;T—定时器;C—计数器;D—数据寄存器。

  表1 通信命令


  3.2.3通信控制字符

  FX 系列PLC采用面向字符的传输规程,用到五个通信控制字符,如表2所示。

  表2 通信控制字符


  3.3 LabVIEW程序设计

  3.3.1串口初始化

  图3是串口初始化流程图,使用了VISA串口配置函数,将串口设置为波特率9600 bps,7位数据位,偶校验,1位停止位。


  图3 串口初始化

  3.3.2 RS232COMM子VI


  图4 RS232COMM子VI

  在完成串口配置后,下一步就是向串口写入字符,这一步的动作是由“VISA写入”函数完成的,写入的数据必须按照三菱FX系列PLC编程口通信协议的格式进行。在串口将数据发送给PLC后,串口与PLC都需要时间执行程序,因此在流程图中使用了一个毫秒等待计时器。再下一步为读取串口缓存动作,这一步由“VISA读取”函数完成,主要功能是“VISA资源名称端口”指定的设备中读取由字节总数端口指定长度的数据。而检测当前串口输入字节数可由属性节点“Property Node”中完成,该节点的主要功能为返回串口的输入缓存中数据的字节数,在使用“VISA 读取”函数读取串口前,可以先用VISA Bytes at Serial Port节点检测当前串口输入缓存中存在的字节数,然后由此指定“VISA读取”节点从串口输入缓存中读取的字节数,可以保证一次将串口输入缓存中的数据全部读出。最后一步就是在完成发送与读取后关闭占用的串口资源,这一步动作由VISA节点“VISA 关闭”完成,该节点的主要功能为关闭由“VISA资源名称端口”指定的设备连接,可用于关闭一个已经打开的串口,从而释放LabVIEW对这个串口资源的占用。

  由于在整个监控系统中使用了许多数据寄存器,而根据三菱FX2N系列PLC的编程口协议,最多可以读取64个字节(即32个数据寄存器),所以,要完成整个生产系统的数据读取,必须要分开执行多次读和写的动作。在这种情况下,就需要考虑读写的时序问题。要完成连续的周期性的多点读写操作,在LabVIEW中可以使用顺序结构。顺序结构的功能是强制程序按一定的顺序执行。顺序结构可分为层叠式与平铺式。不过这两种结构执行相同的读写操作,时间和顺序都相同,都可以实现对于串口的连续多点读写。

  4 利用MSComm控件进行串口通信

  MSComm控件,即Microsoft Communication Control,是Microsoft为了简化Windows下的串行通信编程而提供的ActiveX控件,它提供了一系列标准通信命令的使用接口,利用它可以建立与串口通信,可以通过串口连接到其他通信设备,发出命令、交换数据以及监视和响应串行连接中发生的事件和错误。关于该控件的相关属性已经有很多文章中提到了,本文不再赘述。

  MSComm通信子VI如图5所示,采用了顺序结构,串口配置详细情况见图,其中InputMode要设置成“1”(二进制方式),否则数据若超过128则会产生错误。MSComm控件提供两种处理通信的方式,本系统中采用事件驱动方式,即当通信事件发生时,MSComm控件会触发OnComm事件,LabVIEW可以捕获该事件,通过检查其CommEvent属性便可知道发生的是哪种事件或错误。这种方法的优点是响应及时,可靠性高。


  图5 MSComm通信子VI

  5 利用MX Component通讯控件包进行串口通信

  MX Component是三菱电机开发的,用于支持个人计算机与可编程控制器之间通信的控件包,它不用考虑各种通信协议的不同,只要经简单处理即可实现通信,因此MX Component能大幅减少编制通信程序的工时。它支持VisualC++ 、Visual Basic 和Access Excel 的VBA、 VBScript、LabVIEW。

  MX Component通讯控件包首先需要进行安装,SW3D5C-ACT-E软件目前版本3.0,安装完成后,在操作系统的程序中就会出现相关程序,系统OCX控件列表内也就有相应的驱动OCX。

  控件包安装好后,就需要对其进行配置,点开“Communication Setup Utility”,利用其操作向导,根据PLC站号、波特率、PLC主机类型、连接类型、控制类型等相关信息进行配置,配置完成后的界面如图6所示,配置完成后还可进行通讯测试。


  图6 MX Component配置完成后的界面

  与在LabVIEW中加载MSComm控件相类似,新建一个VI,从在前面板上将“控件”工具栏显示出来,在“经典容器”中找到“ActiveX容器”,并将其拖放到前面板上,在“ActiveX容器”对象上单击鼠标右键,从弹出的快捷菜单中选择“插入ActiveX对象”,将弹出“选择ActiveX对象”对话框,在对话框中选择“MITSUBISHI ActFXCPU Control”添加到LabVIEW环境中。


  图7 MX Component通信子VI

  该VI主要由三大部分组成,第一部分利用Open函数对通信端口进行打开,并返回一个布尔指示,显示通信状态;第二部分利用WriteDeviceBlock函数对PLC的数据存储器D100写入一个数值456;第三部分利用ReadDeviceBlock函数将D100内的数值读出并显示出来。

  可以看出,利用MX Component通信控件可以很方便的构筑起LabVIEW与三菱PLC之间的联系,并且无需考虑通信协议等内容。

  6 结束语

  实验证明,本文列举的几种方式可以实现LabVIEW与三菱FX2N系列PLC的通讯,可以很方便的实现计算机对PLC的内存单元进行读写操作,从而为实现工业现场的监控与现场数据的分析打下基础。

  参考文献:

  [1]邱培林,沈昱明.基于FX_ BD的FX PLC串口通信DLL的实现.自动化仪表,2005,26(5).

  [2]王磊,陶梅.精通LabVIEW 8.0.电子工业出版社,2007.

  [3]马振锋,刘献礼,王鹏,蒋新苗.基于LabVIEW 7.1 的PC机与PLC通信.哈尔滨理工大学学报,2005,10(5).

  [4]张崇智.PC与三菱FX2N型PLC串口通信的实现.机床电器,2005(3).

  [5]杨久红,王小增.MSComm控件实现PC与PLC串行通讯.现代电子技术,2005(5).


 

  • 在线反馈
1.我有以下需求:



2.详细的需求:
姓名:
单位:
电话:
邮件: