结构化编程在PLC程序设计中的应用

更新时间:2024-02-13 作者:用户投稿原创标记本站原创 点赞:11085 浏览:45189

摘 要:本文比较了常见的PLC程序设计方法,并结合给排水行业的工艺特点,介绍了结构化编程方法在给排水行业的应用实例,该方法具有编程调试简便,易于扩展,移植性好等特点.

关 键 词:PLC,结构化,给排水

1引言

随着现代工业发展进程的不断加快,工业自动化控制技术发挥着越来越大的作用,PLC控制系统的应用也日益广泛.PLC程序设计的水平优劣往往决定着工程能否及时竣工投产,工业设备能否充分发挥其设计生产能力.传统的PLC编程方式程序繁琐冗长,结构不清晰,不利于控制程序在多个项目中的重复使用.如何迅速、优质地编制符合不同设备工艺特点,参数的PLC程序,对工业控制系统的及时完工,提高自动化控制水平具有较大的意义.本文结合给排水行业常用设备及工艺程序的编写,对结构化编程在PLC中的应用进行了初步的探索,取得了较理想的效果.

2PLC程序设计方法简介

常见的程序设计方法分为三种:线性化方法、模块化方法以及结构化方法[1].

线性化编程方法:将所有的程序代码全部放在一个程序块中,如对S7-300/400来说,在OB1中写入数据采集、设备控制、台时统计等全部用户程序.该方法与PLC所代替的继电器控制电路类似,系统按照顺序处理各条指令.它适用于小型设备配套PLC的编程,对于大中型项目则显得程序结构不清晰,同时由于需要对不同设备编制大量类似的代码,导致代码冗长,难以调试和维护.

模块化编程方法:将程序根据不同功能需求分成不同的块,每个功能的控制指令在各自的块内,OB1按顺序调用每个块.该方法程序结构清晰,便于调试和维护,但仅将功能按块分配,加以有条件的调用,故虽然CPU效率得到提高,但代码冗长、调试困难的缺点未得到明显改善.


结构化编程方法:将复杂的自动化任务分割成过程相关的功能或可多次处理的小任务,以提供可以用于类似任务的通用的程序代码,这样更易于控制复杂任务.而这些小任务以相应的程序段表示,称为块.只需要在调用程序块时针对不同的设备和工艺流程代入不同的参数或地址,即可实现不同设备的控制,无须多处重复输入相同功能的代码.当需要对功能进行修改时只需要修改程序块即可,提高了编程的效率和可靠性.

3结构化编程方法设计实例

在实际应用中,在对给排水行业通用设备和工艺进行详细分析的基础上,针对典型设备和工艺分别编制了水泵、仪表、阀门、泵站水泵调度、自动加药等不同的控制模块,使高效开发PLC程序在给排水行业的应用成为可能.下面以变频水泵及泵站的水泵调度为例来介绍结构化编程方法.

3.1变频水泵功能块

变频水泵是给排水行业最常见的设备,其调用如图2所示.

图2为变频水泵控制块的调用实例,该FB的输入输出参数如图3示.

功能块接口参数共分为三种类型:输入(INPUT),输出(OUTPUT),输入输出(IN_OUT).其中输入参数主要有:远程信号,上电信号,运行信号,水泵故障,电回路故障,变频器故障,频率输入等,输出参数主要有:开停控制,频率控制输出,实际运行频率等,输入输出类型参数主要有:变频电机状态,变频电机控制命令,电机台时及开停次数统计,频率设定值等.

输入输出类型参数可由人工或自控程序在功能块外部进行赋值,也可由本功能块内部逻辑进行修改.其中的State、Command等参数均为WORD类型,其每一位分别代表了不同的含义.

该功能块包含了除电流外的变频水泵常见的绝大部分信号处理及控制功能,对于部分实际工程中未使用的参数,可通过直接设置默认值或空置的方式进行处理.水泵电流可通过专门的模拟量处理程序块进行数据转换和上下限报警判断,当电流超过上下限设定值时发出报警信号(过流、欠流)传送给变频水泵功能块,从而实现水泵的电流超限保护功能.

3.2泵站水泵调度功能块

污水厂一般具有进水泵房、中间提升泵站、出水泵房等工艺段,其水泵控制模式基本相同,都是根据液位的变化来调节运行的水泵频率和台数,调泵时又要考虑单台设备的运行台时和启停间隔等因素.其基本原理介绍如下:

泵站的液位控制一般采用根据液位分段启停泵的模式,不同的液位分别对应当前需要开泵的台数,同时具备死区保护功能,停泵液位设定值比启泵液位设定值略低,以防止特殊情况下水泵的频繁启停[2].

水泵的启停选择需要考虑以下几个条件:

(1)热备状态.PLC首先检测水泵上电情况,远程状态,控制模式,故障情况等,当以上条件均满足时认为该泵处于热备状态,可被自控程序进行开停调度.

(2)平衡调泵.累计运行时间最短的泵优先被启动,运行时间最长的泵优先停止,使每台泵运转时间大致相等.当运行时间相同时,按泵的顺序启停.

(3)启动间隔保护.控制程序使每一台泵每小时起动次数少于6次,两次起动间隔≥10分钟,且不论何种情况,不同时起动2台及2台以上水泵.

在实际应用中,根据分段启泵原理以及低水位保护等条件编制泵站自控功能块,计算当前需要开泵台数.根据上述三条件,编制了水泵启停调度选择功能块,用于选择当前需要启动的水泵编号.两功能块配套使用,可快速完成泵站自动调泵程序的编制工作.限于篇幅,本处不再详述其具体实现过程.

4结构化编程方法设计中的注意点

(1)对于实际项目,我们往往采用模块化编程与结构化编程相结合的方式来实现.首先将项目根据不同工艺段分为不同的任务模块,在每个任务模块中再采用结构化的编程方法来实现具体设备的控制、数据分析统计以及工艺控制程序等功能.具体对于西门子STEP7编程软件来说,我们通常使用FC来实现不同工艺段设备的控制,而每个FC中的具体设备的控制程序再通过调用FB来实现.