实时系统设计与分析试验报告模板(大试验版)_第1页
实时系统设计与分析试验报告模板(大试验版)_第2页
实时系统设计与分析试验报告模板(大试验版)_第3页
实时系统设计与分析试验报告模板(大试验版)_第4页
实时系统设计与分析试验报告模板(大试验版)_第5页
已阅读5页,还剩8页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE1实时系统设计与分析实验报告学院软件学院年级2005级班级三班学号3005218077姓名王尽宇2008年4目录一、实验内容…………………….1二、实验过程…………………….X三、实验结果…………………….X软件学院2005级实时系统设计与分析试验报告PAGE6一、实验内容:1、试验题目:普通型自动喷灌机(手持操作控制器部分)2、试验要求:自动喷灌机可以在种植大棚内的天车轨道上往复运行,在运行过程中通过喷水装置实现对一定面积内的农作物进行灌溉。喷水装置共有左右两个喷管,每个喷管上各有十个喷头,控制系统应可以分别控制每个喷管的开闭,自动喷灌机停止时两个喷管都是关闭的,而自动喷灌机运行时可分别设定每个喷管的状态为:双向运行时均开启喷水、仅正向运行时开启喷水、仅反向运行时开启喷水、双向运行时均不喷水。由于每个喷管的水流量是固定的,因此喷水量是靠喷灌机的行进速度来调节的,控制系统应可以预先设定喷灌机的运行速度,并且可以分别设定正向与反向运行时不同的运行速度。自动喷灌机的喷灌工作模式有两种,手动启动和定时启动。其中手动启动又分为启动正向运行与启动反向运行;定时启动则是预先设定一个周期时间,喷灌机进行倒计时,时间到自动开始一次往复运行,并开始下一次倒计时,如此不断循环。另外手动启动还可以通过遥控器实现,遥控器只有启动正向运行和停止两个功能。任何时刻可以通过停止操作停止喷灌机的运行。按键需求:正向行进速度加减键2个反向行进速度加减键2个左右喷管工作状态选择键2个定时喷灌的间隔时间设置键2个(小时、分钟各一个)参数设定完成键1个,取消键1个喷灌管冲洗命令键1个(预留)喷灌管转换命令键2个(预留)正向启动、反向启动、停止键3个手操控制器主开关1个:扳键开关 显示内容:正向行进速度xx.x米/分,0.5行显示 反向行进速度xx.x米/分,0.5行显示 左右喷灌模式双向、正向、反向、停止,1行汉字显示定时喷灌的间隔时间和当前倒计时时间xx时xx分,各0.5行显示当前工作状态显示,1行汉字显示 提供8列*4行16*16点阵LCD显示(0.5行可显示8*8字符)操作方式:按键修改速度、时间、工作状态,修改后30秒不按取消键将自动确认,按确认或正向、反向、停止键立即确认并执行相应动作,另外按停止键可实现重新开始倒计时。二、实验过程:(设计思路,功能划分,任务分配,实验解决方案等等,具体要求请参考系统说明书。。。)1、设计思路:开机后,TaskStart初始化系统创建4个任务Task0、Task1、Task2、Task3,并挂起Task2,Task3和TakStart。Task0任务作为控制性任务从中央控制器中读取系统参数显示在屏幕上,完成后挂起。Task1任务监听键盘输入并设置信号量,根据中央控制器的同步信号设置两个变量。其中一个变量用于记录是否是默认启动即修改后30秒内没输入,如果有则继续等待30秒,该变量清零;若无则唤醒Task2任务。Task2任务向中央控制器提交信息。另一个变量用于唤醒Task0,每分钟从中央控制器读取系统状态参数。在车辆行时过程中,Task1只会唤醒Task0或对停止键做出响应,调用Task3任务。Task3向中央控制器发出停止信号,并重置信号量和两个时间变量。2、功能划分: 显示系统状态:开机后从中央控制器中读取系统参数并显示到屏幕上。静止时,显示修改结果和倒计时剩余时间;运行时,每分钟从中央控制器读取一次系统状态参数。 监听功能:监听键盘输入并根据不同的输入修改系统参数,并监听中央控制器发出的同步信号,以此作为时间计数器调度相应任务。 启动功能:将修改后的系统参数提交给中央控制器。 终止功能:向中央控制器发出停车信号,并重置倒计时和相关变量。3、任务分配: 1>变量设置: #difinestructureSystemParameters{ INT8UPOS_DIRECTION_SPEED=0;\\0到6级正向速度的等级 INT8UNEG_DIRECTION_SPEED=0;\\0到6级 负向速度的等级 INT8ULEFT_NOZZLE_STATE=1; \\左喷头状态 INT8URIGHT_NOZZLE_STATE=1; \\右喷头状态 INT8USTART_DIRECTION; \\启动方向,1表示正向,2为反向,0为停止\*倒计时的时间。默认值是30分钟*\ INT8UTIMING_HOUR=0; INT8UTIMING_MINITE=30; \*判断为何种确认情况:值为0表示按“确认”、“正向”或“反向”键的修改;值为1表示按默认启动的修改;值为2表示按“停止”键的修改*\ INT8USTART_WAY;}#difineINT8UWAITINGTIME=0;\\修改数据后的未再按键时间#difineINT8USTATETIME=0;\\ 记录时间每分钟唤醒task0#difineINT8UWHETHER_RUNNING=0;\\0表示静止,1表运行#difineSystemParameterssystemParameters,ready;2>分配任务: TaskStart任务,优先级为3,功能为初始化系统并创建其他应用任务后挂起。初始化系统初始化系统创建4个任务挂起Task2、Task3挂起自身图-1TaskStart的流程图 Task0任务,优先级为4,功能为显示系统的状态参数或将要被修改为的值,运行后被挂起。显示信号量中的信息显示信号量中的信息挂起自身从中央控制器中读取数据存入信号量中将信号量存入ready变量中开始是否到一分钟是否图-2Task0的流程图 Task1任务,优先级为7,功能为监听是否有键盘输入并根据相应的输入修改与之相关的参数;接收由中央控制器发来的同步信号作为时钟。它是手持控制器的调度任务,分别根据同步信号的发来的次数和不同的键盘输入信号做出相应的调度来唤醒其他的任务。修改信号量修改信号量唤醒Task0判断是否有输入从ready中恢复信号量的值有输入其他键判断输入的是什么唤醒Task3确认、正向、反向、停止取消键30秒内无输入开始图-3Task1的流程图 Task2任务,优先级为5,功能为根据相应信号量,将带有参数的信号量提交给中央控制器,根据情况可对信号量添加必要的值,成后挂起。提交信号量中的信息到中央控制器提交信号量中的信息到中央控制器挂起自身读取信号量的信息补全信息判断信息是否完整完整不完整图-4Task2的流程图 Task3任务,优先级为6,功能为向中央控制器发出停车信号并重置信号量,完成后挂起。 重置信号量中的信息重置信号量中的信息挂起自身发出停车信号图-5Task3的流程图3>相关函数:3.1OSTaskCreate()建立一个新任务。任务的建立可以在多任务环境启动之前,也可以在正在运行的任务中建立。中断处理程序中不能建立任务。一个任务可以为无限循环的结构。函数原型:INT8UOSTaskCreate(void(*task)(void*pd),void*pdata,OS_STK*ptos,INT8Uprio);参数说明:task是指向任务代码首地址的指针。Pdata指向一个数据结构,该结构用来在建立任务时向任务传递参数。返回值:OSTaskCreate()的返回值为下述之一:OS_NO_ERR:函数调用成功。OS_PRIO_EXIST:具有该优先级的任务已经存在。OS_PRIO_INVALID:参数指定的优先级大于OS_LOWEST_PRIO。OS_NO_MORE_TCB:系统中没有OS_TCB可以分配给任务了。3.2OSTaskSuspend()无条件挂起一个任务。调用此函数的任务也可以传递参数OS_PRIO_SELF,挂起调用任务本身。当前任务挂起后,只有其他任务才能唤醒被挂起的任务。任务挂起后,系统会重新进行任务调度,运行下一个优先级最高的就绪任务。唤醒挂起任务需要调用函数OSTaskResume()。任务的挂起是可以叠加到其他操作上的。例如,任务被挂起时正在进行延时操作,那么任务的唤醒就需要两个条件:延时的结束以及其他任务的唤醒操作。又如,任务被挂起时正在等待信号量,当任务从信号量的等待对列中清除后也不能立即运行,而必须等到被唤醒后。函数原型:INT8UOSTaskSuspend(INT8Uprio);参数说明:prio为指定要获取挂起的任务优先级,也可以指定参数OS_PRIO_SELF,挂起任务本身。此时,下一个优先级最高的就绪任务将运行。返回值:OSTaskSuspend()的返回值为下述之一:OS_NO_ERR:函数调用成功。OS_TASK_SUSPEND_IDLE:试图挂起μC/OS-II中的空闲任务(Idletask)。此为非法操作。OS_PRIO_INVALID:参数指定的优先级大于OS_LOWEST_PRIO或没有设定OS_PRIO_SELF的值。OS_TASK_SUSPEND_PRIO:要挂起的任务不存在。3.3OSTaskResume()唤醒一个用OSTaskSuspend()函数挂起的任务。OSTaskResume()也是唯一能“解挂”挂起任务的函数。函数原型:NT8UOSTaskResume(INT8Uprio);参数说明:prio指定要唤醒任务的优先级。返回值:OSTaskResume()的返回值为下述之一:OS_NO_ERR:函数调用成功。OS_TASK_RESUME_PRIO:要唤醒的任务不存在。OS_TASK_NOT_SUSPENDED:要唤醒的任务不在挂起状态。OS_PRIO_INVALID:参数指定的优先级大于或等于OS_LOWEST_PRIO。4>任务调度: 首先TaskStart运行初始化系统并创建其他四个任务Task0、Task1、Task2、Task3,挂起Task2、Task3和TaskStart。Task0从中央控制器中获得系统状态参数并显示到屏幕上之后挂起。此时Task1的优先级最高开始运行,它监听手持控制器是否有输入,如果有判断输入的是那个键以采取相应的操作修改信号量,并唤醒Task0显示修改后的值。如此往复,直到遇到执行按钮(“确认”,“正向”,“反向”,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论