首页> 中国专利> 基于RS-485半双工总线的通信系统及业务盘通信升级方法

基于RS-485半双工总线的通信系统及业务盘通信升级方法

摘要

本发明公开了一种基于RS-485半双工总线的通信系统及业务盘通信升级方法,涉及RS-485串口通信领域。该系统包括发送消息队列模块、发送任务模块、接收任务模块和定时器;发送消息队列模块用于:当主控盘需要向业务盘发送通信数据时,将应用层通信信息和目的业务盘地址封装为通信数据;发送任务模块用于:获取通信数据,检查当前RS-485半双工总线的通信状态;接收任务模块用于:接收发送任务模块发送的通信数据,当收到通信数据的完整数据帧后,确定数据帧的帧头检查结果。本发明不仅适用范围比较广泛,能够降低通信设备的维护成本;而且能够对多个业务盘的软件进行批量升级,工作效率较高,便于人们使用。

著录项

  • 公开/公告号CN104283749A

    专利类型发明专利

  • 公开/公告日2015-01-14

    原文格式PDF

  • 申请/专利权人 烽火通信科技股份有限公司;

    申请/专利号CN201410500140.5

  • 发明设计人 梁凡;王新柱;余琴;田桦;

    申请日2014-09-25

  • 分类号H04L12/40(20060101);H04L12/24(20060101);

  • 代理机构北京捷诚信通专利事务所(普通合伙);

  • 代理人魏殿绅;庞炳良

  • 地址 430074 湖北省武汉市东湖开发区关东科技园东信路5号

  • 入库时间 2023-12-17 03:18:42

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-12-01

    授权

    授权

  • 2015-02-11

    实质审查的生效 IPC(主分类):H04L12/40 申请日:20140925

    实质审查的生效

  • 2015-01-14

    公开

    公开

说明书

技术领域

本发明涉及RS-485串口通信领域,具体涉及一种基于RS-485 半双工总线的通信系统及业务盘通信升级方法。

背景技术

RS-485是EIA(Electronic Industries Association,电子工业协会) 制订的一种串行通信标准,基于RS-485的半双工总线通常用于通信 设备之间的数据通道。参见图1所示,通信设备包括控制模块(即主 控盘)和若干业务模块(即业务盘,业务盘1、业务盘2和业务盘3 等)。每个业务盘均通过RS-485半双工总线与主控盘进行通信,业务 盘的软件通过RS-485半双工总线进行升级。

但是,业务盘通过RS-485半双工总线进行通信和升级时,存在 以下缺陷:

(1)业务盘的软件进行升级时,需要将主控盘和业务盘对接在 通信设备外部机框的通信接口上,若通信设备没有通信接口,则业务 盘的软件无法升级。因此,现有的业务盘的软件只能在具有通信接口 的条件下进行升级,其适用范围比较单一。

(2)主控盘和业务盘进行通信时,需要人工将主控盘和业务盘 对接在通信设备机框的通信接口上,当业务盘数量较多时,插接较多 的业务盘的操作过程比较复杂,而且现有的主控盘一次只能对一个已 经插接的业务盘的软件进行升级,若需要升级其他业务盘的软件,需 要更换业务盘,其工作效率较低,而且不便于人们使用。

发明内容

针对现有技术中存在的缺陷,本发明的目的在于提供一种基于 RS-485半双工总线的通信系统及业务盘通信升级方法,不仅适用范 围比较广泛,能够降低通信设备的维护成本;而且能够对多个业务盘 的软件进行批量升级,工作效率较高,便于人们使用。

为达到以上目的,本发明提供一种基于RS-485半双工总线的通 信系统,包括发送消息队列模块、发送任务模块、接收任务模块和定 时器;

所述发送消息队列模块用于:当主控盘需要向业务盘发送通信数 据时,根据预设的主控盘应用层通信协议,将主控盘的应用层通信信 息和目的业务盘地址封装为通信数据;

所述发送任务模块用于:从发送消息队列模块中获取通信数据, 检查当前RS-485半双工总线的通信状态:

