我是靠谱客的博主 魁梧月亮,最近开发中收集的这篇文章主要介绍通信协议之485标题通信协议之485,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

标题通信协议之485

标题RS-485通信协议标准

通信协议是指双方实体完成通信或服务所必须遵循的规则和约定,主要实现两个设备之间的数据交换功能.
通信协议分硬件层协议和软件层协议。

硬件层协议决定数据如何传输,比如要设备A要想设备B发送0x63,0x63的二进制数为0110 0011,这8个二进制数要从设备A传输到设备B,涉及到1怎么传,0怎么传,这就是硬件层要解决的问题。

硬件层协议目前比较多见的有RS-232、RS-485和SPI等
其中串行通信RS-485规定:逻辑“1”以两线间的电压差为+(2-6)伏表示;逻辑“0”以两线间的电压差为-(2-6)伏表示。
再者,比如要选择多少条线传输数据,选择什么材质的线传输输入,这些也是属于硬件层协议约束的。

MCU管脚输出TTL电平,TTL电平的意思是,当MCU管脚输出0电平时,一般情况下电压是0伏,当MCU管脚输出1电平时,电压是5伏。因TTL电平是由一条信号线,一条地线产生,信号线上的干扰信号会跟随有效信号传送到到接收端,使得有效信号受到干扰,485通信实际上是把MCU出来的TTL电平通过硬件层的一个转换器芯片进行转换,示意图如图一所示。
在这里插入图片描述
图 1

把MCU出来的一条TTL信号经过芯片转换为两根线(线A、线B)上的信号。当MCU给转换器输入低TTL电平时,转换器会使线B上的电压比线A上的电压高,反之,线A上的电压比线B上的电压高。

485协议规定两条线上电压差值为多少表示0或者1,电压通过仪表可以测量得到,所以说RS-485是硬件层协议。

485协议的接收端可能是另一个MCU,MCU管脚也只接受TTL电平,转换芯片过来的是两条线的电压,所以需要对此两条线差分电压转换为TTL电平,示意图如图二所示。
在这里插入图片描述
图 2

把TTL电平转换为485电平,实质是一个集成芯片,其间无任何程序代码,纯粹是硬件逻辑。同理,将485电平转换为TTL电平也是如此。现在很多芯片将接收和转换都集成到了一块IC,注意,转换器和接收器依旧是没有同时工作的。

2.RS-485通信总线标准

RS-485标准采用平衡式发送和差分接收方式实现通信,由于传输线通常使用双绞线,又是差分传输,所以有极强的抗共模干扰的能力。RS-485采用半双工工作方式,支持多点数据通信。

总线网络拓扑一般采用终端匹配的总线型结构,即采用一条总线将各个节点串接起来,不支持环形或星型网络,如果需要使用星型结构,就必须使用485中继器或485集线器。RS-485总线一般最大支持32个节点,如果使用特制的485芯片,可以达到128个或256个节点,最大的可以支持到400个节点。

3.RS-485电路设计原理
TTL,RS-485两者之间的电平标准定义不通,需要电平转换芯片来实现两者间的数据交换。图三是一般RS-485电平转换芯片引脚数及其定义,或者称为RS-485收发芯片。
在这里插入图片描述
RS-485收发芯片(电平转换芯片)可以理解成两部分,分别为驱动器和接收器。

驱动器输出是差分输出,DE管脚上的逻辑高电平将使能驱动器差分输出,如果DE为逻辑低电平,则驱动器输出呈现高阻态,将发送端与输出A,B断开。

表 1驱动器输出真值表
在这里插入图片描述

通过该真值表可知,在发送时,/RE的电平高低就无所谓了DE是高电平时,

那么DI为1,A>B,驱动器发送器输出1,

DI为0时,B>A,驱动器发送器输出0。

而当DE为低电平时,则输出高阻态,也就是隔开了DI与A,B之间的关系。

RS-485接收器输入时差分输入,/RE来使能接收器,当/RE为低电平时,接收器使能。

表 2接收器输出真值表
在这里插入图片描述
差分传输:发送端在两条信号线上传输幅值相等,相位相反电信号,接收端在对接收的两条线信号做减法运算,这样就获得幅值翻倍的信号。

特别注意:千万不要以为RS-485的逻辑“1”是B>A,逻辑“0”就是A>B。

正确理解:分两种情况驱动器(发送器)和接收器,

对于驱动器(发送器),逻辑“1”(正)是A>B,AB之间电压为+(2~6)V;

逻辑“0”(负)是A<B,AB之间电压为-(2~6)V。

而对于接收器,则逻辑“1”(正)则是B>A,BA之间电压不小于200mV;

逻辑“0”(负)则是A>B,BA之间电压小于-200mV;
即正负逻辑,电压绝对值都大于200mV。

由于RS-485芯片特性,接收器的检测灵敏度为±220mV,当A,B端的电位差绝对值小于200mV时,输出为不稳定,如果在总线上所有发送器被禁止时,接收器输出逻辑“0”,这会误认为通信帧的起始引起工作不正常,解决这个问题的办法就是人为的地使A端电位高于B端电位,这样Rxd的电平在485总线不发送期间(总线悬浮时)呈现唯一的高电平,MCU就不会被误中断而收到乱字符,通常在485电路的A,B输出端加接上拉、下拉电阻,提供网络失效保护,提高RS-485节点与网络的可靠性。
在这里插入图片描述

一般情况下不需要增加终端电阻,只有在485通信距离超过300米的情况下,要在485通信的开始端和结束端增加终端电阻。

隔离虽然能够有效的抑制高共模电压,但总线上还会存在浪涌冲击、电源线与485线短路等潜在危害,所以一般会在总线端采取一定的保护措施。

通常在RS-485通讯接口的A,B通讯线上各串接一个热敏电阻,在热敏电阻与RS-485通讯接口之间的A,B通讯线和地之间分别设有TVS瞬变抑制二极管。

没有故障时,热敏电阻接近零,不影响正常通讯,当误接220V时,热敏电阻变的无穷大,相当于通讯回路和外面断开,当故障消失后,热敏电阻阻值降到零,又可以正常使用。

由于RS-485是半双工通信,收发转换是需要一定的时间,所以一般在收发转换之间和每发送完一帧数据之后,都要有相应的延时,如果出现收发不正常或第一帧数据之后就出现误码现象,则可以适当的增加一下延时时间。

异步通信数据以字节的方式传送,在每一个字节传送之前,先要通过一个低电平起始位实现握手。为防止干扰信号误触RO(接收器输出)产生负跳变,使接收端MCU进入接收状态,建议RO外接10kΩ的上拉电阻。

电源旁路电容,作用是给485芯片提供一个干净的电源,使它稳定的工作。
————————————————

最后

以上就是魁梧月亮为你收集整理的通信协议之485标题通信协议之485的全部内容,希望文章能够帮你解决通信协议之485标题通信协议之485所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部