社会中CAN总线采样点对CAN总线通讯影响的研究解析CAN协议意义
社会中CAN总线采样点对通信影响的研究:解析CAN协议意义
引言
CAN(Controller Area Network)是ISO国际标准化的串行通信协议,广泛应用于工业自动化、船舶、医疗设备等领域。现场总线作为自动化领域技术发展的热点,被誉为计算机局域网。CAN总线协议实现了物理层、数据链路层和应用层功能,因为其通常只包括一个网段,因此不需要传输层到会话层及描述层。在这个框架下,第2层即是CAN协议,而第7层则是应用层协议。CAN协议具有较强的纠错能力,在数据链路上保障传输可靠性,从而节省了应用层在这方面开销。
CAN总线特点包括:
(1) 数据通信无主从之分,每个节点可以向其他节点发起数据通信,依据优先级顺序决定通信次序。
(2) 多个节点同时发起时,优先级低避让高,不会对通讯线路造成拥塞。
(3) 通信距离最远可达10公里(速率低于5Kbps),速率可达到1Mbps(距离小于40米)。
(4) CAN总线传输介质可以是双绞线、同轴电缆或者光纤。适用于大数据量短距离或小数据量长距离,以及实时性要求高以及多主多从或各节点平等场合。
CAN总线采样点对于通信至关重要,特别是在组网模式下,每个网络中的所有节点应尽可能设置成统一采样点,并根据通讯距离和传输速率采用标准推荐的采样点数值。如果采样点相差较大,对同一网络中的不同节点进行数据交互可能导致失败。
CAN总线采样点规则与原理
CAN 协议将位时间分为同步段、传播段、相位缓冲段 1 和相位缓冲段 2,这些部分由称之为 Time Quantum 的最小时间单位构成。通过设置时序,使得可以设定一个采样点,以使得总线上多个单元可同时采样。这是一个锁存电平作为位值被读取出的瞬间。当这个瞬间发生在相位缓冲段 1 的结束处时,它就是我们说的 采集时间。在图 1 中展示了这种结构,其中同步边沿包含在此区间内;传播时间补偿网络延迟;相位缓冲区补偿信号边沿不能完全包含在同步区域内的情况;最后的是读取并解释每一位上的电平的一个固定位置,即所谓的“Sampling Point”。
图 1 - 位时间结构示意图
这里的 Sampling Point 就是在一个完整比特周期内占用的百分比,是 Sampling Point=(TSEG+TSEG)/((TSEG+TSEG)+TQ),其中 TQ 是 Time Quantum,即最小计数器步长单位。
对于常用频率,如16M Hz 时钟频率,SJW=4Tq, TSEG=12Tq, TSEG2=6*Tq,则 Sampling Point 计算如下:Sampling Point = (15/21)=70% 或者更精确地计算为:
[ Sampling;Point = \frac{15}{21} = \frac{5}{7} \approx 0.714286 ≈71% ]
这里我们使用表格来指导 sampling point 设置推荐值,当波特率超过800 Kbps 时建议75%,当波特率超过500 Kbps 时建议80%,当波特率不超过500 Kbps 时建议87.5%。
对于实际设计,可以通过调整 time segment 的大小来改变对 total bus delay 的补偿效果。
表 1 - 常用频度下的 sampling point 推荐值
关于 sampling point 计算公式:
[ Sampling;Point = \frac{Tseg_1 + Tseg_2}{(Tseg_1 + Tseg_2)} * Bit_Time * %100]
假设晶振时钟频率16MHz, SJW 为13个 Time Quantum(Tq), TSEG 为13个Tq,
[ Sampling_Point = (\frac{26}{26}) * (\frac{Bit_Time}{100}) = Bit_Time /100]
在实际操作中,我们应该尽可能地将 sampling point 设置到 CiA 建议的值:
当波特率 >800Kbps 时,sampling point 应设置为75%
当波特rate >500Kbps 时,sampling point 应设置为80%
当波尔rate <=500Kbps 时,sampling_point 应设置为87%
6.CAN 总线传输速度与长度分析
为了提高系统性能,我们需要考虑以下几个因素:
ACK 回应: 在标准帧中有两个隐性 bit 作为应答界定符(Acknowledgment delimiter)
数据包宽度: 每一帧都有自己的开始标志(SOF), 结束标志(EOF), 和CRC校验
总体延迟理论分析:
发送端发出 SOF 后进入控制码(Ctrl Code)、消息片(Message Frame)、CRC 校验(CRC Checksum)后跟随着ACK 回应窗口(Acknowledgement Window)
接收端接收到有效信息后,在预定的ACK回应窗口期间发送明显 bit 作答确认信息给发送端
如果没有检测到有效回复,就判定错误
理论上,要保证整个信号能以750ns内完成,那么整条链路必须保持低延迟状态
\( t_{total} < BitWidth*0.75\)
\( t_{total} < BitWidth*0\(t\)25\)
其中 \(t_{total}\) 表示整个信号处理过程所需时间,比如加密前后的变换过程
t_total = t_data_in + t_encrypt_in + t_decrypt_out + t_data_out
\(t_{data_in}\): 加入输入流程所需 时间,
\(t_{encrypt_in}\): 加密输入流程所需 时间,
\(t_{decrypt_out}\): 解密输出流程所需 时间,
\(t_{data_out}\): 输出流程所需 时间,
另外还要考虑其他因素如隔离器件延迟(\(Delay_Separator_junctions)\),
线缆损耗(\(Loss_of_line_cable)\),
节本驱动器循环(\(Circuit_Driver_Cycle_Time)\),
网络隔离子件(\(Network_Isolation_Device_Delay_time_t_nidj,\))等
以上内容涉及到了许多细节,但它提供了一个全面的视角来理解如何设计和配置您的系统以最大限度地减少潜在问题并提高稳定性。此外,还有一些具体情况需要进一步详细探讨,比如选择合适的人工智能模型以识别这些模式,并根据这些模式进行决策。此外,还有一些安全考虑也非常重要,以防止恶意软件利用这些漏洞进行攻击。而且,更深入的问题,如如何创建一种能够学习并适应不断变化环境条件的人工智能模型,这也是另一个挑战性的课题。但这正是我希望探索的一部分,也许未来我会写更多关于这一主题的话题。