介绍
在现场总线系统[1]、[2]中,CAN ISO IS-11898是工业应用中最古老、使用最多的通信系统之一。CAN IS-11898具有总线拓扑结构和载波传感器多路访问/冲突避免(CSMA/CA)机制,该机制基于主位(零位)的存在[3]。总线上的信息以有限长度的固定格式消息传输。每个消息都有一个标识符字段;标识符不指示消息的目的地,而是与消息所传送的数据的含义相关,因此网络中的所有通信节点都能够(通过消息过滤)决定是否对数据采取行动。由于消息过滤的概念,任何数量的节点都可以接收并同时处理同一消息。标识符是由11位或29位组成的序列,具体取决于CAN的版本(CAN规范2.0的a部分或B部分分别为[3]、[4])。
消息标识符定义了总线访问期间的静态优先级;当总线空闲时,连接到总线的任何通信节点都可以开始传输消息。如果两个或多个节点同时开始传输消息,则使用标识符通过仲裁解决总线访问冲突。在仲裁期间,每个发送器将当前传输的比特电平与总线上监测的电平进行比较。如果这些级别相等,则通信节点可以继续发送。当发送“隐性”电平(即位1)且节点监控“显性”电平(如位0)时,最后一个电平失去仲裁,必须在不发送更多位的情况下退出。失去仲裁的通信节点的消息传输被简单延迟;因此,仲裁机制保证信息不会丢失。
CAN用于支持各种工业应用之间的通信;其中有一个被归类为实时(RT)的特殊类[5]。RT应用程序之间非常常见的信息交换由生产者进程执行,生产者进程将信息传输到一个或多个消费者进程;信息由生产者定期更新的实时变量的值组成。这种信息交流的特点是有期限和截止日期;期间是变量的两次后续更新之间的时间间隔,截止日期是从每次生产开始的最大时间间隔,在该时间间隔内,变量所持有的当前值必须由使用者进程接收。有时,最后期限与期限重合。
在基于总线的通信系统(如CAN)中,必须正确调度每个实时变量,以便其所有值访问网络并在相关截止日期内消耗。考虑到CAN ISO IS-11898中关于仲裁机制的内容,RT变量的截止日期取决于分配给CAN消息的标识符,该消息传递其每个值。
CAN ISO IS-11898标准没有规定为消息分配标识符的任何规则。因此,在过去的几年中,人们进行了大量的研究活动,旨在定义能够根据要传输的每个实时变量的传输约束来固定消息标识符的调度方法。读者可以参考[6]、[7]、[8]、[9]了解CAN ISO IS-11898中的调度方法示例。
目前,有几种基于CAN ISO IS-11898的全通信堆栈通信系统可用。它们通常由ISO IS-11898数据链路和物理层之上的应用层组成,为控制应用程序之间的通信提供强大的服务和程序集。他们还可以提供网络管理服务,包括分配、存储和检索CAN标识符的服务。使用这些系统显然会带来更强大的应用程序,并降低软件开发成本。这些系统的示例包括CAL CiA[10]、CANOpen[11]、[12]、DeviceNet[13]和SDS[14]。
本文的目的是提出一种方法,旨在将CAN标识符分配给消息,同时考虑到要传输的每个变量的实时要求;该方法的主要特点之一是集成在基于CAN ISO is-11898的完整标准通信堆栈中,由应用层、数据链路层和物理层组成。特别是,已经考虑了基于CAN ISO IS-11898的两个最知名的通信系统:CAL CiA[10]和CANOpen[11],[12]。1996年,CAN在自动化、国际用户和制造商集团(CiA)中对两者进行了定义。第二个标准于2001年成为欧洲标准,并与DeviceNet和SDS一起被CENELEC纳入EN 50325。
这里提出的CAN标识符分配程序与这两个标准的集成已经实现,确保完全符合全通信堆栈每一层的可用服务。此外,如果标准通信堆栈已经提供了分配CAN标识符的服务和程序,则定义此处提出的建议是为了比标准提供的性能更好(在满足实时约束的能力方面)。
该提案是原创性的,因为如前所述,文献介绍了仅基于CAN ISO is-11898物理和数据链路层分配CAN标识符的方法。提出的方法的优点是允许实时交换信息(由于提议的CAN标识符分配)和使用完整标准通信堆栈提供的所有强大通信服务。
CANOpen标准完全基于CAL-CiA,因为它提供基于CAL-CiA提供的服务。事实上,定义CANOpen是为了定义CAL-CiA的一种配置文件,提供CAL-CiA的主要通信服务,同时简化其实现。因此,在两个标准上实施拟议的CAN标识符分配程序似乎是多余的。相反,本文将强调实现中的巨大差异。特别是,考虑到CAL CiA标准,所提出的CAN标识符分配程序已与标准已执行的CAN标识符指定协议集成;此外,本文将给出性能评估的结果,以便指出所提出的方法比CAL-CiA目前实现的更好地满足实时需求的能力。考虑到CANOpen,集成仅限于标准提供的通信服务和协议,因为标准CAL CiA标识符分配在CANOpent中不是强制性的。同样在这种情况下,本文将对提议的CAN标识符分配集成到CANOpen进行性能评估,强调其满足实时约束的能力。