您现在所在的是:

西门子SIEMENS

回帖:4个,阅读:297 [上一页] [1] [下一页]
9034
wanwan8778
文章数:2354
年度积分:50
历史总积分:9034
注册时间:2008/8/2
发站内信
发表于:2014/8/13 23:03:16
#0楼
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的理解是否正确,
希望各位高手指点迷津,

欢迎板砖,
不胜感激!
独学而无友,则孤陋而寡闻。
有问题,是必须要解决的。
Another complicated. Another mystery.
37605
cvlsam 版主
文章数:12429
年度积分:216
历史总积分:37605
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2014/8/14 6:07:33
#1楼
1、Work Memory就是程序运行空间,相当于PC的RAM
2、OB1运行方式是从上往下,自左往右,所以不会同时执行FC的,是一个FC执行完返回OB1后再执行下一个FC的,而FC之间的内存占用是采用共享内存的方式,所以才会有FC中使用变量需要先赋值后使用的原则。

Good Luck~
9034
wanwan8778
文章数:2354
年度积分:50
历史总积分:9034
注册时间:2008/8/2
发站内信
发表于:2014/8/16 20:21:22
#2楼
回复 #1楼 cvlsam
多谢C大指点!
明白了。
看来如果不换成317,只有优化这个程序了
独学而无友,则孤陋而寡闻。
有问题,是必须要解决的。
Another complicated. Another mystery.
7722
w71412659
文章数:1455
年度积分:50
历史总积分:7722
注册时间:2013/5/8
发站内信
2018论坛魅力之星
发表于:2014/8/16 20:36:26
#3楼
就是这个意思。个人建议编程时不要把RAM写的太满,留一点冗余量,至少20%,否则后期维护很麻烦
兽人永不为奴,除非包吃包住!
1207
king_king2
文章数:43
年度积分:50
历史总积分:1207
注册时间:2014/6/9
发站内信
发表于:2014/8/16 23:31:47
#4楼
“同时调用10次,也会占10倍FC100 的 work memory空间”这个会,如果你没有内存释放机制的话?这个可以参考一个系统的内存机制!如如你调用一个线程十次,但是你没有在这个线程结束后释放相关的空间的的,他会另开新的空间!其它线程不会再申请占用这个空间,但是如果你释放了这个线程,其它线程的是可以申请占用这个空间的,当然用久以后会有内存碎片化的现像!

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

46.8003