恭喜,你发布的帖子
发布于 2023-07-24 09:33:58
3楼
能理解。并且也理解到,这是数据空间转移成程序空间及扫描周期。
程序空间;数据空间;扫描周期,三者,有的情况是可以互相转移的。
明显的一个例子,连续n个位中on的个数,这个程序。你把一段程序
LD XXX
INC VD100
连续抄写n次,并改变每次的地址。那么这个程序plc运行周期是最短的。但是程序n×m那么长。
换做for循环计算on个数,程序只有一页面,而且无论n多大都是这么多程序。但是,同样要数n那么多次的工作量,却连带处理了为了for而产生的k条指令,程序执行完之后执行了n×k+n×m这么多的工作。
这就是程序空间与扫描周期转移。就看你觉得值不值。
还有一个例子。crc校验,可以查表或者按公式算。查表需要大量的数据空间。公式需要大量的程序空间和运行时间。看看又怎么选?
让你思考一个问题。做一个子程序要求可以作为任何子程序调用的计时器。你会选择计时单位是毫秒还是秒。考虑通用性。
……(思考中)
……(思考中…)
……(思考中……)
为了通用,可能计时时间要0到9999秒。用毫秒单位9999000,你必须用D装载设定值。用秒单位,你可以用W装载设定值。所以你只能取其一。但是又想保住计时精度,然后你是否考虑用一个触点去切换时间单位?如果回答:是。那么这就是程序空间换取数据空间。如果回答:否。那么你一定是选毫秒的。结果牺牲了数据空间,留住了程序空间。
间接寻址的16#0800和后面的0000也是如此。鱼与熊掌。
请填写推广理由:
分享
只看
楼主