基于CAN总线的分布式电机控制_第1页
基于CAN总线的分布式电机控制_第2页
基于CAN总线的分布式电机控制_第3页
基于CAN总线的分布式电机控制_第4页
基于CAN总线的分布式电机控制_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘要本文探讨的是利用can总线的接口技术实现对从属电机转速的实时调控的系统,此次实验以 c51 单片机为控制核心进行数据的收发、处理,并设计相应的上位机程序实现pc机与mcu 的通信,将各个从属单片机的发送的电机速度通过can反馈到 pc机软件界面以供实时查看,并且通过上位机发送电机的速度至下位机,所要接受调控的电机所处的mcu 便接受此数据并调节点击相应的速度。该实验结果表明该系统工作稳定,人机界面合理易用,实时图像监控及各个电机状态控制良好,并可以为系统升级作了接口。关键词:c51单片机 ; sja1000; 串口通信 ; can 总线目录0 引言 . 2 0.1 系统工作流程 . 3 0

2、.2 系统各个组成部分及其功能介绍. 3 0.3 系统各个组成部分的核心部件或技术. 4 1 系统设计 . 4 1.1 硬件电路设计 . 4 1.2 节点主要元件电路原理. 5 1.3 系统总体核心电路设计原理. 6 1.4 软件设计 . 7 2.系统测试 . 10 3 结语 . 10 4 参考文献 . 11 5 致谢. 110 引言can总线是控制器局域网总线的简称,它属于现场总线范畴,是一种能有效支持分布式控制或实时控制的串行通信网络,它可将挂接在现场总线上作为网络节点的智能设备连接成网络系统,并进一步构成自动化系统,从而实现基本的控制、补偿、计算、参数修改、报警、显示、监控、优化及控管一

3、体化的综合自动化功能。can总线智能节点在分布式控制系统中起着承上启下的作用。它位于传感器和执行机构所在的现场,一方面和上位机进行通信,以完成数据交换;另一方面又可根据系统的需要对现场的执行机构或者传感器进行控制和数据采集。它常常将一些简单的过程控制程序放在底层模块中,从而减少了通信量,提高了系统控制的实时性。0 系统陈述0.1 系统工作流程 pc机(操控室)id+速度主 mcu can网络从 mcu从 mcu从 mcu从 mcuid:1电机id:2电机id:8电机id:9电机speedspeedspeedspeedid+speedid+speed图 0.1 系统工作流程图首先工作人员利用计算

4、机发送数据id+速度,该数据被主mcu 接收,该主 mcu 将数据发送到 can 网络上,各个从 mcu 均接收此数据,然后各个mcu 对数据进行判断是否符合自己的id,如果符合则接收此数据并将此速度发送至电机调整电机速度,同时将电机运转后的速度在发送到 can 网络上,主 mcu 就会从 can上接收到此数据并传到计算机上供工作人员校审;如果不符合则将此数据丢弃并维持自己的状态。0.2 系统各个组成部分及其功能介绍如上系统工作流程图0.1 所示,系统共分为三大部分,位于最上层的是计算机,这是人机交互的部分,远程操作人员在此操作室内负责各个电机的转速的调控工作,工作人员可以查看各个电机的转速及

5、转向,以确定各个电机的运转状态是否正常及是否达到要求,若要改变其中电机的速度时工作人员只需要输入电机的id 号+速度(例如 1234),则就是对 1号电机的速度调整为234 r/s ,接着计算机就会显示该1 号电机反馈的速度,工作人员就可以根据返回的速度判断该电机的运转情况是否符合要求。第二部分则是主mcu ,这部分的功能是作为pc 机与电机之间的联络部分,它的功能是接收计算机发送的数据即id+速度,将此数据处理成合理的格式后传递给各个从mcu ,同时各个从 mcu 也可以讲各自电机的速度发送给此主mcu, 主 mcu 便对此数据处理后发送给计算机。第三部分则是从mcu ,这部分的 mcu 将

