您的位置:控制工程论坛网论坛 » 现场总线 » CAN总线及其在UPS网络监控系统中的应用

zhang1003

zhang1003   |   当前状态:离线

总积分:293  2024年可用积分:0

注册时间: 2007-04-01

最后登录时间: 2007-07-04

空间 发短消息加为好友

CAN总线及其在UPS网络监控系统中的应用

zhang1003  发表于 2007/4/1 21:48:01      1278 查看 1 回复  [上一主题]  [下一主题]

手机阅读

1  引言
随着网络的普及,网络的可靠性越来越受到人们的关注,而影响网络可靠性的关键是网络系统中的电源系统的可靠稳定,要求能对其运行状态进行实时监控,及时发现异常情况和事故隐患,在出现异常和故障时迅速进行诊断并予以修复,最大限度地减少UPS的停机时间即成必要。笔者针对不间断电源系统,将CAN总线技术应用到系统的网络监控中,并充分利用CAN能够以较低的成本、较高的实时处理能力在强电磁干挠环境下可靠地工作的优点,开发出UPS网络监控系统。  
2  CAN总线概况
CAN全称为Controller Area Network即控制器局域网,是国际上应用最广泛的现场总线之一。CAN最初出现在80年代末的汽车工业中,由德国Bosch公司最先提出。最初被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息形成汽车电子控制网络,发动机管理系统、变速箱控制器、仪表装备、电子主干系统中均嵌入CAN控制装置。现在它已发展为一种有效支持分布式控制或实时控制的串行通信网络。
2.1 CAN总线特点
CAN具有十分优越的特点,使人们乐于选择,这些特性包括:
(1) 多主方式工作
网络上任意节点可以在任何时刻主动的向任何其他节点发送消息,而不分主从;通信方式灵活,无需站地址等节点信息,可构成多机备份系统;
(2) 采用非破坏性总线仲裁技术
节点信息分成不同优先级,满足不同实时要求。当几个节点同时向网络发送消息时,运用逐位仲裁原则,利用帧中开始部分的标识符,优先级低的节点主动停止发送数据,而优先级高的节点则不受任何影响的发送信息;
(3) 借助接受滤波的多点传送
只需通过报文滤波可实现点对点、一点对多点,以及全局广播等方式传送,无需专门调度;
(4) 高速率、远距离、低出错率
CAN总线通信最高波特率可高达1Mbps(采用双绞线通讯距离40m)、最远通讯距离为10Km(可达5Kbps),CAN协议采用CRC校验并提供相应的错误信息处理功能;
(5) 通信介质选择灵活
通信介质可以是双绞线、同轴电缆或光纤,选择灵活;
(6) 半双工方式工作
CAN总线以半双工的方式工作,一个节点发送消息,多个节点接收消息;
(7) 抗干扰性能强
它采用集散控制技术,既可以满足控制的实时性和数据的实时采集及处理,又可以简化系统接线、提高控制网络的抗干扰能力。
2.2 CAN总线工作原理
CAN的通信介质为带优先级的CS-MA/CA,网络上任意节点可以在任何时刻主动的向任何其他节点发送消息,而不分主、从,即当发现总线空闲时,各节点都有权使用网络。而当发生冲突时,采用非破坏性总线优先仲裁技术,由于每个节点的CAN总线接口必须接收总线上出现的所有信息,因此必然需要设置一个接收寄存器。先将信息接收,再根据接收的信息标识符决定是否需要读取信息包中的数据。同时为了避免不必要的频繁中断,需要设置一个屏蔽寄存器来滤掉那些所在节点设备不感兴趣的信息,独立的CAN控制器SJA1000装配了一个多功能的验收滤波器,该滤波器允许自动检查ID和数据字节,使用这些有效的滤波方法,对于某个节点来说,无效的信息可被防止存储在接收缓冲器里,因此降低了主控制器的处理负载。由验收代码和屏蔽寄存器根据数据表给定算法来控制,接收到的数据会和验收代码寄存器中的值进行逐位比较,接收屏蔽寄存器定义与比较相关的位的位置(“0”=相关,“1”=不相关),只有收到信息的相应的位与验收代码寄存器相应的位相同,这条信息才会被接收。
CAN总线传递的信息以信息包的形式出现:
(1) 信息的消息标识符(11bit);
(2) 远地传送请求(1bit);
(3) 数据长度表 (4bit);
(4) 数据(0-8个bit)。
标识符既用来表明信息的类型(数据帧,远程帧),也用来表明信息的优先级;远地传送请求指需要数据的节点可以请求另一个节点发送一个相应的数据帧,该数据帧和对应的远程帧以相同的标识符ID命名。
2.3 接口电路
  



