基于CAN网络的通讯系统及方法
技术领域
本发明涉及CAN总线网络,更具体地说,涉及一种基于CAN网络的通讯系统及方法。
背景技术
CAN(ControllerArea Network)总线是德国博世(Bosch)公司为汽车电器控制系统开发的一种有效支持分布式控制何实时控制的串行通信网络,属于现场总线范畴。CAN总线采用了许多新技术和独特的设计,使其在可靠性、实时性和灵活性方面具有突出的优点:支持多个主节点,各节点通过总线仲裁获得总线使用权;通信速率高,最快可达到1Mbps;可靠性高,总线协议具有完善的错误处理机制。这些卓越的性能使得CAN总线得以在全球范围内一直保持高速发展。CAN的信息传送采用多主随机发送方式,可实现无冲突的CSMA/CA,具有实时性强、传输距离远、抗电磁干扰能力强、低成本等优点,在工业自动化、智能建筑、自动测试等领域得到了广泛应用。
但是,目前的《CAN-BUS规范2.0》中只针对其物理层和数据链路层有规定,对其应用层协议未有进一步的规定。目前,有关机构推出的并广泛应用的基于CAN的应用层协议有CANopen(适合机械控制的嵌入式应用)和DeviceNet(适合于工厂底层自动化)等。DeviceNet自2002年被确立为中国国家标准以来,已在冶金、电力、水处理、石化、矿山等各个行业得到成功应用。CANopen在工业自动化领域也用着广泛的应用。
CANopen和DeviceNet在CIA(德国注册的一家非盈利组织,其目的是提供标准化的技术、产品和服务,提升CAN的形象及为CAN协议的未来发展提供一条途径)和ODVA(开放式设备网络供应商协会)的推广下已经有着广泛的应用,但普遍存在开发周期长,配置工具复杂等问题。对于中小型自动化设备和用户来说存在协议过于复杂,开发难度大等问题。
发明内容
本发明要解决的技术问题在于,针对上述CAN网络开发周期长、配置工具复杂的问题,提供一种基于CAN网络的通讯系统及方法。
本发明解决上述技术问题的技术方案是,提供一种基于CAN网络的通讯系统,包括位于CAN网络中的一个主站和多个从站,所述主站和从站分别由设备节点构成,所述设备节点为各种小型嵌入式设备,所述主站包括监测单元、管理单元、配置单元、第一数据单元,所述从站包括命令响应单元、第二数据单元、配置响应单元;其中:所述监测单元,用于向所有从站发送远程帧,该远程帧包括主站地址与心跳时间;所述命令响应单元,用于响应来自主站的远程帧并向主站发送远程帧响应,该远程帧响应包括从站的基本信息及状态;所述管理单元,用于根据接收自从站的远程帧响应中的基本信息及状态判断各从站是否完成配置,在从站未完成配置时启动配置单元并在从站完成配置时向该从站发送管理帧启动从站;所述第一数据单元和第二数据单元,用于在相应从站启动后通过数据帧实现主站和从站之间的数据传输,所述数据帧传输数据的规则由主站或从站的配置信息定义;所述配置单元用于响应来自从站的配置请求并向该从站发送配置帧,所述配置帧包括对应从站的配置信息;所述配置响应单元,用于根据来自主站的配置帧中的配置信息配置从站;
所述主站还包括初始化单元,用于启动主站并从与该主站连接的设备获得配置文件;所述配置单元根据所述配置文件创建配置帧;
所述主站和从站分别包括状态监控单元,用于通过心跳帧实现主站和从站之间的相互监视。
在本发明所述的基于CAN网络的通讯系统中,所述管理单元还根据来自从站的远程帧响应中的基本信息及状态判断从站配置是否正确,若配置不正确则通过配置单元清除该从站配置并重新配置该从站。
在本发明所述的基于CAN网络的通讯系统中,所述管理帧、配置帧、数据帧、远程帧的发送优先级依次降低。
本发明还提供一种基于CAN网络的通讯方法,所述CAN网络包括一个主站和多个从站,所述主站和从站分别由设备节点构成,所述设备节点为各种小型嵌入式设备,作为主站的设备节点通过以下步骤启动CAN网络:
(a)向所有从站发送远程帧,该远程帧包括主站地址与心跳时间,并接收来自所有从站响应所述远程帧而发送的远程帧响应,所述来自从站的远程帧响应包括从站的基本信息及状态;
(b)根据接收的远程帧响应中的基本信息及状态判断从站是否完成配置,并在从站未完成配置时执行步骤(c),否则执行步骤(d);
(c)响应来自从站的配置请求并向该从站发送配置帧,所述配置帧包括对应从站的配置信息,并返回步骤(b);
(d)向从站发送管理帧启动数据传输,使主站和从站之间通过数据帧传输数据,所述数据帧传输数据的规则由主站或从站的配置信息定义;
在所述步骤(a)之前包括:主站启动并从与该主站连接的设备获得配置文件;所述步骤(c)中包括:根据所述配置文件创建配置帧;
作为主站的设备节点在CAN网络启动之后:通过命令帧获得CAN网络中的传输错误数据并通过心跳帧实现与从站之间的相互监视。
在本发明所述的基于CAN网络的通讯方法中,所述步骤(d)之前包括:根据来自各个从站的远程帧响应判断从站配置是否正确,若正确则执行步骤(d),否则通过配置帧清除从站配置并执行步骤(c)。
在本发明所述的基于CAN网络的通讯方法中,所述步骤(b)之前包括:判断接收的从站的基本信息及状态是否正确,若正确则执行步骤(b),否则停止网络运行并报告错误。
本发明基于CAN网络的通讯系统及方法,可在中小型工业自动化应用中实现实时可靠的数据传输,同时丢弃了现有CANopen协议中规定的大而全带来的不易开发的缺点,方便在中小型嵌入式设备上实现。
附图说明
图1是本发明基于CAN网络的通讯系统实施例的示意图。
图2是本发明基于CAN网络的通讯方法实施例的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,是本发明基于CAN网络的通讯系统实施例的示意图。本实施例中的通讯系统包括位于CAN网络中的一个主站10和多个从站20(图中仅示出一个),其中主站10和从站20分别由设备节点构成,该设备节点可以为各种小型嵌入式设备,例如可编程逻辑控制器(即PLC)、变频器、伺服控制器等。
上述主站10包括监测单元11、管理单元12、配置单元13、第一数据单元14,从站20包括命令响应单元21、第二数据单元23、配置响应单元22。上述监测单元11、管理单元12、配置单元13、第一数据单元14可集成到主站10的硬件系统并由软件实现,而命令响应单元21、第二数据单元23、配置响应单元22则集成到从站20的硬件系统并由软件实现。
主站10的监测单元11用于向所有从站20发送远程帧。主站通过远程帧扫描CAN网络中的所有从站(设备节点),并将主站(检测器)地址与心跳时间传输到各个设备节点。在本实施例中,所有从站20必须响应来自主站10的远程帧。表1为远程帧的一个实例。
表1远程帧实例
从站20的命令响应单元21用于响应来自主站10的远程帧并向主站10发送远程帧响应,该远程帧响应包括从站的基本信息及状态。表2为远程帧响应的一个实例。
表2远程帧响应实例
管理单元12用于根据接收自从站20的远程帧响应中的基本信息及状态判断各从站20是否完成配置,在判断从站20未完成配置时启动配置单元13并在判断从站20完成配置时向从站发送管理帧启动对应从站20。此外,管理单元12还可通过管理帧通知对应从站20停止配置帧或数据帧传输。表3是管理帧的一个实例。
表3管理帧实例
第一数据单元14和第二数据单元23用于在相应从站启动后通过数据帧实现主站和从站之间的数据传输。该第一数据单元14和第二数据单元23之间数据帧的数据传输规则由对应主站或从站的配置信息定义。数据帧包括点对点数据帧和电对多数据帧两种,分别对应点对点数据传送和电对多同步数据共享。表5是数据帧的一个实例。
表5数据帧实例
配置单元13用于响应来自从站20的配置请求并向该从站20发送配置帧,该配置帧包括对应从站的配置信息。配置响应单元22用于根据来自主站10的配置帧中的配置信息配置对应从站20。通过配置帧,可配置从站点对点、点对多数据帧传输规则。如表6所示,为配置帧的一个实例。
表6配置帧实例
为保证通讯系统的稳定可靠,上述管理帧、配置帧、数据帧、远程帧的发送优先级依次降低。
在本发明的一个实施例中,上述主站10与上位机(该上位机可以是PC)连接,并包括初始化单元。该初始化单元用于启动主站10并从与该主站10连接的设备(例如上位机)获得配置文件。从而配置单元13可根据该配置文件创建配置帧。
为了实现状态监控,主站10和从站20可分别包括状态监控单元。该状态监控单元通过心跳帧实现主站10和从站20之间的相互监视。其中主站10的心跳帧由主站10以广播模式发出,用于使从站20监测自身网络状态,心跳时间由远程帧中设定。从站20收到主站10的心跳帧广播后对内部超时计时器清零,当从站20在超时时间内未收到主站10的心跳帧广播时,报主站10超时。主站心跳帧的实例如表7所示。
表7主站心跳帧实例
从站心跳帧由从站20发出,其用于检测主站10的连接状态。从站心跳帧的实例如表8所示。
表8从站心跳帧实例
主站10的管理单元12还可根据来自从站20的远程帧响应中的基本信息及状态判断从站20配置是否正确,若配置不正确则通过配置单元13向该从站20发送命令帧以清除该从站20的配置并重新通过配置单元13的配置帧配置该从站20。此外,管理单元12还可通过命令帧获得CAN网络中的传输错误数据。具体地,上述命令帧通过询问和应答方式,可实现诸如读取指定节点寄存器、写指定节点寄存器、读信息设备、读设备状态、读取指定节点32位寄存器、写指定节点32位寄存器、同步写寄存器、命令异常响应等。命令帧的实例如表9所示。
表9命令帧的实例
如图2所示,是本发明基于CAN网络的通讯方法实施例的流程图,上述CAN网络包括一个主站和多个从站,其中主站和从站分别由设备节点构成,作为主站的设备节点通过以下步骤启动CAN网络:
步骤S21:向所有从站发送远程帧。主站通过远程帧扫描CAN网络中的所有设备节点(从站),并将主站(监测器)地址与心跳时间传输到各个设备节点。远程帧具体可采用表1所示的格式。
步骤S22:自所有从站接收远程帧响应,其中上述远程帧响应包括从站的基本信息及状态。
步骤S23:根据接收的远程帧响应中的基本信息及状态判断从站是否完成配置,并在从站未完成配置时执行步骤S24,否则执行步骤S25。
步骤S24:响应来自从站的配置请求并向该从站发送配置帧,所述配置帧包括对应从站的配置信息,并返回步骤S21。
步骤S25:向从站发送管理帧启动数据传输,使主站和从站之间通过数据帧传输数据,数据帧传输数据的规则由主站或从站的配置信息定义。
在主站发送远程帧(即步骤S21)之前,还包括主站启动的步骤,主站启动后从与该主站连接的设备(例如PC)获得配置文件。在步骤S24之前,主站需根据配置文件创建配置帧。
作为主站的设备节点在CAN网络启动之后:通过命令帧获得CAN网络中的传输错误数据并通过心跳帧实现对实现与从站之间的相互监视。
在步骤S25之前,还可包括检测各个从站是否准确配置的步骤,即根据来自各个从站的远程帧响应判断从站配置是否正确,若正确则执行步骤S25,否则通过配置帧清除从站配置并返回步骤S21。
在步骤S23之前还可包括:判断接收的从站的基本信息及状态是否正确,若正确则执行步骤S23,否则停止网络运行并报告错误。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。