资源预览内容
第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
第9页 / 共12页
第10页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第8章 嵌入式系统设计实例 工业绣花机控制器的设计一电脑绣花机控制器功能:1 根据花版数据及移框机构的机械传动特性,向X、Y方向步进电机发送脉冲,完成对该脉冲的环形分配及功放,驱动步进电机完成移框动作;2 可根据需要调节机头的刺绣速度及框架的移动速度;3 移框时间受针位量控制,只有在针离开布面后才允许绣框移动,且在针第二次刺入布面之前停止移框;4 花版数据由软盘或USB读入内存,实现内存与外存数据交换。软盘或者USB上文件格式一般为田岛二进制格式:*.dsb;5 断线停机,能够检测断线,同时报警,通过译码接口电路可以判断出哪个针位出现断线;6 人机交互:LCD显示器、薄膜键盘(或触摸屏)提供控制输入和状态输出;7 主轴电机为滑差电机,主轴控制要求转速可调并且能够稳定转速,转速由主控电路给定,能够精确停车;8 能够通过移位针杆箱来换色,换色由换色电机控制,换色电机为微特电机;9 能够控制每个机头是否下针,下针由下针电磁铁控制,电磁铁由电磁铁驱动器来驱动,驱动电路按照给定信号触发;10. 刺绣动作是关键,由控制X、Y轴步进电机来完成,依照软件给定的位置信息,经过运算之后分别给X、Y轴步进电机发出控制脉冲,步进电机在两针之间的时隙内完成移位(需要与主轴电机同步);11通过行程开关控制开机、停机;通过限位开关控制越框报警。二硬件功能结构:根据绣花机的机械和电气特性,我们将整个控制系统分成如图1所示的7块电路板来协同工作,它们分别是:主板,断线报警板,主轴控制板,换色控制板,针位板,译码板和键盘、LCD驱动板。基于LPC2214的主电路系统LCD键盘USB接口U盘、软驱断线报警板1针位板换色控制板主轴控制板译 码 板X方向步进驱动器Y方向步进驱动器断线报警板2行程开关限位开关图1 绣花机控制器系统框图1人机交互部分:将软驱接口电路、USB接口电路、薄膜键盘、单(彩)色LCD显示器驱动电路制作在同一块电路板上。通过软驱或U盘读取花样信息,在LCD上实时显示花样及相关数据,通过薄膜键盘进行基本操作控制。2.主轴电机控制器:主轴电机为滑差电机,主轴电机控制器需要驱动电磁离合器和电磁制动器,输入信号是速度给定信号, 输出信号是针位信号、电磁离合器驱动信号和电磁制动器驱动信号, 外围接口电路、光电耦合器、光电编码器和放大电路一起组成闭环调速控制系统。3.X、Y轴步进电机控制器:根据花样信息向步进电机驱动器发送脉冲,使步进电机与主轴电机协调动作完成刺绣。4.换色电机控制器: 换色电机为微特电机,针杆间距为15mm,换色电机控制器需要光电元件和霍尔感应元件来判断换色是否成功。换色电机控制电路与主控制电路交换的数据有换色信号和换色完成标志信号。5.断线检测电路和针位译码接口电路:断线检测电路位于针杆箱内,可以通过三态开关控制针头挑线簧与夹线座铜柱构成断线传感器,当断线时断线检测电路能够报警并将断线信号传输给针位译码接口电路,由译码电路判断出哪一个针位出现断线,并向MCU发送一个断线中断信号。6行程开关和限位开关: 当出现断线、补绣、故障停车时,通过行程开关控制开、停机;当绣框越位触发限位开关时报警并停机,二者都以中断方式控制。三控制器的软件总体设计和任务划分1系统软件模块。USB模块USB 读写操作模块键盘处理图形显示键盘显示模块键盘与显示处理系统软件模块花样文件识别花样文件管理花样管理模块花样文件操作主轴电机调速步进电机控制运动控制模块换色电机控制断线检测模块绣框越位检测故障诊断模块电机故障检测USB故障检测图2:系统软件模块图2嵌入式操作系统的引入在嵌入式系统中使用实时操作系统RTOS(Real Time Operating System),可以将应用分解成多任务,简化了应用系统软件的设计;RTOS使控制系统的实时性得到保证,可以接近理论上能达到的最好水平;良好的多任务设计,有助于提高系统的稳定性和可靠性。C/OS-是一个源码公开、可移植、可固化、可裁剪及占先式的实时多任务操作系统,其绝大部分源码是用ANSI C写的,与微处理器硬件相关的部分是用汇编语言写的,便于移植到其他微处理器上,它能够运行在大部分的8位、16位、32位、甚至64位的微处理器及数字信号处理器(DSP)上。由于C/OS-实时操作系统源代码公开且商用价格非常便宜,考虑到整个工业绣花机控制器的软硬件成本和实时性,因此我们选择C/OS-作为该控制器的操作系统。3启动代码的实现启动代码主要实现异常向量表定义、堆栈初始化、系统变量初始化、I/O、外围初始化、地址重映射等。示意代码段如下所示:;define the stack size;定义堆栈的大小FIQ_STACK_LEGTH EQU 9*25IRQ_STACK_LEGTH EQU 9*25 ;every layer need 9 bytes stack , permit 8 layer .每层嵌套需要9个字堆栈,允许8层嵌套ABT_STACK_LEGTH EQU 0UND_STACK_LEGTH EQU 0 AREA vectors,CODE,READONLY ENTRY;interrupt vectors;中断向量表Reset LDR PC, ResetAddr LDR PC, UndefinedAddr LDR PC, SWI_Addr LDR PC, PrefetchAddr LDR PC, DataAbortAddr DCD 0xb9205f80 LDR PC, PC, #-0xff0 LDR PC, FIQ_AddrResetAddr DCD ResetInitUndefinedAddr DCD UndefinedSWI_Addr DCD SoftwareInterruptPrefetchAddr DCD PrefetchAbortDataAbortAddr DCD DataAbortNouse DCD 0IRQ_Addr DCD 0FIQ_Addr DCD FIQ_Handler;未定义指令Undefined B Undefined;取指令中止PrefetchAbort B PrefetchAbort;取数据中止DataAbort B DataAbort;快速中断FIQ_Handler STMFD SP!, R0-R3, LR BL FIQ_Exception LDMFD SP!, R0-R3, LR SUBS PC, LR, #4;/*;* unction name 函数名称: ResetInit;* Descriptions 功能描述: RESET 复位入口;* input parameters 输入: None 无;* Returned value 输出 : None 无;* Used global variables 全局变量: None 无;* Calling modules 调用模块: None 无;*/ResetInit;Initial the extenal bus controller;初始化外部总线控制器,根据目标板决定配置 LDR R0, =PINSEL2 IF :DEF: EN_CRP LDR R1, =0x0f814910 ELSE LDR R1, =0x0f814914 ENDIF STR R1, R0 LDR R0, =BCFG0 LDR R1, =0x10001464;/Flash SST39VF3201 0x10001464 STR R1, R0 LDR R0, =BCFG1 LDR R1, =0x000033c1;/138译码器 0x000033c1,0x00002bc0 STR R1, R0 LDR R0, =BCFG2 LDR R1, =0x10002420;/RAM STC62WV12816 0x10002420 STR R1, R0 LDR R0, =BCFG3 LDR R1, =0x1000146f;/USB ISP1160 0x1000146f STR R1, R0 BL InitStack ;/Initialize the stack 初始化堆栈 BL TargetResetInit ;/Initialize the target board 目标板基本初始化 B _main ; /Jump to the entry point of C program 跳转到c语言入口4操作系统的移植C/OS-核心代码很小,要把它移植到微处理器只需要作少量的工作。移植前使用软中断指令SWI作为底层接口,方便系统移植。从图23中可看出只需要修改与处理器相关的代码(OS_CPU.H,OS_CPU_ASM. S,OS_CPU_C.C),就完成了系统的移植。OS_CPU.H包括了与编译器
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号