PLC闭环控制系如何实现PID控制器介绍
点击数:7611 次 录入时间:03-04 11:42:13 整理:http://www.55dianzi.com PLC入门
D/A转化器之前,也需进行转换。3.3
回路输入的转换 转换的第一步是将给定值或
A/D转换后得到的整数值由16位整数转换成浮点数,可用下面的程序实现这种转换:XORD AC0, ACO //
清除累加器MOVW AIWO, AC0 //
将待转化的模拟量存入累加器LDW
>= AC0, 0 //
如果模拟量数值为正JMP 0 //
直接转换成实数ORD 16#FFFF0000, ACO //
将AC0内的数值进行符号扩展,扩展为32位负数LBL 0DTR AC0, AC0 //
将32位整数转换成实数转换的下一步是将实数进一步转换成
0.0~1.0之间的标准化实数,可用下面的式(3)对给定值及过程变量进行标准化:RNorm=(RRaw/Span)+Offset (3)式中
:RNorm
-标准化实数值;RRaw
-标准化前的值;Offset
-偏移量,对单极性变量为0.0,对双极性变量为0.5;Span
-取值范围,等于变量的最大值减去最小值,单极性变量的典型值为32000,双极性变量的典型值为64000。下面的程序将上述转换后得到的
AC0中的双极性实数(其Span=64000)转换成0.0~1.0之间的实数:/R 64000.0
, AC0 //
累加器中的实数标准化+
R 0.5, AC0//
加上偏移值,使其在0.0~1.0之间MOVR ACO
, VD100 //
加标准化后的值存入回路表内3.4
回路输出的转换 回路输出即
PID控制器输出,它是标准化的0.0~1.0之间的实数。将回路输出送给D/A转换器之前,必须转换成16位二进制整数。这一过程是将pv与sp转换成标准化数值的逆过程。用下面的公式将回路输出转换成实数:RScal=(Mn
-Offset)×Span (4)式中,
RScal是回路输出对应的实数值,Mn是回路输出标准化的实数值。下面的程序用来将回路输出转换为对应的实数
:MOVR VD108, AC0 //
将回路输出送入累加器-R 0.5, AC0 //
仅双极性数才有此语句*R 64000.0, AC0 //
单极性变量乘以32000.0用下面的指令将代表回路输出的实数转换成
16位整数:ROUND AC0, AC0 //
将实数转换为32位整数MOVW AC0, AQW0 //
将16位整数写入模拟输出(D/A)寄存器3.5 PID
指令及回路表S7-200
的PID指令如图3所示: 图
3 PID指令 指令中
TBL是回路表的起始地址,LOOP是回路的编号。编译时如果指令指定的回路表起始地址或回路号超出范围,CPU将生成编译错误(范围错误)仪器编译失败。PID指令对回路表中的某些输入值不进行范围检查,应保证过程变量、给定值等不超限。回路表参见附表。附表
PID指令的回路表 如果
PID指令中的算术运算发生错误,特殊存储器SMI.1(溢出或非法数值)被置1,并将终止PID指令的执行。要想消除错误,在下次执行PID运算之前,应改变引起运算错误的输入值,而不是更新输出值。4 PID
指令编程举例 某一水箱里的水以变化速度流出,一台变频器驱动的水泵给水箱打水,以保持水箱的水位维持在满水位的
75%。过程变量由浮在水面上的水位测量仪提供,PID控制器的输出值作为变频器的速度给定值。过程变量与回路输出均为单极性模拟量,取值范围为0.0~1.0。 本例采用
PI控制器,给定值为0.75,选取控制器参数的初始值为:KC=0.25,TS=0.1s,TI=30min。编程如下://
主程序(OBI)LD SM0.1 //
首次扫描时CALL 0 //
调用初始化子程序//
子程序LD SM0.0MOVR 0.75, VD104 //
装入给定值75%MOVR 0.25, VD112 //
装入回路增益0.25MOVR 0.10, VD116 //
装入采样时间0.1sMOVR 30.0 VD120 //
装入积分时间30minMOVR 0.0, VD124 //
上一页 [1] [2] [3] 下一页
本文关键字:如何 控制器 PLC入门,plc技术 - PLC入门