基于CAN总线的集散控制系统智能节点的设计

2011-06-09 14:28:25来源: 互联网

引言

  现场总线是当今自动化领域技术发展的一个热点,被誉为自动化领域的计算机局域网。它的出现,标志着工业控制技术领域又一个新时代的开始,并对该领域的发展产生了重要的影响。控制器局域网CAN(Controller Aera Network)属于现场总线的范畴,CAN总线的数据通信具有极高的可靠性、实时性和灵活性的特点,是一种有效支持集散控制系统和实时控制的多主串行总线。

1. 基于CAN总线的集散控制系统


图1 基于CAN总线的集散控制系统

  基于CAN总线的集散控制系统如图1所示,采用现场总线式控制系统FCS(Fieldbus Control System)结构,由上位机、CAN总线控制网络、CAN智能节点组成。上位机主要完成在线系统监控,上位机通过CAN适配卡与CAN总线相连;CAN智能节点完成数据采集及计算、节点设定、节点控制、运行显示等。上位机和智能节点之间通过CAN现场总线交换各种数据和管理控制信息。

2. CAN的性能特点

  CAN为多主方式工作,网络上任一节点均可在任意时刻主动地向网络上其他节点发送信息,而不分主从,通讯方式灵活,且无需站地址等节点信息。

  CAN网络上的节点信息分成不同的优先级,可满足不同的实时要求,高优先级的数据最多可在134μs内得到传输。

  CAN采用非破坏性总线仲裁技术,当多个节点同时向总线发送信息时,优先级较低的节点会主动的退出发送,而优先级较高的节点可不受影响地继续传输数据,从而大大节省了总线冲突仲裁时间。

  CAN只需要通过报文滤波即可实现点对点、一点对多点及全局广播等几种方式传送接收数据,无需专门的“调度”。

  CAN的直接通信距离最远可达10km(速率5kbps以下);通信速率最高可达1Mbps(此时通信距离最长为40m)。

  CAN上的节点数主要取决于总线驱动电路,目前可达110个,报文标识符可达2032种(CAN2.0A),而扩展标准(CAN2.0B)的报文标识符几乎不受限制。

  CAN采用短帧结构,传输时间短,受干扰概率低,具有极好的检错效果。

  CAN的每帧信息都有CRC校验及其他检错措施,保证了数据出错率极低。

  CAN通信介质可为双绞线、同轴电缆或光纤,选择灵活。

  CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响。

3. CAN智能节点硬件设计

  目前常用的CAN器件分为两大类,一类是独立的CAN控制器,如Philips的PCA82C250、SJA1000等,另一类是带有CAN功能的微控制器,如PIC的DSPIC6014、TI的TMS320F2812、Motorola的MC9S12DT128等等。本文采用Intel的 87C196KD微处理器和PHILIP的 SJA1000 CAN控制器完成CAN总线智能节点的设计


图2 CAN智能节点硬件电路

  CAN智能节点硬件电路如图2所示。电路主要由五部分组成:微控制器87C196KD、独立CAN控制器SJA1000、CAN总线收发器82C250、高速光电耦合器6N137、复位电路。

  微控制器87C196KD是CAN智能节点的核心部分,87C196KD具有32K字节的ROM和1000字节的RAM,可用高级语言编程。87C196KD主要完成节点数据采集及计算、节点设定、节点控制、运行显示等功能,并与CAN控制器SJA1000之间发送、接收数据。

  SJA1000芯片是一种应用广泛、性能优异的CAN总线控制器。SJA1000负责完成CAN总线通信协议的物理层和数据链路层的功能。它有Basicmode和Pelimode两种工作模式,与 Basicmode模式相比,Pelimode工作模式支持扩展帧,报文标识符可达29位,提供了更加强大的功能。为减少每帧非数据字符的数量,提高信息交换速度,在实际应用中宜采用Basicmode模式。在Basicmode模式下,SJA1000对于微处理器来说相当于一个存储器映像外围设备,它的可寻址域由控制段和接收、发送缓冲器组成。SJA1000的AD0~AD7连接到87C196KD的P3口(数据总线),采用并口连接方式,数据读写速度快。87C196KD 地址总线的P4.6、P4.7通过译码器与SJA1000的片选信号CS相连,SJA1000的RD、WR、ALE分别与87C196KD的RD、WR、ALE相连, SJA1000的INT经过非门与87C196KD的EXINT相连, 微控制器也可以通过中断的方式访问CAN控制器。

  82C250是CAN控制器与物理总线之间的接口。82C250的CANL和CANH与CAN总线相连,若82C250处于CAN总线的网络终端,CANL和CANH之间需加一个匹配电阻,用于消除反射信号的干扰。RS用于选择三种不同的工作方式:高速、斜率控制和待机,RS串接一个电阻后再接地,用于控制上升和下降斜率,减小射频干扰。

  为了进一步提高系统抗干扰能力,在CAN控制器SJA1000和CAN总线收发器82C250之间加接高速光电耦合器6N137,并采用DC-DC变换器隔离电源,这样就很好的实现了总线上各个CAN节点之间的 器隔离。

  复位电路由看门狗MAX706和手动复位按扭组成。当系统发生故障时,MAX706自动产生复位信号给87C196KD和SJA1000复位,若想重新启动程序,可用手动复位按扭复位。