6、主 mcu 发送来的速度发送至各自的电机,使电机以此速度运转,并将运转后的速度发聩给主mcu 。位于第二部分与第三部分之间的那部分则是本系统的核心基础:can网络,该网络就是负责将主 mcu 发送的数据以广播的形式传递到各个从mcu ,同时各个 mcu 也将自己的数据发送到这个网络上,该can控制器 sja1000按照网络协议将发送来的数据按其优先级将最高优先级的从 mcu 发送来的数据发送给主mcu ,然后是第二,第三级的数据发送过去。0.3 系统各个组成部分的核心部件或技术首先第一部分主要是计算机,此计算机作为人机交互部分使用的是visual vbasic 开发的上位机程序。第二、三部分主

7、要是硬件和软件部分,第二、三部分的核心器件就是c51单片机系统的核心控制部分,软件部分则是基于c 语言的下位机程序,实现系统地功能。作为第二第三部分的联络环节则是本系统的核心基础can网络,本文选择 sja1000控制器1 系统设计1.1 硬件电路设计can总线接口硬件电路的设计硬件电路的设计主要是can 通信控制器与微处理器之间和can 总线收发器与物理总线之间的接口电路的设计。 can通信控制器是 can总线接口电路的核心,主要完成can的通信协议,而 can总线收发器的主要功能是增大通信距离,提高系统的瞬间抗干扰能力,保护总线,降低射频干扰( rfi),实现热防护等 。can节点核心器件

8、及其选择目前广泛流行的can总线器件有两大类:一类是独立的can控制器,如82c200 、sja1000及 intel82526/82527等,另一类是带有在片can 的微控制器,如p8xc582 及 16 位微控制器 87c196ca/cb 等。本课题选取philips 公司的 sja1000 can 控制器以及 82c250总线收发器,主要是考虑到sja1000支持 can 2.0a/b 规约。而 82c250可以支持 110 个 can 节点,并且国内市场上philips 的产品型号比较多,购买比较方便。can总线接口电路sja1000 在电路中是一个总线接口芯片,通过它实现上位机与现场

9、微处理器之间的数据通信。该电路的主要功能是通过can 总线接收来自上位机的数据进行分析组态然后下传给下位机的控制电路实现控制功能,当can总线接口接收到下位机的上传数据,sja1000就产生一个中断,引发微处理器产生中断,通过中断处理程序接收每一帧信息并通过can 总线上传给上位机进行分析。 at89c51是 can总线接口电路的核心,其承担can控制器的初始化、can 的收发控制等任务。 can总线接口框图见图 1. sja1000控制器at89c51锁存器ram输入输出端子pca82c250eppromcan 总线图 1 can总线接口框图1.2 节点主要元件电路原理图 2 接口主要元件电

10、路原理图接口主要元件电路原理图见图2,在进行电路设计时应注意以下几点,否则达不到预期的效果。(1)总线两端必须接两个终端匹配电阻rt ,忽略掉它们,会使数据通信的抗干扰性及可靠性大大降低。(2)pca82c250为 can控制器和物理总线之间的接口,它可以提供向总线的差动发送能力和 can控制器的差动接收能力,txd和 rxd引脚分别发送经过驱动后的发送和接收信号。其引脚 8(rs )可以选择 2 种不同的工作方式:把该引脚直接与地相连,系统将处于高速工作方式,在这种方式下,为避免射频干扰,建议使用屏蔽电缆作总线;而在波特率较低,总线较短时,一般采用斜率控制方式,上升及下降的斜率取决于rs 的

11、阻值,实践表明15-200k 为 rs较理想的取值范围,在这种方式下,可以使用双绞线作总线。(3)sja1000的 tx1脚悬空, rx1引脚的电位必须维持在约0.5vcc上,否则,将不能形成 can 协议要求的电平逻辑。因本系统传输距离近,环境干扰小,可以不用电流隔离,这样可以直接把 82c250的 vref 端与 sja1000的 rx1相连,从而简化了电路。(4)设计时将 sja1000的 clockout的时钟信号接至 at89c51的时钟电路输入端,作为at89c51的外部时钟输入,解决了时钟同步问题;sja1000中断输出信号 /int 接至 at89c51的/int0 端,通过中

