CN114374579B - 一种rs485总线竞争型通信方法 - Google Patents

一种rs485总线竞争型通信方法 Download PDF

Info

Publication number
CN114374579B
CN114374579B CN202210040684.2A CN202210040684A CN114374579B CN 114374579 B CN114374579 B CN 114374579B CN 202210040684 A CN202210040684 A CN 202210040684A CN 114374579 B CN114374579 B CN 114374579B
Authority
CN
China
Prior art keywords
bus
data
node
mcu
collision
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202210040684.2A
Other languages
English (en)
Other versions
CN114374579A (zh
Inventor
龙翔林
章恩友
马益平
张轩瑞
盛旭朝
孙炜炜
姚晓峰
陆聪沛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ningbo Jianan Electronics Co ltd
Original Assignee
Ningbo Jianan Electronics Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ningbo Jianan Electronics Co ltd filed Critical Ningbo Jianan Electronics Co ltd
Priority to CN202210040684.2A priority Critical patent/CN114374579B/zh
Publication of CN114374579A publication Critical patent/CN114374579A/zh
Application granted granted Critical
Publication of CN114374579B publication Critical patent/CN114374579B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/40006Architecture of a communication node
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q9/00Arrangements in telecontrol or telemetry systems for selectively calling a substation from a main station, in which substation desired apparatus is selected for applying a control signal thereto or for obtaining measured values therefrom
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2209/00Arrangements in telecontrol or telemetry systems
    • H04Q2209/60Arrangements in telecontrol or telemetry systems for transmitting utility meters data, i.e. transmission of data from the reader of the utility meter

Abstract

本发明通过总线侦听和冲突检测,实现了RS485总线的控制权竞争,不再需要主节点管理控制,打破了主/从节点概念,各节点完全对等,可实现RS485总线中任意节点的数据主动上报,方案实现简单,成本低。

Description

一种RS485总线竞争型通信方法
技术领域
本发明涉及一种电能表中RS485总线竞争型通信方法。
背景技术
 RS485是一种低成本的通信总线,因为只有2根线,容易部署,且通信距离较远,被广泛应用,是大多数物联网终端及采集设备的标配,如智能电能表。
但是,RS485总线一般只适应于有主节点的星型结构,大多数情况下,是主节点发起通信指令,从节点响应。这样就形成了两个问题,一是从节点有事件发生时,不能主动上报,必须等待主节点轮询到自己,才能上报,造成响应不及时或主节点需不停的轮询,占用总线资源;二是从节点之间不能相互通信,而事实上,RS485总线上的各节点物理上是对等的,应可以实现总线控制权竞争。
 早期的以太网是采用同轴电缆传输,所有的电脑都通过BNC头并联在总线上,它与RS485在物理层上是相似的,而同轴电缆以太网的各节点基于CSMA/CD协议来竞争发送数据的总线控制权,因此本发明借用CSMA/CD协议思路来实现。CSMA/CD(Carrier SenseMultiple Access with Collision Detection,载波侦听多路访问/冲突检测协议)是广播型信道中采用一种随机访问技术的竞争型访问方法,其中载波侦听、冲突检测、时序控制是关键。
 CSMA/CD(多点接入载波监听/冲突检测)协议,计算机以多点接入的方式连接在一根总线上,协议的实质是“载波监听”和“碰撞检测”。
载波监听就是利用电子技术检测总线上有没有其他计算机也在发送。载波监听实际上就是检测信道。在发送前,每个站不停地检测信道,是为了获得发送权;在发送中检测信道,是为了及时发现有没有其他站的发送和本站发送的碰撞,这就是碰撞检测。总之,载波监听是全程都在进行的。
碰撞检测就是边发送边监听。就是网卡边发送数据边检测总线上的信号电压的变化情况,以便判断自己在发送数据的时候其他站是否也在发送数据。当几个站同时在总线上发送数据时,总线上的信号电压变化幅度将会增大(互相叠加),当网卡检测到的信号电压超过一定的门限值时,说明总线上至少有两个站同时在发送数据,表明产生了碰撞(冲突),所以也称为冲突检测。这时,由于接收的信号已经识别不出来,所以任何一个正在发送的站就会立即停止发送数据,然后等待一段随机事件以后再次发送。
如果RS485也要实现总线控制权竞争,那么就同样需要实现载波侦听和冲突检测。
对于RS485来说,因为RS485与控制器MCU之间是标准的UART通信,UART在字节传输时有附加的起始位、校验位、停止位,通过这些附加位,在接收时,每个字节都能产生一个接收中断,可以用于判断总线的是否忙,相当于CSMA/CD协议中的载波侦听。
冲突检测是要求在数据发送过程中检测其它节点是否存在数据发送,同轴电缆以太网是由网卡上的专用电路或器件来完成的,其检测方法是在发送数据时检测总线上的信号电压的变化情况。而现有的RS485芯片和常规的电路设计都不具备这个能力,故需要对现有的RS485进行改进,以实现竞争通信。
发明内容
为了克服现有技术中RS485从节点不能主动上报事件以及从节点之间不能相互通信的不足,本发明提供一种利用总线侦听方法去捕捉总线空闲状态,配合时序控制,与其他节点竞争通信发送优先权的一种RS485总线竞争型通信方法。
本发明通过以下技术方案来实现:
一种RS485总线竞争型通信方法,包括总线侦听和冲突检测,其中,
总线侦听,每个节点在数据发送前,在接收数据,判断是否有数据发送给自己,由于RS485与控制器MCU之间采用UART通信,每接收一个字节都产生一个接收中断,用于判断总线是否忙;对RS485电路进行改进,将RS485芯片的数据传输端DI脚接地,MCU通过或非门连接使能端RE与DE,MCU的TXD端与或非门的两个输入端连接,或非门的输出端连接RE与DE,数据传输端 RO端连接 MCU的RXD端,冲突检测信号CD接入MCU的I/O中断,总线A线通过上拉电阻连接电源,总线B线通过下拉电阻接地,则当总线为空闲时,总线状态为“1”。 冲突检测,节点在数据发送时,若发送的数据为“0”,TXD为“0”,RS485芯片为发送模式,则正常发出数据“0”,若发送数据为“1”,TXD为“1”,RS485芯片切换到接收模式,并且利用总线空闲时状态为“1”特点,其他节点接收数据为“1”,冲突检测信号CD接入MCU的I/O中断,且CD的逻辑表达式 ,如果此时其他节点有数据发送“0”,则本节点的RXD为“0”,冲突检测信号CD为“0”,判断为总线存在冲突,在检测到冲突后,将RS485总线置为“0”状态超过1个字节的发送时间,这样任何一个节点都能检测到发生了总线冲突,从而放弃已接收的字节,恢复到总线竞争状态。
作为优选,设置有一个4字节传输时间的防冲突处理间隙,当总线有多种通信波特率时,用最低的通信波特率来确定,传输时间小于防冲突处理间隙的报文会被丢弃。
由于RS485与控制器MCU之间是标准的UART通信,UART在字节传输时有附加的起始位、校验位、停止位,通过这些附加位,节点在接收时,每个字节都能产生一个接收中断,可以用于判断总线的是否忙,相当于CSMA/CD协议中的载波侦听。异步串行通信,是以时间宽度来判断每bit数据的,当比特波特率9600bps,无校验,那么每个字节为10bit(1比特起始位+8bit数据+1bit停止位),则每个字节的传输时间为10/9600秒,只要检测到起始位特征,经过10/9600秒,就会产生一个接收中断。
而冲突检测时对RS485的电路进行改进后,若接收数据,TXD为“1”,RS485芯片为正常接收模式,若发送的数据为“0”,TXD为“0”,RS485芯片为发送模式,则正常发出数据“0”,若发送数据为“1”,TXD为“1”,RS485芯片切换到接收模式,且利用总线空闲时状态为“1”特点,相当于发送了数据“1”。实现了在数据发送期间接收到其它节点发送信号的可能,用于冲突检测。如果此时其它节点有数据发送“0”,本节点的RXD为“0”,冲突检测信号CD为“0”,判断为存在总线冲突。
本发明的有益效果在于:本发明实现了RS485总线的控制权竞争,不再需要主节点管理控制,打破了主/从节点概念,各节点完全对等;可实现RS485总线中任意节点的数据主动上报;方案实现简单,成本低。
附图说明
图1是发明RS485的电路结构示意图。
图2是冲突检测信号产生电路。
实施方式
下面结合附图和具体实施方式对发明作进一步详细说明。
一种RS485总线竞争型通信方法,包括总线侦听和冲突检测。
总线侦听,每个节点在数据发送前,在接收数据,判断是否有数据发送给自己,由于RS485与控制器MCU之间采用UART通信,每接收一个字节都产生一个接收中断,可以用于判断总线是否忙。
冲突检测,对RS485电路进行改进。
表1
表1为485芯片的管脚功能表。
 如图1所示,将RS485芯片的数据传输端DI脚接地,MCU通过或非门连接使能端RE与DE,数据传输端 RO端连接 MCU的RXD端,RS485的CD端接入MCU的I/O中断,总线A线通过上拉电阻连接电源,总线B线通过下拉电阻接地。节点在数据发送时,若发送的数据为“0”,TXD为“0”,则DE端为高电平有效,RS485芯片为发送模式,则正常发出数据“0”,若发送数据为“1”,TXD为“1”,RE端为低电平有效,RS485芯片切换到接收模式。由于当总线为空闲时, A线上拉,B线下拉,则总线状态为“1”,此时利用总线空闲时状态为“1”特点,其他节点接收数据为“1”。如果此时其他节点有数据发送“0”,则本节点的RXD为“0”,冲突检测信号CD为“0”,其中,,判断为总线存在冲突,在检测到冲突后,将RS485总线置为“0”状态超过1个字节的发送时间,这样任何一个节点都能检测到发生了总线冲突,从而放弃已接收的字节,恢复到总线竞争状态。
节点在不发送数据时,MCU的TXD脚,默认输出为“1”,RS485的收发控制引脚RE为逻辑0状态,RS485芯片处于接收状态,与正常的接收情况一致。如果总线上有数据发送,则接收该数据,由于每个节点都有相应的地址,如果数据是发送给本节点的,则接收数据,如果不是发送给本节点,则丢弃该数据。相当于每个节点在发送前,在接收数据。由于RS485与控制器MCU之间采用UART通信,每个字节上有起始位和停止位,每个字节MCU都能产生一个接收中断,可以用于判断总线的是否忙,相当于CSMA/CD协议中的载波侦听。如果总线处于空闲状态,由于A线做上拉处理、B线做下拉处理,总线状态为“1”,其他节点接收数据为“1”。
节点在发送数据时,如果发送的数据为“0”,MCU的TXD脚输出为“0”,RS485的收发控制引脚DE为1状态,RS485芯片处于发送状态,由于发送数据引脚DI固定接低电平,因此正常发出了数据“0”。
如果发送的数据为“1”,MCU的TXD脚输出为“1”,RS485的收发控制引脚RE为逻辑0状态,RS485芯片处于接收状态,此时利用总线空闲时,总线状态为“1”这一特点,其他节点RS485芯片接收数据为“1”,相当于完成了发送数据“1”,而且此时,本节点处于接收状态,还可以接收来自其他节点发送的数据,用于冲突检测。
冲突检测CD,并将CD接入MCU的I/O中断,CD的逻辑表达式如下:
在此处U符号表示或门,冲突检测只判断TXD脚发送数据为“1”时,如果此时,RXD接收为“0”,则判断为总线冲突。当节点未发送数据阶段,不存在冲突,直接进入总线竞争状态,当发送0时,进行冲突检测的是其他发送节点,当发送1时,检测其他节点是否在发送0。
冲突检测中会出现多种情况,假设发生冲突的节点为E和F:
1)若发送节点E、F完全不同步,这种是大多数情况,因为E和F在发送“0”的时间错位,每个字节数据发送至少有1个起始位“0”出现,双方都很快收到了对方的“0”而使冲突检测信号CD为0;因为E和F发送时间不同步,即使发送相同的数据,也会有错位的情况,比如E开始发送0时,F原来的1还没发送完成,F在这个时间差时就会产生CD为0,此时CD=0的时间可能比较短。
 2)若发送节点E、F完全同步,且发送字节一致,此时总线上所有节点都能接收到正确数据,冲突检测顺延到下一字节;
