chapter-6嵌入式系统设计实例

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第六章嵌入式系统开发实例1.数控系统设计实例2.MP3设计实例3.烟气排放在线监测系统26.1数控系统设计实例需求分析架构设计详细设计系统测试开发工作的步骤3数控系统是自动阅读输入载体上事先给定的数据、译码、控制机床移动和加工零件的系统通过各种输入方式,接受加工零件的各种数据信息,经过译码、处理、插补,生成各坐标轴的参考位置把各轴的参考位置送到轴控制器中,驱动轴的运动,使各个坐标轴能精确地运动到所要求的位置1.需求分析——功能需求4功能需求—数控系统控制装置PLC人机界面轴冷却主轴….反馈速度位置输入输出速度位置指令状态反馈开/关CNC机床M功能PLC功能机床控制器CNC机床控制模型需求分析5输入输出输入/输出/通讯功能字符图形显示功能程序编制功能数据处理插补功能进给功能主轴速度功能刀具功能补偿功能辅助功能报警自诊断功能需求分析-数控系统的功能6非功能需求物理环境-车间,工作环境恶劣用户-一般是车间操作员,操作水平有高有低质量保证--用在工业控制环境质量要求高,同时现在市场竞争激烈,如果质量不好很难在市场上站住脚需求分析-非功能需求7QOS——QualityofService响应快速性:主要是对突发事件的反应(如撞刀、急停)响应的确定性:确保条件/事件出现和由此引起的动作开始/结束的时间在准确的时间间隔内。满足时间约束主要是和系统安全(如对突发事件的反应等)以及切削精度(更高的精度影响插补周期)有关,数控系统具有硬实时任务高性能:需要复杂的运算高可靠性:在加工过程中不出现问题,至少一个月之内不能死机,出现故障,高安全程度非功能需求-QOS8若现有系统实现了相似功能,重用该结构是较好的选择对于全新的项目,考虑这些功能是否能用一个处理器实现.单个处理器最容易实现和调试的必须使用多个处理器时,尽量使用少的处理器数量多处理器方案中,各模块(处理器)的独立性尽量高,减少数据通讯量及相互的依赖性多处理器系统,通过增加处理器将小系统扩充为大系统,客户可以从简单的处理器入手,随着系统负载的增加而增加需求分析——选择处理器91.技术平台的特殊需求(RTOS、CPU的相互支持)2.该平台是否成熟、完善?3.预留的性能(CPU资源使用不能到70%)4.平台的设备驱动程序(是否能够提供?)5.平台支持的通讯协议(是否支持TCP/IP,HTTP,UDP等)6.该平台是否有合适的开发工具7.硬件和软件平台公司的状况(技术支持、财务)8.开发人员对该硬件和软件平台的熟悉程度?9.有几个开发人员可以使用该平台?开发人员培训的费用?2.架构设计——挑选操作系统和硬件11当前的数控系统中的CPU个数:1、2、3高档数控一般采用两个CPU实现,更有甚者采用三个CPU,本项目的市场定位为中低档,使用单个CPUArm7的性能满足系统的需要,同时由于需要IO的实现,以及伺服电机的控制,所以采用ARM7+FPGA的结构ARM芯片价格低廉选择处理器—数控系统处理器12操作系统平台的选取通用操作系统--(windowunix/linux)本质上是不可预测的实时操作系统专用实时系统VxWorks,WindowCEQNX,REAL/IX等。费用高开放源码的实时系统rtai,rtlinuxucosDOS,单任务系统使用ucosII的理由多任务操作系统是个开放源码--降低开发费用有强有力的支持(这是选择该系统很重要的原因)133.系统设计数控系统设计与开发定义系统总体结构定义软件总体结构软硬件协同设计定义软件模块任务设计14系统设计-定义系统结构数控系统总体结构采用处理器设计模式系统采用单一处理器结构ARM系统ARM+FPGA实现整个硬件系统15系统设计-定义软件总体结构数控系统软件总体结构软件采用任务设计模式和功能协调模式相结合的软件结构任务内部采用有限状态机的设计模式16系统设计-软硬件协同设计软硬件协同设计一旦软件结构确定了,硬件和软件工作组在一起工作确定软件和相关的功能。这个过程是指软件和硬件工作组一起工作定义最终系统结构.这是一个迭代的过程,系统结构的改变有时会改变软件和硬件的结构.17系统设计-定义软件模块定义软件模块确定系统需要支持的所有功能.基于实现的工作类型分组.把执行同一功能的模块归为一个任务.例如人机界面,译码,插补,伺服等.18系统设计-数控系统任务模块数控系统任务模块人机界面-显示,操作,控制功能译码模块-把数控代码翻译成可识别的结构插补模块-把数据点细化伺服模块-生成脉冲指令控制电机总控模块-协调各个模块之间的关系逻辑模块-处理IO口19系统设计-数控系统任务模块OSTaskCreate(Frame_Task,(void*)0,(OS_STK*)&Frame_Task_Stack[STACKSIZE-1],CNC_Frame_Task_Pri);//1OSTaskCreate(Interp_Task,(void*)0,(OS_STK*)&Interp_Task_Stack[STACKSIZE-1],CNC_Interp_Task_Pri);//1OSTaskCreate(Decode_Task,(void*)0,(OS_STK*)&Decode_Task_Stack[STACKSIZE-1],CNC_Decode_Task_Pri);//1OSTaskCreate(Display_Task,(void*)0,(OS_STK*)&Display_Task_Stack[STACKSIZE-1],CNC_Display_Task_Pri);//1OSTaskCreate(Logic_Task,(void*)0,(OS_STK*)&Logic_Task_Stack[STACKSIZE-1],CNC_Logic_Task_Pri);//120系统设计-任务设计数控系统任务设计指南不要引入很多状态使设计复杂化.不要使用太少的状态使设计复杂化.使数据结构定义简单.处理存储越界的情况.考虑所有定义的场景.确保所有分配的资源在结束时释放.考虑使用层次状态机简化状态机设计21系统设计-任务设计选择任务类型单个状态机多个任务选择状态机简单状态机22系统设计-任务设计分配优先级,由于采用ucos操作系统,操作系统采用基于优先权可抢占的调度方式采用静态固定分配,优先级与周期成反比,周期越短优先级越高。非周期性任务则按照重要性分配,重要性越高优先级越高系统的优先级分配情况如下:伺服最高,插补次之,逻辑处理次之,译码次之,人机界面最低23系统设计-任务之间通讯任务间通讯ucos-II提供邮箱,消息队列,全局变量,共享内存的方式提供任务间通讯各种通讯方式的比较邮箱消息队列全局变量共享内存共享内存是最快的通讯方式24系统设计-共享内存OSMemCreate()创建内存voidinitCNCMem(void){INT8Uerr;pCNCMem=OSMemCreate(CNCMemPart,CNCMemSize,CNCblkSize,&err);if(pCNCMem==NULL){Uart_Printf(FailedtoCreateCNCMessagequote);}}OSMemGet()获得内存voidinitManual_data(void){INT8Uerr;manual_data=(MANUALDATA*)OSMemGet(pCNCMem,&err);}//endinitManual_data25系统设计-共享内存26系统设计-共享内存局部变量表数据结构全局变量表数据结构GIFitem1nameGIF_nvarGIF_sizeGIF_timeGIF_lockGIF_dirtGIF_firstGIF_lastGIFitem3GIFitem2GIFitemnnextGIF_typeGIF_tsGIF_nextGIF_spot到下一个元素gdata_spotqdata_spotldata_typeditem2ditemn…..ldata_typegdata_spotditem1litemnitemVarCopyToGsizetimegptrliterm1litem2…..itemPCopyToGqitem[n]itemVarCopyFromGitemPCopyFromG存放数据的内存区数据项nvarname28数控系统设计-同步优先级逆转一般是在两个任务访问共享数据时出现,为了保证数据的一致性,这两个访问必须串行,如果优先级高的任务首先获得访问权,则优先级的顺序保持一致,如果优先级低的任务首先获得访问权,这时优先级高的任务请求访问,则优先级高的任务必须等到优先级低的任务完成访问为止解决方法优先级继承优先级上界29数控系统设计-执行时间的测量时间测量主要目的是测量单个任务的执行时间评估系统的整个实时性能精确的实时调度分析优化代码调试时间错误30数控系统设计-执行时间的测量方法:秒表DateTimeprof和gprof软件分析仪定时器/定时器时间片逻辑分析仪31数控系统设计-执行时间的测量方法分辨率精度粒度使用难度秒表0.01sec0.5sec程序容易date0.02sec0.2sec程序容易time0.02sec0.2sec程序容易Prof和gprof10msec10msec函数中等clock15-30msec15-30msec行中等软件分析仪10usec20usec函数中等定时器/时间片0.5-4usec1-8usec行难逻辑分析仪/ICE50nsec半秒行难33数控系统开发-周期任务的实现ucos-II的任务是个无限循环不是周期任务Voidtask(void*prio){for(;;){Dostuff}}利用OSTimeTickHook()函数实现周期性函数,不过只能实现ticks整数倍的周期任务34数控系统开发-周期任务的实现voidtask(void*prio){for(;;){OSTaskSuspend(pri);Dostuff;}}intperiodic=0;OSTimeTickHook(){periodic++;if(periodic=n){//任务周期=n*ticksOSTaskResume(pri)}}35设计原则--越简单越好系统详细设计指南使用查找表和指针函数而不是ifelseorswitch使用固定大小的数组避免动态分配内存降低系统中的任务数避免任务互相依赖避免多线程设计避免一个大的循环对经常执行的部分进行优化使用状态机简化设计在开始对软件进行优化对时间进行测量使用时间标记,避免运行定时器36设计原则--越简单越好系统设计指南在设计时要注意内存分析避免使用循环延时而用系统提供的延时机制降低消息握手次数简化硬件结构优先选用通用的计算平台而不是特殊的平台不要使用具有所有权的协议和操作系统优先购买硬件平台而不是设计优先考虑重用设计避免使用异类的硬件和软件环境考虑硬件升级降低软件的努力把配置系统参数减小到最小38设计原则--不使用大循环任务2任务3任务1使用适当的并行设计方法非抢占-周期或多速率执行抢占-实时操作系统不用中断模拟多任务40数控系统开发-导致系统崩溃的问题下面的软件问题导致软件崩溃:无效的数组索引没有初始化的指针操作没有授权的buffer操作非法的栈操作无效的处理器操作无限循环41嵌入式数控系统原型样机42系统应力测试功能干涉测试干涉负载测试应力负载测试系统应力测试43系统测试-功能干涉测试功能自动手动MDI回零自动测试1-1自动运行测试1-2证明自动运行情况下进入手动系统减速到零进入暂停测试1-3证明自动运行情况下进入MDI系统执行完当前程序段停止测试1-4证明自动运行情况下进入回零系统减速到零进入暂停手动测试2-1证明手动运行情况下进

1 / 68
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功