西门子S7-200 PLC指令简介及实例分析 下载本文

MOVD +2000, SMD42 //HSC0的设置为2000

ATCH INT_0, 12 //把中断程序0分配给中断事件 HSC 0 //重新起动HSC0

3. 读懂程序并输入程序

给程序加注释,给网络加注释,在注释中说明程序的功能和指令的功能。 4. 编译运行和调试程序

观察Q0.1和Q0.2对应的LED的状态,并记录。用状态表监视HSC0的当前值变化情况。 根据观察结果画出HSC0,Q0.0,Q0.1之间对应的波形图。

6.4 PID控制

6.4.1 PID指令

1. PID算法

在工业生产过程控制中,模拟信号PID(由比例、积分、微分构成的闭合回路)调节是常见的一种控制方法。运行PID控制指令,S7-200将根据参数表中的输入测量值、控制设定值及PID参数,进行PID运算,求得输出控制值。参数表中有9个参数,全部为32位的实数,共占用36个字节。PID控制回路的参数表如表6-15所示。

表6-15 PID控制回路的参数表

地址偏移量 0 4 8 12 16 20 24 28 32 参数 过程变量当前值PVn 给定值SPn 输出值Mn 增益Kc 采样时间Ts 积分时间Ti 微分时间Td 上一次的积分值Mx 数据格式 双字 ,实数 双字 ,实数 双字 ,实数 双字 ,实数 双字 ,实数 双字 ,实数 双字 ,实数 双字 ,实数 参数类型 输入 输入 输入/输出 输入 输入 输入 输入 输入/输出 输入/输出 说明 必须在0.0至1.0范围内。 必须在0.0至1.0范围内 在0.0至1.0范围内 比例常量,可为正数或负数 以秒为单位,必须为正数 以分钟为单位,必须为正数。 以分钟为单位,必须为正数。 0.0和1.0之间(根据PID运算结果更新) 最近一次PID运算值 上一次过程变量PVn-1 双字 ,实数 典型的PID算法包括三项:比例项、积分项和微分项。即:输出=比例项+积分项+微分项。计算机在周期性地采样并离散化后进行PID运算,算法如下:

Mn=Kc*(SPn-PVn)+Kc*(Ts/Ti)*(SPn-PVn)+Mx+Kc*(Td/Ts)*(PVn-1-PVn)

其中各参数的含义已在表6-15中描述。

比例项Kc*(SPn-PVn):能及时地产生与偏差(SPn-PVn)成正比的调节作用,比例系数Kc越大,比例调节作用越强,系统的稳态精度越高,但Kc过大会使系统的输出量振荡加剧,稳定性降低。 积分项Kc*(Ts/Ti)*(SPn-PVn)+Mx:与偏差有关,只要偏差不为0,PID控制的输出就会因积分作用而不断变化,直到偏差消失,系统处于稳定状态,所以积分的作用是消除稳态误差,提高控制精度,但积分的动作缓慢,给系统的动态稳定带来不良影响,很少单独使用。从式中可以看出:积分时间常数增大,积分作用减弱,消除稳态误差的速度减慢。

微分项Kc*(Td/Ts)*(PVn-1-PVn):根据误差变化的速度(既误差的微分)进行调节具有超前和预测的特点。微分时间常数Td增大时,超调量减少,动态性能得到改善,如Td过大,系统输出量在接近稳态时可能上升缓慢。

2. PID控制回路选项

在很多控制系统中,有时只采用一种或两种控制回路。例如,可能只要求比例控制回路或比例和积分控制回路。通过设置常量参数值选择所需的控制回路。

(1)如果不需要积分回路(即在PID计算中无“I”),则应将积分时间Ti设为无限大。由于积分项Mx的初始值,虽然没有积分运算,积分项的数值也可能不为零。

(2)如果不需要微分运算(即在PID计算中无“D”),则应将微分时间Td设定为0.0。 (3)如果不需要比例运算(即在PID计算中无“P”),但需要I或ID控制,则应将增益值Kc指定为0.0。因为Kc是计算积分和微分项公式中的系数,将循环增益设为0.0会导致在积分和微分项计算中使用的循环增益值为1.0。

3. 回路输入量的转换和标准化

每个回路的给定值和过程变量都是实际数值,其大小、范围和工程单位可能不同。在PLC进行PID控制之前,必须将其转换成标准化浮点表示法。步骤如下:

(1)将实际从16位整数转换成32位浮点数或实数。下列指令说明如何将整数数值转换成实数。 XORD AC0,AC0 //将AC0清0

ITD AIW0, AC0 //将输入数值转换成双字 DTR AC0, AC0 //将32位整数转换成实数

(2)将实数转换成0.0至1.0之间的标准化数值。用下式:

