您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > 基于FF现场总线实现双容液位对象的动态矩阵控制摘要
基于FF现场总线实现双容液位对象的动态矩阵控制摘要:针对FF现场总线中监控软件实现DMC算法的困难,提出利用Matlab7.0OPC工具包实现与OPC服务器间通讯并实现DMC控制的方案。仿真结果表明,该方案能在很大程度上缩短监控程序的开发周期,并达到了预期的控制效果。1该FF现场总线系统的特点FF现场总线系统是连接智能现场设备和自动化系统的数字式、双向传输、多分支结构的通信网络,与现行控制系统相比,具有如下一些优势:①现场总线用数字信号代替传统的模拟信号,测量精度高,抗干扰能力强;②基于总线的现场仪表可以对量程和零点进行远程设定,具有仪表工作状态自诊断功能,能进行多参数测量和对环境影响的自动补偿;③现场设备集检测、转换、运算和控制功能于一体,既降低了成本,又增加了安全性和可靠性。上位机主要对其进行总体监控、协调、优化和下载控制调度与管理等;④所有现场设备直接通过一对传输线即现场总线连接,减少了连线的数量,易于安装和维护,节省施工费用、电缆费用、调试和维修成本。本实验测控系统采用JBS2GK03系统的双容水箱液位对象作为实验装置,并采用中科院沈阳自动化研究所开发的FFH1OPC服务器MicroCyber.FFServer.1作为OPC服务器,其符合OPC基金会制订的OPCDA2.0规范标准[1],提供了访问现场数据的标准接口。OPC客户端与服务器之间的通讯符合OPC的自动化接口规范[1,2]要求,利用Matlab7.0支持OPC规范的新功能,实现用户端与服务器端的通讯。动态矩阵控制算法在客户端通过Matlab的M语言实现,充分发挥了矩阵计算语言简洁、高效的优势。2实验系统与控制原理本实验系统包括两个部分:FF现场总线部分和现场控制模型部分。FF现场总线包括低速现场总线H1和高速现场总线HSE。低速现场总线H1的速率为31.25kbps,可用于温度、液位及流量等控制场合,信号类型为电压信号;高速现场总线HSE的速率为100Mbps,一般用于高级控制、远程输入/输出和高速工厂自动化等场合。该测控系统的实验过程为自衡非振荡,具有相互影响的双容过程,其数学模型可用如下传递函数描述:G(s)=KpTps+1exp(-τs)式中:Kp,Tp,τ———过程的增益、时间常数和时滞。由工控机中的OPC服务器实时获取FF现场总线采集的过程数据并动态显示,用MicroCyber.FFServer.1做OPC服务器[3],每秒钟刷新一次,实现设备的实时数据和历史数据共享以及报警等功能。动2态矩阵控制算法在工控机中监控端实现,通过Matlab的M语言实现,利用了其强大的计算与动态显示能力对水箱系统进行动态矩阵控制[4]。并将OPC服务器的历史数据保存在Matlab的数组中,可以实现对历史数据曲线的实时绘制。采用的被控变量为Device1.Flow,组名为Device1。通过Matlab编写的客户端与SQLSERVER2000数据库服务器的ODBC连接,实时与数据库交互。从OPC服务器读取选项的值(包括选项的值、品质、时间戳、服务器名、设备名)。可以实时将选项的值插入到数据库服务器中,保存为历史数据,需要时,可以通过选项随时将历史数据进行回调,进行查询、更新、删除等操作或者用于算法控制和绘制历史曲线图,从而实现OPC服务器和历时数据服务器的分布式管理。其原理图如图1所示。图1中,Qi,Qo分别表示输入流量和输出流量,在该现场总线控制系统中,液位变送器将检测到的液位的高度转化为0~10mA的电流输出,NCS2IF105现场总线变送器再将液位2的模拟量信号(0~10mA)转换为符合FF现场总线协议的数字量信号,然后通过OPC客户程序实时获取OPC服务器中的数据,实现动态矩阵预测控制算法,得到数字控制信号,经NCS2FI105变送器则将现场总线数字量控制信号转换为0~10V的电压信号,送到变频器控制端,使变频器输出相应的电压和频率(0~50Hz),从而改变水泵转速,达到控制液位的目的。图1控制系统结构3OPC客户程序的开发3.1客户端与OPC服务器通讯首先,Matlab客户端应先生成OPC服务器支持的OPC对象,OPC数据访问对象由分层结构构成。即一个OPC服务器对象具有一个作为子对象的OPC组集合对象。在这个OPC组集合对象里可以添加多个OPC组对象。各个OPC组对象都具有一个作为子对象的OPC标签集合对象。在这个标签集合对象里可以添加多个OPC标签对象。用MatlabM文件编写OPC客户端程序包含以下步骤:(1)添加服务器的引用,创建OPC服务器对象,并将客户程序与服务器相连。(2)连接创建的OPC服务器对象。(3)可以浏览整个服务器中所有的项,添加组对象。(4)添加OPC项,选择需要的项,将其添加到规定的组中,并显示其值和状态。(5)启动OPC服务器。具体程序和解释如下:hostInfo=opcserverinfo(′远程/本地服务器名′);%连接远程/本地服务器allServers=hostInfo.ServerID;da=opcda(′服务器名′,′OPC服务器名′);connect(da);sawtoothItems=serveritems(da,′3受控设备名3′);itmIDs={′控设备名′};grp=addgroup(da,′DemGroup′);%增加组itm=additem(grp,itmIDs);%增加项目start(grp);%启动OPC服务器3.2客户端与SQL数据库服务器通讯首先,在SQL数据库中建立名为yuan的数据库,并建立一个名为history的表。表中的字段包括选项的值、品质、时间戳、服务器名、设备名。设置ODBC数据源,建立一个名为yuan的数据源,该数据源指向SQL数据库中的yuan数据库。测试连接成功后,即可在Matlab中通过编写M文件实现与数据库的连接,并建立一个工作空间数组,用于存储来自数据库的数据,通过执行命令的方式实现select,in2sert数据等操作。关键程序及解释如下:首先,实现建立连接对象,实现与数据库服务器的连接。conn=database(′数据源名′,′用户名′,′用户密码′);%连接数据库ping(conn);%检查连接状态curs=exec(conn,′selectcountryfrom表名′);%打开游标执行SQL语句setdbprefs(′DataReturnFormat′,′cellarray′);%说明检索数据的格式curs=fetch(curs,10);%将数据导入到Matlabcolumnnames(curs);%获取列名A=curs.Data;%显示游标对象里的所有数据元素,data(∶,3)为获取某一字段的元素值insert(conn,′表名′,字段名,数组名);%将数组的值插入到表的某一字段中close(curs);%关闭游标close(conn);%关闭连接对象通过以上步骤,实现了Matlab客户端程序与OPC服务器以及与SQLServer2000数据库的连接,从而可以实现数据的实时通讯和存储,并为动态矩阵控制算法提供了必要的历史数据和实时数据。4动态矩阵控制原理4.1动态矩阵控制(DMC)算法[4]动态矩阵控制是一种利用被控对象的单位阶跃响应采样数据作为预测模型的预测控制算法。设被控对象的单位阶跃采样数据为{a1,a2,},对于渐近稳定的系统,其阶跃响应在若干个采样周期后就趋于稳态值,即aN≈a(∝),因此可以用单位阶跃响应采样数据的前有限项描述系统的动态特性{a1,a2,,aN}。由线性系统的叠加原理,可以得到系统输出的预测模型为:Ym(k+1)=AU(k)+A0U(k-1)(1)式中:Ym(k+1)———k时刻预测有u(k)作用时未来N个时刻的预测模型输出矢量,Ym(k+1)=[ym(k+1/k),ym(k+2/k),,ym(k+P/k)]T;U(k)———待求控制增量矢量,U(k)=[u(k),u(k+1),,u(k+M-1)]T;U(k-1)———已知控制矢量,U(k-1)=[u(k-N+1),u(k-N+2),,u(k-1)]T;A、A0———系统的动态矩阵,A=a^000a^2a^10,a^pa^p-1a^p-m+1P×Ma^N-a^N-1a^N-1-a^N-2a^2A0=0a^N-a^N-1a^3;00a^p+1P×(N-1)A0U(k-1)————k时刻预测无u(k)作用时未来N个时刻的输出初始矢量,它是由k时刻以前加在系统输入端的控制增量产生的。假定从(k-N)到(k-1)时刻加入的控制增量分别为u(k-N),u(k-N+1),,u(k-1),而在(k-Nu(k-N-2)=0,-1)则式(1)是用过去施加于系统的控制量表示初值的预测模型输出,由此可知预测模型输出由两部分组成:待求的未知控制增量和过去控制量产生的系统已知输出初值。由于模型误差和干扰等的影响,系统的输出预测值需要在预测模型输出的基础上用实际输出误差修正,即:YP(k+1)=Ym(k+1)+h[y(k)-ym(k)]=AU(k)+A0U(k-1)+he(k)(2)式中:YP(k+1)———系统输出预测矢量,YP(k+1)=[yP(k+1),yP(k+2),,yP(k+P)]T;e(k)———k时刻预测模型输出误差,e(k)=y(k)-ym(k);h———误差修正系数,h=[h1,h2,,hP]T。优化下列性能指标:Jp=[yp(k+1)-yr(k+1)]TQ[Yp(k+1)-Yr(k+1)]+UT(k)λΔU(k)(3)式中:Yr(k+1)———参考轨迹,Yr(k+1)=[yr(k+1),yr(k+2),,yr(k+P)]T;Q=diag(q1,q2,,qp),P为预测时域;λ=diag(λ1,λ2,,λM),M为控制时域,得到:U(k)=(ATQA+λ)-1ATQ[Yr(k+1)-A0U(k-1)-he(k)](4)即时控制增量取为:u(k)=dT[Yr(k+1)-A0U(k-1)-he(k)](dT=(1,0,,0)(ATQA+λ)-1ATQ为取首行运算)4.2产生受控系统的阶跃响应输出受控系统数学模型可用如下传递函数描述:KpG(s)=Tps+1exp(-τs),将阶跃信号作为控制信段时间内系统某一受控对象(流量)的阶跃响应输出,可以通过Matlab程序读取对应时刻的阶跃响应值,并将时间和对应值存在一个数组中。通过建立受控对象的数学模型,来辨识受控系统的参数,并得到辨识后系统的输出。使用Matlab7.0的OPC工具包,实现客户端程序与OPC服务器的通讯[5,6],使用get(itm1,′value′)函数来获取服务器中流量的实时值(其中itm1=Device1.Flow),然后进行动态矩阵控制。得到控制量后,通过使用write(itm2,setval2ue)(其中itm1=Device2.Value)函数将控制量写入OPC服务器,从而控制受控系统。5DMC控制程序仿真设置模型的时域长度为N,优化时域长度为P,误差校正向量为h,控制向量为d,yr为参考轨迹,其长度为P,预测向量存储在数组y1中。根据3.1小节介绍的步骤,DMC控制程序如下:a=ydata;%获取的受控对象的数据N=size(ydata);%数据长度,N的值根据阶跃响应采样点数进行设定h=ones(size(ydata));%误差校正向量r=20;P=3;%r为期望输出,P的值自行选定Ts=5;%Ts为采样间隔Tr=3;%Tr=τ为时间滞后ArfaR=exp(-Ts/Tr);fori=1∶Ny1(i)=0;%预测向量初始化u1=0;%控制向量初始化endforj=1∶91;%控制次数y(i)=get(itm1,′value′);%监测设备流量值并读取e=(y(i)380.04095-40)-y1(1);fori=1∶Ny1(i)=y1(i)+e3h(i);%误差校正endfori=1∶N-1y1(i)=y1(i+1);%预测向量位移,得到当前的初始响应ends=0;fori=1∶Ps=s+a(i)^
本文标题:基于FF现场总线实现双容液位对象的动态矩阵控制摘要
链接地址:https://www.777doc.com/doc-2533843 .html