4.4 S7-200用于模拟量控制系统 联系客服

发布时间 : 星期六 文章4.4 S7-200用于模拟量控制系统更新完毕开始阅读

33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 二号PID表 二号过程变量 二号设定值 二号输出值 二号增益 二号采样时间 二号积分时间 二号微分时间 二号积分前项 二号过程前值 一号养护温度 二号养护温度 一号占空比1 一号占空比2 二号占空比1 二号占空比2 一号养护时间 二号养护时间 一号运行标志 二号运行标志 VB36 VD36 VD40 VD44 VD48 VD52 VD56 VD60 VD64 VD68 VW400 VW402 VW416 VW418 VW420 VW422 C0 C1 M0.0 M0.1 8bit 32bit 32bit 32bit 32bit 32bit 32bit 32bit 32bit 32bit 16bit 16bit 16bit 16bit 16bit 16bit 增计数器 增计数器 bool Bool (3) 程序设计: ·总体思路

因为本系统仍然是用来控制规模相同的2个养护窑。控制程序仍然采用分块结构。其中子程序SBR0控制一号窑温,SBR1控制二号窑温。主程序OB1分别调用SBR0、SBR1子程序块,对2个养护窑分别控制。每个养护窑仍然由一个热敏电阻检测窑内温度,由一个进气电磁阀周期闭合与断开来控制进气量,而调节窑内温度。 ·主程序中的具体控制流程

本例子中采用了子程序调用和定时中断程序,仍然属于分块结构。在系统总启动之后,主程序不断查询各个子程序的启动条件并根据启动条件去决定是否调用各温控子程序。定时中断程序则利用PID算法计算出各个养护窑进气电磁阀开闭的占空比,并将该占空比的数值传送到对应的变量区。子程序根据其变量区的数据形成相应的脉冲,用以控制相应的阀门。 ·控制算法

本例子所采用的控制算法是根据PID算法,形成PT0所需要的脉冲数据。系统用PTO脉冲去控制进气阀门的打开与关断,从而控制养护窑的温度。 ·控制程序

例子中写了主程序OBl,子程序SBR0和中断程序INT0。

主程序·OB1

NETWORK 1 //设置定时中断0的中断事件,中断服务程序为INT0 LD SM0.1 //PLC首次扫描周期为0N

MOVB 10, SMB34 //设置定时中断间隔时间为10毫秒

ATCH INT_0, 10 //设置定时中断0的中断服务程序为INT0 ENI //系统允许中断

NETWORK 2 //总进气阀、总排气阀控制 LD SM0.0 //常0N继电器

LPS //将SM0.0压栈

A I0.6 //总启动按钮按下I0.6=1

EU //取总启动按钮I0.6的上微分

S Q0.6, 1 //总进气阀Q0.6置l,打开总进气阀供气 LRD //读栈(读SM0.O)

A I0.7 //总停止按钮按下I0.7=1 EU //取其上微分

R Q0.6, 1 //总停止按钮I0.7按下,关闭总进气阀Q0.6 LPP //弹出

LDW>= C0, +600 //一号养护时间计数器C0大于等于600(lO个小时),为一号养护时间到 OW>= C1, +600 //二号养护时间计数器C1大于等于600(lO个小时),为二号养护时间到 ALD //上述块的串联

= Q0.7 //只要有一个窑养护时间到,需要排气,就打开总排气阀Q0.7

NETWORK 3 //一号窑控制开始

LD SM0.0 //常0N继电器 LPS //压栈

A I0.0 //一号启动I0.0

S M0.0, 1 //按下一号启动按钮I0.0,一号窑运行标志M0.0置位 LRD //读栈

A I0.1 //一号停止I0.1

R M0.0, 1 //按下一号停止按钮I0.1,一号窑运行标志M0.0复位 LRD //读栈 AW>= C0, +600 //C0>=600

= Q0.1 //一号窑养护时间到(C0计数=600),打开一号排气阀Q0.1,向外排气 LRD //读栈

A I0.2 //一号急停I0.2 R Q0.0, 3 //按下急停按钮I0.2,停止一号进气阀Q0.0、排气阀Q0.1和风机Q0.2 LPP //弹出

A M0.0 //一号运行标志M0.0

= Q0.2 //一号窑运行期间,一号风机Q0.2一直为启动状态 CALL SBR_0 //一号窑运行期间,调用一号窑温控制程序SBR0

NETWORK 4 //记录一号窑控温时间

LD Q0.0 //一号进气阀Q0.0

A SM0.4 //一号窑控温时间的计数脉冲(l分钟一次) LD I0.0 //一号启动I0.0

O SM0.1 //复位一号窑计数器信号为一号启动按钮I0.0按下或PLC上电 CTU 600, +0 //一号养护时间由CTU计数器的计数值C0确定

NETWORK 5 //二号窑控制开始

LD SM0.0 //常0N继电器 LPS //压栈

A I0.3 //二号启动I0.3

S M0.1, 1 //按下二号启动按钮I0.3,二号窑运行标志M0.1置位 LRD //读栈

A I0.4 //二号停止I0.4

R M0.1, 1 //按下二号停止按钮I0.4,二号窑运行标志M0.1复位 LRD //读栈

