回复:到底子程序使用AC的前后是否要保存和恢复原有的AC值?

已锁定

芳季

西门子1847工业学习平台

  • 帖子

    15538
  • 精华

    101
  • 被关注

    963

论坛等级:至圣

注册时间:2007-08-03

钻石 钻石 如何晋级?

发布于 2023-01-22 21:58:45

33楼

展开查看
以下是引用xiatianyun在2023-01-22 20:40:20的发言 >

大过年的没什么事,除了做饭吃饭。

两种都是规则。

如果采用第二种,看似很合理很理性很懂得自律,举个例子,如果父程序先后调用了两个子程序,调用前和调用后父程序分别做了AC保存和恢复,那就是先后两次了,在两个子程序间夹杂着一些关于AC的操作,影响对程序理解的顺畅度了。比起直接两个子程序调用的做法舒服程度就大打折扣了。

第一种,从父程序角度看很顺畅。唯一的要求是子程序自己“打扫卫生”和原样恢复。

同样是保存和恢复,代码一个放在父程序一个放在子程序,不多也不少。但第一种流畅第二种费劲。

唯一的分歧恐怕是芳季前辈说的同一套系统存在这两种规则编写的程序如何处理了。如果是我,我遵循第一种规则,如果有子程序代码就修改子程序实现自己打扫AC和恢复。如果没有代码?。。。我知道它子程序用了什么AC?只好封装再出发了:AC0-AC3都封装在新的子程序里面。

----------------------------------------------------------------------

没觉得AC 有什么不好的,虽然一样可以使用V来替代。不过在涉及数据类型转换之类的我一般先考虑AC。

我想问一问你个人。造成ac要保存一些数据,是什么原因什么需求的必须?你把ac保存到V等地方就什么事也没有了。不就是改一下地址。谁都不用做保存恢复动作。对全体程序都有利。你也知道自己打扫你上层自己用过的自己保存了就谁都不用再烦此事了。


你试试举例有什么做法一定要AC跨调用回来之后要AC数据是原好的?你一下子举不出。而且应该始终都举不出。无非就是上层或前一个子程序懒,随便把东西放在得心应手的AC里。然后谁都想得心应手,但是被占住了,只能保存恢复。


反过来,从来都没有靠ac保存数据,而是作中间变量用,如:一个字节型整数转浮点数然后输出:


BTI LB0 AC0


ITD AC0 AC0  


DTR AC0 LD1


哪会占住AC?(难道最后这个LD也写成AC?就这样就占住AC?那你自己后来的程序又用AC吗?)即使AC有值也是垃圾,可以随便让下一个使用者覆盖。没损失。


谁干的程序要占住AC?例子没人能举出,但是就有见过做保存恢复的。既然没有因为,何必有所以?



评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有9026条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。