“Zaxife”老师在吗? 有问题请教

已锁定

dset

  • 帖子

    217
  • 精华

    1
  • 被关注

    8

论坛等级:游侠

注册时间:2012-10-19

普通 普通 如何晋级?

“Zaxife”老师在吗? 有问题请教

946

4

2013-12-25 16:19:47

quote:以下是引用Zaxife在2013-08-15 03:07:25的发言:
quote:[b]以下是引用心语无量在2013-08-14 16:29:06的发言:
额,我知道用时间写是很慢,用Done试过了,但是就像你说的,万一有一台出现故障,那就会无法正常读取和通信了,所以想问下,你的写入时靠什么去出发的,能说详细点,我刚开始用有很多不明白的地方,麻烦了。


写入靠三个条件(1 Done/2通讯错误/3自定义定时器时间到达)任一满足来触发的。
所有设备都正常时,Done可以最快速触发下一条通讯命令;
通讯质量不高时,通讯错误可以最快剔除不安分的从机减少所有设备扫描周期;
自定义定时器超时可以保证通信响应延时或者数据帧比较长时/或者在上面两种情况都无效时重新启动通讯。

一般来说吧,定义一个连续的存储区域来保存通讯数据,最后一个Word就用来保存通讯状态字。
在通讯初始化时把所有从机的通讯状态字都清零;
在读/写设备时有通讯错误就把数值30写入状态字(只要通讯有错误就把从机推迟到30个周期后再检测是再次通讯上);
每秒钟或者每个通讯扫描周期都去判断余下从机的状态字。如果状态字小于等于0则把当前从机通讯指令写入通讯发送缓存;如果状态字大于0则状态字-1。

这种做法,可以保证16台从机在有15台同时通讯中断的情况下,在29个周期内唯一通讯正常的从机都能得到最短的单机扫描周期响应时间。
比如错误重试定义为30秒,超时定义为250ms,那么最糟糕的1:15的情况下每4秒钟都有连续1.5秒的可连续操作时间而不用每次操作都要等待4秒才能响应操作。在1.5秒内任意读写操作都可以立刻得到响应。
如果15台从机不是同时通讯中断而是间隔2个扫描周期的话,那么每400ms左右都可以得到响应。

这种做法是我在PLC多从机通讯应用中能做到的比较折中的方案了。。。

至于中断方式就没必要了,因为没做过运动控制系统。

------------------------------------------------------------
地址:http://www.ad.siemens.com.cn/club/bbs/post.aspx?b_id=3&a_id=1090498&s_id=0&num=28#anch
----------------------------------------------------------------------------------------
我想问下那个1.5秒怎么实现的? “可以保证16台从机在有15台同时通讯中断的情况下,在29个周期内唯一通讯正常的从机都能得到最短的单机扫描周期响应时间。” 你假设的扫描周期是50ms? 50ms*16=1.5s.可是我觉得通讯错误的话,更新通讯状态字也是在250ms之后吧? 那还是250ms*16呀。除非你是一旦检测到其中一个从站通讯错误,就延时1.5S再重新启动通讯?那还是要从第一个站开始轮询吧? 在29个扫描周期内是怎么判断15个站通讯中断的?
“Zaxife”老师在吗? 有问题请教 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33263条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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