200 likes | 434 Views
LAMOST 总控系统消息总线的研究. 徐灵哲 Nanjing Institute of Astronomical Optics & Tech.(NIAOT)/ National Astronomical Observatories, CAS (NAOC) Presented by: 徐灵哲 At: Place Date: Friday, November 14, 2014. LAMOST 总控及其有关高层次软件模块. LAMOST 总控系统功能.
E N D
LAMOST总控系统消息总线的研究 徐灵哲 Nanjing Institute of Astronomical Optics & Tech.(NIAOT)/ National Astronomical Observatories, CAS (NAOC) Presented by: 徐灵哲 At: Place Date: Friday, November 14, 2014
LAMOST总控系统功能 • 给LAMOST望远镜的各种信息(命令信息、数据信息、状态信息和报警信息等)提供通道,并根据总体设计的要求通过各电控子系统驱动望远镜的电控运动部件,与光机协调完成对目标天体的观测任务。
消息总线的功能 • 接收消息 • 发送消息 • 控制消息的串,并行顺序 • 控制消息的处理时间
消息总线命令接口 消息总线 OCS 数据库 TCS 应用程序 命令发生器 状态发生器 消息总线状态接口 子系统 消息总线 数据库 消息总线的拓扑结构及流程
消息总线的命令调度设计 • 消息层次表:消息总线收到的消息可以转化为一系列具有串,并行关系的原消息
消息总线的命令调度设计 • 消息总线的数据结构 :采用了孩子兄弟法来描述消息总线。孩子兄弟法又称二叉树表示法或二叉链表表示法。即以二叉链表做树的存储结构。每个二叉链表代表一个消息。对二叉链表的C语言描述,如下:
消息总线的命令调度设计 • Struct st_message • { • int i_degree; //层次 • char message[512]; //消息实体 • Struct st_message *pst_child ;//孩子链域 • Struct st_message *pst_brother; //兄弟链域 • int i_flag; //消息标志 • int i_time; //超时时间 • char s_time ;//开始时间 • }
消息总线的命令调度设计 • 接收消息的算法:插入消息的层次大于当前消息
消息总线的命令调度设计 • 接收消息的算法:插入消息的层次等于当前消息
消息总线的命令调度设计 • 接收消息的算法:插入消息的层次小于当前消息
消息总线的命令调度设计 • 发送消息的算法:当消息总线检测到在层次最低的并列兄弟消息链表中有标志为未发送的消息,则把该消息发到TCS进行处理,同时把标志设为已发送。
消息总线的命令调度设计 • 删除消息的算法:消息总线中的消息标志,会根据消息总线状态接口返回的状态进行更改。当一条消息被处理完毕后,会把消息总线中相应的链表消息的标志改为已完成。当消息总线遍历到该链表消息后,会对其进行删除处理。
消息总线的命令调度设计 • 消息总线操作的互斥 :在接收消息和发送消息时都需要对消息总线进行操作。当两者同时对消息总线进行操作时就有可能造成混乱。为此,消息总线设置了一个信号量,作为互斥。当要对消息总线进行插入或删除操作时调用这个信号量,如果有其它线程要对消息总线进行插入或删除,它需要等待这个信号量的释放才能操作。这样就保证了消息总线操作的互斥性。
时间监控模块的设计 • LAMOST要求在1.5小时内观测完一个天区。因此消息总线中的消息必须在一定时间内执行完毕。消息的发送时间从消息总线把消息发给TCS算起,结束点为消息总线状态接口更新消息总线中对应消息为已完成时。消息在被插入到消息总线时,已经设定了开始时间和缺省超时时间。消息总线在循环遍历过程中用当前时间减去开始时间的差来和超时时间进行比较,如果超时就需要提醒人工干预。
总结 • 通过消息总线来处理各种命令和状态消息,将TCS应用程序和消息通讯相对独立,使得TCS系统具有很好的鲁棒性。由于可以在数据库中对消息层次表进行修改,因此不需要通过修改程序来解析新的或修改的消息,使得TCS系统又具有很好的可维护性。
close • Contact: 210042 • Email: lzhxu@niaot.ac.cn • Information: www.lamost.org • …