回复:应用探讨—S7-200 自由口通信—发帖整理

  • 帖子

    3917
  • 精华

    20
  • 被关注

    26

论坛等级:奇侠

注册时间:2003-06-16

普通 普通 如何晋级?

发布于 2011-01-31 15:18:32

21楼

quote:以下是引用LaoHuai在2011-01-11 13:42:41的发言:

PLC做主站的时候,不管PLC连接的是单从站还是多从站,主站程序都应该考虑到从站会发生故障,从站故障有两种,一种是有故障,但不影响和主站通讯,另一种是有故障,不能和主站通讯,例如从站掉电,通讯线故障或者从站本身故障导致的不能和主站通讯。
对于后者,主站在发送后,从站是不会回复数据的,主站不能等,而应该结束RCV接收状态,然后发送,那么为什么和如何结束RCV接收状态呢?

一 为什么要结束RCV接收状态呢?

发送指令XMT将数据发送出去就完事,而接收RCV不一样,一次完整成功的RCV过程需要以下步骤:
1 使能位:SM87.7=1/SM187.7=1,执行RCV的时候会检查该位
2 执行RCV
3 等待消息起始条件
4 接收信息
5 等待消息结束条件
6 退出接收状态
RCV指令启动后并不一定就接收消息,如果消息起始条件没有达到,那就一直处于等待接收的状态;
如果消息始终没有开始或者结束,通信口就一直处于接收状态。这时如果尝试执行XMT指令,就不会发送任何消息。
所以要结束接收RCV接收状态后才能执行XMT。

二:如何结束RCV接收状态?

手册上给出6种结束条件:
1.结束字符检测
2.字符间计时器
3.信息计时器
4.最大字符计数
5.校验错误
6.用户终止

方法1:前4种条件在从站发生通讯故障后就失效了,必须要配合用户终止
一般执行XMT后,在发送完成中断里执行RCV,同时启动定时中断或者启动定时器或者执行开始间隔时间BITIM,计时时间到复位使能位SM87.7/SM187.7,同时执行RCV,这样结束RCV指令,比如定时中断里发送:
LD SM0.0
R SM87.7, 1
RCV VB0, 0
S SM87.7, 1

LD SM0.0
DTCH 10

LD SM0.0
XMT VB100, 0

方法2:设置:SMB87=16#9C, SMW90/SMW190=0,SMW92/SMW192=x
执行RCV指令x毫秒后自动结束接收状态。

如果用的是字符中断方式接收信息,那么将中断分离后即可发送
DTCH 8
XMT VB100, 0

很多人说某个从站故障后,整个通讯就断了,那么问题可能就出在这里。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33257条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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