DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 911|回复: 0
打印 上一主题 下一主题

[接口电路] 基于DSP和CAN的电机同步控制系统与通信

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 14:05:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

                      0 引言
  传统的多电机控制系统适用于要求不高、相对简单、电机分布比较集中的场合。而对于运动控制中实时性、可靠性、可扩展性、传输距离、传输速度等要求较高的场合,需要采用高传输速度、远传输距离、可靠性较高的通信方式和处理速度快、功能强大、能够实现复杂控制策略的处理器。
  控制器局域网CAN(Controller Area Network)是一种有效支持分布式控制和实时控制的串行通信网络。它属于现场总线范畴,与现有的其它总线相比,它是一种分散式、数字化、双向、多站点的通信系统,具有速率高、可靠性好、智能化高、连接方便等诸多优点,在分布式测试和工业控制等相关领域的应用越来越广泛[1]。
  数字信号处理器(Digital Signal Processor,DSP)是一种高速专用微处理器,TMS320F2407A运算功能强大,能实现高速输入和高速率传输数据,且带CAN总线接口。它专门处理以运算为主且不允许延迟的实时信号,可高效进行快速傅里叶变换运算。数字信号处理器的精度高,可靠性好,其先进的品质与性能可为电机控制提供高效可靠的平台[2]。
  鉴于CAN总线的通信优势和DSP的强大处理能力,利用二者完全可以设计完成要求较高的多电机控制网络系统。这种功能强大、智能化和网络化程度较高的网络系统满足了工艺复杂、要求较高的多电机控制,它正在兴起并成为多电机控制网络系统的发展趋势[3]。
  1 系统结构及其实现
  基于CAN总线网络的新型多电机同步控制系统,采用总线式多主多从网络拓扑结构。当系统中不仅有工程师层还包括管理层即多个主节点时,主主通信将实现不同功能主节点的交流(如图1)。整个控制系统由三部分组成:CAN总线、上级PC机、DSP控制系统。系统采用PC 机作为监控主机,实现对各节点的监控和管理;CAN 总线接口卡完成CAN协议的物理层和数据链路层功能,实现PC 机与CAN 总线之间的通信;各从节点通过DSP完成数据的收发和对交流电机的控制[4]。






  2 软件设计
  2.1 CAN 总线网络通信协议设计
  CAN 总线采用一种串行数据通信协议,它能有效地支持具有较高安全等级的分布实时控制。根据CAN总线技术规范CAN2.0A、CAN2.0B,本文设计了用户通信协议,各个节点都按此协议传送信息。用户通信协议的帧结构共10个字节(2个字节标识符、8个字节数据和变量),其定义如图3所示。






  物理变量序号:0~255。
  Data3~Data0:定义为一个物理变量数据,4字节长整数,原码表示。数据类型为整型、布尔型或浮点型。
  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)总线的高性能、高可靠性结合起来,具有很高的使用价值和广阔的应用前景。以上代码全部调试通过,实验证明适用于多台电机串行通信的实际应用以及可以根据实际的系统进行扩展和移植。
  本文作者创新点:电机同步控制措施的提出。
            
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-5-12 19:12 , 耗时 0.090929 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表