AW>= C1, +600 //C1>=600

= Q0.4 //二号窑养护时间到(C1计数到600),打开二号排气阀Q0.4,向外排气 LRD //读栈

A I0.5 //二号急停I0.5

R Q0.3, 3 //按下急停按钮I0.5,停止二号进气阀Q0.3、排气阀Q0.4和风机Q0.5 LPP //弹出

A M0.1 //二号运行标志M0.1

= Q0.5 //二号窑运行期间,二号风机Q0.5一直为启动状态 CALL SBR_1 //二号窑运行期间,调用二号窑温控制程序SBR1

NETWORK 6 //记录二号窑控温时间

LD Q0.3 //二号进气阀Q0.3

A SM0.4 //二号窑控温时间的计数脉冲(l分钟一次) LD I0.3 //二号启动I0.3

O SM0.1 //复位二号窑计数器信号为二号启动按钮I0.3按下或PLC上电 CTU C1, +0 //二号养护时问由CTU计数器的计数值C1确定

子程序·SBR0·(一号窑温度控制)

NETWORK 1 //一号窑温检测值转换成实际温度值 LD SM0.0 //常ON继电器

MOVW AIW0, VW400 //AIW0的内容传到VW400 -I +6552, VW400 //(VW400)-6552送到VW400 /I +131, VW400 //(VW400)/131送到VW400

NETWORK 2 //传送一号窑温PID控制的参数表的数据 LD SM0.0 //常ON继电器

MOVR 0.616, VD4 //一号设定值送到VD4 MOVR 0.01, VD12 //一号增益送到VD12

MOVR 0.1, VD16 //一号采样时间送到VD16 MOVR 3.0, VD20 //一号积分时间送到VD20 MOVR 0.0, VD24 //一号微分时间送到VD24

NETWORK 3 //产生一号窑温PTO控制的的占空比脉冲 LD SM0.0 //常ON继电器 LPS //压栈

AN T102 //一号定时2(T102)的非, 启动一号定时1(T101) TON T101, VW416 //一号定时1(T101) 时间常数为VW416 LRD //读栈

A T101 //一号定时1(T101), 启动一号定时2(T102) TON T102, VW418 //一号定时2(T102) 时间常数为VW418 LPP //弹出

A T101 //一号定时1(T101) = Q0.0 //一号进气阀Q0.0。

子程序·SBR1·(二号窑温度控制) ···

中断程序·INT0·(PID控制)

NETWORK 1 //一号养护窑PID控制算法

LD M0.0 //一号运行标志M0.0 LPS //压栈

A SM0.5 //SM0.5为周期为l秒钟的时钟脉冲 EU //上升沿有效

MOVW AIW0, AC0 //一号温度传送到AC0 DTR AC0, AC0 //整数转换成实数

MOVR AC0, VD0 //一号过程变量传送到VD0

/R 32000.0, VD0 //(VD0)/32000.0转换成PID控制的过程变量(PVn)的标准值 LRD //读栈 PID VB0, 0 //养护窑运行时,进行PID运算(一号PID表VB0,回路号0)

MOVR VD8, AC0 //一号输出值=VD8传送到AC0 *R 100.0, AC0 //100.0乘以一号输出值,传送到AC0。(周期为100*0.1S) ROUND AC0, AC0 //把AC0中的实数转换成双整数

DTI AC0, VW416 //把AC0中的双整数转换成整数, 传送到VW416 MOVW +100, VW418 //把100传送到VW418。

-I VW416, VW418 //100-(VW416) 传送到VW418(一号占空比)。 LPP //弹出。

AR>= VD0, VD4 //一号过程变量(VD0)大于等于一号设定值(VD4), 输出占空比=0 MOVW +100, VW416 //100送一号占空比1 MOVW +0, VW418 //0送一号占空比2

NETWORK 2 //二号养护窑PID控制算法

LD M0.1 //二号运行标志M0.1 LPS //压栈

A SM0.5 // SM0.5为周期为l秒钟的时钟脉冲 EU //上升沿有效

MOVW AIW2, AC0 //二号温度传送到AC0 DTR AC0, AC0 //整数转换成实数

MOVR AC0, VD36 // 二号过程变量传送到VD36

/R 32000.0, VD36 //(VD36)/32000.0转换成PID控制的过程变量(PVn)的标准值 LRD //读栈

PID VB36, 1 //养护窑运行时,进行PID运算(二号PID表=VB36,回路号=1) MOVR VD44, AC0 //二号输出值(VD44)传送到AC0 *R 100.0, AC0 //100.0乘以二号输出值,传送到AC0。(周期为100*0.1S) ROUND AC0, AC0 //把AC0中的实数转换成双整数 DTI AC0, VW420 //把二号占空比1 传送到VW420

MOVW +100, VW422 //把100传送到二号占空比2(VW422)

-I VW420, VW422 //100-(VW420) 传送到VW422(二号占空比) LPP //弹出

AR>= VD36, VD40 //如果过程变量(VD36) >= 设定值(VD40), 输出占空比=0 MOVW +100, VW420 //100送二号占空比1 MOVW +0, VW422 //0送二号占空比2

例4-4-3 窑温PID控制