技术文章

西门子PCS7系统在控制器内存容量不足时的处理方法

来源:仪表网

2012/3/12 15:18:05 3196
  一、项目简介
  
  上虞杭协联电厂(见图1)位于浙江省上虞市精细化工园区内,是杭州协联热电厂于2003年在上虞市投资创建的。一期项目总的装机容量为27MW,3台130t/h循环硫化床锅炉,一台12MW的凝汽式汽轮机,一台15MW的背压式汽轮机,年发电能力2亿千瓦时,供汽能力150万吨。

  
  图1电场外景
  
  本项目采用西门子PCS7控制系统,控制系统的设计上包括了三台130t/h循环硫化床锅炉,一台12MW的凝汽式汽轮机,一台15MW的背压式汽轮机,及减温减压,化学水处理等辅机系统。其中主机部分采用了五套冗余的414-H控制器,三炉两机各单独使用一套控制器,辅机部分使用了一套非冗余的414控制器。
  
  本项目遇到了控制器内存不足的情况,实施了一些特殊的处理方法,现记录如下。
  
  二、CPU内存的组成情况
  
  CPU的内存组成情况如图2所示。
  
  图2CPU内存组成情况
  
  CPU的内存由loadmemory和workmemory两部分组成。Loadmemory是可以通过外扩存倒卡的方式扩展,而workmemory是集成在CPU内部无法扩展的,所以我们需要节省workmemor的使用。Workmemory包括codememory和datamemory。对于PCS7项目,codememory的d用量要远远高于datamemory的使用量i所以要节省CPU的内存zui终就是要节省workmemory[}的codememory。
  
  codememory的使用分配包括了四部分,如图3所示。
  
  图3codememory的使用分配
  
  用户程序--block
  
  I/O过程映像区--input/outputimage
  
  诊断缓冲区--diagnosebuffer
  
  通讯任务数量--communicatejob
  
  所以我们就要通过节省以上四部分的使用来节省CPU的codememory。
  
  本项目中的CPU内存不足出现在3个锅炉系统对应的3套414-H控制器,每个锅炉的信号数量为550点,其中Al信号为200点,控制回路为23个,414-H控制器的workmemory为768K,codememory为384K,zui初程序完成后,已超400K,无法下载程序,后进行了以下处理。
  
  三、节省内存的方法
  
  1.减少用户程序
  
  由以上workmemory的组成情况可以看出,用户程序的使用情况决定了workmemory余量的大小,所以我们要尽量减少用户程序,方法如下:
  
  方法1,避免使用开关量信号的信号驱动块,即CH-DI、CH-DO块。这两种块只有在我们调试程序时有一些作用,当我们内存不足时,*可以不使用这两种驱动块,而直接使用地址来编程序。
  
  方法2,用用户自定义的FB块来替换模拟量信号驱动块CH-AI、CH-AO。首先对于PCS7项目,相同大小的FC块的重复调用要比相同大小的FB块的重复调用所占用的CPU的codememory大得多,而CH-AI、CH-AO块是FC块,且尺寸较大,所以我们要用用户自定义的FB块来代替CH-AI、CH-AO块;其次,CH-AI、CH-AO块不仅在循环扫描周期中(如OB35)被调用,而且还在OB100中被调用,这就使这两种块占用CPU的内存加倍,所以如果不需要在OB100中做特殊程序处理时,我们自己创建FB块只在循环扫描周期中(如OB35)被调用,来减少用户程序。
  
  方法3,删除系统生成的I/O模板的驱动块。在采用以上两种方法,但CPU内存还不能满足要求时,可以采取这种方法。当我们编译产生模板驱动后,系统会自动生成许多驱动块,其中包括I/O模板的驱动块、CPU的驱动块、冗余的驱动块、IM153的驱动块等,而其中I/O模板的驱动块占用了较多的程序。当我们不使用信号驱动块时,则可以删除I/O模板的驱动块,但是我们将无法得到模板的运行报警信息。
  
  2.减少诊断缓冲区
  
  CPU的诊断缓冲区存储了系统的硬件诊断信息,利用诊断信息,工程师可以清楚地了解到CPU历史及现在的运行状况和故障信息。如我们不需要保存太久的CPU诊断信息,我们可以减少诊断缓冲区的容量来节省内存。PCS7V6版本中CPU414-H的默认缓冲区大小为3000条诊断信息,我们可以zui低减少到100条诊断信息。
  
  3.减少I/O过程映像区
  
  通过减少过程映像区的大小,同样可以节省CPU的codememory。对于PCS7系统组态硬件时,模拟信号默认的起始地址为IW512和QW512,这时我们就要调整相应的起始地址,将其尽量减小。例如,开关量信号组态的zui高地址如果是140.7和Q20.7,我们可以将模拟信号的起始地址设为IW50和QW30,以此可减少过程映像区的大小。
  
  4.减少CPU的通讯任务数量
  
  CPU的通讯任务占用了CPU大量的内存,对CPU的codememory的影响很大,所以我们要尽量减少CPU的通讯任务数量,来节省大量的内存空间。
  
  具有报警信息功能的FB块的数量决定了通讯任务数量,这些FB块包括CTRL-PID.MOTOR、MEAS-MON.VAL-MOT.MOD1等,所以我们在CFC编程时要尽量减少这些块的数量。
  
  方法1,不使用MEAS-MON块。我们常用MEAS-MON块来实现对采集的过程模拟信号进行显示及报警,但是由于它占用了CPU的通讯任务,我们将不能使用它。对于模拟信号的显示,我们可创建一个FB块来实现,对于模拟信号的高低限报警,我们可以使用ALARM-8P来实现,这样可以大大减少通讯任务数量。
  
  方法2,删除系统生成的I/O模板的驱动块。I/O模板的驱动块同样占用了CPU的通讯任务,所以删除系统生成的I/O模板的驱动块,同样可以大大减少通讯任务数量,删除方法上己阐述。
  
  四、内存不足时程序的优化
  
  CPU的内存不足,将给我们带来的主要问题是程序无法部分下装,所以我们将针对这个问题进行程序的优化。
  
  方法1,建立多个运行组,尽量减少每个运行组内所调用的程序块的数量。每个运行组内所调用的程序块的数量越多,则编译后系统生成的FC块的尺寸就越大,如果FC块的尺寸太大,则程序将无法部分下装。
  
  方法2,CFC尽量按功能分,减少CFC程序之间的连接。一般情况下,我们编程时每个CFC都对应一个运行组,减少CFC程序之间的连接,则在修改程序后进行部分编译时,所更改的程序就会相对减少,部分下装的可行性就要大一些。
  
  五、小结
  
  通过以上方法基本解决了本项目中CPU内存不足的问题,为杭州协联热电厂节省了大量的资金投入。现三炉两机已全部投产,一切运行正常。

猜你喜欢

提示

请选择您要拨打的电话: