CN112597084B - 一种两线制解决rs485多主仲裁冲撞的系统 - Google Patents
一种两线制解决rs485多主仲裁冲撞的系统 Download PDFInfo
- Publication number
- CN112597084B CN112597084B CN202011631523.8A CN202011631523A CN112597084B CN 112597084 B CN112597084 B CN 112597084B CN 202011631523 A CN202011631523 A CN 202011631523A CN 112597084 B CN112597084 B CN 112597084B
- Authority
- CN
- China
- Prior art keywords
- bus
- preemption
- receiving
- data
- mcu
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4286—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a handshaking protocol, e.g. RS232C link
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0002—Serial port, e.g. RS232C
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明涉及一种两线制解决RS485多主仲裁冲撞的系统,包括用于实现信号抢占的硬件层、用于以不定长空闲监控和不定长抢占头机制引导设备在不同时间启动数据发送的链路层和用于对发送数据帧组包、对接收数据拆包校验的数据校验层,硬件层包括一个或多个两线制总线抢占机制电路。本发明只需两线制总线即可完成抢占,结构简单;提供随机抢占机制,在总线的空闲时可生成几十万种的随机抢占信号,实现每个设备都有不同的抢占标识,大大提高了设备的总线抢占成功率,空闲时间越长,随机数越多;提供数据校验机制,针对每包应用数据进行CRC封装解析,提高数据的正确性;总线抢占成功率较高,极大的减少了总线抢占消耗的时间,提高了总线使用率。
Description
技术领域
本发明涉及信息或其他信号在存储器、输入/输出设备或者中央处理机之间的互连或传送的技术领域,特别涉及一种两线制解决RS485多主仲裁冲撞的系统。
背景技术
RS485总线是一种常规的通信总线,其不能够进行总线的自动仲裁,也就是说,为了避免总线竞争,是无法向总线同时发送数据的,因此整个系统的通信效率必然较低,数据冗余量较大,对于速度要求高的应用场所不适应用RS485总线。
当然,RS485总线也有其优势,为了充分应用此优势,目前已有基于多种应对上述弊端的多主RS485总线仲裁的方法,如采用三线制总线,设置收、发总线和控制线,发送数据时先设置控制引脚,发送完后,撤销控制引脚。然而,当系统设备比较多的时候,这种系统结构难免会遇到几乎同时发送控制线的设备,就会导致多个设备同时抢占成功,进而导致数据发送失败。
发明内容
本发明解决了现有技术中的问题,提供了一种优化的两线制解决RS485多主仲裁冲撞的系统。
本发明所采用的技术方案是,一种两线制解决RS485多主仲裁冲撞的系统,所述系统包括:
一硬件层,包括一个或多个两线制总线抢占机制电路,用于实现信号的抢占;
一链路层,用于以不定长空闲监控和不定长抢占头机制引导设备在不同时间启动数据发送;
一数据校验层,用于对发送的数据帧组包、对接收的数据进行拆包校验。
优选地,所述两线制总线抢占机制电路包括配合设置的MCU和RS485收发芯片,所述RS485收发芯片的数据线为信号抢占线。
优选地,所述RS485收发芯片的接收端与MCU的串口接收端连接,所述RS485收发芯片的发送端与MCU的串口发送端连接;
所述RS485收发芯片的T/R端连接MCU的IO输出端,用于实现芯片的发送接收使能控制;
所述RS485收发芯片的接头端连接MCU的IO输出端,用于实现总线抢占控制。
优选地,所述RS485收发芯片的接收端还连接MCU的IO输入端,用于监听总线是否空闲。
优选地,所述RS485收发芯片的接收端对应的MCU的IO输入端监听总线的跳边沿变化,检测到有总线跳变则认为总线被占用;在总线空闲时控制输出RS485收发芯片的接头端引脚,使总线B端电平变化,进行总线抢占;总线抢占成功后,撤销接头端引脚控制,发送数据。
优选地,所述链路层中,不定长空闲监控和不定长抢占头机制包括以下步骤:
步骤1:RS485收发芯片的接收端对应的MCU的IO输入端监听总线;若超过预设时间T1没有接收到总线跳变信号,则进行步骤2,否则重复步骤1;
步骤2:进入总线不定长空闲监控状态;产生一个随机数N,基于预设规则,以N关联一监听时间T2,在T2时间内检测是否存在总线跳变信号,若有,则返回步骤1,否则,进行下一步;其中,N为1至1024的整数;
步骤3:进入不定长抢占头状态;生成随机时间T3,产生控制引脚作为抢占头,当RS485收发芯片的接收端状态变化,启动定时器,在定时时间结束时,恢复控制引脚;记录控制引脚作为抢占头的真实时间TL;
在总线抢占头发送时,RS485收发芯片的接收端对应的MCU的IO输入端监听总线状态,检测到总线跳变后启动定时器,记录引脚产生数据监听的时间TS;
步骤4:对TL和TS进行校验,若误差小于预设值,则抢占成功,否则失败,返回步骤1;
步骤5:延时预设时间后进入数据发送状态,发送真实数据。
优选地,所述步骤1中,T1为5ms。
优选地,所述步骤2中,T2为N*15μs。
优选地,所述步骤3中,T3为200~800μs。
优选地,所述步骤5中,对发送的数据帧增加标准头、数据长度和CRC,发送时,进行数据帧组包,接收时,对接收的数据进行拆包并校验。
本发明提供了一种优化的两线制解决RS485多主仲裁冲撞的系统,包括用于实现信号的抢占的硬件层、用于以不定长空闲监控和不定长抢占头机制引导设备在不同时间启动数据发送的链路层和用于对发送的数据帧组包、对接收的数据进行拆包校验的数据校验层,其中,硬件层包括一个或多个两线制总线抢占机制电路。
本发明的有益效果在于:
(1)与三线制总线相比,只需要两线制总线即可完成抢占,结构简单;
(2)提供随机抢占机制,在总线的空闲时可生成几十万种的随机抢占信号,实现每个设备都有不同的抢占标识,大大提高了设备的总线抢占成功率,空闲时间越长,随机数越多;
(3)提供数据校验机制,针对每包应用数据进行CRC封装解析,提高数据的正确性;
(4)总线抢占成功率较高,极大的减少了总线抢占消耗的时间,提高了总线使用率。
附图说明
图1为本发明的系统的工作流程图;
图2为本发明中RS485收发芯片的连接参考示意图。
具体实施方式
下面结合实施例对本发明做进一步的详细描述,但本发明的保护范围并不限于此。
本发明涉及一种两线制解决RS485多主仲裁冲撞的系统,针对总线抢占失败提供解决方法,以硬件层实现数据传输,以链路层实现总线抢占发送,以数据校验层实现数据校验,同时链路层提供一种不定长空闲监控和不定长抢占头机制,为总线每个设备提供不一样的抢占空闲时间从而解决总线同时冲撞的问题。
所述系统包括:
一硬件层,包括一个或多个两线制总线抢占机制电路,用于实现信号的抢占;
所述两线制总线抢占机制电路包括配合设置的MCU和RS485收发芯片,所述RS485收发芯片的数据线为信号抢占线。
所述RS485收发芯片的接收端与MCU的串口接收端连接,所述RS485收发芯片的发送端与MCU的串口发送端连接;
所述RS485收发芯片的T/R端连接MCU的IO输出端,用于实现芯片的发送接收使能控制;
所述RS485收发芯片的接头端连接MCU的IO输出端,用于实现总线抢占控制。
所述RS485收发芯片的接收端还连接MCU的IO输入端,用于监听总线是否空闲。
所述RS485收发芯片的接收端对应的MCU的IO输入端监听总线的跳边沿变化,检测到有总线跳变则认为总线被占用;在总线空闲时控制输出RS485收发芯片的接头端引脚,使总线B端电平变化,进行总线抢占;总线抢占成功后,撤销接头端引脚控制,发送数据。
本发明中,硬件层的两线制总线抢占机制电路主要由一个主控MCU和一个RS485收发芯片构成,在不增加总线条数的情况下实现抢占信号,485总线B作为数据线的同时也作为抢占信号线。
本发明中,RS485收发芯片可以为SN65HVD12DR,此芯片的选择和具体的接线可以由本领域技术人员自行设置,此处给出部分连接参考,如图2所示:
以U0_RX(RS485收发芯片的接收端)连接MCU的串口接收端;
以U0_RX同时也连接MCU的一个IO输入,用于监听总线是否空闲;
以U0_TX(RS485收发芯片的发送端)连接MCU的串口发送端;
以RS485收发芯片的T/R连接MCU的IO输出,实现RS485收发芯片的发送接收使能控制;
以CON(RS485收发芯片的接头端)连接MCU的IO输出,实现总线抢占控制。
本发明中,实现数据发送流程为,U0_RX对应的IO输入监听总线的跳边沿变化,一旦检测到有总线跳变,则认为总线被占用,在总线空闲时控制输出CON引脚,使总线B端电平变化,进行总线抢占,总线抢占成功后,撤销CON引脚控制,然后发送数据。
一链路层,用于以不定长空闲监控和不定长抢占头机制引导设备在不同时间启动数据发送;
本发明中,由于每个设备的空闲监听时间和抢头时间不一样,有效的避免了多个设备同时启动数据发送而造成的发送失败。
所述链路层中,不定长空闲监控和不定长抢占头机制包括以下步骤:
步骤1:RS485收发芯片的接收端对应的MCU的IO输入端监听总线;若超过预设时间T1没有接收到总线跳变信号,则进行步骤2,否则重复步骤1;
所述步骤1中,T1为5ms。
步骤2:进入总线不定长空闲监控状态;产生一个随机数N,基于预设规则,以N关联一监听时间T2,在T2时间内检测是否存在总线跳变信号,若有,则返回步骤1,否则,进行下一步;其中,N为1至1024的整数;
所述步骤2中,T2为N*15μs。
本发明中,步骤2通过微秒级别的定时器在监听状态并计时,检测是否在总线变化;延时监听时间结束也没有变化则进入不定长抢占头状态。
步骤3:进入不定长抢占头状态;生成随机时间T3,产生控制引脚作为抢占头,当RS485收发芯片的接收端状态变化,启动定时器,在定时时间结束时,恢复控制引脚;记录控制引脚作为抢占头的真实时间TL;
所述步骤3中,T3为200~800μs。
在总线抢占头发送时,RS485收发芯片的接收端对应的MCU的IO输入端监听总线状态,检测到总线跳变后启动定时器,记录引脚产生数据监听的时间TS;
本发明中,总线不定长抢占状态产生一个200~800us的随机时间,设置控制引脚CON,UO_RX状态变化的同时启动定时器,在定时时间结束时,恢复控制引脚CON;在设置CON引脚同时,获取一个微秒级别定时器的计数,计算CON引脚抢占头的真实时间TL。
本发明中,在总线抢占头发送的同时,U0_RX监听引脚监听总线状态并获取一个微秒级别的定时器进行计数,记录抢占头监听的时间TS。
本发明中,TL和TS也可以被理解为指向某个时刻。
步骤4:对TL和TS进行校验,若误差小于预设值,则抢占成功,否则失败,返回步骤1;
本发明中,在完成抢占头发送后,进入抢占头校验状态,将发送抢占头记录的定时器计数与U0_RX监听引脚记录的定时器计数进行比对,符合预设误差则表示为抢占成功状态;其中,预设误差一般为1%以内。
本发明中,延时15个bit的时间后系统稳定,进入数据发送状态,发送真实数据。
步骤5:延时预设时间后进入数据发送状态,发送真实数据。
所述步骤5中,对发送的数据帧增加标准头、数据长度和CRC,发送时,进行数据帧组包,接收时,对接收的数据进行拆包并校验。
一数据校验层,用于对发送的数据帧组包、对接收的数据进行拆包校验。
本发明中,由于发送抢占头时,控制了RS485总线的电平,会产生总线数据,为过滤掉非正常数据,故对发送的数据帧增加标准头、数据长度和CRC校验。
Claims (9)
1.一种两线制解决RS485多主仲裁冲撞的系统,其特征在于:所述系统包括:
一硬件层,包括一个或多个两线制总线抢占机制电路,用于实现信号的抢占;
一链路层,用于以不定长空闲监控和不定长抢占头机制引导设备在不同时间启动数据发送;
所述链路层中,不定长空闲监控和不定长抢占头机制包括以下步骤:
步骤1:RS485收发芯片的接收端对应的MCU的IO输入端监听总线;若超过预设时间T1没有接收到总线跳变信号,则进行步骤2,否则重复步骤1;
步骤2:进入总线不定长空闲监控状态;产生一个随机数N,基于预设规则,以N关联一监听时间T2,在T2时间内检测是否存在总线跳变信号,若有,则返回步骤1,否则,进行下一步;其中,N为1至1024的整数;
步骤3:进入不定长抢占头状态;生成随机时间T3,产生控制引脚作为抢占头,当RS485收发芯片的接收端状态变化,启动定时器,在定时时间结束时,恢复控制引脚;记录控制引脚作为抢占头的真实时间TL;
在总线抢占头发送时,RS485收发芯片的接收端对应的MCU的IO输入端监听总线状态,检测到总线跳变后启动定时器,记录引脚产生数据监听的时间TS;
步骤4:对TL和TS进行校验,若误差小于预设值,则抢占成功,否则失败,返回步骤1;
步骤5:延时预设时间后进入数据发送状态,发送真实数据;
一数据校验层,用于对发送的数据帧组包、对接收的数据进行拆包校验。
2.根据权利要求1所述的一种两线制解决RS485多主仲裁冲撞的系统,其特征在于:所述两线制总线抢占机制电路包括配合设置的MCU和RS485收发芯片,所述RS485收发芯片的数据线为信号抢占线。
3.根据权利要求2所述的一种两线制解决RS485多主仲裁冲撞的系统,其特征在于:所述RS485收发芯片的接收端与MCU的串口接收端连接,所述RS485收发芯片的发送端与MCU的串口发送端连接;
所述RS485收发芯片的T/R端连接MCU的IO输出端,用于实现芯片的发送接收使能控制;
所述RS485收发芯片的接头端连接MCU的IO输出端,用于实现总线抢占控制。
4.根据权利要求3所述的一种两线制解决RS485多主仲裁冲撞的系统,其特征在于:所述RS485收发芯片的接收端还连接MCU的IO输入端,用于监听总线是否空闲。
5.根据权利要求4所述的一种两线制解决RS485多主仲裁冲撞的系统,其特征在于:所述RS485收发芯片的接收端对应的MCU的IO输入端监听总线的跳边沿变化,检测到有总线跳变则认为总线被占用;在总线空闲时控制输出RS485收发芯片的接头端引脚,使总线B端电平变化,进行总线抢占;总线抢占成功后,撤销接头端引脚控制,发送数据。
6.根据权利要求1所述的一种两线制解决RS485多主仲裁冲撞的系统,其特征在于:所述步骤1中,T1为5ms。
7.根据权利要求1所述的一种两线制解决RS485多主仲裁冲撞的系统,其特征在于:所述步骤2中,T2为N*15μs。
8.根据权利要求1所述的一种两线制解决RS485多主仲裁冲撞的系统,其特征在于:所述步骤3中,T3为200~800μs。
9.根据权利要求1所述的一种两线制解决RS485多主仲裁冲撞的系统,其特征在于:所述步骤5中,对发送的数据帧增加标准头、数据长度和CRC,发送时,进行数据帧组包,接收时,对接收的数据进行拆包并校验。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011631523.8A CN112597084B (zh) | 2020-12-31 | 2020-12-31 | 一种两线制解决rs485多主仲裁冲撞的系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011631523.8A CN112597084B (zh) | 2020-12-31 | 2020-12-31 | 一种两线制解决rs485多主仲裁冲撞的系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112597084A CN112597084A (zh) | 2021-04-02 |
CN112597084B true CN112597084B (zh) | 2022-06-24 |
Family
ID=75206593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011631523.8A Active CN112597084B (zh) | 2020-12-31 | 2020-12-31 | 一种两线制解决rs485多主仲裁冲撞的系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112597084B (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5960174A (en) * | 1996-12-20 | 1999-09-28 | Square D Company | Arbitration method for a communication network |
US7561571B1 (en) * | 2004-02-13 | 2009-07-14 | Habanero Holdings, Inc. | Fabric address and sub-address resolution in fabric-backplane enterprise servers |
CN106021166B (zh) * | 2016-05-16 | 2019-02-26 | 从兴技术有限公司 | 基于rs485总线的多主机通信电路 |
CN207968522U (zh) * | 2017-12-01 | 2018-10-12 | 上海因仑信息技术有限公司 | 一种实现多主通信方式的rs485总线驱动电路 |
CN110943900B (zh) * | 2019-10-25 | 2021-12-17 | 福建和盛高科技产业有限公司 | 带冲突检测的载波监听多路访问的rs485总线电路及方法 |
-
2020
- 2020-12-31 CN CN202011631523.8A patent/CN112597084B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112597084A (zh) | 2021-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7418524B2 (en) | Universal serial bus (USB) extension | |
EP0326696B1 (en) | Hybrid communications link adapter incorporating input/output and data communications technology | |
CA1140231A (en) | Bus collision avoidance system for distributed network data processing communications system | |
EP0137437B1 (en) | Method for initializing a token-passing local-area network | |
US7810013B2 (en) | Memory device that reflects back error detection signals | |
CN108234267B (zh) | 一种基于m-lvds实时多主高速总线的通信系统 | |
US7324913B2 (en) | Methods and apparatus for testing a link between chips | |
US4561092A (en) | Method and apparatus for data communications over local area and small area networks | |
US20100138573A1 (en) | System including transmitter and receiver | |
CN106598889A (zh) | 一种基于fpga夹层板的sata主控器 | |
CN112597084B (zh) | 一种两线制解决rs485多主仲裁冲撞的系统 | |
EP0325078B1 (en) | Mechanism for error detection and reporting on a synchronous bus | |
WO1988008167A1 (en) | Parallel networking architecture | |
Goel et al. | UVM based controller area network verification IP (VIP) | |
US20070258478A1 (en) | Methods and/or apparatus for link optimization | |
JP3516451B2 (ja) | 通信バスシステムとかかるシステムで使用されるステーション | |
CN114884767B (zh) | 一种同步双冗余can总线通信系统、方法、设备及介质 | |
US4728754A (en) | Inter-bus system | |
US4744024A (en) | Method of operating a bus in a data processing system via a repetitive three stage signal sequence | |
US6671760B1 (en) | Switching system for controlling internal apparatuses in an exchange system | |
US20230344552A1 (en) | Communication apparatus, communication system, and communication method | |
US11528083B2 (en) | Methods and apparatus for providing emulation of optical modules | |
JPS59195736A (ja) | 通信制御装置 | |
Flanagan et al. | The IBM Enterprise Systems Connection (ESCON) channel-A versatile building block | |
WO2020199377A1 (zh) | 一种安全通信的装置和方法 |
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 |