西门子6ES7211-0BA23-0XB0产品型号
1 引言
加纳特马某火电厂6000m3/h冷却塔工程的循环冷却水为该厂凝汽器、闭式冷却器等设备提供所需的冷却水,以满足汽轮机冷却的要求,维持凝汽器真空,提供大限度的冷却效果,主要控制对象有:
3台循环水泵:其中2台电机驱动,1台小汽机驱动。在供电正常时,一台电机驱动泵为工作泵,另一台为备用泵,并能定时切换,互为备用,当出水压力过低时,备用水泵自动启动;当工作泵故障时,备用泵启动;工作泵和备用泵均不能正常工作时,系统启动汽机水泵。
2台冷却塔风机:冷却循环水进水水温要求不高于25℃,当水温超过25℃时,自动启动风机。
联锁保护控制要求:
(1) 润滑油压力超过规定值时,自动投入/切除相应系统的润滑油泵及其电动门;
(2) 小汽机的前后轴承座回油温度超过规定值时,自动停止相应的单元及报警;
(3) 小汽机的转速超过规定值时,自动启动停机电磁阀。
2 系统设计
2.1 上位机系统
采用一台工业级控制计算机,作为操作员站兼工程师站,安装bbbbbbs xp英文版操作系统,同时安装kingview6.52开发、运行英文版,此计算机和plc相连接,配置上位监控管理和组态编程程序,对系统的所有设备进行监控、编程、设置、故障诊断、信息采集和管理,并和sis、mis联网,提供管理数据。
上位机人机操作界面的开发按照系统各工艺流程图设计lcd画面(包括模拟图、棒状图、趋势图、操作画面、报警画面及操作指导等),具体结构见图1所示。lcd画面能分别显示各系统的工艺流程及测量参数、控制方式、顺序运行状况、控制对象状态,也能显示成组参数。当参数越限报警、控制对象故障或状态变化时,以不同颜色进行显示,并有音响提示。当网络故障时,这些数据能被暂时存储,待网络通讯恢复正常后,这些数据能自动显示。
图1 lcd画面树形图
2.2 下位机系统
采用日本欧姆龙公司的csig系列plc。系统所有的逻辑功能终都是由plc来完成。
(1) 硬件设备及功能:确定控制系统的规模、i/o点的数量和类型,选择适当的plc及其模块。如图2所示,omron-csig型号的plc,主、从机架各一个。机架上各种模块及cpu单元科学排布。cs1w-cn713型号的cs1i/o连接电缆将从机架连接到cpu所在的主机架。plc采集循环水泵出口母管的压力,信号以4-20ma电流输入,经模拟量模块后cpu获得。plc根据反馈的压力信号及工艺要求,发出控制信号,实现自动控制。plc与汽轮机设有接口,接入汽轮机的调速系统、保护系统、监视系统后,可实现远方启停小汽机并监视其运行状态。系统所有参数达到报警值,plc报警装置报警;达到停机值,plc停机装置停机。此时,plc与上位机相对独立。plc直接实现循环冷却水控制系统的控制功能,上位机仅处于监视状态[1]。
图2 系统硬件框架
(2) 软件系统:plc编程软件要求符合iec61131-3的标准,同时提供梯形图、指令列表、功能块图、顺序功能图、结构化文本等编程语言,并可实现图形逻辑组态,及监视状态下逻辑状态查询。配置一套便携式编程器来完成离线仿真、程序开发、调试、诊断、编程等功能。编程软件采用供货年新正版的编程软件cx-rogrammer7.0。小型工业汽轮机的信号采集和控制由下位机实现。测量齿轮转速,信号送入plc。经cpu运算处理后,发出调节指令。此外,汽机的轴承保护系统采用pt100采集温度信号,温度过高则采取必要的措施,汽机监控程序案例如图3所示。
图3 汽机监控程序案例
3 结束语
设计一套高质量的自动控制系统,一方面需要设计具有完备的工艺和合理的系统结构,另一方面需要设计具有可靠、完备的控制功能。后者需要我们的设计满足整个系统中需要监视、控制的点,都能得到有效的监控;系统正常运行时,系统的抗干扰能力强,同时,系统在安装和使用维护中也要引起足够的重视,各个方面的工作都做好,才能完善解决问题,有效地增强系统的抗干扰性能
(1) i/o模块可以扩大cpu的接线端子数日。许多cpu本身自带的i/o点数很有限,当所需i/o点数超过cpu本身自带的i/o点数时,需要i/o模块进行扩展。
(2) i/o模块主要分为模拟量模块和数字量模块,用以输入或输出模拟量和数字量。
(3)每款cpu所能带动i/o模块的数目不一样,可以查阅相关资料核对。
图所示为模拟量输入模块em231。
图模拟量输入模块em231
常用的i/o模块分类如下。
(1)开关量:按电压水平分,有220v ac、110v ac、24v dc;按隔离方式分,有隔离和晶体管隔离。
(2)模拟量:有电流型(4~20ma,0~20ma)、电压型(0~10v,0~5v,-10~10v)等,还有特殊i/o模块,有热电阻型、热电偶型、脉冲型、定位型等。
分享一下我做设备维护时的一个故障排查的经历,是s7-400输入模块故障,可算是难得一见的一次。以前曾经在百度贴吧上简略的说过,但不完整,这次补充详细,和大家共同讨论一下。
1:设备情况
设备是2005年进行的设备改造,为轧机副传动系统,控制系统采用西门子s7-400控制,i/o模块采用的400的i/o模块。控制分合闸按钮全部采集入(两地合闸)。合闸采用plc输出由转220vac控制动作。变频器为1336plus2,ab的。
2:故障现象
发生故障的时间是2015年4月份,当时操作人员打电话反映所有的副传动辊道不动了,维护人员赶到现场查看发现:所有的变频器合闸回路接触器跳闸,但奇怪的是柜门变频器合、分闸指示灯全不亮。操作人员合闸合不上,但是检查220vac没故障。负责给模块供电的24vdc及中继的24vdc均无问题。此时发现指示灯正常了,于是进行接触器合闸,发现接触器能合上了,但是过一会就全跳。
3:排查故障
排查继电回路问题,将继电器强制开关强制,合闸回路及变频器均无问题,观察变频器面板无问题。联系试车,结果发现需要动作的变频器不对(手动台,第二台动作了)。但几分钟以后又正常了。。。。。。(故障时好时坏,中间还好了一小时,轧钢线不能停产,这故障难查了。。。。。。)
一小时后,又出现此类情况,此时只能怀疑控制系统有问题,发现输出模块亮的灯不对(误导),怀疑输出模块问题,更换输出模块。(又好了一小时。。。。,排查期间一直强制合闸生产中。。。。。。)
一小时后,仍然出现此类情况。换了输出模块,仍然没法解决。这两小时中,监控和排查人员一直没离开,没办法,开始蹲点,结果这次在上位机监控时发现偶尔分闸信号过来,怀疑合分闸24vdc有问题,检查全部没问题。
终我们怀疑输入模块有问题。正好看程序时发现输入模块信号异常,发现输入421-1bl00-0aa0模块的i/0点i20.0至i23.0输入点信号平移了两位,即i20.0变成了i20.2,以此类推。更换后设备正常。
4:故障分析
输入模块往常也就是见坏点、模块全黑,i/o点平移的故障次见到。而ab变频器的数字量输入是置复位式的,接线也采用的是三线制启动。这样就会造成输入模块瞬间故障,导致全部跳闸,但是强制后输入点还是平移,这样后边一台变频器得到启动信号,而没得到停止信号变频器是启动的。而速度选择的点也平移了,变频器就启动了。。。。。
,输入模块为什么坏了,这个没法解释,内部无明显灰尘,模块每月定期除尘,整套系统放在威图柜中,柜门平时严密关闭,配电室要求很高,内部有s.d系统,超40度直接会报超温停机,环境是好的一个。但钢厂内部金属粉尘确实多,难保是不是碰巧金属灰尘导致内部损坏。模块确实是坏了,在实验台上实验时也出现此现象,毕竟用了10年。。。。。更换完输入模块后,两年内未发生故障。
第二,变频器合分闸,就是主回路上电。有的设计院不加合分闸接触器,有的加。直接隔离开关,负荷开关,塑壳送电在原先企业怕炸机(出过伤人事故),(变频器型号为1336f-b300-aa-en,容量不算小)所以要求都加。
第三,变频器输入是干接点,但中间有中间继电器做隔离。三线制两线制设计各有优缺点,这个是设计院设计的,从此次事故来看,确实有缺点,但可用继电回路急停封锁变频器使能,使变频器停止运行,且此现象在强制合闸以后才出现,也是建立在非正常使用之上。但如果从工艺角度来考虑,利大于弊(烧辊,烧推床,转钢损失要大得多)
stl指令通常包括操作码(助记符)和操作数两部分,其格式如下:
操作码(助记符)定义要执行的功能,它告诉cpu该做什么;操作数为执行该操作所需要的信息,它告诉cpu用什么去做。操作数由标识符和参数组成。的这种表示方法与计算机的表示方法十分相似。
(1)操作码(助记符)
操作码(助记符)通常是能表明指令性质的英文缩写,如a,not,=,on等。
(2)操作数
操作数通常可以由操作数区域标识符、操作数访问方式和操作数位置组成,用来表明数据区域中操作数的地址和性质。操作数的表示方法如下:
①区域标识符指出了该操作数存在存储器的哪个区域。各字母代表的存储区域如下所述。
i:输入过程映像存储区。
q:输出过程映像存储区。
l:局部变量存储区。
t:定时器存储区。
c:计数器存储器区。
db:公共数据存储区。
②访问方式指出操作数是按位、字节、字或双字访问,当按位访问时,可用操作数位置形式区分。访问方式用以下符号表示。
x:位。
b:字节。
w:字。
d:双字。
③操作数的位置指明操作数在此存储区的确切位置,操作数的位置用数字来指明,以字节为单位计数。
采用上述方法,就可以对任一存储区域(i、q、m、l)中的数据以位、字节、字、双字进行访问。
语句指令有两种基本格式:一条语句由一个指令和一个地址组成,如a i1.0是一条位逻辑操作指令。其中,“a”是操作码,它表示执行“与”操作;“11.0”是操作数,它指出这是对输入11.0进行的操作。
一条语句由一条单个指令组成。有些语句指令不带操作数,它们的操作对象是唯一的,因此为简便起见,不再特别说明,如not是对逻辑操作结果(rlo)取反。
rlo跳变沿检测可分别检测上升沿(正跳沿)和下降沿(负跳沿)。rlo下降沿检测指令和rlo上升沿检测指令分别对应语句表中的“fp”和“fn”指令。
rlo下降沿(负跳沿)是检测该指令所在点的逻辑状态是否有从“1”到“0”的变化,即是否有下降沿发生。<位地址>;位为边沿存储器,其作用是存储该点前一扫描周期的状态,以便进行比较。如果本周其期该点的状态为“0”,上个扫描周期的状态为“1”,则说明有下降沿(负跳沿)发生,逻辑输出结果为“1”,否则逻辑输出结果为“0”。
rlo上升沿(正跳沿)是检测该指令所在点的逻辑状态是否有从“0”到“1”的变化,即是否有上升沿发生。<位地址>;位为边沿存储器,其作用是存储该点前一扫描周期的状态,以便进行比较。如果本周期该点的状态为“1”,上个扫描周期的状态为“0”,则说明有下降沿(负跳沿)发生,逻辑输出结果为“1”,否则逻辑输出结果为“0”。
在每一个程序扫描周期过程中,rlo位的信号状态都将与前一周期中获得的结果进行比较,看信号状态是否有变化。前- rlo的信号状态必须保存在边沿标志地址(<位地址>;)中,以进行比较。如果在当前和先前的rlo状态之间有变化(检测到下降沿或上升沿),则在操作之后,能流在该扫描周期内流过检测元件,即rlo位仅在该扫描周期内为“1”;如果在当前和先前的rlo状态之间没有变化(无脉冲边沿),则在操作之后,rlo边沿检测指令均把rlo复位为0。
rlo边沿检测指令均指定有一个“位存储器”,用来保存前一周期rlo的信号状态,以便进行比较,在0b1的每一个扫描周期,rlo位的信号状态都将与前一周期中获得的结果进行比较,看信号状态是否有变化。“位存储器”使用的操作数可以是i、q、m、l、d。
(1)对逻辑操作结果rl0的直接操作指令及其说明(见表)
表对逻辑操作结果rlo的直接操作指令及其说明
(2)指令说明
①取反指令not。取反指令将逻辑操作结果rlo的状态取反后存入rlo。在lad和fbd中以触点的形式表示。
②置0指令clr。置0指令将rlo的内容置为0。在lad和fbd中不能使用,只能用在stl中。
③置1指令set。置1指令将rlo的内容置为1。在lad和fbd中不能使用,只能用在stl中。
④保存指令save。保存指令将rlo的内容存放在状态字的br中。在lad中以线圈的形式表示。
⑤a br指令。a br指令是再次检查所存储的rlo。
(3)编程示例(如图所示)
图对rlo的直接操作指令
说明:对于图(a),当i0.0与i0.1均闭合时,则rlo应为“1”,但经not指令后,rlo变为“0”,因此q8.0为“0”(失电)。对于图(b),save指令将当前值态存入br,然后通过检测br位来检查保存的rlo。
在刚接触pid时候感觉很头疼,fb41功能块繁多的输入输出以及帮助里面非常的解释看得我眼冒金星,头昏眼花,真的是不知道如何入手,后来使用几次以后发现,原来只是填填变量的事(我们的pid就是简单的控制,还没有涉及切换、加泵以及减泵等复杂问题),正好近有时间,就汇总了一下fb41的端子说明(基本来自大家技术论坛的分享),就当做个笔记吧。
1、fb41的方框图(fb41的端口作用逻辑图,看懂这个基本就都会了)
2、规格化(个人感觉不是必须要规格化,整个fb41功能块统一量纲就行了)
pid参数中重要的3个变量,给定值(sp_int),反馈值(pv_in)和输出值(lmn)都是用0.0~100.0之间的实数表示。
因此,需要将模拟输入转换为0.0~100.0的数据,或将0.0~100.0的数据转换为模拟输出,这个过程称为规格化
规格化的方法:(即变量相对所占整个值域范围内的百分比 对应与27648数字量范围内的量)
对于给定值(sp_int)和反馈值(pv_in),执行:变量*100/27648,然后将结果传送到pv-in和sp-int
对于输出变量 ,执行:lmn*27648/100,然后将结果取整传送给pqw即可。
3、一般使用循环中断组织块调用fb41,一般不用ob1,因为ob1的扫描周期不是确定的。
4、fb41的输入输出参数
in
<1、com_rst:bool,初始化fb41。设置为1时,积分微分的累计清零。不会自动复位,需要程序复位com_rst。一般使用如下:
可以在ob100、ob101、ob102里面写两句话
an “com_rst” //如果初始化标志位是0
s “com_rst” //将初始化标志位置1
在ob1的后写上两句话,复位初始化标志位
a “com_rst” //如果初始化标志位1
r “com_rst” //将初始化标志位复位
pid的初始化可以通过在ob100中调用一次,将参数com-rst置位,当然也可在别的地方初始化它,关键的是看程序需要;
<2、man_on:bool,设置为0为自动调整;设置为1为手动调整;这里会涉及到一个自动和手动模式的切换问题:无扰动切换
pid调节器在自动→手动、或手动→自动的瞬间,pid的输出是不变化的。
从手动切换到自动,自不用说,但是从自动到手动会出现明显跳动,一般可以这样处理:从自动切换到手动增加一个斜坡处理。将自动时的输出换算成比例值,一直加载在man口上,切换后,通过斜坡,将man口上的值由原来的值过度到手动比例设定值。
此端口和<11处的man口配合使用。
<3、pvper_on:bool,过程值选择,此值与pv_in和pv_per有关系
设置为1时,直接将piw(监测实际值端口)输入pv_per口
设置为0时:将转化后、滤波后且规格化后(等处理过的)数据输出pv_in口
<4、p_sel、i_sel以及d_sel:bool,比例、积分、微分作用的选择,设置为0,相应部分不起作用。
<5、int_hold:bool,积分保持,设置为1时,积分不累加,一般不设置。
<6、i_itl_on:bool,积分初值给定;
i-itlval:real,积分初值。
当i_itl_on设置为1时,使用i-itlval变量积分初值;当i_itl_on设置为0时,积分初始值为0。一般当发现pid功能的积分值增长比较慢或系统反应不够时可以考虑使用积分初值;此功能很少用到。
<7、cycle:time,pid采样周期。
<8、sp_int:real,pid的设定值。
<9、pv_in :real,pid的反馈值。数据类型为real,显然是处理后的数值,见<3。
<10、pv_per:word,pid的反馈值。数据类型为word,显然直接piw输入,见<3。
<11、man:real,手动模式的输入端口。
<12、gain:real,比例增益。
<13、ti:time,积分时间。
<14、td:time,微分时间。
<15、tm_lag:time,多长时间开启微分,由于微分会削弱达到稳定值时间,可以延时启动微分。通常不设置。
<16、deadb_w:real,死区宽度。现场监控达到设定值后,并不稳定到设定值,如果出现小范围浮动,会出现执行器来回动作问题,可以考虑用死区来降低灵敏度。此值为百分数。
<17、lmn_hlm、lmn_llm:real,输出值上下极限。此处需要搭配<19处使用,即保证lmn_hlm*lmn_fac=100,程序中默认lmn_hlm为100.0,lmn_fac为1.0,所以可以不用去设置。如果想设置,需要保证上面的公式。
<18、pv_fac、pv_off:real,pv_fac=的量程/100。只有在pvper_on为1时起作用,目的为统一单位;为零时,需要规格化,单位已经统一,所以此处无用。
<19、lmn_fac、lmn_off:real,输出值的量程。
<20、disv:real,允许的扰动量,串级系统使用,一般不设置;
out
<1、lmn:real,输出实际值占满量程的百分比。
<2、lmn_per:word,pqw输出
<3、qlmn_hlm、qlmn_llm:bool,qlmn_hlm:输出大值时输出1;qlmn_llm:输出小值时输出1,可以作为工、变频切换(例如一台泵工频,一台泵要求变频,调节恒压时)的点位来用。
<4、lmn_p、lmn_i、lmn_d:real,pid输出中p、i、d的分量。三者的和为输出值。
<5、pv:real,实际压力值
<6、er:real,偏离值,设定值与实际值之差。
以上部分加入了自己的想法,如有错误望各位大侠批评指导。