企业: | 霍尼韦尔中国公司 | 日期: | 2010-10-24 |
---|---|---|---|
领域: | 运动控制 | 点击数: | 1023 |
一、程序移植的历史背景及现实意义 大庆炼化公司180万吨/年ARGG装置三机组(轴流风机、烟机、主电机)控制系统是TRICONEX公司的TS3000控制系统,如图1,自1998年投运以来运行平稳,但自2002年控制系统频繁出现烧卡的现象(参见附表),已更换各类卡件18块,严重地威胁装置的安全生产。对此,炼化公司领导非常重视,曾多次组织召开专业技术分析会,组织仪表及电气等技术人员对整个系统详细检查,同时联系了北京设计院、陕鼓、美国TRICONEX公司、ELLIOTT公司,及施工单位中油一公司,于2000年6月召开三天专业分析会,分析故障原因。各单位一致认为对接地系统及电源系统要进行检查、测试和整改。并于2002年装置停工检修期间进行了彻底整改,耗资约30余万元。为保证生产,公司成立技术攻关组,利用富士智能调节器及西门子S7-200PLC创建一套应急系统,保证在彻底整改前事故情况下紧急启动备机系统。 ![]() 图1 TRICON系统示意图 借此机会,仪表专业对防喘振的源程序进行了认真的解读,发现在TPS系统中完全可以实现该功能,与源程序相比,技术上更可靠,功能上更丰富,控制精度更高。在此,笔者对自动化专业应用程序的转化和移植的思路及方案做以详尽的阐述,旨在促进专业技术的交流与应用。 1、防喘振控制方案分析 就目前国内外炼化企业来看,防喘振控制通常用两种方法:一是早期专用的防喘振控制器,如WORDWARD公司的505C控制器、ELLIOT公司的ASCC控制器等;二是目前常用的PLC专用软件包。如GE公司的9070系列PLC(用Logic Master或Field Control编的软件包)、TRICONEX公司的TS3000(用MSW311或TS1131软件包)等。但每个厂家出于对知识产权的保护,均不会公开其防喘振控制的算法。专用的控制器只给用户提供接口参数,专用的软件包是用高级语言编写的软件包(如C语言)。用户无法打开,只能在程序中调用。这些技术封索直接影响用户对防喘振控制方案的深入理解,给程序的移植带来了相当大的难度。笔者通过对多套机组喘振方案的研究,发现只有TS3000系统中的源程序对用户是相对开放的,于是对其进行了反复实验,最终弄清了其算法。这种算法仅仅是不同厂家、不同设备中众多算法中常用的,也是相对减化的算法。 1、防喘振控制的主要功能 喉部差压低选、出口压力高选 喉部差压温度补偿算法 喉部差压和比例增益参数的折线运算 防喘振线下移功能 可远程给定的PID运算 实现放空阀的快开慢关功能 实现两个放空阀的分程控制 实现联锁停机放空阀自动打开控制 实现防喘振曲线图 2、防喘振控制技术方案 根据测量压缩机的喉部差压、出口压力、入口温度这三量,TRICONEX有一套完整的喘振技术,该算法中气体分子量变化不会影响机组的防喘振控制。当风机正常运行时,它的工作点应该在图2防喘振线的下方,此时偏差e=PV-SP<0,调节器的作用方式为反作用。当工作点越过防喘振线 ![]() 并在其上方时,即偏差e>=0时,则要求防喘振阀快速打开。由于防喘振阀的打开,使工作点开始回到防喘振线以下时,阀的动作又应减慢,即要求防喘振阀在开关时,是以变速动作的。在偏差e>=0时,放空阀打开的快速取决于PID参数比例增益K的自适应能力(自动增大或减小),如果K值不变,放空阀则以正常的速度打开(一般要求在3秒钟之内); 而当喘振发生的趋势得以控制时,即偏差e=<0时,放空阀则以0.1%渐进式缓慢关闭。 防喘振控制算法,是通过温度补偿后的喉部差压值(防喘振曲线的横坐标X轴)经过折线运算得出的出口压力作为PID控制的设定值SP(防喘振曲线的纵坐标Y轴),来控制测量值出口压力PV。防喘振控制的偏差e=PV-SP即为出口压力的控制偏差。防喘振PID作用为反作用,正常状况下偏差e<0,当e>=0时发生喘振。防喘振控制框图如图3所示。 ![]() 当偏差e大于2%时系统发出喘振报警,当偏差e大于7%并且逆流报警存在,则防喘振线下移1%。为了保证风机的功效,最多下移5次,还设置了手动复位功能。当防喘振线下移时,此时的设定值SP为折线算出的SP'减去移动次数N乘以下移量1%。即: SP= SP'-N×1%。 PID参数比例增益K自整定功能是通过折线运算实现的,共11点坐标形成3段斜坡折线得出K'。在没有发生喘振情况下,当偏差e大于0.1%时(即喘振条件具备)发生喘振,K值自动置为初始值90,然后K通过和折线运算后的K'计算逐渐减小。计算公式: K=(90×25.0)÷(K'+25.0) 当偏差e 小于0.1%时,K值值保持不变。在比例增益K值自动变化过程,积分T1值始终为4,微分T2值始终为0。如图4所示。 ![]() 防喘振程序的转化和移植 功能模块是TPS系统商提供的系统应用程序,用户可根据需要进行选择,然后将结构参数(功能参数和结构参数)设置好就可以调用,实现特定功能。 如高选模块:功能是输出等于输入中最大的一个输入。 其数学方程式是: M=X1 (当X1≥X2时) M=X2 (当X1≤X2时) 图形描述: ![]() 风机的两个出口压力采用高选控制,即选择HILOAVG(HI)算法;同样两个喉部差压采用低选控制,即选择HILOAVG(LO)算法。 笔者针对图3的防喘振控制框图,在ARGG中央控制室TPS系统中,逐个功能反复实验最终确立新的算法方框图,如图5所示。 结合图5的框图功能创建了一些功能点,如表1所示。 本控制算法最大的技术难点,也是核心技术是: 防喘振线的形成 比例增益K自整定运算 放空阀的快开慢关功能 防喘振曲线工作点的动态干预 下面就作以详细的阐述。 一、温压补偿算法 在TPS系统中Regulatory PV温压补偿算法有固定的计算公式。有如下几种: ![]() 在这里,笔者选择了公式EQB算法。下面是公式中的变量说明。 P = Measured actual gage pressure. T = Measured actual temperature. RP = Design pressure, converted to an absolute value (Default value = 1.0). RT = Design temperature, converted to an absolute value (Default value =1.0). P0 = Factor to convert gauge pressure to an absolute value. Typically 14.696 psia or 101.325 kPa. Enter the absolute value of the number.Default value = 0. If the measured pressure is already an absolute value, enter 0. T0 = Factor to convert Celsius and Fahrenheit temperatures to an absolute value. Typically 459.69°F or 273.15°C (use the absolute value of the number when entering a value in T0). 备机防喘振控制参考温度为T0 = 25°C。 ![]() ![]() ![]() 表1喘振功能点清单 二、防喘振线的确定 原方案采用折线运算得出,这种控制算法在DCS理论上称之为预测控制,它采用工业过程中较易得到的对象阶跃响应曲线,把它们在采样时刻的一系列参数作为控制对象的设定值,从而使在未来一段时间内使测量值与经过“柔化”后的设定值之间的偏差最小。不同时刻采样的设定值连成的曲线是经过在线“柔化”后的一条所期望的平缓曲线,通常称为参考轨迹。 原控制方案中的防喘振线既是由11点坐标构成的一条参考轨迹。在TPS 系统中的Regulatory PV运算类模块中就有专门的折线函数运算General Linearization(GENLIN)。其功能图如图6所示。 ![]() 图6 TPS系统中GENLIN 功能图 其中: IN0 = 0.0 IN1 = 30.0 Beginning of 1st segment IN2 = 55.0 IN3 = 85.0 End of 1st segment OUT0 = 0.0 OUT1 = 20.0 End of 2nd segment OUT2 = 45.0 OUT3 = 100.0 End of 3rd segment Solution A (P1 = IN2): PVCALC = OUT2 = 45.0 Solution B (P1 > IN1): ![]() Solution C (P1 intersects any but 1st and last segment): ![]() Solution D (P1 intersects the last segment): ![]() 其中变量: PVCALC = The output of this algorithm. It is selected as the PV for this data point when the PV source is AUTOmatic. P1 = The input value. IN(i) = Input value at the beginning of the intersecting segment. IN (i+1) = Input value at the end of the intersecting segment. OUT (i) = Output value at the beginning of the intersecting segment. OUT (i+1) = Output value at the end of the intersecting segment. segtot = A subscript indicating the user-entered value in SEGTOT. ![]() 1、喉部差压的折线函数 不同的静叶角度对应的喘振点是不同的,而静叶角度和喉部差压有关。因此,根据补偿后的喉部差压作为坐标的横坐标,计算出对应的出口压力作为纵坐标,纵坐标即为PID控制的设定值SP。为安全起见,通常将坐标点向下偏移7%的裕度来确定一点,将若干点相连,就形成了防喘振线。在新控制方案中,防喘振线仍采用原11点10段的折线算法,确定了近似于理论防喘振线。选用GENLIN折线函数,输入坐标值即可。具体坐标值见表2。 2、防喘振线的下移 当偏差e大于7%(即42)并且逆流报警存在,则防喘振线下移1%(即7)。为了保证风机的功效,最多下移5次,还设置了手动复位功能,即NN(3)=0。当防喘振线下移时,此时的设定值SP为折线算出的SP'减去移动次数N乘以下移量1%(即7)。即: SP= SP'-7*N 详细程序如下: SEQUENCE XY(HPM;POINT XY1840) EXTERNAL PI1841,PDZ1840 PHASE AA STEP BB SET NN(2)=PDZ1840.PV Q: SET NN(1)=PI1841.PV-NN(2) IF NN(1)>=42 AND NN(3)<5 THEN(SET NN(2)=NN(2)-7; & SET NN(3)=NN(3)+1;GOTO Q) IF NN(3)>=5 THEN SET NN(3)=5 IF NN(1)>=42 AND NN(3)<=5 THEN(SET NN(2)=PDZ1840.PV-NN(3)*7 GOTO STEP BB END XY 3、比例增益K自整定运算 自整定控制是调节器的参数需要根据被控对象的特性调整。原控制方案中采用折线运算,得出一条反应曲线的方法,再作以计算,得出比例增益K,送给PID调节器。根据这个要求,在TPS系统中可仍选用GENLIN折线运算块即可实现。其中公式Regulatory PV中的Calculator模块即可。具体坐标值见表2。 ![]() 表2 参考轨迹坐标 当偏差e大于0时(即喘振条件具备)发生喘振,K值自动置为初始值90,然后K通过和折线运算后的K'计算得出。 计算公式: K=(90×25.0)÷(K'+25.0) 笔者研究发现可采用两种方式:一是采用CL语言可实现;二是运用Logic块实现。但经分析后决定采用Logic块方案,因为逻辑块在系统中运行比CL语言占用空间和PU都少,安全可靠,负载小。逻辑功能框图如图7所示。 4、放空阀的快开慢关 放空阀的快开慢关的特性对压缩机而言尤为重要,是工艺及设备的特性所决定的。原方案在Tricon系统中实现很容易,它根据PID的输出趋势作成正常打开,缓慢关闭,而关闭是以0.1%递加而得的。即当PID的输出是开(减小)的趋势时阀正常打开;反之,即当PID的输出是关(增大)的趋势时阀的输出是以0.1%递加关闭。 但在TPS系统中,由于受各功能点的参数属性的限制,实现PID的输出快开慢关相当困难,原因是: (1)、在同一UCN网中PID的输出连接只有以下几种情况: AO点(半点)的 .OP参数(单回路) RC点的 . X1(X2、X3、X4)参数(连手操器或选择开关) RC点的 .SP参数(串级回路) DO点的 .SO参数(脉宽调制) RC点的 .Ratio参数(比值控制) 无输出 (2)、在TPS系统中PID的输出不能与下列点参数连接: Logic.NN(i) PM.NN(i) RV点参数 D、 Array.NN(i) ![]() 图 7 逻辑功能框图 第(1)种情况满足不了输出快开慢关的要求,因为这几个连接点参数都达不到要求,即不能将PID输出作成动态的加减变速运动。而第(2)种情况可以满足控制要求,但却无法连接。于是问题的关键便浮出水面,即如何找到一个能将PID的输出与AO点的.OP参数相连,实现快开慢关的功能。笔者经过反复实验,最终得出结论:只有通过CL语言才能实现这种参数的连接,但只是两个PID模块之间的参数连接,否则将无法实现。这就要求: A:主PID的输出连接置空(无连接) B:副PID的输入用Pull关系连入主PID的输出,但不参与控制,只用于显示。副PID的输出完全由CL语言控制,其始终处于P-MAN 控制方式。 C:副PID的输出连接AO点的.OP参数。 D:CL语言要根据主PID的输出变化趋势来控制副PID的输出,实现快开慢关功能。 以上四点若能实现,则此方案完全可行。但在实际测试中发现D项中的如何判断主PID的输出变化趋势是关键、更是难点,其于三项很容易实现。为此,笔者通过AI点的上一个周期采样值LastPV可推断PID的输出很可能也有此参数。在查找了所有资料后笔者发现只有三个参数可以试运。 OPCMD=0 IDLE(Output is not being affected by Output Command) OPCMD=1 Lower(Output is being lowered) OPCMD=2 Raise(Output is being raised) 但在实际中发现三个参数均不行,还是达不到控制要求。 在经过反复实验后,最终不得不采用了下述方法,即在CL语言中每隔1秒钟对主PID(ASC1840)的输出作一次采样。根据二次采样的差值来判断主PID的输出是增大还是减小,来控制副PID(SENT1840)的输出,进而得到完美解决。在整个控制过程中,副PID只是起到信号传递作用。完整的程序如下: SEQUENCE PID(HPM;POINT PM1840) EXTERNAL ASC1840,SENT1840 PHASE AA STEP BB SET SENT1840.MODATTR=PROGRAM SET SENT1840.MODE=MAN SET SENT1840.OP=ASC1840.OP SET NN(1)=ASC1840.OP WAIT 1 SECS SET NN(2)=ASC1840.OP Q: IF NN(2)>NN(1) THEN SET SENT1840.OP=SENT1840.OP+1 IF SENT1840.OP<ASC1840.OP THEN (SET SENT1840.OP=SENT1840.OP+1;GOTO Q) IF NN(2)<NN(1) THEN SET SENT1840.OP=SENT1840.OP-5 IF SENT1840.OP> ASC1840.OP THEN(SET SENT1840.OP=SENT1840.OP-5;GOTO Q) IF SENT1840.OP=ASC1840.OP THEN (SET SENT1840.OP=SENT1840.OP; GOTO Q) GOTO STEP BB END PID 程序中可以看出,关闭时是以1%的递加式,打开时是以5%的递减式。 为安全起见,辅PID后连接了两个手操器,手操器再和AO点相连。分程控制在AO点中实现,信号分割点是44.9%。。 5、联锁停机时的喘振处理 当联锁停机时,二放空阀自动全开,程序如下: SEQUENCE ESD(HPM;POINT PMESD) EXTERNAL ESD,ASC1840 PHASE AA STEP BB IF ESD.PVFL=OFF THEN (SET ASC1840.MODATTR=OPERATOR;GOTO Q) SET ASC1840.MODATTR=PROGRAM SET ASC1840.MODE=MAN SET ASC1840.OP=0 Q:GOTO STEP BB END ESD 防喘振曲线图动态监控 在Display Builder绘图软件中,提供了基于Microsoft VB功能强大的Script语言,用于完成GUS流程图对过程变化的实时显示及过程操作。常规的动态显示很容易变化,但对某个对象而言,根据事件的动态变化而变化,则很难实现。 防喘振曲线中最关键、最难的技术是工作点和设定点的实时动态变化。这种变化是上下左右全方位的变化,而不是单方向的变化。 一、防喘振曲线绘制 笔者曾采用“抽点隐现法”实现,但效果不是很好,且很麻烦。在通篇翻阅了TPS的系统资料和做了大量实验后,最终采用了函数TRANSX和TRANSY得以实现。分别为横坐标和纵坐标,坐标值为像素值。防喘振曲线图如图8和图9所示。同时自制了控制面板,以便于操作。 其中: o 蓝色●代表工作点 o 绿色+代表设定点 o 红线代表喘振线 o 黄线代表防喘振线 o 红线左侧代表喘振区 o 黄线右侧代表防喘振区 o 红黄两线之间为安全裕度 o Reset为防喘振偏差复位键 o MODE为调节器控制方式选择:MAN AUTO CAS 点击信号可进入该点的细目(Native Window)画面。 设定点的Script语言: Sub OnDataChange() ME.TRANSX=LCN.PDC1840.PV*320/25 ME.TRANSY=-LCN.ASC1840.SP*320/300 End Sub 工作点的Script语言: Sub OnDataChange() ME.TRANSX=LCN.PDC1840.PV*320/25 ME.TRANSY=-LCN.PI1841.PV*320/300 End Sub 防喘振线下移次数: LCN.XY1840.NN(3) 下移复位: Sub OnLButtonClick() LCN.XY1840.NN(3)=0 End Sub 喘振偏差: LCN.PI1841.pv-LCN.XY1840.NN(2) 二、仿真实验 在线模拟现场实际情况,笔者本着科学负责的态度对所做的方案进行了严细认真的测试,对第一部分介绍的防喘振的十大功能逐个核实,结果全部实现,非常成功。 图8和图9对比可发现,曲线图直观的反映出喘振前后各个参数的变化情况。尤其是设定点和工作点的变化特点。在正常状况下,设定点应始终延防喘振线波动,工作点应始终在设定点的下方。但在喘振时,图9的防喘振线已经下移了5次(防喘振偏差已超过42),设定点“+”已远离防喘振线一段距离,工作点“●”到达了喘振区。防喘振的输出最小(放空阀全开)。 操作注意事项: (1)ASCC1840正常时处于CAS方式,因为SP值远程控制。 (2)HIC1840AB正常时处于CAS方式,处于MAN时可以手动开阀。 (3)联锁停机后,ASC1840的控制方式自动置为P-MAN程序控制。停机信号解除后,由程序控制自动转化操作员控制(置成MAN),再次启机时需操作员将ASC1840投为CAS方式。 ![]() 图8未喘振时的状态 ![]() 图9 喘振时的状态 结束语 由于TPS系统可靠性高,易操作性强,组态灵活,功能强大而丰富,因此便于组态各种复杂控制。本论文所阐述的压缩机防喘振功能在DCS上的实现,是化工自动化领域程序移植的突破性尝试,在科技功关方面迈出了重要一步! 附表:系统故障一览表 ![]() ![]() ![]() ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
1.我有以下需求: | |
|
|
2.详细的需求: | |
* | |
姓名: | * |
单位: | |
电话: | * |
邮件: | * |