登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:西门子自由口通讯。接受完信息再发送开头少个字母

点击:916 回复:4

比如在超级终端发送abcd1234,vb100中显示10个字符,然后abcd1234分别在vb101到vb108中,后2位分别是od和oa了,这个一切正常。
当紧接着在接受中断中,把vb100再发出去的时候,发现每次都少前面一位:bcd1234也就是没有了a,但是在状态表中监控,vb101确实保存着a,每次只要把vb101给个空值就正常了,也就是“空格abcd1234",然后再发送就正常了。这是为什么那?
把代码贴出来,(最基础的,大家不要笑)
主程序:
LD     SM0.1
CALL   子程序:SBR0
子程序:
LD     SM0.0
MOVB   16#09, SMB30
MOVB   16#B0, SMB87
MOVB   16#0A, SMB89
MOVW   5, SMW90
MOVB   50, SMB94
RCV    VB100, 0
ATCH   接收中断:INT0, 23
ENI
接收中断:
LDB=   SMB86, 16#20
S      Q1.0, 1
XMT    VB100, 0
ATCH   发送中断:INT1, 9
CRETI
发送中断:
LD     SM0.0
S      Q0.0, 1
大家费心了!
08-11-30 10:48
建议在发送中断中禁止接收。然后在发送缓冲区的数据
08-11-30 15:16
编段程序直接发送abcd1234,看接收是否正常。
08-11-30 16:13
程序没有问题,可能是超级终端接收问题,换一个串口调试软件看看。
08-11-30 16:25
回复2楼(ye_w):有个问题,发送中断是在发送完毕的情况下,才触发的过程,按道理来说是字符串已经发到超级终端去了,能够避免发送过程中丢失第一位字符的可能吗?
回复3、4楼(dzfa):单独的发送正常,能够发送abcd1234等数据,没有丢失现象,接收也没有问题,在状态表中,vb101确实保存着字母"a",奇怪吧。机器没有问题,试过2台了,都是一样的,串口软件也换过2个,现象依旧。
08-12-01 11:12

工控新闻

更多新闻资讯