实际数值的标准化数值=实际数值的非标准化数值或原始实数/取值范围 +偏移量

其中:取值范围=最大可能数值-最小可能数值=32 000(单极数值)或64 000(双极数值) 偏移量:对单极数值取0.0,对双极数值取0.5 单极(0~32000),双极(-32000~32000)

如将上述AC0中的双极数值(间距为64,000)标准化: /R 64000.0, AC0 //使累加器中的数值标准化 +R 0.5, AC0 //加偏移量0.5

MOVR AC0, VD100 //将标准化数值写入PID回路参数表中。

4. PID回路输出转换为成比例的整数

程序执行后,PID回路输出0.0和1.0之间的标准化实数数值,必须被转换成16位成比例整数数值,才能驱动模拟输出。

PID回路输出成比例实数数值=(PID回路输出标准化实数值-偏移量)*取值范围 程序如下:

MOVR VD108, AC0 //将PID回路输出送入AC0。 -R 0.5, AC0 //双极数值减偏移量0.5 *R 64000.0, AC0 //AC0的值*取值范围,变为成比例实数数值 ROUND AC0,AC0 //将实数四舍五入取整,变为32位整数 DTI AC0, AC0 //32位整数转换成16位整数 MOVW AC0, AQW0 //16位整数写入AQW0

5. PID指令

PID指令:使能有效时,根据回路参数表(TBL)中的输入测量值、控制设定值及PID参数进行PID计算。格式如表6-16所示。

说明:

(1)程序中可使用八条PID指令,分别编号0-7,不能重复使用。 (2)使ENO = 0的错误条件:0006(间接地址),SM1.1(溢出,参数表起始地址或指令中指定的PID回路指令号码操作数超出范围)。

(3)PID指令不对参数表输入值进行范围检查。必须保证过程变量和给定值积分项前值和过程变量前值在0.0和1.0之间。

表6-16 PID指令格式

LAD STL 说明 TBL:参数表起始地址VB, 数据类型:字节 LOOP:回路号,常量(0-7), 数据类型:字节 PID TBL,LOOP 6.4.2 PID控制功能的应用

1. 控制任务

一恒压供水水箱,通过变频器驱动的水泵供水,维持水位在满水位的70%。过程变量PVn为水箱的水

位(由水位检测计提供),设定值为70%,PID输出控制变频器,即控制水箱注水调速电机的转速。要求开机后,先手动控制电机,水位上升到70%时,转换到PID自动调节。

2. PID回路参数表,如表6-17所示。

表6-17 恒压供水 PID控制参数表

地址 VB100 VB104 VB108 VB112 VB116 VB120 VB124 VB128 参数 过程变量当前值PVn 给定值SPn 输出值Mn 增益Kc 采样时间Ts 积分时间Ti 微分时间Td 上一次积分值Mx 数值 水位检测计提供的模拟量经A/D转换后的标准化数值 0.7 PID回路的输出值(标准化数值) 0.3 0.1 30 0(关闭微分作用) 根据PID运算结果更新 最近一次PID的变量值 VB132 上一次过程变量PVn-1 2. 程序分析

(1)I/O分配

手动/自动切换开关I0.0 模拟量输入AIW0 模拟量输出AQW0 (2)程序结构

由主程序,子程序,中断程序构成。主程序用来调用初始化子程序,子程序用来建立PID回路初始参数表和设置中断,由于定时采样,所以采用定时中断(中断事件号为10),设置周期时间和采样时间相同(0.1s),并写入SMB34。中断程序用于执行PID运算,I0.0=1时,执行PID运算,本例标准化时采用单

极性(取值范围32000)。

3. 语句表程序

主程序

LD SM0.1 CALL SBR_0

子程序(建立PID回路参数表,设置中断以执行PID指令)

LD SM0.0

MOVR 0.7, VD104 // 写入给定值(注满70%) MOVR 0.3, VD112 // 写入回路增益(0.25) MOVR 0.1, VD116 // 写入采样时间(0.1秒) MOVR 30.0, VD120 // 写入积分时间(30分钟) MOVR 0.0, VD124 // 设置无微分运算

MOVB 100, SMB34 // 写入定时中断的周期100ms

ATCH INT_0, 10 // 将INT-0(执行PID)和定时中断连接 ENI // 全局开中断

中断程序(执行PID指令)

LD SM0.0

ITD AIW0, AC0 // 将整数转换为双整数 DTR AC0, AC0 // 将双整数转换为实数

/R 32000.0, AC0 // 标准化数值

MOVR AC0, VD100 // 将标

准化PV写入回路参数表

LD I0.0

PID VB100, 0 //PID指令设置参数表起始地址为VB100,

LD SM0.0

MOVR VD108, AC0 // 将PID回路输出移至累加器 *R 32000.0, AC0 // 实际化数值