[程序源码] RS485硬件电路设计中需注意的问题

[复制链接]
15209|280
 楼主 | 2018-1-27 12:20 | 显示全部楼层 |阅读模式
本帖最后由 山东电子小菜鸟 于 2018-10-9 19:30 编辑

RS485硬件电路设计中需注意的问题
1 问题的提出
在工业控制及测量领域较为常用的网络之一就是物理层采用RS-485通信接口所组成的工控设备网络。这种通信接口可以十分方便地将许多设备组成一个控制网络。从目前解决单片机之间中长距离通信的诸多方案分析来看,RS-485总线通信模式由于具有结构简单、价格低廉、通信距离和数据传输速率适当等特点而被广泛应用于仪器仪表、智能化传感器集散控制、楼宇控制、监控报警等领域。但RS485总线存在自适应、自保护功能脆弱等缺点,如不注意一些细节的处理,常出现通信失败甚至系统瘫痪等故障,因此提高RS-485总线运行可靠性至关重要。
2 硬件电路设计中需注意的问题(隔离完整原理图)

游客,如果您要查看本帖隐藏内容请回复

   图2数据通信程序基本流程图

20.jpg


游客,如果您要查看本帖隐藏内容请回复

  单片机通信节点的程序基本上可以分为6个主要部分,分别为预定义部分、初始化部分、主程序部分、设备状态检测部分、帧接收部分和帧发送部分。预定义部分主要定义了通信中使用的握手信号,用于保存设备信息的缓冲区和保存本节点设备号的变量。设备状态检测部分应能在程序初始化后,当硬件发生故障时,作出相应的反应。主程序部分应能接收命令帧,并根据命令的内容作出相应的回应。为缩短篇幅,这里仅给出主程序部分的代码。如下所示:

  /*主程序流程*/
  while(1){         //主循环
    if(recv_cmd(&type)==0)//发生帧错误或帧地址与本机
                //地址不符,丢弃当前帧后返回
  continue;
  switch(type){
    case__ACTIVE_:    //主机询问从机是否存在
      send_data(__OK_, 0,dbuf);//发送应答信息
      break;
    case__GETDATA_:
      len = strlen(dbuf);
      send_data(__STATUS_, len,dbuf);//发送状态信息
        break;
    default:
        break;    //命令类型错误,丢弃当前帧后返回
    }
  }

4 结论

  RS-485由于使用了差分电平传输信号,传输距离比RS-232更长,最多可以达到3000 m,因此很适合工业环境下的应用。但与CAN总线等更为先进的现场工业总线相比,其处理错误的能力还稍显逊色,所以在软件部分还需要进行特别的设计,以避免数据错误等情况发生。另外,系统的数据冗余量较大,对于速度要求高的应用场所不适宜用RS-485总线。虽然RS-485总线存在一些缺点,但由于它的线路设计简单、价格低廉、控制方便,只要处理好细节,在某些工程应用中仍然能发挥良好的作用。总之,解决可靠性的关键在于工程开始施工前就要全盘考虑可采取的措施,这样才能从根本上解决问题,而不要等到工程后期再去亡羊补牢。

评论

callhgd 2018-11-19 17:15 回复TA
学习,学习,正在搞工控这块。 
山东电子小菜鸟 2018-10-9 19:23 回复TA
@574997859 :在是大学课本中的图片,目的是为了批判大学教育 
574997859 2018-5-31 19:46 回复TA
@dukedz :同理!!!!搞不懂设计的人在想什么东西。 
dukedz 2018-5-15 07:58 回复TA
@qinlu123 :RS485 通常最快是 10Mbps,而且很多大廠很久之前都出到 100Mbps 的接口芯片了,CAN 肯定比不過 485。 
山东电子小菜鸟 2018-5-14 17:20 回复TA
感谢各位的意见,上文所述只是给提供一个雏形,如用在产品上还需仔细斟酌 
qinlu123 2018-5-14 16:53 回复TA
@dukedz :CAN怎么可能比485慢 
fzyuan 2018-5-7 12:33 回复TA
@dukedz :对楼主这个电路,9600bps能工作就不错了。而其实可能是一个字节的数据都无法送出。 
dukedz 2018-5-4 17:09 回复TA
“对于速度要求高的应用场所不适宜用RS-485总线”? 我想說的是,我上一家做 7 軸機械臂的公司就是因爲 CAN 太慢不夠用才用的 RS485. 
dukedz 2018-5-4 17:04 回复TA
最看不慣電源沒有隔離卻加光耦的電路,簡直多餘。。。 
| 2018-1-29 10:40 | 显示全部楼层
看看

