基于AT89C51型单片机的CAN总线智能节点设计
发布时间:2008/8/16 0:00:00 访问次数:576
介绍can(控制器局域网)总线的特点,给出can总线系统智能节点电路原理及用c51语言编写的开发程序,方便使用者学习和掌握。
1 引言
can(controller area network)是控制器局域网,主要用于各种设备检测及控制的现场总线。can总线是德国bosch公司20世纪80年代初为解决汽车中众多控制与测试仪器间的数据交换而开发的串行数据通信协议。这是一种多主总线,无论是在高速网络还是在低成本的节点系统,应用都很广泛。由于采用了许多新技术及独特的设计,与一般的通信总线相比,can总线的数据通信具有突出的可靠性、实时性和灵活性,其主要特点如下:
●通信方式灵活,可以多主方式工作,网络上任意一个节点均可以在任意时刻主动向网络上的其他节点发送信息,不分主从。
●can节点只需对报文的标识符滤波即可实现点对点、点对多点及全局广播方式发送和接收数据,其节点可分成不同的优先级,节点的优先级可通过报文标识符进行设置,优先级高的数据最多可在134μs内传输,可以满足不同的实时要求。
●can总线通信格式采用短帧格式,每帧字节数量多为8个字节,可满足一般工业领域中控制命令、工作状态及测试数据的要求,同时,8个字节不会占用总线时间过长,保证了通信的实时性。
●采用非破坏性总线仲裁技术,当多个节点同时向总线发送信息出现冲突时,优先级低的节点会主动退出数据发送,而优先级高的节点可不受影响地继续传输数据,大大节省了总线冲突仲裁时间,在网络重载的情况下也不会出现网络瘫痪。
●直接通信距离最大可达10 km (速率在5 kb/s以下),最高通信速率可达1 mb/s (此时距离最长为40 m);节点数可达110个,通信介质可以是双绞线、同轴电缆或光导纤维。
●can总线采用crc检验并可提供相应的错误处理功能,保证数据通信的可靠性,其节点在错误严重的情况下具有自动关闭输出功能,使总线上其他节点的操作不受影响。
2 can总线系统结构
由于can总线采用多主方式工作,所以具有与dcs(分布式控制系统)不一样的拓扑结构。其控制系统由计算机和智能节点组成,如图1所示。该系统最大的特点是所有的节点都能以平等的地位挂接在总线上。1个总线节点通常至少包括3部分:控制节点任务的单片机、总线控制器及总线驱动器。本文主要介绍can总线智能节点的简单设计。智能节点由89c5l型单片机、sja1000型总线控制器、82c250型总线驱动器及pc构成。在实际应用中可以连接不同的传感器件,完成数据的采集和传输。
3 硬件电路设计
笔者设计的can总线系统智能节点采用intel公司的at89c51型单片机作为节点的微处理器。at89c51具有64kb的寻址空间。本身不带can控制器,所以要实现与can总线之间的通信需外加can控制器和can驱动器。在本设计中采用sjal000型can总线通信控制器和at82c250型总线驱动器。
can总线系统智能节点硬件电路如图2所示。从图2可以看出,硬件电路主要由at89c51、sjal000、at82c250、6n137型高速光电耦合器和max202型电平转换器件组成。at89c51负责sjal000的初始化,控制sjal000实现数据的接收和发送等通信任务。max202用于ttl电平与rs232电平的相互转换,可以将接收的数据显示在pc上。sjal000的ado-ad7连接到at89c51的p0口,cs连接到at89c51的p2.7。p2.7为0时,cpu片外存储器地址可选中sja1000,cpu通过这些地址可对sjal000执行相应的读/写操作。
sjal000的rd、wr、ale分别与at89c51的相应引脚相连,sjal000的int接at89c51的intl,at89c51也可通过中断方式访问sja1000。
为了增强总线节点的抗干扰能力,sjal000的tx0和rx0并不直接与82c250的txd和rxd相接,而是通过6n137与at82c250相接,这样,很好地实现了总线上各节点间的电气隔离。不过,光耦电路用的2个电源vcc和vdd必须隔离。电源的完全隔离可采用小功率电源隔离模块实现。这虽然增加了接口电路的复杂性,但却提高了节点的稳定性和安全性。
at82c250与总线的接口也采取了一定的安全和抗干扰措施。
at82c250的canh引脚和canl引脚各自通过1只5 ω的电阻器与总线相连,电阻器可起到一定的限流作用,保护at82c250免受过电流冲击。canh和canl与地之间并联了2只30pf的小电容器,可以滤除总线上的高频干扰并具有一定的防电磁辐射能力。另外,在2条can总线输入端与地之间分别接了1个防雷击管,当2个输入端与地之间出现瞬变干扰时,防雷击管的放电起到一定的保护作用。at82c250的rs引脚接1只斜率电阻器,其阻值的大小可根据总线通信速度适当调整,一般在16 kω~140 kω之间。
4 软件设计
4.1 网络通信规则
can总线为多主工作方式,网络上任一节点均可在任意时刻主动向网络上其他节点发送信息而不分主从,通信方式灵活。为禁止总线冲突,can总线采用非破坏性总线仲裁技术,根据需要将各个节点设定为不同的优先级,并以标识符id标定,其值越小,优先级越高。总
介绍can(控制器局域网)总线的特点,给出can总线系统智能节点电路原理及用c51语言编写的开发程序,方便使用者学习和掌握。
1 引言
can(controller area network)是控制器局域网,主要用于各种设备检测及控制的现场总线。can总线是德国bosch公司20世纪80年代初为解决汽车中众多控制与测试仪器间的数据交换而开发的串行数据通信协议。这是一种多主总线,无论是在高速网络还是在低成本的节点系统,应用都很广泛。由于采用了许多新技术及独特的设计,与一般的通信总线相比,can总线的数据通信具有突出的可靠性、实时性和灵活性,其主要特点如下:
●通信方式灵活,可以多主方式工作,网络上任意一个节点均可以在任意时刻主动向网络上的其他节点发送信息,不分主从。
●can节点只需对报文的标识符滤波即可实现点对点、点对多点及全局广播方式发送和接收数据,其节点可分成不同的优先级,节点的优先级可通过报文标识符进行设置,优先级高的数据最多可在134μs内传输,可以满足不同的实时要求。
●can总线通信格式采用短帧格式,每帧字节数量多为8个字节,可满足一般工业领域中控制命令、工作状态及测试数据的要求,同时,8个字节不会占用总线时间过长,保证了通信的实时性。
●采用非破坏性总线仲裁技术,当多个节点同时向总线发送信息出现冲突时,优先级低的节点会主动退出数据发送,而优先级高的节点可不受影响地继续传输数据,大大节省了总线冲突仲裁时间,在网络重载的情况下也不会出现网络瘫痪。
●直接通信距离最大可达10 km (速率在5 kb/s以下),最高通信速率可达1 mb/s (此时距离最长为40 m);节点数可达110个,通信介质可以是双绞线、同轴电缆或光导纤维。
●can总线采用crc检验并可提供相应的错误处理功能,保证数据通信的可靠性,其节点在错误严重的情况下具有自动关闭输出功能,使总线上其他节点的操作不受影响。
2 can总线系统结构
由于can总线采用多主方式工作,所以具有与dcs(分布式控制系统)不一样的拓扑结构。其控制系统由计算机和智能节点组成,如图1所示。该系统最大的特点是所有的节点都能以平等的地位挂接在总线上。1个总线节点通常至少包括3部分:控制节点任务的单片机、总线控制器及总线驱动器。本文主要介绍can总线智能节点的简单设计。智能节点由89c5l型单片机、sja1000型总线控制器、82c250型总线驱动器及pc构成。在实际应用中可以连接不同的传感器件,完成数据的采集和传输。
3 硬件电路设计
笔者设计的can总线系统智能节点采用intel公司的at89c51型单片机作为节点的微处理器。at89c51具有64kb的寻址空间。本身不带can控制器,所以要实现与can总线之间的通信需外加can控制器和can驱动器。在本设计中采用sjal000型can总线通信控制器和at82c250型总线驱动器。
can总线系统智能节点硬件电路如图2所示。从图2可以看出,硬件电路主要由at89c51、sjal000、at82c250、6n137型高速光电耦合器和max202型电平转换器件组成。at89c51负责sjal000的初始化,控制sjal000实现数据的接收和发送等通信任务。max202用于ttl电平与rs232电平的相互转换,可以将接收的数据显示在pc上。sjal000的ado-ad7连接到at89c51的p0口,cs连接到at89c51的p2.7。p2.7为0时,cpu片外存储器地址可选中sja1000,cpu通过这些地址可对sjal000执行相应的读/写操作。
sjal000的rd、wr、ale分别与at89c51的相应引脚相连,sjal000的int接at89c51的intl,at89c51也可通过中断方式访问sja1000。
为了增强总线节点的抗干扰能力,sjal000的tx0和rx0并不直接与82c250的txd和rxd相接,而是通过6n137与at82c250相接,这样,很好地实现了总线上各节点间的电气隔离。不过,光耦电路用的2个电源vcc和vdd必须隔离。电源的完全隔离可采用小功率电源隔离模块实现。这虽然增加了接口电路的复杂性,但却提高了节点的稳定性和安全性。
at82c250与总线的接口也采取了一定的安全和抗干扰措施。
at82c250的canh引脚和canl引脚各自通过1只5 ω的电阻器与总线相连,电阻器可起到一定的限流作用,保护at82c250免受过电流冲击。canh和canl与地之间并联了2只30pf的小电容器,可以滤除总线上的高频干扰并具有一定的防电磁辐射能力。另外,在2条can总线输入端与地之间分别接了1个防雷击管,当2个输入端与地之间出现瞬变干扰时,防雷击管的放电起到一定的保护作用。at82c250的rs引脚接1只斜率电阻器,其阻值的大小可根据总线通信速度适当调整,一般在16 kω~140 kω之间。
4 软件设计
4.1 网络通信规则
can总线为多主工作方式,网络上任一节点均可在任意时刻主动向网络上其他节点发送信息而不分主从,通信方式灵活。为禁止总线冲突,can总线采用非破坏性总线仲裁技术,根据需要将各个节点设定为不同的优先级,并以标识符id标定,其值越小,优先级越高。总