基于EPA的PID功能块的设计及实现.doc_第1页
基于EPA的PID功能块的设计及实现.doc_第2页
基于EPA的PID功能块的设计及实现.doc_第3页
基于EPA的PID功能块的设计及实现.doc_第4页
基于EPA的PID功能块的设计及实现.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于EPA的PID功能块的设计及实现摘要:本文介绍了EPA功能块基本模型及功能块的几种基本数据机构;并且描述了PID功能块在单片机上的设计方案及PID功能块模态转换与PID功能块过程控制算法几个主要函数的具体实现,并通过组态软件验证了PID的过程控制算法。关键字:EPA标准 ; EPA功能块规范 ; PID功能块; 组态 The Realization And Design Of PID Function Block Based On EPA Abstract: this text introduce the model of the EPA function block and several kinds database including in EPA function block; moreover it expatiates the design of PID function block and PID mode-exchange function and PID process-control arithmetics achievement in details. At last ,we test the PIDs arithmetic through configuration software.Keywords: EPA Protocol ; EPA Function Block Criterion ; PID Function Block ;Configuration 1 引言功能块不是EPA标准的独创,它是在工业控制领域编程发展过程中产生的,并在1995年形成IEC TC65标准。国家863计划EPA项目组参照IEC 61499、IEC 61804两个国际标准制订了EPA功能块规范,该规范主要定义了基本的功能块,包括功能块特征描述及用于功能块参数定义的数据类型、基本参数定义。EPA的体系结构参照ISO/OSI开放系统互连模型(ISO 7498)的第一、二、三、四和七层,并在第七层之上增加第八层(即用户层),共构成六层结构的通信模型,功能块则是用户层的主要内容,用户直接使用功能块构筑自己的控制系统。2 功能块的定义及体系模型功能块是一个软件功能单元,由输入、输出、内含参数以及对这些参数进行操作的算法组成,用一个功能块位号或者一个序号来唯一标识。功能块的参数定义了输入、输出和运行时所使用的数据。这些参数在整个网络上可观察的、可访问的。功能块是系统中原子级的元素,是不可再分割的基本元素,存在于一个包含可执行算法的实体内。功能块具有输入参数、输出参数和内含参数,同时具有用于输入和输出事件或数据的外部接口:事件输入端口、事件输出端口、数据输入端口以及数据输出端口。其基本模型如图1: 图1 功能块的基本模型3 功能块数据结构EPA设备内基本的功能块包括:资源块,技术块,功能块,报警块。每种功能块都包含不同的数据结构。以下介绍了功能块中主要的几种数据结构:块数据结构EPA_Block Structure序号元素名读写属性数据类型字节长度1Block Tag读写VisibleString322XDDL Id只读Usigned3243Block Type只读Usigned3244XDDL Revision只读Usigned1625Profile只读Usigned1626Profile Revision只读Usigned1627Execution Time读写Usigned3248Period of Execution读写Usigned3249Number of Parameter只读Usigned16210Next block to Execute读写Usigned162模态数据结构EPA_Mode Structure序号元素名读写属性数据类型字节长度1Target读写Bit String12Actual只读Bit String13Permitted读写Bit String14Normal读写Bit String1输入/输出模拟量数据结构EPA_Floatpoint Structure序号元素名读写属性数据类型字节长度1Status读写Usigned812Value读写Float4量程转换数据结构EPA_Scaling Structure序号元素名读写属性数据类型字节长度1EU_100%读写Float42EU_0%读写Float43Units Index读写Usigned1624Decimal Point读写Integer814PID功能块PID在自动控制系统中应用广泛,特别在工业现场中能实现比较关键的控制功能。所以PID功能块也是功能块块库中的最重要的功能块。PID功能块示意图如图2:图2 PID功能块示意图PID功能块包括14个必备参数和34个可选参数,用户还可添加自定义的参数,其参数的索引依据所使用的实际参数个数依次进行分配。PID控制算法:根据PID参数的设置,及输入的值来决定输出。PID算法是对PV与SP的偏差进行比例、积分和微分运算,得到的控制量经过输出选择、输出量程转换和输出限制后,由OUT输出。该算法的整定参数分别为比例增益GAIN、积分时间RESET和微分时间RATE。 PID模态:PID功能块支持的模态有O/S、Man、Auto、IMan。如表1 所示:表1 PID功能块的模态模态说明O/SPID功能块不再执行它的功能计算IMan初始化手动Man操作员直接写入PID功能块的OUT参数AutoPID功能块根据所有算法(量程,滤波,状态以及模态计算,限制检测)处理来自变送器的值(PV)以下是PID 功能块的模态转换描述:1 目标模态为O/S时,实际模态切换到O/S。2 目标模态为Man时,如果BKCAL_IN的状态为GOOD实际模态切换到Man,否则实际模态为IMan。3 目标模态为Auto时,如果IN的状态为GOOD并且BKCAL_IN的状态也为GOOD实际模态切换到Auto,否则实际模态为IMan。41 PID功能块的设计在单片机上设计PID时可以申明一个结构体用于定义每个参数(如表2):然后用这个结构体定义一些PID对象实体。(如 EPA_PID_FUNCTION_BLOCK *pidfb;)表2 PID功能块参数typedef struct _EPA_PID_FUNCTION_BLOCK_ EPA_BLOCK BLOCK; /功能块对象参数 EPA_MODE BLOCK_MODE; /功能块的模态参数 EPA_FLOATPOINT PV; /过程变量 EPA_FLOATPOINT SP; /设定点 EPA_FLOATPOINT OUT; /输出 EPA_SCALING PV_SCALE; /过程变量量程 EPA_SCALING OUT_SCALE; /输出值量程 EPA_FLOATPOINT IN; /输入 EPA_FLOATPOINT CAS_IN; /串级输入 float GAIN; /增益 float RESET; /积分时间常数 float RATE; /微分时间常数 EPA_FLOATPOINT BKCAL_IN; /回算输入 EPA_FLOATPOINT BKCAL_OUT; /回算输出 EPA_PID_FUNCTION_BLOCK; PID功能块的功能则通过一些函数实现。如函数PID_MODESTATETRN(),它用于转换PID功能块模态,从而使PID处于不同状态。正常情况,PID处于Auto模态。其设计如表3:表3 PID功能块的模态转换函数void PID_ MODESTATETRN (EPA_PID_FUNCTION_BLOCK * pPIDFB) if(pPIDFB-BLOCK_MODE.Target & OS) /目标模态是O/S pPIDFB-BLOCK_MODE.Actual =OS; /实际模态切换到O/Sif(pPIDFB-BLOCK_MODE.Target & Man) /目标模态是Man if(128=(pPIDFB-BKCAL_IN.Status & 0x80) / BKCAL_IN的状态为GOOD pPIDFB-BLOCK_MODE.Actual = Man; /实际模态切换到Manelse if(0 = (pPIDFB-BKCAL_IN.Status | 0x00) / BKCAL_IN的状态为BADpPIDFB-BLOCK_MODE.Actual = IMan; /际模态切换到IMan if(pPIDFB-BLOCK_MODE.Target & Auto) /目标模态为Auto时, /如果IN和BKCAL_IN的状态都为GOOD实际模态切换到Auto,否则实际模态为IManif( (0 = pPIDFB-IN.Status) | (0 = pPIDFB-BKCAL_IN.Status ) pPIDFB-BLOCK_MODE.Actual = IMan; else if(128=pPIDFB-IN.Status)&(128=pPIDFB-BKCAL_IN.Status) pPIDFB-BLOCK_MODE.Actual = Auto; 接下来我们定义一个非常重要的函数PID_Progress(),它运行PID功能块的控制算法,该算法是根据PID典型公式Eu(K)=P*e (K)+I*(e (k)+e (k-1)+e (k-2)+e (k-3)+.+e (k-n) )+D*(e (k)-e (k-1))转换得。该算法是为了保证受控量与PID中的设定值SP相等,如果不等会将反馈回来受控量进行调节,直至调节至和SP相等。其Auto模态下,PID算法设计如表4:表4 PID 功能块算法void PID_Progress (EPA_PID_FUNCTION_BLOCK * pPIDFB) double error1 = 0; /当前误差 static double sumerror=0; /误差和 static double error3=0; /上次误差 static double error2=0;pPIDFB-PV.Value=pPIDFB-IN.Value*(PV_SCALE- EU_100%-PV_SCALE- EU_0%)/100; /IN 的值通过量程转换赋给PV if (pPIDFB-SP.Value-pPIDFB-PV.Value=0.1) | |( pPIDFB-SP.Value-pPIDFB-PV.ValueSP.Value - pPIDFB-PV.Value; sumerror+=error1; /误差累加 error3=error2; /将上次误差给error3 error2=error1; /将本次误差给error1EU= pPIDFB-GAIN*error1+pPIDFB-RESET*sumerror+pPIDFB-RATE*(error2-error3); /根据公Eu(K)=P*e (K)+I*(e (k)+e (k-1)+e (k-2) +.+e (k-n) )+D*(e (k)-e (k-1)) pPIDFB-OUT.Value = pPIDFB-IN.Value+EU; /调整输出与输入的误差 pPIDFB-OUT.Status=pPIDFB-SP.Status; /设置值的状态 除以上两个主要函数外,我们还有InitPID()用于初始化函数的参数,其包含InitEPABlock(),InitEPA_Mode()等等。我们还定义了ReadPID(),WritePID()用于读取和写入PID功能块参数,这里就不一一介绍了。42 PID功能块算法的测试通过组态软件;我们将AI功能块和PID功能块连接成回路,并把AI功能块的OUT_A输给PID的IN,PID的OUT就反馈给AI的IN,并把PID设定值SP设为0.8,运行PID算法,观看输出端口OUT的值的变化(如图3)。该图说明了PID功能块能够实现自适应控制过程。图3 PID功能块控制过程图5 结论随着EPA标准被IEC组织正式承认,EPA功能块的开发与应用对EPA网络控制系统的实现有着重要意义。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论