双电源任务调度算法制造技术

技术编号:36968814 阅读:9 留言:0更新日期:2023-03-22 19:29
本发明专利技术提供了一种双电源任务调度算法,包括数据结构模块、互斥算法模块以及动作算法模块;所述数据结构模块包括数据区和方法区;所述数据区用于存储各种数据和链表指针,所述方法区是用于操纵数据区中数据的方法;所述互斥算法模块包括lock方法、unLock方法以及semaphore结构,所述动作算法模块包括输入端口和输出端口,所述输入端口采用inPutMgr模块管理,用于将输入端口编为快速端口和慢速端口两组进行管理;所述输出端口采用outPutMgr模块管理,用于将输出端口编为无反馈端口和带反馈端口两组进行管理。本发明专利技术使该算法设计的双电源自动转换开关逻辑条理清晰、代码量减少、易于修改,并提高了研发效率。并提高了研发效率。并提高了研发效率。

【技术实现步骤摘要】
双电源任务调度算法


[0001]本专利技术属于双电源开关控制器
,尤其是涉及一种双电源任务调度算法。

技术介绍

[0002]双电源自动转换开关用于将负载电路从一个电源自动换接至另一个电源。内置的控制程序要实现数据共享和I/O控制。这对于功能相对简单的低端产品可以采用前后台的程序架构实现需求。但对于功能丰富,实时响应要求高和有功能扩展需求的高端产品,很难用前后台程序架构满足要求。
[0003]所以需要设计一种任务调度算法,满足双电源日益丰富的功能开发和性能需求。

技术实现思路

