第一章 PLC锅炉控制程序概述img.xuegongkong.com/Attachment/2012101216562000002.doc · Web...

18
第第 PLC 第第第第第第第第 第第第第第 一一:;;。 第第第第第第第第第第第第 ,,。、、、、;一。一 PLC 第第第第 第第第 第第第第 第第第第第第第第第第第第第 第第第第第第 第第第第 第第第第 第第第第 第第 第第 第第 第第 第第 。一,一。一,一,一。一一、一、一、一;、、、;。 第 第第第第第第第第第第第第 第第第第 第第 第第 第第 第第 第第第第第第第第第 体。体。体。,一。,。。,一,一。 第第 1 第 第

Transcript of 第一章 PLC锅炉控制程序概述img.xuegongkong.com/Attachment/2012101216562000002.doc · Web...

Page 1: 第一章 PLC锅炉控制程序概述img.xuegongkong.com/Attachment/2012101216562000002.doc · Web view第一章 PLC锅炉控制程序概述 一个锅炉监控系统主要包含一下几个部分:设备状态的采集;系统状态的采集;锅炉和各种执行机构的控制。设备状态的采集主要是锅炉输出的状态点,循环泵和补税泵给出的状态点,以及水箱等其他设备

第一章 PLC 锅炉控制程序概述一个锅炉监控系统主要包含一下几个部分:设备状态的采集;系统状态的采集;锅炉和各种执行机

构的控制。设备状态的采集主要是锅炉输出的状态点,循环泵和补税泵给出的状态点,以及水箱等其他设备的

状态点。锅炉输出的状态点主要包括锅炉的运行状态点、锅炉故障状态点、锅炉出水温度、锅炉回水温度、锅炉排烟温度;循环泵和补水泵以及辅助其工作的变频设备的状态点一般是由水泵控制柜或变频控制柜中集中取出的。水箱的液位状态一般直接送到 PLC 控制柜。

系统状态的采集根据锅炉系统的不同有差别。一般来讲,目前设计的系统主要分为一次侧与二次侧。一次侧的是锅炉水循环系统,二次侧水循环系统常用的换热器有两种一种是板式换热器,另一种是容积式换热器。一次侧采集的状态包括一次侧供水温度、一次侧回水温度、一次侧供水压力、一次侧回水压力;二次侧采集的状态包括二次侧供水温度、二次侧回水温度、二次侧供水压力、二次侧回水压力;如果需要根据室外温度实现锅炉监控系统的自动控制那么还需要增加室外温度的采集。

锅炉和各种执行机构的控制主要是对锅炉本体的启停控制和各种电动阀门的控制。这里所说的对锅炉本体的启停控制主要是通过锅炉自身的控制器提供的控制点控制锅炉。锅炉本体自带的控制器这里暂不介绍。锅炉提供的控制点是开关量控制点,一般是常开点。根据影响锅炉运行的状态点的组合条件,给出允许锅炉启动信号。简单的说就是需要什么样的条件锅炉才能启动或停止。阀门的控制有两种方式,一种是开关量控制阀门打开与关闭,另一种是模拟量输出控制阀门打开与关闭。

图表 1 系统图

Page 2: 第一章 PLC锅炉控制程序概述img.xuegongkong.com/Attachment/2012101216562000002.doc · Web view第一章 PLC锅炉控制程序概述 一个锅炉监控系统主要包含一下几个部分:设备状态的采集;系统状态的采集;锅炉和各种执行机构的控制。设备状态的采集主要是锅炉输出的状态点,循环泵和补税泵给出的状态点,以及水箱等其他设备

第二章 PLC 程序设计第一节 程序结构本文中所采用的 PLC 是西门子公司的产品 S7-200 系列,CPU 的型号是 cpu226cn.

西门子 PLC 编程工具的使用可以参照西门公司的程序使用手册或者在程序中按 F1 调出帮助文件参考。下面介绍一下 PLC 程序的主要结构。首先看图表 2

图表 2 PLC 程序结构西门子 PLC 程序是面向结构的程序语言,结构中的主体子程序想要运行必须在主程序中注册。本文中

的程序结构如图 2 所示,主程序中包括了初始化子程序,数据转换子程序,锅炉控制子程序,自动控制子程序,发送中断与接收中断。

初始化子程序的作用是通讯断口的设置和一些程序中需要预置的一些常数。比如数据换算中用到的公式里面的常数或者很长一段时间不需要改动的数值。

数据转换子程序负责将采集模块采集的变量转换成我们需要的数据格式,包括采集和转换 2 个步骤。锅炉控制子程序控制锅炉的启动和停止,以及相关的状态输入和输出。自动控制子程序根据自动控制的理论设计完成锅炉的自动控制。具体的控制方案需要与实际使用的图

纸以及设计需求相结合,总结出一套稳定性和先进性的控制方法。发送中断和接收中断子程序用于通信时的信息发送与接收。第二节 PLC内存介绍既然我们知道了需要采集得数据类型和大小,以及设置数据需要得内存大小,那么我们就能够把内

存的使用标准化,即是哪类数据就用哪类规定的内存块。这样作的好处是,即使预先不知道一个内存地址的实际意义,也能知道这个地址显示的是何种数据。下面我们详细介绍这块内容。

首先我们了解一下 PLC内存的地址范围,以西门子 S7-200 系列 PLC 为例。

LC 主程序

始化

据转换与采集

炉控制动控制

讯端口设置 置常数

炉状态采集系统状态采集

据转换公式采集滤波

送中断收中断

Page 3: 第一章 PLC锅炉控制程序概述img.xuegongkong.com/Attachment/2012101216562000002.doc · Web view第一章 PLC锅炉控制程序概述 一个锅炉监控系统主要包含一下几个部分:设备状态的采集;系统状态的采集;锅炉和各种执行机构的控制。设备状态的采集主要是锅炉输出的状态点,循环泵和补税泵给出的状态点,以及水箱等其他设备

图表 3 位地址范围

图表 4 字节地址范围

图表 5 字地址范围

Page 4: 第一章 PLC锅炉控制程序概述img.xuegongkong.com/Attachment/2012101216562000002.doc · Web view第一章 PLC锅炉控制程序概述 一个锅炉监控系统主要包含一下几个部分:设备状态的采集;系统状态的采集;锅炉和各种执行机构的控制。设备状态的采集主要是锅炉输出的状态点,循环泵和补税泵给出的状态点,以及水箱等其他设备

图表 6 双子地址范围我们看到 PLC 的内存分为这样几个区域I 离散输入和映象寄存器Q 离散输出和映象寄存器M 内部内存位SM 特殊内存位(SM0 - SM29 为只读内存区)V 变量内存T 定时器当前值和定时器位C 计数器当前值和计数器位HC 高速计数器当前值AI 模拟输入AQ 模拟输出AC 累加器寄存器L 局部变量内存S SCR每个区域的具体功能可以参看西门子编程工具自带的帮助文件。第三节 内存标准化分配我们在上一节中已经知道 PLC内存是如何分类的以及各种型号的地址范围,于是我们可以把这些地

址按照我们的实际需要分门别类。本文中主要使用的是西门子公司的 PLC,其实其他品牌 PLC 的内存分类和西门子公司产品的内存分类大同小异,只是名字的叫法不同而已,所以我们可以做到举一反三触类旁通。

下面我们结合实际的例子讲清楚内存如何标准化。PLC内存中的 I区、Q区、AI区和 AQ区使用范围的大小一般来说是根据我们在工程中的实际需要配

置的。我们工程中的数字量状态采集用 I区,如锅炉的故障状态、水泵运行状态、水箱液位等等这些只有通断信号,没有范围变化的信号。同理,Q区是数字量的输出,如锅炉的启停、阀门的开关控制信号等等;AI区和 AQ区分别是采集和输出连续变化的模拟量通道,例如锅炉排烟温度、电动阀门开度、锅炉压力、系统压力等等。这些地址的分配是由 PLC 自动分配的,可以已经连接的 PLC上读出。

内存的标准化主要是除 I/Q/AI/AQ 等区域的标准化。从现实出发,我们工程中经常用到的就是CPU222、CPU224 和 CPU226 这三个型号的 PLC。如果想让我们的程序在这三个型号的 CPU 中都能运行,那么我们就必须选内存范围最小的 CPU, 内存范围最小的是 CPU222。我们就把 CPU222 中的程序当作模板。

CPU222 中 VD区的范围是 0-2044,MD 的范围是 0-28,AC 的范围是 0-3。我们之所以用 VD/MD/AC区来说明范围大小是因为 D 表示 Double Word 是 32 位的地址,而 1 位位地址(如 V0.0)、8 位字节地址(如 VB0)、16 位字地址(如 VW0)都是包含在这个范围内的。

Page 5: 第一章 PLC锅炉控制程序概述img.xuegongkong.com/Attachment/2012101216562000002.doc · Web view第一章 PLC锅炉控制程序概述 一个锅炉监控系统主要包含一下几个部分:设备状态的采集;系统状态的采集;锅炉和各种执行机构的控制。设备状态的采集主要是锅炉输出的状态点,循环泵和补税泵给出的状态点,以及水箱等其他设备

了解了上述内容后,我们开始进入本中最主要的部分——格式化标准。一、锅炉及其相关设备的状态格式:锅炉和阀门的控制使用的是开关量输出,锅炉有启动与停止两种动作,阀门也是开启和关闭两种动

作。所以我们可以把这些控制动作归结在一个字节内表示。如下表:控制字节定义如下:

位说明 锅炉启动 锅炉停止 阀门开启 阀门关闭 允许启动位次序 0 1 2 3 4 5 6 7

图表 7 控制字节定义位说明 手动启动 手动停止 自动启动 自动停止 自动手动位次序 0 1 2 3 4 5 6

图表 自动手动控制位说明 液位状态

低限报警液位状态高限报警

锅炉房燃气报警

计量间燃气报警

位次序 0 1 2 3 4 5 6 7

图表 报警输出字节反馈字节的定义如下:

位说明 锅炉运行状态

锅炉故障 流水开关状态

阀门当前状态

水泵运行状态

水泵故障位次序 0 1 2 3 4 5 6 7

图表 状态字节定义位说明 液位状态

