恭喜,你发布的帖子
发布于 2023-02-07 19:20:32
47楼
01234甲6789
01甲34567甲9
01甲34567甲9
……
-----------------------
上述三个扫描周期。甲:表示子程序。数字:表示程序网络号。甲的出现表示在这个网络调用了一次甲子程序。
用人眼看。程序供三个地方调用过甲子程序。应该分配到三片地址。
第一个甲用空间1,
第二个甲用空间2,
第三个甲用空间3,
第四个甲用空间2,
第五个甲用空间3。
但是你说无需知道,是怎么个分配?那你是不是分配成了1;1;2;1;2了?
----------------------------------
我试着理解下你的意思:甲是子程序,第一次条件调用甲出现在第5段,第二第三次扫描分别有两个同样的甲子程序,那么问题来了:这个同一周期内的甲是不同对象使用还是同一个对象使用的子程序呢?比如说是甲是电机控制子程序,有两台电机?还是同一台电机需要在同一个扫描周期执行两次?(不排除有此需求)
好的,如果是不同实例的甲,那不凡甲1甲2表示,分配的当然是不同的索引了。
至于第一次扫描的甲是甲1甲2还是甲3?。。。。。。似乎没这么绕口的。
干脆这样,我再说说索引和DB的关系:
索引就是表示第几个DB的变量,每个子程序都有一个索引作为InOut接口传入作为定位DB用。如果这个索引是不同的就意味着不同的实例(也就是索引变量是不同的变量,index1\index2之类)。如果是同一个索引变量就意味着是同一个实例,也就定位到同一个DB。
索引用哪个数值呢?这个靠索引资源自动分配,从1开始直至资源最大值,完全够用了,比如uint类型。
索引只在第一次调用实例时才会分配,之后不会再次分配,采用之前的数值,也就是保证定位到同一个DB。
请填写推广理由:
分享
只看
楼主