IA系统实时流量积算报表的设计
- 格式:doc
- 大小:18.00 KB
- 文档页数:6
I/A系统实时流量积算报表的设计
作者:孙忠
来源:《中国新技术新产品》2013年第24期
摘要:使用I/A系统的生产过程控制中,需要对部分关键流量积算指标报告进行实时监控。
本文以山西分公司高压溶出下料量指标为例,讨论了采用I/A系统IND顺控模块实现流量累计及复杂计算的基本思路和方法。
关键词:I/A系统;IND模块;流量积算
中图分类号:TH81 文献标识码:A
1 概述
中国铝业下属的各分、子公司,大多采用了FOXBORO公司的I/A系统进行生产过程控制。
实际生产中,对于部分关键指标,是操作岗位、生产调度进行生产调整的重要依据,也是生产考核的重要指标。
这时,操作员、调度及车间管理均要求能够对其累计量、平均量进行直观的实时监测和跟踪。
I/A系统提供的报表功能远不能满足要求,这给组态设计人员提出了新的课题。
事实上,I/A系统提供了顺控模块IND模块,利用顺控模块的优良特性,可以有效解决这一难题。
本文详细介绍实现思路和程序代码,供同行借鉴和指导。
2 IND模块的特性及功能要点
在I/A常规培训中,认为IND模块较复杂,难于控制而不推荐使用。
事实上,在特定情况下,IND模块却有极大的优势,可以简明地处理较复杂的算法或控制逻辑。
2.1 函数功能强,程序可控性强
与I/A系统常用的CALC模块相比,IND模块支持算术运算、多种函数运算,赋值运算等,支持丰富的程序控制语句。
程序易读性很强。
2.2 语句灵活,受限制少,节省系统资源
与CALC相比,IND模块不受50行的长度限制。
IND模块提供了ACTIVE参数,由外部条件触发,这样,其执行时间可以由外部时钟(或其它条件)控制,在额定条件下激活。
如可以每30秒执行一次,不象CALC必须由CP周期(默认每0.5秒)触发,很占CP资源。
3 典型实例与实现思路:
3.1 问题提出
高压溶出下料量是氧化铝生产过程中的一个重要参数,是衡量一个周期内氧化铝生产是否平稳的重要标志,因此,岗位和工序提出,对高压溶出五个系列的下料量的班报、日报、月报、上月总量、月平均量进行实时监控,使岗位的主操作员、辅操作员、调度等与参与生产指挥人员即时看到动态报表。
3.2 实现思路
以IND模块为核心,实现的基本逻辑图为:
3.3 逻辑图说明:
实现过程采用了四个BLOCK来实现。
(1)用CALCA制作RS触发器,每30秒发生一个0.5秒的激活脉冲,驱动IND模块的ACTIVE。
特别说明的是:这个触发器并不只为一个IND模块服务。
当同一个系统有多个积算器时,统一由一个RS触发器驱动即可,IND模块每次激活,则进行一次积算,并输出到现场监控桌面。
(2)用AIN模块采集由现场流量计输入的瞬时流量。
(3)用ACCUM模块实现流量的积算
(4)用IND模块实现流量报表的起止点截取、积算,通过FoxDrow输出到界面。
4 实现流量积算报表的详细组态参数和程序
4.1 RS触发器的实现:采用一个CALCA实现
NAME: DRIVER
TYPE: CALCA
PERIOD 2
PHASE 0
BI01:TRUE
IN BI01
IN M02
MRS
STM M01
DON 30
STM M02
IN M01
NOT
OUT BO01
STEP50 END
输出脉冲由BO01输出。
4.2 其它模块。
AIN为现场仪表接入FBM的常规BLOCK模块, ACCUM为流量积算模块,注意根据仪表量程参数填写MTRFAC计算参数。
4.3 IND模块实现报表程序主要代码及说明:
INDEPENDENT_SEQUENCE {************************************
** 本模块完成高压溶出下料量的操作台报表 **
** IND BLOCK **
****************************************************}
CONSTANTS
BAN2=480; {8点班交接时间。
}
BAN3=960; {4点班交接时间。
}
BAN0,BAN5:I;
{BAN0:当前所在班次,取值1时,为0至8点班,为2时,为8至16点班,为3时,为16点至0点班.}
USER_LABELS
{参数说明:ACTIVE FLOW_ACCM.DRIVER.BO01
II0001 CP27D1_STA:STATION.MONTH
II0004 CP27D1_STA:STATION.MINUTE
RI0005 流量的本月初值,
RI0010 :FLOW_ACM.OUT 当前流量积算输出值
RO0001 0至8点班,即当日第1班累计量
RO0007 月累计量
RO0008 月平均量 }
STATEMENTS
{计算月累计量。
如果月份翻转,将上月量转RO0011,月份值置为当月,对本月起始流量置初值,本月累计量清0,否则,对本月正常计算}
IF NOT(II0001=II0005)
THEN RO0011:=RI0010-RI0005;
II0005:=II0001;
RI0005:=RI0010;
RO0007:=0;
ELSE RO0007:=RI0010-RI0005;
RO0008:=RO0007/((II0002-1)*24+II0003+1);
ENDIF;
{同理可计算日累计量}
{判断当前所在班次,为BAN0赋值1,2或3}
BAN5:=II0003*60+II0004;
BAN0:=1;
IF NOT(BAN5
IF NOT(BAN5
{以下班报计算与月累计、日累计同理,计算各班流量累计}
IF BAN0=1
THEN IF NOT(BAN0=II0008)
THEN RO0003:=RI0010-RI0002;
II0008:=BAN0;
RI0002:=RI0010;
RO0001:=0;
ELSE RO0001:=RI0010-RI0002;
ENDIF;
ENDIF;
{同理可计算另两个班次的班累计量}
ENDSEQUENCE
5 对I/A流量报表开发的体会
I/A系统是一个功能很强大的自动化控制系统。
在实践发展过程中,陆续提供了120多块标准模块完成用户各种控制需求,通常I/O系统工程师只需掌握其中部分模块的组态和参数就
能完成常规控制。
而加上顺序块的软件开发,则可以实现用户几乎所有可能的需求。
笔者希望通过这篇文章,与I/O系统工程师共同分享交流。
参考文献
[1]查方兴.英维思I/A系统及应用[D].上海:FOXBORO公司.。