低限报警液位状态高限报警

锅炉房燃气报警

计量间燃气报警

位次序 0 1 2 3 4 5 6 7

图表 报警输入字节锅炉的数量是有限的,于是我们把控制字节和状态字节的使用做数量上的限定和分配。

目前的情况来看,我们一个 PLC 能控制的锅炉数量最多是 10台,理由是我们的 PLC上 I/O 数量是有限的。所以我们把控制字节规定使用 10 个字节,状态字节规定 10 个字节,预留 30 个字节。这样我们就标准化了锅炉的控制。

地址范围规定从 VB0-VB49,其中 VB0-VB9 为锅炉控制字节,MB30-MB39 为自动或手动控制字节,VB10-VB19 为影响锅炉运行的状态字节。VB20-VB24 为报警输出字节,VB25-VB29 为报警输入字节,VB40-VB49 为预留字节备用。

二、各种模拟的输入输出标准化接下来我们介绍锅炉控制系统中的各种模拟量如何配置内存。我们的锅炉系统中存在大量的模拟量信号,这些信号一般来说输入都是由模拟量采集模块将连续的

变化量(大部分为 4-20mA 的电流信号,0-5V 或 0-10V 的电压信号)转换离散的数字量,存储到PLC内存里;输出是由模拟量输出模块将我们要输出的存储在内存中的数字离散信号转换为电压信号或者电流信号。无论是内存中采集上来的数值还是我们输出的数值都不是我们得到的理想的数值,还需要转换程序将这些量转换成可读懂的数据。数据的转换我们放在下面的章节介绍。

锅炉控制系统中的模拟量输入值主要是:锅炉出水温度、锅炉回水温度、锅炉排烟温度、锅炉出水压力、锅炉回水压力、一次供水压力、一次回水

压力、一次供水温度、一次回水温度、采暖供水温度、采暖回水温度、采暖供水压力、采暖回水压力、生活供

Page 6: 第一章 PLC锅炉控制程序概述img.xuegongkong.com/Attachment/2012101216562000002.doc · Web view第一章 PLC锅炉控制程序概述 一个锅炉监控系统主要包含一下几个部分:设备状态的采集;系统状态的采集;锅炉和各种执行机构的控制。设备状态的采集主要是锅炉输出的状态点,循环泵和补税泵给出的状态点,以及水箱等其他设备

水温度、生活回水温度、生活供水压力、生活回水压力、水流量、供热量、阀门开度、室外温度、变频器频率等等。根据设计院设计的不同,所需要采集的数据种类不同。

锅炉控制系统中的模拟量输出值主要是:各中需要模拟量控制的阀门开启值和变频器的给定频率。了解了上述内容,我们就能够标准化内存使用,具体的内存分配如下所述:考虑到这些模拟量经过程序转换之后一般为实数类型 (REAL)的数值,所以每个数值存储到内存后所占

用的内存空间为 4 个字节,即 32 位的数值。那么我们可以这样标准化采集量。1、锅炉相关的数值内存分配锅炉出水温度(4 个字节)锅炉回水温度(4 个字节)锅炉出水压力(4 个字节)锅炉回水压力(4 个字节)锅炉排烟温度(4 个字节)一共位 20 个字节或者说 5 个双字。因为一个 PLC 控制锅炉台数的上限是 10台,所以总供需要 200 个字节。于是我们把VB100-VB299 的

内存段分配给与锅炉相关的采集值。详细的分配是:数值名称

锅炉台数 锅炉出水温度 锅炉回水温度 锅炉出水压力 锅炉回水压力 锅炉排烟温度第一台 VD100 VD104 VD108 VD112 VD116

第二台 VD120 VD124 VD128 VD132 VD136

第三台 VD140 VD144 VD148 VD152 VD156

第四台 VD160 VD164 VD168 VD172 VD176

第五台 VD180 VD184 VD188 VD192 VD196

第六台 VD200 VD204 VD208 VD212 VD216

第七台 VD220 VD224 VD228 VD232 VD236

第八台 VD240 VD244 VD248 VD252 VD256

第九台 VD260 VD264 VD268 VD272 VD276

第十台 VD280 VD284 VD288 VD292 VD296

图表 锅炉相关模拟量采集存储地址2、一次侧采集值内存分配一次侧采集值总共只有 4 个一次出水温度(4 个字节)一次回水温度(4 个字节)一次出水压力(4 个字节)一次回水压力(4 个字节)共 16字节,制定分配区域 VB300-VB399数值名称 一次出水温度 一次回水温度 一次出水压力 一次回水压力起始位置 VD300 VD304 VD308 VD312

图表 一次侧模拟量采集存储地址3、采暖采集值内存分配采暖出水温度(4 个字节)采暖回水温度(4 个字节)采暖出水压力(4 个字节)采暖回水压力(4 个字节)采暖区电磁阀开启值(4 个字节)

Page 7: 第一章 PLC锅炉控制程序概述img.xuegongkong.com/Attachment/2012101216562000002.doc · Web view第一章 PLC锅炉控制程序概述 一个锅炉监控系统主要包含一下几个部分:设备状态的采集;系统状态的采集;锅炉和各种执行机构的控制。设备状态的采集主要是锅炉输出的状态点,循环泵和补税泵给出的状态点,以及水箱等其他设备

