在数据通信领域,有多种方式可以在设备或系统之间传输信息。两个突出的概念是面向消息和面向参与者的数据传输。这些概念在发送、接收和解释数据的方法上存在根本差异。
在下面的博客文章中,我们将仔细研究这两种方法,我们还将研究在这种情况下应如何考虑CAN(控制器局域网)。让我们开始吧...
面向消息的数据传输
面向消息的数据传输的重点在于数据包或消息本身。
参与者连接到总线的消息由分配给此消息的唯一标识符(消息标识符)标识。此处未定义消息的目的地 。 只有总线参与者才能决定是否 接受已发送的消息。在这里, 一条消息可能不被任何总线参与者、一个总线参与者或许多其他总线参与者接受。由于消息标识符通常还定义了与总线访问相关的 消息优先级,因此即使在总线负载较高的情况下,也可以以较短的延迟时间向总线介质提供高优先级消息访问。
消息生产者通常不知道其消息的使用者 是谁,这意味着确认的消息交换是不 可行的。这就是为什么“错误信令”原则通常应用于面向 消息的协议,而不是确认原则。
因此,面向消息的数据传输将数据传输视为在系统或组件之间交换消息的过程,而参与者的身份则不在前台。每条消息都包含使用者处理消息所需的所有必要信息。这种方法允许生产者和消费者之间实现松散耦合,这意味着对通信链一端的更改不一定需要另一端的更改。
以参与者为导向的数据传输
与面向消息的传输不同,面向参与者的数据传输侧重于通信参与者的身份。使用这种方法,谁在发送消息以及谁在接收消息至关重要。数据传输是根据所涉及的参与者及其彼此之间的关系来组织的,并且根据参与者地址、节点号或模块标识符进行数据交换。
通过总线传输的消息通常包含参与数据交换的参与者的目的地和源地址(或编号)。保留特殊地址,用于传输面向一组参与者或所有参与者的消息(广播)。面向参与者的消息传输意味着,除其他事项外,还必须指定传输给参与者的消息。
CAN如何沟通?
CAN系统通常以面向消息的方式进行通信。每封邮件都标有唯一的 ID,该 ID 指示其内容,但也确定其优先级。另一方面,消费者和生产者没有直接识别。这意味着消息是根据其重要性传输的,而不是基于发送或接收的特定参与者。网络中的所有节点都侦听所有消息,并根据消息 ID 独立决定消息是否与它们相关。这允许很大的网络灵活性和可扩展性。
使用更高的基于CAN的协议,如CANopen,增强了底层的CAN面向报文的通信,并可以直接向参与者求地址。为此,CANopen网络中的每个设备都有一个唯一的节点ID,用于识别网络中的设备。此节点 ID 在消息中用于确定消息是从哪个设备发送的,或者消息是针对哪个设备发送的。通过这种方式,可以有针对性地在设备之间交换控制命令和配置数据。这通常发生在单播中,这意味着此数据在客户端和服务器之间使用请求-响应模型进行 1 对 1 通信。
总结
面向消息的传输提供了灵活性和松散耦合,而面向参与者的传输允许在已知参与者之间进行有针对性的通信。CAN等系统利用面向消息的传输优势,实现总线参与者之间的高效通信。 然而,通过使用更高的协议,面向消息和面向参与者的通信的优势可以与CAN相结合。