关于plc通信问题

分享到:
286
下一篇 >

菜鸟:

比如说我定义RCV VB100,0

接收的数据是放到VB100开始之后的几个寄存器中

还是放到VB101开始之后的几个寄存器中?

大虾:

如果对方发送 16#DD 16#32 16#5D 16#89 16#00 16#1D 16#99,PLC依次接收,接收完毕 VB100=7 VB101= 16#DD VB102= 16#32等等

菜鸟:

如果我设置了结束字符,而发送的数据中含有结束字符,那么就上面的例子,接收完毕,VB100还会是7吗,

之后的7个寄存器中依次都存有我发送的数据吗?

大虾:

如果结束字符是16#89,那么VB100=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)

大虾:

MOVB 16#09, SMB30 波特率是多少?

游民:

9600 注释可能有错误~~

菜鸟:

补充一点 ,在这个程序实验之前,我做了另外一个实验:实验程序和上面的一样,只多加了结束字符0a。

去掉结束字符做的实验后 就出现了上面所说的情况

大虾:

MOVB 16#B0, SMB87 //初始化RCV信息控制字节:

//--RCV使能

//--检测信息结束字符

//--检测空闲线信息条件

SMB89没赋值嘛


你可能感兴趣: 工控菜鸟园 自动化系统 SIMATIC S7-200 PLC
无觅相关文章插件,快速提升流量