使用特权

评论回复
| 2018-1-29 11:05 | 显示全部楼层
mark

使用特权

评论回复
| 2018-1-30 07:58 | 显示全部楼层
正想学习485方面的知识

使用特权

评论回复
| 2018-1-30 08:12 | 显示全部楼层
谢谢!!!!!!!!!!!!

使用特权

评论回复
| 2018-1-30 09:59 | 显示全部楼层
学习!

使用特权

评论回复
| 2018-1-30 14:46 | 显示全部楼层

使用特权

评论回复
| 2018-1-30 17:37 | 显示全部楼层
注意什么

使用特权

评论回复
| 2018-1-30 17:39 | 显示全部楼层
你SM712都没接对,51我们先不说,就拿你这个485电路,拿到现场,节点一多包死机,给学生开发板还可以玩几下。也没有交流高压防护。

使用特权

评论回复
| 2018-1-31 08:26 | 显示全部楼层
学习一下

使用特权

评论回复
 楼主 | 2018-1-31 08:41 | 显示全部楼层
574997859 发表于 2018-1-30 17:39
你SM712都没接对,51我们先不说,就拿你这个485电路,拿到现场,节点一多包死机,给学生开发板还可以玩几下 ...

感谢您的回复,您把您的完美的电路图发出来 让大家都学习下,就更加完美了

使用特权

评论回复
| 2018-1-31 09:03 | 显示全部楼层
看看先

使用特权

评论回复
| 2018-1-31 09:06 | 显示全部楼层
574997859 发表于 2018-1-30 17:39
你SM712都没接对,51我们先不说,就拿你这个485电路,拿到现场,节点一多包死机,给学生开发板还可以玩几下 ...

以你之见应该怎么接?

使用特权

评论回复
| 2018-1-31 14:48 | 显示全部楼层
回复查看,学习学习!

使用特权

评论回复
| 2018-2-1 15:31 | 显示全部楼层
六画玄辉 发表于 2018-1-31 09:06
以你之见应该怎么接?

这个百度一下一大堆。

使用特权

评论回复
| 2018-2-1 15:34 | 显示全部楼层
山东电子小菜鸟 发表于 2018-1-31 08:41
感谢您的回复,您把您的完美的电路图发出来 让大家都学习下,就更加完美了 ...

SM712改为大功率的TVS,AB之间,AB各自对地都要接,共三个TVS。同时对外串联小功率PPTC,当你接入交流电时,TVS吸收电流,电流增大,导致PPTC断开。一般情况下,TVS也能够抑制你总线上的瞬态电压。

使用特权

评论回复

评论

574997859 2018-7-27 10:32 回复TA
@六画玄辉 :那你可要用隔离电源啊。这样就可以真正意义上的隔离。不知你的项目总线上可以搭多少个设备。还有抗干扰程度。 
六画玄辉 2018-7-27 09:37 回复TA
加了光耦却没有做到隔离倒是真的,隔离应该是全部隔离,不是单点隔离电源正极,地也是要隔离的。在特殊环境下用空气放电管比较多。 
六画玄辉 2018-7-27 09:32 回复TA
我不清楚你说的sm712没接对,难道sm712不是这样接???sm712加PTC是我一直在用的,对于普通非特殊环境下足够了。 
| 2018-2-1 16:11 | 显示全部楼层
谢谢分享

使用特权

评论回复
| 2018-2-1 17:09 | 显示全部楼层
看看先~~~

使用特权

评论回复
| 2018-2-1 17:19 | 显示全部楼层

正想学习485方面的知识

使用特权

评论回复
| 2018-2-1 18:56 | 显示全部楼层
会不会让我失望啊

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

热门推荐上一条 /5 下一条

在线客服 快速回复 返回顶部 返回列表