恭喜,你发布的帖子
发布于 2025-09-06 11:35:07
68楼
仅供参考,错漏难免,自己在PLC平台上较少用这种自动分配方式,只是探讨一下,感觉全局变量直接寻址编程是PLC编程的精髓之一,主要还是要把工业现场的人情世故讲清楚就好,每个变量必须有寓意丰富且合适的中文名,绝没有临时变量,后续难说;在其他平台会向这种方式靠拢。
整个程序只有一个全局容器VD7100,核函数占用VB7000---VB7009;VD7100位于main中,它分配给子程序"子程序总容器"的接口空容器,其余的全部自动分配;
V2.8版本L区较小,但是V3.0版本的Smart的子程序的L区有1024个字节,因此子程序"子程序总容器"有足够多的LDxx空容器分配从属于它的子程序(启动停止保持---子程序).
每个子程序除了记录本身 static 的数据外,还记录了下级子程序的数据指针
通过指针可以确认本子程序是否被分配过内存地址,这样不会因为“乱序”或局部扫描引起数据地址错乱的问题,哪怕在 中断 中也能使用,学到了
提到的 “V7700.0的下升沿是天然的回收内存的绝佳标志位,代表可以释放回收分配给它的内存”,这句话怎么理解呢,求指教,确实没看到初始化或者回收动作
这 VB0 起还是断电保持的,当修改了程序后(扩大了 static 的数量),很有可能地址会重新排列,没有初始化或者回收,内存排布可能会有问题(指针≠0,不会重新分配)
分配时能区分 非保持 和 保持 就更好了,firstscan 时直接复位 非保持 区域
另外有个建议,分配核心函数中,使用 AC 前,建议保存 AC 值,在完成后恢复 AC,这样外部可以随意使用,比如外部 循环+AC 调用子程序就能放心使用
请填写推广理由:
分享
只看
楼主