从本篇开始,我将深入学习CANopen和CAN相关知识。但在这之前,本篇文章先来了解一下嵌入式网络相关的通用术语。

1 现场总线和串行总线

  • 现场总线(Fieldbuses)来源于制造或加工厂的生产现场使用的总线系统。
  • 仅仅提到现场总线并不能确定具体使用的是哪种类型的现场总线。许多现场总线基于串行总线,这意味着数据是逐位传输的。

2 仲裁、令牌环、多主控、CSMA/CD

大多数计算机化的通信系统需要一种方法来避免冲突。当两个或多个节点同时传输数据并因此破坏彼此的消息时,就会发生冲突。换句话说,某个节点何时可以传输数据,传输多长时间?

一种方法是将令牌(可能是特定消息)从一个节点传递到另一个节点(形成逻辑环)。只有当前拥有令牌的节点才能向网络传输数据。一旦节点完成传输,它会传递令牌并保持静默,直到再次获得令牌

多主控环境中,节点可以随时传输数据,并且在检测到冲突时立即解决。以太网使用的方式是载波监听多路访问/冲突检测(CSMA/CD)。简而言之,这意味着每个节点监听网络(载波监听)并可以随时传输数据(多路访问)。如果在以太网中检测到冲突,将启动干扰序列,破坏参与通信的所有节点的消息。在随机时间延迟后,传输节点将重新尝试。

这种通信方案的问题在于干扰序列会破坏带宽(在干扰期间无法传输数据),并且消息延迟不是确定性的,使整体响应或传输时间难以预测。

CAN 使用的是 CSMA/CD 的一种修改版,带有冲突避免Collision Avoidance)功能。CAN 通过优先级解决冲突,在发生冲突时,优先级较高的消息可以访问网络。

3 输入输出

输入信号通常来自传感器,并进入控制系统。如果使用网络,信号通过网络传输到另一个节点,可能是主节点或直接传输到另一个输出节点。

输出信号传送到应用程序,通常到执行器,并来自控制系统。如果使用网络,输出模块接收信号,信号可能来自主节点或另一个输入模块。

在这里插入图片描述

在上图中,有2个输入节点,对应2个输出节点。但是,在嵌入式网络中,情况会复杂一点:

在这里插入图片描述

嵌入式网络通常使用分布式控制,这意味着没有主节点,每个节点自行决定如何处理数据(可以输入也可以输出)。

4 主从节点

主节点对从节点具有某种控制功能,涉及扫描网络并检测从节点的添加或移除以及节点的配置。在由主节点驱动的通信中:

  • 从节点通常不能自行通信或相互通信
  • 只有主节点可以发起通信,而从节点只有在收到主节点的请求时才会响应

如下图所示:

在这里插入图片描述

下图则为无主通信模型

  • 所有设备都可以直接交换信息,而无需通过主节点路由消息
  • 效率更高,一条消息就足以将数据从一个设备发送到另一个设备
    • 在主/从通信模型中,需要两条消息:一条从输入到主节点,另一条从主节点返回到输出

在这里插入图片描述
飞行主节点:休眠的主节点,它可以在需要时变得活跃并接管成为新的主节点。确定这种休眠主节点何时以及如何变得活跃的方法有多种:

  • 使用协商阶段,其中网络上的一个节点向现有主节点请求成为新主节点的权限
  • 另一种方法是休眠主节点监视网络上的所有通信,并在现有主节点出现故障时识别出来。在这种情况下,它会自动变得活跃并替换故障的主节点。

5 客户端/服务端

  • 服务器为网络提供“服务”。比如为网络提供数据访问点(输入和输出)
  • 客户端是使用这些服务的网络节点
  • 网络模块成为服务器还是客户端与其作为主节点或从节点的状态无关,主节点和从节点都可以实现客户端和服务器功能。

6 生产者、消费者

生产者将数据发送到网络,而消费者从网络接收数据。

  • 生产者和消费者都可能有多个

7 点对点、多播、广播

计算机网络通常支持多个通信通道和方法。

  • 点对点通信:两个节点直接相互通信,其他节点要么看不到这个通道,要么忽略它,因此它们不受其他节点之间进行的通信的影响
  • 多播:是将一条消息传输给多个节点。通常,消息不会被拷贝,而是将消费者配置为同时接收发送的单条消息
  • 广播:是将一条消息传输给连接到网络的所有节点。主节点通常使用广播来发布网络范围的命令或发出紧急信号。

8 消息触发方式:轮询/时间驱动/状态变化/时间触发

轮询、时间驱动、事件驱动、状态变化(COS)和时间触发

网络在数据带宽和延迟时间方面的整体性能取决于所选的消息触发方式。那包含处理数据的消息何时以及如何传输呢?

(1)轮询

最传统的方法即轮询。使用这种方法时,主节点根据主节点中的控制算法要求轮询输入。由于需要额外的轮询消息,开销相当大,降低了可用带宽。

(2)时间驱动

生产者以固定时间间隔发送消息,如每50毫秒发送一次。这种方法使得带宽需求和最坏情况下的延迟时间变得可预测。时间驱动通信分为:

  • 本地计时器:每个节点都有自己的计时器,并在计时器到期时发送消息

    • 由于没有同步,节点之间的时间关系是不确定的。
  • 全局计时器:所有传输都是同步的

(3)状态变化

在状态变化上触发的事件驱动方法在数据发生变化时就会立即传输。没有变化就不传输。但在输入持续变化的情况下,可能会导致连续的网络流量。CANopen定义了一个抑制时间

  • 在此期间消息可能不会被重新发送
  • 在发送消息时,节点需要等待抑制时间过期后,才能使用相同的变量重新发送消息

