恭喜,你发布的帖子
发布于 2023-01-30 10:55:15
45楼
我想问一问你个人。造成ac要保存一些数据,是什么原因什么需求的必须?你把ac保存到V等地方就什么事也没有了。不就是改一下地址。谁都不用做保存恢复动作。对全体程序都有利。你也知道自己打扫你上层自己用过的自己保存了就谁都不用再烦此事了。
你试试举例有什么做法一定要AC跨调用回来之后要AC数据是原好的?你一下子举不出。而且应该始终都举不出。无非就是上层或前一个子程序懒,随便把东西放在得心应手的AC里。然后谁都想得心应手,但是被占住了,只能保存恢复。
反过来,从来都没有靠ac保存数据,而是作中间变量用,如:一个字节型整数转浮点数然后输出:
BTI LB0 AC0
ITD AC0 AC0
DTR AC0 LD1
哪会占住AC?(难道最后这个LD也写成AC?就这样就占住AC?那你自己后来的程序又用AC吗?)即使AC有值也是垃圾,可以随便让下一个使用者覆盖。没损失。
谁干的程序要占住AC?例子没人能举出,但是就有见过做保存恢复的。既然没有因为,何必有所以?
想到的用AC的场景有以下几种:
1.跨子程序传递参数;(污染子程序,个人是强烈不建议的,也不建议用V什么的代替,除非真的不得已)
2.类型转换;(推荐,如从byte->float,明显省了几种类型的临时变量)
3.指针;(尤其是做循环时,习惯用AC1,而不用L,临时变量都用变量名访问而不是地址)
-------------------
什么时候“一定要AC跨调用回来之后要AC数据是原好的”
像子程序1有循环,循环体内调用子程序2,子程序2内再有循环,此时1和2各自保存恢复AC;
以仓库为例,仓库有排/列/层,最终到库位,每个库位有多个信号,我习惯以8列为一个分控柜(方便按字节处理与或非),多个分控柜做一个子程序1(动态配置分控柜个数,信号整理等),分控柜内做子程序2(子程序2内处理分控柜内部的信号,如每库、每列)
------------------------
“当两种思维的子程序一齐使用的话矛盾产生了”
同意32L的,如果子程序没有自己保存恢复AC,那就改子程序,如果加密了就去密码再改,如果还不行,就只能先测试子程序有没有用AC,用了哪个,再进行封装处理;
就像modbus库,我想没几个人在调用前后不管三七二十一的保存所有AC,再恢复的吧
请填写推广理由:
分享
只看
楼主