回复:关于modbus轮询子程序数据结构的探讨

已锁定

芳季

西门子1847工业学习平台

  • 帖子

    15511
  • 精华

    101
  • 被关注

    961

论坛等级:至圣

注册时间:2007-08-03

钻石 钻石 如何晋级?

发布于 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也是如此。鱼与熊掌。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有8945条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。