4. CAN智能节点软件设计

  CAN智能节点的软件设计主要包括三部分:CAN初始化程序、报文发送程序、报文接收程序。下面给出了Basic CAN模式CAN智能节点软件的程序框图和C语言源程序。

  a.CAN初始化部分
  

  #include <80c196kd.h>

  /* 应包含的微控制器寄存器的定义*/

  #include _SFR_H_

  #include _FUNCS_H_

  #define BASE_CAN 0Xa000 /*定义CAN控制器基址*/

  typedef struct {

  unsigned int id; /*报文标识符*/

  unsigned char rtr; /*远程帧位*/

  unsigned char dlen; /*数据长度*/

  unsigned char data[8]; /*数据*/

  } MSG_STRUCT; /*将CAN协议的帧用C语言的结构表示*/

  void init_can()

  {

  *(unsigned char*)(BASE_CAN + 0) = 0x01; /*SJA1000进入复位状态*/

  *(unsigned char*)(BASE_CAN + 4) = 0x00; /* 初始化接收代码寄存器ACR */

  *(unsigned char*)(BASE_CAN + 5) = 0xff; /* 初始化接收屏蔽寄存器AMR */

  *(unsigned char*)(BASE_CAN + 6) = 0x00; /* 初始化总线时序寄存器BTR0 */

  *(unsigned char*)(BASE_CAN + 7) = 0x14; /* 初始化总线时序寄存器BTR1 */

  *(unsigned char*)(BASE_CAN + 8) = 0xfa; /* 初始化输出控制寄存器OCR */

  }

 b.报文发送部分

  unsigned char can_send(MSG_STRUCT smsg)

  {

  unsigned char v;

  int i;

  v=*(unsigned char*)(BASE_CAN + 2);

  if( v &0x08) /*判断是否可以发送数据*/

  { v=smsg.id>>3; /*标识符送识别码寄存器*/

  *(unsigned char*)(BASE_CAN + 10) = v;

  v=*(unsigned char*)(BASE_CAN + 10);

  v=smsg.id & 7; /*识别码0-2位、RTR、DLC*/

  v<<=5;

  v+=smsg.dlen;

  *(unsigned char*)(BASE_CAN + 11) = v;

  for(i=0;i 

  { *(unsigned char*)(BASE_CAN + 12+i) = smsg.data[i]; }

  *(unsigned char*)(BASE_CAN + 1) = 0x01;

  return(1);

  }

  else

  { return(0);}

  }

  c.报文接收部分
  

  unsigned char can_receive()

  {

  MSG_STRUCT rmsg;

  int i;

  unsigned char buf1,buf2;

  while((*(unsigned char*)(BASE_CAN + 2)) & 0x01)/*判断是否有可接收信息*/

  {buf1 = *(unsigned char*)(BASE_CAN + 20); /*将一帧信息取出*/

  buf2 = *(unsigned char*)(BASE_CAN + 21);

  rmsg.dlen = buf2 & 0x0f; /*数据长度*/

  for(i=0; i< rmsg.dlen; i++) /*取出数据*/

  {rmsg.data[i]=*(unsigned char*)(BASE_CAN + 22 + i); }

  *(unsigned char*)(BASE_CAN + 1) = 0x04; /*释放接收缓冲器*/

  rmsg.rtr = (buf2 >> 4) & 0x01; /*远程帧*/

  rmsg.id = buf1; /*取出报文标识符*/

  rmsg.id <<= 3;

  rmsg.id |= (buf2 >> 5) & 0x06;

  switch (rmsg.id) /*按标识符转入不同的数据处理程序*/

  case ……

  {……

  ……}

  break;

  case ……

  }

  }

5. 结束语

  本文的创新点在于:将现场总线引入到集散控制系统中,克服了传统的串行通讯集散控制系统的实时性不强,通讯可靠性差的问题。所给出的CAN智能节点已应用于某发电厂的集散控制系统中,经过一年多的运行情况发现该设计方案具有较好的可靠性、实时性和灵活性。CAN智能节点不仅可以应用于集散控制系统,还可以用于其它分布式控制系统。

关键字:控制系统  智能  节点  设计

编辑:eeleader 引用地址:http://www.eeworld.com.cn/gykz/2011/0609/article_6511.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
控制系统
智能
节点
设计

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved