1、嵌入式技术课程论文I嵌入式技术课程论文单位(学院)学生姓名专业学号指导教师设计时间年月嵌入式技术课程论文II题目基于CAN总线的三电机协同控制摘要本文提出了一种简便实用的基于CAN总线的多电机协同控制系统设计方案。本设计中,CAN总线系统智能节点由最小系统、CAN总线接口电路、电机驱动模块、测速模块及人机界面几部分组成。本设计采用内置CAN控制器的STM32F103作为主控芯片,结合高速CAN隔离收发器CTM1050T进行CAN通信;利用单片机的高级定时器产生占空比可调的PWM波,通过L298N大功率直流电机驱动板,控制电机运转;采用反射式光电开关TCRT5000及双电压比较器LM393组成测
2、速模块,将测得的速度脉冲接单片机外部中断处理;由此可获得设定速度与实际转速之间的偏差,运用PID算法,实现电机的闭环调速;此外,采用操作简便、显示内容丰富多彩的触摸屏作为人机交互界面,向主节点输入电机控制指令,同时向用户反映实际转速等信息。本设计的关键在于CAN总线通信,即主节点将转速控制信息传送到CAN总线进行广播,从节点均可从总线上获取该报文并几乎同时执行其中的指令。CAN通信的实时性,为主从电机的同步运行提供了坚实的保障。本文从CAN协议规范、CAN通信机制等方面对CAN总线进行了详细的介绍。然后基于模块的概念,进行系统的软硬件设计以及调试。3电机的协同测试结果表明该设计方案能较好地实现
3、协同控制,具有很好的实用价值。嵌入式技术课程论文III目录前言1第一章绪论2第一节基于CAN总线的三电机协同控制简介2一、三电机协同控制分类2二、三电机协同控制方式2第二节现场总线以及CAN总线的概述4一、现场总线在多电机协同控制系统中的应用4二、CAN总线的概述5第三节研究的目的与意义7第四节本章小结8第二章基于CAN的总线三电机协同控制系统总体设计方案9第一节总体设计要求9第二节总体设计框架9第三节各个模块设计方案的论证10一、节点模块的选择10二、电机模块总体设计13第四节本章小结13第三章基于CAN总线的三电机协同控制系统硬件设计14第一节硬件设计14一、最小系统的设计14二、CAN总
4、线接口电路设计16三、驱动模块的设计17四、测速模块的设计18五、电源模块的设计19第二节本章小结20第四章基于CAN总线的多电机协同控制系统软件设计21第一节CAN通信模块的软件设计21一、CAN总线的初始化21二、收发报文程序设计22第二节测速程序的设计23第三节本章小结24第五章系统调试及实现25第一节硬件调试25第二节软件调试25第三节系统调试及实现25第四节本章小结26结论27附录28嵌入式技术课程论文IV一、CAN节点部分源程序28二、系统调试实物图38嵌入式技术课程论文1前言在当代,单电机生产模式已经无法满足现代工业的发展需求,多电机协同控制成为人们改善并发展电机在工业中控制作用
5、的新探索点。因此,需要科研人员去研究多个电机的同步控制问题让多个电机能在生产环境下协调的运行。工业自动化研究中,作为运动控制的一个分支多个电机协同控制很早就被人们提及,科研人员通过不懈的研究和努力从控制方式的实现、控制策略以及控制算法都对多电机的协同控制做了很大的提升,已经在早期的机械总轴方式的基础上又提出了一种更为实用可靠的控制方式即电方式控制。本文也正是在电方式控制基础上展开研究,因此对于我们来说本文基于CAN总线的三电机协同控制的研究对于改善多电机协同控制具有较高的实用价值。现场总线是指将现场设备与工业过程控制单元、现场操作站等互连而形成的计算机网络具有全数字化、分散、双向传输、多分支的
6、特点。工业自动化研究中,快速发展的工业总线技术也对研究多电机协同控制技术的改善以及研究发展起到很大的促进效果。现场总线是一种实时的、可靠的、低廉的、串行的这些特点都促使他们在现代工业中有了广泛的应用。而快速发展的工业总线技术也对研究多电机协同控制技术的改善以及研究发展起到很大的促进效果。为多电机协同控制的研究提供了新视角以及条件。CAN总线、PROFIBUS总线、CCLINK总线都是当下发展比较成熟的现场总线,价格比较便宜以及比较实用是这些总线的相似点,这也使现场总线与多电机协同控制结合研究提供了可能。本设计主要选取CAN总线作为总线控制,其除了有以上大部分总线所具有的优点外,还具有自己的独特
7、优势。笔者将在后文为读者详细说明。综合分析,我认为这是一件非常值得的并且非常有意义的事能够对基于CAN总线的三电机协同控研究探索。嵌入式技术课程论文2第一章绪论第一节基于CAN总线的三电机协同控制简介一、三电机协同控制分类通常可以将多电机协同控制分为三类,主要是主和从电机以相同的速度运转,我们一般称这空控制为多电机的同步控制;另外一种主电机与从电机及从电机与从电机间以某种比例关系的速度运转,在一定的场合往往需要各个电机间以某种比例关系来运转,且这种比例关系是可以根据运用场合的不同而改变的,我们称这种主、从电机速度按比例关系保持不变的控制为协调控制;第三种是主电机与从电机间以及从电机与从电机间保
8、持恒定的速差运转,这种控制方式在日常生产中也得到很广泛的运用。我们对于多电机协同控制的研究根据选择的控制分类不同,研究的软硬件设计也会跟着改变。本设计预期达到的目标是实现主电机与从电机以相同的速度实现运转控制的效果。二、三电机协同控制方式机械总轴同步控制方式形成较早控制策略相对于其他控制方式也较简单,且在早期的升船机、造纸机、纺织印染机等得到广泛的运用。主要是通过一台大功率电机来拖动机械总轴使系统中其他的电机通过各自的齿轮绞合在总轴上。机械总轴控制方式虽然同步性比较高、机械结构较为固定,但往往系统的结构较为复杂、且系统中得各个单元的干扰较为强烈、工作噪音大、灵活性差、传动范围和距离小、单元负载
9、小、系统成本高。电方式协同控制方式是模拟机械总轴控制方式通过控制多台电机的转速、转角等信息实现多电机的协同控制。这种方式不受距离的约束,同时,这种控制方式在同步性、灵活性性上都比机械总轴控制方式较好。电方式并且克服了机械方式的种种缺点,对外部的扰动有比较高的抗扰能力。主令同步控制方式是指系统在共同的输入信号作用下,各个电机由各自的电机驱动模块功率驱动下形成的物理上相互独立的单元。各个电机模块间不会相互干扰。在这种控制方式下,如果主、从电机在受到较少扰动的情况下具有嵌入式技术课程论文3较高的同步效果。主令控制方式系统虽然在启停阶段系统的同步性能很好、不同单元不受距离的限制等优点,但是,如果系统的
10、某个节点受到外界扰动的干扰作用,会出现失同步的现象,不适用于同步性要求严格的场合。主令控制方式结构如下图11所示。图11主令控制方式主从多电机协同控制方式适用于主节点主电机受到较大干扰而从节点从电机一般不收环境干扰的场合。各个从电机把主电机在某个时刻受到的干扰信号作为从电机的输入信号。主从多电机协同控制方式主要有以下两种情况第一种情况是第一台为主电机其他未从电机。主电机根据系统给定信号的信息运转,同时主电机的输出信号控制其他从电机的运转。主从控制形式一结构如下图12所示。图12主从控制形式一第二种情况是第一台电动机为主机,最后一台电动机为从机,其余的电动机充当双重角色,既是主机又是从机。主从控
11、制形式二如下图13所示。嵌入式技术课程论文4图13主从控制形式二通过上面的比较我们不难发现采用主从方式进行多电机的协同控制。第二节现场总线以及CAN总线的概述一、现场总线在多电机协同控制系统中的应用现场总线是指将能够将工业生产某些设备与工控制单元按一定的控制方式进行相互连接得网络,计算机网络具有全数字化、分散、双向传输、多分支的特点。它的关键标志是能双向多节点、总线式全数字通讯。工业自动化研究中,快速发展的工业总线技术也对研究多电机协同控制技术研究以及改善有比较大的促进效果。现场总线是一种实时的、可靠的、低廉的、串行的这些特点都促使他们在现代工业中有了广泛的应用。当前国际具有代表性的现场总线现
12、场总线技术与产品是CCLINK、PROFIBUS、CANBUS等。本节将对以上几种总线简单介绍和性能比较,分析各种总线的优缺点来让我们做出正确的选择。1、CCLINKCCLINK(CONTROLCAN_NVIC_CONFIGCAN_MODE_CONFIGCAN_FILTER_CONFIGSTATICVOIDCAN_GPIO_CONFIGVOID/CANGPIO和时钟配置GPIO_INITTYPEDEFGPIO_INITSTRUCTURE/外设时钟设置/RCC_APB2PERIPHCLOCKCMDRCC_APB2PERIPH_AFIO|RCC_APB2PERIPH_GPIOB,ENABLERCC
13、_APB1PERIPHCLOCKCMDRCC_APB1PERIPH_CAN1,ENABLE/CONFIGURECANPINRX/PB8CANRXGPIO_INITSTRUCTUREGPIO_PINGPIO_PIN_8GPIO_INITSTRUCTUREGPIO_MODEGPIO_MODE_IPU/上拉输入GPIO_INITGPIOB,/CONFIGURECANPINTX/PB9CANTXGPIO_INITSTRUCTUREGPIO_PINGPIO_PIN_9GPIO_INITSTRUCTUREGPIO_SPEEDGPIO_SPEED_50MHZGPIO_INITSTRUCTUREGPIO_MO
14、DEGPIO_MODE_AF_PP/复用推挽输出GPIO_INITGPIOB,GPIO_PINREMAPCONFIGGPIO_REMAP1_CAN1,ENABLESTATICVOIDCAN_NVIC_CONFIGVOID/CANRX0中断优先级配置NVIC_INITTYPEDEFNVIC_INITSTRUCTURENVIC_PRIORITYGROUPCONFIGNVIC_PRIORITYGROUP_1/中断设置/NVIC_INITSTRUCTURENVIC_IRQCHANNELUSB_LP_CAN1_RX0_IRQN/CAN1RX0中断NVIC_INITSTRUCTURENVIC_IRQCHA
15、NNELPREEMPTIONPRIORITY0/抢占优先级为0NVIC_INITSTRUCTURENVIC_IRQCHANNELSUBPRIORITY0/子优先级为0NVIC_INITSTRUCTURENVIC_IRQCHANNELCMDENABLENVIC_INIT嵌入式技术课程论文29STATICVOIDCAN_MODE_CONFIGVOID/CAN的模式配置CAN_INITTYPEDEFCAN_INITSTRUCTURE/CAN寄存器初始化/CAN_DEINITCAN1CAN_STRUCTINIT/CAN单元初始化/CAN_INITSTRUCTURECAN_TTCMDISABLE/时间触
16、发通信禁止CAN_INITSTRUCTURECAN_ABOMDISABLE/离线退出是在中断置位清0后退出CAN_INITSTRUCTURECAN_AWUMDISABLE/自动唤醒模式清零SLEEPCAN_INITSTRUCTURECAN_NARTDISABLE/自动重传CAN_INITSTRUCTURECAN_RFLMDISABLE/FIFO没有锁定,新报文覆盖旧报文CAN_INITSTRUCTURECAN_TXFPDISABLE/发送报文优先级确定标志符CAN_INITSTRUCTURECAN_MODECAN_MODE_NORMAL/正常传输模式CAN_INITSTRUCTURECAN_S
17、JWCAN_SJW_1TQ/14CAN_INITSTRUCTURECAN_BS1CAN_BS1_12TQ/116CAN_INITSTRUCTURECAN_BS2CAN_BS2_7TQ/18CAN_INITSTRUCTURECAN_PRESCALER9/波特率为36/91127200KCAN_INITCAN1,STATICVOIDCAN_FILTER_CONFIGVOID/CAN的过滤器配置CAN_FILTERINITTYPEDEFCAN_FILTERINITSTRUCTURE/CAN过滤器初始化/CAN_FILTERINITSTRUCTURECAN_FILTERNUMBER0/CAN1RX0中
18、断CAN_FILTERINITSTRUCTURECAN_FILTERMODECAN_FILTERMODE_IDMASK/工作在标识符屏蔽位模式CAN_FILTERINITSTRUCTURECAN_FILTERSCALECAN_FILTERSCALE_32BIT/过滤器位宽为单个32位/使能报文标识符过滤器按照标示符的内容进行比对过滤,扩展ID不是如下的就抛弃掉,是的话,会存入FIFO0。/CAN_FILTERINITSTRUCTURECAN_FILTERIDHIGH0X0000/要过滤的ID高位CAN_FILTERINITSTRUCTURECAN_FILTERIDLOW0X0000/要过滤的I
19、D低位CAN_FILTERINITSTRUCTURECAN_FILTERMASKIDHIGH0X0000/过滤器高16位每位不必关心CAN_FILTERINITSTRUCTURECAN_FILTERMASKIDLOW0X0000/过滤器低16位每位不必关心CAN_FILTERINITSTRUCTURECAN_FILTERFIFOASSIGNMENTCAN_FIFO0/过滤器被关联到FIFO0嵌入式技术课程论文30CAN_FILTERINITSTRUCTURECAN_FILTERACTIVATIONENABLE/使能过滤器CAN_FILTERINIT/允许FMP0中断/CAN_ITCONFIGC
20、AN1,CAN_IT_FMP0,ENABLE/发送报文接口函数/VOIDSENDCANU16DAT_0,U16DAT_1,U16DAT_2TXMESSAGEEXTID0X0000/使用的扩展IDTXMESSAGEIDECAN_ID_EXT/扩展模式TXMESSAGERTRCAN_RTR_DATA/发送的是数据TXMESSAGEDLC3/数据长度为3字节TXMESSAGEDATA0DAT_0TXMESSAGEDATA1DAT_1TXMESSAGEDATA2DAT_2CAN_TRANSMITCAN1,/CAN接收中断服务程序/VOIDUSB_LP_CAN1_RX0_IRQHANDLERVOIDCA
21、N_RECEIVECAN1,CAN_FIFO0,/从邮箱中读出报文IFRXMESSAGEEXTID0X0000FLAG0/接收成功ELSEFLAG0XFF2、电机控制模块部分源程序/PID运算接口函数/VOIDPIDCALCVOIDESPEED_SETSPEED/计算速度偏差DUKKPEE1KIEKDE2E1E2/100/控制量增量计算UKUK1DUKPWMOUTINT16_TUK/PWM波占空比IFPWMOUT99/设定限值嵌入式技术课程论文31PWMOUT99ELSEIFPWMOUTLOCAL_XNUMX_MINLOCAL_XNUMIFX_MAXLOCAL_YNUMY_MINLOCAL_Y
22、NUMIFY_MAX4/原生电阻值04095Y_SUMY_SUMY_MINY_MAX4X_TOUCHX_SUM00645174/触屏坐标转换Y_TOUCHY_SUM0088246EXTI_CLEARITPENDINGBITEXTI_LINE12/清除中断标志位RETURNEXTI_CLEARITPENDINGBITEXTI_LINE12/清除中断标志位4、主节点主函数部分源程序INTMAINVOIDSYSTEMINIT/初始化系统,包括选择系统时钟频率COM1_INITGPIO_CONFIGURATIONNVIC_CONFIGURATIONEXTI_CONFIGURATION嵌入式技术课程论文
23、36TIM2_CONFIGURATIUONTIM1_PWM_INITUSER_CAN_INIT/CAN初始化LCD_INIT/LCD初始化LCD_ONDEBUG“LCDINITOKNR“SPI_TOUCH_INIT/触屏初始化DEBUG“TOUCHINITOKNR“LCD_CLEARWHITEGUI/界面START_TIMEDEBUG“SYSTEMISOKNR“WHILE1KEY_SCAN/按键调整PID参数IFTOUCH_FLAG1TOUCH_FLAG0TOUCH_DEALMOTOR_CONTROLLCD_SHOW_2NUM136,80,SPEED_SET/10,1,WHITE,BLUE,1
24、/显示设定转速LCD_SHOW_2NUM144,80,SPEED_SET10,1,WHITE,BLUE,1IFTIME_250MS_OKTIME_250MS_OK0LCD_SHOW_2NUM136,100,SPEED/10,1,WHITE,BLUE,1/显示实际转速LCD_SHOW_2NUM144,100,SPEED10,1,WHITE,BLUE,1SENDCANRUN_STOP,SPEED,DIR_FLAG/发送报文PIDCALCTIM1CCR1PWMOUTDELAY_MS105、从节点主函数部分源程序INTMAINVOIDSYSTEMINIT/初始化系统,包括选择系统时钟频率。COM1_I
25、NITGPIO_CONFIGURATION嵌入式技术课程论文37NVIC_CONFIGURATIONEXTI_CONFIGURATIONTIM2_CONFIGURATIUONTIM1_PWM_INITUSER_CAN_INIT/CAN初始化LCD_INIT/LCD初始化LCD_ONDEBUG“LCDINITOKNR“LCD_CLEARWHITEGUI/界面START_TIMEDEBUG“SYSTEMISOKNR“WHILE1KEY_SCAN/按键调整PID参数IFFLAG0FLAG0XFFRUN_STOPRXMESSAGEDATA0SPEED_WANTRXMESSAGEDATA1DIR_FLA
26、GRXMESSAGEDATA2MOTOR_CONTROLLCD_SHOW_2NUM136,120,SPEED_WANT/10,1,WHITE,BLUE,1/主机转速LCD_SHOW_2NUM144,120,SPEED_WANT10,1,WHITE,BLUE,1IFTIME_250MS_OKTIME_250MS_OK0LCD_SHOW_2NUM136,140,SPEED/10,1,WHITE,BLUE,1/从机转速LCD_SHOW_2NUM144,140,SPEED10,1,WHITE,BLUE,1PIDCALCTIM1CCR1PWMOUTDELAY_MS10嵌入式技术课程论文38二、系统调试实物图