摘要: |
汽车内部电子控制器件的不断增加使网络化的汽车整体控制成为当前汽车电子产业的主要发展方向之一。CAN(Controller Area Network)总线由于其低成本、高可靠性、高抗干扰能力和高实时性等特点,成为汽车内部控制网络的主要载体。作为CAN总线的应用层协议之一,CANopen具有高度的灵活性和可配置性,成为电动汽车和混合动力汽车控制网络的首选协议。
根据汽车系统的高实时性要求、多样的控制环境和CANopen协议本身的特点,建立CANopen网络的首要任务是建立一个实时运行、并行处理、灵活配置和可移植的CANopen主站。为了实现上述目标,本文提出了基于散列表的对象字典设计和基于标准C语言非抢占式任务调度机的CANopen主站协议栈设计。
基于散列表的对象字典有效地克服了传统数组型对象字典可配置性差的问题。同时通过对散列表的溢出表实施实时排序,大大加快了对象字典的读取速度。
基于标准C语言的非抢占式任务调度机为CANopen事件的并行处理提供了良好的平台,并天生具有良好的可移植性。在此之上建立的CANopen主站协议栈具有良好的实时性、高度的功能独立性和可移植性。
经过实际网络测试,该CANopen主站设计实现了最高5kHz的数据更新率,协议的完整度大大超过了开源协议栈。严格的代码结构也保证了较高的移植能力。
|