一种串口通信的方法和装置与流程

文档序号:11206001阅读:378来源:国知局
一种串口通信的方法和装置与流程

本发明涉及通信领域,尤其涉及一种串口通信的方法和装置。



背景技术:

在电力系统智能设备中经常涉及到串口通信,目前常规的做法是通过在硬件结构中配置的串口来实现串口通信,即通过中央处理器(centralprocessingunit,cpu)直接去访问串口。当出现串口不够用的情况时则需要改变硬件结构来增加串口,这种方法会导致串口通讯的板卡越来越笨重,设计结构越来越复杂,而且cpu能访问的串口数目是有限的,因此,常规的串口通信方法扩展性较差,灵活性较低。



技术实现要素:

为解决上述技术问题,本发明实施例期望提供一种串口通信的方法和装置,能够简化串口通信的硬件结构设计,提高串口扩展的灵活性。

本发明的技术方案是这样实现的:本发明实施例提供了一种串口通信的方法,包括:将源中央处理器cpu和目标cpu通过总线连接;所述源cpu将串口报文进行预设的规范化处理得到对应的总线报文;将所述总线报文经所述总线传输至所述目标cpu上,使所述目标cpu将所述总线报文发送至目标串口。

上述方案中,所述方法还包括:预先定义所述总线报文的格式;所述预设的规范化处理包括:将所述串口报文的格式转换成所述总线报文的格式。

上述方案中,所述总线报文包括:所述串口报文的源地址和目的地址。

上述方案中,所述目标cpu将所述总线报文发送至目标串口之前包括:所述目标cpu根据所述总线报文中的目的地址确定所述目标串口。

上述方案中,所述总线为控制器局域网络can总线。

本发明实施例中还提供了一种串口通信装置,其特征在于,所述装置包括:总线、源中央处理器cpu和目标cpu;其中,所述总线,用于连接所述源cpu和所述目标cpu;所述源cpu,用于将串口报文进行预设的规范化处理得到对应的总线报文;所述源cpu,还用于将所述总线报文经所述总线传输至所述目标cpu上,使所述目标cpu将所述总线数据发送至目标串口。

上述方案中,所述源cpu,还用于预先定义所述总线报文的格式;所述预设的规范化处理包括:将所述串口报文的格式转换成所述总线报文的格式。

上述方案中,所述总线报文包括:所述串口报文的源地址和目的地址。

上述方案中,所述目标cpu,用于根据所述总线报文中的目的地址确定所述目标串口。

上述方案中,所述总线为控制器局域网络can总线。

本发明实施例提供的一种串口通信的方法和装置,将源cpu和目标cpu通过总线连接;源cpu将串口报文进行预设的规范化处理得到对应的总线报文;将总线报文经总线传输至目标cpu上,使目标cpu将总线报文发送至目标串口。与现有技术相比,本发明实施例通过使用目标cpu的串口来进行串口通信,实现了源cpu串口的动态扩展,如此,避免了对串口通信硬件结构修改,提高了串口扩展的灵活性。

附图说明

图1为本发明串口通信的方法的第一实施例的流程示意图;

图2为本发明串口通信的方法的第二实施例的流程示意图;

图3为本发明实施例中串口通信装置的第一组成结构示意图;

图4为本发明实施例中can报文的格式列表的示意图;

图5为本发明实施例中数据发送机制的示意图;

图6为本发明实施例中数据接收机制的示意图;

图7为本发明实施例串口通信装置的第二组成结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

图1为本发明串口通信的方法的第一实施例的流程示意图,如图1所示,该方法包括:

步骤101:将源cpu和目标cpu通过总线连接。

在实际实施时,总线可以是以下至少之一:控制器局域网络总线(controllerareanetwork,can)、串行外设接口总线(serialperipheralinterface,spi)、modbus总线等。

本发明实施例中,由于源cpu可以控制至少一个串口,目标cpu也可以至少控制一个串口,因此,源cpu进行串口通信的串口包括:源cpu控制的所有串口和目标cpu控制的所有串口。

步骤102:源cpu将串口报文进行预设的规范化处理得到对应的总线报文。

在实际实施时还包括:预先定义总线报文的格式,进一步的,源cpu将串口报文进行预设的规范化处理得到对应的总预设的规范化处理可以包括:将串口报文的格式转换成总线报文的格式。

这里,总线报文可以包括:串口报文的源地址和目的地址,进一步的串口报文还可以包括以下至少一个:报文类型、报文优先级、应答标志位等。

步骤103:将总线报文经总线传输至目标cpu上,使目标cpu将总线数据发送至目标串口。

