登录
首页 串口通信 串口通信
回帖 发帖
正文

主题:一个自定义串口通讯的奇怪现象

点击:1365 回复:12

单片机与台达PLC(DVP14SS211R)联机进行简单数据交换,RS232通讯,单片机主,PLC从。规定单片机每次发三个相同字节数据,PLC端使用RS指令接收到这三个字节数据后输出一个Y信号并且返回给单片机相同的三个字节(例如单片机发H55 H55 H55,PLC返回给单片机H55 H55 H55)。同样的,单片机发H64 H73 H82 H91 H65 H41 H63 H72以上数据三个字节时,PLC端输出信号返回数据都没有问题。但当单片机发送H81 H81 H81三个字节时,PLC端偶尔才有输出信号以及返回数据。
考虑到PLC程序中以上数据接收处理方式一样(使用同一条RS指令接收),首先怀疑单片机发送端有问题,于是单独监控单片机串口,串口出来的数据每次都是H81 H81 H81三个字节,没有任何问题。最后监控PLC中接收到的数据,发现一旦将PLC与单片机连接,单片机发送H81 H81 H81,PLC接收H01 H01  H01,偶尔才会正确接收到H81 H81 H81。
开发单片机的同事当然认为是我的PLC程序接收有问题。当时急着发货,采用其他办法解决了问题,没有了“现场”也就没有机会深究找出问题的根源。
为什么会出现以上描述的这个问题,单片机发送数据,其他9个数据没有一点问题,唯独发送H81这个字节时,PLC接收端99%会接收成H01,大概只有1%机会正确。
最后修改:2018/1/14 17:37:24
18-01-11 10:24

引用 qjj740210 在 2018/1/11 10:24:19 发言【内容省略】

通信参数怎么设置的?数据位、停止位、校验方式、波特率等!
数据位不能设置为7位哦!
18-01-11 12:31

引用 qjj740210 在 2018/1/11 10:24:19 发言【内容省略】

或者你可以把PLC通信部分程序、单片机通信部分程序贴出来!我可以帮你看看!
18-01-11 12:32
通讯口说明主题帖有误,应该是RS232口通讯,不是RS485。也就是说MCU与PLC之间RS2332连接,通讯参数:9600  8  无   1。
我不懂单片机,平时不关心不保留程序,现在无法提供单片机程序(写的人离职),PLC程序我有。我总觉得研究单片机程序逻辑或者对串口通讯有研究,对这个问题可能有建设性建议。
PLC通讯交换数据梯形图部分如下:
附件 QQ截图20180111141011.jpg
我现在无法相信,同样这个逻辑机制,为什么10个数据有9个正确,唯独H81这一个数据有问题,并且不是100%问题,偶有一次也能接收正确?
M10为一个方波脉冲,正周PLC完成接收,负周PLC完成发送(返回给单片机同样数据)。
最后修改:2018/1/11 14:16:37
18-01-11 14:07

引用 qjj740210 在 2018/1/11 14:07:10 发言【内容省略】

M10怎么控制的?!
18-01-11 14:25
还有通信初始化的一些参数你没贴出来!
18-01-11 14:26
PLC程序我们可以讨论。
附件 初始化.jpg
图1
附件 1.jpg
附件 2.jpg
附件 3.jpg
附件 4.jpg
附件 5.jpg
图1为上电延时后通讯初始化,其他的都是与通讯RS指令有关的逻辑。
最后修改:2018/1/11 16:23:03
18-01-11 16:19
时间久了,刚看了下,当时改来改去,不知道为什么写成了这个样子
附件 原.jpg
实质就是这样:
附件 现.jpg
18-01-11 16:31
我给你一个台达PLC和单片机自定义协议的串口通信例子吧!相互学习和研究吧!
附件:
[本地下载]
18-01-12 07:48
谢谢!
表情
开发单片机的同事如果还在,我想我们一起探讨有可能找出这个问题的真正原因。我不懂单片机,无法从宏观大局角度考虑。囿于PLC方面,又老是想,其他数据接收没有问题,为什么H81接收就会有问题?难道串口发送区别数据?表情
18-01-12 09:01

上一页下一页

工控新闻

更多新闻资讯