使用和利时PLC的锅炉控制源代码
基于PLC的锅炉水温PID控制系统方案
1 设计任务设计一个基于PLC的锅炉水温PID控制系统,要现锅炉水温为80度,稳态误差1度,最大超调1度。
当锅炉的水温低于或者高于80度时,可以通过外部端子的开关或者远程监控,使系统自动进行PID运算,保证最后锅炉的水温能够维持在80度左右。
2 系统硬件设计2.1 器件选择本温度控制系统采用德国西门子S7-200 PLC。
S7-200 是一种小型的可编程序控制器,适用于各行各业,各种场合中的检测、监测与控制的自动化。
S7-200系列的强大功能使其无论在独立运行中,或相连成网络皆能实现复杂控制功能。
因此S7-200系列具有极高的性能/价格比。
S7-200 系列的PLC有CPU221、CPU222、CPU224、CPU226等类型。
此系统选用的S7-200 CPU226,CPU 226集成24输入/16输出共40个数字量I/O 点。
可连接7个扩展模块,最大扩展至248路数字量I/O 点或35路模拟量I/O 点。
13K字节程序和数据存储空间。
6个独立的30kHz高速计数器,2路独立的20kHz高速脉冲输出,具有PID控制器。
2个RS485通讯/编程口,具有PPI通讯协议、MPI通讯协议和自由方式通讯能力。
I/O端子排可很容易地整体拆卸。
在温度控制系统中,传感器将检测到的温度转换成4-20mA的电流信号,系统需要配置模拟量的输入模块把电流信号转换成数字信号再送入PLC中进行处理。
在这里我们选择西门子的EM235 模拟量输入/输出模块。
EM235 模块具有4路模拟量输入/一路模拟量的输出。
它允许S7-200连接微小的模拟量信号,±80mV围。
用户必须用DIP开关来选择热电偶的类型,断线检查,测量单位,冷端补偿和开路故障方向:SW1~SW3用于选择热电偶的类型,SW4没有使用,SW5用于选择断线检测方向,SW6用于选择是否进行断线检测,SW7用于选择测量方向,SW8用于选择是否进行冷端补偿。
所有连到模块上的热电偶必须是一样类型。
采用PLC的锅炉燃烧控制系统
采用PLC的锅炉燃烧控制系统2007-11-17 来源:中国自动化浏览:599[推荐朋友] [打印本稿] [字体:大小]1、引言燃烧控制系统是电厂锅炉主控系统,主要包括燃料控制系统、风量控制系统、炉膛压力控制系统。
目前大部分电厂锅炉燃烧控制系统仍然采用PID 控制。
燃烧控制系统由主蒸汽压力控制和燃烧率控制组成串级控制系统,其中燃烧率控制由燃料量控制、送风量控制、引风量控制构成,各个子控制系统分别不同测量、控制手段来保证经济燃烧和安全燃烧。
如图1所示。
图1 燃烧控制系统结构图2、控制方案锅炉燃烧自动控制系统基本任务是使燃料燃烧所提供热量适应外界对锅炉输出蒸汽负荷要求,同时还要保证锅炉安全经济运行。
一台锅炉燃料量、送风量和引风量三者控制任务是不可分开,可以用三个控制器控制这三个控制变量,但彼此之间应互相协调,才能可靠工作。
对给定出水温度情况,则需要调节鼓风量与给煤量比例,使锅炉运行最佳燃烧状态。
同时应使炉膛内存一定负压,以维持锅炉热效率、避免炉膛过热向外喷火,保证了人员安全和环境卫生。
2.1 控制系统总体框架设计燃烧过程自动控制系统方案,与锅炉设备类型、运行方式及控制要求有关,对不同情况与要求,控制系统设计方案不一样。
将单元机组燃烧过程被控对象看作是一个多变量系统,设计控制系统时,充分考虑工程实际问题,既保证符合运行人员操作习惯,又要最大限度实施燃烧优化控制。
控制系统总体框架如图2所示。
图2 单元机组燃烧过程控制原理图P为机组负荷热量信号为D+dPbdt。
控制系统包括:滑压运行主汽压力设定值计算模块(由热力系统实验获数据,再拟合成可用DCS折线功能块实现曲线)、负荷—送风量模糊计算模块、主蒸汽压力控制系统和送、引风控制系统等。
主蒸汽压力控制系统采用常规串级PID控制结构。
2.2 燃料量控制系统当外界对锅炉蒸汽负荷要求变化时,必须相应改变锅炉燃烧燃料量。
燃料量控制是锅炉控制中最基本也是最主要一个系统。
PLC在锅炉控制系统中的应用
23锅炉汽包水位控制 系统 . 汽包水位是影响锅炉 安全运 行的重要参数 ,水位
过高 ,会破坏汽水分离装 置的正 常工作 ,严重时会导
水泵的开关或者阀门 。不能对它们精确连续调节 ,使
控制手段单调 ,控制精度低 。
2 控制方案原理
2 1燃烧过程控制 .
致蒸汽带水增 多,增加在管壁上 的结垢 和影响蒸汽质 量 。水位过低 ,则会破坏水 循环 ,引起水冷壁管的破
裂 ,严重时会造成千锅 ,损坏 汽包。所以其值过高过 低都可能造成重大事故 。在负荷急剧增加时 ,导致汽 包压 力下降 ,使汽包 内水 的沸点温度下降 ,水的沸腾
P C构成的锅炉控制系统, L 给出系统硬件的构成, 通过 P C实现锅炉的各种控制调节功能。 L
【 关键 词】 锅炉控制 可编程控制器 变频器 节能
Ab ta t Ont a i o ay igteo iia o to y tm o lrtep p r u owadt erfr igpa a sr c: b ss fa lzn rgn l nr l se i b i ,h a e t r r eom n lnt t he n h c s n e p f h h c nr l db LC,n rd c dteb i r o t l y tm a o ss f o t o ue n LC, n rsne e o tol yP e it u e o l sc nr se t t n it h s c mp tr daP o h e os h c o a a a dp ee tdt h
维普资讯
,
。 。“ 崖 穰 。
P C在锅炉控制系统中的应用 L
PLC控制锅炉输煤系统
PLC控制锅炉输煤系统2008-07-15 08:38:11本文已公布到博客频道情感·经历分类摘要本文介绍的是用PLC来对锅炉输煤系统进行控制。
锅炉输煤系统,是指从卸煤开始,一直到将合格的煤块送到煤仓的整个工艺过程,它包括以下几个主要环节:卸煤生产线、煤场、输煤系统、破碎与筛分、配煤系统以及一些辅助生产环节。
本设计中主要研究的是其中的输煤系统部分,即煤块从给煤机传输到原煤仓的过程。
采用了顺序控制的方法。
首先,介绍了PLC的一些基本常识问题。
在具体的设计中,先讲述了PLC设计的一些基本方法及步骤。
详细介绍了西门子公司的型号为S7-200的PLC的一些基本知识。
之后重点讲述了PLC 程序设计中的启动,停止,位置选择及输出报警等问题,也讲了I/O点分配的一些事项并对本设计中的对象进行了地址分配。
在上位机的设计中,我用了工业组态软件——组态王来进行操作界面制作,并使之与PLC进行通讯,使之达到远程控制的功能,中间又重点讲述了制作操作界面的步骤及方法。
关键词: 输煤系统,PLC,I/O,组态王Design of PLC Control SystemThe System of Transport Coal in BoilerAbstractThis paper design for the boiler which is beaten the coal measures together with PLC . The transportation system of coal in boiler is that beginning with unload coal from car, and until to warehouse. The system includes several chief segments: coal does unload manufacture part, coal warehouse, transportation system of coal, fragmentation coal, sift through and other supplementary system. The transportation system of coal is the chief part of this design. In other words is that a course from the machine of supply coal to the warehouse of coal.We chose the method of sequential control in the system. First, the paper tells us some fundamental general knowledge problems of PLC and the fundamental means and step in this design. The type detailed to introduce some fundamental in formations of the PLC of S7-200 of the siemens corporation. Then we can know some problem about PLC programming 's start, stop and output alarm, and also say that I/O touches some matters distributing has been underway the address assignment allocation to the target in native design . In ordinate engine design , I use the industry configuration , and software - configuration monarch comes to manipulate interface manufacturing , and cause it carry on the news dispatch against PLC , causing it attain the remote control meritorious service capacity , move and means manufacturing the operation interface are stress give an account of once more to the middle .Keywords: the system of transport coal in boiler, PLC, I/O, Kingviews目录1 绪论101.1 锅炉系统概述101.2 锅炉输煤系统102 可编程控制器(PLC) 112.1 可编程控制器(PLC)简介112.1.1 PLC的历史112.1.2 PLC的基本概念112.1.3 PLC的基本机构122.1.4 PLC的扫描工作方式122.1.5 PLC的I/O模块142.1.6 PLC的功能及特点142.1.7 PLC的分类152.1.8 PLC的通信联网162.2 PLC控制系统设计步骤及内容17 2.2.1分析评估及控制任务172.2.2 PLC的选择192.2.3 I/O地址分配212.2.4 系统设计212.2.5 系统调试222.3 SIMATIC S7-200 232.3.1 SIMATIC S7-200概述232.3.2 SIMATIC S7-200的CPU型号233 PLC输煤控制系统设计253.1 输煤系统简介253.1.1 系统组成253.1.2 系统目标273.1.3 控制对象及控制方案273.1.4 系统设计的关键问题及解决方案28 3.1.5 系统的I/O分配293.2 系统设计333.2.1 系统启动部分设计333.2.2 系统停止部分设计363.2.3 系统位置选择及输出报警设计374 操作界面设计394.1 工业组态软件——组态王394.1.1 组态王简介394.1.2 关于组态王变量的问题394.1.3 组态王的动画连接424.1.4 本设计中组态王的界面设计45论文总结46致谢47参考文献48附录设计程序49。
和利时DCS在与西门子S7-400PLC通讯中的应用
1 和 0 时D C S —M A C S 与 西 门 子S 7 — 4 O O P L C
法 ,着 重 从和 利 时 O C S的 网络设 置、软 件 配置 的 方面做 了说 明。 以便 在今 后 的生产 调 试 中可以 增 加 其 他 功 能的应 用 ,使 整 个工 厂
自动化 的 功 能 更加 强 大 。
2西门子D P / D P C o u p I 6 r 耦合器简介
西门子 D P / D P C o u p l e r 耦合器用于连接两
个P R OF I B us —DP主站 网络 ,以便在这 两个 主站 网络之 间进行数据通讯 ,并且这两个主站 网络 的通讯速率 ,站地址都可 以不 同, 其数
N e t wo r k &C o mmu n i c a t i o n・ 网络与通信
和 利时 D C S在 与西 门子 S T - 4 0 0 P L C通讯中的应 用
文/ 肖国卫
能更好 ,更安全的配合工作 ,两个 自动化系统 本 ,用 于设 备级 控 制 系统 与分 散 式 I / O 的通 本文 主要 介绍 了在 河 北武 山 水 泥 有 限 公 司 纯 低 温 余 热 电 站 工 程 中,和 利 时 D C S系 统 在 与 西 门 子 ¥ 7 - 4 0 0 P L C都 做 为 D P主 站 时 ,
1 . 2 西门子 s 7 — 4 0 0 P L C 中,C P U模 块 也 决这个 问题 。
支持 的 P r o i f b u s . D P 现 场总 线进行 通讯 。这就
为和 利 时 MA CS和 西 门子 西 门子 s 7 - 4 0 0 P L C 之 间通过 P r o i f b u s — D P现场 总线进 行通讯 创造
PLC在锅炉控制中的应用
PLC在锅炉控制中的应用作者:孙鹏来源:《中国科技博览》2017年第13期[摘要]伴随着我国国民经济发展驶入快车道,以及工业逐步实现现代化,作为现代能源的重要转化设备锅炉,在现代工业中依旧扮演着重要角色。
现阶段为了更加高效的利用能源,促进能源转化,避免环境污染、资源浪费,在锅炉的控制与管理上需要更加科学合理的措施。
可编程序控制器(Programmable logic contoroller)简称PLC,这一依靠计算机终端控制的高科技设备在锅炉控制中扮演着重要角色,但是在实际应用的过程中也存在着一些不足,使得可编程序控制器这一技术难以进一步发展广泛,更有甚造成了不必要的经济损失,所以必须要对PLC 在锅炉控制与管理的应用上认真研究与总结,本文对此进行了深入细致的分析和探讨。
仔细分析了PLC的功能与特性,设计了控制系统的硬件组成。
在实践中,验证了本套控制系统控制性能优良,可靠程度高。
[关键词]PLC、锅炉控制、应用中图分类号:TK223.7 文献标识码:A 文章编号:1009-914X(2017)13-0377-011 PLC及其优越性简介Programmable logic contoroller中文译为可编程序控制器,简称PLC,其核心是微处理器,是工业生产中用于控制的计算机设备,由于可编程序控制器的关键技术就是微机技术,因此PLC既具备逻辑控制性能,又具有数据处理、计算等微机具备的基本功能。
现阶段社区供暖采用的锅炉必须进行精确的实时控制,然而当前仍有部分锅炉设备采用较为落后的继电器逻辑控制。
继电器逻辑控制自动化程度不高,绝大多数操作需要手工完成,所能完成的逻辑控制功能极少,程序的模拟数量不能很好的控制,即使锅炉的开关可以控制,但是其电气线路复杂,性能得不到保证,且维修繁琐,实际锅炉系统控制中每台炉就需要一套继电器控制系统,然而本文所介绍的可编程控制器设计的控制系统则是在集中供热系统的基础上实现了系统的自动控制功能,而且整套系统的控制是经过优化处理。
plc锅炉控制系统的设计(附原理图、外文翻译)
摘要在当今各种工业企业的动力设备中,锅炉仍然是一重要的组成部分。
随着现代化工业的飞速发展,对能源利用率的要求越来越高,作为将一次能源转化为二次能源的重要设备之一的锅炉,其控制和管理随之要求越来越高。
但在我们国家,除了一些大中型锅炉采用了先进的控制技术外,绝大多数中小企业所用的锅炉,如10T/h、20T/h锅炉,大部分还在采用仪表/继电器控制,甚至还是人工操作,已无法满足要求。
据此,本文针对一台10T/h 工业锅炉,提出了一套PLC的控制系统方案。
本文以一台10T/h锅炉的PLC控制系统为背景,理论与实践相结合,详细阐述了集PLC技术,变频器技术,通信技术于一体的先进控制技术在该锅炉控制系统中的应用。
在该系统中,应用了Siemens公司的S7-300系列PLC,根据锅炉的控制特点,分析系统的控制要求,实现给煤自动调节,送风自动调节,引风自动调节,水泵给水的自动调节,根据系统控制要求分析系统所需的PLC配置,以及备控量的I/O点数及I/O口分配,查阅S7-300使用手册在理论上分析确定PLC的组成及使用事项,并用其编程软件Step7设计锅炉控制的梯形图、STL语句及PLC通信网络,实现锅炉的水位三冲量控制、燃烧过程自动控制、蒸汽压力自动控制等功能;基于锅炉运行安全的考虑,该系统中锅炉由PLC控制,PLC、上位机组成一个MPI网,运用Siemens公司的MPI全局通讯技术及WinCC的软件设计,实现锅炉的上位机的冗余控制,关键词:锅炉变频器PLC PID WinCC Step7 MPI 全局通讯AbstractNowadays the boilers are still an important component among various power equipments in industrial enterprises. Along with the fast development of modem industry,high efficient energy utilization is pursued more and more. And the boiler are a kind of Primary equipments for converting raw energy into secondary energy,so their control and supervision is very important for promoting energy utilization efficiency. But in our country,only some big and medium-sized boilers have adopted.Advanced control technique. Most boilers being used by medium and small enterprises,such as 10T/h and 20T/h boilers,are controlled by mete/relays,or even manually. That can not meet demand. In this paper,a control system scheme of PLC+IPC is Proposed,which is aiming at a 10T/h industrial boilers.An advanced boiler control technique composed of PLC,inverter,and communication are detailly described with respect theory and application in this paper,which is based on two PLC control systems of 10T/h boilers in certain plant.The S7-300 series PLC of siemens company is adopted in the boiler control systems. The Step7 programming software is used to design the ladder chart,the STL language and the PLC correspondence network. Automatic control for the boilers has been realized,such as three impulse control for the water level,burning Process control,vapor pressure control. Moreover,an amicable man-machine interface,automatic storage of important boiler run data,and automatic print of reports in need is realized by using the configurations software WinCC of Siemens company. Each boiler in the system is controlled by one PLC respectively. PLC and IPC shaped into a MPI net. By using the MPI overall situation telecommunication technique and the WinCC software of Siemens company redundancy controls of the two IPC are designed for the safety. The automatic control of public facilities such as deoxidization equipment is also realized in the system.Key words: boiler,inverter,PLC,PID目录摘要 (I)ABSTRACT..................................................................................................................... I I 第一章绪论.. (1)1.1工业锅炉控制现状 (1)1.2工业锅炉控制的任务和特点 (1)1.2.1 工业锅炉控制的任务 (1)1.2.2工业锅炉给水自动控制 (2)1.2.3工业锅炉燃烧过程自动控制 (4)1.3PLC控制的优点 (7)1.4本文主要内容 (8)第二章锅炉控制系统的总体设计 (9)2.1系统控制要求 (9)2.2锅炉本体构造 (9)2.3系统设计思想 (10)2.3.1电机控制模式 (10)2.4各主要回路控制策略 (12)2.4.1锅炉生产工艺流程图及汽水系统 (12)2.4.2 主程序框图如下: (14)2.4.3 自动控制系统结构框图: (15)2.4.4 给水调节回路 (15)2.4.5汽包压力调节回路 (16)2.4.6炉膛负压调节回路 (17)2.4.7水位控制程序框图: (19)2.4.8燃烧控制回路程序框图: (20)第三章系统硬件组成 (21)3.1总体结构 (21)3.2系统硬件组成 (21)3.3主要器件选择 (21)3.4系统供电 (34)3.5系统接地 (35)3.6系统运行方式 (36)3.7PLC配置及I/O点分配: (36)3.7.1锅炉给水 (37)3.7.2锅筒 (38)3.7.3给煤 (38)3.7.4鼓风和引风 (40)3.7.5 炉膛 (42)3.7.6 出渣机: (42)3.7.7 蒸汽管路和省煤器: (42)第四章系统软件和设置 (44)4.1PLC软件设计 (44)4.1.1 Step7简介 (44)4.1.2 Step7的PlD功能块 (48)4.1.3 PLC程序总体结构 (53)4.1.4功能模块编程 (55)4.2系统通讯 (60)4.3本章小结 (60)结束语 (61)致谢 (62)参考文献 (63)附录1原理图 (65)附录2外文 (66)附录3翻译 (69)第一章绪论1.1 工业锅炉控制现状目前在我们国内,锅炉仍然是各种工业企业的动力设备中重要的组成部分。
锅炉plc控制
1 概述锅炉是化工、炼油、发电等工业生产过程中必不可少的重要的动力设备。
它所产生的高压蒸汽,既可以作为风机、压缩机、大型泵类的驱动透平的动力源,又可作为蒸馏、化学反应、干燥和蒸发等过程的热源。
但是,除了一些大中型锅炉采用了先进的控制技术,如DCS、FCS,一般的小型锅炉的控制仍较落后,仍在使用DDZ-n型电动单元组合仪表。
燃烧控制手动调节,锅炉的燃烧控制就是依靠人工调节给煤,人工调节风门对锅炉的鼓、引风风量进行控制,实现锅炉燃烧状态控制的目的。
传统的锅炉风机控制系统中,锅炉鼓风、引风控制采用接触器控制,故障率较高,影响了锅炉的正常稳定运行,制约了生产;风量调节控制靠改变风门挡板的开度来实现的(电机恒速运行),能源浪费大;锅炉给水采用手动控制执行器控制,在用汽量波动大时,安全性不够高等。
手动控制给煤量、鼓风量、引风量,不能实现最优风煤比和炉膛负压,司炉工在运行时凭经验对燃烧系统进行调节,不能保证最经济的运行并且劳动强度大;锅炉的燃烧控制系统和水位调节系统是通过对调风板和阀门对风量和给水量,进行控制来实现燃烧控制和水位控制,存在严重的节流损失;水位控制采用单冲量水位调节,水位控制不稳定,存在严重的安全隐患。
即使现在的仪表不少已趋智能化在锅炉上也实现了自动或半自动控制。
但是,由于其不菲的价格、缺乏管理功能等种种原因,其应用受到很大限制。
而现在大多数中小锅炉往往是通过人工调节的方式来完成这个燃烧状态控制调节工作,通过人的感觉器官的识别并经过大脑的分析处理做出动作的决定,借助压力、温度显示仪表来实现锅炉燃烧状态控制。
近年来,随着电力电子技术、计算机技术、自动控制技术的迅速发展,电气传动技术面临着一场历史革命,即交流调速取代直流调速和计算机数字控制技术取代模拟控制技术已成为发展趋势。
电机交流变频调速技术是当今节电、改善工艺流程以提高产品质量和改善环境、推动技术进步的一种主要手段。
变频调速以其优异的调速和起制动性能,高效率、高功率因数和节电效果,广泛的适用范围及其它许多优点而被国内外公认为最有发展前途的调速方式。
PLC控制锅炉温度
PLC控制锅炉温度引言在工业领域中,锅炉是非常重要的设备之一。
它们被广泛应用于许多不同的行业,如发电厂、化工厂、纺织工厂等。
锅炉的基本功能是产生蒸汽或加热水,以满足工业过程中的需要。
控制锅炉温度对于保持工艺的稳定性和安全性非常关键。
传统的锅炉控制方法往往依赖于人工操作和经验,但这种方式存在一些弊端,如控制精度不高、人为错误等。
为了解决这些问题,现代工业中普遍使用PLC(可编程逻辑控制器)技术来自动控制锅炉温度。
本文将介绍PLC控制锅炉温度的原理和应用,并给出一个基本的PLC程序示例。
PLC控制锅炉温度的原理PLC控制锅炉温度的基本原理是通过传感器来检测锅炉的温度,并将检测到的温度值与设定值进行比较。
根据比较结果,PLC会发送信号给执行元件(如电磁阀、电机等)来调节锅炉的燃烧状况,以使得温度保持在设定值附近。
具体来说,PLC控制锅炉温度可以分为以下几个步骤:1.读取锅炉温度传感器的数值。
2.将检测到的温度值与设定值进行比较,计算温度偏差。
3.根据温度偏差,判断执行元件(电磁阀、电机等)应该做出的动作: 开启、关闭或调整。
4.发送控制信号给执行元件,执行相应的动作。
5.循环执行以上步骤,实时监测和控制锅炉温度。
PLC控制锅炉温度的应用PLC控制锅炉温度的应用十分广泛。
下面列举了几个常见的应用场景:1. 发电厂在发电厂中,锅炉是产生蒸汽的关键设备。
通过PLC控制锅炉温度,可以确保发电厂的稳定运行和安全性。
PLC系统可以实时监测并自动调节锅炉的燃烧状态,以达到预定的温度要求。
2. 化工工厂在化工工厂中,锅炉通常用于加热反应器或提供热能。
通过PLC控制锅炉温度,可以精确控制反应器的温度,以提高化学反应的效率和产品质量。
同时,PLC系统可以及时发现并修复锅炉故障,减少停工时间和维修成本。
3. 纺织工厂在纺织工厂中,锅炉通常用于加热染色液或提供蒸汽给纺织机械。
通过PLC控制锅炉温度,可以保证染色工艺的稳定性和一致性,提高产品的色彩均匀度。
和利时网络变量使用说明(5.2.4版本)
网络变量用于不同控制站之间的数据交互,组态方法中包括在其中一个控制站工程中组态写属性的网络变量(发送方),在另一个控制站的工程中组态读属性的网络变量(接收方),具体方法如下,以5#锅炉为例:
1、打开控制器算法组态,点开资源选项,双击“目标设置”,在“网络变量”中选中“支
持的网络变量接口名称”在“支持的网络变量接口名称”中设置为“UDP”,点确定,如下图所示,注意:UDP必须大写。
2、添加网络变量算法函数库
在资源选项中,双击库管理器,添加库函数NetVarUdp_lib.lib,系统将自动添加其他库函数:SysLibSocketForLinux.lib, SysLibCallback.lib, HSNetVarHSIE.lib,如下图所示
3、添加网络变量组。
电热锅炉供热系统的PLC控制程序设计
xxxxxxx机电工程系毕业设计论文电热锅炉供热系统的PLC控制程序设计题目专业名称学生姓名指导教师毕业时间绪论现在生产线控制的主流品种是以继电器、接触器为主的控制装置。
继电器、接触器是一些电磁开关。
由励磁线圈、铁心磁路、触点等部件组成。
通过继电器接触器等其它控制元件的线路连接,可以实现一定的控制逻辑,从而实现设备的各种操作控制。
人们将由导线连接决定器件间的逻辑关系的控制方式称为接线逻辑。
随着工业自动化的程度的不断提高,使用继电器电路构成工业控制系统的缺陷不断暴露出来。
首先是复杂的系统使用成百上千个各种各样的继电器,成千上万根导线连接的密如蛛网。
只要有一个电器,一根导线出现故障,系统就不能工作,这就大大降低了这种接线逻辑的可靠性。
其次是这样的系统维修机改造很不容易,特别是技术改造,当试图改造工作设备的工作过程以改善设备各功能时,人们宁愿重新生产一套控制设备都不愿将继电器控制柜中的线路重接。
而PLC由于采用现代大规模集成电路技术,采用严格的生产工艺制造,内部电路采用了先进的抗干扰技术,具有很高的可靠性。
同时PLC用存储逻辑代替接线逻辑,大大减小了控制设备的外部接线,是控制系统设计及建造的周期大大缩短了。
同时维护也变得容易起来。
更重要的是同一设备经过改变程序改变生产过程成为可能。
本文以PLC技术在锅炉多功能供热系统为例,来阐明PLC在工业控制中发挥的巨大作用关键词:锅炉多功能供热;PLC;目录1 绪论 (2)1.1 PLC的基本概念 (5)1.2 PLC的诞生 (5)1.3 PLC的特点 (6)2 PLC的介绍 (7)2.1 PLC的流派 (7)2.2 PLC的结构和工作原理 (8)3 PLC的应用领域 (11)3.1开关量的逻辑控制 (11)3.2模拟量控制 (11).3.3运动控制 (12)3.4过程控制 (12)3.5数据控制 (12)4 PLC的基本结构 (12)4.1中央处理单元 (13)4.2 存储器 (13)4.3I/O模块 (14)4.4 电源 (15)4.5 底板或机架 (16)4.6 PLC系统的基本设备 (16)5 PLC的基本工作原理 (16)5.1 扫描技术 (16)5.2 PLC与继电器控制与系统微机区别 (18)5.3 基本指令系统特点 (18)5.4编程语言的形式 (19)5.5 PLC控制系统的设计基本原则 (20)5.6 PLC程序的内容和质量评价指标 (21)5.7 PLC程序的调试方法及步骤 (22)5.8 PLC的造型方法 (23)5.9经济性考虑 (27)6 基于PLC的电热锅炉供热控制系统设计 (28)6.1电热锅炉供热控制系统设计要求 (29)6.2电热锅炉供热控制系统设计方案 (30)6.3电热锅炉供热控制系统设计的程序部分的介绍 (34)致谢 (37)参考文献 (38)1.1 PLC的基本概念PLC即可编程控制器(Programmable logic Controller),是指以计算机技术为基础的新型工业控制装置。
PLC技术在锅炉控制系统中的应用
PLC技术在锅炉控制系统中的应用【摘要】本文以某厂两台10T/h锅炉的PLC控制系统为例,理论结合实践,阐述了集PLC技术,变频器技术,通信技术于一体的先进控制技术在该锅炉控制系统中的应用。
该锅炉控制系统经安装、调试后控制效果良好,实现了预期的控制要求。
【关键词】PLC;锅炉;控制系统目前在我国,锅炉是工矿企业动力设备中重要的组成部分。
除了一些大中型锅炉采用了如DCS、FCS等先进的控制技术,一般小型锅炉的控制仍比较落后,依然在使用仪表、继电器等作为主要的控制手段,需要过多的人为参与。
工作人员的劳动强度大,工作条件差,而锅炉的热效率却不高,资源浪费十分严重。
目前的仪表已趋智能化,锅炉上也实现了自动控制,但是,由于其价格高、缺乏管理功能等原因,使其还未被广泛应用。
现在大部分的中小企业使用的锅炉容量大多在20T/h以下,锅炉数量较少只有两三台。
企业从经济角度出发,通常不选用价格较高的大规模控制系统。
这直接导致了小型锅炉的控制技术水平不高。
随着能源短缺问题的突出,企业现代化管理水平和环保意识的提高,锅炉高效安全运行,提高自动化程度,是锅炉控制系统设计和改造的重点。
1.工业锅炉控制的任务工业锅炉的功能是生产出有一定压力或温度的蒸汽或热水以满足外部对负荷的需求。
为了满足以上要求,并且保证锅炉本体安全经济运行,要求锅炉的控制系统具有完善的自动检测、自动控制和自动保护等功能。
为了提供合格的蒸汽以满足负荷的要求,其工作过程中的各主要工艺参数要严格进行控制。
锅炉的主要控制任务为:保持锅筒水位在规定的范围及给水稳定;保持炉膛负压在规定的范围;稳定蒸汽温度、压力和蒸发量;保持燃烧的经济性和锅炉的安全运行。
2.锅炉控制系统的要求本控制系统控制两台l0T/hDHLIO-1.25-AIII型锅炉,结合锅炉自带的部分手动控制,主要实现如下功能:锅炉给煤系统:给煤自动调节;锅炉送风系统:送风自动调节;锅炉引风系统:引风自动调节;锅炉燃烧控制系统:给煤、送风和引风系统一起实现锅炉最佳经济燃烧;水箱水位实时监控:水位监视与报警;循环水泵、补水泵运行状态实时监控:循环水泵、补水泵状态监视与报警:锅炉各种连锁保护:保证锅的安全运行。
基于LM系列和利时PLC的太阳能控制ST语言源程序代码
VAR_GLOBALix_auto AT %IX0.0:BOOL;ix_safetranspump1 AT %IX0.1:BOOL;ix_safetranspump2 AT %IX0.2:BOOL;ix_safenetpump1 AT %IX0.3:BOOL;ix_safenetpump2 AT %IX0.4:BOOL;ix_ltank AT %IX0.5:BOOL;ix_scram AT %IX0.6:BOOL;qx_transpump1 AT %QX0.0:BOOL:=FALSE;qx_transpump2 AT %QX0.1:BOOL:=FALSE;qx_netpump1 AT %QX0.2:BOOL:=FALSE;qx_netpump2 AT %QX0.3:BOOL:=FALSE;qx_heater AT %QX0.4:BOOL:=FALSE;qx_freezeheat AT %QX0.5:BOOL:=FALSE;qx_lvalve AT %QX0.6:BOOL:=FALSE;qx_alarm AT %QX0.7 :BOOL:=FALSE;iw_ltank AT %IW4:WORD;iw_ttank AT %IW6:WORD;iw_tcollectfeed AT %IW8:WORD;iw_tcollectback AT %IW10:WORD;gr_ltank:REAL;gr_ttank:REAL;gr_tcollectfeed:REAL;gr_tcollectback:REAL;gb_firstpoweron:BOOL:=TRUE;mbus_year AT%MW1000 :WORD; (*modbus address 3501*)mbus_month AT %MW1002:WORD;(*modbus address 3502*)mbus_date AT %MW1004:WORD;(*modbus address 3503*)mbus_hour AT %MW1006:WORD;(*modbus address 3504*)mbus_minute AT %MW1008:WORD;(*modbus address 3505*)mbus_second AT %MW1010:WORD;(*modbus address 3506*)mbus_setdt AT %MW1012:WORD;(*modbus address 3507*)mbus_ltank AT %MW1014:WORD;(*modbus address 3508*)mbus_ttank AT %MW1016:WORD;(*modbus address 3509*)mbus_tcollectfeed AT %MW1018:WORD;(*modbus address 3510*) mbus_tcollectback AT %MW1020:WORD;(*modbus address 3511*) mbus_tcollectband AT %MW1022:WORD;(*modbus address 3512*) mbus_ttankband AT %MW1024:WORD;(*modbus address 3513*)mbus_tsetfeed AT %MW1026:WORD;(*modbus address 3514*)mbus_tsetheater AT %MW1028:WORD;(*modbus address 3515*) mbus_theaterband AT %MW1030:WORD;(*modbus address 3516*) mbus_settime AT %MX100.0:BOOL;(*modbus address 3801*)gi_year:INT;gby_month:BYTE;gby_date:BYTE;gby_hour:BYTE;gby_minute:BYTE;gby_second:BYTE;END_VARVARton_analog:TON;ton_drive:TON;analogin0:Analog_IN;analogin1:Analog_IN;sethdrtcx:Set_HD_RTC_X;gethdrtc:Get_HD_RTC;l_dt:REAL;l_ltank:REAL;END_VARVAR RETAINgr_setdt:REAL;gr_tcollectband:REAL;gr_ttankband:REAL;gr_tsetfeed:REAL;gr_tsetheater:REAL;gr_theaterband:REAL;END_VARPROGRAM PLC_PRG()analogin1(en:=TRUE,address:=1);l_ltank:=WORD_TO_REAL(iw_ltank);gr_ltank:=(l_ltank-2000)/8000*100+20;gr_ttank:=WORD_TO_REAL(iw_ttank/10);gr_tcollectfeed:=WORD_TO_REAL(iw_tcollectfeed/10); gr_tcollectback:=WORD_TO_REAL(iw_tcollectback/10); mbus_ltank:=REAL_TO_WORD(gr_ltank);mbus_ttank:=REAL_TO_WORD(gr_ttank);mbus_tcollectfeed:=REAL_TO_WORD(gr_tcollectfeed); mbus_tcollectback:=REAL_TO_WORD(gr_tcollectback); ton_analog(in:=FALSE);END_IF(*end read analog and write eview*)gr_setdt:=WORD_TO_REAL(mbus_setdt);gr_tsetfeed:=WORD_TO_REAL(mbus_tsetfeed);gr_tcollectband:=WORD_TO_REAL(mbus_tcollectband);gr_ttankband:=WORD_TO_REAL(mbus_ttankband);gr_tsetheater:=WORD_TO_REAL(mbus_tsetheater);gr_theaterband:=WORD_TO_REAL(mbus_theaterband);l_dt:=gr_tcollectfeed-gr_tcollectback;(**)ton_drive(IN:=TRUE , PT:=t#5s);IF(ton_drive.Q =TRUE) THEN(* begin sun exchange heat cylined pump1*)IF((l_dt<gr_setdt-gr_tcollectband AND gr_ttank<=75 ) OR ix_scram=FALSE OR ix_safetranspump1=TRUE OR qx_transpump2=TRUE) THENqx_transpump1:=FALSE;END_IFIF((l_dt>gr_setdt+gr_tcollectband OR gr_ttank>=80) AND ix_scram=TRUE AND ix_safetranspump1=FALSE AND qx_transpump2=FALSE )THENqx_transpump1:=TRUE;END_IF(* end sun exchange heat cylined pump1*)(* begin sun exchange heat cylined pump1*)IF((l_dt<gr_setdt-gr_tcollectband AND gr_ttank<=75) OR ix_scram=FALSE OR ix_safetranspump2=TRUE OR qx_transpump1=TRUE) THENqx_transpump2:=FALSE;END_IFIF((l_dt>gr_setdt+gr_tcollectband OR gr_ttank>=80) AND ix_scram=TRUE AND ix_safetranspump2=FALSE AND qx_transpump1=FALSE )THENqx_transpump2:=TRUE;END_IF(* end sun exchange heat cylined pump1*)(*begin sun outsidenet heat cyclined pump1*)IF( ix_scram=FALSE OR ix_safenetpump1=TRUE OR gr_ltank<=40 OR qx_netpump2=TRUE) THENqx_netpump1:=FALSE;END_IFIF( ix_scram=TRUE AND ix_safenetpump1=FALSE AND gr_ltank>=45 AND qx_netpump2=FALSE)THENqx_netpump1:=TRUE;END_IF(*end sun outsidenet heat cyclined pump1*)(*begin sun outsidenet heat cyclined pump2*)IF( ix_scram=FALSE OR ix_safenetpump2=TRUE OR gr_ltank<=40 OR qx_netpump1=TRUE) THENqx_netpump2:=FALSE;END_IFIF( ix_scram=TRUE AND ix_safenetpump2=FALSE AND gr_ltank>=45 AND qx_netpump1=FALSE)THENqx_netpump2:=TRUE;END_IF(*end sun outsidenet heat cyclined pump2*)(*begin heater *)IF(gr_ttank<gr_tsetheater-gr_theaterband AND ix_scram=TRUE AND gr_ltank>=45)THENqx_heater:=TRUE;END_IFIF(gr_ttank>gr_tsetheater+gr_theaterband OR ix_scram=FALSE OR gr_ltank<=40) THENqx_heater:=FALSE;END_IF(*end heater*)(*begin freezeheat*)IF((gr_tcollectfeed+gr_tcollectback)/2>=8) THENqx_freezeheat:=FALSE;END_IFIF((gr_tcollectfeed+gr_tcollectback)/2<=5)THENqx_freezeheat:=TRUE;END_IF(*end freezeheat*)(*begin alarm*)IF(ix_safetranspump1=TRUE OR ix_safetranspump2=TRUE OR ix_safenetpump1=TRUE OR ix_safenetpump2=TRUE OR ix_scram=FALSE ) THENqx_alarm:=TRUE;ELSEqx_alarm:=FALSE;END_IF(*end alarm*)(*begin warter valve*) IF(gr_ltank<=80) THEN qx_lvalve:=TRUE;END_IFIF(gr_ltank>=85) THEN qx_lvalve:=FALSE; END_IF(*end warter valve*)ton_drive(in:=FALSE); END_IF。
PLC锅炉PID控制
摘要本系统是基于PLC的水暖锅炉控制,在设计中主要有水位检测、温度检测、压力检测、按键控制、水温控制、水位控制、循环控制、压力控制、显示部分、故障报警等几部分组成来实现供暖控制。
主要用水位传感器检测水位,用数字温度传感器Dsl882 0来检测水温,用五个控制按键来实现按健控制,用三位LED显示器来完成显示部分,用变频器来控制循环泵的转速,用压力传感器检测锅炉内部压力。
并且通过模数转换把这些信号送入PLC中。
把这些信号与PLC中内部设定的值相比,以判断PLC是否需要进行相应的操作,即是否需要打开鼓风机,是否需要开启补水泵,是否需要加快循环泵的转速等操作,从而实现单片机自动控制的目的。
本设计用PLC控制易于实现锅炉供暖、而且有造价低、程序易于调试、一部分出现故障不会影响其他部分的工作、维修方便、等优点。
关键词:PLC,传感器,水位,温度,循环,自动控制Based PLC Design of Heating Boiler Controlled System ResearchABSTRACTThe systemic design bases controller of CMS water heating of a boiler, it mostly makes up of measuring water level , measuring a water temperature, controlling a keys-press, controlling a water temperature, controlling water level, controlling circulate , controlling pressure. Showing a part,giving an alarm order to realize heating controller , the design adopts PLC to control boiler heating .It mostly uses a temperature sensor DS18B20 to measure water temperature .Uses water level sensor to measure water level, uses a transducer to control cycle pump' s rotate speed .Uses five keys-press to control key-press. Uses three light-emitting diodes display to finish a display parts .Uses a transducer to control rotate speed of cycle pump .Uses a press transducer to measure press in the boiler. It sends those signals to PLC through modulus and holder those signals to compare with enactment in the PLC to judge whether PLC need to carry through relevant operation namely. Whether it needs to open a fan, whether it needs to turn on a water pump .whether it needs to quicken rotate speed of a pump and so on. It finishes an aim of PLC auto-controller. The design makes use of the PLC to control boiler which is easy to realize boiler heating. It is cheap to manufacture. It is easy to debug its procedure .When a part is in trouble. It does not infect others and it is convenience to mend. It is widely to use many of areas.KEY WORDS: PLC, transducer, water level. Water temperature, Auto-control目录前言 ............................................................... 错误!未定义书签。
和利时DCS与西门子PLC通讯探讨
和利时DCS与西门子PLC通讯探讨摘要:DCS和PLC作为现代工业自动化的控制系统已经广泛的应用到各个行业。
DCS已经非常成熟的应用在锅炉控制中,而锅炉的辅助设备很多是通过单独PLC进行控制。
为了将辅助设备的控制与DCS连接,必须进行硬件对接和数据传输,本文主要阐述和利时DCS与西门子PLC实现通讯的过程。
关键词:DCS PLC MODBUS通讯协议1.序言我司4#循环流化床锅炉DCS采用和利时MACSV控制系统,电袋除尘器采用西门子S7-200 PLC进行控制和西门子触摸屏实现自动控制。
为了减少人工就地监控和实现远方监控,更好的实现生产调度,必须实现两套控制系统的互联和通讯。
2.硬件配置2.1 DCS控制系统本套和利时MACSV系统包括75T/H循环流化床锅炉和1500KW·H汽轮发电机控制,四个FM801冗余控制器,分别对锅炉和汽机进行控制,一个工程师站、三个操作员站,其中一个操作员站配有MOXA卡。
由监控网、系统网和控制网三个层次组成。
每个域的SNET相对独立,采用实时以太网通讯协议,保证网络安全。
域间通过MNET连接在一起,以太网通讯协议。
两个域互为独立又能在操作员站通过口令登录到不同的域而进行相互监控。
监控网(MNET)主要节点为工程师站、操作员站、服务器站;系统网主要节点为工程师站、服务器站、现场控制站。
控制网(CNET)位于现场控制站内部,主要有DP主站(主控单元)和DP从站(智能I/O单元-输入/输出模块)。
网络结构简图如图1。
2.2 PLC控制系统电袋除尘器由电场和布袋两套S7-200控制,两套系统采用并联与DCS通讯,每套系统包括1台西门子TP170触摸屏、1台CPU224XP CN、1台EM222 CN、1台EM231 CN组成。
触摸屏为现场显示工艺流程和工艺参数,CPU224XP CN 为中央处理单元(带2个串行通讯口,port1与触摸屏通讯、port0口与MACSV 进行通讯);EM222 CN为数字量扩展模块;EM231 CN为模拟量扩展模块。
基于PLC的锅炉启停控制的程序设计
摘要本文通过对循环流化床的启动过程分析,为实现用可编程控制器(PLC)完成对此过程的自动控制,以安全启动和减轻人工负担为双目标,利用梯形图编写了PLC的控制程序。
以240t/h锅炉为例,选取合适的模拟量输入模块,以达到基于对锅炉点火温度及炉膛温度实时监测下的安全启动过程。
常规控制系统采用继电器控制,元器件较多,控制线路复杂,抗干扰能力差,增加了故障点,维护和维修不方便.而利用PLC程序对锅炉启动进行控制,不仅有效简化控制线路,提高系统的抗干扰能力。
方便现场的维护和维修,又可以简化操作,并且可以充分保证点火成功率。
关键词:循环流化床锅炉,可编程控制器,控制程序ABSTRACTBy the start of the circulating fluidized bed process analysis, to achieve the use of programmable logic controller (PLC) automatic control of the completion of this process in a safe start-up and reduce the manual burden for the two-goal,the use of the preparation of the PLC ladder diagram control procedures. To 240t / h boiler as an example,select the appropriate analog input module,in order to achieve based on the boiler furnace ignition temperature and the temperature under the real—time monitoring of the safety of the startup process。
使用和利时PLC的锅炉控制源代码
使用和利时PLC的锅炉控制源代码PROGRAM PLC_PRG()hs_tcp(EN:=TRUE , Address:=5 );success:=hs_tcp.Q ;initial();read_io();read_analog();winterpump_start();summerpump_start();supplypump_start();lifepump_start();v1_start();v2_start();zv04_start();boiler_start();flow_start();to_retain();PROGRAM boiler_start()*zv01 open*)tp_zv01openpulse(IN:= mskv1_b1runstate OR mskv0_b1start, PT:= t#5s);IF(tp_zv01openpulse.Q =TRUE) THENqx_zv01open:=TRUE;ELSEqx_zv01open:=FALSE;END_IF(*boiler1 start*)IF( mskv0_b1start=TRUE AND ix_zv01open=TRUE AND ix_b1lalarm=FALSE AND ix_b1talarm=FALSEAND ix_b1palarm=FALSE AND ix_firealarm=FALSE AND (b_summerpumpstarted=TRUE OR b_winterpumpstarted=TRUE) AND ix_b1burnfault=FALSE AND ix_summerpumpfault=FALSE AND ix_winterpumpfault=FALSE AND ix_supplypumpfault=FALSE)THENqx_b1start:=TRUE;ELSEqx_b1start:=FALSE;(*boiler1 stop*)END_IFPROGRAM flow_start()Timer_flowstart(IN:=TRUE,PT:=T#1s);IF Timer_flowstart.Q THENIF(retain_hall>999999)THENretain_hall:=0;END_IFtemp_dt1:=(t_feed-t_back);temp_dt2:=(t_feed-mskv8_te02);temp_dt:=temp_dt1+temp_dt2;temp_j:=mskv8_ffeed*4.1868;temp_j:=temp_j/3600;mskv8_j:=temp_j;temp_gj:=temp_j/1000000000;retain_hall:=retain_hall+temp_gj;mskv8_hall:=retain_hall;timer_flowstart(in:=FALSE);END_IF(*(4.1868*mskv8_ffeed*(t_feed-t_back)/3600/1000000000); *)PROGRAM from_retain()mskv0_v1auto:=retain_v1auto;mskv0_v2auto:=retain_v2auto;mskv0_supplypumpauto:=retain_supplypumpauto; mskv9_fwinterpump:=retain_fwinterpump;mskv9_fsummerpump:=retain_fsummerpump;mskv9_tjiejuv1:=retain_tjiejuv1;mskv9_fsupplypump:=retain_fsupplypump;mskv9_vv1:=retain_vv1;v_v1:=retain_vv1;mskv9_vv2:=retain_vv2;v_v2:=retain_vv2;PROGRAM initial()IF(b_firstpoweron=TRUE) THENqx_b1start:=FALSE;qx_b2start:=FALSE;qx_b3start:=FALSE;read_analog();t_mesurev1:=t_out;from_retain();b_firstpoweron:=FALSE;END_IFPROGRAM lifepump_start()timer_lifepump(in:=TRUE,pt:=t#2s);IF(timer_lifepump.q=TRUE)THENIF(t_backlife<=38) THENqx_lifepumpa:=TRUE;qx_lifepumpb:=TRUE;END_IFIF(t_backlife>=55)THENqx_lifepumpa:=FALSE;qx_lifepumpb:=FALSE;END_IFtimer_lifepump(in:=FALSE);END_IFPROGRAM read_analog()timer_readanalog(in:=TRUE,pt:=t#100ms);IF(timer_readanalog.Q=TRUE) THENhhe_tout(EN:=TRUE , IN:=iw_tout , HIGH:=50 ,LOW:=-50 ,MODE:=0 ); t:=hhe_tout.out;t_out:=t;mskv8_tout:=t;(**)hhe_tguofu(EN:=TRUE , IN:=iw_tguofu , HIGH:=100 ,LOW:=0 ,MODE:=0); t:=hhe_tguofu.OUT;mskv8_tguofu:=t;hhe_pguofu(EN:=TRUE , IN:=iw_pguofu , HIGH:=1.6 ,LOW:=0 ,MODE:=0); t:=hhe_pguofu.OUT;mskv8_pguofu:=t;hhe_te02(EN:=TRUE , IN:=iw_te02, HIGH:=100 ,LOW:=0 ,MODE:=0); t:=hhe_te02.OUT;mskv8_te02:=t;(**)hhe_tg1(EN:=TRUE , IN:=iw_tg1 , HIGH:=100 ,LOW:=0 ,MODE:=0); t:=hhe_tg1.OUT;mskv8_tg1:=t;hhe_tg2(EN:=TRUE , IN:=iw_tg2 , HIGH:=100 ,LOW:=0 ,MODE:=0 ); t:=hhe_tg2.OUT;mskv8_tg2:=t;hhe_tg3(EN:=TRUE , IN:=iw_tg3 , HIGH:=100 ,LOW:=0 ,MODE:=0 ); t:=hhe_tg3.OUT;mskv8_tg3:=t;hhe_tfeed(EN:=TRUE ,IN:=iw_tfeed , HIGH:=100 ,LOW:=0 ,MODE:=0 );t:=hhe_tfeed.OUT;mskv8_tfeed:=t;t_feed:=t;hhe_tnatatorium(en:=TRUE,in:=iw_tnatatorium,high:=100,lo w:=0,mode:=0); t:=hhe_tnatatorium.OUT;mskv8_tnatatorium:=t;hhe_tshelter(en:=TRUE,in:=iw_tshelter,high:=100,low:=0,mo de:=0);t:=hhe_tshelter.OUT;mskv8_tshelter:=t;hhe_tswimpool(en:=TRUE,in:=iw_tswimpool,high:=100,low: =0,mode:=0); t:=hhe_tswimpool.OUT;mskv8_tswimpool:=t;hhe_tgeothermy(en:=TRUE,in:=iw_tgeothermy,high:=100,lo w:=0,mode:=0); t:=hhe_tgeothermy.OUT;mskv8_tgeothermy:=t;hhe_tback(en:=TRUE,in:=iw_tback,high:=100,low:=0,mode:= 0);t_back:=hhe_tback.OUT;mskv8_tback:=t_back;hhe_tb1co2(en:=TRUE,in:=iw_tb1co2,high:=400,low:=0,mod e:=0);t:=hhe_tb1co2.OUT;mskv8_tb1co2:=t;hhe_tb2co2(en:=TRUE,in:=iw_tb2co2,high:=400,low:=0,mod e:=0);t:=hhe_tb2co2.OUT;mskv8_tb2co2:=t;hhe_tb3co2(en:=TRUE,in:=iw_tb3co2,high:=400,low:=0,mod e:=0);t:=hhe_tb3co2.OUT;mskv8_tb3co2:=t;hhe_tfeedlife(en:=TRUE,in:=iw_tfeedlife,high:=100,low:=0,m ode:=0);t_feedlife:=hhe_tfeedlife.OUT;mskv8_tfeedlife:=t_feedlife;hhe_tbacklife(en:=TRUE,in:=iw_tbacklife,high:=100,low:=0,m ode:=0);t_backlife:=hhe_tbacklife.OUT ;mskv8_tbacklife:=t_backlife;hhe_ttransa(en:=TRUE,in:=iw_ttransa,high:=100,low:=0,mod e:=0);t:=hhe_ttransa.OUT;mskv8_ttransa:=t;hhe_ttransb(en:=TRUE,in:=iw_ttransb,high:=100,low:=0,mod e:=0);t:=hhe_ttransb.OUT;mskv8_ttransb:=t;hhe_vv1(en:=TRUE,in:=iw_vv1,high:=100,low:=0,mode:=2);t:=hhe_vv1.OUT;mskv8_vv1:=t;hhe_vv2(en:=TRUE,in:=iw_vv2,high:=100,low:=0,mode:=2);t:=hhe_vv2.OUT;mskv8_vv2:=t;hhe_fsummerpump(en:=TRUE,in:=iw_fsummerpump,high:= 100,low:=0,mode:=0); t:=hhe_fsummerpump.OUT;mskv8_fsummerpump:=t;hhe_fwinterpump(en:=TRUE,in:=iw_fwinterpump,high:=100,low:=0,mode:=0); t:=hhe_fwinterpump.OUT;mskv8_fwinterpump:=t;hhe_fsupplypump(en:=TRUE,in:=iw_fsupplypump,high:=100 ,low:=0,mode:=0); t:=hhe_fsupplypump.OUT;mskv8_fsupplypump:=t;hhe_pfeed(en:=TRUE,in:=iw_pfeed,high:=1.6,low:=0,mode:= 0);t:=hhe_pfeed.OUT;mskv8_pfeed:=t;hhe_pnatatorium(en:=TRUE,in:=iw_pnatatorium,high:=1.6,lo w:=0,mode:=0);t:=hhe_pnatatorium.OUT;mskv8_pnatatorium:=t;hhe_pshelter(en:=TRUE,in:=iw_pshelter,high:=1.6,low:=0,mo de:=0);t:=hhe_pshelter.OUT;mskv8_pshelter:=t;hhe_pswimpool(en:=TRUE,in:=iw_pswimpool,high:=1.6,low: =0,mode:=0);t:=hhe_pswimpool.OUT;mskv8_pswimpool:=t;hhe_pgeothermy(en:=TRUE,in:=iw_pgeothermy,high:=1.6,lo w:=0,mode:=0); t:=hhe_pgeothermy.OUT;mskv8_pgeothermy:=t;hhe_pback(en:=TRUE,in:=iw_pback,high:=1.6,low:=0,mode: =0);t:=hhe_pback.OUT;mskv8_pback:=t;p_back:=t;hhe_psupply(en:=TRUE,in:=iw_psupply,high:=1.6,low:=0,mode:=0);t:=hhe_psupply.OUT;mskv8_psupply:=t;p_supply:=t;hhe_ffeed(EN:=TRUE ,IN:=iw_ffeed , HIGH:=200 ,LOW:=0 ,MODE:=0 );t:=hhe_ffeed.OUT;mskv8_ffeed:=t;timer_readanalog(in:=FALSE);END_IFROGRAM read_io()timer_readio(in:=TRUE,pt:=t#1s);IF(timer_readio.Q =TRUE) THENmskv1_lshuixiang:=ix_lshuixiang;mskv1_hshuixiang:=ix_hshuixiang;mskv1_b1runstate:=ix_b1runstate;mskv1_b2runstate:=ix_b2runstate;mskv1_b3runstate:=ix_b3runstate;mskv1_summerpump:=ix_summerpump;mskv1_winterpump:=ix_winterpump;mskv1_supplypump:=ix_supplypump;mskv1_lifepumpa:=ix_lifepumpa;mskv1_lifepumpb:=ix_lifepumpb;mskv1_b1lalarm:=ix_b1lalarm;mskv1_b2lalarm:=ix_b2lalarm;mskv1_b3lalarm:=ix_b3lalarm;mskv1_b1talarm:=ix_b1talarm;mskv1_b2talarm:=ix_b2talarm;mskv1_b3talarm:=ix_b3talarm;mskv1_b1palarm:=ix_b1palarm;mskv1_b2palarm:=ix_b2palarm;mskv1_b3palarm:=ix_b3palarm;mskv1_b1burnfault:=ix_b1burnfault;mskv1_b2burnfault:=ix_b2burnfault;mskv1_b3burnfault:=ix_b3burnfault;mskv1_zv01open:=ix_zv01open;mskv1_zv01close:=ix_zv01close;mskv1_zv02open:=ix_zv02open;mskv1_zv02close:=ix_zv02close;mskv1_zv03open:=ix_zv03open;mskv1_zv03close:=ix_zv03close;mskv1_winterpumpfault:=ix_winterpumpfault;mskv1_firealarm:=ix_firealarm;timer_readio(in:=FALSE);END_IFPROGRAM summerpump_start()heh_summerpump(EN:=TRUE , IN:=mskv9_fsummerpump ,HIGH:=100 ,LOW:= 0, MODE:=0); qw_fsummerpump:=heh_summerpump.OUT;(**)timer_summerpump(in:=TRUE,pt:=t#2s);IF(timer_summerpump.Q=TRUE) THENIF(mskv0_summerpump=TRUE)THENqx_summerpump:=TRUE;ELSEqx_summerpump:=FALSE;END_IFtimer_summerpump(in:=FALSE);END_IF(**)timer_summerpumpstart(in:=ix_summerpump,pt:=t#60s); IF(timer_summerpumpstart.Q =TRUE) THENb_summerpumpstarted:=TRUE;ELSEb_summerpumpstarted:=FALSE;END_IFPROGRAM supplypump_vf()(*Variable frequency*)timer_pidsp(in:=TRUE,pt:=t#30s);IF(timer_pidsp.Q =TRUE) THENdp:=0.13-p_supply;ddp:=dp-dp_oldsp;dp_oldsp:=dp;IF(dp>0.005 OR dp<-0.005) THENf:=kp_fsp*ddp+ki_fsp*dp;IF(f>10)THENf:=10;END_IFIF(f<-10)THENf:=-10;END_IFf_supplypump:=f_supplypump+f;END_IF(**)IF(f_supplypump>=100) THENf_supplypump:=100;END_IFIF(f_supplypump<=0) THENf_supplypump:=0;END_IFtimer_pidsp(in:=FALSE);END_IFmskv9_fsupplypump:=f_supplypump;heh_supplypump(EN:=TRUE , IN:=mskv9_fsupplypump , hIGH:=100 ,LOW:= 0, MODE:=0); qw_fsupplypump:=heh_supplypump.OUT;PROGRAM to_retain()retain_v1auto:=mskv0_v1auto;retain_v2auto:=mskv0_v2auto;retain_supplypumpauto:=mskv0_supplypumpauto;retain_fwinterpump:=mskv9_fwinterpump;retain_fsummerpump:=mskv9_fsummerpump;retain_tjiejuv1:=mskv9_tjiejuv1;retain_vv1:=mskv9_vv1;retain_vv2:=mskv9_vv2;ROGRAM v1_auto()timer1_pidv1(in:=TRUE,pt:=t#10s);IF(timer1_pidv1.Q =TRUE) THENt:=0.7*t_out+0.3*t_oldout;t_oldout:=t;timer1_pidv1(in:=FALSE);END_IF(*end timer1_pidtv001*)(*begin timer2_pidtv001*)timer2_pidv1(in:=TRUE,pt:=t#30s);IF(timer2_pidv1.Q =TRUE) THENt_sumv1:=t_sumv1+(t-t_mesurev1)/120;IF(t_sumv1>t_conv1) THENt_sumv1:=0;t_mesurev1:=t;IF(t_sumv1<-t_conv1) THENt_sumv1:=0;t_mesurev1:=t;END_IFtimer2_pidv1(in:=FALSE);END_IFt_y:=mskv9_tjiejuv1-xielv*t_mesurev1; (*end timer2_pidtv001*)(*begin timer3_pidtv001*)timer3_pidv1(in:=TRUE,pt:=t#120s); IF(timer3_pidv1.Q =TRUE) THENdt1:=(t_feed+t_back)/2-t_y;ddt:=dt1-dt_oldv1;dt_oldv1:=dt1;IF(dt1>0.2 OR dt1<-0.2) THENv:=kp_vv1*ddt+ki_vv1*dt1;IF(v>10)THENv:=10;END_IFIF(v<-10)THENv:=-10;END_IFv_v1:=v_v1+v;IF(v_v1>99) THENv_v1:=99;END_IFIF(v_v1<1)THENv_v1:=1;END_IFtimer3_pidv1(in:=FALSE);END_IF(*end timer3_pidtv001*)PROGRAM v1_start()IF(mskv0_v1auto=TRUE) THENv1_auto();mskv9_vv1:=v_v1;qw_temp:=mskv9_vv1;heh_v1(en:=TRUE,in:=qw_temp,high:=100,low:=0,mode:=1);qw_vv1:=heh_v1.OUT;ELSEqw_temp:=mskv9_vv1;heh_v1(en:=TRUE,in:=qw_temp,high:=100,low:=0,mode:=1);qw_vv1:=heh_v1.OUT;END_IFPROGRAM winterpump_start()heh_winterpump( EN:=TRUE ,IN:=mskv9_fwinterpump , hIGH:=100 , LOW:=0 , MODE:=0 ); qw_fwinterpump:=heh_winterpump.OUT;(**)timer_winterpump(in:=TRUE,pt:=t#2s);IF(timer_winterpump.Q =TRUE) THENIF(mskv0_winterpump=TRUE)THENqx_winterpump:=TRUE;ELSEqx_winterpump:=FALSE;END_IFtimer_winterpump(in:=FALSE);END_IF(**)timer_winterpumpstart(in:=ix_winterpump,pt:=t#60s); IF(timer_winterpumpstart.Q =TRUE) THENb_winterpumpstarted:=TRUE;ELSEb_winterpumpstarted:=FALSE;END_IFPROGRAM zv04_start()timer_zv04(in:=TRUE,pt:=t#2s);IF(timer_zv04.Q =TRUE)THENIF(p_back>1.8)THENqx_zv04:=TRUE;END_IFIF(p_back<1.5)THENqx_zv04:=FALSE;END_IF;timer_zv04(in:=FALSE);END_IF。
第一章PLC锅炉控制程序概述
第一章 PLC 锅炉控制程序概述一个锅炉监控系统主要包含一下几个部分:设备状态的采集;系统状态的采集;锅炉和各种执行机构的控制。
设备状态的采集主要是锅炉输出的状态点,循环泵和补税泵给出的状态点,以及水箱等其他设备的状态点。
锅炉输出的状态点主要包括锅炉的运行状态点、锅炉故障状态点、锅炉出水温度、锅炉回水温度、锅炉排烟温度;循环泵和补水泵以及辅助其工作的变频设备的状态点一般是由水泵控制柜或变频控制柜中集中取出的。
水箱的液位状态一般直接送到PLC 控制柜。
系统状态的采集根据锅炉系统的不同有差别。
一般来讲,目前设计的系统主要分为一次侧与二次侧。
一次侧的是锅炉水循环系统,二次侧水循环系统常用的换热器有两种一种是板式换热器,另一种是容积式换热器。
一次侧采集的状态包括一次侧供水温度、一次侧回水温度、一次侧供水压力、一次侧回水压力;二次侧采集的状态包括二次侧供水温度、二次侧回水温度、二次侧供水压力、二次侧回水压力;如果需要根据室外温度实现锅炉监控系统的自动控制那么还需要增加室外温度的采集。
锅炉和各种执行机构的控制主要是对锅炉本体的启停控制和各种电动阀门的控制。
这里所说的对锅炉本体的启停控制主要是通过锅炉自身的控制器提供的控制点控制锅炉。
锅炉本体自带的控制器这里暂不介绍。
锅炉提供的控制点是开关量控制点,一般是常开点。
根据影响锅炉运行的状态点的组合条件,给出允许锅炉启动信号。
简单的说就是需要什么样的条件锅炉才能启动或停止。
阀门的控制有两种方式,一种是开关量控制阀门打开与关闭,另一种是模拟量输出控制阀门打开与关闭。
图表 1 系统图RS485LIA001HMIPLC1#2#3#4#5#1#2#3#4#5#RM417第二章 PLC程序设计第一节程序结构本文中所采用的PLC是西门子公司的产品S7-200系列,CPU的型号是cpu226cn.西门子PLC编程工具的使用可以参照西门公司的程序使用手册或者在程序中按F1调出帮助文件参考。
用PLC实现对锅炉温度的控制
第1章
1.1
电热锅炉的应用领域相当广泛,电热锅炉的性能优劣决定了产品的质量好坏。目前电热锅炉的控制系统大都采用以微处理器为核心的计算机控制技术,既提高设备的自动化程度又提高设备的控制精度。
vi11课题背景及研究目的和意义12国内外对锅炉温度控制系统研究现状13项目研究内容21可编程控制器的产生和应用22可编程控制器的组成和工作原理23可编程控制器的分类及特点31plc控制系统设计的基本原则和步骤311plc控制系统设计的基本原则312plc控制系统设计的一般步骤313plc程序设计的一般步骤32plc的选型和硬件配置10321plc型号的选择10322s7200cpu的选择10323em231em232模拟量输入输出模块选择11324热电式传感器选择11325可控硅加热装置简介1133系统整体设计方案和电气连接图13331系统整体设计方案13332系统电气图设计1334plc控制器的设计17341控制系统模块框图建立17342pid控制及参数整定2041plc程序设计的方法和遵循的原则20411plc程序设计方法20412plc程序设计主要原则2042编程软件step7microwin概述21421step7microwin简单介绍21422计算机与plc的通信2243程序设计23431程序设计思路23432用pid指令进行软件编程24433用常规编程进行软件编程27434本系统程序及分析概述11课题背景及研究目的和意义电热锅炉的应用领域相当广泛电热锅炉的性能优劣决定了产品的质量好坏
This paper introduces the boiler as the charged object to the boiler water temperature of the main accused of the export parameters to furnace temperature as deputy accused of parameters to control the heating resistance wire voltage parameters to PLC, controller, constitutes a series of boiler temperature level control system; using PID algorithm, the use of PLC ladder programming language, programming, boiler temperature control.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PROGRAM PLC_PRG()hs_tcp(EN:=TRUE , Address:=5 );success:=hs_tcp.Q ;initial();read_io();read_analog();winterpump_start();summerpump_start();supplypump_start();lifepump_start();v1_start();v2_start();zv04_start();boiler_start();flow_start();to_retain();PROGRAM boiler_start()*zv01 open*)tp_zv01openpulse(IN:= mskv1_b1runstate OR mskv0_b1start, PT:= t#5s);IF(tp_zv01openpulse.Q =TRUE) THENqx_zv01open:=TRUE;ELSEqx_zv01open:=FALSE;END_IF(*boiler1 start*)IF( mskv0_b1start=TRUE AND ix_zv01open=TRUE AND ix_b1lalarm=FALSE AND ix_b1talarm=FALSEAND ix_b1palarm=FALSE AND ix_firealarm=FALSE AND (b_summerpumpstarted=TRUE OR b_winterpumpstarted=TRUE)AND ix_b1burnfault=FALSE AND ix_summerpumpfault=FALSE AND ix_winterpumpfault=FALSE AND ix_supplypumpfault=FALSE)THENqx_b1start:=TRUE;ELSEqx_b1start:=FALSE;(*boiler1 stop*)END_IFPROGRAM flow_start()Timer_flowstart(IN:=TRUE,PT:=T#1s);IF Timer_flowstart.Q THENIF(retain_hall>999999)THENretain_hall:=0;END_IFtemp_dt1:=(t_feed-t_back);temp_dt2:=(t_feed-mskv8_te02);temp_dt:=temp_dt1+temp_dt2;temp_j:=mskv8_ffeed*4.1868;temp_j:=temp_j/3600;mskv8_j:=temp_j;temp_gj:=temp_j/1000000000;retain_hall:=retain_hall+temp_gj;mskv8_hall:=retain_hall;timer_flowstart(in:=FALSE);END_IF(*(4.1868*mskv8_ffeed*(t_feed-t_back)/3600/1000000000); *)PROGRAM from_retain()mskv0_v1auto:=retain_v1auto;mskv0_v2auto:=retain_v2auto;mskv0_supplypumpauto:=retain_supplypumpauto; mskv9_fwinterpump:=retain_fwinterpump;mskv9_fsummerpump:=retain_fsummerpump;mskv9_tjiejuv1:=retain_tjiejuv1;mskv9_fsupplypump:=retain_fsupplypump;mskv9_vv1:=retain_vv1;v_v1:=retain_vv1;mskv9_vv2:=retain_vv2;v_v2:=retain_vv2;PROGRAM initial()IF(b_firstpoweron=TRUE) THENqx_b1start:=FALSE;qx_b2start:=FALSE;qx_b3start:=FALSE;read_analog();t_mesurev1:=t_out;from_retain();b_firstpoweron:=FALSE;END_IFPROGRAM lifepump_start()timer_lifepump(in:=TRUE,pt:=t#2s);IF(timer_lifepump.q=TRUE)THENIF(t_backlife<=38) THENqx_lifepumpa:=TRUE;qx_lifepumpb:=TRUE;END_IFIF(t_backlife>=55)THENqx_lifepumpa:=FALSE;qx_lifepumpb:=FALSE;END_IFtimer_lifepump(in:=FALSE);END_IFPROGRAM read_analog()timer_readanalog(in:=TRUE,pt:=t#100ms);IF(timer_readanalog.Q=TRUE) THENhhe_tout(EN:=TRUE , IN:=iw_tout , HIGH:=50 ,LOW:=-50 ,MODE:=0 ); t:=hhe_tout.out;t_out:=t;mskv8_tout:=t;(**)hhe_tguofu(EN:=TRUE , IN:=iw_tguofu , HIGH:=100 ,LOW:=0 ,MODE:=0); t:=hhe_tguofu.OUT;mskv8_tguofu:=t;hhe_pguofu(EN:=TRUE , IN:=iw_pguofu , HIGH:=1.6 ,LOW:=0 ,MODE:=0); t:=hhe_pguofu.OUT;mskv8_pguofu:=t;hhe_te02(EN:=TRUE , IN:=iw_te02, HIGH:=100 ,LOW:=0 ,MODE:=0); t:=hhe_te02.OUT;mskv8_te02:=t;(**)hhe_tg1(EN:=TRUE , IN:=iw_tg1 , HIGH:=100 ,LOW:=0 ,MODE:=0); t:=hhe_tg1.OUT;mskv8_tg1:=t;hhe_tg2(EN:=TRUE , IN:=iw_tg2 , HIGH:=100 ,LOW:=0 ,MODE:=0 ); t:=hhe_tg2.OUT;mskv8_tg2:=t;hhe_tg3(EN:=TRUE , IN:=iw_tg3 , HIGH:=100 ,LOW:=0 ,MODE:=0 ); t:=hhe_tg3.OUT;mskv8_tg3:=t;hhe_tfeed(EN:=TRUE ,IN:=iw_tfeed , HIGH:=100 ,LOW:=0 ,MODE:=0 );t:=hhe_tfeed.OUT;mskv8_tfeed:=t;t_feed:=t;hhe_tnatatorium(en:=TRUE,in:=iw_tnatatorium,high:=100,low:=0,mode:=0); t:=hhe_tnatatorium.OUT;mskv8_tnatatorium:=t;hhe_tshelter(en:=TRUE,in:=iw_tshelter,high:=100,low:=0,mode:=0);t:=hhe_tshelter.OUT;mskv8_tshelter:=t;hhe_tswimpool(en:=TRUE,in:=iw_tswimpool,high:=100,low:=0,mode:=0); t:=hhe_tswimpool.OUT;mskv8_tswimpool:=t;hhe_tgeothermy(en:=TRUE,in:=iw_tgeothermy,high:=100,low:=0,mode:=0); t:=hhe_tgeothermy.OUT;mskv8_tgeothermy:=t;hhe_tback(en:=TRUE,in:=iw_tback,high:=100,low:=0,mode:=0);t_back:=hhe_tback.OUT;mskv8_tback:=t_back;hhe_tb1co2(en:=TRUE,in:=iw_tb1co2,high:=400,low:=0,mode:=0);t:=hhe_tb1co2.OUT;mskv8_tb1co2:=t;hhe_tb2co2(en:=TRUE,in:=iw_tb2co2,high:=400,low:=0,mode:=0);t:=hhe_tb2co2.OUT;mskv8_tb2co2:=t;hhe_tb3co2(en:=TRUE,in:=iw_tb3co2,high:=400,low:=0,mode:=0);t:=hhe_tb3co2.OUT;mskv8_tb3co2:=t;hhe_tfeedlife(en:=TRUE,in:=iw_tfeedlife,high:=100,low:=0,mode:=0);t_feedlife:=hhe_tfeedlife.OUT;mskv8_tfeedlife:=t_feedlife;hhe_tbacklife(en:=TRUE,in:=iw_tbacklife,high:=100,low:=0,mode:=0);t_backlife:=hhe_tbacklife.OUT ;mskv8_tbacklife:=t_backlife;hhe_ttransa(en:=TRUE,in:=iw_ttransa,high:=100,low:=0,mode:=0);t:=hhe_ttransa.OUT;mskv8_ttransa:=t;hhe_ttransb(en:=TRUE,in:=iw_ttransb,high:=100,low:=0,mode:=0);t:=hhe_ttransb.OUT;mskv8_ttransb:=t;hhe_vv1(en:=TRUE,in:=iw_vv1,high:=100,low:=0,mode:=2);t:=hhe_vv1.OUT;mskv8_vv1:=t;hhe_vv2(en:=TRUE,in:=iw_vv2,high:=100,low:=0,mode:=2);t:=hhe_vv2.OUT;mskv8_vv2:=t;hhe_fsummerpump(en:=TRUE,in:=iw_fsummerpump,high:=100,low:=0,mode:=0); t:=hhe_fsummerpump.OUT;mskv8_fsummerpump:=t;hhe_fwinterpump(en:=TRUE,in:=iw_fwinterpump,high:=100,low:=0,mode:=0); t:=hhe_fwinterpump.OUT;mskv8_fwinterpump:=t;hhe_fsupplypump(en:=TRUE,in:=iw_fsupplypump,high:=100,low:=0,mode:=0); t:=hhe_fsupplypump.OUT;mskv8_fsupplypump:=t;hhe_pfeed(en:=TRUE,in:=iw_pfeed,high:=1.6,low:=0,mode:=0);t:=hhe_pfeed.OUT;mskv8_pfeed:=t;hhe_pnatatorium(en:=TRUE,in:=iw_pnatatorium,high:=1.6,low:=0,mode:=0);t:=hhe_pnatatorium.OUT;mskv8_pnatatorium:=t;hhe_pshelter(en:=TRUE,in:=iw_pshelter,high:=1.6,low:=0,mode:=0);t:=hhe_pshelter.OUT;mskv8_pshelter:=t;hhe_pswimpool(en:=TRUE,in:=iw_pswimpool,high:=1.6,low:=0,mode:=0);t:=hhe_pswimpool.OUT;mskv8_pswimpool:=t;hhe_pgeothermy(en:=TRUE,in:=iw_pgeothermy,high:=1.6,low:=0,mode:=0); t:=hhe_pgeothermy.OUT;mskv8_pgeothermy:=t;hhe_pback(en:=TRUE,in:=iw_pback,high:=1.6,low:=0,mode:=0);t:=hhe_pback.OUT;mskv8_pback:=t;p_back:=t;hhe_psupply(en:=TRUE,in:=iw_psupply,high:=1.6,low:=0,mode:=0);t:=hhe_psupply.OUT;mskv8_psupply:=t;p_supply:=t;hhe_ffeed(EN:=TRUE ,IN:=iw_ffeed , HIGH:=200 ,LOW:=0 ,MODE:=0 );t:=hhe_ffeed.OUT;mskv8_ffeed:=t;timer_readanalog(in:=FALSE);END_IFROGRAM read_io()timer_readio(in:=TRUE,pt:=t#1s);IF(timer_readio.Q =TRUE) THENmskv1_lshuixiang:=ix_lshuixiang;mskv1_hshuixiang:=ix_hshuixiang;mskv1_b1runstate:=ix_b1runstate;mskv1_b2runstate:=ix_b2runstate;mskv1_b3runstate:=ix_b3runstate;mskv1_summerpump:=ix_summerpump;mskv1_winterpump:=ix_winterpump;mskv1_supplypump:=ix_supplypump;mskv1_lifepumpa:=ix_lifepumpa;mskv1_lifepumpb:=ix_lifepumpb;mskv1_b1lalarm:=ix_b1lalarm;mskv1_b2lalarm:=ix_b2lalarm;mskv1_b3lalarm:=ix_b3lalarm;mskv1_b1talarm:=ix_b1talarm;mskv1_b2talarm:=ix_b2talarm;mskv1_b3talarm:=ix_b3talarm;mskv1_b1palarm:=ix_b1palarm;mskv1_b2palarm:=ix_b2palarm;mskv1_b3palarm:=ix_b3palarm;mskv1_b1burnfault:=ix_b1burnfault;mskv1_b2burnfault:=ix_b2burnfault;mskv1_b3burnfault:=ix_b3burnfault;mskv1_zv01open:=ix_zv01open;mskv1_zv01close:=ix_zv01close;mskv1_zv02open:=ix_zv02open;mskv1_zv02close:=ix_zv02close;mskv1_zv03open:=ix_zv03open;mskv1_zv03close:=ix_zv03close;mskv1_winterpumpfault:=ix_winterpumpfault;mskv1_firealarm:=ix_firealarm;timer_readio(in:=FALSE);END_IFPROGRAM summerpump_start()heh_summerpump(EN:=TRUE , IN:=mskv9_fsummerpump ,HIGH:=100 ,LOW:= 0, MODE:=0); qw_fsummerpump:=heh_summerpump.OUT;(**)timer_summerpump(in:=TRUE,pt:=t#2s);IF(timer_summerpump.Q=TRUE) THENIF(mskv0_summerpump=TRUE)THENqx_summerpump:=TRUE;ELSEqx_summerpump:=FALSE;END_IFtimer_summerpump(in:=FALSE);END_IF(**)timer_summerpumpstart(in:=ix_summerpump,pt:=t#60s);IF(timer_summerpumpstart.Q =TRUE) THENb_summerpumpstarted:=TRUE;ELSEb_summerpumpstarted:=FALSE;END_IFPROGRAM supplypump_vf()(*Variable frequency*)timer_pidsp(in:=TRUE,pt:=t#30s);IF(timer_pidsp.Q =TRUE) THENdp:=0.13-p_supply;ddp:=dp-dp_oldsp;dp_oldsp:=dp;IF(dp>0.005 OR dp<-0.005) THENf:=kp_fsp*ddp+ki_fsp*dp;IF(f>10)THENf:=10;END_IFIF(f<-10)THENf:=-10;END_IFf_supplypump:=f_supplypump+f;END_IF(**)IF(f_supplypump>=100) THENf_supplypump:=100;END_IFIF(f_supplypump<=0) THENf_supplypump:=0;END_IFtimer_pidsp(in:=FALSE);END_IFmskv9_fsupplypump:=f_supplypump;heh_supplypump(EN:=TRUE , IN:=mskv9_fsupplypump , hIGH:=100 ,LOW:= 0, MODE:=0); qw_fsupplypump:=heh_supplypump.OUT;PROGRAM to_retain()retain_v1auto:=mskv0_v1auto;retain_v2auto:=mskv0_v2auto;retain_supplypumpauto:=mskv0_supplypumpauto;retain_fwinterpump:=mskv9_fwinterpump;retain_fsummerpump:=mskv9_fsummerpump;retain_tjiejuv1:=mskv9_tjiejuv1;retain_vv1:=mskv9_vv1;retain_vv2:=mskv9_vv2;ROGRAM v1_auto()timer1_pidv1(in:=TRUE,pt:=t#10s);IF(timer1_pidv1.Q =TRUE) THENt:=0.7*t_out+0.3*t_oldout;t_oldout:=t;timer1_pidv1(in:=FALSE);END_IF(*end timer1_pidtv001*)(*begin timer2_pidtv001*)timer2_pidv1(in:=TRUE,pt:=t#30s);IF(timer2_pidv1.Q =TRUE) THENt_sumv1:=t_sumv1+(t-t_mesurev1)/120;IF(t_sumv1>t_conv1) THENt_sumv1:=0;t_mesurev1:=t;END_IFIF(t_sumv1<-t_conv1) THENt_sumv1:=0;t_mesurev1:=t;END_IFtimer2_pidv1(in:=FALSE);END_IFt_y:=mskv9_tjiejuv1-xielv*t_mesurev1;(*end timer2_pidtv001*)(*begin timer3_pidtv001*)timer3_pidv1(in:=TRUE,pt:=t#120s);IF(timer3_pidv1.Q =TRUE) THENdt1:=(t_feed+t_back)/2-t_y;ddt:=dt1-dt_oldv1;dt_oldv1:=dt1;IF(dt1>0.2 OR dt1<-0.2) THENv:=kp_vv1*ddt+ki_vv1*dt1;IF(v>10)THENv:=10;END_IFIF(v<-10)THENv:=-10;END_IFv_v1:=v_v1+v;IF(v_v1>99) THENv_v1:=99;END_IFIF(v_v1<1)THENv_v1:=1;END_IFEND_IFtimer3_pidv1(in:=FALSE);END_IF(*end timer3_pidtv001*)PROGRAM v1_start()IF(mskv0_v1auto=TRUE) THENv1_auto();mskv9_vv1:=v_v1;qw_temp:=mskv9_vv1;heh_v1(en:=TRUE,in:=qw_temp,high:=100,low:=0,mode:=1);qw_vv1:=heh_v1.OUT;ELSEqw_temp:=mskv9_vv1;heh_v1(en:=TRUE,in:=qw_temp,high:=100,low:=0,mode:=1);qw_vv1:=heh_v1.OUT;END_IFPROGRAM winterpump_start()heh_winterpump( EN:=TRUE ,IN:=mskv9_fwinterpump , hIGH:=100 , LOW:=0 , MODE:=0 ); qw_fwinterpump:=heh_winterpump.OUT;(**)timer_winterpump(in:=TRUE,pt:=t#2s);IF(timer_winterpump.Q =TRUE) THENIF(mskv0_winterpump=TRUE)THENqx_winterpump:=TRUE;ELSEqx_winterpump:=FALSE;END_IFtimer_winterpump(in:=FALSE);END_IF(**)timer_winterpumpstart(in:=ix_winterpump,pt:=t#60s); IF(timer_winterpumpstart.Q =TRUE) THENb_winterpumpstarted:=TRUE;ELSEb_winterpumpstarted:=FALSE;END_IFPROGRAM zv04_start()timer_zv04(in:=TRUE,pt:=t#2s);IF(timer_zv04.Q =TRUE)THENIF(p_back>1.8)THENqx_zv04:=TRUE;END_IFIF(p_back<1.5)THENqx_zv04:=FALSE;END_IF;timer_zv04(in:=FALSE);END_IF。