12、断方式与at89c51 通信。1.3 系统总体核心电路设计原理can 总线canl canh (a)从机系统的原理图系统采用单片机 at89c51 作为监测系统的控制核心,连接 sja1000 can 控制器和p82c250 can 总线接口驱动芯片构成单个 can 节点。单个节点的系统结构框图如图 1.1.1a 所示,单个 can 总线节点和数据处理显示。sja1000 是一种独立的 can 控制器, p82c250是 can 控制器与物理介质之间的接口。整体的系统框图如图 0.1图所示。系统内有多个节点(从机),系统的每个发送节点将数据采集到单片机内,再通过 can 控制器 sja1000

13、 按照一定的协议和检错机制构成帧,通过can 总线发送出去。系统的接收节点通过中断接收数据,当有数据需要接收时,can控制器 sja1000 硬件产生中断,同时can控制器会对接收的帧信息进行错误检测,判断是否有误码信息,如果接收的数据有溢出或错误,can 控制器会置位 can 总线控制器的状态寄存器的相应位,单片机会对该can节点软复位。如果接收到的数据没有错误,通过单片机提取出数据位,将数据发送到pc 机上显示。系统每个节点都有相对独立的电机驱动模块、控制模块,故可以单机使用,同时由于can 总线网络上节点不分主从,系统的所有节点都可以作为发送节点(从机)或接收节点(主机)。1)can 总

14、线节点硬件电路单个 can 节点电路如图(b)所示(b)单个节点的电路原理图从mcu can 控制器sja1000 p82c50驱动保护电路液晶显示器u1 芯片为单片机 at89c51 ,u2芯片为 can通信控制器 sja1000 ,u3为 8 个排线电阻,u4 芯片为 sht11 ,u5芯片为 can总线收发器 pca82c250 。单片机 at89c51负责数据处理和sja1000的初始化,并通过控制sja1000实现数据的接收和发送等通信任务。at89c51采用11.0952mhz 的外部晶振, saj1000 采用 16mhz的外部晶振。 sja1000 的 ad0 ad7 连接到a

15、t89s5x 的 p0口,片选 cs连接到基址为 0 xfe00的外部存储片选信号,当访问地址 0 xfe000 xfe31 时,at89c51单片机可对 sja1000执行相应的读写操作。 sja1000的 rd 、wr 、ale 分别和 at89c51 的对应引脚相连, int 接 at89c51的 int1 使 at89c51可通过中断方式访问sja1000 。sja1000 的复位信号 rst为低电平有效,其接at89c51的 p2.3 口。其中: r8=2k; r7=4.7k; r12 为斜率控制电阻,系统选用47k,r3=120,起匹配阻抗的作用;r10 、r11均为 5的电阻,起

16、一定的限流作用,保护 can 收发器受过流的冲击2)电机速度采集电路设计。系统采用霍尔传感器传感器测的每分钟的转数,然后分别送至 a / d 转换器进行模数转换、校准和纠错,最后通过二线串行接口将相对的数据送至单片机。3)显示模块。系统采用 lcm 1602 字符型液晶模块,主要显示 can 发送节点发送过来的数据,单片机的p1 口接 8 位数据,用 p2.7 、p2.6、p2.5 分别接 lcm 1602 的rs 、 r / w 、e。1.4 软件设计下位机的设计软件主要包括转速数据采集、 can 节点发送、 can 节点数据接收、接收结果处理和显示部分等,采用 c 语言编写,主程序流程如图

