关于plc通信的问题

分享到:
319
下一篇 >

菜鸟提问:

在做plc实验的时候遇到这样几个问题:实验内容有2部分:1 串口1接收数据(9个字节、规定了起始位和结束位的字符),收到数据然后串口0发回数据,同时串口1发回数据(内容和收到的相同);2 串口0接收数据,然后串口1发回数据。串口0没有问题,问题出在串口1上,(1)如果我是发送间隔20ms的9个字节的数据有时候回自动停止发回数据(但还在向串口1发送数据)。(2)首先我发送一个有起始、结束位的9个字节的数据(中间不包含结束位字节)串口1可以收到数据,但是发送的是:有起始位,无结束位9字节;有起始位、结束位、小于9字节;有起始位,无结束位9字节数据;以上三种数据时,都收不到串口1发回的信息,然后我再发送符合规定的9字节信息,此时收不到串口1的信息,要将plc手动停止再运行,或者向串口0发送符合规定的数据后,这个时候向串口1发送9位有起始位结束位数据,才能收到串口1发回来的信息。

问题描述完了,按理来说串口1收到错误数据之后再接收到正确的数据,应该会发回数据。请各路大神帮忙看看问题出在哪里,如过我有描述不清楚的地方请大神们提出来,我在后面补充。

斑竹:

看了十几遍,不明白你说的。

菜鸟:

程序设定的是plc接收(合法的格式)数据会回个信息,但是plc接收那三种数据 没有回应,之后再向plc发送正确格式的数据还是没有反应,程序里面没有“收到(非法格式数据)禁止接收”之类的语句。

斑竹:

什么叫合法的格式?

菜鸟:

就是设定的有起始位 结束位 还有数据长度,合法的格式 这么叫应该没错吧~~

斑竹:

不合法的格式就是没设定起始位 结束位 还有数据长度,是这样的吗?

200PLC里,你要设定SMB30/SMB130呀

你是怎么做到发送不合法的格式的呢?

菜鸟:

是这样的,程序 我已经设定了格式,就是做实验故意发送不符合格式的数据,然后就没反应了,之后再发送合法格式的数据,plc还是没有反应。按理说给了合法数据会有反应吧~

斑竹:

发送合法的数据格式,仅仅是通讯双方的字符格式一样了,难道通讯就能成功了?不是这样的。

还是认真检查程序吧。

菜鸟:

哦 好的,我还想问个问题,程序设定了起始位ff和结束位0a,还有*大接收字节为7(以下是接收数据发生的情况)

如果数据中间谋个字节是0a,plc会判定这一位为结束位吗?(数据长度为7)

如果数据中间某位是ff,plc会判定这一位是起始位吗?(数据长度为7)

如果数据超过*大接收字节,多余的会舍弃吗?(有起始位和结束位)

如果给的数据中长度为7,但是**位不是ff,*后一位不是0a,plc会怎么接收?

斑竹:

1 应该是起始字符FF和结束字符0A,一个字符有很多位,有起始位 数据位 校验位 停止位。

2 如果结束字符是0A,那么在接收到**个0A的时候,RCV将结束。

3 如果起始字符是FF,一帧数据里有很多FF,那么只**个做信息的开始标志

4 如果数据达到设定的*大字符数,那么接收将终止,接收结束的条件有3种,达到任何一种,接收都会结束。

5 如果规定了数据开始的条件是起始字符,但数据里又没有起始字符(比如FF),那么PLC会一直等,直到等到起始字符,或者人为终止接收。

菜鸟:

针对大神回答的第2条,我如果想接收带有0A(数据中有一个字节或者多个字节含有0A)的数据,那就得 不设置结束字符(0A带表所有其他的字符),而进行手动确认*后一个字节是否为我确定的结束字符咯?

斑竹:

手动确认是什么意思?

像你刚才说的情况可以用超时结束RCV.

菜鸟:

就是把vb109与oA比较

超时结束RCV怎么用??超时这个概念不懂

斑竹:

这个程序是定义了开始和结束字符,如果你用串口发送02 F2 FF FF FF FF 0A 0A 0A 0A,那么将返回FF FF FF FF 0A 。

说明**个FF是起始字符,**个0A是结束字符。

关于超时,你还是看手册或者软件里的帮助吧,那介绍的又详细又**。


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