用AOI实现系统优化
2019-03-25陈少祥
陈少祥
摘要:该文通过泵的基本操作AOI指令对AOI指令组成、特点、构成原则的介绍,详细描述了AOI指令设计过程,并在编程的规范性和标准化做一些尝试。
关键词:AOI指令;规范性;标准化;优化
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2019)03-0225-03
Contrologix系统是管道储运公司鲁宁线SCADA系统采用的平台,系统程序由例程和子例程组成,由一个主例程调用例程和子例程来完成系统的控制逻辑;还有一部分控制逻辑在上位机中完成,如电动阀的开关停控制等,这在单机系统或许能满足控制要求,如果是在网络操作环境下,就很难满足要求了。同时例程和子例程过多,通过AOI指令编程可以减少例程和子例程的数量,也可利于编程的模块化;现在仪长复线和甬沪宁管线水击保护系统都采用同一平台,熟悉系统的编程环境,对于SCADA系统的维护和改造,保障系统正常运行,对于输油生产正常运行具有重要的意义,同时希望在编程的标准化和规范化上做一些尝试。
1 AOI指令组成及特点
AOI指令是用户自定义指令,原英文名称是Add_On_Instruction,简称AOI,是用户自己创建的指令,就像UNITYPro中的自定义功能块一样,可以像子例程一样被反复调用,并带入带出用户自定义的参数,利用导入导出的方法,可以在多个项目中移植使用同一条AOI指令,AOI指令可以用标准的编程语言梯形图、功能块和结构文本语言来编写,定义好的AOI指令可以在定义另一个AOI指令时引用,也可以被任意形式的例程引用,这些特点使得在系统的标准化,模块化设计系统具有重要的意义,给系统的维护也带来很大好处。【1】
2 AOI指令组成的原则
2.1 设备类组成AOI指令
输油泵是输油生产的主要设备,以输油泵为对象可以编写一个AOI指令,指令内包含设备的各种操作,如手动启泵、手动停泵、逻辑启泵、逻辑停泵,用于所有输油泵操作的程序设计;电动阀的开、关、停可以构成一个电动阀类AOI指令;炉的启停也可以构成一个炉类AOI指令。
2.2 重复性的功能可以组织成AOI指令类
泵的参数一级报警和参数二级停车报警,是所有输油泵都要涉及的保护功能,它们的功能相似,可以构成1个参数一级报警的AOI指令和一个参数二级停车AOI指令用于所有输油泵报警程序设计。
一些操作虽然功能单一,如顺序启泵、顺序停泵,编程的技巧很高,为实现程序的保护,也可制作AOI指令,AOI指令可以加密,通过加密,实现对知识产权的保护。
2.3 指令的大小要合适,以完成一定的功能为目的
指令的编写以完成一定的功能为目的,不宜过大,否则,传递的参数过多,也易出现差错,结构不清晰,应根据需完成的功能,适当划分指令的大小。
3 AOI指令设计
下面以输油泵为对象制作一个泵类的AOI指令。
3.1 指令具有的功能
泵的操作是输油生产的基本操作,功能完善的泵类AOI指令,对于输油生产的自动化,减轻工人劳动强度具有重大意义,它的功能主要有:手动启泵、手动停泵、紧急停泵、逻辑启泵、逻辑停泵。
3.2 指令的工艺操作流程
工艺操作流程一般根据工艺的要求由工艺部门提供,下面是泵操作的基本流程。
⑴手动启泵流程:初始条件(泵处于远控、无故障、无报警、停止状态);发出启泵命令,判断泵运行;启泵完成,命令复位。
⑵手动停泵流程:初始条件(泵处于远控、运行状态);发出停泵指令,判断泵停止;停泵完成,命令复位。
⑶紧急停泵流程:紧急停泵和手动停泵操作流程相同,只是不需判断停泵的初始状态,在紧急情况下,在上位机上按下紧急停泵按钮,发出紧急停泵命令后,一定时延后,命令复位。
⑷逻辑停泵流程:初始条件(泵出口阀远控、无故障;泵运行、远控、无故障);逻辑停泵命令发出,判断泵是否运行,泵没运行,命令2S后复位;泵运行,关泵出口阀至10%阀位(阀门开度画面上可以人工修改设定),停泵,关泵出口阀至全关;停泵完成,命令复位(停泵后,画面上应人工设定泵的“备用”或“检修”状态)。
⑸逻辑启泵流程:初始条件(泵入口压力正常,泵无报警、无跳闸报警;泵入口阀远控、无故障;出口阀远控、无故障、全关位;排空阀无故障、全关位;泵备用),启泵命令发出,判断泵入口阀是否全开,没全开,开泵入口阀;泵入口阀全开,开排空阀,排空阀全开,延时10S(延时时间画面可人工修改设定),关泵排空阀,开泵出口阀至10%阀位(阀门开度画面上可以人工修改设定),启泵运行,判断泵进出压力达到设定值或延时20S(延时时间画面可人工修改设定),开泵出口阀至全开,启泵完成,命令复位。
3.3 指令的概念设计
根据指令的功能及工艺操作流程分析,可以确定4个实体對象,分别是泵、进口阀、出口阀、排空阀;实体属性为(状态、响应,设置,命令)。
3.4泵属性(状态、响应,设置,命令)
⑴状态属性:对象实际可以采集到的状态;为满足安全和规范操作要求人为设置的状态;操作过程必要提示的信息状态。按以上原则泵的状态参数有:泵的远程/就地状态、故障状态、运行或停止状态、备用状态、检修状态、保护报警状态、跳闸报警状态、逻辑启动条件满足、逻辑停泵条件满足、手动启泵成功、手动启泵失败、逻辑启泵成功、逻辑启泵失败、逻辑停泵成功、逻辑停泵失败、紧急停泵成功、紧急停泵失败。泵的远程/就地状态、故障状态、运行或停止状态,是可以采集到状态,备用和检修状态是通过上位机设置的状态,备用状态表示泵满足启泵条件,检修状态表示泵现在不能操作,同时有些系统在检修状态表示各种保护处于摘除状态;保护报警状态和跳闸报警状态是有些参数超限而产生的状态,目的是保护泵安全。手动启泵成功、手动启泵失败、逻辑启泵成功、逻辑启泵失败等是必要提示的信息。
⑵响应属性:指令发出后产生的动作,有启泵输出;停泵输出;急停输出。
⑶设置属性:指令执行时设定的条件,有泵入口压力、泵出口压力、泵的出入口压差、泵延时等。
⑷命令属性:操作的具体指令,即手动启泵、手动停泵、逻辑启泵、逻辑停泵、紧急停泵、备用、检修等。
3.5进口阀(状态、响应,设置,命令)
进口阀的状态属性有:远程/就地、全开位、全关位、中间位、故障状态、正常、异常。响应属性有:自动开阀、自动关阀、自动停阀;命令属性有:自动开阀、自动关阀、自动停阀;设置属性无。
3.6出口阀(状态、响应,设置,命令)
出口阀的状态属性:远程/就地、全开位、全关位、中间位、故障状态、正常、异常。响应特性:自动开阀、自动关阀、自动停阀;设置属性:阀门开度设置;命令属性:自动开阀、自动关阀、自动停阀;出口阀需要指定阀门开度,有的电动阀有开到指定阀位的指令(如仪长线),有的只有开阀、关阀、停阀指令(鲁宁线),需要通过编程解决,本例以鲁宁阀门为例。
3.7排空阀(状态、响应,设置,命令)
排空阀的状态属性有:全开位、全关位、中间位、故障位。响应属性:开阀、关阀;设置属性:排空延时。命令属性:自動开阀、自动关阀。不同排空阀操作方式不同,鲁宁线实际是一个电磁阀,电磁阀得电开阀,失电关阀。参数确定也不是一成不变的,在本例中进出阀及排空阀的命令属性没用到,系统直接作用于DO模块输出。
4 AOI指令的具体设计
AOI指令主要包括参数的定义及逻辑实现,参数的定义包括输入输出参数的定义;输入参数的定义;输出参数的定义;本地参数的定义;逻辑实现是指令的具体实现,可以用标准的编程语言如梯形图、功能块图和结构文本实现。下面以泵的基本操作的AOI指令说明AOI指令具体制作过程。
4.1 参数的定义
⑴输入输出参数(Inout),对象的状态属性及命令属性可以定义为输入输出参数,它们一般是位指令,定义如下:Bump_Command数据类型INT,包括泵的各种命令:手动启泵命令、手动停泵命令、逻辑启泵命令、逻辑停泵命令、泵的急停命令、检修命令、备用命令;Bump_stat数据类型DINT,包括泵的各种状态:运行状态、故障状态、远程/就地状态、检修状态、备用状态、保护报警状态、跳闸报警状态、手动启泵成功、手动启泵失败、手动停泵成功、手动停泵失败、逻辑启泵成功、逻辑启泵失败、逻辑停泵成功、逻辑停泵失败、逻辑启动条件满足、逻辑停泵条件满足;PK_stat数据类型INT,包括排空阀的各种状态:全开位、全关位、中间位、故障位;IN_Valve_stat数据类型INT,包括入口阀的各种状态:远程/就地、全开位、全关位、中间位、故障位;Out_Valve_stat数据类型INT,包括出口阀的各种状态:远程/就地、全开位、全关位、中间位、故障位。
⑵输入参数(INPUT),对象的设置属性可定义为输入参数,包括泵入口和出口压力及差压设置,中间阀位的设置、排空阀延时的设置、泵延时时间设置等,设置参数一般由上位机设置。
⑶输出参数(OUTPUT),对象的响应属性可定义为输出参数,包括启泵输出、停泵输出、泵急停输出、自动开阀输出、自动关阀输出、自动停阀输出、排空阀开关输出等。这些参数一般和DO模块输出对应。
⑷本地参数(Local)完成程序逻辑功能的一些中间变量,可以在逻辑实现中定义。
4.2 AOI指令逻辑实现
指令实现主要利用了鲁宁线下位机的一些例程,并对它进行规范化和优化,用梯形图编程完成AOI指令的制作,减少了例程的数量,不同输油泵的启停泵操作通过AOI带入不同泵的输入输出参数及可完成,程序看起来简洁明了,调试方便。指令具备了泵的手动启泵、手动停泵、逻辑启泵、逻辑停泵,泵的急停操作;指令中Control[2]参数中保存了逻辑启泵和逻辑停泵的正确时序,在泵的启泵和停泵逻辑完成或失败的一定时间内,自动复位,使得指令恢复到初始状态,等待接收下一个操作指令的到来,否则会出现不可预知的结果,逻辑启泵时:control[0].0开入口阀,control[0].6排空延时为0时不开排空阀,control[0].1排空延时不为0时开排空阀,control[0].2为排空延时时间到,control[0].3开出口阀到指定的阀位,control[0].4出口阀的中间位,control[0].5出口阀的中间位到全开;逻辑停泵时:control[1].0关出口阀到中间位,control[1].1出口阀中间位状态(停出口阀),control[1].2从中间位开始关出口阀。
5 指令的引用
AOI指令制作完成后,就可以将指令具体的运用于各台具体的输油泵,指令的引用既可放在主例程中,也可单独放在例程中然后在主例程中引用,下面以7#泵为例讲解指令的引用过程(如右图),在ControlierTags中定义如下参数标签,N7:数据类型Int,7#泵的命令字;N8:数据类型Dint,7#泵状态字;N9:数据类型Int,7#泵的入口阀状态字;N10:数据类型Int,7#泵的出口阀状态字;N11:数据类型Int,7#泵的排空阀状态字;在指令引用例程中,将泵的各种命令通过梯形图逻辑传递给N7,将PLC模块实时采集的状态数据分别传递给N8、N9、N10、N11;其他参数利用原程序的定义参数如:Axo_pk对应的是HS12907C,是自动开排空阀;Axo_in_valve对应的是HS12102_1C_O,是自动开泵入口阀;Bump_R对应的是HS12907C_R,是泵的启动输出,具体对应的参数如左图所示,通过参数传递完成7#泵操作编程,各种操作的结果及状态数据通过上位机的数据采集,在上位机上实时显示。操作人员通过上位机可以实时了解指令执行的情况,有利于故障的诊断,方便操作人员迅速确定故障的部位,采取相应应对措施。
6 结语
通过引入AOI指令,可以简化系统程序的编辑,有利于编程的标准化和规范化,减少参数传递的差错率,优化系统的编程,减少编程的工作量,是值得推广的编程方法。通过AOI指令的编程实践,使得我对RSLOGIX5000编程有了一定的了解,对如何编写PLC程序有了一定的认识,对于维护SCADA系统有了进一步的认识,对保障输油生产安全可靠的运行具有信心,由于经验不足,可能会出现一些差错,望请批评指正。
参考文献:
[1] 邓李.ControlLogix系统实用手册[M].北京:机械工业出版社,2013:312.
[2] 钱晓龙.ControlLogix系统组态与编程-现代控制工程设计[M].北京:机械工业出版社,2013:267-268.
【通联编辑:光文玲】