好品质、更有性价比
全国咨询热线:0314-4219918

PLC和虚拟仪器在烟气浓度连续分析系统中的应用

来源:火狐首页    发布时间:2025-12-27 02:50:18 人气:1

  徐 启 程明霄 (南京工业大学自动化与电气工程学院,江苏南京210009)

  探讨了PLC和虚拟仪器在烟气浓度连续分析系统中的应用。首先介绍了烟气浓度连续分析系统的控制要求及相应的器件选型;接着介绍了PLC的控制程序设计以及主机和从机数据通讯部分的程序设计;最后介绍了主机数据存储和显示的程序设计并给出了主机的显示主界面。实践表明,该系统稳定性高,可靠性高,操作简单便捷,拥有非常良好的应用前景。

  本文将虚拟仪器技术与可编程控制器相结合,研究的是利用PLC和虚拟仪器软件设计电厂烟气浓度连续分析系统。PLC实现底层的控制和对烟气浓度数据实时采集;位于上位机的虚拟仪器软件实现对下位机数据的采集、实时显示、存储和打印报表等功能。

  该系统主要由多个采样阀、吹扫阀、抽气泵和气体分析仪器、PLC及其扩展模块以及PC机组成。PLC定时打开采样阀,控制抽气泵将烟道气抽入气体分析仪中,气体分析仪测出烟气中SO2、O2、NO和烟尘等组分的体积百分含量并变换成4~20mA的电流信号送入PLC,PLC采样后将数字信号传送给PC机,在PC机上通过虚拟仪器软件接收PLC发送过来的信号,进行量程变换、动态显示、数据存储和打印报表。PLC每连续采样8小时后,关闭采样阀,打开吹扫阀,对烟道吹扫两分钟。在采样、反吹时,蠕动泵也在一直工作着,蠕动泵工作45分钟,停15分钟,反复循环运行。

  本系统的PLC选用的是德国西门子公司的S7-200系列的PLC,CPU的型号是CPU224。由于本系统要采集烟气中4种组分的体积百分含量,所以本系统选用了一个EM235模块。气体分析仪选用的是西门子公司的ULTRAMAT32气体分析仪器,该气体分析仪线性度好,分析速度快,可同时对上述几种组分做浓度分析。虚拟仪器软件选用的是美国NI公司的LabVIEW7Express。

  该部分的程序采用指令表语句编写,按照控制要求编写程序后下载到PLC中。必须要格外注意的是8小时定时时间的设计,由于PLC中一个定时器最长可定时的时间为3276.7s,还不足一个小时。所以采用的方法是用定时器和计数器级联的方法,定时器定时时间为30分钟,每到30分钟,定时器产生一个脉冲,计数器计算脉冲的个数,当计数值到16的时候,表明定时时间已经到8小时了。

  个组分值连续采样6次求取均值。必须要格外注意的是EM235将每一个通道采样得到的12位数字量放在一个字的中间12位,取均值运算时,需要先将这12位数字量先右移3位,再参与运算。经过滤波处理后得到的4个12位数字量存放在VW152-VW158连续8个内存单元里。4个数字量对应着烟气中每种被测组分的体积百分含量。

  主机与从机之间串行通信采用的是自由端口模式的通信协议。PLC的串行通信接口由用户程序控制,该协议采用主从结构的通信方式,适用于半双工的RS485总线。协议规定总线上有一个主机、多个从机,每个从机分配惟一的地址。本系统只有一个主机(PC机)和一个从机(PLC)。工作时采用命令/应答的通信方式,每一种命令帧对应着一种应答帧。主机向从机发出命令帧,从机响应后向主机发出命令帧对应的应答帧。相应的帧格式为:

  命令帧中定义的功能码有以下三种含义:发送数据、重新发送上一次发送的数据和发送成功。不同的功能码要求从机进行不同的响应。从机将主机发送的命令帧存放在从VW100到VW104开始的连续6个字节的内存单元里。

  从机每次发送数据都会对数据来进行异或校验,并将校验结果附于待发送的数据后一并发送。主机接收数据时也进行异或校验,如果两个校验结果相同,主机发送发送成功功能码;否则发送重新发送上一次发送的数据的功能码。从机对主机不同的功能码有不同的应答,若只是发送数据,则将对上述的4个数字量进行进一步处理后得到的数据发送给主机,进一步处理的原因和方法将在后面详述。若接收到发送成功功能码,则向主机发送相应的应答标志。从机没有接收到发送成功功能码,不会进行数据采集,这样待发送的数据总为上次采集的结果以备进行数据的重发。若重发三次都不成功的话,系统将给出出错报警信号。

  由于PLC的串口符合RS485总线标准,而PC机的串口符合RS232总线标准,所以在两者之间连接PC-PPI通讯电缆,该电缆能轻松实现RS232到RS485之间的转换。

  PLC通讯部分的程序由对4个数字量做进一步数据处理程序和自由端口模式程序两部分组成。

  由于PLC要将数据传送给PC机,LabVIEW通过串口接收数据。LabVIEW默认从串口得到的每个7位或8位的二进制数据都是某个字符的 ASCII 码, 它会自动将其还原成原码再参与 运算。 同时,为了照顾电厂的习惯,需要把十六进制数转换成十 进制数显示。 所以,在传送前,需要先将每个十六进制的数字量 转换成 BCD 码,再分别取出千位、百位、十位和个位,并转换成 ASCII 码。 方法是定义一个指针先指向第一个数,将其取出后, 指针再指向下一个数。 取出的数通过做除法取出其对应的 BCD 码 的 千 位 、 百 位 、 十 位 和 个 位 , 再 加 上 48 转 换 成 对 应 的 ASCII 码。 这样转换好的共 16 个字节存放在 VW500 到 VW514 的内 存单元里。

  PLC CPU 的串行通信接口可以由用户程序控制,这种操作 模式称为自由端口模式。 其主要命令为发送指令和接收指令。 发 送指令的功能是通过指定的串口将存放在内存单元中的一串数 据发送出去;接收指令的功能是通过指定的串口接收一串数据, 并将数据存放于指定的内存单元中。 自由端口模式主要由发送 指令、 接收指令、 接收完成中断和发送完成中断来控制通信过 程。 程序一开始定义好串口通讯的波特率设置、帧格式设置;接 着定义报文接收的起始字符,当串口接收到起始字符后,串口开 始接收数据; 再定义报文接收的结束字符和最大接收时间以及 接收的最大字符数,即当串口始终没有接收到结束字符,或者是 串口接收的时间超过最大接收时间, 又或者是接收的字符数超 过了最大字符数时,串口强行停止接收字符。 串口一开始处于接 收状态,接收主机发送过来的命令帧。 接收完命令帧后,进入接 收完成中断服务程序,串口根据接收到的不同的命令帧,用发送 指令向主机发送不同的应答帧。 必须要格外注意的是,由于是半双工的 通讯方式,这里有一个电缆切换时间的问题 ,即 CPU 接收到主 机的命令帧到它发送应答帧的延迟时间必须不小于电缆的切 换 时 间 。 本系统波特率 设 置 为 9600bps, 电缆的切换时间是 2ms,用定时器 T41 实现定时。 以下是串口和中断向量的初始化 以及接收数据的主要程序:

  利用 VISA Read.vi 和 VISA Write.vi 从串口中读入或输出 数据。 由于 LabVIEW 的串行通信子 VI 只允许对字符串读写,因 此在数据处理时,一定要进行字符串与数字之间的正确转换。 此外 若要读入当前串口中的所 有 字 符 , 则 要 执 行 VISA Bytes of Serial Pori.vi.用以确定将要读入的确切的字节数 ,然 后 将 其 输 出作为 VISA Read 节点的输入即可。

  程序主要由主机对从机的读写操作组成。 在读操作中,首先 用 VISA Configure Serial Port.vi 设置好波特率、数据有效位数 等等,其中的 VISA resource name 为 ASRL1::INSTR,表示由 串 口 1 接 收 数 据 , 紧 接 着 用 VISA Read.vi 读 取 串 口 数 据 。 LabVIEW 首先将从串口得到的每个字符的 ASCII 码 还 原 成 原 码,由于数据由四位十进制数组成,所以用 for 循环从串口连续 读取四次,读到的数据是字符串类型的数据 ,这时需要用 scan from string 函数将其转换为数值类型的数据。 循环结束后,for 循环输出包含上述四位十进制数的数组,需要调用 index array 函数将千、百、十、个分别取出后用公式节点拼接起来。 由于要接 收四组数据,所以在外面套了一个大的 for 循环,将内部的程序 执行 4 次,得到四组数据。

  写操作比读简单易操作,只要调用 VISA Write.vi,将输出数据 直接写入该 VI 即可。

  本系统监测点现场控制器基于 Java 的跨平台解决方案,支 持 Linux 嵌入式计算机和 PC 嵌入式计算机:构成环境在线监测 点系统的各个功能模块之间相互关联, 其实就是具有自主闭环 运行并可接受外部激励的控制管理系统的结合体。 如下图 4 所示模 块之间采用 JAVA RMI 或者 TCP / IP 进行通讯, 环境在线监测 点系统采用数据库作为数据存储方式, 各个模块通过 JDBC 的 方式对对数据表做相关操作。 另外, 采用含有 TCP / IP 客户端的 JAVA Applet 作为实时监控的界面以获取动态采样数据和工作 状态。 软件功能模块可划分为:①采样 / 控制子系统;②远程 / 本 地控制子系统;③数据计算子系统;④远程通讯子系统。

  (Master / Slave)通信方式,通 RS232 或 485 小型工业控制总线 支持并实现与监测仪器之间的通信。 通过对工作模式中的集中 采样 / 控制模式的支持,可实现对监测仪器的采样控制 ,故障原 因分析,维护报警等多种功能。 同时支持 I / O 采样和输出。 例如 对排污企业污染治理设施运作时的状态的监测, 能够最终靠对其治污 设备的运作状况的分析,知道该企业是否有偷排污染物的行为。 采样控制管理系统是一个多层结构的软件包,并利用了 JAVA 的 JNI 技术实现对本机 API 的访问。 由于 JAVA 语言难于操作具体的 硬件,所以我们对 I / O 的操作采用 C 或 C++语言。

  一个嵌入式系统常常要通过串口与其主控系统来进行全双 工通讯, 譬如我们的环境在线监测控制器装置下的各类监测仪 器如流量计、pH 计、 电机状态检验测试仪器就需要定时的接受控制 系统发送来的查询和控制信息, 并将执行结果或查询结果发送 回控制管理系统。

  为了使我们的程序使用 RXTX 作 为 串 口 通 讯 的 底 层 API,

  环境监视测定系统中封装的一个 RS232 串口驱动 类 部 分 源 代 码,使用 RXTX 作为串口通讯类库。 driver232 类是监测点子系 统以开源的 RXTX 项目提供的串口通讯扩展包为基础自己封装 的一个 RS232 串口驱动类库(部分代码),为系统的其它部分提 供简易的访问本机串口的方法。 在监测点计算机发往监测仪器 的串口通讯字节码中按照对应仪器的通讯协议将采集、 控制指 令写入;接收部分也是按照协议对仪器返回的字节码进行解释, 从而完成一次采样操作。

  本文以 ARM9 和开源 Linux 核心, 提供了嵌入式数据采集 系统在环境监测中的解决方案。 可通过多任务的管理和调度来 实现工业污水排放量、TOC / COD,pH 等数据的采集,并实时将 采集到的数据传送至环保监控部门的上位机, 同时可实现数据 存储及查询等功能。 高性能设计为系统功能扩展提供便利,能适 应不同工业现场的数据采集。

  [1]王晓成,蒋梁中.嵌入式环境在线监测点系统的设计与实现[J].工业 控制计算机,2006,19(11)

  [2]袁彬悠,肖炎,蒋梁中,等.环境在线监控系统主从站配置参数同步的 一种方法[J].机电工程技术,2005(3)

  [4]孙育河,梁岚珍.嵌入式实时操作系统在 ARM 上移植的分析与应用 研究.计算机系统应用,2007(5)

  [5] 周 立 功.ARM 嵌入式系统基础教程. 北 京 : 北京航空航天大学出版 社,2005

  [6]马潮.ATmega8 原理及应用手册.北京:清华大学出版社,2003

  [7]曹小钢,蒋靖译.深入 Java 虚拟机 (原书第二版 )[M].北京 :机械工 业出版社,2003

  [8]刘桥,蒋梁中.广域污水自动监控系统中监测点的软件方案设计[J]. 现代电子技术,2006(11)

  [9]刘桥,蒋梁中,谢存禧.广域污水自动监控系统中监测点子系统的应 用[J].计算机工程,2004,30(21):149-151

  数据。 存储和打印报表通过调用文件函数来实现 , 先用 open file.vi 函数打开一个 excel 文本文件,接着将表头标题和采集到 的数据用 Format Into File.vi 函数写入文本文件中实现对实时 数据的存储。 通过调用 while 函数,将 Format Into File.vi 函数 放入 while 体内实现连续的采集。 当打印报表的时候,只需要将 excel 文件打开再打印即可。 显示实时数据可以调用 waveform chart 控件, 将 4 组数据用 bundle 函数打包后, 由 waveform chart 显示。 具体的显示界面如图 2 所示。

  该烟气浓度连续分析系统结合了 PLC 和虚拟 仪 器 技 术 的 优势, 能轻松实现对烟气中各组分气体浓度数据的实时采集 、显

  示、存储和打印报表。 该系统稳定性高、可靠性高、抗干扰能力 强、操作简单便捷。 该系统已经在内蒙古某电厂中正式使用,自从投 入使用以来运行稳定。 实践表明,该系统具有相当的实用性和良 好的应用前景。

  [1]王晋杰.基于 LabVIEW 的 PC 与 PLC 实时监控的实现[J].武汉理工 大学学报,2006(11):53-55

  [2]雷振山.LabVIEW 7 Express 实用技术教程[M].北京:中国铁道出 版社,2004

  [3]廖常初.PLC 编程及应用[M].3 版.北京:机械工业出版社,2009