一种新型CAN总线冗余电路设计与研究
时间:03-11
来源:互联网
点击:
0 引言
CAN(Controller Area Network)总线是上世纪80年代德国Bosch公司开发的一种串行数据总线,属于现场总线的范畴。CAN总线主要特点如下:
(1)CAN 总线系统导线少(两线电源线,两根信号线),维护和安装便捷;
(2)CAN协议采用8字节的短帧结构,保证了传输的正确性和低误码率;
(3)CAN 协议对通信数据进行编码,使得网络的节点数不受限制且无主从之分;采用广播方式,不同的节点可以同时接收到相同的数据;
(4)采用CRC 检验并可提供相应的错误处理功能,保证数据通信的可靠性。
CAN总线具有突出的灵活性、实时性和可靠性,已广泛应用到机器人、汽车、数控机床、自动化仪表等领域的现场通信中。虽然CAN协议本身具有强大的纠错能力,但是在实际应用中由于硬件电路接口连接不牢和传输介质容易受到损坏,因此在电力机车、船舶机舱和航空航天等对可靠性要求很高的领域,往往采用冗余设计来提高硬件的可靠性。
1 冗余设计可靠性分析
采用CAN总线冗余设计,主要是为了提高系统的可靠性。已实际应用的有双总线冗余和三总线冗余等。总线冗余相当于系统并联,以双总线冗余设计为例进行分析。双总线通信模型如图2所示,原模型如图 1所示。文献只分析了双总线,这里借鉴其方法进一步分析已有实际应用的三总线的可靠性,指出双总线的效率最好,是本文要采用的冗余方案。
不妨设每条总线的可靠度均为R,则模型l的可靠度为:
R1=R
采用双总线冗余设计的模型2的可靠度为:
R2=1-(1-R)(1-R)
同理,采用三总线冗余设计的可靠度为:
R3=1-(1-R)(1-R)(1-R)
另外,假设每路CAN总线通信可靠度均为
,则上述模型的可靠度为:
若定义平均无故障时间为
,则三种模型的平均无故障时间分别为:
由
,即采用冗余设计使平均无故障时间增加。由此可见,采用冗余设计确实能提高通信可靠性。
但是,由
或
,即采用双总线冗余设计使平均无故障时间的相对增加量比采用三总线高。由此类推可得,采用双总线冗余设计效率最高。因此,工程中只需采用双总线冗余即可。
2 节点电路设计
CAN节点一般采取CAN控制器或CAN接口芯片和总线驱动器构成。具体有三种构成形式:a.独立CAN通信控制器和驱动器构成,如SJAl000+PCA82C250;b.带控制功能的I/0器件和CAN驱动器构成, 如P82C150+PCA82C250;C.带在片CAN微控制器和CAN驱动器构成,如P80C592+PCA82C250。本文采用第三种形式,有利于简化电路设计,在冗余设计时便于程序控制。
CAN冗余有完全冗余和部份冗余两种。本文采用双总线冗余,完全冗余就是双控制器冗余:双控制器+双驱动器+双总线。部分冗余有两种形式:a.双驱动器冗余:单控制器+模拟开关+双驱动器+双总线;b.双总线冗余:单控制器+单驱动器+模拟开关+双总线。
请注意:这里的双总线冗余是对节点来说的,与上面的针对网络结构而言的仅只总线数目的双总线冗余不同,不要混淆。
文献介绍的双驱动器冗余是在两个驱动器的接收引脚RXD 与控制器之间接一数控模拟开关,两个驱动器的发送引脚TXD都直接与控制器的发送引脚相连,如图3所示。这种连接方式只能从双总线选择一路接收数据,但是能向两路同时发送数据。
文献介绍的双总线冗余是在一个驱动器与双总线之间接一数控模拟开关CD4052,如图4所示。这种连接方式只能从双总线选择一路接收或发送数据。
上述两种电路都有一个不足,即双总线的运行方式不能选择,从而不能通过软件来提高总线的通信利用率。
本文对上述电路加以改进,在控制器和两个驱动器之问加一个数控模拟开关CD4053,如图5所示。
本文采用带在片CAN控制器的单片机P80C3592,节点电路连接图如图6所示。CAN控制器的发送输出端CTX0接CD4053的第二路模拟开关输出端Y;CAN控制器的接收输入端CRX0接CD4053的第一路模拟开关输出端X。CD4053的第一路模拟开关的输入端X0、X1分别接两个总线驱动器的接收输出端RXD;CD4053的第三路模拟开关的输出端Z与其输入端Z0连接后,然后将第二路与第三路模拟开关的输入端Y0、Y1和Z0、z1对应连接,再对应连接两个总线驱动器的发送输入端TXD。CD4053三独立选通由单片机的P1口低三位控制。这样就使得双总线可供选择的工作方式增加。对于单一节点来说,双总线所有可能的运行方式如表1所示。
对于所有节点来说,双CAN总线有同时运行和热备份两种运行方式。由于采用双驱动器冗余,只有一个总线控制器,所以每个节点不能同时从两路总线接收数据,故本文的驱动器冗余方式不能实现严格意义上的同时运行方式。另外,同时运行方式功耗大,总线通信利用率低。
若采用图3所示的电路,只能实现表1中的方式5和6,若采用图4所示的电路,只能实现表1中的方式1和4。方式2 和3具有非常特殊的作用:a.双总线同时运行时,可以为两个不同的节点传递报文,提高总线通信利用率;b.可能实现单节点调试。因为单节点采用其他方式调试时,报文发送后由于得不到应答而会检测到错误并不断重发报文,节点转为被动出错节点。
CAN(Controller Area Network)总线是上世纪80年代德国Bosch公司开发的一种串行数据总线,属于现场总线的范畴。CAN总线主要特点如下:
(1)CAN 总线系统导线少(两线电源线,两根信号线),维护和安装便捷;
(2)CAN协议采用8字节的短帧结构,保证了传输的正确性和低误码率;
(3)CAN 协议对通信数据进行编码,使得网络的节点数不受限制且无主从之分;采用广播方式,不同的节点可以同时接收到相同的数据;
(4)采用CRC 检验并可提供相应的错误处理功能,保证数据通信的可靠性。
CAN总线具有突出的灵活性、实时性和可靠性,已广泛应用到机器人、汽车、数控机床、自动化仪表等领域的现场通信中。虽然CAN协议本身具有强大的纠错能力,但是在实际应用中由于硬件电路接口连接不牢和传输介质容易受到损坏,因此在电力机车、船舶机舱和航空航天等对可靠性要求很高的领域,往往采用冗余设计来提高硬件的可靠性。
1 冗余设计可靠性分析
采用CAN总线冗余设计,主要是为了提高系统的可靠性。已实际应用的有双总线冗余和三总线冗余等。总线冗余相当于系统并联,以双总线冗余设计为例进行分析。双总线通信模型如图2所示,原模型如图 1所示。文献只分析了双总线,这里借鉴其方法进一步分析已有实际应用的三总线的可靠性,指出双总线的效率最好,是本文要采用的冗余方案。
不妨设每条总线的可靠度均为R,则模型l的可靠度为:
R1=R
采用双总线冗余设计的模型2的可靠度为:
R2=1-(1-R)(1-R)
同理,采用三总线冗余设计的可靠度为:
R3=1-(1-R)(1-R)(1-R)
另外,假设每路CAN总线通信可靠度均为
,则上述模型的可靠度为:
若定义平均无故障时间为
,则三种模型的平均无故障时间分别为:
由
,即采用冗余设计使平均无故障时间增加。由此可见,采用冗余设计确实能提高通信可靠性。
但是,由
或
,即采用双总线冗余设计使平均无故障时间的相对增加量比采用三总线高。由此类推可得,采用双总线冗余设计效率最高。因此,工程中只需采用双总线冗余即可。
2 节点电路设计
CAN节点一般采取CAN控制器或CAN接口芯片和总线驱动器构成。具体有三种构成形式:a.独立CAN通信控制器和驱动器构成,如SJAl000+PCA82C250;b.带控制功能的I/0器件和CAN驱动器构成, 如P82C150+PCA82C250;C.带在片CAN微控制器和CAN驱动器构成,如P80C592+PCA82C250。本文采用第三种形式,有利于简化电路设计,在冗余设计时便于程序控制。
CAN冗余有完全冗余和部份冗余两种。本文采用双总线冗余,完全冗余就是双控制器冗余:双控制器+双驱动器+双总线。部分冗余有两种形式:a.双驱动器冗余:单控制器+模拟开关+双驱动器+双总线;b.双总线冗余:单控制器+单驱动器+模拟开关+双总线。
请注意:这里的双总线冗余是对节点来说的,与上面的针对网络结构而言的仅只总线数目的双总线冗余不同,不要混淆。
文献介绍的双驱动器冗余是在两个驱动器的接收引脚RXD 与控制器之间接一数控模拟开关,两个驱动器的发送引脚TXD都直接与控制器的发送引脚相连,如图3所示。这种连接方式只能从双总线选择一路接收数据,但是能向两路同时发送数据。
文献介绍的双总线冗余是在一个驱动器与双总线之间接一数控模拟开关CD4052,如图4所示。这种连接方式只能从双总线选择一路接收或发送数据。
上述两种电路都有一个不足,即双总线的运行方式不能选择,从而不能通过软件来提高总线的通信利用率。
本文对上述电路加以改进,在控制器和两个驱动器之问加一个数控模拟开关CD4053,如图5所示。
本文采用带在片CAN控制器的单片机P80C3592,节点电路连接图如图6所示。CAN控制器的发送输出端CTX0接CD4053的第二路模拟开关输出端Y;CAN控制器的接收输入端CRX0接CD4053的第一路模拟开关输出端X。CD4053的第一路模拟开关的输入端X0、X1分别接两个总线驱动器的接收输出端RXD;CD4053的第三路模拟开关的输出端Z与其输入端Z0连接后,然后将第二路与第三路模拟开关的输入端Y0、Y1和Z0、z1对应连接,再对应连接两个总线驱动器的发送输入端TXD。CD4053三独立选通由单片机的P1口低三位控制。这样就使得双总线可供选择的工作方式增加。对于单一节点来说,双总线所有可能的运行方式如表1所示。
对于所有节点来说,双CAN总线有同时运行和热备份两种运行方式。由于采用双驱动器冗余,只有一个总线控制器,所以每个节点不能同时从两路总线接收数据,故本文的驱动器冗余方式不能实现严格意义上的同时运行方式。另外,同时运行方式功耗大,总线通信利用率低。
若采用图3所示的电路,只能实现表1中的方式5和6,若采用图4所示的电路,只能实现表1中的方式1和4。方式2 和3具有非常特殊的作用:a.双总线同时运行时,可以为两个不同的节点传递报文,提高总线通信利用率;b.可能实现单节点调试。因为单节点采用其他方式调试时,报文发送后由于得不到应答而会检测到错误并不断重发报文,节点转为被动出错节点。
总线 CAN总线 机器人 自动化 电路 单片机 电子 相关文章:
- 热插拔和缓冲I2C总线 (04-14)
- PCIe总线何时突破Unix服务器坚冰(02-03)
- TMS320VC5402 HPI接口与PCI总线接口设计(04-12)
- 基于Nios II的I2C总线接口的实现(04-09)
- 双口RAM CY7C026在高速数据采集系统中的应用(04-12)
- 计算机在新型多电机同步系统中的应用(07-08)