加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

【RT-Thread作品秀】基于RT-Thread的星务平台研究

2020/12/19
506
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
方块图(4)
相关方案
  • 方案介绍
  • 相关文件
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

作者:xudongxiao

声明:转载请联系作者并取得RT-Thread大赛许可,本软件不涉密

 

概述

本作品为了验证星务软件在RT-Thread系统运行的可行性,底层是否能够驱动星务软件,同时扩展RT-Thread应用范围。ART-Pi作为卫星下位机,星务前端用VS2010开发,两者之间通过异步串口通信。星务前端发送遥控指令,ART-Pi能够正常解析运行,并且能把星务的一些状态遥测发送至星务前端,方便地面人员查看。本作品设计的线程只有星务线程,采集线程,姿控线程,地测线程,Free线程,正常的卫星软件不止这五个线程,简化为这五个,涉及到的外设也简化为只有定时器与异步串口。

开发环境

硬件:ART-Pi开发板

RT-Thread版本:RT-Thread 4.0.2

开发工具及版本:RT-Thread Studio 1.1.5,Visual Studio 2010

RT-Thread使用情况概述

内核部分:线程操作(创建,挂起,删除),二值信号量

组件部分:软件定时器,异步串口,

软件包:无

其他:无

硬件框架

本作品验证RT-Thread系统,软件方面应用较多,底层硬件只需要一个ART-Pi开发板模拟卫星系统即可。ART-Pi作为卫星下位机,星务前端用一个PC代替即可,硬件框架如图1所示。

图1 硬件框架

软件框架说明

软件框架如图2所示,软件定时器以4Hz频率给星务线程信号量,星务线程启动后,检测其他各个线程的运行状况,核对线程运行时间,核对软件狗计数是否超过阈值,核对运行时间片,当都满足后,给所有线程信号量。设计的各个线程优先级如表1所示,由表可知,星务线程优先级最高,会一直运行至等待下一个信号量,依据RTT线程抢占运行原理,次一级优先级线程运行。所以在一个时间片内,线程运行顺序为,星务线程→采集线程→姿控线程→地测线程→Free线程。图中的遥测遥控部分在下一章节“软件模块原理”描述。

软件定时器于整秒处开始运行,定时器间隔为250ms,将0-249ms定义为时间片TASK_ROUNDA,将250-499ms定义为时间片TASK_ROUNDB,将500-749ms定义为时间片TASK_ROUNDC,将750-999ms定义为时间片TASK_ROUNDD。各线程运行时间片如表2所示。

表1

线程

星务线程

采集线程

姿控线程

地测线程

Free线程

优先级

25

26

27

28

29

表2

线程

星务线程

采集线程

姿控线程

地测线程

Free线程

时间片

ALL

ALL

ALL

ALL

NONE

 

图2 软件框架

软件模块说明

软件模块分为遥控上传,遥测下传,星务软件管理三个部分,遥控上传流程图如图3-a,3-b所示。

    

图3-a 遥控流程

                    图3-b 遥控流程

1.遥控流程

星务前端依照表3所示的遥控包结构组包,并通过异步串口发送至ART-Pi串口6,其中类型占用2个字节,定义如表4所示。

表3 遥测遥控公共包结构体(STM32为小端)

 

帧头

长度

校验

类型

数据

长度(字节)

2

2

2

2

n

说明

固定0xEB90

类型与数据字节长

类型与数据按字节累加和

 

 

表4 遥控包结构的类型说明

 

类型

长度

1

1

说明

分系统类型(typeL)

指令码(typeH)

分系统类型:星务线程0x00,请求线程0x01,姿控线程0x02,无0x03.

指令码:自定义

地测线程将串口6FIFO读空,按照表3结构循环解析解析遥控指令,直到无可用遥控包,然后将合法遥控包存储到遥控指令缓存,等待线程来取指令;地测在存储指令前,查看遥控指令缓存是否有可用空间,有可用空间则将指令存储,并将标志位置有效状态,线程检测本线程对应的指令在缓冲区中有有效状态指令时,将指令取出,并将标志位置空闲。具体遥控指令说明参考附录。

2.遥测流程

遥测流程星上程序简单,地测线程依据包发送的时间片,符合本周期则发送,不符合则丢弃,发送的数据包结构符合表3,包下发的具体信息请参考附录。具体解包流程可参考上位机代码,非本设计详述部分,故不再赘述。

3.星务软件管理

星务初始化时,初始化各个线程,初始化硬件等;当星上软件运行起来时,检测各个线程状态,给合法线程信号量。当前线程共有三种状态,即允许运行、线程挂起、线程停止。各个线程的状态不仅受到遥控指令控制,还会与星务软件狗有关,各个线程之间的转换关系如图4所示。