3)若发送节点E、F完全同步,但发送字节不一致,则该发送字节至少有1位不同,假定节点E、F节点分别对应为“0”和“1”,节点F的TXD为1,RXD为0,则CD为0,则节点F能检测到来自节点E的“0”,节点F的冲突检测信号CD为0。
为了保证总线冲突能被其它节点正确判断,在检测到冲突后,将RS485总线置为“0”状态超过1个字节的发送时间,这样任何一个节点都能检测到发生了总线冲突,从而放弃已接收的字节。
冲突发生后,可以采用CSMA/CD的截断二进制指数退避算法来实现重传。
防冲突处理间隙是检测到冲突后,需要经过这么长时间,才能回复总线竞争状态。
最小报文长度就是这个“防冲突处理间隙”折算成对应波特率的字节数,若小于这个字节数,在防冲突检测的时隙内报文就传输完了,期间若冲突发生,接收端会收到有数据位错误的bit,接收端(无冲突的节点)可能无法判断是数据帧的正确与否,将错误的数据当成有效数据进行了处理。设置了最小报文长度后,就可以杜绝这个问题,因为冲突检测后的时隙内有一个字节长时间的总线拉低为0的处理,因为帧接收还没完成,接收端是可知道总线已经发生了冲突的,会放弃数据。
为了保证冲突检测不误判,防冲突处理间隙按4个字节传输时间考虑,且都是每字节11位计算,即防冲突处理间隙44位数据传输时间。当总线的通信波特率为2400bps时,防冲突处理间隙约18.33mS。当通信波特率为115200bps时,防冲突处理间隙约0.38mS。在实际应用中,RS485总线可能存在多种波特率并存的通信情况,如智能电能表应用,不同版本的电能表混装,通信波特率有2400、4800、9600bps,以后还可能更高。
若在总线中要兼容多种通信速率,但报文传输是以字节为单位的,需以最小波特率的防冲突处理间隙来折算每帧报文长度,即低于最小报文长度时,需在报文末尾补充数据使之达到最小报文长度。
时间折算最小报文长度时,还与是否有校验相关,下表是一个兼容2400~115200bps的各种波特率的最小报文长度。
表2
本发明实现了RS485总线的控制权竞争,不再需要主节点管理控制,打破了主/从节点概念,各节点完全对等,可实现RS485总线中任意节点的数据主动上报。可解决很多实际问题,如智能电能表的全事件上报。
本发明中,RS485仍然采用通用的RS485芯片,并未使用专用芯片,仅冲突检测信号CD的产生需要额外增加几个反向与非门电路,实现的成本非常低廉。且算法也很简单,不需要很复杂的高性能MCU,因此,具有较好的推广价值。