[0004]本专利技术的目的在于满足双电源日益丰富的功能开发和性能需求,使得研发速度加快,降低研发成本。从而提供一种双电源任务调度算法,对双电源的各功能模块抽象成任务进行统一管理。
[0005]一种双电源任务调度算法,包括并联设置的第一串接电路和第二串接电路;
[0006]所述第一串接电路包括串接在正电和负电之间的第一套智能终端故障常开触点、第一并联回路和第一继电器的启动线圈,所述第一并联回路包括并联设置的第二套智能终端A相第二跳闸出口、第二套智能终端B相第二跳闸出口和第二套智能终端C相第二跳闸出口;
[0007]所述第二串接电路包括串接在正电和负电之间的第一继电器的常开出口接点和第二套智能终端永跳继电器。
[0008]进一步的,所述第一套智能终端故障常开触点闭合的条件是第一套智能终端出现故障且线路出现单相接地故障。
[0009]进一步的,所述第二套智能终端A相第二跳闸出口、第二套智能终端B相第二跳闸出口和第二套智能终端C相第二跳闸出口用于启动第一继电器。
[0010]进一步的,所述第一继电器的常开出口接点用于启动第二套智能终端的永跳继电器。
[0011]本专利技术实施例带来了以下有益效果:
[0012]本专利技术的算法为双电源模块化设计提供接口,各模块相互解耦,使用事件派发机制驱动各模块运行。算法为各模块提供了调度功能,使得研发速度加快,降低了研发成本,该算法主要分为三部分,数据结构的设计,互斥算法设计,动作算法设计,使该算法设计的双电源自动转换开关逻辑条理清晰、代码量减少、易于修改,并提高了研发效率。
[0013]本专利技术的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本专利技术而了解。本专利技术的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
[0014]为使本专利技术的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合
所附附图,作详细说明如下。
附图说明
[0015]图1为本专利技术实施例所提供的一种双电源任务调度算法的结构图;
[0016]图2为本专利技术实施例所提供的互斥模块的流程图;
[0017]图3为本专利技术实施例所提供的动作算法模块的输入端口流程图;
[0018]图4为本专利技术实施例所提供的动作算法模块的输出端口流程图。
具体实施方式
[0019]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0020]如图1所示,本专利技术的实施例提供了一种双电源任务调度算法,具体包括数据结构模块,互斥算法模块,动作算法模块,
[0021]在本实施例中,各个任务有自己的参数需要设置,需要设计一种数据结构对参数进行管理,数据结构模块包括数据区和方法区两部分,
[0022]其中,数据区用来存储各种数据和链表指针,下面分别说明。Data:数据结构的当前值;upData:设置数据时的上限值;downData:设置数据时的下限值;address:数据在存储器中的地址;initData:数据恢复默认状态时的值;*prev:当前数据结构在链表中的上一个数据结构的地址;*next:当前数据结构在链表中的下一个数据结构的地址。当前数据,读取数据时read方法会先调用互斥模块中的lock方法给数据上锁,读取完毕后会调用unlock方法解锁。write方法用于更改数据结构中的当前数据,更改数据时write方法会判断待更改值的大小,如果待更改值处于数据区中upData和downData之间则更改,否则拒绝更改并返回错误标记,数据更改过程中先调用互斥模块中的lock方法给数据上锁,更改完毕后会调用unlock方法解锁。init方法用于系统第一次初始化和恢复初始设置时把data改为initData。
[0023]方法区是用来操纵数据区中数据的方法。包括以下方法:read方法用于读取数据结构中的add方法用于将新的数据结构添加到当前结构的后方,如果当前数据结构处于链表的末端则将当前数据结构的*next指向新数据结构的地址;如果当前数据结构不在末端,则断开链表,将新数据结构加到链表当中。delete方法用于从链表中删除当前数据结构,如果当前数据结构处于链表的末端则直接删除;如果当前数据结构不在末端,则断开链表删除当前数据结构,并重新连接链表。
[0024]在本实施例中,因为数据结构中的数据会被各功能模块共享,当两个或以上功能模块同时访问同一数据时由于读写data不是原子操作,会发生一个模块修改data时另一模块正在读取data,导致读取data的值有可能发生错误。为了避免这种情况发生,需要设计一种互斥算法以保证数据在任何时候都只有一个模块能访问。如图2所示,为互斥算法模块的结构图,即Mutex模块包含两个方法:lock方法用于读取或写入共享数据结构时对数据上锁,unLock方法用于完成读取或写入共享数据结构后对数据解锁。Mutex模块中包含一个
semaphore结构,该结构用于处理多各功能模块同时访问共享数据时的调度操作。
[0025]其中,如图2所示,如果A功能模块要访问共享数据,则调用lock方法尝试获得semaphore结构的使用权,如果semaphore结构空闲说明数据没有被别的功能模块访问,则获得semaphore结构的使用权,则上锁成功,接下来可访问共享数据。如果此时共享数据正被其它功能模块访问,也就是semaphore结构的使用权为其它功能模块获得,则A功能模块获得共享数据访问权失败,semaphore结构会把A功能模块加入到等待队列中,等待其它功能模块释放semaphore结构的使用权。如果其它功能模块访问共享数据结束,则调用unLock方法释放semaphore结构的使用权,相当于解锁。semaphore结构检测到自己被释放,则唤醒等待队列上的A功能模块,A功能模块则获得semaphore结构的使用权,则上锁成功,然后访问共享数据。如果有多个功能模块同时试图访问共享数据,semaphore结构会对功能模块访问优先级排序,让优先级最高的功能模块访问数据,其它功能模块排队等候。
[0026]在本实施例中,双电源本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种双电源任务调度算法,其特征在于,包括数据结构模块、互斥算法模块以及动作算法模块;所述数据结构模块包括数据区和方法区;所述数据区用于存储各种数据和链表指针,所述方法区用于操纵数据区中数据;所述互斥算法模块包括lock方法、unLock方法以及semaphore结构,所述lock方法用于读取或写入共享数据结构时对数据上锁,所述unLock方法用于完成读取或写入共享数据结构后对数据解锁,所述semaphore结构用于处理多各功能模块同时访问共享数据时的调度操作;所述动作算法模块包括输入端口和输出端口,所述输入端口采用inPutMgr模块管理,用于将输入端口编为快速端口和慢速端口两组进行管理;所述输出端口采用outPutMgr模块管理,用于将输出端口编为无反馈端口和带反馈端口两组进行管理。2.根据权利要求1所述的双电源任务调度算法,其特征在于,所述互斥算法模块的工作步骤为:步骤1、功能模块通过调用lock方法访问共享数据,判断semaphore结构是否空闲,若是,则获得semaphore结构的使用权,则上锁成功,从而访问共享数据,若否,则获得共享数据访问权失败,semaphore结构会把此功能模块加入到等待队列中,等待其它功能模块释放semaphore结构的使用权,再访问共享数据;步骤2、功能模块访问共享数据结束,则调用unLock方法释放semaphore结构的使用权,则解锁成...

【专利技术属性】
技术研发人员:张凌华李双佑沈飞飞
申请(专利权)人:施耐德万高天津电气设备有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1