s7-200 自由口通信错误处理
林慧玲
发布于2014-03-11 15:35
1171
0
标签:
马上注册,免费学习超过100课时视频教程,免费下载海量学习资料
现在我的通信能够一发一收,但是如果发过以后,没有收,程序就等待着接收,这样我的程序就不能再通信了,也就是不能再收了,我应该怎么去设置接收接收呢?
问题补充:
1,采用开始字符接收的时候,我能收发正常,也就是在通信正常的情况下没有问题,加入有一个仪表没有给我回应,我的程序一直在等待接收,下一次的发送也不能进行。
2,采用空闲时间作为开始接受条件时,程序不能发送的现象能解决,但是它把我不应该接收的信息也接收过来了,当然我希望的是能检测到开时字符的时候接收。
3,当我把空闲线和开始字符结合时,程序就不能接受信息。
我个人认为是3的情况是在空闲线一直在检测,所以数据都不再接收了,我是在发送完以后,使用发送完成中断,在中断中接收数据。
这个问题在论坛上看了好多,但是自己好像还有一些没有考虑到,是不是我的空闲线时间设置的不对,还是我空闲线和开始字符两个不能在一起混合使用。
我的接收条件是超时和大字符数
佳答案
自由口接受信息控制字节定义:
端口0应用于smb87,各位意义如下
sm87.7=0禁止接收
=1允许接收
sm87.6=0不使用smb88中信息作为起始字符检测
=1使用smb88中信息作为起始字符检测
sm87.5=0不使用smb89中信息作为结束字符检测
=1使用smb89中信息作为结束字符检测
sm87.4=0不使用smw90中数值【单位是ms】作为空闲检测
=1使用smw90中数值【单位是ms】作为空闲检测
sm87.3=0当sm87.2=1时,该位为0设定接收超时时间是字符间计时
=1当sm87.2=1时,该位为1设定接收超时时间是信息间计时
sm87.2=0不使用smw92的值作为定时器时间值来结束信息接收
=1使用smw92的值作为定时器时间值来结束信息接收
sm87.1=0不使用断线检测开始信息接收
=1使用断线检测开始信息接收
sm87.0该位固定为0
根据你问题的描述,你可以选择设定sm87.3=0sm87.2=1作为字符间计时器或者sm87.3=1sm87.2=1作为信息间计时器来结束信息的接收;当然得看plc是和什么设备通信来确定使用哪种方式结束信息接收!