一:传输模式
CAN
- 多主竞争式总线结构:CAN 总线是一种多主总线,网络上的任意节点在任意时刻都可以主动向总线上发送数据,不存在主从设备之分。所有节点都可以监听总线上的数据,当一个节点发送数据时,其他节点会接收并判断是否与自己相关。
- 消息优先级仲裁:总线上的每个消息都有一个唯一的标识符,标识符不仅用于标识消息的内容和来源,还用于仲裁总线访问权。当多个节点同时尝试发送数据时,CAN 控制器会根据标识符的优先级进行仲裁。标识符数值越小,优先级越高。仲裁过程是逐位进行的,当一个节点发送的位与总线上已有的位不同时,如果发送的是隐性位(逻辑 1),而总线上是显性位(逻辑 0),则该节点会自动停止发送,直到总线空闲,优先级高的节点获得总线控制权并继续发送数据。
- 非破坏性总线仲裁:这种仲裁方式的特点是非破坏性的,即仲裁过程中不会破坏已经在总线上传输的数据。即使有多个节点同时竞争总线,也不会导致数据冲突和丢失,保证了通信的可靠性和实时性。
- 数据帧结构:CAN 数据帧由帧起始、仲裁场、控制场、数据场、CRC 场、应答场和帧结束等部分组成。仲裁场包含标识符,用于总线仲裁和消息识别;控制场包含数据长度码等信息,用于指示数据场的长度;数据场用于传输实际的数据内容,长度可根据需要在 0-8 字节之间变化;CRC 场用于对数据进行循环冗余校验,以检测数据传输过程中是否出现错误;应答场用于接收节点向发送节点反馈应答信号,表明数据是否正确接收。
RS-422
- 差分信号传输:RS - 422 采用差分信号传输方式,通过两根信号线 A 和 B 之间的电压差来表示逻辑状态。发送端将逻辑电平转换为差分信号,在 A 线上发送正信号,在 B 线上发送负信号,两者幅值相等、极性相反。当 A 线电压比 B 线电压高时,表示逻辑 1;当 A 线电压比 B 线电压低时,表示逻辑 0。
- 主从通信模式:RS - 422 通信系统通常包含一个主设备和多个从设备,主设备负责发起通信和控制数据传输过程。主设备可以向从设备发送命令或数据,从设备根据主设备的指令进行相应的操作,并将数据或状态信息返回给主设备。在半双工模式下,主从设备之间的数据传输是单向的,同一时刻只能有一个方向的数据传输。主设备发送数据时,从设备只能接收;从设备发送数据时,主设备只能接收。在全双工模式下,主从设备之间可以同时进行双向数据传输,需要两对差分信号线,分别用于发送和接收数据。
- 数据传输过程:主设备在发送数据时,将待发送的逻辑数据转换为差分信号,通过发送驱动器将信号发送到 A、B 两根信号线上。信号在传输过程中,会受到传输线的衰减、干扰等影响,但由于差分信号的特性,能够有效抑制共模干扰,保证信号的完整性。从设备的接收端通过差分接收器检测 A、B 两根线之间的电压差,将差分信号还原为逻辑数据,从而实现数据的传输。
RS-485
- 差分信号传输基础:与 RS - 422 类似,RS - 485 也是基于差分信号传输原理。通过两根信号线 A 和 B 来传输信号,以 A、B 两根线之间的电压差来表示逻辑状态。当 A 线电压高于 B 线电压时,代表一种逻辑状态;当 A 线电压低于 B 线电压时,代表另一种逻辑状态。这种差分传输方式使得 RS - 485 对共模干扰有很强的抑制能力,能够在长距离传输和恶劣电磁环境下保证数据的可靠传输。
- 半双工或全双工通信:RS - 485 支持半双工和全双工两种通信模式。在半双工模式下,总线上的所有节点共享一对差分信号线进行数据的发送和接收。节点在发送数据时,需要通过控制发送使能信号将发送驱动器使能,将数据转换为差分信号发送到总线上;在接收数据时,需要将发送驱动器设置为高阻态,使接收驱动器能够正常接收总线上的差分信号。由于所有节点共享总线,因此在同一时刻,只能有一个节点发送数据,其他节点处于接收状态。在全双工模式下,需要两对差分信号线,分别用于发送和接收数据,节点可以同时进行发送和接收操作,实现双向数据传输。
- 多节点通信机制:RS - 485 网络中可以有多个主设备和从设备,总线上的每个节点都有一个唯一的地址。主设备通过发送包含目标节点地址的命令帧来指定要与之通信的从设备,从设备接收到命令帧后,会检查地址是否与自己匹配。如果匹配,则根据命令进行相应的操作,并将响应数据发送回主设备。为了避免总线上的数据冲突,节点在发送数据前需要检测总线的状态,只有当总线空闲时才能发送数据。同时,节点在发送数据时需要控制发送使能信号,确保在发送数据期间不会有其他节点发送数据,保证数据传输的正确性。
-
二:电气特性
- CAN:使用双绞线,以 CAN_H 和 CAN_L 两根线之间的电压差表示逻辑状态。在显性电平(逻辑 0)时,CAN_H 的电压比 CAN_L 高,两者电压差通常为 2V 左右;在隐性电平(逻辑 1)时,CAN_H 和 CAN_L 的电压差接近 0V。
- RS-422:发送端驱动器将逻辑电平转换为差分信号,通过两根线(A、B)之间的电压差来表示逻辑状态。通常 A 比 B 高 2V - 6V 表示逻辑 1,A 比 B 低 2V - 6V 表示逻辑 0。接收端通过检测两根线的电压差来还原逻辑信号,对共模干扰有较强的抑制能力。
- RS-485:与 RS - 422 类似,通过两根线(A、B)的差分电压表示逻辑,A 比 B 高时表示一种逻辑状态,A 比 B 低时表示另一种逻辑状态,一般电压差在 1.5V 以上即可有效区分逻辑状态。RS - 485 的驱动器输出有三态,除了高电平、低电平外,还有高阻态,便于多个节点共享总线。
-
三:传输距离与速率
- CAN:传输速率最高可达 1Mbps,此时传输距离较短,一般在几十米以内。随着传输距离的增加,传输速率会降低,在速率为 100kbps 时,传输距离可达 1km 左右,能较好地满足一般工业控制和汽车电子等领域的需求。
- RS-422:传输速率较高,理论上可达 10Mbps 以上。在实际应用中,传输速率与传输距离相互制约,在 100kbps 速率下,传输距离可达到 1200m 左右,适用于长距离、高速数据传输的场合。
- RS-485:传输速率范围较宽,最高可达 10Mbps,一般情况下,速率为 9600bps 时,传输距离可达到 1200m 左右。当需要更远的传输距离时,可适当降低传输速率,通过增加中继器等设备,也可延长传输距离。