CN112231082A - 一种多任务实时操作系统下开关量输入输出批量管理方法 - Google Patents
一种多任务实时操作系统下开关量输入输出批量管理方法 Download PDFInfo
- Publication number
- CN112231082A CN112231082A CN202011103081.XA CN202011103081A CN112231082A CN 112231082 A CN112231082 A CN 112231082A CN 202011103081 A CN202011103081 A CN 202011103081A CN 112231082 A CN112231082 A CN 112231082A
- Authority
- CN
- China
- Prior art keywords
- output
- switching value
- switching
- value
- operating system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000007726 management method Methods 0.000 title claims abstract description 22
- 238000000034 method Methods 0.000 claims description 28
- 230000000903 blocking effect Effects 0.000 claims description 9
- 230000000737 periodic effect Effects 0.000 claims description 6
- 125000004122 cyclic group Chemical group 0.000 claims description 3
- 238000005070 sampling Methods 0.000 claims description 3
- 241000238876 Acari Species 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Electronic Switches (AREA)
Abstract
本发明公开了一种多任务实时操作系统下开关量输入输出批量管理方法,解决实时操作系统下多开关量输入输出批量管理,采用多线程设置开关量处理请求,单线程进行处理的方法,任务与任务之间采用消息队列传递开关量处理信息。本发明处理多开关量输入输出使用结构体数组方式进行管理,在任务中进行批量处理,可以达到数千个开关量同时输出且没有任何相位差,开关量输入在任务中进行采取,任务和任务间采用消息队列传递开关量信息,保证了开关量采集的实时性。
Description
技术领域
本发明属于航空航天系统数据通信技术领域,涉及一种多任务实时操作系统下开关量输入输出批量管理方法。
背景技术
开关量输入输出是非连续性信号的采集和输出,有高和低两种状态。在航空航天领域,继电器的控制,指示灯的控制,以及开关的控制使用开关量输出进行控制,同时继电器的状态、开关状态等需要开关量输入进行采集。
开关量输入输出通常采用实时操作系统进行管理,在不同的任务中对开关量输入输出进行实时处理。
发明内容
(一)发明目的
在处理多开关量输入输出的场景中,传统的处理方法是在不同的处理线程中单独分别对开关量输入输出进行处理,这种处理方法导致开关量管理混乱,尤其在时序性要求比较高的场合,此种管理方法时序性较差;在开关量输出需要相位一致的情况下,传统管理方法处理困难,容易导致错误。
(二)技术方案
为了解决上述技术问题,本发明提供一种多任务实时操作系统下开关量输入输出批量管理方法,包括以下步骤:
STEP1:定义开关量输出管理的结构体SwitchStru,结构体内容包括:开关量输出状态SwitchMode,这个量有三种不同的取值情况,分别为:0代表开关量输出低电平,1代表开关量输出高电平,2代表开关量输出脉冲信号。输出脉冲的频率SwitchPeri,代表脉冲的频率,这个值根据系统定义的一个tick时间确定,单位为毫秒。输出脉冲的计数值SwitchCnt,此计数值记录脉冲的相位信息。
STEP2:定义一个开关量输出的结构体数组SwitchSta,这个数组长度为1024,包含1024个数据,创建一个开关量输出管理任务SwitchTackle,任务优先级为100,堆栈空间为10000的任务。
STEP3:使用消息队列创建方法msgQCreate创建消息队列,在多任务系统中,在任务j中开关量i输出需要进行驱动的时候,使用消息队列发送方法msgQSend将开关量号位i以及结构体SwitchStru拼组成一帧数据发送到SwitchTackle任务中。
STEP4:在SwitchTackle任务中使用消息队列接收方法msgQReceive以非阻塞方式接收开关量的状态,将对应号位的状态存储到SwitchSta数组所对应位置中。
STEP5:从号位1到1024轮询进行处理,轮询判断SwitchMode的值,SwitchMode为0,则操作开关量输出为低,SwitchMode为1,则操作开关量输出为高,SwitchMode为2表示PWM输出。SwitchPeri为PWM输出的周期,SwitchTackle任务使用系统延时方法taskDelay()进行周期性调度,设置调度时间为Tms(T个tick),使用SwitchCnt进行周期性加一计数,当计数值等于SwitchCnt/T时,对开关量输出进行翻转。
STEP6:创建开关量输出任务SwitchGet,任务优先级设置为100,使用信号量等待获取方法semTake进行阻塞,阻塞函数设置超时时间T ms,每一次循环等待超时后进行采样,建立存储开关量输入状态的临时数组变量tempVal,临时数组变量共有128个字节型变量,每一个对应8个开关量。使用寄存器寻址方式直接读取128个寄存器的值。存储到临时变量tempVal中。对每个变量的值连续读三次,如果三次的值一样,则这个值为有效值IOReadValue,如果最新采的值和前一次值不相同,则从最新值开始重新计算三次。
STEP7:在SwitchGet任务中将采集到的数据通过msgQSend函数发送到其他需要使用这个变量的任务中,其他任务使用采集到的开关量数据进行处理。
(三)有益效果
上述技术方案所提供的多任务实时操作系统下开关量输入输出批量管理方法,处理多开关量输入输出使用结构体数组方式进行管理,在任务中进行批量处理,可以达到数千个开关量同时输出且没有任何相位差,开关量输入在任务中进行采取,任务和任务间采用消息队列传递开关量信息,保证了开关量采集的实时性。
附图说明
图1为本发明方法的流程图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
为了解决实时操作系统下多开关量输入输出批量管理,采用多线程设置开关量处理请求,单线程进行处理的方法,任务与任务之间采用消息队列传递开关量处理信息。结合图1说明多任务实时操作系统下开关量批量输入输出处理的主流程,步骤如下:
STEP1:定义开关量输出管理的结构体SwitchStru,结构体内容包括:开关量输出状态SwitchMode,这个量有三种不同的取值情况,分别为:0代表开关量输出低电平,1代表开关量输出高电平,2代表开关量输出脉冲信号。输出脉冲的频率SwitchPeri,代表脉冲的频率,这个值根据系统定义的一个tick时间确定,单位为毫秒。输出脉冲的计数值SwitchCnt,此计数值记录脉冲的相位信息。
STEP2:定义一个开关量输出的结构体数组SwitchSta,这个数组长度为1024,包含1024个数据,创建一个开关量输出管理任务SwitchTackle,任务优先级为100,堆栈空间为10000的任务。
STEP3:使用消息队列创建方法msgQCreate创建消息队列,在多任务系统中,在任务j中开关量i输出需要进行驱动的时候,使用消息队列发送方法msgQSend将开关量号位i以及结构体SwitchStru拼组成一帧数据发送到SwitchTackle任务中。
STEP4:在SwitchTackle任务中使用消息队列接收方法msgQReceive以非阻塞方式接收开关量的状态,将对应号位的状态存储到SwitchSta数组所对应位置中。
STEP5:从号位1到1024轮询进行处理,轮询判断SwitchMode的值,SwitchMode为0,则操作开关量输出为低,SwitchMode为1,则操作开关量输出为高,SwitchMode为2表示PWM输出。SwitchPeri为PWM输出的周期,SwitchTackle任务使用系统延时方法taskDelay()进行周期性调度,设置调度时间为Tms(T个tick),使用SwitchCnt进行周期性加一计数,当计数值等于SwitchCnt/T时,对开关量输出进行翻转。
STEP6:创建开关量输出任务SwitchGet,任务优先级设置为100,使用信号量等待获取方法semTake进行阻塞,阻塞函数设置超时时间T ms,每一次循环等待超时后进行采样,建立存储开关量输入状态的临时数组变量tempVal,临时数组变量共有128个字节型变量,每一个对应8个开关量。使用寄存器寻址方式直接读取128个寄存器的值。存储到临时变量tempVal中。对每个变量的值连续读三次,如果三次的值一样,则这个值为有效值IOReadValue,如果最新采的值和前一次值不相同,则从最新值开始重新计算三次。
STEP7:在SwitchGet任务中将采集到的数据通过msgQSend函数发送到其他需要使用这个变量的任务中,其他任务使用采集到的开关量数据进行处理。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (10)
1.一种多任务实时操作系统下开关量输入输出批量管理方法,其特征在于,包括以下步骤:
STEP1:定义开关量输出管理的结构体SwitchStru;
STEP2:定义一个开关量输出的结构体数组SwitchSta,创建一个开关量输出管理任务SwitchTackle;
STEP3:使用消息队列创建方法msgQCreate创建消息队列;
STEP4:在SwitchTackle任务中使用消息队列接收方法msgQReceive以非阻塞方式接收开关量的状态,将对应号位的状态存储到SwitchSta数组所对应位置中;
STEP5:从号位1到1024轮询进行处理开关量输出管理的结构体SwitchStru;
STEP6:创建开关量输出任务SwitchGet,使用信号量等待获取方法semTake进行阻塞,阻塞函数设置超时时间Tms,每一次循环等待超时后进行采样,建立存储开关量输入状态的临时数组变量tempVal;使用寄存器寻址方式直接读取寄存器的值,存储到临时数组变量tempVal中;
STEP7:在SwitchGet任务中将采集到的数据通过msgQSend函数发送到其他需要使用这个变量的任务中,其他任务使用采集到的开关量数据进行处理。
2.如权利要求1所述的多任务实时操作系统下开关量输入输出批量管理方法,其特征在于,所述步骤STEP1中,结构体SwitchStru的内容包括:开关量输出状态SwitchMode,这个量有三种不同的取值情况,分别为:0代表开关量输出低电平,1代表开关量输出高电平,2代表开关量输出脉冲信号;输出脉冲的频率SwitchPeri,代表脉冲的频率;输出脉冲的计数值SwitchCnt,此计数值记录脉冲的相位信息。
3.如权利要求2所述的多任务实时操作系统下开关量输入输出批量管理方法,其特征在于,所述步骤STEP2中,结构体数组SwitchSta长度为1024,包含1024个数据。
4.如权利要求3所述的多任务实时操作系统下开关量输入输出批量管理方法,其特征在于,所述步骤STEP2中,开关量输出管理任务SwitchTackle的优先级为100,堆栈空间为10000的任务。
5.如权利要求4所述的多任务实时操作系统下开关量输入输出批量管理方法,其特征在于,所述步骤STEP3中,在多任务系统中,在任务j中开关量i输出需要进行驱动的时候,使用消息队列发送方法msgQSend将开关量号位i以及结构体SwitchStru拼组成一帧数据发送到SwitchTackle任务中。
6.如权利要求5所述的多任务实时操作系统下开关量输入输出批量管理方法,其特征在于,所述步骤STEP5中,轮询处理时,轮询判断SwitchMode的值,SwitchMode为0,则操作开关量输出为低,SwitchMode为1,则操作开关量输出为高,SwitchMode为2表示PWM输出;SwitchPeri为PWM输出的周期,SwitchTackle任务使用系统延时方法taskDelay()进行周期性调度,设置调度时间为Tms,使用SwitchCnt进行周期性加一计数,当计数值等于SwitchCnt/T时,对开关量输出进行翻转。
7.如权利要求6所述的多任务实时操作系统下开关量输入输出批量管理方法,其特征在于,所述步骤STEP6中,开关量输出任务SwitchGet的优先级设置为100。
8.如权利要求7所述的多任务实时操作系统下开关量输入输出批量管理方法,其特征在于,所述步骤STEP6中,临时数组变量tempVal共有128个字节型变量,每一个对应8个开关量。
9.如权利要求8所述的多任务实时操作系统下开关量输入输出批量管理方法,其特征在于,所述步骤STEP6中,使用寄存器寻址方式直接读取寄存器的值,存储到临时变量tempVal中。
10.如权利要求9所述的多任务实时操作系统下开关量输入输出批量管理方法,其特征在于,所述步骤STEP6中,对每个变量的值连续读三次,如果三次的值一样,则这个值为有效值IOReadValue,如果最新采的值和前一次值不相同,则从最新值开始重新计算三次。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011103081.XA CN112231082A (zh) | 2020-10-15 | 2020-10-15 | 一种多任务实时操作系统下开关量输入输出批量管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011103081.XA CN112231082A (zh) | 2020-10-15 | 2020-10-15 | 一种多任务实时操作系统下开关量输入输出批量管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112231082A true CN112231082A (zh) | 2021-01-15 |
Family
ID=74113635
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011103081.XA Pending CN112231082A (zh) | 2020-10-15 | 2020-10-15 | 一种多任务实时操作系统下开关量输入输出批量管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112231082A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190347129A1 (en) * | 2018-05-11 | 2019-11-14 | Futurewei Technologies, Inc. | User space pre-emptive real-time scheduler |
CN110764935A (zh) * | 2019-10-28 | 2020-02-07 | 天津津航计算技术研究所 | 一种基于实时操作系统的任务间消息高效传递方法 |
CN111580491A (zh) * | 2020-04-30 | 2020-08-25 | 中国航发哈尔滨东安发动机有限公司 | 基于plc的新型开关量信号记录存储与回放方法及系统 |
-
2020
- 2020-10-15 CN CN202011103081.XA patent/CN112231082A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190347129A1 (en) * | 2018-05-11 | 2019-11-14 | Futurewei Technologies, Inc. | User space pre-emptive real-time scheduler |
CN110764935A (zh) * | 2019-10-28 | 2020-02-07 | 天津津航计算技术研究所 | 一种基于实时操作系统的任务间消息高效传递方法 |
CN111580491A (zh) * | 2020-04-30 | 2020-08-25 | 中国航发哈尔滨东安发动机有限公司 | 基于plc的新型开关量信号记录存储与回放方法及系统 |
Non-Patent Citations (2)
Title |
---|
王培财: "分布式控制系统历史数据库的研究与改进", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
秦保波: "基于3G的可配置测控系统的设计与应用", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111444123A (zh) | 基于硬件加速的spi接口的自动读取控制系统及方法 | |
CN1570907B (zh) | 多处理器系统 | |
EP2097828B1 (en) | Dmac to handle transfers of unknown lengths | |
US7830902B2 (en) | Arbiter, crossbar, request selection method and information processing device | |
CN104579865B (zh) | 对于飞行器的数据通信网络 | |
CN102004711A (zh) | 一种基于fpga的单中断实时数据传输方法 | |
CN106843023B (zh) | 一种基于fpga的电力数据采集系统 | |
US7308686B1 (en) | Software input/output using hard real time threads | |
CN112231082A (zh) | 一种多任务实时操作系统下开关量输入输出批量管理方法 | |
CN105550131B (zh) | 一种基于有限状态机和arinc659总线的接口数据处理系统及方法 | |
EP2819019A1 (en) | Latency probe | |
US20150263930A1 (en) | Methods for embedding an out-of-band signal into a usb capture stream | |
GB2423165A (en) | Host controller interface for packet-based timeshared bus | |
EP2779543A1 (en) | Direct push operations and gather operations | |
CN111124034B (zh) | 一种使用时间处理单元的时序控制方法 | |
US3416141A (en) | Data handling system | |
US11461069B2 (en) | Multi-core audio processor with deadline scheduler | |
CN214670582U (zh) | 一种基于1553b总线协议的处理器ip核 | |
CN110362615B (zh) | 面向具有复杂接口的多对象智能数据表驱动方法及装置 | |
RU173336U1 (ru) | Масштабируемый универсальный интерфейс канала связи SLink | |
Ntaryamira et al. | The temporal correlation of data in a multirate system | |
RU2017211C1 (ru) | Устройство для сопряжения эвм с каналами связи | |
RU2023291C1 (ru) | Устройство для распределения заданий в терминальной сети | |
CN118011882A (zh) | 火工品等效系统 | |
CN115543825A (zh) | 一种片上测试数据重组和导入装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210115 |
|
RJ01 | Rejection of invention patent application after publication |