若当前RS-485半双工总线的通信状态为空闲,通过RS-485半双 工总线向接收任务模块发送通信数据,标记当前的RS-485半双工总 线通信状态为繁忙;记录本次发送的目的业务盘地址和通信数据的数 据帧的序号,启动定时器;

若当前RS-485半双工总线的通信状态为繁忙,按照预先设定的 延迟时间进行等待,延迟时间过后,再次检查当前RS-485半双工总 线的总线通信状态;

所述接收任务模块用于:接收发送任务模块发送的通信数据,当 收到通信数据的完整数据帧后,确定数据帧的帧头检查结果:

若帧头检查结果为帧头数据非法,则丢弃当前通信数据:

若帧头检查结果为帧头数据合法,且帧头数据中的目的业务盘的 地址、数据帧的序号与当前RS-485半双工总线记录的目的业务盘的 地址、数据帧的序号一致,则确定当前通信数据为预期的应答数据, 将当前通信数据发送至相应的业务盘处理;控制发送任务模块停止定 时器,设置RS-485总线通信状态为空闲;

若帧头检查结果为帧头数据合法,且帧头数据中的目的业务盘的 地址、数据帧的序号与当前RS-485半双工总线记录的目的业务盘的 地址、数据帧的序号不一致,则确定当前通信数据不是预期的应答数 据,丢弃当前通信数据;

所述定时器用于:设置数据发送超时时间,在发送任务模块向接 收任务模块发送通信数据后启动;若在超时时间内接收任务模块收到 预期的通信数据,则停止工作;若在超时时间内接收任务模块未收到 预期的通信数据,则控制发送任务模块标记当前RS-485半双工总线 的通信状态为空闲。

在上述技术方案的基础上,所述应用层通信协议规定通信数据包 括帧头和数据静荷,

所述帧头包括:

长度为2字节的地址address,address用于标识业务盘的地址, 发送任务模块发送通信数据时填写为业务盘的地址,接收任务模块接 收通信数据后,仅当该通信数据中的业务盘地址与address标识的业 务盘的地址相同时,才处理通信数据;

长度为2字节的长度length,length用于标识数据帧的总长度, 总长度包括帧头的长度和数据静荷的长度;

长度为2字节的数据帧的序号sequence,sequence用于在发送任 务模块发送通信数据时生成一个新的序号、并填写至通信数据的帧头 中,接收任务模块接收通信数据后,仅当该通信数据中的数据帧的序 号与sequence中的序号相同时,才确定为预期的应答数据;

长度为2字节的分片数fragment Num,fragment Num用于限制 主控盘和业务盘的通信资源;

长度为2字节的分片序号Fragment No,Fragment No从1开始设 置,其用于标识此当前分片在所有分片中的序号;

长度为2字节的数据类型type,type用于标识后续数据静荷的类 型。

本发明还提供一种用于上述系统的基于RS-485半双工总线的业 务盘通信方法,包括以下步骤:

A、当主控盘需要向业务盘发送数据时,发送消息队列模块根据 预设的主控盘应用层通信协议,将主控盘的应用层通信信息和目的业 务盘地址封装为通信数据;转到步骤B;

B、在发送任务模块中预先设定延迟时间,发送任务模块从发送 消息队列模块中获取通信数据;转到步骤C;

C、发送任务模块检查当前RS-485半双工总线的通信状态:

若当前RS-485半双工总线的通信状态为空闲,通过RS-485半双 工总线向接收任务模块发送通信数据,并标记当前的RS-485半双工 总线通信状态为繁忙;记录本次发送的目的业务盘地址和通信数据的 数据帧的序号,启动定时器,在定时器中设置数据发送超时时间,转 到步骤D;

若当前RS-485半双工总线的通信状态为繁忙,按照延迟时间进 行等待,延迟时间过后,重新执行步骤C;

D、接收任务模块判断在超时时间内是否收到通信数据的完整数 据帧,若是,转到步骤E,否则发送任务模块标记当前RS-485半双 工总线的通信状态为空闲,结束;

E、接收任务模块确定数据帧的帧头检查结果:

若帧头检查结果为帧头数据非法,则丢弃当前通信数据,结束;

若帧头检查结果为帧头数据合法,且帧头数据中的目的业务盘的 地址、数据帧的序号与当前RS-485半双工总线记录的目的业务盘的 地址、数据帧的序号一致,则确定当前通信数据为预期的应答数据, 将当前通信数据发送至相应的业务盘处理;发送任务模块停止定时 器,结束;

若帧头检查结果为帧头数据合法,且帧头数据中的目的业务盘的 地址、数据帧的序号与当前RS-485半双工总线记录的目的业务盘的 地址、数据帧的序号不一致,则确定当前通信数据不是预期的应答数 据,丢弃当前通信数据,结束。

在上述技术方案的基础上,步骤D中若帧头检查结果为帧头数 据非法包括以下步骤:若帧头检查结果为帧头数据中的帧长、目的业 务盘地址或者数据帧的序号错误,则确定帧头数据非法。

本发明还提供一种应用上述通信方法的业务盘升级方法,包括以 下步骤:

S1:用户选择基于RS-485半双工总线的业务盘升级软件,用户 在业务盘升级软件中选择需要升级的软件文件;

S2:发送任务模块从发送消息队列模块中获取与当前软件文件对 应的通信数据包,发送任务模块根据通信数据包构造RS485发送消 息报文、并将RS485发送消息报文发送至接收任务模块;

S3:接收任务模块确定RS485发送消息报文的参数后,将RS485 发送消息报文分发至对应的业务盘;

S4:业务盘的软件根据收到的RS485发送消息报文进行升级。

在上述技术方案的基础上,步骤S2具体包括以下步骤:

S201:发送任务模块从发送消息队列模块中获取通信数据包,发 送任务模块获取目的业务盘支持主从通信协议的最大包长;

S202:发送任务模块确定当前通信数据包的长度是否超过最大包 长,若是,转到步骤S203,否则转到步骤S204;

S203:发送任务模块对当前通信数据包进行分包和压缩,转到步 骤S204;

S204:发送任务模块根据通信数据包构造RS485发送消息报文, 将所有RS485发送消息报文形成RS485发送队列,转到步骤S205;

S205:发送任务模块按照RS485发送队列的顺序确定当前需要 发送的RS485发送消息报文,转到步骤S206;

S206:发送任务模块锁定并读取与当前RS485发送消息报文对 应的RS485会话记录,转到步骤S207;

S207:发送任务模块判断当前RS485发送消息报文的属性与当 前会话记录的属性是否相同,若是,转到步骤S208,否则转到步骤 S210;

S208:发送任务模块确定定时器的工作状态,若定时器启动,停 止定时器;若定时器未启动,发送任务模块通过RS485驱动程序发 送当前RS485发送消息报文;并启动定时器,若在定时器设置的超 时时间内收到接收任务模块的应答,则解锁当前RS485会话记录, 转到步骤S209;若在超时时间内未收到接收任务模块的应答,则解 锁并清楚当前RS485会话记录,转到步骤S209;

S209:判断RS485发送队列中的RS485发送消息报文是否全部 发送,若是,步骤S2结束,转到步骤S3;否则再次执行步骤S205;

S210:解锁当前RS485会话记录,根据预先设置的延迟时间进 行等待,延迟时间过后,重新执行步骤S206。

在上述技术方案的基础上,步骤S206中所述会话记录包括槽位 号、消息码和会话ID信息。

在上述技术方案的基础上,步骤S3具体包括以下步骤:

S301:接收任务模块接收RS485发送消息报文,获取当前业务 盘的最大分片长度;

S302:接收任务模块根据最大分片长度,判断当前RS485发送 消息报文是否为分片报文,若是,转到步骤S303,否则转到步骤S304;

S303:接收任务模块对当前RS485发送消息报文进行重组,转 到步骤S304;

S304:接收任务模块比较当前RS485发送消息报文与其对应的 RS485发送记录中的消息属性是否相同,若是,转到步骤S305,否 则转到步骤S306;

S305:接收任务模块清除与当前RS485发送消息报文对应的 RS485发送记录,转到步骤S306;

S306:接收任务模块判断当前RS485发送消息报文是否为压缩 报文,若是,转到步骤S307,否则转到步骤S308;

S307:接收任务模块对当前RS485发送消息报文进行解压,转 到步骤S308;

S308:接收任务模块将解压后的RS485发送消息报文分发至对 应的业务盘,结束。

在上述技术方案的基础上,步骤S4中所述业务盘的软件根据收 到的RS485发送消息报文进行升级之后,还包括以下步骤:业务盘 的软件升级成功后,向主控盘返回升级成功信息,业务盘的软件升级 失败后,向主控盘返回升级失败信息。

与现有技术相比,本发明的优点在于:

(1)本发明的主控盘能够复用RS-485半双工总线直接向业务盘 的端口发送通信数据,与现有技术中只能通过通信设备外部的通信接 口对业务盘的软件进行升级相比,本发明能够在不使用通信设备外部 的通信接口的情况下对业务盘的软件进行升级,不仅适用范围比较广 泛,而且能够降低通信设备的维护成本。

(2)本发明对业务盘的软件进行升级时,主控盘能够同时对多 个业务盘发送通信数据,与现有技术中一次只能对一个业务盘的软件 进行升级相比,本发明能够对多个业务盘的软件进行批量升级,其工 作效率较高,便于人们使用。

附图说明

图1为背景技术中通信设备通过RS-485半双工总线通信和升级 的结构框图;

图2为本发明实施例中步骤S2的流程图;

图3为本发明实施例中步骤S3的流程图。

具体实施方式

以下结合附图及实施例对本发明作进一步详细说明。

在RS-485半双工总线系统中,主控盘(即通信设备的“主”设 备)主动向业务盘(即通信设备的“从”设备)发送数据,业务盘仅 对目的为自身的数据回复应答,不允许主动发送数据。

本发明实施例中的基于RS-485半双工总线的通信系统,包括发 送消息队列模块、发送任务模块、接收任务模块和定时器。

发送消息队列模块用于:当主控盘需要向业务盘发送通信数据 时,根据预设的主控盘应用层通信协议,将主控盘的应用层通信信息 和目的业务盘地址封装为通信数据。

发送任务模块用于:从发送消息队列模块中获取通信数据,检查 当前RS-485半双工总线的通信状态:

若当前RS-485半双工总线的通信状态为空闲,通过RS-485半双 工总线向接收任务模块发送通信数据,标记当前的RS-485半双工总 线通信状态为繁忙;记录本次发送的目的业务盘地址和通信数据的数 据帧的序号,启动定时器。

若当前RS-485半双工总线的通信状态为繁忙,按照预先设定的 延迟时间进行等待,延迟时间过后,再次检查当前RS-485半双工总 线的总线通信状态。

接收任务模块用于:接收发送任务模块发送的通信数据,当收到 通信数据的完整数据帧后,确定数据帧的帧头检查结果:

若帧头检查结果为帧头数据非法(例如帧头数据中的帧长、目的 业务盘地址或者数据帧的序号错误等参数),则丢弃当前通信数据。

若帧头检查结果为帧头数据合法,且帧头数据中的目的业务盘的 地址、数据帧的序号与当前RS-485半双工总线记录的目的业务盘的 地址、数据帧的序号一致,则确定当前通信数据为预期的应答数据, 将当前通信数据发送至相应的业务盘处理;控制发送任务模块停止定 时器,设置RS-485总线通信状态为空闲。

若帧头检查结果为帧头数据合法,且帧头数据中的目的业务盘的 地址、数据帧的序号与当前RS-485半双工总线记录的目的业务盘的 地址、数据帧的序号不一致,则确定当前通信数据不是预期的应答数 据,丢弃当前通信数据。

定时器用于:设置数据发送超时时间,在发送任务模块向接收任 务模块发送通信数据后启动;若在超时时间内接收任务模块收到预期 的通信数据,则停止工作;若在超时时间内接收任务模块未收到预期 的通信数据,则控制发送任务模块标记当前RS-485半双工总线的通 信状态为空闲。

本发明实施例中的应用层通信协议规定通信数据包括帧头和数 据静荷,帧头包括:

长度为2字节的address(地址),address用于标识业务盘的地址, 发送任务模块发送通信数据时填写为业务盘的地址,接收任务模块接 收通信数据后,仅当该通信数据中的地址与标识业务盘的地址相同 时,才处理通信数据,处理通信数据时填写当前业务盘的地址。

长度为2字节的length(长度),length用于标识数据帧的总长度, 总长度包括帧头的长度和数据静荷的长度等。由于数据静荷部分长度 可变,因此length能够用于接收端识别完整数据帧的结束位置。

长度为2字节的sequence(数据帧的序号),sequence用于在发 送任务模块发送通信数据时生成一个新的序号、并填写至通信数据的 帧头中,接收任务模块接收通信数据后,仅当该通信数据中的数据帧 的序号与sequence中的序号相同时,才确定为预期的应答数据。

长度为2字节的fragment Num(分片数),fragment Num用于限 制主控盘和业务盘的通信资源,由于在RS-485半双工总线上传输的 最大数据帧的长度有限,因此当待发送数据的长度超过最大长度时, 需要分片后再发送。fragment Num记录通信数据分片后的总分片数, fragment Num为0表示未分片。

长度为2字节的Fragment No(分片序号),Fragment No从1开 始设置,其用于标识此当前分片在所有分片中的序号。

长度为2字节的type(数据类型),type用于标识后续数据静荷 的类型。

通信数据的数据静荷用于携带通信数据的详细信息,数据静荷的 长度根据内容的不同发生改变,数据静荷一般为主控盘向业务盘下发 的配置或控制命令,或者业务盘向主控盘应答的状态信息。本实施例 中的净荷承载为软件版本信息和软件版本文件。

本发明实施例中的用于上述系统的基于RS-485半双工总线的业 务盘通信方法,包括以下步骤:

A、当主控盘需要向业务盘发送数据时,发送消息队列模块根据 预设的主控盘应用层通信协议,将主控盘的应用层通信信息和目的业 务盘地址封装为通信数据,转到步骤B。

B、在发送任务模块中预先设定延迟时间,发送任务模块从发送 消息队列模块中获取通信数据,转到步骤C。

C、发送任务模块检查当前RS-485半双工总线的通信状态:

若当前RS-485半双工总线的通信状态为空闲,通过RS-485半双 工总线向接收任务模块发送通信数据,并标记当前的RS-485半双工 总线通信状态为繁忙;记录本次发送的目的业务盘地址和通信数据的 数据帧的序号,启动定时器,在定时器中设置数据发送超时时间,转 到步骤D。

若当前RS-485半双工总线的通信状态为繁忙,按照延迟时间进 行等待,延迟时间过后,重新执行步骤C。

D、接收任务模块判断在超时时间内是否收到通信数据的完整数 据帧,若是,转到步骤E,否则发送任务模块标记当前RS-485半双 工总线的通信状态为空闲,结束。

E、接收任务模块确定数据帧的帧头检查结果:

若帧头检查结果为帧头数据非法,则丢弃当前通信数据,结束。

若帧头检查结果为帧头数据合法,且帧头数据中的目的业务盘的 地址、数据帧的序号与当前RS-485半双工总线记录的目的业务盘的 地址、数据帧的序号一致,则确定当前通信数据为预期的应答数据, 将当前通信数据发送至相应的业务盘处理;发送任务模块停止定时 器,结束。

若帧头检查结果为帧头数据合法,且帧头数据中的目的业务盘的 地址、数据帧的序号与当前RS-485半双工总线记录的目的业务盘的 地址、数据帧的序号不一致,则确定当前通信数据不是预期的应答数 据,丢弃当前通信数据,结束。

本发明实施例中的应用上述通信方法的业务盘升级方法,包括以 下步骤:

S1:用户选择基于RS-485半双工总线的业务盘升级软件,用户 在业务盘升级软件中选择需要升级的软件文件。

S2:发送任务模块从发送消息队列模块中获取与当前软件文件对 应的通信数据包,发送任务模块根据通信数据包构造RS485发送消 息报文、并将RS485发送消息报文发送至接收任务模块。

S3:接收任务模块确定RS485发送消息报文的参数后,将RS485 发送消息报文分发至对应的业务盘。

S4:业务盘的软件根据收到的RS485发送消息报文(即升级软 件文件包)进行升级,业务盘的软件升级成功后,向主控盘返回升级 成功信息,业务盘的软件升级失败后,向主控盘返回升级失败信息。

参加图2所示,步骤S2具体包括以下步骤:

S201:发送任务模块从发送消息队列模块中获取通信数据包,发 送任务模块获取目的业务盘支持主从通信协议的最大包长。

S202:发送任务模块确定当前通信数据包的长度是否超过最大包 长,若是,转到步骤S203,否则转到步骤S204。

S203:发送任务模块对当前通信数据包进行分包和压缩,转到步 骤S204。

S204:发送任务模块根据通信数据包构造RS485发送消息报文, 将所有RS485发送消息报文形成RS485发送队列,转到步骤S205。

S205:发送任务模块按照RS485发送队列的顺序确定当前需要 发送的RS485发送消息报文,转到步骤S206。

S206:锁定并读取与当前RS485发送消息报文对应的RS485会 话记录,会话记录包括槽位号、消息码和会话ID信息等,转到步骤 S207。

S207:发送任务模块判断当前RS485发送消息报文的属性与当 前会话记录的属性(目的业务盘的地址、数据帧的序号)是否相同, 若是,转到步骤S208,否则转到步骤S210。

S208:发送任务模块确定定时器的工作状态,若定时器启动,停 止定时器;若定时器未启动,发送任务模块通过RS485驱动程序发 送当前RS485发送消息报文。启动定时器,若在定时器设置的超时 时间内收到接收任务模块的应答,则解锁当前RS485会话记录,转 到步骤S209;若在超时时间内未收到接收任务模块的应答,则解锁 并清楚当前RS485会话记录,转到步骤S209。

S209:判断RS485发送队列中的RS485发送消息报文是否全部 发送,若是,步骤S2结束,转到步骤S3;否则转到步骤S205。

S210:解锁当前RS485会话记录,根据预先设置的延迟时间进 行等待,延迟时间过后,重新执行步骤S206。

参见图3所示,步骤S3具体包括以下步骤:

S301:接收任务模块接收RS485发送消息报文,获取当前业务 盘的最大分片长度。

S302:接收任务模块根据最大分片长度,判断当前RS485发送 消息报文是否为分片报文,若是,转到步骤S303,否则转到步骤S304。

S303:接收任务模块对当前RS485发送消息报文进行重组,转 到步骤S304。

S304:接收任务模块比较当前RS485发送消息报文与其对应的 RS485发送记录中的消息属性(目的业务盘的地址、数据帧的序号) 是否相同,若是,转到步骤S305,否则转到步骤S306。

S305:接收任务模块清除与当前RS485发送消息报文对应的 RS485发送记录,转到步骤S306。

S306:接收任务模块判断当前RS485发送消息报文是否为压缩 报文,若是,转到步骤S307,否则转到步骤S308。

S307:接收任务模块对当前RS485发送消息报文进行解压,转 到步骤S308。

S308:接收任务模块将解压后的RS485发送消息报文分发至对 应的业务盘,结束。

本发明不局限于上述实施方式,对于本技术领域的普通技术人员 来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰, 这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细 描述的内容属于本领域专业技术人员公知的现有技术。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号