Claims (2)

1.一种RS485总线竞争型通信方法,其特征在于:包括总线侦听和冲突检测,其中,
总线侦听,每个节点在数据发送前,在接收数据,判断是否有数据发送给自己,由于RS485与控制器MCU之间采用UART通信,每接收一个字节都产生一个接收中断,用于判断总线是否忙;
对RS485电路进行改进,将RS485芯片的数据传输端DI脚接地,MCU通过或非门连接使能端RE与DE,MCU的TXD端与或非门的两个输入端连接,或非门的输出端连接RE与DE,数据传输端 RO端连接 MCU的RXD端,冲突检测信号CD接入MCU的I/O中断,总线A线通过上拉电阻连接电源,总线B线通过下拉电阻接地,则当总线为空闲时,总线状态为“1”;冲突检测,节点在数据发送时,若发送的数据为“0”,TXD为“0”,RS485芯片为发送模式,则正常发出数据“0”,若发送数据为“1”,TXD为“1”,RS485芯片切换到接收模式,并且利用总线空闲时状态为“1”特点,其他节点接收数据为“1”,将冲突检测信号CD接入MCU的I/O中断,且CD的逻辑表达式,如果此时其他节点有数据发送“0”,则本节点的RXD为“0”,冲突检测信号CD为“0”,判断为总线存在冲突,在检测到冲突后,将RS485总线置为“0”状态超过1个字节的发送时间,这样任何一个节点都能检测到发生了总线冲突,从而放弃已接收的字节,恢复到总线竞争状态。
2.根据权利要求1所述的一种RS485总线竞争型通信方法,其特征在于:设置有一个4字节传输时间的防冲突处理间隙,当总线有多种通信波特率时,用最低的通信波特率来确定,传输时间小于防冲突处理间隙的报文会被丢弃。
CN202210040684.2A 2022-01-14 2022-01-14 一种rs485总线竞争型通信方法 Active CN114374579B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210040684.2A CN114374579B (zh) 2022-01-14 2022-01-14 一种rs485总线竞争型通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210040684.2A CN114374579B (zh) 2022-01-14 2022-01-14 一种rs485总线竞争型通信方法

