打印

RS485总线,笔记本通管理机通不了

[复制链接]
2362|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jianghehupo|  楼主 | 2012-11-5 12:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
mohanwei| | 2012-11-5 12:45 | 只看该作者
接地?你的笔记本是不是电池供电没插交流电源?

使用特权

评论回复
板凳
jianghehupo|  楼主 | 2012-11-5 13:25 | 只看该作者
对,笔记本式用电池供电的。这个有什么影响?

使用特权

评论回复
地板
mohanwei| | 2012-11-5 13:57 | 只看该作者
485有共模电压的问题,如果两边地电位不等,轻则无法通信,重则烧毁设备,所以很多场合会把RS485驱动器单独用一个隔离的小DC/DC模块供电,实现“浮地”,避开共模电压。
笔记本不接交流电源,就是一个浮地系统。

使用特权

评论回复
5
XK6881| | 2012-11-5 14:43 | 只看该作者
RS 485分为十,一,但一般通信线均受长度影响,如光纤是传输信号最远的,可到几百公里,五类线的话一般在100米以内,并且一般要加屏蔽。

使用特权

评论回复
6
jianghehupo|  楼主 | 2012-11-5 15:07 | 只看该作者
本帖最后由 jianghehupo 于 2012-11-5 15:09 编辑

通讯管理机的485信号已经是隔离的了,虽然没有用dcdc,但是在开关电源上直接出来一路隔离的5V。
另外,开关电源上也没有使用接地线,只有L,N两根线输入进来。

使用特权

评论回复
7
mohanwei| | 2012-11-5 15:31 | 只看该作者
你没关注到开关电源里的Y电容……
还有即使你的通信管理机用干电池供电,它对外的很多接口都有可能提供了多个地环路……

使用特权

评论回复
8
jianghehupo|  楼主 | 2012-11-5 15:42 | 只看该作者
开关电源根本就没有Y电容。

我加一个dcdc就可以了吗?

使用特权

评论回复
9
mohanwei| | 2012-11-5 15:55 | 只看该作者
RS485用隔离电源单独供电应该就可以了。
但还要注意芯片是否是正品……这个不用多说
以及你的通信管理机处理速度……目前大部分MCU都是用软件方式来切换RS485收发方向的。这个切换速度有时候就非常重要。因为有一些终端设备响应时间会非常的快,发命令给它,十几us就开始应答数据了,如果主机切换速度不够快就会造成包头丢失,对外表现也是“通信不上”。

使用特权

评论回复
10
jianghehupo|  楼主 | 2012-11-5 16:12 | 只看该作者
芯片原来用的是max485,后来换过75176照样不行。

通讯管理机1s钟发一次数据,收发切换时靠硬件自动完成的。

使用特权

评论回复
11
mohanwei| | 2012-11-5 16:30 | 只看该作者
是你的MCU自身带RS485收发切换,还是用TXD加反相电路驱动RS485的2、3引脚?如果是后者,就必须改掉了
阻容延时切换也不可取,碰到响应速度快一点的设备就不行了。

使用特权

评论回复
12
jianghehupo|  楼主 | 2012-11-5 16:35 | 只看该作者
本帖最后由 jianghehupo 于 2012-11-5 16:39 编辑

是TXD加三极管反向

从设备的反应速度不会太快吧,主站发送完请求帧马上进入到接受状态。肯定不是这个造成的,因为没有加那150米的电缆的时候试过,是能通上的。

使用特权

评论回复
13
mohanwei| | 2012-11-5 17:47 | 只看该作者
晕……TXD加三极管反相,控制原理是:平时串口空闲时TXD为高(包括了发送'1'),反相后使RS485处于接收状态,所以接收是完全没问题的……
发送数据时:
发送'0',TXD==0,反相后为高,485芯片切换为发送状态,把'0'发送出去——也没问题
发送'1',TXD==1,反相后为低,485芯片切换为接收状态……那如何把'1'发送出去呢?只能靠上拉下拉电阻给AB线的偏置了——问题的根源就在这里。电阻的驱动能力很有限,如果近距离、低波特率、只有一个负载,可能还能正常工作。远距离、高波特率、多负载时就抓瞎了。
我已经给客户解决过很多次这种问题……一开始都说我的传输不行,最终却都是这个问题:lol

使用特权

评论回复
14
elec921| | 2012-11-5 20:15 | 只看该作者
ls说的很有道理。

使用特权

评论回复
15
jianghehupo|  楼主 | 2012-11-6 09:12 | 只看该作者
我所说的都是针对主设备的,从设备是别人的,我无法知道里边是什么原理,用的什么芯片。
跟着 mohanwei的思路,假如发送有问题的话,从设备应该是接受不到正常的数据。刚才拿笔记本去现场监控了一下,请求正常,从设备响应正常,从主设备的指示灯来看也接受到了数据,但就是不认为接收的的数据合法。

使用特权

评论回复
16
红金龙吸味| | 2012-11-6 10:12 | 只看该作者
刚才拿笔记本去现场监控了一下,请求正常,从设备响应正常,从主设备的指示灯来看也接受到了数据,但就是不认为接收的的数据合法。

啥意思?从设备都响应了,还不认为接收的数据合法?响应的是错误帧么?

使用特权

评论回复
17
mohanwei| | 2012-11-6 10:16 | 只看该作者
先根据通信协议演算一下,确定命令和应答是否每个bit都正确,一般协议带校验的话错1个bit都不行的;
这个从设备时新增的?通信机以前有没有接过这个设备?是否升级了程序才出的新问题?
你监听的时候最好用逻辑分析仪,看看设备收完最后一个字节,间隔多少时间就马上冒出应答数据。这个间隔时间太短的话就要怀疑你的通信机软件切换收发状态太慢了

使用特权

评论回复
18
HORSE7812| | 2012-11-6 11:37 | 只看该作者
mark

使用特权

评论回复
19
jianghehupo|  楼主 | 2012-11-6 12:48 | 只看该作者
非常感谢mohanwei
现在通上了,问题出在通讯管理机的程序上,其实不能叫通讯管理机,只是我拿一个电力仪表改装的一个主站,把称重的结果通过rs485传上来,然后显示在数码管上。
用的是stc的单片机,串口没有CTI中断,所以就用Timer0模拟了一个CTI中断,一开始用的是9600的波特率,后来通不上就把波特率降低到了2400,但就在这个过程中没有把CTI的中断时间相应加长,导致产生了这种现象。

使用特权

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

本版积分规则

7

主题

86

帖子

1

粉丝