不同的系统设计不同,有些系统分为不同的采暖区域,不过数量上最多不超过 10 个区域。每个区域共使用 20 个字节所占内存空间为 200字节。因此我们制定分配给采暖数据的内存区域为

VB400-VB599数值名称

采暖区 采暖出水温度 采暖回水温度 采暖出水压力 采暖回水压力 阀门开度采暖一区 VD400 VD404 VD408 VD412 VD416

采暖二区 VD420 VD424 VD428 VD432 VD436

采暖三区 VD440 VD444 VD448 VD452 VD456

采暖四区 VD460 VD464 VD468 VD472 VD476

采暖五区 VD480 VD484 VD488 VD492 VD496

采暖六区 VD500 VD504 VD508 VD512 VD516

采暖七区 VD520 VD524 VD528 VD532 VD536

采暖八区 VD540 VD544 VD548 VD552 VD556

采暖九区 VD560 VD564 VD568 VD572 VD576

采暖十区 VD580 VD584 VD588 VD592 VD596

图表 采暖区模拟量采集存储地址4、生活热水采集值内存分配生活热水出水温度(4 个字节)生活热水回水温度(4 个字节)生活热水出水压力(4 个字节)生活热水回水压力(4 个字节)生活热水区电磁阀开启值(4 个字节)不同的系统设计不同,有些系统分为不同的生活区域,不过数量上最多不超过 10 个区域。每个区域共使用 20 个字节所占内存空间为 200字节。因此我们制定分配给生活热水数据的内存区域为

VB600-VB799

数值名称生活区

生活热水出水温度

生活热水回水温度

生活热水出水压力

生活热水回水压力 阀门开度

生活一区 VD600 VD604 VD608 VD612 VD616

生活二区 VD620 VD624 VD628 VD632 VD636

生活三区 VD640 VD644 VD648 VD652 VD656

生活四区 VD660 VD664 VD668 VD672 VD676

生活五区 VD680 VD684 VD688 VD692 VD696

生活六区 VD700 VD704 VD708 VD712 VD716

生活七区 VD720 VD724 VD728 VD732 VD736

生活八区 VD740 VD744 VD748 VD752 VD756

生活九区 VD760 VD764 VD768 VD772 VD776

生活十区 VD780 VD784 VD788 VD792 VD796

图表 生活区模拟量采集存储地址5、其他采集值内存分配这里我们考虑剩余的模拟采集量种类已经不多,而且每类数量也不多。暂设计每类最多 5 个数值,分

配 20 个字节。而且暂时考虑的种类是:水流量(4 个字节)共 5 个,占用 20字节;供热量(4 个字节)共 5 个,占用 20字节;室外温度(4 个字节)共 5 个,占用 20字节;变频器频率(4 个字节)共 5 个,占用 20字节;

Page 8: 第一章 PLC锅炉控制程序概述img.xuegongkong.com/Attachment/2012101216562000002.doc · Web view第一章 PLC锅炉控制程序概述 一个锅炉监控系统主要包含一下几个部分:设备状态的采集;系统状态的采集;锅炉和各种执行机构的控制。设备状态的采集主要是锅炉输出的状态点,循环泵和补税泵给出的状态点,以及水箱等其他设备

上述四个模拟量值只用到变频器频率VB869 如需其他采集值内存分配地址顺延.总分配区域为 VB800-VB899

水流量:值名称 流量一 流量二 流量三 流量四 流量五起始位置 VD800 VD804 VD808 VD812 VD816

图表 水流量模拟量采集存储地址供热量:值名称 供热量一 供热量二 供热量三 供热量四 供热量五起始位置 VD820 VD824 VD828 VD832 VD836

图表 供热量模拟量采集存储地址室外温度:值名称 室外温度一 室外温度二 室外温度三 室外温度四 室外温度五起始位置 VD840 VD844 VD848 VD852 VD856

图表 室外温度模拟量采集存储地址变频器频率:值名称 变频器频率一 变频器频率二 变频器频率三 变频器频率四 变频器频率五起始位置 VD860 VD864 VD868 VD862 VD866

图表 变频器频率模拟量采集存储地址6、模拟输出内存分配模拟量输入分配完后我们开始为输出用的模拟量分配内存。在锅炉控制系统中,通过模拟两控制的设备无非两种,一种是各种电动阀门,另一种是变频器的频

率给定。而且,这两类设备的数量也是非常有限的。我们这里考虑各种阀门总共数量最多为 10 个,变频器数量最多 10 个。因此,对于模拟量输出所占用的内存分配共需要内存 40 个字节,考虑到可能有额外的设备需要控制,所以总共分配 100 个字节,范围从VB900-VB999

电动阀门开启值:值名称 阀门一 阀门二 阀门三 阀门四 阀门五起始位置 VW900 VW904 VW908 VW912 VW916

值名称 阀门六 阀门七 阀门八 阀门九 阀门十起始位置 VW920 VW924 VW928 VW932 VD936

图表 模拟量输出存储地址变频器给定值:值名称 变频器一 变频器二 变频器三 变频器四 变频器五起始位置 VW940 VW944 VW948 VW952 VW956

