首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

什么是CANopen?它与CAN总线有什么关系?

什么是CANopen?

CANopen的发展可以追溯到20世纪80年代。当时德国BOSCH公司开发的CAN总线由于其可靠性和通信性能比较突出,在汽车和工业领域中得到认可并广泛应用。CAN总线使用双绞线来传输信号,其多主结构使得网络中的各节点都可以根据总线访问优先权竞争向总线发送数据,同时也具有无损位仲裁机制和检错能力。在CAN总线协议的基础上,首先出现了一些针对特定应用领域的通信协议,但它们之间缺乏标准化。针对这一问题,一些公司和组织开始探讨和推动制定一种开放、标准化的高层通信协议,这就是CANopen的初期。

标准CAN2.0协议

在1992年,CAN in Automation(CiA)组织成立,致力于推动CANopen协议的发展和标准化。CiA组织由一些汽车和工业领域的公司共同组成,旨在促使CANopen在多个领域的广泛应用。CANopen的第一个国际标准ISO 11898-2在1994年发布,为CANopen协议的标准化奠定了基础。ISO 11898-2定义了CAN总线的物理层和数据链路层,而CANopen则构建在这一标准之上。随着CANopen标准的建立,该协议在工业自动化、汽车电子等领域得到了广泛应用。各类设备制造商开始采用CANopen协议,实现设备之间的互联,从而提高系统的可扩展性和互操作性。

CiA组织继续制定更多的CANopen标准,其中最重要的是CiA DS(Device Specification)和DS301/DS302标准。DS301定义了CANopen协议的基本特性,而DS302定义了CANopen设备的特定要求。在2010年代,CANopen开始在医疗设备领域得到广泛应用,尤其是在医疗设备之间的联网和协同工作方面,实现连接医疗设备内部的各种控制单元,例如监护仪、呼吸机、输液泵等。这种网络连接允许这些设备协同工作,共享数据,并能够实时响应患者的需求。

CANopen有一系列的技术细节

对象字典(Object Dictionary):这是CANopen节点中的一个关键组件,它是一个数据表,包含了节点所有可配置的参数和变量。它类似于设备的“身份证”,详细列出了设备的所有功能和特性。每个对象都由一个16位的索引和一个8位的子索引唯一标识。对象字典不仅包含了设备的配置参数,还包含了设备的实时数据和错误历史记录等。通过对象字典,系统集成者可以了解设备的所有细节,并对其进行适当配置。

通信对象(Communication Objects):这些对象用于在网络上传输数据。它们包括过程数据对象(PDO)和服务数据对象(SDO)。

过程数据对象(PDO):用于实时数据交换,支持快速和高效的通信。是CANopen中最快的通信机制,用于实时控制。它们可以被配置为在特定的事件发生时自动发送,例如定时器溢出、外部事件或内部状态的改变。这种机制确保了数据在关键时刻的及时更新。

服务数据对象(SDO):用于传输非实时数据,如配置参数或诊断信息。提供了一种更为复杂的通信机制,允许进行点对点的数据传输。SDOs通常用于传输那些不需要实时更新的数据,比如设备的配置参数。SDO传输可以是阻塞式的,即在SDO传输完成之前,其他的SDO传输不能进行。

节点状态机(Node State Machine):定义了节点的不同状态及其之间的转换,例如初始化、停止、操作等状态。

心跳和节点监控(Heartbeat and Node Guarding):这些机制用于监控网络上节点的状态和健康情况。是一种错误控制机制,用于监控节点的状态。每个节点定期发送心跳消息,表明它处于正常工作状态。如果在预定的时间内没有收到某个节点的心跳,系统就会认为该节点出现了故障。

在实际应用中,设备配置是一个重要的步骤。系统集成者需要根据应用的具体需求来配置每个节点的对象字典。这通常涉及设置PDO映射、通信参数和各种定时器。同时,网络的规划需要考虑网络的拓扑结构、电缆长度以及节点的分布。此外,还需要考虑总线的终端电阻,以确保信号的完整性。每个节点都有一个唯一的节点ID。节点ID的分配必须确保没有冲突,并且在网络启动时,所有节点都能够正确地加入网络中。每个节点都能够报告其错误状态,并且可以通过SDO或特殊的错误控制对象来获取更多的故障信息。系统需要能够响应这些错误,并采取适当的恢复措施。

可以看到,CANopen不仅仅是一个数据传输协议,它还提供了一套完整的机制来管理和监控整个网络。随着技术的不断进步,CANopen也在不断地演进,适应新的应用场景和要求。无论是在传统的工业自动化领域,还是在日益增长的智能设备和物联网应用中,CANopen都将继续发挥其重要的作用。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/Oy7BmmN0gYattY478oUdJNEA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券