登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:C大或各位高手帮忙指点一下

点击:309 回复:4

C大及各位高手:
  最近有一个315-2PN/DP,某人做了个程序,反映work memory 不够用。
用TIA12编的程,显示work memory占用比例为120%。
经查一些资料得知,
load memory 相当于 MMC卡 memory
work memory 相当于内存
retentive memory 保持存储器 128kb
程序从Load Memory拷贝到Work Memory后被执行。
我的问题是,
1.work memory实际是程序运算所占的存储空间吗?
如果优化的话,只能优化编写的程序块了。
2.编写FC100-FC109 10个(大体)相同的程序块,同时在OB1调用,占用系统work memory 的总大小相当于 单个调用FC100时 占用work memory空间是10倍。(这些的可能有些绕嘴,但是不太容易表达)
如果编写一个FC100,同时调用10次,也会占10倍FC100 的 work memory空间?
3.如果第2个问题的答案为“YES”,那是不是可以考虑 一些“释放内存”的方法?
比如说,需要时,调用FC100,保证最多FC100调用5次,这样可以节省掉一半的内存空间。
不知我对这些memory的理解是否正确,
希望各位高手指点迷津,
欢迎板砖,
不胜感激!
14-08-13 23:03
1、Work Memory就是程序运行空间,相当于PC的RAM
2、OB1运行方式是从上往下,自左往右,所以不会同时执行FC的,是一个FC执行完返回OB1后再执行下一个FC的,而FC之间的内存占用是采用共享内存的方式,所以才会有FC中使用变量需要先赋值后使用的原则。
Good Luck~
14-08-14 06:07
多谢C大指点!
明白了。
看来如果不换成317,只有优化这个程序了
14-08-16 20:21
就是这个意思。个人建议编程时不要把RAM写的太满,留一点冗余量,至少20%,否则后期维护很麻烦
14-08-16 20:36
“同时调用10次,也会占10倍FC100 的 work memory空间”这个会,如果你没有内存释放机制的话?这个可以参考一个系统的内存机制!如如你调用一个线程十次,但是你没有在这个线程结束后释放相关的空间的的,他会另开新的空间!其它线程不会再申请占用这个空间,但是如果你释放了这个线程,其它线程的是可以申请占用这个空间的,当然用久以后会有内存碎片化的现像!
14-08-16 23:31

工控新闻

更多新闻资讯