值名称 变频器六 变频器七 变频器八 变频器九 变频器十起始位置 VW960 VW964 VW968 VW972 VW976

图表 模拟量输出存储地址三、通信程序内存标准化本文使用的是西门子 PLC 自由口协议(西门子产品的通信端口设置详见软件帮助或产品手册),尽

管不同公司产品的通信口用法不同,但还是有规律可循的。通信程序一般分为三步分:1、端口设置部分;2、发送子程序部分;3、接收子程序部分。我们只要在制定的内存填上需要的数据,然后启动通信端口开始通信就可以传输数据了。详细的通信程序介绍我们放在下面的章节,此处我们先给通信程序分配固定的 PLC内存。

Page 9: 第一章 PLC锅炉控制程序概述img.xuegongkong.com/Attachment/2012101216562000002.doc · Web view第一章 PLC锅炉控制程序概述 一个锅炉监控系统主要包含一下几个部分:设备状态的采集;系统状态的采集;锅炉和各种执行机构的控制。设备状态的采集主要是锅炉输出的状态点,循环泵和补税泵给出的状态点,以及水箱等其他设备

在锅炉控制系统中,通信的主要目的是为了上传采集数据和下传设备的给定值(设定值)。而且通信协议不是很复杂,因此,我们给每个需要和 PLC 通信的设备分配 200 个字节的内存。考虑用到的设备数量最多不超过 5 个,我们分配 VB1000-VB1999,MB0—MB4 作为这个 5 个设备的内存使用区。实际使用的时候,我们经常会遇到几个设备使用相同的发送区,发送相同的命令。所以这段内存可以灵活使用。四、初始化程序内存使用标准化

初始化程序的作用有两个,一个是配置通信端口,另一个是设置初始值。根据经验,初始化区域分配 500 个字节的内存已经足够使用。所以,我们将 VB2000-VB2499 段的内

存分配给初始化程序。五、自动控制程序内存使用

由于每个系统的设计和结构不同,因而自动控制程序的内容也不同。我们这里只能根据以往经验分配1500 个字节,范围 VB2500—VB3999 的内存地址给自控程序使用。对于一般的锅炉控制系统已经足够使用。

自控程序包括:数据转换程序和锅炉控制程序。建议VB2500-VB2699 作为锅炉控制程序使用,数据转换使用 VB3000-VB3999。

我们在代码分析中详细讲解这两个程序。第四节 代码分析与例程讲解第一部分 数据转换程序

首先我们介绍一下为什么要进行数据的转换。原因就是我们从变送器传送到采集模块的信号为电压信号或电流信号,这些信号经过模数转换程序把原来连续的物理量转换为可被 PLC内存存储的离散的数字量。内存中的数字量的形式也不是我们平常使用的格式,内存中一般为 16 位的二进制数据,而我们在显示设备上需要的是十进制的数值。所以就必须通过转换程序把二进制数值转换为我们需要的十进制数值。

下面我们结合代码介绍数据转换程序一、PLC 模拟量模块转换程序1、程序代码

TITLE=PLC 模块数据转换程序Network 1 // 采样 :这段代码主要作用是把 16 位(一个字)的数据转换为实数类型的数据,并且启动计数器和

累加器LD SM0.0ITD LW0, LD26 //16整数转换为 32 位整数DTR LD26, LD30 //32 位整数转换为实数+R LD30, LD12 //启动累加器

Page 10: 第一章 PLC锅炉控制程序概述img.xuegongkong.com/Attachment/2012101216562000002.doc · Web view第一章 PLC锅炉控制程序概述 一个锅炉监控系统主要包含一下几个部分:设备状态的采集;系统状态的采集;锅炉和各种执行机构的控制。设备状态的采集主要是锅炉输出的状态点,循环泵和补税泵给出的状态点,以及水箱等其他设备

INCW LW16 //启动计数器Network 2 // 滤波与转换:这段代码通过一系列运算进行数据滤波,并且将数值转换为可读性很好// 的十进制数据。同时累加器与计数器归零便于下一次采集使用。LDW>= LW16, LW6 //比较当前采样次数是否等于预制采样次数ITD LW6, LD42DTR LD42, LD46 //将采样次数有 16 位整数转换位 32 位实数MOVR LD12, LD18/R LD46, LD18 //求出采样平均值MOVR 0.0, LD12 //清空累加器MOVW +0, LW16 //清空计数器-R 6400.0, LD18*R LD8, LD18 //转换为十进制数值+R LD2, LD18 //修正Network 3 LD SM0.0MOVR LD18, LD22 //输出Network 4 LD SM0.0 //返回主程序CRET

我们可以注意到,这里所使用的内存全部是 L内存的。我们这样做的目的是想把这段程序作为一个可以被其他程序使用的子程序,所以使用的是局部变量。子程序容易移动;我们可以单独挑出一个功能,并将其复制至其他程序中,而无需或很少需要重复操作。

注释:V内存的使用限制子程序的可移植性,因为一个程序的 V内存地址赋值可能与另一个程序中的赋值发生冲突。相反,将局部变量表用于所有地址赋值的子程序却很容易移动,因为不必担心会出现编址冲突。(详细说明参照西门子公司编程工具帮助文件)

