10510600034怎样有效的压缩CPU4144H的工作内存.docx
- 文档编号:9007416
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:10
- 大小:485.94KB
10510600034怎样有效的压缩CPU4144H的工作内存.docx
《10510600034怎样有效的压缩CPU4144H的工作内存.docx》由会员分享,可在线阅读,更多相关《10510600034怎样有效的压缩CPU4144H的工作内存.docx(10页珍藏版)》请在冰豆网上搜索。
10510600034怎样有效的压缩CPU4144H的工作内存
怎样有效的压缩CPU414-4H的工作内存?
很多300点左右的项目采用CPU414-4H,旧版的CPU414-4H的Workmemory只有784k,Workmemorycode和Workmemorydata分别384k,新版的CPU414-H,Workmemory中的为1.4M,Workmemorycode和Workmemorydata分别700k。
但是如果回路和逻辑比较多,Workmemorycode很容易达到80%以上的空间,如果现场调试用户需求增加的I/O或回路比较多,Workmemory很容易接近边界,不利于整个系统的正常运行。
潍坊星兴制双氧水项目一共350点(140*AI,42*AO,42*PID),三个CP341通讯卡,采用PCS7组态,在内部测试和FAT完成之后Workmemorycode达到85%(Modbus通讯还未组态),现场调试之前,用户要求增加15*AI,3*AO,3*PID,正式SAT时可能还会增加I/O或者逻辑回路。
在不改变系统的PCS7的总体组态的情况下,怎样简单而有效的压缩CPU的工作内存?
压缩CPU工作内存的方法总体可以分成两个方面:
硬件设置和软件组织。
硬件设置,即通过CPU中有关参数的设置,来缩减工作内存。
一般有四个方面:
1.减小processimage的大小,主要减小的是workmemorycode。
在CPU属性的Cycle/ClockMemory页面中。
当前值均为3072b。
在硬件组态中从0开始从小到大重新排布输入输出卡件的地址,然后在此基础上加上少许的裕量(如果不再继续增加卡件,理论上讲不加裕量也可),输入一个16的倍数的数值。
2.减小Communicationresources的大小,主要减小的是workmemorycode。
在CPU属性的memory页面中:
实际的communicationjobs负荷在chartreferencedata的statistic中也可以查到:
根据实际communicationjobs的负荷,加上一定的裕量,在估计裕量时注意两点:
一是根据communicationjobs的定义,它是指所有的通过组态的S7连接而生成的通讯包,例如STATUS,USEND/URCV,BSEND/BRCV,PUT/GET/PRINT,START/STOP/RESUME,STATUS,USTATUS,ALARM,ALARM_8,ALARM_8P,NOTIFY,AR_SEND块等等,每个通讯包都会被分配一个DB块,而通讯包的数量应该与这些DB块的数量相等。
二是compileanddownload中的报警设定范围。
在chart编辑界面内的下拉菜单option—〉customize—〉compile/download中设置loadmemory和workmemory以及communicationjobs的报警范围。
3.减小diagnosticbuffer(CPU的诊断缓冲区)的大小,主要减小的是workmemorycode。
在CPU属性的Diagnostics/Clock页面中。
为CPU保存的最新的系统的诊断信息的数量,默认设置为3000,根据系统的要求以及工程师的习惯,可以大幅度的减小这个数值。
允许的设定范围为100-3200。
4.减小localdataforpriorityclasses的大小,主要减小的是workmemorydata。
在CPU属性的memory页面中。
适当减小能分配的最大字节数,如果需要还可以对比cyclicinterrupts页面。
可以把自身程序放置的OB块的localdata适当减小,在连接CPU(仿真也可)的情况下(不连接CPU无法查看)可以通过chartreferencedata中的localdatareqirementperob页面查看每个OB块需要的空间。
上述修改的参数所占用的workmemory的大小,可以通过下表来计算:
修改后得到的结果可通过在线查看CPU的memory页面:
选中workmemorycode分格,点击右下角的detailsmemoryarea按钮进入构成页面查看修改后的参数构成情况,如下:
同理可以查看workmemorydata的构成情况:
一般按照上述硬件设置的方法,设置简单,效果明显,系统的WORKMEMORY可以缩减15%-20%。
如果由于需要仍然需要缩减WORKMEMORY,可以用如下的软件组织的方法。
软件组织,是在不改变软件系统的PCS7的做法的前提下,重新编制DRIVER或者MONITOR块。
一般说来修改或重编MONITOR块的方法工作量比较大,涉及到WINCC的ICON上传,而且MONITOR块的SCL语言并不公开。
所以采用重编DRIVER的方法更为简单可行,这里以重编CH_AI为例,探讨如何有效的缩减WORKMEMORY。
总体构架:
只保留诊断,仿真,超量程,保持上一个有效值,失效替代功能。
并将诊断字QUALITY传给MONITOR块,不影响上位机的操作。
编程过程中注意几点:
AI/O定义参考FC275的I/O,所有输入都定义为IN-OUT,因为输入引脚需要保持,只有IN-OUT寄存器可以保持。
B直接对输入的十六进制数16#进行处理,它对应的输入信号是线性的,参考下表:
也就是说从16#8000——16#7FFF,与0-20mA是线性对应的,可以直接处理输入值而定义诊断,超量程等。
C诊断代码QUALITY的组态,参考CH_AI的帮助文件,即下图:
用梯形图编制的AI驱动块如下,基本功能与原DRIVER块的基本功能一样:
重编DRIVER主要缩减的是workmemorydata,体现在两个地方:
1。
FC本身的大小。
2。
没有MODE引脚,在编译Generatemoduledrivers时不生成对赢得以@开头的文件,缩减了原先@文件中的FB块和对应的DB块。
驱动块生成的FB块以及调用时生成的背景数据块的大小分别对应如下:
括号内为在WORKMEMORY中占用的大小
Driver
Driverinternalidentifier
Moduleinternalidentifier
InstanceDB
CH_AI
FC275(4486b)
FB93(9868b)
DB(666b)
CH_AO
FC276(1338b)
FB93(9868b)
DB(666b)
CH_DI
FC277(304b)
FB92(4528b)
DB(422b)
CH_DO
FC278(274b)
FB92(4528b)
DB(422b)
每个I/O模块调用一次FB块,并生成一个对应的背景数据块,那么可以缩减的WORKMEMORY空间可以计算出来。
例如本例中,原来一个CH_AI的DRIVER块FC275为4486b,AI卡件一共22个,每个AI模块生成一个FB93(9868byte),每调用一次FB93,对应生成一个背景数据块DB(666Byte),重新编制后的CH_AI_N大小为400b,不调用FB块,因此也不生成对应的DB块。
则理论上最少节省的空间计算如下:
4486b+9868b+22*666b-400b=28606b=28.606k
大约为workmemorydata的5%
如果将其他几个类型的驱动块也重新编制,工作量稍小,效果也不如软件组织,主要减少比较多的是workmemorydata,对workmemorycode减小帮助不大。
综上所述,CPU参数的设置简单快速,且对减少workmemorycode尤其有效;软件的调整对减小workmemorydata更为显著。
一般情况workmemorycode的占有率比workmemorydata的占用率高很多,所以在调整时应首先考虑用改变CPU设置的方法。
从潍坊星兴双氧水项目的实际操作来看,只采用改变CPU设置的方法,在增加了15*AI,3*AO,3*PID后,workmemorycode维持在67%。
陈玉辉
2006-10-16
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10510600034 怎样 有效 压缩 CPU4144H 工作 内存