回复:S7通信探讨

已锁定

宁超

  • 帖子

    1009
  • 精华

    39
  • 被关注

    370

论坛等级:至圣

注册时间:2012-12-11

普通 普通 如何晋级?

发布于 2022-10-09 20:43:39

10楼

展开查看
以下是引用威师爷在2022-10-09 16:39:46的发言 >9楼

使用DONE 与ERR触发有一点类似于MODBUS 通讯的方式,但是不知道为什么官方的S7通讯例子基本上都是使用CPU的时钟存储器来触发例如10HZ或者0.5HZ这样的频率来执行REQ。


另外提到的带宽与通讯REQ的请求间隔问题,这一点非常与感触,的确是PC在线连接时会大大占用带宽,这个时候S7通讯会卡死,S7通讯间隔时间越短 越明显,那么就需要合理的规划S7 REQ的请求应该是怎么样的,所以才想到是不是应该与MODBUS指令那样使用DONE/ERR作为条件更加合适。

以下是引用宁超在2022-10-09 16:16:40的发言 >8楼:我的理解:S7  G...

引用8楼详细内容:

我的理解:S7  GET 和PUT都是异步通讯,一般会延迟一段时间周期才会收到Done和Error信号,周期受限于带宽,CPU扫描速度,通讯数据量,连接个数等,有些是不变量,有些是变量,比如某些操作可能占用带宽,比如监视多个程序,扫描某些设备等,下载,启用某些组件读写控制器数据都可能导致这个时间增大,我还见过一些资源分配不合理导致S7通讯缓慢的问题,

只要触发控制参数REQ的时间间隔足够长,也就是牺牲实时性,是没有问题的。但是用Done和Error来触发下一次请求就可以优化这个问题,Done和Error也可能由于编程逻辑问题,导致REQ不再触发的编程bug也时常听闻。而定时触发就像永不停歇的机器,有安全感。

你这不是轮询的概念,只是触发控制参数REQ的另一种方式,轮询是:

1 有超过一次Get Put总量的数据需要通讯,可能需要N次

2 只调用一次Get Put功能块

3 通过动态写入,指定第1次,第2次发送接收参数“ADDR ”  “SD”

这样做好处是节省了通讯任务资源,但是牺牲的是实时性。这才是轮询

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有10590条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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