接口/总线/驱动
工业应用中的网络主题有着悠久且相当复杂的历史。每个单独的行业都面临在单个设备上部署电子控制的任务,将这些控制连接到自动化孤岛,最后将这些孤岛拉入工厂范围的网络。这些现在已链接到企业网络,并与销售预测、库存控制和管理信息系统等相关联。但是,这超出了本文的范围。这种方法的问题在于不同的行业开发了不同的方法来实现网络。在 1980 年代,有一种运动是使用 ISO 的 OSI(开放系统互连)模型创建一种描述网络的通用方式,并找出不同网络技术使用该模型进行交互的方式。这将通信视为一个七层模型。第 1 层是物理层,定义电线、连接器以及信号通过电线(或光纤)传输的方式。这些层变得越来越抽象,直到第 7 层,应用层,它是网络之间的接口和通讯软件。
图 1:OSI 七层模型。
当时对 OSI 活动进行了巨额投资,其重要遗产包括能够根据相关 OSI 层描述当前的网络技术,即使它们不是用这种方法设计的。
今天有几种网络技术正在部署中。工业以太网正在稳步发展,特别是因为它被视为与标准以太网兼容。虽然它有很多优点,但也有一些缺点,特别是对于硬实时应用程序。尽管如此,许多早期的网络技术,如 Modbus 和 Profibus,已被改编为以太网上的覆盖。
CAN 总线越来越流行,并且可能是目前占主导地位的网络技术(尽管不同的市场数据给出了不同的数字)。这最初是作为连接汽车中越来越多的智能节点的一种方式,由罗伯特博世在德国开发。它在一般汽车行业被广泛采用,被 SAE(美国汽车工程师协会)接受,现在被国际标准化组织标准 ISO 11898 的多个部分所涵盖。在当前的实施中,CAN 总线成本低、鲁棒性强且能够耐受汽车的极端环境,这些特性使其对工业控制应用具有吸引力。它已变得如此普遍,以至于许多微控制器都在芯片上包含 CAN 接口,从而无需为每个节点配备专用控制器芯片。
CAN 总线
CAN 总线专为简化物理而设计。没有单一的主节点,因为网络上的每个节点都是主节点,并且节点通过单根端接双绞线电缆连接。每个节点都可以与任何其他节点通信。最大比特率为 1 Mbit/sec,可以在 40 m 左右的正常电缆长度上维持。随着电缆长度的延长,比特率下降,而对于理论上 10 公里的电缆,比特率将下降到大约 5 Kbit/sec。还有使用光连接甚至无线的 CAN 总线网络。它们的数据速率会有所不同。
图 2:CAN 总线连接。
节点没有指定具体地址,虽然理论上这允许无限数量的节点,但网络上的正常最大值约为 64 个。代替节点地址,消息具有确定消息优先级的标识符。CAN总线部署了CSMA/CD(Carrier Sense Multiple Access with Collision Detection),这意味着任何节点都可以传输消息。如果两个(或更多)节点尝试同时传输,则优先级较低的节点将让位于最高优先级并稍后重试。监听节点将识别与它们相关的消息并下载它们。
消息作为四种类型的帧传输。数据帧是消息传递的基本帧。此外还有远程帧,请求传输特定消息;错误帧,当节点检测到错误时发送;和过载帧,用于在数据帧之间添加延迟。
数据帧本身最多可以携带 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 模型的等价物未定义。一个定义涵盖从网络层到应用层的各个层,是由 560 家公司组成的联盟 CiA(自动化中的 CAN)开发的 CAN Open 标准。对此以及可以使用 CAN 总线的其他协议的选择在很大程度上取决于应用程序的上下文。
FlexCAN
CAN 的扩展,FlexCAN 以及相关的协议 SafeCAN,已在美国开发并在安全关键应用中取得了一些成功,因为它带来了确定性和实时性。通常,在微控制器上实现 FlexCAN 时,它向后兼容 CAN。
林
LIN,Local Interconnect Network,也来自汽车行业。它的开发是为了在 CAN 总线提供的高带宽和错误处理相关成本过高的应用中提供 CAN 总线的替代和扩展。在汽车应用中,这些是简单的东西,如窗户控制、雨量传感器和门锁,而在工业应用中,温度和压力传感器、非关键开关和简单的执行器自然是 LIN 网络的候选者。LIN 常用于创建 CAN 子网。
CAN 总线控制器往往是高 16 位和 32 位微控制器中提供的选项的一部分,LIN 可以使用标准串行通用异步接收器/发送器 (UART),即使是成本最低的 8 位微控制器或专用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 内核和基于 RISC 的 QUICC 通信引擎。它们设计为通信处理器,提供多种不同接口选择,可用于将 CAN 桥接到其他网络技术。在工业应用中,这通常是以太网,用于将 CAN 网络连接到更广泛的企业。在 MPC8306/9 系列中,有多种速度/功率权衡可供选择,而飞思卡尔是少数实施 FlexCAN 的制造商之一。飞思卡尔有一个涵盖MPC830X系列的开发套件。产品的低功率端是Silicon Labs C8051F5XX微控制器。它们基于 8 位 8051,采用小型封装,并提供用户对所有外围设备的控制,允许它们断电以节省电力。可用的工具包括一个可以容纳两个处理器的开发套件,允许使用 LIN 2.1 主从网络。
Texas Instruments 的 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条评论
快来发表一下你的评论吧 !