图1    CAN总线系统单个节点硬电路图  

图1为CAN总线控制器与CAN通信网络的接口电路。从图1中可以看出,此部分电路主要由三部分所构成:独立CAN总线控制器SJA1000T、总线收发器82C250和高速光电耦合器6N137。各部分功能如下:
(1) CAN控制器SJA1000T
SJA1000T内部集成了CAN总线的协议,与用户端控制器一起完成CAN的各项功能,起到中间协调作用;
(2) 总线收发器82C250
SJA1000与CAN物理总线之间的接口为82C250,它可提供对总线的差动发送能力和对CAN控制器的差动接收能力,具有较强的抗干扰能力。通过对脚8(RS)的不同连接可以实现三种不同的工作方式:高速、斜率控制和待机,本系统中采用斜率控制,以降低射频干扰;
(3) 高速光耦6N137
为了增强CAN总线节点的抗干扰能力,SJA1000 的TX0和RXO并不是直接与82C250的TXD和RXD相连,而是通过高速光耦6N137后与82C250相连,这样就很好的实现了总线上各CAN节点间的电气隔离, 不过应该特别说明的一点是光耦部分电路所采用的两个电源VCC和VDD必须完全隔离,否则采用光耦也就失去了意义,电源的完全隔离可采用小功率电源隔离模块或带多5V隔离输出的开关电源模块实现,这些部分虽然增加了节点的复杂但是却提高了节点的稳定性和安全性;
(4)82C250与CAN总线的接口部分
采用了一定的安全和抗干扰措施。82C250 的CANH和CANL引脚各自通过一个5Ω的电阻与CAN总线相连,电阻可起到一定的限流作用,保护82C250免受过流的冲击;CANH和CANL与地之间并联了2个100Pf的电容,可以起到滤除总线上的高频干扰和一定的防电磁辐射的能力;在两根CAN总线接入端与地之间分别反接了一个保护二极管,当CAN总线有较高的负电压时,通过二极管的短路可起到一定的过压保护作用。  
3  系统简介
系统的结构图如图2所示。
  



图2     并联UPS网络系统结构图  

图2中本地PC监控机及远程网监控机完成对该系统的数据实时监视及控制;显示监控模块在系统的面板上,与UPS1、UPS2、UPS3(仅列举3个,实际做到6个)通过CAN总线组成CANBUS网络,显示监控模块主要通过CAN总线完成对下面各UPS相关数据的采集,并与系统机显示模块、本地PC监控机、远程网监控机进行通信;UPS1、UPS2、UPS3为本系统的可单独运行供电的不间断电源。CANBUS网络通过CAN_H和CAN_L及外加在两端的电阻Rt(Rt=124Ω)组成,其上的节点CAN_H和CAN_L分别接在CANBUS网络的CAN_H和CAN_L上,目前CANBUS网络上最多可接110个节点。
鉴于本系统的要求,UPS1、UPS2、UPS3及显示监控模块的控制芯片均采用TI公司生产的TMS320F240DSP,CAN控制器采用PHILIP公司生产的SJA1000T。
3.1 DSP与CAN总线控制器硬件接口
DSP与CAN控制器SJA1000T之间的接口电路如图3所示。
  



图3    DSP与CAN控制器SJA1000T之间的接口电路  

