在can网络中自动选择波特率的系统和方法

文档序号:10598344阅读:573来源:国知局
在can网络中自动选择波特率的系统和方法
【专利摘要】依据各个方面和实施例,提供了设备。该设备包括存储器、耦合控制器局域网络(CAN)总线的CAN控制器、耦合到存储器和CAN控制器的至少一个处理器。该至少一个处理器被配置成将CAN控制器设定到第一波特率,确定第二波特率,并响应于确定第二波特率而经由CAN总线发送波特率改变请求,其中,波特率改变请求至少包括第二波特率的识别符。
【专利说明】
在CAN网络中自动选择波特率的系统和方法
[0001 ] 背景
技术领域
[0002]本技术领域一般涉及基于微处理器的设备之间的通信,并更具体地涉及为经由总线耦合的设备自动地选择传送波特率的系统和方法。
[0003]背景论述
[0004]控制器局域网络(CAN)通信是一种在基于微处理器的设备之间进行通信的方法。通常,设备包括CAN控制器,其通信地耦合到CAN总线。一般以固定波特率与其他设备进行通信。较低的波特率能够以最小误差进行长距离通信,但这是以速率为代价的。如果存在CAN总线信道质量的退化,则较高的波特率容易发生数据错误。这些数据错误可增加成帧错误,造成CAN总线上较少的总吞吐量。
[0005]概述
[0006]根据一些实施例,提供了一种设备。该设备包括存储器、耦合到CAN总线的控制器局域网络(CAN)控制器、耦合到存储器和CAN控制器的至少一个处理器。至少一个处理器被配置成将CAN控制器设定到第一波特率,确定第二波特率,并响应于确定第二波特率而经由CAN总线发送波特率改变请求,其中,波特率改变请求至少包括第二波特率的识别符。
[0007]在一个实施例中,至少一个处理器还配置成确定超时已到期,响应于确定超时已到期而经由CAN总线发送波特率确认请求,并将CAN控制器设定到第二波特率。
[0008]在一个实施例中,至少一个处理器还配置成从耦合到CAN总线的至少一个设备接收数据帧,响应于接收数据帧,基于CAN控制器的错误计数而确定CAN总线不支持第二波特率,确定较低波特率,其中,较低波特率小于第二波特率,并经由CAN总线发送波特率改变请求,其中,波特率改变请求至少包括较低波特率的识别符。
[0009]在一个实施例中,至少一个处理器还配置成从耦合到CAN总线的至少一个设备接收数据帧,响应于接收数据帧,基于CAN控制器的错误计数而确定CAN总线支持第二波特率,确定较高波特率,其中较高波特率大于第二波特率,并经由CAN总线发送波特率改变请求,其中,波特率改变请求至少包括较高波特率的识别符。
[0010]在一个实施例中,至少一个处理器还配置成从耦合到CAN总线的至少一个设备接收数据帧,响应于接收数据帧而确定耦合到CAN总线的CAN设备不支持第二波特率,并在第一波特率下运行CAN控制器。
[0011]在一个实施例中,至少一个处理器还配置成确定第一超时已发生,并基于第一超时而切换到客户端模式。
[0012]在一个实施例中,至少一个处理器还配置成经由CAN总线发送至少一个测试数据帧,其中,所述至少一个测试数据帧包括使得CAN总线以高频率进行信号通信的字节模式。
[0013]在一个实施例中,至少一个处理器还配置成从耦合到CAN总线的设备接收波特率改变请求,其中波特率改变请求包括新波特率的至少一个识别符,确定CAN控制器是否支持新波特率,并且如果CAN控制器不支持新波特率,则经由CAN总线发送否定应答。
[0014]根据另一实施例,提供了一种使用计算机选择波特率的计算机实施的方法。计算机包括存储器、耦合到控制器局域网络(CAN)总线的CAN控制器、以及耦合到CAN控制器和存储器的至少一个处理器。所述方法包括以下动作:将CAN控制器设定到第一波特率,确定第二波特率,并响应于确定第二波特率而经由CAN总线发送波特率改变请求,其中,波特率改变请求至少包括第二波特率的识别符。
[0015]所述方法还可包括以下动作:确定超时已到期,响应于确定超时已到期而经由CAN总线发送波特率确认请求,并将CAN控制器设定到第二波特率。
[0016]所述方法还可包括以下动作:从耦合到CAN总线的至少一个设备接收数据帧,响应于接收数据帧,基于CAN控制器的错误计数而确定CAN总线不支持第二波特率,确定较低波特率,较低波特率小于第二波特率,并经由CAN总线发送波特率改变请求,其中,波特率改变请求至少包括较低波特率的识别符。
[0017]所述方法还可包括以下动作:从耦合到CAN总线的至少一个设备接收数据帧,响应于接收数据帧,基于CAN控制器的错误计数而确定CAN总线支持第二波特率,确定较高波特率,较高波特率大于第二波特率,并经由CAN总线发送波特率改变请求,其中,波特率改变请求至少包括较高波特率的识别符。
[0018]所述方法还可包括以下动作:从耦合到CAN总线的至少一个设备接收数据帧,响应于接收数据帧而确定耦合到CAN总线的CAN设备不支持第二波特率,并在第一波特率下运行CAN控制器。
[0019]在一个实施例中,所述方法还可包括以下动作:确定第一超时已发生,并基于第一超时而切换到客户端模式。在这个实施例中,所述方法还可包括以下动作:经由CAN总线发送至少一个测试数据帧,其中,所述至少一个测试数据帧包括使得CAN总线以高频率进行信号通信的字节模式。
[0020]在这个实施例中,所述方法还可包括以下动作:经由CAN总线接收波特率改变请求,其中波特率改变请求包括新波特率的至少一个识别符,确定CAN控制器是否支持新波特率,并且如果CAN控制器不支持新波特率,则经由CAN总线发送否定应答。
[0021]根据另一实施例,提供了非暂时性的计算机可读介质,其具有在其上存储的、为耦合到控制器局域网络(CAN)总线的设备选择波特率的指令序列。所述指令使得至少一个处理器将CAN控制器设定到第一波特率,确定第二波特率,并响应于确定第二波特率而经由CAN总线发送波特率改变请求,其中,波特率改变请求至少包括第二波特率的识别符。
[0022]在一个实施例中,所述指令序列包括使得至少一个处理器执行以下动作的指令:确定超时已到期,响应于确定超时已到期而经由CAN总线发送波特率确认请求,并将CAN控制器设定到第二波特率。
[0023]在一个实施例中,所述指令序列包括使得至少一个处理器执行以下动作的指令:从耦合到CAN总线的至少一个设备接收数据帧,响应于接收数据帧,基于CAN控制器的错误计数而确定CAN总线不支持第二波特率,确定较低波特率,其中,较低波特率小于第二波特率,并经由CAN总线发送波特率改变请求,其中,波特率改变请求至少包括较低波特率的识别符O
[0024]在一个实施例中,所述指令序列包括使得至少一个处理器执行以下动作的指令:从耦合到CAN总线的至少一个设备接收数据帧,响应于接收数据帧,基于CAN控制器的错误计数而确定CAN总线支持第二波特率,确定较高波特率,其中,较高波特率大于第二波特率,并经由CAN总线发送波特率改变请求,其中,波特率改变请求至少包括较高波特率的识别符。
[0025]下面详细地讨论其它的方面、示例和这些示例性方面和示例的优点。此外,要理解的是前面的信息和下面详细的描述都仅是各个方面和示例的说明性示例,且意在提供用于理解所要求保护的方面和示例的性质和特征的综述或框架。本文所公开的任何示例都可以任何与本文所公开的目标、目的和需求中的至少一个相一致的方式与任何其它示例相结合,以及提到“示例”、“一些示例”、“供选择的示例”、“各种示例”、“一个示例”、“至少一个示例”、“此示例和其它示例”等并不一定是相互排斥的,而是旨在表明结合该示例所描述的特定的特征、结构或特性可以被包括在至少一个示例中。本文这些术语的出现不一定都指相同的示例。
[0026]附图简述
[0027]下面参照附图讨论了至少一个示例的各个方面,附图并没有按比例绘制。附图被包括以提供各个方面和示例的说明和进一步理解,并被合并于本说明书中且构成本说明书的一部分,但并不用来作为任何特定示例的限制的定义。附图连同说明书的其他部分用于解释所描述和所要求保护的方面和示例的原理和操作。在附图中,在各个图中示出的每个相同的或者几乎相同的组件用相似的数字来标示。出于清楚的目的,并非每个组件都可在每个图中被标记出。在附图中:
[0028]图1是示出波特率自动选择系统的一个示例的框图;
[0029]图2是示出执行本文所公开的过程和功能的计算机系统的示例的框图;
[0030]图3是根据一些方面和实施例,示出设备控制过程的一个示例的流程图;
[0031]图4是根据一些方面和实施例,示出自动波特率过程的一个示例的流程图;
[0032]图5是根据一些方面和实施例,示出数据传输过程的一个示例的流程图;
[0033]图6是根据一些方面和实施例,示出验证连接过程的一个示例的流程图;
[0034]图7是根据一些方面和实施例,示出总线管理器业务过程的一个示例的流程图;并且
[0035]图8是根据一些方面和实施例,示出总线客户端业务过程的一个示例的流程图。
[0036]详细描述
[0037]本文所讨论的方法和装置的示例在应用上并不限于以下说明书中所阐述或附图中所示出的组件的结构和布置的细节。方法和装置能够在其它示例中实现且能够以各种方式被实施或被执行。本文提供的具体实施的示例仅用于说明性目的并不旨在限制。特别地,结合任何一个或者多个示例论述的动作、组件、元素以及特征不旨在排除任何其他的示例中的类似作用。
[0038]另外,本文所用的措辞和术语也是出于说明的目的,不应视为具有限制性。对本文中以单数形式引用的系统和方法的示例、组件、元件或动作的任何引用还可以包含包括复数的示例,以及对本文的任何示例、组件、元件或动作的以复数形式的任何引用还可以包含仅包括单数的示例。以单数形式或者复数形式的引用不旨在限制目前公开的系统或者方法、它们的组件、动作或者元素。本文使用“包括”、“包含”、“具有”、“含有”和“涉及”及其变型旨在包括其后列举的项目和其等价物以及额外的项目。“或”的引用可解释为包括一切的,使得使用“或”所描述的任何术语可以指示单个、多于一个以及全部所描述的项中的任何一种。
[0039]如以上论述,设备通常以固定通信速率经由CAN总线进行通信。通过低速波特率可使通信距离最大化;然而,低速波特率可造成设备之间的慢响应时间。相反地,如果存在CAN总线信道质量的退化(例如,信号反射),则高速波特率(例如,IMbps)可造成成帧错误。在此公开的一些方面和实施例包括自动调整耦合到CAN总线的设备的波特率的系统和方法。
[0040]波特率自动选择系统
[0041]在此公开的各种示例在一个或多个计算机系统上实现波特率自动选择系统。图1示出波特率自动选择系统100的一个示例。如所显示的,波特率自动选择系统100包括设备104、设备106、设备108和设备110。如所不出的,设备104、106、108和110中的每个设备分别包括CAN控制器114、116、118和120,其被配置为用于经由CAN总线122的通信的“总线管理器”或“总线客户端”。在至少一个实施例中,只有一个耦合到CAN总线122的设备在给定的时间运行为总线管理器。在这个实施例中,如果设备确定不存在总线管理器,则设备可动态地从运行为总线客户端切换到运行为总线管理器。因此,设备104、106、108和110中的任意一个可运行为总线管理器或总线客户端。
[0042]在一个实施例中,设备104、106、108和110中的每一个都通过使用计算机系统(如下面参考图2进一步论述的计算机系统200)来实施。在其它实施例中,设备104、106、108和110包括计算资源,但主要充当设备而非计算机系统。例如,在这些实施例中,设备104、106、108和110可以是不间断电源、电力设备(例如,变压器、智能电池、以及配电单元)、传感器、
执tx器等。
[0043]CAN总线122可包括基于微处理器的设备通过其可发送和接收信息的任何通信网络。例如,CAN总线122可以是在相同设备的两个元件之间的物理数据总线。在其他的示例中,CAN总线122可以是配置成根据ISOl 1898-1:2003促进在两个或更多个设备之间的CAN信号通信的任何物理层(例如,串行、以太网等)。
[0044]如所显示的,设备104包括经由软件过程以总线管理器模式配置的CAN控制器114。在这个模式中,设备104可经由计算机实施的过程(诸如在图3-8中描述的过程)连接并控制CAN控制器114,以便管理波特率选择。在一个实施例中,在确定没有CAN总线122的其他设备正运行为总线管理器的基础上,设备104可将其自身配置为总线管理器。
[0045]一旦设备开始运行为总线管理器,则该设备可周期性地执行总线管理功能。在一个实施例中,设备104可经由CAN总线122周期性地发出保活消息,以便向耦合到CAN总线122的其他设备(例如,设备106、108和110)指示存在总线管理器。在其他实施例中,总线管理器连续地监控CAN总线122的通信质量,并且据此调节波特率。
[0046]在各个实施例中,在设备(例如,设备104、106、108和110)的启动期间,所述设备进入“只收听”模式,以确定设备应作为哪种角色(例如,总线管理器或总线客户端)。在一个实施例中,如果在预定时间段(例如,I秒)之后没有经由CAN总线122接收到通信,则设备将运行为总线管理器。在其他实施例中,如果在CAN总线122上已存在总线管理器,则设备将运行为总线客户端。在这些实施例中,只收听模式持续,直到由设备识别出波特率为止。只收听模式可减少由CAN总线122上的设备引入的成帧错误的可能性。在至少一个实施例中,设备将其自身初始配置为可能的最低波特率(例如,62.5Kb)。在其他实施例中,设备将其自身初始配置在可能的最高波特率。在所有这些实施例中,设备可基于检测成帧错误而确定波特率错配。如果检测到错配,设备可递升或递减至邻近的波特率。一旦接收到有效数据帧以及因此的有效波特率设定,则设备可继续以有效波特率运行,直到从总线管理器接收到波特率切换指令(BUAD_RATE_SWITCH)。
[0047]在一个实施例中,被配置作为总线客户端的设备在CAN总线122上周期性地发送测试数据帧,测试数据帧包括所有数据帧字段中的、产生最大脉冲或最大频率的预定义字节模式。例如,具有OxAA测试模式的数据帧可由设备经由CAN总线122发送。在一个实施例中,总线管理器接收具有测试模式的数据帧并确定CAN总线通信质量。例如,总线管理器可接收具有错误的测试帧(例如,不同于OxAA的字节)。这些错误可以是CAN总线122的退化的结果。在这个例子中,总线管理器可启动波特率的变化,以避免进一步的成帧错误。
[0048]计算机系统
[0049]如上文关于图1所讨论的,本文所描述的各个方面和功能可以被实施为在一个或者多个计算机系统中执行的专用硬件或者软件组件。有很多当前处于使用中的计算机系统的示例。这些示例其中包括:网络设备、个人计算机、工作站、大型机、网络客户端、服务器、媒体服务器、应用服务器、数据库服务器和web服务器等等。计算机系统的其它示例可以包括移动计算设备,诸如蜂窝电话、个人数字助理、平板电脑和笔记本电脑,以及网络设备(例如负载平衡器、路由器和交换机)。此外,各方面可以位于单个计算机系统上,或者可以分布在连接到一个或者多个通信网络的多个计算机系统中。
[0050]例如,各个方面和功能可以被分布在一个或多个计算机系统中,一个或多个计算机系统被配置为提供服务给一个或多个客户端计算机,或作为分布式系统的一部分执行整体任务。此外,各个方面可以被在客户端-服务器或多层系统(包括分布在执行各种功能的一个或多个服务器系统中的组件)上执行。因此,示例不限于在任何特定的系统或者一组系统上执行。此外,可以以软件、硬件或者固件、或者它们的任何组合来实施各方面和各功能。因此,通过使用各种硬件配置和软件配置可以在方法、动作、系统、系统元件和组件内实施各个方面、过程和功能,并且示例不限于任何特定的分布式结构、网络或通信协议。
[0051]参考图2,其示出了在其中实施了各个方面和功能的分布式计算机系统200的功能示意图。如图所示,分布式计算机系统200包括交换信息的一个或多个计算机系统。更为具体地,分布式计算机系统200包括计算机系统202、204和206。如图所示,计算机系统202、204和206由通信网络208互连,并且可以通过通信网络508交换数据。网络208可以包含计算机系统可以通过其交换数据的任何通信网络。为使用网络208交换数据,计算机系统202、204和206和网络208可以使用各种方法、协议和标准,包括除其它外的RS-485、RS 422、光纤信道、令牌环网、以太网、无线以太网、蓝牙、IP、IPV6、TCP/IP、UDP、DTN、HTTP、FTP、SNMP、SMS、MMS、SS7、JSON、SOAP、CORBA、REST和Web服务。为了确保数据传输是安全的,计算机系统202、204和206可以使用多种安全措施经由网络208发送数据,这些安全措施包括例如,TSUSSL或VPN。虽然分布式计算机系统200示出了三个联网的计算机系统,但是分布式计算机系统200不受此限制并且可以包含使用任何介质和通信协议联网的任何数量的计算机系统和计算设备。
[0052]图2示出了包括计算机系统202、204和206的分布式计算机系统200的特定示例。如图2中示出的,计算机系统202包含处理器210、存储器212、总线214、接口 216和数据储存器218。为了实现本文所公开的方面、功能、和过程中的至少一些,处理器210实施一系列指令,一系列指令产生操纵的数据。处理器210可以是任何类型的处理器、多处理器、控制器或微控制器。一些示例性的处理器包括商业上可用的处理器,例如,Stellaris ARM Cortex_M3、Intel Xeon N ItaniumNCore NCeleronNPentiumNAMD Opteron、Sun UltraSPARC、IBM Power5+和IBM大型机芯片。处理器210通过总线214连接到包含一个或多个存储器设备212的其他系统组件。
[0053]存储器212在计算机系统202的操作期间存储程序和数据。因此,存储器212可以为如动态随机存取存储器(DRAM)或者静态存储器(SRAM)的相对高性能易失性随机存取存储器。然而,存储器212可以包含用于存储数据的任何设备,例如磁盘驱动器或者其他非易失性储存设备。各个示例可以将存储器212组织成特定的(并且在某些情况下)独有的结构来执行本文所公开的功能。这些数据结构可以被定尺寸以及被组织以存储关于特定数据和数据类型的值。
[0054]通过例如总线214的互连元件将计算机系统202的组件耦合起来。总线214可包括一个或多个物理总线(例如,集成在同一个机器内的组件之间的总线),但也可包括系统元件之间的任何通信耦合,其包括专门的或标准的计算总线技术,如IDE,SCSI,PCI和无线带宽技术。因此,总线214使得例如数据和指令的通信在计算机系统202的系统组件之间进行交换。
[0055]计算机系统202还包含一个或者多个接口设备216(例如输入设备、输出设备、以及输入设备/输出设备的组合)。接口设备可以接收输入或提供输出。更特别地,输出设备可以提供用于外部呈现的信息。输入设备可以从外部源接收信息。接口设备的例子包含键盘、鼠标设备、轨迹球、麦克风、触摸屏、打印设备、显示屏、扬声器、网络接口卡,等等。接口设备支持计算机系统202与例如用户和其他系统的外部实体交换信息和通信。
[0056]数据储存器218包含计算机可读和可写的、非易失的(非暂时性的)数据储存介质,其存储定义由处理器210执行的程序或其他对象的指令。数据储存器218还可以包含记录在介质上或者介质中的、并且由处理器210在程序执行期间处理的信息。更具体地,信息可以被存储在一个或多个数据结构中,其具体被配置为节约存储空间或提高数据交换性能。指令可以被永久存储为编码的信号,并且该指令可以引起处理器210执行本文所描述的功能中的任意一个。例如,该介质可以是光盘、磁盘、或闪存、及其它。在操作中,处理器210或者某些其他的控制器使数据从非易失性记录介质读取到如存储器212的另一个存储器中,与数据储存器218中包含的储存介质相比,另一个存储器允许处理器210更快访问信息。存储器可以位于数据储存器218中或者存储器212中,然而,处理器210操作存储器中的数据,并且然后在处理完成之后,将数据复制到与数据储存器218相关联的储存介质。各种各样的组件可以管理在储存介质和其他存储器元件之间的数据移动,并且各示例不局限于特定的数据管理组件。此外,各示例不限于特定的存储器系统或者数据储存系统。
[0057]虽然计算机系统202通过示例的方式示出为在其上可以实践各个方面和各种功能的一种类型的计算机系统,但是各个方面和各种功能不限于在如图2中示出的计算机系统202上实施。各个方面和各种功能可以在具有不同于图2中所示的架构或者组件的架构或者组件的一个或者多个计算机上实践。例如,计算机系统202可以包含经专门编程的专用硬件,如定制成执行本文所公开的特定操作的专用集成电路(ASIC)。然而另一个示例可以使用利用摩托罗拉PowerPC处理器运行MAC OS系统X的几个通用计算设备以及运行专有硬件和操作系统的几个专用计算设备的网格来执行同样的功能。
[0058]计算机系统202可以是包含操作系统的计算机系统,该操作系统管理包含在计算机系统202中的硬件元件的至少一部分。在某些示例中,诸如处理器210的处理器或者控制器执行操作系统。可以被执行的特定操作系统的示例包括可从Micrium公司获得的MicroC/0S-11、可从微软公司获得的基于Windows的操作系统,例如Windows NT、Windows 2000(WindowsME)、Windows XP、Windows Vista或Windows 7操作系统、可从苹果电脑公司获得的MAC OS系统X操作系统、许多基于Linux的操作系统分版本中的一个,例如,可从红帽公司获得的企业Linux操作系统;可从Sun微系统公司获得的Solaris操作系统、或可从各种源获得的UNIX操作系统。可以使用许多其他的操作系统,并且各示例不限于任何特定的操作系统。
[0059]处理器210和操作系统一起定义了计算机平台,为该计算机平台写入以高级编程语言形式的应用程序。这些组件应用可以是可执行的中间字节码或者解释代码,其使用例如TCP/IP的通信协议通过例如因特网的通信网络进行传输。类似地,各方面可以使用如.如1311^11了311^、拓¥3工++)(^、或者0#((:-31^印)的面向对象的编程语言来实施。也可以使用其他的面向对象的编程语言。可选地,可以使用功能性、脚本或逻辑编程语言。
[0060]另外,各个方面和功能可以在非编程环境中实现,例如,以HTML、XML或其它格式创建的文档,当在浏览器程序的窗口中被查看时呈现图形用户界面的各方面或执行其它功能。此外,可以将各个示例实施为编程的或非编程的元件或它们的任何组合。例如,可以使用HTML来实现网页,而可以以C++编写从网页内调用的数据对象。因此,示例不局限于特定的编程语言并且可以使用任何合适的编程语言。因此,本文所公开的功能组件可以包括被配置成用来执行本文所述的功能的各种各样的元件,例如专用硬件、可执行代码、数据结构或对象。
[0061]在某些示例中,本文所公开的组件可以读取影响被组件执行的功能的参数。这些参数可以被物理存储在任何形式的合适的、包含易失性存储器(例如RAM)或者非易失性存储器(例如磁硬盘驱动器)的存储器中。另外,参数可以被逻辑存储在适当的数据结构(例如通过用户模式应用定义的数据库或者文件)中,或者被逻辑存储在共享数据结构(例如通过操作系统定义的应用注册表)中。此外,某些示例提供了系统和用户接口两者,其允许外部实体修改参数并且从而配置组件的行为。
[0062]自动波特率选择过程
[0063]图3示出设备控制过程300的一个示例。过程300开始于动作302。
[0064]在动作304中,设备(例如,图1中的设备104、106、108和110)启动并被初始化。在一个实施例中,初始化包括确定CAN控制器有效。在动作306中,设备通信地耦合到CAN总线(诸如图1中的CAN总线122)。在一个实施例中,设备通过将CAN绝缘继电器闭合来通信地耦合到CAN总线。如上面参考图1所论述的,设备初始可运行于“只收听”模式,以避免在CAN总线上引入成帧错误。
[0065]在动作308中,执行了自动波特率过程,诸如下面参考图4所论述的自动波特率过程400。在一个实施例中,自动波特率过程可递增地调节设备的波特率,直至波特率被协商。在动作310中,如果设备不能确定有效波特率,则过程可返回至动作308。如果设备确定有效波特率,则过程继续到动作312。
[0066]在动作312中,设备确定设备将运行为总线管理器还是运行为总线客户端。如果设备运行为总线管理器,则过程继续到动作322。如果设备没有运行为总线管理器,则过程继续到动作314。
[0067]在动作314中,设备经由CAN总线发送公共设备请求(PUBLISH_DEVICE)。在动作316中,设备确定在预定时间段到期之前,保活数据帧是否已被接收。在一个实施例中,设备可被配置成等待随机时间段(例如,在2500ms-5000ms之间)。在这个实施例中,每个等待随机时间段的设备可确保两个设备不会同时切换到运行为总线管理器。如果从总线管理器接收到保活数据帧之前随机时间段已到期,则过程继续到动作318。如果在随机时间段到期之前,从总线管理器接收到保活数据帧,则过程继续到动作320。在动作318中,设备可将IsBusManager状态标志设定为I,然后过程返回到动作312。在动作320中,过程可执行总线客户端业务(诸如图8中的总线客户端业务过程800),然后返回到动作312。
[0068]在至少一个实施例中,在IsBusManager状态标志设定为I的情况下,过程返回到动作312。例如,在动作316中,在设备从总线管理器接收到保活数据帧之前,随机时间段可能已到期。在这一示例中,在动作318中,过程将IsBusManager状态标志设定为I。在IsBusManager状态标志等于I的情况下,设备运行为总线管理器。
[0069]在动作322中,监视计时器被检测,以确定总线管理器业务是否已空闲了多于一个预定时间段。在一个实施例中,如果总线管理器业务已遇到了例外,或者没有恰当地执行,则监视计时器确定总线管理器业务不再活动,并采取适当的动作。如果监视计时器已期满,则过程继续到动作324。如果监视计时器尚未期满,则过程继续到动作326。
[0070]在动作324中,过程将IsBusManager状态标志设定为O,然后过程返回到动作312。在IsBusManager状态标志设定为O的情况下,设备运行为总线客户端。
[0071]在动作326中,监视计时器被重置,然后过程继续到动作328。在动作328中,过程执行总线管理器业务过程(诸如图7中的总线管理器业务过程700),然后过程返回到动作312。
[0072]自动波特率过程
[0073]如上面参照图3所论述的,设备可被配置为执行自动波特率过程。图4中示出了自动波特率过程400的一个示例。过程400开始于动作402。
[0074]在动作404中,设备进入“只收听”模式。在一个实施例中,设备通过禁用CAN控制器的收发器输出驱动器而进入只收听模式。在只接听模式中,设备将经由CAN总线接收数据,但将不会发送数据(例如,为了避免引入成帧错误)。
[0075]在动作406中,设备选择可能的最低波特率(例如,62.5Kbps)。同样在动作406中,设备将IsBusManager状态标志设定为I。在动作408中,设备在CAN总线(诸如,图1中的CAN总线122)上收听从其他设备(例如,图1中的设备104、106、108和110)发送的数据。在动作410中,如果接收到数据,那么另一设备在总线(例如,总线管理器)上,则过程继续到动作412。如果没有接收到数据,那么在CAN总线上可能没有另外的设备,或者没有运行为总线管理器的设备,则过程继续到动作434。
[0076]在动作412中,设备将IsBusManager状态标志设定为O。在动作414中,如果检测到成帧错误,那么可能有波特率错配。如果检测到成帧错误,则过程继续到动作416。如果没有检测到成帧错误,则过程继续到动作430。在动作430中,设备可执行验证连接过程,诸如,下面进一步论述的图6中的验证连接过程600。如果验证连接过程成功,则过程继续到动作432,并且以返回成功代码终止。如果验证连接过程失败,则过程继续到动作432,并且以返回失败代码终止。成功代码和失败代码可由(诸如图3中的过程300的动作310中的)过程利用,以确定用于设备的有效波特率是否已被确定。
[0077]在动作416中,设备可重置CAN控制器。在动作418中,设备可确定是否已超出了预定数量的重试。例如,设备可在切换到不同波特率之前,多次(例如,3次)尝试验证波特率是否有效。如果重试的次数已超出,则过程继续到动作420。如果重试的次数尚未超出,则过程继续到动作430。
[0078]在动作420中,设备确定是否已尝试了所有的波特率。如果已尝试了所有的波特率,则过程继续到动作424。如果尚未尝试所有的波特率,则过程继续到动作422。
[0079]在动作422中,选择了邻近的波特率,然后过程返回到动作408。在动作424中,如果经由CAN总线协商有效波特率的重试的次数(例如,3次)超出了预定的重试计数,则过程在动作426退出,并返回失败代码。这个失败代码可由诸如图3中的过程300的动作310中的过程利用,以确定用于设备的有效波特率尚未被设定。如果重试的次数尚未超出预定的重试计数,则过程返回到动作406。
[0080]返回到动作410,如果未能经由CAN总线接收到数据,则过程继续到动作434。在动作434中,设备确定计时器是否已到期,或确定ForceNegotiat1状态标志是否被设定为I。在一个实施例中,如果在计时器到期之后没有接收到数据,则设备可确定没有其它设备通信地耦合到CAN总线。在这个实施例中,过程继续到动作436。如果计时器没有到期并且ForceNegotiat1标记没有设定为I,则过程返回到动作408。
[0081 ] 在动作436中,设备检查IsBusManager状态标志或ForceNegotiat1状态标志是否被设定为I。如果任意一个状态标志被设定为I,则过程继续到动作442。如果没有状态标志被设定为I,则过程继续到动作438。
[0082]在动作438中,如果重试计数超出了预定值(例如3),则过程继续到动作440。如果重试计数没有超出预定值,贝lJ过程返回到动作408。在动作440中,ForceNegotiat1标志被设定为I,然后过程返回到动作408。
[0083]在动作442中,ForceNegotiat1状态标志被清除(例如,设定为O),重试计数器被清零,并且计时器被重置。在动作444中,过程执行数据传输过程,诸如,下面论述的图5中的数据传输过程500。在一个实施例中,数据传输过程发送保活数据帧,并确定在CAN总线上的其他设备是否确认了保活数据帧。在数据传输过程结束之后,设备切换返回到只收听模式并返回到动作408。
[0084]数据传输过程
[0085]如以上参考图4所论述的,设备可执行数据传输过程以发送保活数据帧。图5示出了数据传输过程500的一个示例。过程500开始于动作502。
[0086]在动作504中,设备启用其CAN控制器的发送器。在动作506中,设备经由CAN总线发送保活数据帧。在动作508中,设备确定是否从通信地到耦合CAN总线(诸如,图1中的CAN总线122)的一个或多个设备(例如,设备104、106、108和110)接收到肯定应答。如果没有接收到肯定应答,则过程继续到动作510。如果接收到肯定应答,则过程继续到动作514。
[0087]在动作510中,设备检查帧等待计时器(frame wait timer)。如果帧等待计时器尚未超出预定时间段(例如,100ms),则过程返回到动作508。如果帧等待计数器已到期超过了预定时间段,则过程在动作512退出并返回失败代码。
[0088]在动作514中,IsBusManager状态标志被设定为I。在动作516中,设备禁用CAN控制器的发送器(例如,只收听模式)。在动作518中,过程退出并返回成功代码。
[0089]验证连接过程
[0090]如以上参考图4所论述的,设备可执行验证连接过程,以通过发送或接收测试数据帧(例如,在所有数据帧字段中的测试数据模式OxAA)来验证所协商的波特率。图6示出了验证连接过程600的一个示例。过程600开始于动作602。
[0091]在动作602中,过程确定设备是运行为总线管理器还是总线客户端。如果设备运行为总线管理器(例如,IsBusManager= I),则过程继续到动作604。如果设备运行为总线客户端(例如,IsBusManager = O),则过程继续到动作616。
[0092]在动作604中,设备收听经由CAN总线接收的数据帧。在动作606中,检查接收超时,以确定在动作604中接收到数据帧之前预定时间段是否已到期。如果接收超时已到期,则过程继续到动作608 ο如果接收超时尚未到期,则过程继续到动作610。
[0093]在动作608中,过程执行自动波特率过程,诸如,以上论述的图4中的自动波特率过程400。在动作614,过程结束。
[0094]在动作610中,如果设备未接收到数据帧,则过程返回到动作604,并继续收听数据帧,直至接收超时期满。如果设备已接收到数据帧,则过程继续到动作612。如果设备未接收到数据帧,则过程继续到动作604。
[0095]在动作612中,在动作610中接收的数据帧被验证。在一个实施例中,验证可包括检查测试数据模式(例如,OxAA)。在这个实施例中,如果数据帧不具有测试模式(因为成帧错误),那么设备可确定已发生了 CAN总线的退化。在动作614,过程结束。
[0096]返回到动作602,如果设备确定其运行在总线客户端模式(例如,IsBusManager =O),那么过程继续到动作616。在动作616中,设备可发送包括测试数据模式的多个数据帧。例如,具有OxAA数据模式的数据帧可由设备经由CAN总线发送。在动作618中,设备检查以便获悉是否所有数据帧均已被通信地耦合到CAN总线(例如,总线管理器)的另一设备确认。如果对所有数据帧均已确认,则过程在动作614终止。如果已对不到所有的数据帧确认,则过程继续到动作620。
[0097]在动作620,检查等待超时,以确定在接收到所有肯定应答之前预定时间段是否已到期。如果等待超时尚未到期,则过程继续到动作622。如果等待超时已到期,则过程继续到动作608。
[0098]在动作622中,过程继续,以等待对在动作616发送的数据帧的肯定应答。在等待对数据帧的肯定应答之后,过程返回到动作618。
[0099]在动作608中,过程执行自动波特率过程,诸如,以上论述的图4中的自动波特率过程400。在动作614,过程结束。
[0100]总线管理器业务过程
[0101]如以上参考图3所论述的,如果设备当前运行为总线管理器,则设备可执行总线管理器业务。图7示出了总线管理器业务700的一个示例。过程700开始于动作702。
[0102]在动作702中,设备检查CAN总线(诸如,图1中的CAN总线122)是否已空闲了预定时间段(例如,125ms)。如果CAN总线已空闲了预定时间段,则过程继续到动作704。如果CAN总线尚未空闲了预定时间段,则过程继续到动作708。
[0103]在动作704中,设备经由CAN总线发送保活数据帧。过程在动作706终止。
[0104]在动作708中,过程可执行CAN总线检查。如果设备确定最新的CAN总线检查最近被执行(例如,不到I秒之前),则过程在动作706终止。如果设备确定最新的CAN总线检查最近没有被执行,则过程继续到动作710。
[0105]在动作710中,设备确定CAN总线是否是可访问的,并确定CAN总线的质量。在一个实施例中,设备可确定CAN总线的状态。例如,设备的CAN控制器可以处于BUS_PASSIVE(只收听)模式或BUSJFF(禁用)模式。如果设备确定CAN总线不是活动的,则过程继续到动作712和随后的动作716,以重置CAN控制器并选择更低的波特率。在至少一个实施例中,设备也可在动作710中确定CAN总线质量。在这个实施例中,设备可查询设备的CAN控制器以获得接收/发送错误计数。如果错误计数超出了预定数量(例如,96),则过程继续到动作712。如果错误计数没有超出预定数量(例如,CAN总线的质量优良),则过程继续到动作714。
[0106]在动作712中,设备重置其CAN控制器并对所有计数器(包括错误计数)清零。在动作716中,可选择更低的波特率,然后过程继续到动作720。
[0107]在动作714中,如果设备当前的波特率是所支持的最大波特率,那么过程在动作706结束。如果设备当前的波特率不是所支持的最大波特率,那么过程继续到动作718。在动作718中,设备选择第二高的波特率,然后过程继续到动作720。
[0108]在动作720中,设备经由CAN总线发送波特率切换请求(BAUD_RATE_SWITCH),波特率切换请求包括在动作716或动作718中所选择的新的波特率的识别符。
[0109]在动作722中,设备从耦合到CAN总线的设备(例如,图1中的设备104、106、108和110)收听否定应答(例如,CANCEL_SWITCH、PUBLISH_DEVICE)。在动作724中,如果没有接收到否定应答,则设备继续到动作726。如果接收到否定应答,则设备可放弃切换波特率的尝试。在一个实施例中,当设备不能支持新的波特率时,设备接收取消切换响应(CANCEL,SWITCH)。在另一个实施例中,设备接收公共设备请求(PUBLISH_DEVICE),公共设备请求指示新设备已被添加到CAN总线和/或设备正在协商针对CAN总线的波特率,这样,应延迟切换到新波特率,直至新设备上线。如果接收到否定应答响应,则设备放弃切换波特率的尝试,并且过程在动作706结束。
[0110]在动作726中,设备为了响应波特率切换请求(BAUD_RATE_SWTICH)而等待预定量的时间(例如,5秒)。如果预定量时间未到期,则过程返回到动作722并继续收听响应。如果预定量的时间已到期,则过程继续到动作728。在动作728中,设备发送波特率切换确认请求(BAUD_RATE_SWITCH_CONFIRM)。在一个实施例中,接收波特率切换确认请求的设备将把其CAN控制器的波特率设定到新的波特率。在动作730中,设备把其CAN控制器重置并初始化为在动作716或动作718中识别的新的波特率。在动作732中,设备执行验证连接过程,诸如,以上论述的图6中的验证连接过程600,然后过程在动作706结束。
[0111]总线客户端业务过程
[0112]如以上参考图3所论述的,如果设备当前运行为总线客户端,则设备可执行总线客户端业务过程。图8示出了总线客户端业务过程800的一个示例。过程800开始于动作802。
[0113]在动作802中,设备从总线管理器经由CAN总线(诸如,图1中的CAN总线122)收听请求(例如,BAUD_RATE_SWITCH、BAUD_RATE_SWITCH_CONFIRM,等等)。
[0114]在动作804中,如果接收到波特率切换确认请求,则过程继续到动作806。如果没有接收到波特率切换确认请求,则过程继续到动作818。
[0115]在动作806中,设备检查SwitchFlag状态标志。如果SwitchFlag状态标志是I,则过程继续到动作810。如果SwitchFlag状态标志是零(例如,由于与新的波特率不兼容),则过程继续到动作812。
[0116]在动作810中,如在下面将进一步论述的,设备设定此前在动作818中接收的波特率切换请求中识别的新的波特率。在动作816,过程结束。
[0117]在动作812中,设备重置其CAN控制器。在动作814中,过程执行自动波特率过程,诸如,以上论述的图4中的自动波特率过程400。在动作816,过程结束。
[0118]返回到动作804,如果所接收的请求不是波特率切换确认请求,则过程继续到动作818。在动作818中,如果所接收的请求是波特率切换请求,则过程继续到动作820。如果所接收的请求不是波特率切换,则过程继续到动作824。
[0119]在动作820中,如果设备的CAN控制器支持在波特率切换请求中所识别的新的波特率,过程继续到动作820并将SwitchFlag状态标志设定为I。如果设备的CAN控制器不支持新的波特率,则过程将SwitchFlag状态标志设定为O。在动作816,过程结束。
[0120]在动作824中,设备查询其CAN控制器以获得发送/接收错误计数。如果错误计数低于预定数量(例如,96),则过程在动作816终止。如果错误计数高于预定数量,则过程继续到动作826。在动作826中,设备检查其CAN控制器是否处于BUSJFF模式或ERR0R_PASSIVE模式。在CAN控制器处于BUSJFF或ERR0R_PASSIVE的情况下,设备采取校正行动(例如,将其CAN控制器设定为BUS_ACTIVE),然后过程继续到动作828。如果CAN控制器不处于BUS_0FF模式或ERR0R_PASSIVE模式,则过程继续到动作832。在动作828中,设备重置其CAN控制器。在动作830中,过程执行自动波特率过程,诸如,以上论述的图4中的自动波特率过程400。
[0121]在动作832中,设备经由CAN总线发送数据帧,该数据帧指示BUS质量低。在一个实施例中,设备(例如,图1中的设备104、106、108和110)作为总线管理器接收该数据帧,并据此调节波特率。在动作816,过程结束。
[0122]过程300到过程800中的每一个描述了在特定实施例中的一个特定的动作序列。在这些过程中包括的动作可以通过、或者使用一个或多个计算机系统或如本文所讨论的经专门配置的设备(例如,不间断电源、传感器等)来执行。一些动作是可选的,且同样地,可以根据一个或多个实施例而被省略掉。另外,可以改变动作的次序,或者可以增加其他动作而不背离本文描述的实施例的范围。而且,如上所述,在至少一个实施例中,在特定的、被专门配置的机器,即根据本文所公开的示例和实施例配置的自动波特率选择系统上实施各个动作。
[0123]本文公开的实施例可结合不同的通信技术和协议来使用。例如,一些实施例使用工业协议(诸如,MODBUS、通用工业协议、和BAC网,以及其他协议)进行通信。
[0124]至此已经描述了至少一个示例的若干方面,应当理解,对于本领域技术人员来说容易想到各种变形、修改和改进。例如,本文公开的示例还可以在其他背景中使用。旨在将这些变形、修改和改进作为本公开的一部分,并在旨在落在本文介绍的示例的范围内。因此,前文的描述和附图仅仅是示例性的。
【主权项】
1.一种设备,包括: 存储器; 控制器局域网络(CAN)控制器,其耦合到CAN总线; 至少一个处理器,其耦合至所述存储器和所述CAN控制器,所述至少一个处理器被配置成: 将所述CAN控制器设定到第一波特率; 确定第二波特率;以及 响应于确定所述第二波特率而经由所述CAN总线发送波特率改变请求,其中,所述波特率改变请求至少包括所述第二波特率的识别符。2.根据权利要求1所述的设备,其中所述至少一个处理器还被配置为: 确定超时已到期; 响应于确定所述超时已到期而经由所述CAN总线发送波特率确认请求;以及 将所述CAN控制器设定到所述第二波特率。3.根据权利要求2所述的设备,其中,所述至少一个处理器还被配置为: 从耦合到所述CAN总线的至少一个设备接收数据帧; 响应于接收到所述数据帧,基于所述CAN控制器的错误计数确定所述CAN总线不支持所述第二波特率; 确定较低波特率,其中,所述较低波特率小于所述第二波特率;以及经由所述CAN总线发送波特率改变请求,其中,所述波特率改变请求至少包括所述较低波特率的识别符。4.根据权利要求2所述的设备,其中,所述至少一个处理器还被配置为: 从耦合到所述CAN总线的至少一个设备接收数据帧; 响应于接收到所述数据帧,基于所述CAN控制器的错误计数确定所述CAN总线支持所述第二波特率; 确定较高波特率,其中,所述较高波特率大于所述第二波特率;以及经由所述CAN总线发送波特率改变请求,其中,所述波特率改变请求至少包括所述较高波特率的识别符。5.根据权利要求2所述的设备,其中,所述至少一个处理器还被配置为: 从耦合到所述CAN总线的至少一个设备接收数据帧; 响应于接收到所述数据帧,确定耦合到所述CAN总线的CAN设备不支持所述第二波特率;以及 在所述第一波特率下运行所述CAN控制器。6.根据权利要求1所述的设备,其中,所述至少一个处理器还被配置为: 确定第一超时已发生;以及 基于所述第一超时,切换到客户端模式。7.根据权利要求6所述的设备,其中,所述至少一个处理器还配置成经由所述CAN总线发送至少一个测试数据帧,其中,所述至少一个测试数据帧包括使得所述CAN总线以高频率进行信号通信的字节模式。8.根据权利要求6所述的设备,其中,所述至少一个处理器还被配置为: 从耦合到所述CAN总线的设备接收波特率改变请求,其中,所述波特率改变请求包括新的波特率的至少一个识别符; 确定所述新的波特率是否受所述CAN控制器支持;以及 如果所述新的波特率不受所述CAN控制器支持,则经由所述CAN总线发送否定应答。9.一种使用计算机选择波特率的计算机实施的方法,所述计算机包括存储器、親合到控制器局域网络(CAN)总线的CAN控制器、以及耦合到所述CAN控制器和所述存储器的至少一个处理器,所述方法包括: 将所述CAN控制器设定到第一波特率; 确定第二波特率;以及 响应于确定所述第二波特率而经由所述CAN总线发送波特率改变请求,其中,所述波特率改变请求至少包括所述第二波特率的识别符。10.根据权利要求9所述的方法,还包括: 确定超时已到期; 响应于确定所述超时已到期而经由所述CAN总线发送波特率确认请求;以及 将所述CAN控制器设定到所述第二波特率。11.根据权利要求10所述的方法,还包括: 从耦合到所述CAN总线的至少一个设备接收数据帧; 响应于接收到所述数据帧,基于所述CAN控制器的错误计数确定所述CAN总线不支持所述第二波特率; 确定较低波特率,所述较低波特率小于所述第二波特率;以及 经由所述CAN总线发送波特率改变请求,其中,所述波特率改变请求至少包括所述较低波特率的识别符。12.根据权利要求10所述的方法,还包括: 从耦合到所述CAN总线的至少一个设备接收数据帧; 响应于接收到所述数据帧,基于所述CAN控制器的错误计数确定所述CAN总线支持所述第二波特率; 确定较高波特率,所述较高波特率大于所述第二波特率;以及 经由所述CAN总线发送波特率改变请求,其中,所述波特率改变请求至少包括所述较高波特率的识别符。13.根据权利要求10所述的方法,还包括: 从耦合到所述CAN总线的至少一个设备接收数据帧; 响应于接收到所述数据帧而确定耦合到所述CAN总线的CAN设备不支持所述第二波特率;以及 在所述第一波特率下运行所述CAN控制器。14.根据权利要求9所述的方法,还包括: 确定第一超时已发生;以及 基于所述第一超时,切换到客户端模式。15.根据权利要求14所述的方法,还包括经由所述CAN总线发送至少一个测试数据帧,其中,所述至少一个测试数据帧包括使得所述CAN总线以高频率进行信号通信的字节模式。16.根据权利要求14所述的方法,还包括: 经由所述CAN总线接收波特率改变请求,其中,所述波特率改变请求包括新的波特率的至少一个识别符; 确定所述新的波特率是否受所述CAN控制器支持;以及 如果所述新的波特率不受所述CAN控制器支持,则经由所述CAN总线发送否定应答。17.—种非暂时性的计算机可读介质,其具有在其上存储的、为耦合到控制器局域网络(CAN)总线的设备选择波特率的指令序列,所述指令使得至少一个处理器: 将CAN控制器设定到第一波特率; 确定第二波特率;以及 响应于确定所述第二波特率而经由所述CAN总线发送波特率改变请求,其中,所述波特率改变请求至少包括所述第二波特率的识别符。18.根据权利要求17所述的非暂时性计算机可读介质,其中所述指令序列包括使得所述至少一个处理器执行以下动作的指令: 确定超时已到期; 响应于确定所述超时已到期而经由所述CAN总线发送波特率确认请求;以及 将所述CAN控制器设定到所述第二波特率。19.根据权利要求18所述的非暂时性计算机可读介质,其中所述指令序列包括使得所述至少一个处理器执行以下动作的指令: 从耦合到所述CAN总线的至少一个设备接收数据帧; 响应于接收到所述数据帧,基于所述CAN控制器的错误计数确定所述CAN总线不支持所述第二波特率; 确定较低波特率,其中,所述较低波特率小于所述第二波特率;以及 经由所述CAN总线发送波特率改变请求,其中,所述波特率改变请求至少包括所述较低波特率的识别符。20.根据权利要求18所述的非暂时性计算机可读介质,其中所述指令序列包括使得所述至少一个处理器执行以下动作的指令: 从耦合到所述CAN总线的至少一个设备接收数据帧; 响应于接收到所述数据帧,基于所述CAN控制器的错误计数确定所述CAN总线支持所述第二波特率; 确定较高波特率,其中,所述较高波特率大于所述第二波特率;以及 经由所述CAN总线发送波特率改变请求,其中,所述波特率改变请求至少包括所述较高波特率的识别符。
【文档编号】G06F5/06GK105960629SQ201380082004
【公开日】2016年9月21日
【申请日】2013年12月30日
【发明人】比宾·安德鲁斯
【申请人】施耐德电气It公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1