基于CAN总线的分布式电机控制.docx
《基于CAN总线的分布式电机控制.docx》由会员分享,可在线阅读,更多相关《基于CAN总线的分布式电机控制.docx(14页珍藏版)》请在冰豆网上搜索。
基于CAN总线的分布式电机控制
摘要
本文探讨的是利用CAN总线的接口技术实现对从属电机转速的实时调控的系统,此次实验以C51单片机为控制核心进行数据的收发、处理,并设计相应的上位机程序实现PC机与MCU的通信,将各个从属单片机的发送的电机速度通过CAN反馈到PC机软件界面以供实时查看,并且通过上位机发送电机的速度至下位机,所要接受调控的电机所处的MCU便接受此数据并调节点击相应的速度。
该实验结果表明该系统工作稳定,人机界面合理易用,实时图像监控及各个电机状态控制良好,并可以为系统升级作了接口。
关键词:
C51单片机;SJA1000;串口通信;CAN总线
目录
0引言2
0.1系统工作流程3
0.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致谢11
0引言
CAN总线是控制器局域网总线的简称,它属于现场总线范畴,是一种能有效支持分布式控制或实时控制的串行通信网络,它可将挂接在现场总线上作为网络节点的智能设备连接成网络系统,并进一步构成自动化系统,从而实现基本的控制、补偿、计算、参数修改、报警、显示、监控、优化及控管一体化的综合自动化功能。
CAN总线智能节点在分布式控制系统中起着承上启下的作用。
它位于传感器和执行机构所在的现场,一方面和上位机进行通信,以完成数据交换;另一方面又可根据系统的需要对现场的执行机构或者传感器进行控制和数据采集。
它常常将一些简单的过程控制程序放在底层模块中,从而减少了通信量,提高了系统控制的实时性。
0系统陈述
0.1系统工作流程
图0.1系统工作流程图
首先工作人员利用计算机发送数据ID+速度,该数据被主MCU接收,该主MCU将数据发送到CAN网络上,各个从MCU均接收此数据,然后各个MCU对数据进行判断是否符合自己的ID,如果符合则接收此数据并将此速度发送至电机调整电机速度,同时将电机运转后的速度在发送到CAN网络上,主MCU就会从CAN上接收到此数据并传到计算机上供工作人员校审;如果不符合则将此数据丢弃并维持自己的状态。
0.2系统各个组成部分及其功能介绍
如上系统工作流程图0.1所示,系统共分为三大部分,位于最上层的是计算机,这是人机交互的部分,远程操作人员在此操作室内负责各个电机的转速的调控工作,工作人员可以查看各个电机的转速及转向,以确定各个电机的运转状态是否正常及是否达到要求,若要改变其中电机的速度时工作人员只需要输入电机的ID号+速度(例如1234),则就是对1号电机的速度调整为234r/s,接着计算机就会显示该1号电机反馈的速度,工作人员就可以根据返回的速度判断该电机的运转情况是否符合要求。
第二部分则是主MCU,这部分的功能是作为PC机与电机之间的联络部分,它的功能是接收计算机发送的数据即ID+速度,将此数据处理成合理的格式后传递给各个从MCU,同时各个从MCU也可以讲各自电机的速度发送给此主MCU,主MCU便对此数据处理后发送给计算机。
第三部分则是从MCU,这部分的MCU将主MCU发送来的速度发送至各自的电机,使电机以此速度运转,并将运转后的速度发聩给主MCU。
位于第二部分与第三部分之间的那部分则是本系统的核心基础:
CAN网络,该网络就是负责将主MCU发送的数据以广播的形式传递到各个从MCU,同时各个MCU也将自己的数据发送到这个网络上,该CAN控制器SJA1000按照网络协议将发送来的数据按其优先级将最高优先级的从MCU发送来的数据发送给主MCU,然后是第二,第三……级的数据发送过去。
0.3系统各个组成部分的核心部件或技术
首先第一部分主要是计算机,此计算机作为人机交互部分使用的是VISUALVBASIC开发的上位机程序。
第二、三部分主要是硬件和软件部分,第二、三部分的核心器件就是C51单片机——系统的核心控制部分,软件部分则是基于C语言的下位机程序,实现系统地功能。
作为第二第三部分的联络环节则是本系统的核心基础CAN网络,本文选择SJA1000控制器
1系统设计
1.1硬件电路设计
●CAN总线接口硬件电路的设计
硬件电路的设计主要是CAN通信控制器与微处理器之间和CAN总线收发器与物理总线之间的接口电路的设计。
CAN通信控制器是CAN总线接口电路的核心,主要完成CAN的通信协议,而CAN总线收发器的主要功能是增大通信距离,提高系统的瞬间抗干扰能力,保护总线,降低射频干扰(RFI),实现热防护等。
●CAN节点核心器件及其选择
目前广泛流行的CAN总线器件有两大类:
一类是独立的CAN控制器,如82C200、SJA1000及Intel82526/82527等,另一类是带有在片CAN的微控制器,如P8XC582及16位微控制器87C196CA/CB等。
本课题选取PHILIPS公司的SJA1000CAN控制器以及82C250总线收发器,主要是考虑到SJA1000支持CAN2.0A/B规约。
而82C250可以支持110个CAN节点,并且国内市场上PHILIPS的产品型号比较多,购买比较方便。
●CAN总线接口电路
SJA1000在电路中是一个总线接口芯片,通过它实现上位机与现场微处理器之间的数据通信。
该电路的主要功能是通过CAN总线接收来自上位机的数据进行分析组态然后下传给下位机的控制电路实现控制功能,当CAN总线接口接收到下位机的上传数据,SJA1000就产生一个中断,引发微处理器产生中断,通过中断处理程序接收每一帧信息并通过CAN总线上传给上位机进行分析。
AT89C51是CAN总线接口电路的核心,其承担CAN控制器的初始化、CAN的收发控制等任务。
CAN总线接口框图见图1.
图1 CAN总线接口框图
1.2节点主要元件电路原理
图2 接口主要元件电路原理图
接口主要元件电路原理图见图2,在进行电路设计时应注意以下几点,否则达不到预期的效果。
(1)总线两端必须接两个终端匹配电阻RT,忽略掉它们,会使数据通信的抗干扰性及可靠性大大降低。
(2)PCA82C250为CAN控制器和物理总线之间的接口,它可以提供向总线的差动发送能力和CAN控制器的差动接收能力,TXD和RXD引脚分别发送经过驱动后的发送和接收信号。
其引脚8(RS)可以选择2种不同的工作方式:
把该引脚直接与地相连,系统将处于高速工作方式,在这种方式下,为避免射频干扰,建议使用屏蔽电缆作总线;而在波特率较低,总线较短时,一般采用斜率控制方式,上升及下降的斜率取决于RS的阻值,实践表明15-200k为RS较理想的取值范围,在这种方式下,可以使用双绞线作总线。
(3)SJA1000的TX1脚悬空,RX1引脚的电位必须维持在约0.5VCC上,否则,将不能形成CAN协议要求的电平逻辑。
因本系统传输距离近,环境干扰小,可以不用电流隔离,这样可以直接把82C250的VREF端与SJA1000的RX1相连,从而简化了电路。
(4)设计时将SJA1000的CLOCKOUT的时钟信号接至AT89C51的时钟电路输入端,作为AT89C51的外部时钟输入,解决了时钟同步问题;SJA1000中断输出信号/INT接至AT89C51的/INT0端,通过中断方式与AT89C51通信。
1.3系统总体核心电路设计原理
can总线
CANL
CANH
(a)从机系统的原理图
系统采用单片机AT89C51作为监测系统的控制核心,连接SJA1000CAN控制器和P82C250CAN总线接口驱动芯片构成单个CAN节点。
单个节点的系统结构框图如图1.1.1a所示,单个CAN总线节点和数据处理显示。
SJA1000是一种独立的CAN控制器,P82C250是CAN控制器与物理介质之间的接口。
整体的系统框图如图0.1图所示。
系统内有多个节点(从机),系统的每个发送节点将数据采集到单片机内,再通过CAN控制器SJA1000按照一定的协议和检错机制构成帧,通过CAN总线发送出去。
系统的接收节点通过中断接收数据,当有数据需要接收时,CAN控制器SJA1000硬件产生中断,同时CAN控制器会对接收的帧信息进行错误检测,判断是否有误码信息,如果接收的数据有溢出或错误,CAN控制器会置位CAN总线控制器的状态寄存器的相应位,单片机会对该CAN节点软复位。
如果接收到的数据没有错误,通过单片机提取出数据位,将数据发送到PC机上显示。
系统每个节点都有相对独立的电机驱动模块、控制模块,故可以单机使用,同时由于CAN总线网络上节点不分主从,系统的所有节点都可以作为发送节点(从机)或接收节点(主机)。
1)CAN总线节点硬件电路单个CAN节点电路如图(b)所示
(b)单个节点的电路原理图
U1芯片为单片机AT89C51,U2芯片为CAN通信控制器SJA1000,U3为8个排线电阻,U4芯片为SHT11,U5芯片为CAN总线收发器PCA82C250。
单片机AT89C51负责数据处理和SJA1000的初始化,并通过控制SJA1000实现数据的接收和发送等通信任务。
AT89C51采用11.0952MHz的外部晶振,SAJ1000采用16MHz的外部晶振。
SJA1000的AD0—AD7连接到AT89S5X的P0口,片选CS连接到基址为0xFE00的外部存储片选信号,当访问地址0xFE00—0xFE31时,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Ω的电阻,起一定的限流作用,保护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语言编写,主程序流程如图4所示。
。
图4CAN总线单个节点主程序流程
系统一旦启动,各主从节点便首先进入主程序。
在主程序中,首先进行定时器初始化、LCD初始化、CAN总线的初始化、中断的初始化,定时器的初始化为一分钟定时,每一分钟执行一次中断,计算从霍尔传感器采集来的电平转换次数,计算电机的数度,LCD初始化为显示电机的ID+速度,CAN总线初始化为进入收发状态。
当系统进入就绪时,每个从MCU都会显示各自的ID+Speed。
CAN总线的初始化流程如图5所示。
图5CAN总线初始化流程
正常运行方式下的操作涉及SJA1000中的命令寄存器、状态寄存器、中断寄存器、接收缓冲区、发送缓冲区等。
命令寄存器用于控制SJA1000执行某些操作,如进入睡眠状态、释放接收缓冲器、中止发送和请求发送等。
状态寄存器用于了解SJA1000的状态,以便决定程序的分支和转移。
中断寄存器用于识别中断源,当该寄存器的一位或多位被置1时,INT(低电平有效)引脚就被激活,激活后所有的位被复位,导致INT引脚上电平升高。
发送缓冲区用于存储来自单片机需要发送的报文,分为描述区和数据区,发送缓冲区的读、写只能在SJA1000处于操作模式下由单片机完成。
在复位模式下读出的数值总是FFH,接收缓冲器的标识符、远程发送请求位和数据长度码的含义及位置与发送缓冲区类似,地址范围为20~29H。
RXFIFO共有64B的报文空间,可以存储的报文取决于各条报文的长度。
发送和接收数据的程序流程分别如图6和图7所示。
图6CAN总线发送数据程序流程
图7CAN总线接收数据程序流程
●上位机的串口通信
本次上位机程序是用VISUALBASIC语言,其主要功能是完成上位机与下位机的通讯,操作人员根据需求发送ID+速度至主MCU,MCU将所接收到的速度发送至相应的从机,同时PC机也能显示主MCU反馈来的电机的速度,以达到对各个从机的实时调控。
基于VB串口通信主要是借助MSCOMM控件,以下是该控件的初始化
MSComm1.CommPort=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号电机的速度要求是234r/s,然后从机就将2号电机的速度反馈以供检测。
红色文本框中显示的是从机发送过来的电机转速,曲线图则是对速度的实时显示,以观测电机转速的波动。
当电机复位时,则整个系统进入初始状态,这是在系统出错的情况下使用。
3结语
该初始化程序使SJA1000工作在BASICCAN模式下,CAN总线位速率为200kHz。
根据总线传输的距离不同速度可以调整。
为提高其抗干扰性能,还可以在SJA1000与CAN总线收发器之间加光隔。
。
CAN总线以其优良的性能使其应用方兴未艾,以SJA1000为控制器构成各种CAN总线系统方便、简单、成本低廉,这也是开发与应用其它CAN总线产品的基矗ImgLoad(document.getElementById("BodyLabel"));
通过运行证明,CAN总线具有以下优点:
组网自由,扩展性强;自动错误界定,简化了通信的操作;可根据数据内容确定优先权,解决通信的实时性问题。
此外,CAN网络已在众多工业控制系统中应用,尤其在传输速率较高而且对实时性及可靠性要求高的场合,CAN总线将有广阔的应用前景。
4参考文献
[1]邬宽明.CAN总线原理和应用系统设计[M].北京:
北京航空航天大学出版社,1996.
[2]周凤余,鲁守银,李贻斌,等.CAN总线系统智能节点设计与实现[J].微计算机信息,1999.
[3]高强,董力川,朱宁.嵌入式CAN总线控制系统设计[J].自动化技术与应用,2002.
[4]陆前锋.基于SJA1000的CAN总线智能控制系统设计[J].自动化技术与应用,2003.
[5]饶运涛.现场总线CAN原理与应用技术[M].北京:
北京航空航天大学出版社,2004.
[6]李晋华,邱春玲,田地.基于CAN总线数据采集系统的设计与实现[J].吉林大学学报,2004.
[7]李朝青.单片机原理及接口技术[M].3版.北京:
北京航空航天大学出版社,2005.
[8]戴佳,戴卫恒,刘博文.51单片机C语言应用程序设计实例精讲[M].北京:
电子工业出版社,2005.
5致谢
感谢这次的指导老师韩老师,对此文的辅导。
.