当前课程知识点:电气控制技术与PLC > 第8章 模拟量控制程序设计 > 8.4水箱水位PID控制程序举例 > 水箱水位PID控制程序举例
大家好
这一讲 我们一起讨论一下PID指令的具体应用
以水箱水位控制为例
先来看下任务要求
某水箱需要维持一定的水位
该水箱的水以变化的速度流出
这就需要一个水泵以变化的速度给水箱供水
以维持水位不变
我们一起分析一下
被控对象为水箱
被控变量为其水位
是个单极性模拟量
由水位计检测后经A/D变换送入PLC
给定值是水箱满水位的75%
可以预先设定后直接输入到回路表中
输出值用来控制水泵的速度
是最大允许值的0%~100%(单极性)
下面开始设计水箱水位PID控制系统
首先 选择控制类型
本系统中选择PID控制
其回路增益和时间常数
可以通过工程计算初步确定
但还需要进一步调整以达到最优控制效果
初步确定的回路增益和时间常数如下
Kc=5.2 Ts=0.1秒
Ti=30.0分钟 Td=0.15分钟
系统开始启动时
关闭出水口
先用手动方式控制水泵速度
使水位达到满水位的75%
然后打开出水口
合上控制开关
将水泵控制从手动方式切换到自动方式
即进行无扰动切换
无扰动切换时
系统把手动方式下的当前输出值Mn
即水泵速度
填入回路表中的Mn栏
VD108
思路捋清了
下面我们开始进行程序设计
首先我们一起来编写主程序
在母线右侧插入特殊存储器标志位SM0.1
该位仅在第一个扫描周期时接通
用途之一是调用初始化子程序
后面紧跟着插入子程序块SBR_0
因为工程上一般I/O信号为4~20mA
A/D转换后为5530~27648
所以输入的数值应减去5530
接下来 我们看看子程序
在子程序中
主要是填入5个参数
设置定时中断
在母线右侧插入特殊存储器标志位SM0.0
该位始终接通
在该标志位的后面插入双字传送指令
初次扫描将VD160清0
然后在下面继续插入实数传送指令MOV_R
装入设定值的75%
参数IN设为0.75
输出参数设为VD104
然后在下面继续插入实数传送指令
装入回路增益Kc
参数IN设为5.2
输出设为VD112
同理 继续装入采样时间为0.1秒
输出到VD116
装入积分时间为30分钟
输出到VD120
装入微分时间0.15分钟
输出到VD124
然后设定定时中断0的时间间隔为100毫秒
在程序段中插入输出传送指令
输入IN设为100
输出out为SMB34
注意 在调用中断例程之前
必须指定中断事件和在事件发生时
执行的程序段之间的关联
在这里
我们使用中断连接指令ATCH
将由中断事件编号指定的中断事件与
由中断例程编号指定的程序段相关联
以定时执行PID指令
因此 本程序中
我们将INT设为INT_0
EVNT设为10
因为定时中断0对应的事件编号是10
除此之外
连接事件和中断例程时
仅当程序已执行全局中断启用指令
且中断事件处理处于激活状态时
新出现此事件才会执行所连接的中断例程
因此 最后还需要插入一个中断启用指令
最后 来编写中断程序
中断程序主要是实现过程变量换算
以及PID运算 输出换算
先来看下过程变量的换算程序
首先插入SM0.0
该位始终保持接通
然后插入标准转换指令
将0-22118的双字整数转换成实数
输入IN设为VD160
输出设为AC0
然后利用实数除法指令
将AC0中的值标准化
然后再根据偏移地址存入VD100
再来看下PID运算 输出换算
在中断程序块INT_0中另起一个程序段2
母线右侧插入I0.0位控制手动与自动的切换
0代表手动
1代表自动
右侧继续插入PID回路指令
即当其为1时执行PID回路指令
PID指令有两个操作数
TBL为回路表起始地址
这里我们设为VB100
另一个是取值范围为常数0到7的回路编号
这里取0
然后利用实数乘法指令
将两个32位实数相乘
产生一个32位实数结果
这里将手动方式下的当前输出值Mn
即水泵速度(0.0-1.0的实数)
存入偏移地址VD108
作为操作数1
然后另一个操作数为22118.0
即将该标准值放大到0.0-22118.0
存入AC0中
接下来 利用取整指令ROUND将AC0中的
32位实数值转换为双精度整数
并将取整后的结果存入OUT的地址中
即更新AC0
然后 利用DI_I指令
将双精度整数AC0转换为整数值
并将结果存入分配给OUT的地址处
即更新AC0
再利用加整数指令将两个16位整数
5530和AC0中的值相加
产生一个16位结果
即使变量范围成5530~27648
对应模拟量4-20mA
输出到AC0中
最后 利用字传送指令将数据值从源存储单元IN
传送到新存储单元OUT
而不会更改源存储单元中存储的值
即将该整数值写入到模拟量输出寄存器
本讲到此结束
谢谢大家
-1.1 低压电器简介
--低压电器简介
-1.2 低压开关电器
--低压开关电器
-1.3 主令电器
--主令电器
-1.4 接触器
--接触器
-1.5 熔断器
--熔断器
-1.6 继电器(一)热继电器和速度继电器
-1.7 继电器(二)时间继电器
-小测验
-2.1 三相异步电动机的直接起动控制
-2.2 三相异步电动机点动控制和长动控制
-2.3 三相异步电动机降压起动控制(一)
-2.4 三相异步电动机降压起动控制(二 )
-2.5 三相异步电动机的多点控制和顺序控制
-2.6 三相异步电动机的调速控制
-2.7 三相异步电动机的制动控制(一)
-2.8 三相异步电动机的制动控制(二)
-2.9 三相异步电动机正反转控制(一)
-2.10 三相异步电动机正反转控制(二)
-2.11 电气控制线路的设计方法
-小测验
-3.1 电气控制电路图的绘制(一)
-3.2 电气控制电路图的绘制(二)
-3.3 电气控制电路图的绘制(三)
-3.4 电气控制电路的设计方法 (一)
-3.5 电气控制电路的设计方法 (二)
-小测验
-4.1 认识PLC
--认识PLC
-4.2 PLC组成及工作原理
-4.3 S7-200 SMART PLC硬件介绍(上)
-4.4 S7-200 SMART PLC硬件介绍(下)
-4.5 STEP 7-Micro/WIN SMART编程软件(上)
--STEP 7-MicroWIN SMART编程软件(上)
-4.6 STEP 7-Micro/WIN SMART编程软件(下)
--STEP 7-MicroWIN SMART编程软件(下)
-小测验
-5.1 PLC编程语言与程序结构
-5.2 指令基础
--指令基础
-5.3 位逻辑指令
--位逻辑指令
-5.4 PLC编程规则与技巧
-5.5 定时器指令的工作原理
-5.6 定时器指令应用举例
-5.7 计数器指令的工作原理
-5.8 计数器指令的应用
--计数器指令应用
-小测验
-6.1 功能指令概述
--功能指令概述
-6.2 数据处理指令(一):比较指令与数据传送指令
-6.3 数据处理指令(二):数据转换指令
--数据转换指令
-6.4 数据处理指令(三):表格指令和时钟指令
-6.5 算术运算指令及其应用
-6.6 逻辑运算指令及其应用
-6.7 程序控制指令:跳转指令、循环指令
-6.8 子程序的编写与调用
-6.9 中断程序与中断指令
-6.10 高速计数器指令与高速脉冲输出指令(一)
-6.11 高速计数器指令与高速脉冲输出指令(二)
-小测验(一)
-小测验(二)
-小测验(三)
-7.1 梯形图的经验设计法
-7.2 顺序控制设计法与顺序功能图概述
-7.3 顺序功能图的基本结构和绘制方法
-7.4 使用SCR指令的顺序控制梯形图设计方法
-7.5 使用起保停电路的顺序控制梯形图设计方法
-7.6 使用置位复位指令的顺序控制梯形图设计法
-小测验
-8.1模拟量控制概述
--模拟量控制概述
-8.2模拟量输入输出配置及数值的规范化
-8.3PID控制指令
--PID控制指令
-8.4水箱水位PID控制程序举例
-小测验