图4 线程状态转换与遥控指令对应关系

图4中,红字表示发送的遥控指令,圆圈内表示当前线程状态。

星务软件设计了软件狗,软件狗的作用是为了防止线程死循环,将整个优先级之后的的线程同时卡死的问题,具体过程是每次当星务给线程信号量时,此线程对应的软件狗计数会累加,当线程运行至线程循环底部时,会将软件狗清零;如果在一个周期内,程序由于卡死在死循环或者是任务循环次数过大,导致本周期未运行至函数体底部,则星务会继续累计软件狗,当次数大于设置值时,依据设置的方式对线程处理,线程重启或者是整个操作系统重启。

演示效果

图5 星务前端上位机界面1

图6 星务前端上位机界面2

图7 实物照片

演示视频:

比赛感悟

本作品较好的实现了原定的目标,在真实情况下,RTT也会有较好表现,扩展了RTT的应用范围,对其他的类似系统也有很好的借鉴作用;但是作为功能强大的ART-Pi开发板,真正用到的功能较少,后期可以再开发一些其他的有意义的应用。

本作品所用的代码与实际卫星使用代码原理一致而具体不同,有部分借鉴的成分,主要的困难是需要将星务系统底层适配RTT,并且不能照抄原版代码,一是为了避免涉密,二是为了提高移植的意义,使我对整个卫星的软件框架有了很好的认识,对我本人从事的工作也有很好的促进作用。而且开源卫星代码的原理也让卫星代码圈子增加一点生态,也对其将来的发展有好的促进作用。

备注

本作品遥控指令包与遥测数据包解析如表所示

测试遥控包:星务分系统,指令码0xff,参数0x00,0x01,0x02,0x03

测试遥控包组帧:0x90,0xEB,0x06,0x00,0x05,0x01,0x00,0xff,0x00,0x01,0x02,0x03

星务线程遥控指令:

名称

指令码

参数

线程控制

0x01

Byte0:线程类型

采集线程:0x01

姿控线程:0x02

地测线程:0x03

Byte1:线程行为

允许运行:0x33

暂停运行:0x66

恢复运行:0xBB

停止运行:0x99

重启运行:0xAA

ADC输出

0x02

Byte0~Byte1:电压值,范围0-32768,小端

PWM输出

0x03

Byte0:0-100,对应0-100占空比

OC1控制

0x04

Byte0:开关参数设置

0x55:高电平

0xAA:低电平

OC2控制

0x05

Byte0:开关参数设置

0x55:高电平

0xAA:低电平

采集线程遥控指令:

名称

指令码

参数

设备开关控制

0x01

Byte0:设备编号

范围0~3

Byte1:设备开关

0x55:设备开

0xAA:设备关

姿控线程遥控指令:

名称

指令码

参数

对日定向

0x01

对地定向

0x02

 

遥测包说明:

遥测包存储与信息定义:

信息

下发周期

类型

数据地址

数据长度

参数

测试包

TASK_RNDA

0x0000

test_data

23

Byte0~ Byte7:星上时

Byte8~ Byte22:预留,0xAA

线程状态包

TASK_RNDB

0x0001

task_info_tm

4

Byte0:星务线程状态

Byte1:采集线程状态

Byte2:姿控线程状态

Byte3:地测线程状态

计算机状态包

TASK_RNDC

0x0002

com_state_tm

7

Byte0~Byte1:电压值,范围0-32768,小端

Byte2:0-100,对应0-100占空比

Byte3~Byte4:OC高低电平

Byte5:正确指令计数

Byte6:错误指令计数

设备开关包

TASK_RNDD

0x0003

dev_onoff_state

4

Byte0:设备0开关状态

Byte1:设备1开关状态

Byte2:设备2开关状态

Byte3:设备3开关状态

 

  • 代码地址.txt
    描述:代码地址
  • 基于RT-Thread的星务平台研究.pdf
    描述:主要的说明文档

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
OPF372A 1 TT Electronics OPTEK Technology LED Emitter, 830nm Min, 870nm Max, ST Connector, Panel Mount
$17.34 查看
ASH7KW-32.768KHZ-L-T3 1 Abracon Corporation CMOS Output Clock Oscillator, 0.032768MHz Nom, SMD, 4 PIN
暂无数据 查看
MOCD207M 1 onsemi 8-pin SOIC Dual-Channel Phototransistor Output Optocoupler, 3000-TUBE

ECAD模型

下载ECAD模型
$1.26 查看

相关推荐

电子产业图谱