首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
基于DSP和CAN的电机同步控制系统与通信
来源:本站整理  作者:佚名  2009-11-02 09:16:38




2.3软件实现
本系统程序主要分为三部分:PC机人机交互程序、DS89C420作为CAN与PC机之间通信中介的程序、DSP作为CAN网络节点和电机控制功能的程序。PC机人机交互软件它以可视化界面显示CAN网络上各节点ID、控制命令、发送优先级等。DS89C420的作用是将从CAN网络上采集的数据传送到PC机,并把PC机传过来得数据发送到CAN网络上,它实现的功能类似于协议转换。DSP完成的功能包括:根据PC机发送过来的指令控制电机正转、反转和停止,以及将电机的相电流、运行速度等信息分别通过LF2407A的片上A/D转换器、正交脉冲编码电路等得到;对电机的控制通过LF2407A的事件管理器模块EVA、EVB输出具有适当占空比的PWM脉冲给大功率IGBT管来实现。
2.3.1主主通信
本设计为基于CAN总线的多主多从通信网络系统,主节点可以是工程师站,也可以是副工程师站或其它操作站,由于控制的需要,主节点之间需要传送一些数据。主—主通信的软件设计关键是掌握好CAN控制器的初始化设置例如ID的设置,数据的发送和接收。由于网卡具有接口函数库及网卡的驱动程序,可以方便地进行主—主通信。通信软件已测试成功,通信界面采用VC编写,如图4所示。


2.3.2主从通信
下面的程序是DSP平台和上位机的通信,主节点CAN网卡中的CAN模块初始化和发送子程序。调试过程中需要注意:通信节点的波特率要求一致;主从通信时要求CANMCR = 0x0480,使通信处于正常发送状态;CANH与CANL之间连接终端负载电阻抗干扰。
void CANInit()
{  asm(" SETC INTM ");    /* 禁止中断 */ 
IMR = IMR | 0x011;     //使能CAN中断
CANIMR = 0;    //屏蔽所有中断
CANIFR = 0xFFFF;   //清除已挂号中断
CANMCR = 0x0480;   //CAN处于正常工作状态
CANMCR = CANMCR | 0x1000;   //设置CCR,改变配置请求;
While ( (CANGSR & 0x0010) == 0 ){}   //设置CCE,更改配置启用;
  CANBCR2 = 0x027;     //设置波特率50Kbps
CANBCR1 = 0x005E;
CANMCR = CANMCR & 0xEFFF;  //清除CCR位;
While ( (CANGSR & 0x0010) == 1 ){}    //清除CCE,禁止对配置寄存器进行操作;
CANMailBoxInit();   //初始化邮箱
asm(" CLRC INTM "); /* 开中断 */     
CANTCR =0x0080;   //发送5号邮箱内容;    
While ( (CANTCR & 0x8000) == 0 ){}  //发送成功   }  
3 同步措施及实现
在对多电机的同步控制中,解决电机的实时性问题十分重要。CAN总线具有点对点、一点对多点及全局广播传送数据的功能。虽然CAN总线的信息存取利用了广播式的存取工作方式,信息可以在任何时候由任何节点发送到空闲的总线上,然后根据信息标文符决定是否读取信息包中的数据以判断是否使用这一信息,但是由于各电机的实际情况不同,即使命令同时传送到节点,实际命令的实施时间也不能得到保证。笔者认为仅依靠CAN总线的广播数据功能实现同步控制会产生误差,可以通过软件编程实现误差较小的同步控制。采用两次命令的方式,首先由主站给需要同步的从站用广播的方式发送准备命令和同步速度,主站确认收到准备好命令之后发送第二次具体的命令即启动同步命令。这样可以使误差相对减少。
4 结束语
本文研究了基于CAN总线的多电机同步控制网络的组成和通信实现,设计有效的将DSP的高速处理能力和CAN(Controller Area Network)总线的高性能、高可靠性结合起来,具有很高的使用价值和广阔的应用前景。以上代码全部调试通过,实验证明适用于多台电机串行通信的实际应用以及可以根据实际的系统进行扩展和移植。
本文作者创新点:电机同步控制措施的提出。

上一页  [1] [2] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:74,410.16000 毫秒