工业应用中的网络主题有着漫长而又纠结的历史。每个行业都接近在各个设备上部署电子控制的任务,将这些控制连接到自动化孤岛,最后将这些岛屿拉到工厂范围的网络中。它们现在链接到企业网络中,并与销售预测,库存控制和管理信息系统等相关联。但是,这超出了本文的范围。这种方法的问题在于不同的行业开发了不同的方法来实现网络。在20世纪80年代,有一种运动来创建一种用ISO的OSI(开放系统互连)模型描述网络的通用方法,并找到不同网络技术使用该模型进行交互的方式。这将通信视为七层模型。 1级是物理层,定义了电线,连接器以及信号穿过电线(或光纤)的方式。层变得越来越抽象,直到第7层,即应用层,即网络之间的接口和通讯软件。
图1:OSI七层模型。
当时对OSI活动进行了大量投资,其重要的遗产包括能够根据相关OSI层描述当前的网络技术,即使它们不是采用这种方法设计的。
今天有几种网络技术正在部署中。工业以太网正在稳步发展,特别是因为它被视为与标准以太网兼容。虽然它有很多优点,但它确实有一些缺点,特别是对于硬实时应用程序。尽管如此,许多早期的网络技术,如Modbus和Profibus,已经被改编为以太网上的覆盖。
CAN总线越来越受欢迎,也许目前占主导地位的网络技术(虽然不同的市场数据给出了不同的数字)。这开始是将汽车中越来越多的智能节点连接起来的一种方式,由Robert Bosch在德国开发。它被广泛应用于一般汽车行业,被SAE(美国汽车工程师协会)接受,现在由国际标准组织标准ISO 11898涵盖,有几个部分。在当前的实施方式中,CAN总线成本低,鲁棒且容许汽车的极端环境,这些特性使其对工业控制应用具有吸引力。它已经变得如此普遍,以至于许多微控制器在芯片上都包含CAN接口,因此无需为每个节点提供专用控制器芯片。一些估计表明,有超过20家公司为微控制器提供CAN功能,通常是16位或32位。
CAN总线
CAN总线的设计是为了简化物理。没有单个主设备,因为网络上的每个节点都是主设备,节点通过单个端接双绞线连接。每个节点都可以与任何其他节点通信。最大比特率为1 Mbit/sec,可以在大约40 m的正常电缆长度上维持。随着电缆长度的增加,比特率下降,对于理论上10千米的电缆,比特率将降至约5 Kbit/sec。还有使用光学连接甚至无线的CAN总线网络。他们的数据率会有所不同。
图2:CAN总线连接。
节点没有给定特定地址,虽然理论上这允许无限数量的节点,但网络上的正常最大值大约为64。消息具有确定消息优先级的标识符,而不是节点地址。 CAN总线部署CSMA/CD(带冲突检测的载波侦听多路访问),这意味着任何节点都可以传输消息。如果两个(或更多)节点尝试同时进行传输,那些优先级较低的节点将产生最高优先级并稍后重试。侦听节点将识别与其相关的消息并下载它们。
消息以四种类型的帧传输。数据框是消息传递的基本框架。另外还有远程帧,请求传输特定消息;错误帧,在节点检测到错误时发送;和过载帧,用于在数据帧之间添加延迟。
数据帧本身最多可携带8个字节的数据,并有7个字段:单个帧起始帧(SOF);仲裁领域;控制字段(指定消息的字节数);数据字段,介于0到8个字节之间; 15位CRC序列和1位定界符的循环冗余校验(CRC)字段;一个2比特的确认(ACK)字段(一个用于确认接收消息,另一个用于字段定界符);和帧结束(EOF)的七位。
仲裁字段定义了两种不同的数据帧类型:标准帧和扩展帧。标准帧使用11位标识符,而扩展帧又为标识符添加18位,以应对CAN总线覆盖的一些协议要求。
图3:CAN数据帧格式。
网络上的每个节点都会读取每条消息,并确定内容是否与它们相关。如果他们确定该消息是相关的,则该节点重置ACK字段位并重新发送该消息。这允许发送节点知道至少一个节点已经接收到该消息。所有的消息管理都由CAN总线控制器执行,最初是一个独立的设备,通常用于工业自动化,现在是主控制器的集成部分。
简要回到OSI 7层模型,CAN总线只有两层。一,电线,对应于模型的最低或物理层。另一种是消息格式和CSMA/CD过程,大致映射到数据链路层。这意味着CAN总线仅定义道路和在道路上行驶的车辆的整体形状。车辆携带的内容,数据字段的内容实际意味着什么,留待实施。这意味着更高级别的OSI模型的等价物未定义。一个涵盖从网络层到应用层的层的定义是由CiA(CAN in Automation)开发的CAN Open标准,这是一个由560家公司组成的联盟。这种以及可以使用CAN总线的其他协议的选择在很大程度上取决于应用程序的上下文。 CAN现已标准化为ISO 11898,ISO 16845和SAE J1939,适用于汽车,工业和通用嵌入式通信。
FlexCAN
CANC的扩展,FlexCAN以及相关协议SafeCAN已在美国开发,并且在安全关键应用方面取得了一些成功,因为它带来了确定性和实时性方面。通常,在微控制器上实现FlexCAN的情况下,它向后兼容CAN。
LIN LIN,本地互连网络,也来自汽车行业。它的开发是为了提供CAN总线的替代和扩展,在与CAN总线提供的高带宽和错误处理相关的成本太高的应用中。在汽车应用中,这些是简单的事情,如窗户控制,雨水传感器和门锁,而在工业应用中,温度和压力传感器,非关键的通断开关和简单的执行器是LIN网络的自然候选者。 LIN通常用于为CAN创建子网。
CAN总线控制器往往是高端16位和32位微控制器提供的选项的一部分,LIN可以使用甚至成本最低的8位微控制器上的标准串行通用异步接收器/发送器(UART)或专用的LIN接口。
LIN总线不是等状态节点,而是主从。任何LIN总线都有一个主站和一个或多个从站(最多16个)。主人还包括一个奴隶。主设备以预定义的顺序和频率轮询从设备。该消息可以是指令或信息请求。奴隶通过订阅(执行指令)或发布(提供信息)来回应。
图4:LIN消息帧。
LIN消息帧具有消息头和消息响应,主节点发送标头,其中一个从节点响应。 Header有三个元素:Break,Sync和Identifier,而Response有两个,Data和Checksum。 Break用于警告所有从站即将发送消息,而Sync允许从站同步到传输速度。标识符既提供消息的标识,也提醒特定消息相关的从属设备。然后,相关从站使用响应,在数据字段中提供最多8个字节的有效负载,并计算校验和值。标识符的映射和数据格式的内容是依赖于实现的。
当前标准是LIN 2.1,这为节点提供了睡眠模式。触发睡眠模式的不活动时段由开发人员定义,并由任何节点结束,主节点工作到预定义的调度,或者从属应用软件的预定义状态触发。
实现CAN
大多数微控制器开发人员提供CAN接口。通常,微控制器上的CAN接口将连接到CAN收发器,这些可从各种供应商处获得。
飞思卡尔拥有基于PowerPC架构的大量微控制器选项。 MPC8306/9系列是PowerQUICC II Pro产品,具有e300 PowerPC内核和基于QUICC,RISC的通信引擎。它们设计为通信处理器,提供多种不同接口选择,可用于将CAN桥接到其他网络技术。在工业应用中,这通常是以太网,用于将CAN网络链接到更广泛的企业。在MPC8306/9系列中,可提供各种速度/功率折衷,飞思卡尔是少数几家实施FlexCAN的制造商之一。飞思卡尔拥有跨越MPC830X系列的开发套件。产品的低功耗端是Silicon Labs C8051F5XX微控制器。这些是基于8位8051的,采用小型封装,并提供用户对所有外设的控制,允许它们断电以节省功耗。可用的工具包括一个可以容纳两个处理器的开发套件,允许运行LIN 2.1主从网络。
德州仪器(TI)的Stellaris系列提供基于ARM Cortex内核的大量功率/速度选项。 Stellaris 2000,5000,8000和9000系列都具有CAN功能。 TI提供了一系列用于使用Stellaris开发CAN网络的电路板和套件,采用不同的开发环境,如IAR,Keil和CodeSourcery。 TI还提供具有CAN功能的其他微控制器架构,包括Piccolo系列的成员; Sitara ARM微处理器,基于ARM9或Cortex-A8内核;和Hercules安全微控制器平台,专为使用ARM Cortex-M3和Cortex-R4F内核的IEC 61508和ISO 26262安全关键应用而设计。
Atmel还有几个支持CAN的系列,包括32位AVR AT32UC3C和基于ARM9的SAM9的成员。此外,Microchip还提供大多数PIC变体的CAN,包括8位PIC 10/12/16和18,16位PIC24和32位PIC32。与大多数制造商一样,这些都得到了各种开发套件的支持。
参数
这只是一些可用微控制器选项的简短摘要。选择微控制器的问题不在于它是否有CAN。相反,选择标准将是通常使用的选择标准,使用诸如功率/性能,其他外围设备和可用软件之类的参数。通常关键的因素是,特定建筑的内部投资,包括工具和人工年数,是否能够让这个项目在高质量,时间和预算范围内完成。
全部0条评论
快来发表一下你的评论吧 !