Publications (2)

Publication Number Publication Date
CN114374579A CN114374579A (zh) 2022-04-19
CN114374579B true CN114374579B (zh) 2023-04-28

Family

ID=81144463

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210040684.2A Active CN114374579B (zh) 2022-01-14 2022-01-14 一种rs485总线竞争型通信方法

Country Status (1)

Country Link
CN (1) CN114374579B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103746890A (zh) * 2013-06-09 2014-04-23 国家电网公司 竞争式rs-485总线多主通讯系统及其工作方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1342938A (zh) * 2000-09-11 2002-04-03 合肥创源智能网络有限责任公司 Rs-485总线式测控系统中测控模块的即插即用法及其测控模块
CN2450713Y (zh) * 2000-09-11 2001-09-26 合肥创源智能网络有限责任公司 Rs-485总线式测控系统中的即插即用测控模块
CN101163075B (zh) * 2006-10-10 2011-05-11 中兴通讯股份有限公司 一种rs485总线竞争实现嵌入式设备地址设置的方法
CN101719112A (zh) * 2009-11-19 2010-06-02 北京东方信联科技有限公司 一种rs485半双工收发自动切换电路
KR102108525B1 (ko) * 2013-01-29 2020-05-08 삼성전자주식회사 통신모듈, 이를 이용하는 멀티형 공기조화장치 및 그 제어 방법
CN103746889B (zh) * 2013-06-09 2018-11-16 国家电网公司 半竞争式rs-485总线多主通讯系统及其工作方法
CN207969895U (zh) * 2017-07-19 2018-10-16 递易(上海)智能科技有限公司 一种基于485总线的智能快递柜
CN110071858B (zh) * 2019-04-12 2021-05-28 杭州涂鸦信息技术有限公司 485接口芯片的防冲突收发切换电路装置
CN110943900B (zh) * 2019-10-25 2021-12-17 福建和盛高科技产业有限公司 带冲突检测的载波监听多路访问的rs485总线电路及方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103746890A (zh) * 2013-06-09 2014-04-23 国家电网公司 竞争式rs-485总线多主通讯系统及其工作方法