示例性的,目标cpu可以根据总线报文中的目的地址确定目标串口。

在实际实施时,当串口报文对应的总线报文发送失败时,设置应答标志位,并根据总线报文中的源地址通知发送端接收失败,请求重新发送。例如:应答标志位为1时表示肯定应答,应答标志位为0时表示否定应答。

需要说明的是,本发明实施例提供的源cpu与目标cpu通信的方法本质上是一套高效的数据收发处理机制。

可以理解的是,源cpu进行串口通信时,当自身可以控制的串口数量不够时,可以通过总线与多个目标cpu连接,利用多个目标cpu控制的串口来实现源cpu串口的动态扩展,无需改变源cpu所处板卡的硬件结构,串口扩展的灵活性较高。而目标cpu串口的实际使用状态可通过软件编程来实现。

本发明实施例中,将源中央处理器cpu和目标cpu通过总线连接;源cpu将串口报文进行预设的规范化处理得到对应的总线报文;将总线报文经总线传输至目标cpu上,使目标cpu将总线报文发送至目标串口。与现有技术相比,本发明实施例通过使用目标cpu的串口来进行串口通信,实现了源cpu串口的动态扩展,如此,避免了对串口通信硬件结构修改,提高了串口扩展的灵活性。

第二实施例

为了能更加体现本发明的目的,在本发明第一实施例的基础上,以利用can总线实现cpu串口扩展为例进行进一步的举例说明。

本发明实施例中,源cpu和目标cpu通过总线连接,还可以是多个cpu通过总线连接,连接方式还可以是包含cpu的多个cpu板卡通过总线连,这里的多个是指三个及三个以上。在电力系统智能设备领域,经常出现一种单个cpu板卡和多个cpu板卡之间串口通讯的使用场合,本发明实施例利用can总线可以实现多个cpu板卡之间的通信,这里的cpu板卡可以是包含cpu的印制电路板。

图2为本发明串口通信的方法的第二实施例的流程示意图,该方法包括:

步骤201:多个cpu板卡通过can总线连接通信,其中一个cpu板卡作为主cpu板卡,其它cpu板卡作为从cpu板卡。

图3为本发明实施例中串口通信装置的第一组成结构示意图,如图3所示,包括n+1个cpu板卡和can总线,n取正整数。

其中,每一个cpu板卡上包含多个独立的串口可以对外进行通信;n+1个cpu板卡可以相同也可以不同,在这n+1个cpu板卡中选择一个作为主cpu板卡,剩余全为从cpu板卡。不同cpu板卡之间的通信通过自定义的can总线协议来进行,每一个cpu板卡既可以通过自身的串口与外界通信,也可以通过与其它cpu板卡连接后利用其它板卡上的串口与外界通信。

步骤202:自定义can报文的格式。

本步骤中,不同cpu板卡之间的通信通过自定义的can总线协议来进行,即can报文的格式需要根据使用场合的需求进行自定义设计。

示例性的,自定义can报文的格式可以包括:串口报文的源地址和目的地址。

图4为本发明实施例中can报文的格式列表的示意图,如图4所示,本发明实施例中自定义的can报文的格式可以包括:使用1个32位id过滤器的最后2个字节作为主cpu板卡的地址和从cpu板卡的地址,即源地址和目的地址,其中最后一个字节的最低位为远程发送请求位(remotetransmissionrequestbit,rtr),倒数第二个字节的最低位为源地址的结束标识。前2个字节中分别还定义了序列号、帧类型、应答标识位、单/多帧标志位等,剩余位保留。其中,帧类型可以用于指示当前传递的数据是否需要应答,应答标志位可以用于指示当前数据是否发送成功,包括肯定应答和否定应答。

需要说明的是,标识符扩展位(identifierextensionbit,ide)、替代远程请求位(substituteremoterequestbit,srr)、rtr位仍遵循can2.0a/b标准中的定义,为了使用32位id,ide和srr必须置为1,而rtr置为0表示数据帧。

步骤203:将串口报文的格式转换成can报文的格式。

示例性的,根据主cpu板卡将待发送的串口报文的格式转化成自定义can报文的格式,用于can总线的传输。

步骤204:主cpu板卡将can报文通过can总线发送至从cpu板卡。

本步骤中,主cpu板卡将串口报文对应的can报文通过can总线发送至目标从cpu板卡上,目标从cpu板卡可以是主cpu任意指定的具有空闲串口的从cpu板卡,也可以是预先确定的从cpu板卡。

步骤205:从cpu板卡将接收到的can报文转发至目标串口。

在实际实施时,从cpu板卡可以根据can报文中的目的地址确定目标串口。

可选的,从cpu板卡直接将接收到的can报文发送至目标串口,或者从cpu板卡将接收到的can报文转换成串口报文后再发送至目标串口。

另一种可选的实施方式是,主cpu板卡在接收从cpu板卡发送的串口报文时,当从cpu板卡最初接收到的是can报文,执行步骤204,即从cpu板卡将can报文通过can总线发送至主cpu板卡,主cpu板卡对接收到的can报文进行处理;或者,当从cpu板卡最初接收到的是串口报文,先执行步骤203,即从cpu板卡将串口报文的格式转换成can报文的格式,再执行步骤204,即从cpu板卡将can报文通过can总线发送至主cpu板卡,主cpu板卡对接收到的can报文进行处理。

在实际实施时,本发明实施例中主cpu板卡与从cpu板卡通信的方法本质上是一套高效的数据收发处理机制。

示例性的,主cpu板卡与从cpu板卡通信过程中,具体的数据收发过程可以如5和图6所示。

图5为本发明实施例中数据发送机制的示意图,如图5所示,主cpu板卡向任意一个从cpu板卡发送报文的过程可以如下:

(1)对外接口负责将存储空间中的数据放入发送缓冲区,如果数据不需要应答,则直接将数据放入发送缓冲区;如果数据需要应答,则还需将数据插入等待应答队列,应答超时则将等待应答队列中相应的数据直接放入发送缓冲区中,如果相同的数据连续多次应答超时,则丢弃该数据。

(2)发送队列负责将数据从发送缓冲区搬到发送中断缓冲区,数据可以是单帧的也可以是多帧的,通过单/多帧标志位可以区分当前数据帧类型。

(3)发送中断处理函数负责在发送缓冲区产生中断时,从发送中断缓冲区中取出数据放入到硬件发送缓冲区。对于多帧数据还需暂存入临时发送缓冲区中,以便在多帧发送过程中收到否定应答时重新发送。发送中断处理函数同时还用于使能发送。

图6为本发明实施例中数据接收机制的示意图,如图6所示,主cpu板卡接收任意一个从cpu板卡发送的报文的过程可以如下:

(1)接收中断处理函数负责从硬件接收缓冲区中取出数据放到接收中断缓冲区中,如果当前数据中包含否定应答,则设置失败重发标志和失败次数,然后丢弃当前接收失败的数据;如果当前数据中包含肯定应答,继续执行数据接收操作。

(2)若当前接收到的数据中的应答为肯定应答,由接收队列负责对接收中断缓冲区中收到的数据进行分析处理,并丢弃错误数据。若当前接收到的数据为错误数据还需要插入否定应答,通知发送端该数据发送错误,请求重新发送。

(3)接收队列把接收成功的数据放入到接收缓冲区后,对外接口再将接收缓冲区中的数据存入用户指定的存储空间中。本发明实施例中,接收缓冲区包括:存放单帧数据的接收缓冲区a和接收缓冲区b,存放多帧数据的临时接收缓冲区a和临时接收缓冲区b。其中,当接收到多帧数据时,先将多帧数据放入临时接收缓冲区中,在收到一个完整的多帧数据后,再存放到对应的临时接收缓冲区a或临时接收缓冲区b中,对外接口负责将接收缓冲区中的数据存入用户指定的存储空间中。需要说明的是,本地发送接口可以直接将数据存入接收缓冲区a和接收缓冲区b以及临时接收缓冲区a和临时接收缓冲区b中。

可选的,当接收成功时,可以向发送端回复肯定应答,当接收失败,可以向发送端回复否定应答。

第三实施例

基于同一发明构思,本发明实施例还提供了一种串口通信装置,图7为本发明实施例串口通信装置的第二组成结构示意图,如图7所示,该装置包括:总线701、源cpu702和目标cpu703;其中,

总线701,用于连接源cpu和目标cpu;

源cpu702,用于将串口报文进行预设的规范化处理得到对应的总线报文;

源cpu702,还用于将总线报文经总线传输至目标cpu703上,使目标cpu将总线数据发送至目标串口。

在实际实施时,源cpu702,还用于预先定义总线报文的格式;预设的规范化处理可以包括:将串口报文的格式转换成总线报文的格式。

在实际实施时,总线报文可以包括:串口报文的源地址和目的地址。

在实际实施时,目标cpu703,用于根据总线报文中的目的地址确定目标串口。

在实际实施时,总线可以为can总线。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1