SJA1000T的存储空间映射在微控制器DSP的I/O空间,对SJA1000存储空间的寻址必须用指令IN和OUT。在INTEL方式下读写SJA1000时,地址和数据是分时传送的,地址在前,数据在后。根据DSP对外设端口的逻辑时序及SJA1000T要求的读写逻辑时序,除了DSP的基本读写引脚WE、W/R外,我们还选用A14、A15、IS为控制脚,控制SJA1000地址空间和数据空间的选通,当A15=1、A14=0时为地址空间,选通ALE和CS;当A15=1、A14=0时为数据空间,此时对于DSP来说,写则选通SJA1000T的WR和CS, 读则选通SJA1000T的RD/W和CS,从而完成了DSP与SJA1000T之间的数据传递。
另外,由于接收数据采用中断方式,故在DSP上选用外部中断XINT1作为中断源,而SJA1000T是低有效,故通过一个上拉电阻接VCC。  
4  CAN通信网络软件设计
单个CAN节点通信的功能主要是将本节点的数据信息传送给CAN通信网络其它节点,以及接收网络上其它节点传送来的信息。CAN总线单个节点的软件设计主要包括三大部分:CAN节点初始化、信息的发送和信息的接收。设计时将CAN初始化、发送信息(数据和远程帧)设计为子程序,发送信息采用查询方式,接收信息采用中断方式。
(1) 初始化子程序
SJA1000的初始化只有在复位模式下才可以进行,初始化主要包括工作方式的设置、接收滤波方式的设置、接收屏蔽寄存器AMR和接收代码寄存器ACR的设置、波特率参数设置和中断允许寄存器IER的设置等。在完成SJA1000的初始化设置以后,SJA1000就可以回到工作状态,进行正常的通信任务,其源程序如下:
DATA_CAN   .SET  0c000h
DRESS_CAN  .SET  8000h
CAN_START:
LDP    #4  
SPLK   #0,TEMP  ;控制寄存器(MOD)设置
OUT    TEMP,DRESS_CAN
SPLK   #1BH, TEMP   ;复位模式
OUT   TEMP,DATA_CAN  ;SJA1000进行初始化
SPLK   #0, TEMP
OUT   TEMP,DRESS_CAN
IN     TEMP,DATA_CAN
BIT    TEMP,BIT0
BCND  CAN_RESET,NTC  
SPLK  #4,CANFLAG      ;设置验收代码寄存器
OUT   TEMP,DRESS_CAN
SPLK  #01h,CANFLAG   
OUT   TEMP,DATA_CAN
SPLK  #5, TEMP    ;设置验收屏蔽寄存器
OUT   TEMP,DRESS_CAN
SPLK   #000h, TEMP   
OUT   TEMP,DATA_CAN   
SPLK  #31, TEMP   ;设置时钟分频寄存器(CDR)
OUT   TEMP,DRESS_CAN
SPLK  #48H, TEMP ;选择BasicCAN模式,关
   ;闭时钟(CLKOUT)     
OUT   TEMP,DATA_CAN     
SPLK   #6, TEMP    ;设置总线定时寄存器0
OUT   TEMP,DRESS_CAN   
SPLK  #0C4H, TEMP ;Tscl=10Tclk,Tclk为XTAL
   ;的频率周期(20MHz)
OUT  TEMP,DATA_CAN ;不同总线控制器的时钟
    ;振荡器间的相对偏移为0
SPLK  #7, TEMP      ;设置总线定时寄存器1
OUT   TEMP,DRESS_CAN
SPLK  #0BEH, TEMP  ;设置Tsyncseg=Tscl,
;Ttseg1=15Tscl,Ttseg2=4Tscl
OUT   TEMP,DATA_CAN ;位周期为20Tscl,故在
     ;20MHz晶振情况下,设置波特率为100kbps
SPLK   #8, TEMP ;设置输出控制寄存器
OUT    TEMP,DRESS_CAN
SPLK   #1AH, TEMP    ;正常输出模式
OUT   TEMP,DATA_CAN ;TX1悬空,TX0推挽式
CAN_WORK   LDP #4  
SPLK  #0, TEMP  ;设置模式寄存器(MOD)
OUT   TEMP,DRESS_CAN
SPLK  #1AH, TEMP  ;设置双滤波接收方式,并
    ;返回工作状态
OUT   TEMP,DATA_CAN
SPLK   #0, TEMP
OUT    TEMP,DRESS_CAN
IN      TEMP,DATA_CAN
BIT     TEMP,BIT0
BCND   CAN_WORK,TC      
RET
(2) 发送子程序
负责单节点信息的发送,发送时只需将待发送的信息按特定格式组合成一帧,送入SJA1000发送缓存区中,然后启动SJA1000发送即可,当然在往SJA1000发送缓存区送信息之前必须先作一些查询判断,直到空闲时才能发送,发送子程序分发送远程帧子程序和数据帧子程序两种,远程帧无数据场;
(3) 接收子程序
负责单节点信息的接收以及其它情况处理。当CAN控制器接收到信息后向微控制器发出中断响应信号,微控制器在中断程序中将接收到的信息读入,再根据信息来控制节点的动作。接收子程序比发送子程序要复杂一些,因为在处理接收信息可能是诸如总线脱离、错误报警、接收溢出等中断,要对其进行处理。  
1楼 0 0 回复