Also Published As

Publication number Publication date
CN114374579A (zh) 2022-04-19

Similar Documents

Publication Publication Date Title
US5311114A (en) Apparatus and method for full-duplex ethernet communications
EP0076880B1 (en) A local area contention network data communication system
US4785396A (en) Push-pull serial bus coupled to a plurality of devices each having collision detection circuit and arbitration circuit
US4809361A (en) Optical composite transceiver
EP0094180A2 (en) Dual-count, round-robin distributed arbitration technique for serial buses
JPH05219088A (ja) 通信網制御方法
CN101626334B (zh) 通讯总线控制方法和装置
US4561092A (en) Method and apparatus for data communications over local area and small area networks
NZ196850A (en) Single channel bus communication system:digital data transmitted as short and long pulses for zeros and ones
US4942572A (en) Process and device for high speed polling
US4380761A (en) Digital phase decoder with collision detection
CN110071858B (zh) 485接口芯片的防冲突收发切换电路装置
IE922611A1 (en) Method for data collision detection in a multi processor¹communication system
CN113325768B (zh) 一种工控系统的通信控制装置、方法和工控系统
EP0439646A1 (en) Optical star network protocol and system with minimised delay between consecutive packets
CN112003775B (zh) 一种单电平单线全双工总线通信方法和系统
KR100274550B1 (ko) 고속 이더넷의 충돌 방지 장치 및 그 방법
EP0081821A1 (en) System of local area contention networks
US4584575A (en) Method and device for the asynchronous series communication on the multipoint type of a plurality of logic transceivers
CN114374579B (zh) 一种rs485总线竞争型通信方法
CN111065168B (zh) 一种基于同频同时全双工的无线接入方法
US4975907A (en) Method and device for the asynchronous transmission of data by packets
US5729547A (en) Automatic driver/receiver control for half-duplex serial networks
EP0076401B1 (en) Self adjusting, distributed control, access method for a multiplexed single signal data bus
US4751700A (en) Method and apparatus for local area communication networks

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant