技术领域
[0001] 本发明涉及嵌入式通讯控制领域,具体涉及一种基于实时操作系统任务切换的能量路由器消息传递方法。
相关背景技术
[0002] 能源路由器是能源互联网的核心装置,是一种集成了信息技术与电力电子变换技术的智能设备,能够实现分布式能量的高效利用和传输。实时操作系统(RTOS)任务切换是系统的核心功能之一,它确保了系统能够在多个任务之间高效地调度和切换,从而满足实时性要求。当前能源路由器采用PLC等模块化期间开展快速集成搭建,虽然灵活度较好,但占用空间较大且成本较高;而采用嵌入式开发的能源路由器中枢控制装置成本较低且占用空间少,但开发工程量较大,灵活度有限,针对不同拓扑的能源路由器需要进一步开发改进,应用速度受限。
[0003] 公开号为CN110829606A的中国专利,涉及的一种能源路由器主要包括:提供能源和电力载波通信通信PLC数据输入能源路由器,或输出能源路由器的至少一种通道的端口;控制端口的开闭状态的能源传输开关;和根据PLC数据和存储的路由信息确定能源传输路径的路由部件;该专利的缺点是占用空间大且成本较高。
具体实施方式
[0034] 为使本发明的目的、技术方案以及优点更加清楚明白,下面结合附图和实施例对本发明作进一步详细说明,应当理解的是,此处所描述的具体实施方式仅是本发明的一种最佳实施例,仅用以解释本发明,并不限定本发明的保护范围,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0035] 能量路由器为能源互联网的核心装置,是一种集成信息技术与电力电子变换技术的智能设备,其能够实现分布式能量的高效利用和传输。它可以实现不同能源载体的输入、输出、转换、存储,实现不同能源形式的互联互补、生产与消费环节的有机贯通,以及不同特征能源流的融合,能够解决电网的节点关系不对等、自适应能力差的问题,帮助改善电网的韧性、兼容性和经济性。它是构建能源互联网的基础,支持广域能源网络实现互联,并提供无所不在的能源服务。
[0036] 实时操作系统(RTOS)任务切换是系统的核心功能之一,它确保了系统能够在多个任务之间高效地调度和切换,从而满足实时性要求。任务切换是指操作系统在多个任务之间切换CPU使用权的过程。在RTOS中,每个任务通常都是一个无限循环的函数,认为自己拥有整个CPU。然而,实际上CPU是在多个任务之间共享和切换的。当一个任务正常完成后,它会将CPU的控制权转交给RTOS,RTOS则根据任务列表和优先级来确定下一个要运行的任务。通过合理的任务切换机制和优化措施,RTOS可以确保多个任务之间的高效调度和切换,从而满足实时性要求并提高系统的整体性能。
[0037] 现有技术中,主要存在有基于PLC的能量路由器系统搭建方法以及基于嵌入式的能量路由器系统搭建方法,但是这两种方法均存在有较大的缺点。
[0038] 对于基于PLC的能量路由器系统搭建方法,虽然灵活度较好,但是占用的空间较大且成本较高;而采用嵌入式的能量路由器系统搭建方法,其成本较低且占用空间少,但是开发工程量较大,灵活度有限,针对不同拓扑的能源路由器需要进一步开发改进,应用速度受限。
[0039] 针对上述存在的技术问题,本实施例提出一种基于实时操作系统任务切换的能量路由器消息传递方法,参考图1至图9,其主要包括有以下的若干个步骤。
[0040] 步骤S1,首先第一单元按照第二单元的格式要求,对待发指令进行初级打包以形成初级消息;对于初级消息,具体可参考图2,其包括电压、电流、状态以及指令之类的基本数据。
[0041] 具体的,第一单元为消息的来源单元,第二单元为消息的目标单元,第一单元和第二单元可根据实际需求进行设定,即同一单元在不同的使用场景下,可以为第一单元,当然也可以为第二单元。
[0042] 为了进一步的阐述上述的方法,对上述的方法所依据的结构框架进行详细的说明,参考图8,在能量路由器的内部,设置有一个中枢以及若干个单元,而每一个单元均与中枢进行连接,而不同的单元之间不直接相连。
[0043] 在本实施例中,单元可以包括端口PORT、显示GUI、继电器GPIO、电表METER,但是并不仅仅局限于上述的类型,可以根据实际需求进行灵活的设置,在此不进行一一的赘述。
[0044] 本实施例中的第一单元和第二单元即为若干个单元中的任意两个单元。
[0045] 第一单元能够和第二单元通过中枢进行消息的传递,参考图9,在中枢中主要包含有一个消息队列群组,消息队列群组主要包括消息队列特征值和消息数据的独立存储空间,并具有消息接收函数。
[0046] 在上述的技术方案中,第一单元与第二单元不直接相连,而是通过中枢来进行消息的传递,而在中枢之中设置有消息队列群组,同时包括有消息接收函数。
[0047] 在此基础上,第一单元以及第二单元内均自行设定其所能接收的消息格式以及变量形式。并在中枢的消息队列群组中注册单元自身的消息队列。
[0048] 更为广泛的,除了上述的第一单元以及第二单元,其他的单元也需要自行设置其能够接收的消息格式以及变量形式。
[0049] 在中枢内还至少设置有一个与消息接收相关的无限循环函数,无限循环函数能够定期接收每个单元发送的数据。
[0050] 在上述的技术方案中,上述的无限循环函数能够定期接收数据,在进行数据处理之后挂起。
[0051] 各个单元可以根据实际需要设定便于外部交互的无限循环函数以进行消息的接收,例如,保持接收屏幕触摸信息的外部指令,或保持接收端口信息的状态更新,但不能与中枢接收消息的函数冲突。
[0052] 为了进一步的规范消息传递的有序性,一般情况下,各个单元应将消息首先发送给中枢单元以进行解析,随后由中枢单元将消息统一的分发给其他的单元。
[0053] 在完成步骤S1的过程之后,进行步骤S2,S2,第一单元在中枢接收消息格式的基础上对数据进行二级打包以形成消息MSG;在本实施例中,二级打包的过程可参考图3。
[0054] 参考图3,在上述的二级打包过程中,最终能够形成有消息MSG,消息MSG主要包括信息来源SRC、消息目的地DST、命令码CODE、数据首位指针*DATA以及数据长度DATA_LEN。
[0055] 对于信息来源SRC,其主要能够进行消息出处的辨识。
[0056] 对于消息目的地DST,其主要能够辨识消息进入的单元队列。
[0057] 对于命令码CODE,若在上述的信息来源一致的情况下,可对消息种类进行进一步的区分,包括启停机、运行模式设置、电压设置、电流设置,命令码应CODE能够被中枢所识别。
[0058] 对于数据长度DATA_LEN,其主要能够通过与单元自身要求的数据格式长度对比,进而校验消息的正确性。
[0059] 步骤S3,中枢接收消息MSG,随后对其进行解析,最后,将解析后的数据存入中枢关于第二单元的专属队列之中。
[0060] 更为详细的,通过中枢的接收消息函数来接收第一单元发送的消息MSG,之后对消息MSG进行解析,根据信息来源SRC和消息目的地DST解析命令码CODE,将数据DATA、命令码CODE和数据长度DATA_LEN存入其隶属第二单元的专属队列。
[0061] 在上述的技术方案中,在第一单元将打包好的消息发送给中枢之后,中枢定期的接收函数能够对第一单元的消息进行解析,并将解析后的数据加入至中枢之中隶属于第二单元的专属队列。
[0062] 步骤S4,第二单元从专属队列中读取消息,并对读取得到的消息进行解析。
[0063] 更为详细的,第二单元能够通过提取消息函数从中枢隶属于第二单元的专属队列读取消息,上述的消息主要包括数据DATA、数据长度DATA_LEN以及命令码CODE,最后结合上述的命令码CODE来解析消息。
[0064] 在上述的技术方案中,通过第二单元定期的提取消息函数从第二单元的专属队列中读取相应的消息。
[0065] 参考图1,在本技术方案中,首先第一单元作为来源单元,第二单元作为目标单元,根据目标单元的格式要求,对相关指令初级打包,打包得到初级消息;随后进行二级打包,打包得到消息MSG,第一单元将打包好的消息发送至中枢,中枢接收第一单元的消息并进行解析,将解析后的部分数据加入至关于第二单元的专属队列,最后第二单元从中枢的专属队列中读取消息,结合命令CODE对消息进行解析。
[0066] 本实施例能够带来以下的技术效果:1、利用实时操作系统消息传递机制,通过设定消息传递的信息格式,结合中枢进行消息收取和分发,并最终实现了能源路由器各单元之间的指令发送和下达;
2、通过中枢进行收取和分发,减轻了消息在各个单元之间直接发送并处理的实时信息处理量,减轻了中央处理器的压力;
3、解耦了各个单元之间的关联性,增加能源路由器各个单元器件的可替换性;
4、本实施例的方法与嵌入式系统实时操作系统任务机制想配合,利用实时操作系统任务机制的基本属性开展快速切换,在满足嵌入式计算能力的基础上,达到实时控制的目的;
5、本实施例的方法与嵌入式系统相配合,具备成本低、占用空间少、各单元配件可替换性及灵活度高的优点。
[0067] 实施例2本实施例提出一种基于实时操作系统任务切换的能量路由器消息传递方法,参考图1,其主要包括有以下的若干个步骤。
[0068] 步骤S1,首先第一单元按照第二单元的格式要求,对待发指令进行初级打包以形成初级消息;对于初级消息,具体可参考图2,其包括电压、电流、状态以及指令之类的基本数据。
[0069] 具体的,第一单元为消息的来源单元,第二单元为消息的目标单元,第一单元和第二单元可根据实际需求进行设定,即同一单元在不同的使用场景下,可以为第一单元,当然也可以为第二单元。
[0070] 为了进一步的阐述上述的方法,对上述的方法所依据的结构框架进行详细的说明,参考图8,在能量路由器的内部,设置有一个中枢以及若干个单元,而每一个单元均与中枢进行连接,而不同的单元之间不直接相连。
[0071] 在本实施例中,单元可以包括端口PORT、显示GUI、继电器GPIO、电表METER,但是并不仅仅局限于上述的类型,可以根据实际需求进行灵活的设置,在此不进行一一的赘述。
[0072] 本实施例中的第一单元和第二单元即为若干个单元中的任意两个单元。
[0073] 第一单元能够和第二单元通过中枢进行消息的传递,参考图9,在中枢中主要包含有一个消息队列群组,消息队列群组主要包括消息队列特征值和消息数据的独立存储空间,并具有消息接收函数。
[0074] 在上述的技术方案中,第一单元与第二单元不直接相连,而是通过中枢来进行消息的传递,而在中枢之中设置有消息队列群组,同时包括有消息接收函数。
[0075] 在此基础上,第一单元以及第二单元内均自行设定其所能接收的消息格式以及变量形式。并在中枢的消息队列群组中注册单元自身的消息队列。
[0076] 更为广泛的,除了上述的第一单元以及第二单元,其他的单元也需要自行设置其能够接收的消息格式以及变量形式。
[0077] 在中枢内还至少设置有一个与消息接收相关的无限循环函数,无限循环函数能够定期接收每个单元发送的数据。
[0078] 在上述的技术方案中,上述的无限循环函数能够定期接收数据,在进行数据处理之后挂起。
[0079] 在完成步骤S1的过程之后,进行步骤S2,S2,第一单元在中枢接收消息格式的基础上对数据进行二级打包以形成消息MSG;在本实施例中,二级打包的过程可参考图3。
[0080] 参考图3,在上述的二级打包过程中,最终能够形成有消息MSG,消息MSG主要包括信息来源SRC、消息目的地DST、命令码CODE、数据首位指针*DATA以及数据长度DATA_LEN。
[0081] 对于信息来源SRC,其主要能够进行消息出处的辨识。
[0082] 对于消息目的地DST,其主要能够辨识消息进入的单元队列。
[0083] 对于命令码CODE,若在上述的信息来源一致的情况下,可对消息种类进行进一步的区分,包括启停机、运行模式设置、电压设置、电流设置,命令码应CODE能够被中枢所识别。
[0084] 对于数据长度DATA_LEN,其主要能够通过与单元自身要求的数据格式长度对比,进而校验消息的正确性。
[0085] 步骤S3,中枢接收消息MSG,随后对其进行解析,最后,将解析后的数据存入中枢关于第二单元的专属队列之中。
[0086] 更为详细的,通过中枢的接收消息函数来接收第一单元发送的消息MSG,之后对消息MSG进行解析,根据信息来源SRC和消息目的地DST解析命令码CODE,将数据DATA、命令码CODE和数据长度DATA_LEN存入其隶属第二单元的专属队列。
[0087] 在上述的技术方案中,在第一单元将打包好的消息发送给中枢之后,中枢定期的接收函数能够对第一单元的消息进行解析,并将解析后的数据加入至中枢之中隶属于第二单元的专属队列。
[0088] 步骤S4,第二单元从专属队列中读取消息,并对读取得到的消息进行解析。
[0089] 更为详细的,第二单元能够通过提取消息函数从中枢隶属于第二单元的专属队列读取消息,上述的消息主要包括数据DATA、数据长度DATA_LEN以及命令码CODE,最后结合上述的命令码CODE来解析消息。
[0090] 在上述的技术方案中,通过第二单元定期的提取消息函数从第二单元的专属队列中读取相应的消息。
[0091] 本实施例结合具体的实例来进行更为详细的阐述。
[0092] 基于某一能量路由器机构,设置有一个中枢,以及端口单元PACK以及显示屏单元GUI。中枢具备一个定期接收消息数据的无限循环函数,端口单元PORT具备一个定期从中枢提取消息的无限循环函数,显示屏单元GUI具备2个无限循环函数,一个定期从屏幕接收人机交互信息指令,一个定期从中枢提取消息数据。
[0093] 在步骤S1之前,首先明确单元的需求:显示屏单元GUI作为人机交互的主要界面,通过点选、调整、触控的操作获取用户当前需求,例如设定地址为1的交流模块输出电流调整为20A后,显示屏需要对模块发送指令消息进行通知。
[0094] 步骤S1,显示屏单元GUI根据端口单元PACK的要求,对指令消息进行初级打包,该单元针对模块设置(MOD_SET)的打包形式设定具体可参考图4:其中,MOD_PRTCL表示模块型号、CAN_FD表示模块通讯线路(可缺省)、MOD_ADDR表示模块地址,MOD_CMD表示模块命令,DATA_SET表示模块设置数据。
[0095] 步骤S2,参考图5,在初级打包的基础之上,显示屏单元GUI在中枢接收消息格式的基础上对数据进行二级打包,打包形成消息MSG。
[0096] 步骤S3,将上述的消息MSG发送至中枢中,中枢定期的接收消息函数接收到显示屏单元GUI的消息并解析,解析数据命令CODE,把其中的数据DATA、命令CODE和数据长度DATA_LEN存入端口(PACK)的专属队列,存入形式具体可参考图6。
[0097] 步骤S4,端口单元PACK定期的提取消息函数从中枢中隶属端口单元的专属队列中读数消息,消息包括命令码CODE、数据DATA及数据长度DATA_LEN。根据命令码CODE区分对应的数据DATA的结构体,通过PMI_PACK_MOD_SET_RECV_MSG_DATA_T的结构对数据进行解析,并获取对应指令。
[0098] 上述步骤S1至步骤S4实例的整体过程可参考图7。
[0099] 最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。