(4)时间触发

这种方式提供带有时间窗口的同步信号。生产者可以在同步信号之后的某个微秒数开始的时间窗口内发送其消息。这种方法允许为某些通信通道预留带宽,以时间槽的形式进行。

  • 在CANopen中,所有这些触发机制都是可用的并且可组合的(除了时间触发通信)

8.1 例子

现在举一个例子来复习一下提到的所有术语

如下图所示,网络有一个主节点和三个从节点。从节点将它们的配置数据作为服务提供给网络。主节点则成为客户端,并使用点对点通信通道从客户端请求数据。

在这里插入图片描述

  • 主节点使用广播通道发送一条消息,通知所有从节点切换到特定的操作状态(运行/操作或停止)。
  • 节点B是输入节点,基于事件驱动。向主节点和节点C产生输入数据的多播消息(这些节点又成为消费者)

9 实时性与延时

许多嵌入式控制系统都有实时性要求。这意味着数据需要在规定的时间槽内立即、实时地进行处理。

  • 没有一般性的规范——它只需要足够快,能够满足应用的需求
  • 如果要求输入要在10毫秒内影响输出,那么系统必须保证输入的变化能在10毫秒或更短的时间内相应地影响输出

如果涉及到网络,消息传输可能会涉及延迟时间——由于无法立即访问网络,消息可能会被延迟。这可能是因为网络上当前正在进行另一条无法中断的消息传输。

10 物理因素:线缆、速度

在建立两个或更多计算机系统之间的通信之前,必须考虑到物理因素。物理传输介质是什么?是线缆、无线电信号还是其他什么?如果是线缆,是哪种类型?速度和最大带宽会是多少?

(1)线缆

对于嵌入式和工业通信,当涉及到物理介质时,线缆是首选。

  • 普通线缆:对阻抗、电阻或电导率没有特殊的要求
  • 双绞线和屏蔽线:嘈杂的环境或有大量电磁干扰(EMI)的情况下

(2)速度限制

所有连接的微控制器都需要能够处理所使用的速度。

  • 一个以1Mbps运行的网络可以每微秒传输一个比特。一个每微秒只执行一条指令的8位微控制器需要几条指令才能将一个字节从一个位置传输到另一个位置,它几乎可以跟上1Mbps网络的通信速度。

举个例子:最高速度意味着单条消息的长度大致在50到150微秒之间。因此,对于接收方来说,最坏的情况是每50微秒就有一条消息进入并需要被处理。如果接收微控制器跟不上这个速度,消息可能会丢失。


后续,我们将介绍CAN接口是如何帮助降低微控制器的工作负载,通过提供硬件过滤机制,这些实现可以被配置为忽略对微控制器没有兴趣的消息。只有当收到由本地微控制器接收的消息时,微控制器才需要做出反应。

11 ISO七层参考模型

标准的网络通信模型是ISO层模型,它从物理媒体到应用接口定义了7层(ISO7498)。

  • 大多数片上通信接口通常只实现第1层(物理层)的功能,更高层次的功能通常在软件中实现。

  • 有些,如CAN,也提供部分第2层功能(数据链路层)。

  • 传统的七层实现需要在任意相邻的两层之间提供一个接口,这会很大的开销。这就是为什么高层CAN协议只实现选定的高层功能,以最小化开销。

在这里插入图片描述

在CAN中,物理层和数据链路层的大部分功能都在硬件中实现,并没有标准化的软件接口。一些应用直接在数据链路层之上添加自己的应用层。但在CANopen中,至少其他层的一些部分被实现了。

1、物理层

  • 描述网络节点之间的物理互连(CANopen:使用ISO 11898协议,高速)
  • 包括所使用的信号的电学特性(CANopen:收发器使用差分信号)
  • 定义“位级”通信(CANopen:位生成、同步)

2、数据链路层

  • 将位组合成帧(CANopen:CAN数据帧)
  • 包括通过校验和进行错误检测(CANopen:由CAN提供)
  • 定义一组确认信号以确定成功传输(CANopen:由CAN提供)
  • 使得点到点通信能够成功到达下一个桥接或网关,但不超过此范围(CAN/CANopen:未提供)

3、网络层

  • 目标寻址和路由(CANopen:SDO通道,后续介绍)
  • 提供主机与网络之间的交互功能(CANopen:通过SDO进行配置)
  • 使用分段来允许传输大于帧允许大小的消息(CANopen:支持分段/碎片化传输)
  • 能够检测和响应网络带宽限制(CANopen:未提供)

4、传输层

  • 提供端到端的可靠性:源主机和目标主机之间的通信(CANopen:部分由NMT服务提供,后续介绍)
  • 双重检查端到端通信之间没有任何交换机、桥接或网关出现故障(CANopen:不支持长距离路由)

5、会话层

  • 允许网络上的不同主机开始和结束通信会话(CANopen:通常不使用)
  • 令牌管理:只有持有令牌的一方才能执行关键功能,如写入共享数据库记录(CANopen:SDO通道管理)
  • 同步:可用于大数据传输——支持中断传输的恢复(CANopen:SDO块传输模式支持中止,但不支持恢复)

6、表示层

  • 处理数据表示,并以标准化的方式编码数据(CANopen:对象字典,定义的数据类型)
  • 数据压缩(CANopen:不支持)
  • 加密/解密(CANopen:不支持)

7、应用层

  • 使用网络的应用程序程序
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