《实时控制软件设计》2017年教学内容
一、课程教学目标
本课程是面向机械设计制造及其自动化专业和测控技术与仪器专业的选修专业方向课程。在未来的机电控制系统中,软件系统将占据越来越大的比重,机电装备性能与控制软件的性能密切相关,本课程的主要教学目标是使学生能利用现代软件工程方法和工具进行面向机电控制的实时控制软件的设计开发。本课程强调“做中学”的教学理念,采用课堂讲授、编程练习和项目实践相结合的方式,使学生通过实际项目的开发实践,既掌握软件工程的原则和方法,也能会使用体现理论方法的工具。
二、教材、参考书和网站
- 邹欣. 构建之法--现代软件工程(第三版). 北京:人民邮电出版社,2017年
- Robert Oshana, Mark Kraeling编,单波等译. 嵌入式系统软件工程-方法、实用技术及应用. 北京:清华大学出版社,2016年
- Jean J.Labrosse, 邵贝贝. 嵌入式实时操作系统μC/OS-3. 北京:北京航空航天大学出版社,2012年
- Christopher Hallinan,嵌入式Linux基础教程(第2版).北京:人民邮电出版社,2016年
- Richard Barry,Mastering the FreeRTOS Real Time Kernel,2016年
- 翼辉公司,SylixOS 讲义,2016年
三、教学计划
课堂教学共12次课,每次两课时共24学时,主要内容包括:
- 第1次课 实时控制软件简介和应用案例,通用软件开发流程,基于Github的版本控制和团队协作
- 第2次课 实时软件架构,实时操作系统原理,实时调度和优先级反转问题,商用和开源RTOS浏览
- 第3次课 ARM处理器硬件体系结构及对实时操作系统的支持
- 第4次课 FreeRTOS的任务调度机制,Trace工具,源代码分析与构建过程
- 第5次课 FreeRTOS的多任务同步与通信和应用
- 第6次课 嵌入式Linux及实时化扩展
- 第7次课 基于模型的实时软件设计概述,MATLAB的信号流模型、物理模型和状态机模型建模方法和仿真引擎机制原理
- 第8次课 基于模型的设计,stateflow状态机建模
- 第9次课 控制器建模实例分析,模型设计规范,基于模型的概要设计和详细设计,代码自动生成方法
- 第10次课 软件测试概述,单元测试,基于模型的测试,SIL和PIL测试方法
- 第11次课 软件静态分析与安全软件设计,丰田故障和Barr报告分析
- 第12次课 团队项目报告和讨论,实时控制软件规格和架构设计,案例分析
四、课程博客作业发布和提交网址
https://edu.cnblogs.com/campus/hust/RTCSD2017
五、Github代码库链接
https://github.com/cbhust/STM32F429_Discovery_FreeRTOS_9
六、团队项目作业
1. 团队项目的考察要点:
- 根据项目需求,按照基于模型的设计方法,完成从软件规格定义、概要设计、详细设计、单元测试、仿真验证的基本流程。
- 基于Github进行团队项目协作和进行版本控制。
- 在个人博客介绍自己所做的工作。
2. 团队项目需求:
某创业公司正设计一台自动咖啡机,已完成基本结构设计,如下图所示(本实例来自贝加莱公司文档),需要开发咖啡机的嵌入式控制软件,实现如下功能:
-
1)用户在咖啡机面板上选择自己想要喝的咖啡(美式、拿铁、卡布奇诺...)并按下开始按钮后,咖啡机开始按照设定的配方制作咖啡。
-
2)制作流程为:Feeder机构取一空杯放到传送带上,传送带把空杯送到龙头下,牛奶、糖浆、浓缩咖啡液和热水按照配方比例混合后装入空杯,传送带把满杯的咖啡送到用户取杯处,用户取走咖啡后,自动咖啡机可以继续响应面板上的按钮制作下一杯咖啡。
公司希望软件开发团队采用基于模型的设计方法完成软件开发,具体要求如下:
-
1)第一阶段,软件团队与咖啡机产品经理(老师和助教)沟通软件开发需求,形成软件设计规格书,清晰的定义控制软件的各项功能、硬件输入和输出接口。(本阶段交付件:软件设计规格书)
-
2)第二阶段,在Matlab/Simulink环境中,实现咖啡机的物理建模,同时完成控制软件的概要设计,划分成若干个软件模块,确保模块覆盖设计规格书的所有功能,清晰定义各个模块的接口。(本阶段交付件:咖啡机物理模型文件和概要设计说明书)
-
3)第三阶段,基于simulink/stateflow建模方法,设计各个软件模块的控制逻辑和算法,并与咖啡机物理模型进行协同仿真,实现整个咖啡制作流程。(本阶段交付件:控制软件模块stateflow模型文件)
-
4)第四阶段,基于模块的stateflow模型,手动编写或用自动代码生成工具,完成C代码设计工作。(本阶段交付件:模块C代码及代码自动生成报告)
-
5)第五阶段,基于MATLAB工具,对模块C代码进行Software in Loop测试或Processor in Loop测试,得到测试报告。(本阶段交付件:SIL/PIL测试报告)
-
6)第六阶段,提交项目总结和软件说明文档。(本阶段交付件:项目总结和软件说明文档)
3. 团队项目人员分工、进度和要求:
- 1)每个团队有一名项目组长,负责在github上创建团队项目,协调团队分工,所有文档和代码都提交到github上。
- 2)团队项目用三周左右时间完成。
- 3)团队通过讨论形成软件设计规格书和概要设计文档,具体的建模和设计工作有明确的分工。
- 4)团队在每个阶段都要提交交付件给老师和助教进行评审,评审通过后进入下一阶段设计。
- 5)团队在总结报告中,实事求是地说明每个成员所做的工作及完成情况。
- 6)每名成员每周在个人博客上介绍自己所做的具体工作和取得的进展。