全局变量中的Permit1和Permit2的作用是控制是否允许姿态纠正进程进行姿态纠正。具体当Permit1与Permit2都等于1时允许纠正,否则为不允许。当左电机执行非直走任务时Permit1被赋0,当发现斜左或斜右远距离无墙时Permit2被赋0。
图中消息队列的作用是接收各进程发来的报文,报文的格式如图十二所示。 目的进程 源进程 控制\\数据 报文内容 图十二 报文格式
报文中“控制/数据”部分表达了该条消息是作为控制信息还是作为数据信息。
从系统的总体关联图可以看出每个进程配有一个控制邮箱和一个数据邮箱,控制邮箱接收总线进程发来的控制信息,数据邮箱接收总线进程发来的数据信息。 总线进程负责接收消息邮箱中的报文,根据报头中的信息,将报文分发到正确的邮箱中。
传感器中断负责驱动五对传感器工作,并刷新全局变量CurEye. 无线进程负责驱动无线收发模块发送与接收报文。
决策进程负责从宏观上完成搜索迷宫、返回起点、冲刺三个任务。28页图十三为决策进程流程图。红色箭头表示信号流,蓝色箭头表示控制流。平行四边形表示全局变量,云朵表示其它进程。
控制进程负责利用全局变量CellShape,CurDir,CurPosition得到下一步的操作(直走,左转,右转,后转),并将该操作交给左、右电机中断完成。29页图十四为控制进程流程图。
姿态纠正进程负责根据左、右传感器信号的差值由PID函数给出纠正量,具体PID函数的实现前文已有介绍。30页图十五为姿态纠正流程图。
左电机中断与右电机中断共同负责根据控制进程下达的操作(直走,左转,右转,后转)控制步进电机转动。左电机机中断还负责刷新电脑鼠的状态和迷宫格形状等全局变量。
图十六为直走任务左电机流程图。
直走任务右电机流程图与直走任务左电机流程图类似,CurDir,CurPosition,CellShaped的刷新。
图十七为右转任务左电机流程图。 图十八为右转任务右电机流程图。 图十九为后转任务左电机流程图。
后转任务右电机流程图与后转任务左电机流程图类似,CurDir,CurPosition,CellShaped的刷新。
只是少了对只是少了对
图十三 决策进程流程图
图十四 控制进程流程图。
图十五 姿态纠正进程流程图