|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
<strong>0 引言</strong>
CAN(Controller Area Network)总线是上世纪80年代德国Bosch公司开发的一种串行数据总线,属于现场总线的范畴。CAN总线主要特点如下:
(1)CAN 总线系统导线少(两线电源线,两根信号线),维护和安装便捷;
(2)CAN协议采用8字节的短帧结构,保证了传输的正确性和低误码率;
(3)CAN 协议对通信数据进行编码,使得网络的节点数不受限制且无主从之分;采用广播方式,不同的节点可以同时接收到相同的数据;
(4)采用CRC 检验并可提供相应的错误处理功能,保证数据通信的可靠性。
CAN总线具有突出的灵活性、实时性和可靠性,已广泛应用到机器人、汽车、数控机床、自动化仪表等领域的现场通信中。虽然CAN协议本身具有强大的纠错能力,但是在实际应用中由于硬件电路接口连接不牢和传输介质容易受到损坏,因此在电力机车、船舶机舱和航空航天等对可靠性要求很高的领域,往往采用冗余设计来提高硬件的可靠性。
<strong>1 冗余设计可靠性分析</strong>
采用CAN总线冗余设计,主要是为了提高系统的可靠性。已实际应用的有双总线冗余和三总线冗余等。总线冗余相当于系统并联,以双总线冗余设计为例进行分析。双总线通信模型如图2所示,原模型如图 1所示。文献只分析了双总线,这里借鉴其方法进一步分析已有实际应用的三总线的可靠性,指出双总线的效率最好,是本文要采用的冗余方案。
<ignore_js_op>
2010-3-11 22:49:41 上传
<strong>下载附件</strong> (4.45 KB)
</ignore_js_op>
不妨设每条总线的可靠度均为R,则模型l的可靠度为:
R1=R
采用双总线冗余设计的模型2的可靠度为:
R2=1-(1-R)(1-R)
同理,采用三总线冗余设计的可靠度为:
R3=1-(1-R)(1-R)(1-R)
另外,假设每路CAN总线通信可靠度均为
<ignore_js_op>
2010-3-11 22:49:41 上传
<strong>下载附件</strong> (199 Bytes)
</ignore_js_op>
,则上述模型的可靠度为:
<ignore_js_op>
2010-3-11 22:49:41 上传
<strong>下载附件</strong> (3.22 KB)
</ignore_js_op>
若定义平均无故障时间为
<ignore_js_op>
2010-3-11 22:49:41 上传
<strong>下载附件</strong> (376 Bytes)
</ignore_js_op>
,则三种模型的平均无故障时间分别为:
<ignore_js_op>
2010-3-11 22:49:41 上传
<strong>下载附件</strong> (2.21 KB)
</ignore_js_op>
由
<ignore_js_op>
2010-3-11 22:49:41 上传
<strong>下载附件</strong> (1.15 KB)
</ignore_js_op>
,即采用冗余设计使平均无故障时间增加。由此可见,采用冗余设计确实能提高通信可靠性。
但是,由
<ignore_js_op>
2010-3-11 22:49:42 上传
<strong>下载附件</strong> (976 Bytes)
</ignore_js_op>
或
<ignore_js_op>
2010-3-11 22:49:42 上传
<strong>下载附件</strong> (1.1 KB)
</ignore_js_op>
,即采用双总线冗余设计使平均无故障时间的相对增加量比采用三总线高。由此类推可得,采用双总线冗余设计效率最高。因此,工程中只需采用双总线冗余即可。
<strong>2 节点电路设计</strong>
CAN节点一般采取CAN控制器或CAN接口芯片和总线驱动器构成。具体有三种构成形式:a.独立CAN通信控制器和驱动器构成,如SJAl000+PCA82C250;b.带控制功能的I/0器件和CAN驱动器构成, 如P82C150+PCA82C250;C.带在片CAN微控制器和CAN驱动器构成,如P80C592+PCA82C250。本文采用第三种形式,有利于简化电路设计,在冗余设计时便于程序控制。
CAN冗余有完全冗余和部份冗余两种。本文采用双总线冗余,完全冗余就是双控制器冗余:双控制器+双驱动器+双总线。部分冗余有两种形式:a.双驱动器冗余:单控制器+模拟开关+双驱动器+双总线;b.双总线冗余:单控制器+单驱动器+模拟开关+双总线。
请注意:这里的双总线冗余是对节点来说的,与上面的针对网络结构而言的仅只总线数目的双总线冗余不同,不要混淆。
<ignore_js_op>
2010-3-11 22:49:41 上传
<strong>下载附件</strong> (25.11 KB)
</ignore_js_op>
文献介绍的双驱动器冗余是在两个驱动器的接收引脚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所示。
<ignore_js_op>
2010-3-11 22:49:41 上传
<strong>下载附件</strong> (42.25 KB)
</ignore_js_op>
<ignore_js_op>
2010-3-11 22:49:41 上传
<strong>下载附件</strong> (14.55 KB)
</ignore_js_op>
对于所有节点来说,双CAN总线有同时运行和热备份两种运行方式。由于采用双驱动器冗余,只有一个总线控制器,所以每个节点不能同时从两路总线接收数据,故本文的驱动器冗余方式不能实现严格意义上的同时运行方式。另外,同时运行方式功耗大,总线通信利用率低。
若采用图3所示的电路,只能实现表1中的方式5和6,若采用图4所示的电路,只能实现表1中的方式1和4。方式2 和3具有非常特殊的作用:a.双总线同时运行时,可以为两个不同的节点传递报文,提高总线通信利用率;b.可能实现单节点调试。因为单节点采用其他方式调试时,报文发送后由于得不到应答而会检测到错误并不断重发报文,节点转为被动出错节点。
<strong>3 软件编程</strong>
CAN总线节点的通信程序主要包括初始化、报文发送和报文接收三部分。
(1)CAN节点初始化主要是配置控制组寄存器。在初始化前,必须确保CAN控制器进入复位模式。初始化主要有:配置总线定时器BTR0和BTR1,设定总线通信波特率;配置输出控制寄存器OCR,设定控制器输出管脚CTXO和CTX1的输出模式;配置验收码寄存器ACR和验收屏蔽码寄存器AMR,设定验收码和验收屏蔽码。
(2)报文发送程序将报文(目标节点ID、数据长度和数据)送入发送缓冲器,然后启动发送指令即可,CAN控制器能自动报文发送过程。报文发送可通过中断和查询两种方式实现,但是中断方式效率高,采用较多。
(3)报文接收程序是从CAN控制器的接收缓冲器读取节点需要的数据并保存。数据接收也可通过中断和查询两种方式实现,普遍采用效率高的中断方式。
<strong>4 结论</strong>
本文所设计的驱动器冗余电路简单,能较好地提高硬件可靠性,相对降低了成本,同时,为双总线运行提供了更多的方式,使得编程更加灵活,可以提高总线通信利用率。除此之外,在报文发送出现冲突时,还可以通过软件转移负荷,平衡双总线的通信负荷。
参考文献
1. 汪晋宽,马淑华,吴雨川.工业网络技术[M].北京:北京邮电大学出版社,2005.08.
2. 周江春.基于双CAN总线船舶机舱自动化监测系统的设计与实现[D].上海交通大学硕士学位论文.20040601.
3. 陈尧,孙汉旭,贾庆轩,等.空间机器人冷热双冗余CAN总线系统的研制[J].测控技术与仪器仪表,2008,(2):83-90.
4. 曹俊敏,孟祥群,唐厚君.单个CAN控制器的双总线冗余网络实现[J].微处理机,2007(4):29-31.
5. 马力伟.基于双CAN冗余网络的电力机车逻辑控制单元设计[D].合肥上业大学硕士学位论文.20050301.
作者:段正强,梁述海 海军工程大学 来源:电子技术2009(12) |
|