OPC技术在MATLAB与PLC通讯实现 下载本文

OPC技术下MATLAB与PLC的通讯实现

黄双成,李志伟

(河南化工职业学院 机械电子系,河南 郑州 450000)

摘要:PLC具有结构简单、编程方便,可靠性高特点,已经在工业及生产过程中得到了广泛应用,但PLC的编程语言功能简单,无法实现复杂的控制算法;MATLAB是一种高级矩阵语言,并且包含工具箱和Simulink仿真环境,可通过对控制系统进行可视化建模,仿真等工作,实现复杂控制算法,但不能直接应用在实时控制中。本文采用OPC通信技术,实现MATLAB与PLC通信,为PLC控制下复杂算法的实现提供了技术基础。 关键词:OPC技术 MATLAB PLC 通讯 中图分类号:TP273 文献标识码:A

Abstract: PLC, with simple structure, convenient programming and goodreliability, is already widely used in industrial control area, but it is unable to achieve complex controlalgorithm with shortage of programming language; MATLAB is a kind of high-level matrix language, with its toolbox and Simulink simulation environment, complex control algorithm can be achieved through the research on the visual model and simulation of the control system, but it can not be used in real-time control. This paper, using OPC communication technology, achieves communication between MATLAB and PLC , provides technical foundation for the realization of complex algorithm under PLC control.

Kewords: OPC Technology MATLAB PLC Communication

Communication between MATLAB and PLC be achieved by the OPC

technology

Huang Shuang-cheng, Li Zhi-wei

(Department of Machinery and Electronics, Henan Vocational College of Chemical Technology,

Zhengzhou 450000)

1、引言

如何检验复杂先进控制算法,并将其有效地应用在生产现场一直是工业控制领域普遍关注的热点问题。PLC控制器加工控机模式是常见分布式监控系统的结构,但是PLC编程语言简单,无法实现先进的控制算法。随着工业过程控制要求的提高,模糊算法、神经网络算法、

[1]

遗传算法等复杂控制算法取代传统的PID算法成为工业过程控制的发展趋势。

[2]

Matlab语言工程计算力强大,程序设计流程灵活,可实现复杂的控制算法。若将PLC采集到的实时数据通过数据交换传给MATLAB进行计算处理,再将运算处理结果传送给下位机PLC,由PLC输出模块输出控制信号,实现过程控制,这样不仅极大提高监控系统的作用,而且有利于复杂算法的故障诊断和过程控制的设计与实现。要实现上述目的,问题节点在于PLC和MATLAB 之间的数据交换。通过在MATLAB 的Simulink中设计数据传输模块来实现两者之间数据交换的文献鲜见报道。本文介绍通过OPC技术实现MATLAB 与PLC之间进行数据交换的方法,并通过一个实际的例子来说明PLC与MATLAB通信的原理及过程。

PLC采集现场仪器仪表的数据,通过工业以太网传给工控机,数据再通过工控机内部的OPC协议分别传给组态软件和MATLAB的工作空间,组态软件是用来监控系统的,MATLAB将PLC中的数据经过算法处理得出最优的控制数据,然后再通过OPC协议和以太网返回到PLC内,PLC再根据数据对现场仪器仪表进行精确的控制,系统结构图如图1所示。

组态软件MATLABOPC工控机OPC server交换机OPC groupPLC1PLC2PLC3OPC group现场仪器仪表现场仪器仪表现场仪器仪表

OPC itemOPC itemOPC itemOPC item 图1 数据交换结构图 图2 OPC服务器3种对象层次关系图

2、OPC技术

OPC是Object Linking and Embedding (OLE for Process Control)的缩写,它是以微软公司COM和DCOM技术为基础,创建的一种应用于自动化领域的软件接口标准。OPC采用开放式的数据交互,能使不同公司的软硬件组成一个有机的整体,传输可靠,速度快,适于大批量数

[3]

据交换,已经成为工控行业新的通信标准,广泛应用在工控行业的各个领域。

OPC采用客户/服务器体系,目标是在客户和服务器之间建立一种通信和数据交换的工业标准机制,只要遵循OPC标准,数据交互对两者来说都是透明的。各客户/服务器间形成即插即用的简单规范的链接关系,即不同的客户软件能够访问任意的数据源。OPC使用主要包括OPC 服务器与OPC客户两个部分,OPC服务器是数据的供应方,负责为OPC客户提供所需的数据;OPC客户是数据的使用方,使用OPC服务器提供的数据。OPC数据存取服务器主要由服务器对象