17、 4 所示。开始缓冲区和变量初始化定时器初始化lcd初始化can总线初始化外部中断初始化can总线初始化can总显异常显示id+速度接受成功can总线发送一个报文一分钟到显示id+速度yyynnn。图 4 can 总线单个节点主程序流程系统一旦启动,各主从节点便首先进入主程序。在主程序中,首先进行定时器初始化、lcd初始化、 can总线的初始化、中断的初始化,定时器的初始化为一分钟定时,每一分钟执行一次中断,计算从霍尔传感器采集来的电平转换次数,计算电机的数度,lcd初始化为显示电机的 id+速度, can总线初始化为进入收发状态。当系统进入就绪时,每个从mcu 都会显示各自的 id+spee

18、d。 can 总线的初始化流程如图 5 所示。开始设置 sja1000复位模式寄存器 0位为1?设置验收屏蔽寄存器设置始终分频寄存设置验收码寄存设置总线时许寄存器退出初试化使能 can 中线中断模式寄存器 0位为0?进入正常运行模式设置接受缓冲区设置输出控制寄存器yynn图 5 can 总线初始化流程正常运行方式下的操作涉及 sja1000 中的命令寄存器、状态寄存器、中断寄存器、接收缓冲区、发送缓冲区等。命令寄存器用于控制 sja1000 执行某些操作,如进入睡眠状态、释放接收缓冲器、中止发送和请求发送等。状态寄存器用于了解sja1000 的状态,以便决定程序的分支和转移。中断寄存器用于识别

19、中断源,当该寄存器的一位或多位被置 1 时,int(低电平有效)引脚就被激活,激活后所有的位被复位,导致int 引脚上电平升高。发送缓冲区用于存储来自单片机需要发送的报文,分为描述区和数据区,发送缓冲区的读、写只能在 sja1000 处于操作模式下由单片机完成。在复位模式下读出的数值总是ffh ,接收缓冲器的标识符、远程发送请求位和数据长度码的含义及位置与发送缓冲区类似,地址范围为 20 29 h 。rxfifo共有 64 b 的报文空间,可以存储的报文取决于各条报文的长度。发送和接收数据的程序流程分别如图 6 和图 7 所示。开始读状态寄存器上次发送完成?正在接受结束启动发送像缓冲区写发送数

20、据发送缓冲区释放?yynynn图 6 can 总线发送数据程序流程开始读取中断寄存器接收中断读取接收缓存并保存读完并释放缓冲区接收缓冲区空?can总线中断返回接收中断置 can总线异常标志yynynn图 7 can 总线接收数据程序流程上位机的串口通信本次上位机程序是用visual basic 语言,其主要功能是完成上位机与下位机的通讯,操作人员根据需求发送id+速度至主mcu ,mcu将所接收到的速度发送至相应的从机,同时pc机也能显示主 mcu 反馈来的电机的速度,以达到对各个从机的实时调控。基于 vb串口通信主要是借助mscomm控件,以下是该控件的初始化 mscomm1.commpor

21、t = val(right(combo1.text, 1) 设置通信端口号为 com1 mscomm1.settings = 9600,n,8,1 设置串口参数 mscomm1.inputmode = 0 接收文本型数据 mscomm1.inputlen = 1 mscomm1.rthreshold = 1 接收缓冲区每收到一个字符都会使 mscomm 控件触发oncomm 事件 mscomm1.portopen = true 2.系统测试图中显示了下位机反馈的所要电机的速度,当在蓝色文本框内输入id+speed时,例如2234 即表示对2 号电机的速度要求是234 r/s,然后从机就将2 号电机的速度反馈以供检测。红色文本框中显示的是从机发送过来的电机转速,曲线图则是对速度的实时显示,以观测电机转速的波动。当电机复位时,则整个系统进入初始状态,这是在系统出错的情况下使用。3 结语该初始化程序使sja1000 工作在 basiccan 模式下, can总线位速率为 200khz。根据总线传输的距离不同速度可以调整。为提高其抗干扰性能,还可以在sja100

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论