恭喜,你发布的帖子
发布于 2021-11-18 13:09:04
20楼
不同意也没关系,或许只有做了才知道妙处。为了子程序嵌套不影响上层程序的值。因为不使用全局变量,做为4个累加器对于标准化编程来说是挺可贵的,因为一但遇到L不够用,有4个双字可以用还是非常好的。杀猪杀屁股,各有各杀法。您可以按自己的想法做。AC的应用在这里做为一种方式存在而已。
我很久没有使用200Smart了,不过对于累加器来说还是记忆深刻,这个累加器在小型PLC中的作用还是很大的。AC是32bit的,可以按照字节寻址也可以按照字和双字寻址,在和其他数据类型进行运算时比较有优势,不用进行数据类型转换,特别在位串计算时。当然,使用V或者L也能达到目的。至于暂存AC和恢复AC,这是常识。作为公共变量,其他程序也会使用AC,比如在中断里面,你不知道其他使用者会不会使用AC,所以暂存和恢复能够不干扰其他程序的运行,也不干扰本身的运行。
记得以前学单片机时有现场保护和现场恢复,讲的就是这些。
当然,PLC中断不用手动写AC保护和恢复,系统中断时会自动进行保护和恢复,这个是PLC系统对底层的封装所致。
看了楼主的程序示例,有些地方还没有明白。对于子程序指针所指的V区是分配一块空间作为背景数据块索引吗?程序里面的NextIDBPointer和IDBByteIncrease是作下个子程序用吗?如何知道下次扫描就一定会在固定的节点使用固定的V区做背景数据呢?
请填写推广理由:
分享
只看
楼主