[4]

(Server)、组对象(Group)和数据项对象(Item)3类对象组成。3类对象的层次关系图如上图2所示。OPC具体使用必须遵循下列步骤:

第一,OPC客户要能够连接到DA服务器上,并建立OPC组(Group)和OPC 数据项(Item)。 第二,OPC客户通过对其建立的Group和Item进行访问实现对过程数据的访问,客户可以选择设备或缓冲区作为其访问的数据源。客户的过程数据访问包括过程数据的读取、更新、订阅、写入等。

第三,完成通知,当服务器响应客户的过程数据访问请求,并处理完毕时通知客户。 3、MATLAB与PLC之间的通讯实现

在MATLAB指令空间中输入“opctool”,打开OPC工具箱进行OPC的配置,在MATLAB的OPC工具箱中将MATLAB设为本地服务器,然后把“CoDeSys.OPC.02”添加为客户,然后点击“connect”,连上之后,在客户端添加一个组,重命名为“INPUT”,然后在这个组中添加一个对象,画面如图3所示,可以看到,在PLC配置中设置的两个变量都显示在添加对象的对话框的左边,选中“INPUT”变量,然后点击“add”,就可以看到,PLC的变量“INPUT”添加到了组“INPUT”中,用同样的方法添加一个“OUTPUT”组,然后将PLC的变量“OUTPUT”添加到组“OUTPUT”中,这时在PLC的模拟量输入端给一个5V的信号,就可以看到在PLC编程软件PLC配置中,模拟量输入有了一个整型值,而在MATLAB的OPC工具箱中,选中“INPUT”变量,也显示了一个整型值,就可以看到它的值和PLC配置中模拟量端口显示的整型值完全相等。

图3 在MATLAB的OPC工具箱中添加对象的画面 图4 simulink中OPC配置图

下面再看一下在MATLAB的simulink中对这个模拟量输入的实时监测,然后将这个模拟量再送给到模拟量输出端子。在MATLAB的simulink工作空间中加入“OPC Configuration”、“OPC Read”、“OPC Write”三个模块,做好相应的配置,“OPC Read”模块中加入变量“INPUT”作为对象,“OPC Write”模块中加入变量“OUTPUT”作为对象,添加完毕之后可以看到在simulink工作空间的“OPC Read”和“OPC Write”中,显示了PLC的两个变量名,这说明PLC的两个变量都已经导入到simulink的工作空间。然后,将“OPC Read”的端子V和“OPC Write”的端子相连,再在中间加入一个“scope”,来实时显示从PLC读过来的数据,配置好的simulink工作空间如图4所示。设置完毕,开始仿真,双击“scope”,可以看到随着时间的推移,数据也在实时的显示,通过调节模拟量输入端的电压值,可以看到显示数据也在随着调节而实时的变化,如图5所示

图5 simulink中实时监测画面

这时再来看PLC硬件配置中在线显示的数据,模拟量输入端口显示的数据和模拟量输出端口显示的数据完全相等,跟“scope”监测到的数据以及opctool中组“INPUT”和组“OUTPUT”中的两个变量的数据也完全一样,可以得出,模拟量输入的值通过MATLAB的simulink中OPC准确无误的传送到了模拟量输出端口。 4、结束语

(1)文献[5][6]提出用MATLAB和组态软件通过OPC技术进行数据交换,而一般的组态软件跟PLC之间也是通过OPC进行数据交换的,这样可以实现PLC与MATLAB之间的数据交换,但是要经过两层OPC协议,而本文提出的MATLAB和PLC直接用OPC协议进行数据之间的通讯,只经过一层OPC协议,实时性强。

(2)本文只是简单的将模拟量输入数据通过OPC协议,经过MATLAB的simulink空间传送到模拟量输出端子,有了这个基础,可以在“OPC Read”中添加任何现场的开关量或模拟量数据,而在“OPC Write”中添加需要控制的开关量或模拟量输出变量,然后在它们之间加入智能控制算法的工具箱以及控制系统的数学模型,这样就可以实现控制系统的精确控制。

(3)工业控制系统一般都是一直在运行的,平时用simulink仿真空间做仿真时都是设