打印

请较RS485问题

[复制链接]
2666|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lilione|  楼主 | 2007-1-8 11:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人搞了一个25个分布端口的RS485的通信系统,有一个问题请较各位.

由于各端口(89C51)分布位置不同,有时候会断电,重新通电,这样的话MAX485就引入了一个错误码到系统上面,如00H,FFH,FCH,我现在是利用通信规定来在各个接收端屏蔽掉这个错误码,但最好的办法应该是每个部件的通电,断电时不会向外发出这个错误码,电路上应该怎么办?



相关帖子

沙发
chunyang| | 2007-1-8 12:07 | 只看该作者

正确的暂态逻辑设计即可解决问题

电路设计时,注意电源上升暂态时令485接口芯片处于接收态即可。

使用特权

评论回复
板凳
daguang72| | 2007-1-8 13:24 | 只看该作者

不要指望电气上不出毛病

首先如chunyang所说,然后再软件上多花功夫,感觉你的软件不健壮,比如说来了一堆乱数据,在里面包含一包正确的数据,如果软件健壮的话应该能在乱数据中把有用的数据包捡出来

使用特权

评论回复
地板
happystar| | 2007-1-8 13:47 | 只看该作者

恩?

我做的时候是把这堆乱数据丢掉,通过时间判断是否一帧完整数据。我一般遇到问题的时候都是从软件方面先找的。保证一个程序的健壮性得考虑到很多意外情况的。

使用特权

评论回复
5
daguang72| | 2007-1-8 14:58 | 只看该作者

宁可错杀一千不能漏掉一个

我将接收到的数据保存起来然后在主循环里挨个字节处理,保证不会漏掉一包有效数据

使用特权

评论回复
6
lilione|  楼主 | 2007-1-10 15:12 | 只看该作者

问 chunyang

1.我已经将MAX485全部都设在接收状态了,还是自然产生的错码.理论上的确解释不通.

2.我现在的方法是在通信上设一个接受的头码,如23H,30H,只有在第一个接收到才算数,

还有好方法吗.

使用特权

评论回复
7
chunyang| | 2007-1-10 16:00 | 只看该作者

解答

1、检查总线静态时是否为逻辑0,不是的话要加偏置,但也可以令主机静态时发送逻辑1,不过不如加硬件偏置可靠。
2、建议参考Modbus协议,我的Blog中有。

使用特权

评论回复
8
daguang72| | 2007-1-11 17:43 | 只看该作者

明显是软件太脆弱了

"2.我现在的方法是在通信上设一个接受的头码,如23H,30H,只有在第一个接收到才算数"

使用特权

评论回复
9
newfree| | 2007-1-12 18:45 | 只看该作者

搭车问问另外一个485相关的问题。

我用一个MAX488,全双工不带控制端的422芯片。
将A,Y短接,B,Z短接,然后接入485网络可行么?

担心那个488的Driver端一直开着会影响485网络。

使用特权

评论回复
10
gfm100| | 2007-1-13 21:31 | 只看该作者

得到

我们也是用头码

使用特权

评论回复
11
lilione|  楼主 | 2007-1-15 10:41 | 只看该作者

谢谢提醒daguang72

"明显是软件太脆弱了"

以前确实考虑不周,在软件上加上一些限制是个方向.

使用特权

评论回复
12
KFYSX| | 2007-2-17 10:55 | 只看该作者

使用好的通信协议,改用简易can总线,通信十分可靠!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

25

帖子

0

粉丝