您好, 访客   登录/注册

基于单片机的CAN总线数据采集设计与实现

来源:用户上传      作者:

  摘要:为了提高工业控制中信息传输的稳定性,增强可靠性。提出了基于单片机的CAN总线数据采集节点的设计。CAN总线在工业中有着广泛的应用,性能良好,结构简单。每个通信节点都使用STC89C51单片机作为微控制器,SJA1000作为独立CAN控制器,PCA82C250作为CAN驱动器。从硬件设计和软件设计两方面进行了分析。硬件上三个节点设计,其中两个分别采集温度和红外遥控信号,一个作为上位机节点,来显示上几个节点发来的数据,软件上编写逻辑程序。结果表明,几个节点之间具有通信可靠,抗干扰强的特点。采用基于单片机的CAN总线通信的在工业控制中通信稳定,可靠性高。
  关键词:数据采集;CAN总线;单片机;节点设计
  0引言
  随着工业制造技术的发展。人们在工业控制上对通信的要求越来越高。CAN总线作为一种新兴的串行总线技术,以其独有的特点在汽车工业、自动控制、医学设备和楼宇自动化等诸多领域都有很多的应用。计算机行业的蓬勃发展给工业带来了旺盛的生命力,现场总线技术以其通信速度快、抗干扰性强、稳定性高在工业控制中有着广泛的应用前景。
  现场总线技术采用分布式管理,对各个控制器之间实现点对点通信,在通信网络中处于物理层网络,将需要通信间的设备智能连接起来。主要特点是各设备之间距离较远,危险的扩散可能性降低,有中央控制器集中管理,增强了管理能力,提高了可靠性、稳定性和安全性。CAN总线通信网络主要由智能节点、双绞线、上位机组成。本文基于此原理设计了基于单片机的CAN总线数据采集节点设计,通过温度采集节点采集温度值,红外线节点采集红外遥控信号,通过CAN总线技术传输给上位机。
  1 CAN总线数据采集硬件设计
  1.1 系统设计总体结构
  CAN总线数据多个采集节点主要由CAN智能节点、CAN总线与上位机组成。本文的上位机用单片机主节点来模拟,完成上位机功能,替代传统的电脑显示,方便现场工程控制。温读采集节点与红外采集节点作为从节点,完成数据采集的功能。拓扑结构如图1所示。
  1.2 系统采集节点硬件设计
  现场总线在具有复杂环境的工业控制中运行。因此节点的设计必须具有抗干扰性。为了使控制节点在工控中保证CAN总线具有良好的通信性能,节点设计是本文中的设计重点。本文通过STC89C52作为控制核心。采用SJA1000作为CAN控制器。为了验证设计能有效地进行数据传输,设计了三个节点,都是通过CAN总线进行数据传输,其中一个作为主节点,协调两个数据采集节点成为上位机,其它两个作为数据采集节点。节点设计如图2所示。组成结构包括单片机作为微处理器、CAN控制器、光电隔离电路、电源电路和CAN总线驱动电路。在整个控制系统中,单片机是整个控制器的中枢,用来处理数据,CAN控制器选择传统的SJA1000芯片。为了提高系统在实际应用中的稳定性。选择抗干扰的82C50,并且能驱动110个CAN节点。SJA1000是CAN驱动的控制芯片,82C250与SJA1000通过一个光电隔离器相连。光电隔离器选择高速光耦芯片,能起到隔离作用,并具有抗干扰作用。
  1.3 CAN总线通信节点电路
  CAN总线的通信节点电路的核心部分是SJA1000与单片机相连,如图3所示。本设计中,为了使SJA1000能在IN7EL工作模式下,SJA1000的MODE引脚通过单片机设置为高电平。将STC89C52控制芯片的数据/地址复用成I/O口八个引脚P0连接到SJA1000的ADO-AD7.单片机从八个引脚访问SJA1000的数据与地址。SJA1000相当于外部存储器。单片机访问外部设备需要访问存储器的地址与数据,才能工作,为了节约I/O口需要数据线与地址共用,这时将STC89C52单片机的地址锁存引脚与CAN控制器SJA1000的RD、WR与ALE信号分别相连。为了更好地控制STC89C52的外部地址,将P2.0口与P2.1口分别连接到SJA1000的CS引脚和复位引脚。
  1.4 CAN总线抗干扰电路
  CAN控制选择在汽车应用中较多的82C250,其通信速度快,能达到1Mbps,可以实现总线的接收与发送功能。82C250的内部控制器采用斜率控制的方式,有效地降低了外部环境无线信号的干扰,82C50的RS引脚接一个电阻,CAN驱动器工作在斜率控制模式下。在高温条件下,具有过热保护。CAN总线控制芯片与82C250通过一个5Ω相连,能起到过流保护。CAN总线会受到高频信号的干扰,如图4所示。82C250的两个引脚CANH和CANL与地之间并联一个电容与反向瞬态二极管,电容起到高频信号滤波作用,过滤高频信号,只低频信号通过:反向二极管能抑制饱和作用,通过设计干扰电路,考虑各个影响因素,加强了设计在实际系统中的使用。为了更好地抑制干扰。在82C250与SJA1000间通过隔离芯片6N137相连,实现电气隔离。系统对6N137的输入与输出接口的电源电路实现隔离。提高了节点的稳定性,对CAN控制器起到保护作用。
  1.5传感器电路
  如圖5所示,通过传感器感受采集数据。温度传感器采用DS18820,具有编程简洁、高效、数据传输快等特点,单片机仅用一个接口可读取传感器里的数据,既降低了硬件的成本,又提高了控制系统的可靠性。传感器是感知外部数据的组成部分,本文设计了两个传感器采集数据,通过单片机控制芯片控制DS18820与红外传感器采集数据,采集到的数据保存在单片机中,单片机控制CAN总线传输给上位机显示节点。DS18820的设计电路如图5所示。1838B是一种红外接收装置的传感器,当红外按键工作的条件下,传感器采集到的按键值作为传输数据。红外传感器与遥控器之间的电平是相反的,单片机通过电平不同设置为中断条件下,电平变化时控制器进人中断采集红外按键数据。红外数据的远程采集对系统有着重要影响,通过CAN总线传输红外数据具有一定创新。   一般的红外发送采用NEC协议,单片机控制红外工作流程为:先发送9ms的高电平信号和4.5ms的低电平信号,这段时间没有数据。发送引脚不同时间的高低电平之后,开始发送4字节的数据,分别是地址码、地址反码、命令码、命令反码和1位停止位。
  1.6 电源电路
  电源电路设计的是整个控制系统中重要的部分。提高电源电路的有效性能,能减少对系统的干扰,提高稳定性,减少系统的调试时间。本文设计的电源电路如图6所示,给系统提供稳定的5V电压。电源设计应用隔离技术,两个隔离芯片前后的5V电源。
  2CAN总线软件设计
  2.1 软件设计总体结构
  总体结构如图7所示。采用模块化设计三个节点。从下往上的拓扑结构,其中两个节点采集数据,一个节点成为上位机,显示传输来的数据,通信传输使用CAN总线,通过SJA1000负责传输采集到的数据。每个模块采用结构化编程,在KILL5上编写库函数,减少程序间的反复编写,通过模块化调用,程序运行兼容性更好。
  2.2 CAN总线SJA1000初始化
  在程序运行开始,需要对SJA1000进行初始化,如图8所示。进行初始化之前,先檢查SJA1000与单片机的电气连接是否接通,连接没有错误时,SJA1000工作在复位模式,之后单片机控制SJA1000里的寄存器进行初始化,设置SJA1000的其它工作模式。SJA1000的RS脚设置为低电平CAN总线芯片就处于复位模式,通过将SJA1000的CR寄存器或者MODR寄存器的最低位置1也能使SJA1000工作在复位模式下。SJA1000初始化里设置SJA1000的工作方式,包括错误事件、开中断、波特率设置。
  2.3 系统调试与仿真
  将硬件设计好之后,画好电路原理图。模块化地编写程序,进行软件与硬件的调式,在硬件的基础上实现了CAN总线节点数据的采集和显示。一天内12h采集到的温度值及红外码键值如图9所示,可以看出温度符合实际温度,红外码也能稳定采集,说明系统稳定。图10为基于单片机CAN总线采集的显示结果。
  3 结束语
  CAN总线技术具有通信可靠和高效的特点,在工业控制领域有广泛的应用。本文设计三个节点,分别是温度采集节点、红外遥控信号节点与上位机显示节点,设计出能将采集的数据经CAN总线发送给另一个CAN总线节点进行表达的功能。
转载注明来源:https://www.xzbu.com/8/view-15125608.htm