2、变量说明

3、求比例值的子程序程序代码:

TITLE=求比例值的子程序

LC 主程序

始化

据转换与采集

炉控制动控制

讯端口设置 置常数

炉状态采集系统状态采集

据转换公式采集滤波

送中断收中断

Page 11: 第一章 PLC锅炉控制程序概述img.xuegongkong.com/Attachment/2012101216562000002.doc · Web view第一章 PLC锅炉控制程序概述 一个锅炉监控系统主要包含一下几个部分:设备状态的采集;系统状态的采集;锅炉和各种执行机构的控制。设备状态的采集主要是锅炉输出的状态点,循环泵和补税泵给出的状态点,以及水箱等其他设备

Network 1 // 根据实际值的上下限和 PLC 采集值的上下限,计算出实际值与采集值的比例LD SM0.0MOVR LD0, LD20-R LD4, LD20 //实际值上限减去实际值下限,求出差值 1MOVR LD8, LD24-R LD12, LD24 //采集值上限减去采集值下限,求出差值 2MOVR LD20, LD16/R LD24, LD16 //差值 1除以差值 2求出比例值Network 2 LD SM0.0CRET //返回主程序4、比例值计算子程序变量说明

H 和 L 表示的是实际值上下限,所谓实际值就是变送器的量程范围。例如:一个温度传感器的量程是 0℃-200℃,那么将 200赋值给 H,0赋值给 L即可。H_PLC 和 L_PLC 是 PLC 的采集值,范围一般在 6400.0-32000.0。Outcome:这个是计算结果,也就是实际值与采集值的比例。

二、RM417 采集模块数值转换程序RM417 模块是我们经常用到的一种模拟量采集模块

技术指标如下:通道数:单端 16 通道输入信号范围:0–5V;±5V;0-10V;0-20mA;4-20mA;±20mA。A/D 转换分辨率:12BitA/D 转换时间:20kHZ(单通道)处理芯片:AT89C2051通讯方式:RS485 接口,2线制驱动距离:1200米通讯格式:9600-8N1通讯协议:被动查询输出数据格式:12Bit 16进制数据输出稳定度:±1 Bit隔离电压:≥500V供电电压:DC24V±1% 100mA端口瞬间电压保护:±10V端口 RC滤波:20kHZ

入:需要转换的采集量(16 位整数)修正值:对转换后的数据做修正(实数)采样次数:采样的次数(16 位整数)比例值:通过另外一个子程序计算出来的数值(实数)累加器:一个临时存储累加值的内存(实数)计数器:一个临时存储当前采样次数的地址(16 位整数)Temp_hits_av:临时存储输出值的地址(实数)输出:我们需要的结果(实数)

Page 12: 第一章 PLC锅炉控制程序概述img.xuegongkong.com/Attachment/2012101216562000002.doc · Web view第一章 PLC锅炉控制程序概述 一个锅炉监控系统主要包含一下几个部分:设备状态的采集;系统状态的采集;锅炉和各种执行机构的控制。设备状态的采集主要是锅炉输出的状态点,循环泵和补税泵给出的状态点,以及水箱等其他设备

从技术指标中我们可以看出,这个模块的输出数据格式是 12Bit 16进制数据,而我们需要的是实数型的数据,所以必须将模块输出数据转换为我们需要的数据格式。

1、程序代码:

TITLE=RM417 数据转换程序Network 1 LD SM0.0MOVW LW0, LW12 //输入值-I LW2, LW12 //模块采集值下限ITD LW12, LD14DTR LD14, LD18MOVR LD18, LD8 //dived 是模块采集值上下限差值/R LD4, LD8 //输出结果Network 2 // 返回主程序LD SM0.0CRET // 返回主程序2、RM417 数据转换程序变量说明

:实际值上限(实数)L:实际值下限(实数)H_PLC : PLC 采 集 值上限(实数)L_PLC : PLC 采 集 值 下限(实数)

Page 13: 第一章 PLC锅炉控制程序概述img.xuegongkong.com/Attachment/2012101216562000002.doc · Web view第一章 PLC锅炉控制程序概述 一个锅炉监控系统主要包含一下几个部分:设备状态的采集;系统状态的采集;锅炉和各种执行机构的控制。设备状态的采集主要是锅炉输出的状态点,循环泵和补税泵给出的状态点,以及水箱等其他设备

三、转换程序的使用

图表 PLC 模拟量输入转换

图表 RM417 模拟量转换通过将各种需要的数值导入数据转换功能块,我们就可以直接得到结果。当然,这些需要导入的数据是我们预先要计算出来或在初始化程序中设置的。要注意的问题是,RM417 通过通信接收后的数据是 ASCII码,需要转化为 2进制的数据。上面的文章提到了过,通信内存区使用 VB1000-1999;

初始化内存使用 VB2000-VB2500; 数据转换内存使用 VB3000-VB3999。

所以,我们只要知道这段内存的地址,即使没有注释也可以了解这段内存的作用。第二部分 通信程序

我们这里介绍的通信程序,主要是 PLC 和 RM417之间的通信。PLC 与其他设备的通信程序和这个程序大同小异,只是发送区的配置不同。

一、协议介绍上位机下传 4 个 ASCII字母: @ 0 1 R 其中’@’为前导符,’01’为 RM417 的模块号,’R’为读数

据,则 RM417返回 66 个 ASCII字符,共 66 个字节,这 66 个字符是 16 个通道的数据,每 4 个 ASCII字符为一个通道,共 4×16 = 64 个字符,最后两个字符为校验和。

每个 通道的 4 个 ASCII 码字符, 是 一 个十六进制字,例如 : 收 到 30 45 45 45 四个字节显示为’0FFF’,对应 0FFFH十六进制数,也就是十进制 4095,如果输入范围选择为 0 – 5V,说明通道上加的是 5V 信号。 校验和是收到的 64 个字节异或的结果,这个结果是十六进制的一个字节,用 2 个 ASCII字节显示。例如:收的前 64 个字节的异或结果为 7AH,则校验和的两个字节为 37 41,显示为’7A’。

在 RS485 的端子处,有一个跳线,用于选择终端匹配电阻,当模块处于 RS485双绞线的终点时,应使其短路,选择使用终端匹配电阻,当模块处于 RS485线的中间位置时,不要短路跳线。二、通讯程序代码分析按功能介绍各个组成部分通信需要的各种参数也在初始化中设置。以下为通信设置的程序:Network 1 // 通讯设置

Page 14: 第一章 PLC锅炉控制程序概述img.xuegongkong.com/Attachment/2012101216562000002.doc · Web view第一章 PLC锅炉控制程序概述 一个锅炉监控系统主要包含一下几个部分:设备状态的采集;系统状态的采集;锅炉和各种执行机构的控制。设备状态的采集主要是锅炉输出的状态点,循环泵和补税泵给出的状态点,以及水箱等其他设备

// Network CommentLD SM0.1 //第一次扫描执行初始化MOVB 16#09, SMB30 //将 SMB30(通信口 1)设置为十六进制的 09即 00001001 绿色部分 00代表:无校验

蓝色部分 0代表:每个字符 8 个数据位 红色部分 010代表:通信速率为 9600bps

黄色部分 01代表:使用自由口协议MOVW +0, VW1000 //将计数器 VW1000清零ATCH INT0, 8 //连接中断 0,中断事件 8——端口 0:接收字符MOVB 0, SMB35 //设置定时中断 1 的时间间隔(从 1 至 255,以 1 毫秒为增量)。ENI //中断允许(ENI)指令全局性启用所有附加中断事件进程。Network 2 LD SM0.0 S M0.0, 1 //设置通信允许

本程序中使用 2 个中断,一个发送中断 int_1 和一个接受中断 int_0Int_0 //接收中断LD SM0.0DTCH 11 //中断指令取消中断事件(EVNT11——定时中断 1)与所有中断例行程序之间的关联,并

禁用中断事件。R M0.0, 1 //禁止通信Network 2 LD SM0.0+I +1, VW1000 //接收字符个数的计数器+D +1, AC1MOVB SMB2, *AC1 //接收字符Network 3 //当接收字符到达指定个数 66 个时把计数器清零并置位通信允许位,中断返回LDW= +66, VW1000 MOVW +0, VW1000S M0.0, 1CRETI Int_1 //发送中断 Network 1 LD SM0.0MOVD &VB1100, AC1 MOVB 4, VB1010 //设置发送字节个数MOVB '@', VB1011 //发送的第一个字节MOVB '0', VB1012 //发送的第二个字节MOVB '1', VB1013 //发送的第三个字节MOVB 'R', VB1014 //发送的第四个字节XMT VB1010, 0 //传送(XMT)指令在自由端口模式中使用,通过通讯端口 0传送从地址 VB3110

开始的数据。DTCH 11 //中断指令取消中断事件(EVNT11——定时中断 1)与所有中断例行程序之间的关联,

并禁用中断事件。R M0.0, 1 //禁用通信Network 2 LD SM0.0 //中断返回CRETI

同时还要为通信设置一个时间,这个设置要在主程序中完成。

Page 15: 第一章 PLC锅炉控制程序概述img.xuegongkong.com/Attachment/2012101216562000002.doc · Web view第一章 PLC锅炉控制程序概述 一个锅炉监控系统主要包含一下几个部分:设备状态的采集;系统状态的采集;锅炉和各种执行机构的控制。设备状态的采集主要是锅炉输出的状态点,循环泵和补税泵给出的状态点,以及水箱等其他设备

Network 1 // 通讯设置LD SM0.0A M0.0 //通信允许位A SM0.5 //在 1 秒钟的循环周期内,接通为 ON 0.5 秒 //关断为 OFF 0.5 秒EUMOVB 0, VB1100 //数据接收区MOVB 5, SMB35 //定时中断 1 的时间间隔(从 1 至 255,以 1 毫秒为增量)。ATCH INT1, 11

这里接收区的地址可以根据自己的需要改变,我们的通信内存分配位 VB1000-VB1999,属于这段的内存可以作为接收字符使用。习惯上我们规定每个通信端口分配 200 个字节,100 个作为发送段,100 个作为接收段。如果发送或者接收的字符数量大于 100,那么可以扩大区段的范围。第三步分 锅炉控制程序

锅炉控制程序也是控制系统的核心部分。锅炉控制程序的目的是保障锅炉的正常工作,故障时立即报警,并准确判断报警位置,为锅炉操作人员提供最大的方便。

锅炉控制系统分为两种方式:自动控制与手动控制手动控制是最基本的控制功能,熟悉了手动控制的方式与方法对我们理解锅炉的自动控制有非常大

的帮助。一、锅炉的启动和停止需要控制的设备主要有锅炉燃烧机、锅炉碟阀、变频器、三通调节阀等等。锅炉燃烧机控制锅炉的启动

和停止,锅炉碟阀控制锅炉水循环的通断,通过变频器可以控制泵的运转实现系统水流的循环,三通阀的设置主要是为了节能的需要,可以调节整个系统的热量分配。

1、锅炉启动前需要燃气阀开、锅炉碟阀开、燃烧机无故障、循环水泵无故障并且运行等必要的前提条件。只能在所有条件都满足的条件下才能从 PLC 给燃烧机输出允许锅炉启动的信号。

这些条件组合输出允许锅炉启动信号的代码:1 号锅炉的状态检测是这样表示的。

图表 锅炉启动前状态检测这个条件无论是自动控制还是手动控制都需要给到锅炉燃烧机才能启动锅炉。2、锅炉启动的代码:

Page 16: 第一章 PLC锅炉控制程序概述img.xuegongkong.com/Attachment/2012101216562000002.doc · Web view第一章 PLC锅炉控制程序概述 一个锅炉监控系统主要包含一下几个部分:设备状态的采集;系统状态的采集;锅炉和各种执行机构的控制。设备状态的采集主要是锅炉输出的状态点,循环泵和补税泵给出的状态点,以及水箱等其他设备

图表 锅炉启动代码锅炉启动过程是这样的:首先、判断是自动启动还是手动启动;第二、判断是否有启动信号,是何种启动信号(自动启动/手动启动);第三、判断锅炉碟阀是否打开,也就是说锅炉本体是否能够形成水循环。这样做的目的是处于安全的考虑,如果锅炉本体水流不能循环会发生危险。锅炉阀没有打开,那么如图表 24 所示的锅炉启动前提条件必不满足,图表 25 中的锅炉允许启动信号不满足导致锅炉不能启动。待锅炉碟阀打开后启动条件满足,启动程序输出启动信号;需要注意的一点是自动启动和手动启动信号的互锁,即选择自动控制时复位手动启动信号,选择手动控制时,复位自动启动信号。第四、锅炉启动信号输出。3、锅炉停止的代码

Page 17: 第一章 PLC锅炉控制程序概述img.xuegongkong.com/Attachment/2012101216562000002.doc · Web view第一章 PLC锅炉控制程序概述 一个锅炉监控系统主要包含一下几个部分:设备状态的采集;系统状态的采集;锅炉和各种执行机构的控制。设备状态的采集主要是锅炉输出的状态点,循环泵和补税泵给出的状态点,以及水箱等其他设备

锅炉停止是相对于锅炉启动的一个逆向过程。看到网络 5 中代码的作用是复位计时器和 PLC 的继电器输出。二、锅炉的阀门控制

模拟量控制的阀门一般是用 4-20毫安电流信号控制阀门开度,对应的阀门开度从 0%-100%,对应 PLC内存的数据大小从 6400-32000。换句话说,我们输出一个大小在 6400 与 32000之间的整数,即可传送到阀门一个开度在 0 到 100之间的给定值。根据这个原理,我们设计代码如下:

Network 1 // 三通阀阀门设置 LD SM0.0MOVW VW900, VW3600 //将数据传如转换数据区,VW900 是 0-100 的整数。AENO*I +256, VW3600 //数据乘以 256AENOMOVW VW3600, VW3602AENO

Page 18: 第一章 PLC锅炉控制程序概述img.xuegongkong.com/Attachment/2012101216562000002.doc · Web view第一章 PLC锅炉控制程序概述 一个锅炉监控系统主要包含一下几个部分:设备状态的采集;系统状态的采集;锅炉和各种执行机构的控制。设备状态的采集主要是锅炉输出的状态点,循环泵和补税泵给出的状态点,以及水箱等其他设备

+I +6400, VW3602 //数据+6400AENOMOVW VW3602, AQW0 //输出给定值

三、锅炉水泵的控制水泵分为工频控制和变频控制工频控制就是启动和停止 2 个控制点,相对变频控制操作简单。变频控制需要给定变频器一个频率给定值,一种方式是通信传输,另一种方式给定模拟量值。我们这里只介绍给定模拟量的控制方式。Network 1 // 变频器给定 LD SM0.0MOVW VW940, VW3600 //VW940 为频率给定值输入,范围 0-50HZAENO*I +256, VW3600 //数据乘以 256AENOMOVW VW3600, VW3602AENO+I +6400, VW3602 //数据+6400AENOMOVW VW3602, AQW2 //输出给定值

四、锅炉系统的自动控制自动控制程序根据设计差异有所不同,没有统一的标准。