回复:我想修正一下一个公认的概念。我有新的解释。

yanxiao

版主

  • 帖子

    12204
  • 精华

    47
  • 被关注

    189

论坛等级:至圣

注册时间:2003-06-06

钻石 钻石 如何晋级?

发布于 2016-10-17 11:12:54

30楼

展开查看
以下是引用芳季在2016-10-17 10:32:34的发言 >

没有进一步的了。m0.0 m0.1是用于调用msg。我仅仅是想说:第三第四种情况就会报6,就会认为是同时调用。对于第二种情况,时下惯用30的朋友,觉得这是很多功能指令不允许的。例如,无法在一个周期内变更脉冲的频率两次。(我仅针对那些特定指令的功能障碍,并不代表30不能完成)

而后面说到的done位的事情,是寄生出来讨论的。眼下我也有兴趣,所以就一起讨论了。

为何我那么注意这个牛角尖?争取时间。

可能Z他都没有用过这个msg指令做什么。怎样可以把通讯时间安排得滴水不漏但是又不重叠控制。这是一种我追求的状态。

常常看见有帖说,用sm0.5 加个上升缘去触发些什么。那么到底这个时间能不能再缩减呢?减到最后是什么事件阻止了时间的继续缩减?这里有一个什么信号说明已经是最快了的。过了最快的时候就可以此时此刻驱动下一个msg任务了,那么这两个指令之间就没有间隙,通讯口没有休闲时间。

可以引申到另外一个话题:假如当前是仅有一个msg指令,连续不间断地读取伺服当前位置值。我们研究一下这个值什么时刻是最新的?什么时候你要是读了,正好msg指令正在写向这地址?什么时候读了,这个值怎么还是上一次的值?

我只是走向领域的边缘。这条路当然同道的人少。

实际m0.0、m0.1是为MSG服务的。就说MSG吧。


可以做个实验。当启动一次发送请求后,故意延长扫描时间,延长至1000ms。modbus从站一定有返回了,CPU也一定能收到。那就不断地访问MSG,遇到错误6,不管。直至1000ms结束。这期间,会有非6的情况吗?能够报数据已收到吗?


1、如果不能,一直是6错误,表示MSG不能再次调用是刚性的,就是不允许。

2、如果有非6的情况,甚至可以成功接收到返回数据,表示第二次调用报错误,的确是“内部正忙”。


当一个请求发送出去,后续的MSG调用,是发触发它处理,在这个请求未完成前,又发一个请求,不管这个请求是否在同一扫描周期发的,都是属于逻辑错误,乱来。不在讨论范围。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33277条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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