发布于 2014-07-25 15:07:57
4楼
大神帮我看下程序哪里有问题:
主程序:
LD SM0.1
///串口0设置///
MOVB 16#09, SMB30 ///8位数据///
///2400波特率///
///自由端口///
///无较检///
MOVB 16#B0, SMB87 //初始化RCV信息控制字节:
//--RCV使能
//--检测信息结束字符
//--检测空闲线信息条件
MOVB 16#FF, SMB88 //设定信息开始字符为FF(开始字符)
MOVW +5, SMW90 //设置空闲线超时为5ms
MOVW 15, SMW92 //设置接收超时为15ms
MOVB 9, SMB94 //设置最大字符数为9
ATCH INT_0:INT0, 23 //串口0接收结束事件
ATCH INT_1:INT1, 9 // 串口0发送结束事件 26 数据发送完毕必须RCV VB100, 0
ENI
RCV VB100, 0
LD M0.2
MOVB VB101, VB111
MOVB VB102, VB112
MOVB VB103, VB113
MOVB VB104, VB114
MOVB VB105, VB115
MOVB VB106, VB116
MOVB VB107, VB117
MOVB VB108, VB118
MOVB VB109, VB119
R SM87.7, 1
RCV VB100, 0
MOVB 9, VB110
XMT VB110, 0
MOVB 16#B0, SMB87
RCV VB100, 0
R M0.2, 1
接收结束中断:
LD SM0.0
S M0.2, 1
MOVB 16#B0, SMB87
RCV VB100, 0
CRETI
发送结束中断:
LD SM0.0
MOVB 16#B0, SMB87
RCV VB100, 0
CRETI
实验中出现的问题:在发送给plc的数据中含有0a字符,送回来的数据就不是我发送的数据内容。
如果数据中不含0a,送回来的数据就是我发送的数据。(给的数据首位为FF,9位)
如果发送的数据首位为FF ,最后一位是0A返回的数据没有问题。(中间的字符不含0a)