CN109814842B - 一种双电源自动转换开关的树型逻辑软件设计方法 - Google Patents
一种双电源自动转换开关的树型逻辑软件设计方法 Download PDFInfo
- Publication number
- CN109814842B CN109814842B CN201811600190.5A CN201811600190A CN109814842B CN 109814842 B CN109814842 B CN 109814842B CN 201811600190 A CN201811600190 A CN 201811600190A CN 109814842 B CN109814842 B CN 109814842B
- Authority
- CN
- China
- Prior art keywords
- container
- linked list
- design
- pointer
- tree
- 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.)
- Active
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及一种双电源自动转换开关的树型逻辑软件设计方法,所述设计方法包括如下步骤:S1设计容器结构,S101所述容器链表中包含使用模板实现的链表结构,通过指定不同的模板参数可以接收不同类型的容器对象,各个容器对象持有前后容器对象的指针,从而形成了链表结构,S102设计容器添加方法,S103设计容器删除方法,S104设计遍历算法;S2根据双电源工作方式创建四个类,每种工作方式下包括多种工作状态,把工作状态抽象成容器类,为每容器类创建对象,并添加到相应的工作方式下,以此类推最终形成了一颗自上而下的树型结构;S3设计树型结构的调度算法。本发明逻辑结构清晰,降低后期修改风险,减少测试工作量。
Description
技术领域
本发明属于双电源开关的工业控制软件技术领域,尤其涉及一种双电源自动转换开关的树型逻辑软件设计方法。
背景技术
双电源自动转换开关用于将负载电路从一个电源自动换接至另一个电源。根据应用场景的不同需要包含不同的转换逻辑,转换逻辑之间相互包含,错综复杂。如果需要增加新逻辑代码编写的工作量很大,往往会影响已有逻辑的安全性,增加了测试的工作量。
因此,基于这些问题,提供一种逻辑结构清晰,代码简单高效,降低后期修改风险,减少测试工作量的双电源自动转换开关的树型逻辑软件设计方法,具有重要的现实意义。
发明内容
本发明的目的在于克服现有技术的不足,提供一种逻辑结构清晰,代码简单高效,降低后期修改风险,减少测试工作量的双电源自动转换开关的树型逻辑软件设计方法。
本发明解决其技术问题是采取以下技术方案实现的:
一种双电源自动转换开关的树型逻辑软件设计方法,所述设计方法包括如下步骤:
S1、设计容器结构
对所述容器结构的设计包括容器链表结构的设计、容器添加方法的设计、容器删除方法的设计及遍历算法的设计;
S101、所述容器链表中包含使用模板实现的链表结构,通过指定不同的模板参数可以接收不同类型的容器对象,各个容器对象持有前后容器对象的指针,从而形成了链表结构;
S102、设计容器添加方法
把要添加进链表的指针地址赋给链表中最后一个容器对象,从而可以动态的把容器指针添加到容器链表中;
S103、设计容器删除方法
先找到需要删除的容器指针的位置,然后让该需要删除容器指针的前一个容器指针持有下一个容器指针的地址,从而可以动态的把需要删除的容器指针从容器链表中删除;
S104、设计遍历算法
所述遍历算法用于遍历容器包含的所有子容器;
所述遍历算法的设计包括scan、judge、action三个方法的设计;其中:scan方法根据容器类型和count方法返回的容器链表长度从链表中逐一取出容器指针并调用judge方法;judge方法判断每个容器对象中的预设条件,预设条件包括电压值、电流值、开关位置信息、转换时间、消防信号、干节点信号、温度信号,如果条件满足设定值则返回true,如果不满足则返回false;action方法是每个容器对象要执行的动作,动作包括开关转换、报警输出、发电机启动、工作方式切换,如果judge方法返回值为true就执行action方法中的动作,如果返回值为false就跳过action方法;
S2、根据双电源工作方式自投自复、自投不自复、互为备用、手动,分别为这四种工作方式创建四个类,这四个类都继承自容器结构类,这四种容器类中包含了容器结构中的所有方法,从而将四种工作方式抽象成四种容器类,然后用定义类对象的方式为每种容器类创建对象,并调用容器添加方法把每个对象的指针地址添加到顶层容器链表中最后一个容器对象地址中;每种工作方式下包括A到N的多种工作状态,把多种工作状态抽象成容器类,然后为每种容器类创建对象,并添加到相应的4种工作方式下,以此类推可以创造出更多的状态对象并添加到相应的容器下,最终形成了一颗自上而下的树型结构;
S3、设计树型结构的调度算法
S301、顶层容器通过scan方法逐个取出自己容器链表的每一个子容器,查看是否包含下一级子容器,如果包含下一级子容器,就调用子容器的scan方法进入下一级子容器;如果这个子容器不包含下一级子容器,则继续查看容器链表中的其它子容器;如此反复直到进入最底层子容器;
S302、进入每一个容器后,调用这个容器中的条件判断judge方法,如果外部条件满足条件判断就执行容器中的动作action方法,action方法执行完毕后自动返回父容器;当一个容器不包含任何子容器时,直接返回父容器;按照以上的流程,算法自动遍历完整个树型结构中的所有状态,即完成一轮逻辑动作。
进一步的,所述步骤S101中容器链表中包含reset、push、pop、count四个方法;reset用于恢复链表初始状态;push用于把新的容器指针压入容器链表;count用于返回容器链表中存储的容器指针数量;pop用于弹出容器链表顶端的容器指针。
进一步的,所述步骤S101中容器链表中的模板参数包括容器类型和链表长度。
本发明的优点和积极效果是:
通过本发明的树型逻辑软件设计方法设计的双电源自动转换开关的双电源代码,逻辑条理清晰、代码量减少、易于修改,并减少了测试工作。
附图说明
以下将结合附图和实施例来对本发明的技术方案作进一步的详细描述,但是应当知道,这些附图仅是为解释目的而设计的,因此不作为本发明范围的限定。此外,除非特别指出,这些附图仅意在概念性地说明此处描述的结构构造,而不必要依比例进行绘制。
图1为本发明实施例提供的树型逻辑软件设计方法的容器结构的示意图;
图2为本发明实施例提供的树型逻辑软件设计方法中双电源转换开关工作方式和工作状态容器对象的树型结构图;
图3为本发明实施例提供的树型逻辑软件设计方法中树型结构的调度算法的流程示意图;
具体实施方式
首先,需要说明的是,以下将以示例方式来具体说明本发明的具体结构、特点和优点等,然而所有的描述仅是用来进行说明的,而不应将其理解为对本发明形成任何限制。此外,在本文所提及各实施例中予以描述或隐含的任意单个技术特征,仍然可在这些技术特征(或其等同物)之间继续进行任意组合或删减,从而获得可能未在本文中直接提及的本发明的更多其他实施例。需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
下面就结合图1至图3来具体说明本发明。
实施例1
图1为本发明实施例提供的树型逻辑软件设计方法的容器结构的示意图;图2为本发明实施例提供的树型逻辑软件设计方法中双电源转换开关工作方式和工作状态容器对象的树型结构图;图3为本发明实施例提供的树型逻辑软件设计方法中树型结构的调度算法的流程示意图;如图1~3所示,本实施例提供的一种双电源自动转换开关的树型逻辑软件设计方法,所述设计方法包括如下步骤:
S1、设计容器结构
对所述容器结构的设计包括容器链表结构的设计、容器添加方法的设计、容器删除方法的设计及遍历算法的设计;
S101、所述容器链表中包含使用模板实现的链表结构,通过指定不同的模板参数可以接收不同类型的容器对象,各个容器对象持有前后容器对象的指针,从而形成了链表结构;
S102、设计容器添加方法
把要添加进链表的指针地址赋给链表中最后一个容器对象,从而可以动态的把容器指针添加到容器链表中;
S103、设计容器删除方法
先找到需要删除的容器指针的位置,然后让该需要删除容器指针的前一个容器指针持有下一个容器指针的地址,从而可以动态的把需要删除的容器指针从容器链表中删除;
S104、设计遍历算法
所述遍历算法用于遍历容器包含的所有子容器;
所述遍历算法的设计包括scan、judge、action三个方法的设计;其中:scan方法根据容器类型和count方法返回的容器链表长度从链表中逐一取出容器指针并调用judge方法;judge方法判断每个容器对象中的预设条件,预设条件包括电压值、电流值、开关位置信息、转换时间、消防信号、干节点信号、温度信号,如果条件满足设定值则返回true,如果不满足则返回false;action方法是每个容器对象要执行的动作,动作包括开关转换、报警输出、发电机启动、工作方式切换,如果judge方法返回值为true就执行action方法中的动作,如果返回值为false就跳过action方法;
S2、根据双电源工作方式自投自复、自投不自复、互为备用、手动,分别为这四种工作方式创建四个类,这四个类都继承自容器结构类,这四种容器类中包含了容器结构中的所有方法,从而将四种工作方式抽象成四种容器类,然后用定义类对象的方式为每种容器类创建对象,并调用容器添加方法把每个对象的指针地址添加到顶层容器链表中最后一个容器对象地址中;每种工作方式下包括A到N的多种工作状态,把多种工作状态抽象成容器类,然后为每种容器类创建对象,并添加到相应的4种工作方式下,以此类推可以创造出更多的状态对象并添加到相应的容器下,最终形成了一颗自上而下的树型结构;
S3、设计树型结构的调度算法
S301、顶层容器通过scan方法逐个取出自己容器链表的每一个子容器,查看是否包含下一级子容器,如果包含下一级子容器,就调用子容器的scan方法进入下一级子容器;如果这个子容器不包含下一级子容器,则继续查看容器链表中的其它子容器;如此反复直到进入最底层子容器;
S302、进入每一个容器后,调用这个容器中的条件判断judge方法,如果外部条件满足条件判断就执行容器中的动作action方法,action方法执行完毕后自动返回父容器;当一个容器不包含任何子容器时,直接返回父容器;按照以上的流程,算法自动遍历完整个树型结构中的所有状态,即完成一轮逻辑动作。
需要指出的是,所述步骤S101中容器链表中包含reset、push、pop、count四个方法;其中:reset用于恢复链表初始状态,reset方法内部首先将链表成员的位置指针指向零位置,然后使用编译器提供的memset方法将链表空间清零,这样就达到了恢复链表初始状态的目的;push用于把新的容器指针压入容器链表,push方法执行时首先检查链表成员的位置指针是否指向了链表的最高位置,如果没有则将当前要加入链表的成员拷贝到链表中,如果已指向最高位置,表示链表已满不能加入新成员,返回错误状态通知加入失败;count用于返回容器链表中存储的容器指针数量,当调用count方法时会返回链表成员指针的位置及容器指针数量;pop用于弹出容器链表顶端的容器指针,pop方法执行时首先检查链表成员的位置指针是否指向了链表的零位置,如果指向零位置则不执行任何操作,如果不是指向零位置则把位置指针指向上一个位置,并返回当前位置的指针。
此外,所述步骤S101中容器链表中的模板参数包括容器类型和链表长度。
以上实施例对本发明进行了详细说明,但所述内容仅为本发明的较佳实施例,不能被认为用于限定本发明的实施范围。凡依本发明申请范围所作的均等变化与改进等,均应仍归属于本发明的专利涵盖范围之内。
Claims (3)
1.一种双电源自动转换开关的树型逻辑软件设计方法,其特征在于:所述设计方法包括如下步骤:
S1、设计容器结构
对所述容器结构的设计包括容器链表结构的设计、容器添加方法的设计、容器删除方法的设计及遍历算法的设计;
S101、所述容器链表中包含使用模板实现的链表结构,通过指定不同的模板参数可以接收不同类型的容器对象,各个容器对象持有前后容器对象的指针,从而形成了链表结构;
S102、设计容器添加方法
把要添加进链表的指针地址赋给链表中最后一个容器对象,从而可以动态的把容器指针添加到容器链表中;
S103、设计容器删除方法
先找到需要删除的容器指针的位置,然后让该需要删除容器指针的前一个容器指针持有下一个容器指针的地址,从而可以动态的把需要删除的容器指针从容器链表中删除;
S104、设计遍历算法
所述遍历算法用于遍历容器包含的所有子容器;
所述遍历算法的设计包括scan、judge、action三个方法的设计;其中:scan方法根据容器类型和count方法返回的容器链表长度从链表中逐一取出容器指针并调用judge方法;judge方法判断每个容器对象中的预设条件,预设条件包括电压值、电流值、开关位置信息、转换时间、消防信号、干节点信号、温度信号,如果条件满足设定值则返回true,如果不满足则返回false;action方法是每个容器对象要执行的动作,动作包括开关转换、报警输出、发电机启动、工作方式切换,如果judge方法返回值为true就执行action方法中的动作,如果返回值为false就跳过action方法;
S2、根据双电源工作方式自投自复、自投不自复、互为备用、手动,分别为这四种工作方式创建四个类,这四个类都继承自容器结构类,这四种容器类中包含了容器结构中的所有方法,从而将四种工作方式抽象成四种容器类,然后用定义类对象的方式为每种容器类创建对象,并调用容器添加方法把每个对象的指针地址添加到顶层容器链表中最后一个容器对象地址中;每种工作方式下包括A到N的多种工作状态,把多种工作状态抽象成容器类,然后为每种容器类创建对象,并添加到相应的4种工作方式下,以此类推可以创造出更多的状态对象并添加到相应的容器下,最终形成了一颗自上而下的树型结构;
S3、设计树型结构的调度算法
S301、顶层容器通过scan方法逐个取出自己容器链表的每一个子容器,查看是否包含下一级子容器,如果包含下一级子容器,就调用子容器的scan方法进入下一级子容器;如果这个子容器不包含下一级子容器,则继续查看容器链表中的其它子容器;如此反复直到进入最底层子容器;
S302、进入每一个容器后,调用这个容器中的条件判断judge方法,如果外部条件满足条件判断就执行容器中的动作action方法,action方法执行完毕后自动返回父容器;当一个容器不包含任何子容器时,直接返回父容器;按照以上的流程,算法自动遍历完整个树型结构中的所有状态,即完成一轮逻辑动作。
2.根据权利要求1所述的一种双电源自动转换开关的树型逻辑软件设计方法,其特征在于:所述步骤S101中容器链表中包含reset、push、pop、count四个方法;reset用于恢复链表初始状态;push用于把新的容器指针压入容器链表;count用于返回容器链表中存储的容器指针数量;pop用于弹出容器链表顶端的容器指针。
3.根据权利要求1所述的一种双电源自动转换开关的树型逻辑软件设计方法,其特征在于:所述步骤S101中容器链表中的模板参数包括容器类型和链表长度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811600190.5A CN109814842B (zh) | 2018-12-26 | 2018-12-26 | 一种双电源自动转换开关的树型逻辑软件设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811600190.5A CN109814842B (zh) | 2018-12-26 | 2018-12-26 | 一种双电源自动转换开关的树型逻辑软件设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109814842A CN109814842A (zh) | 2019-05-28 |
CN109814842B true CN109814842B (zh) | 2021-12-17 |
Family
ID=66602515
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811600190.5A Active CN109814842B (zh) | 2018-12-26 | 2018-12-26 | 一种双电源自动转换开关的树型逻辑软件设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109814842B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5471398A (en) * | 1991-07-01 | 1995-11-28 | Texas Instruments Incorporated | MTOL software tool for converting an RTL behavioral model into layout information comprising bounding boxes and an associated interconnect netlist |
CN103559032A (zh) * | 2013-10-31 | 2014-02-05 | 烽火通信科技股份有限公司 | 嵌入式系统对象管理的装置及方法 |
CN106227736A (zh) * | 2016-07-11 | 2016-12-14 | 乐视控股(北京)有限公司 | 一种基于链表结构的逻辑流程实现方法及装置 |
CN106250100A (zh) * | 2016-08-15 | 2016-12-21 | 腾讯科技(深圳)有限公司 | 系统逻辑控制方法及装置 |
CN108614515A (zh) * | 2018-06-19 | 2018-10-02 | 四川中烟工业有限责任公司 | 一种基于物流生产线控制的plc梯形图到指令表的转换方法 |
-
2018
- 2018-12-26 CN CN201811600190.5A patent/CN109814842B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5471398A (en) * | 1991-07-01 | 1995-11-28 | Texas Instruments Incorporated | MTOL software tool for converting an RTL behavioral model into layout information comprising bounding boxes and an associated interconnect netlist |
CN103559032A (zh) * | 2013-10-31 | 2014-02-05 | 烽火通信科技股份有限公司 | 嵌入式系统对象管理的装置及方法 |
CN106227736A (zh) * | 2016-07-11 | 2016-12-14 | 乐视控股(北京)有限公司 | 一种基于链表结构的逻辑流程实现方法及装置 |
CN106250100A (zh) * | 2016-08-15 | 2016-12-21 | 腾讯科技(深圳)有限公司 | 系统逻辑控制方法及装置 |
CN108614515A (zh) * | 2018-06-19 | 2018-10-02 | 四川中烟工业有限责任公司 | 一种基于物流生产线控制的plc梯形图到指令表的转换方法 |
Non-Patent Citations (2)
Title |
---|
Automatic Transfer Switch (ATS) Using Programmable Logic Controller (PLC);Hamdy Ashour;《IEEE International Conference on Mechatronics》;20041213;第531-535页 * |
双电源自动转换开关智能控制器的设计;张威威;《中国优秀硕士学位论文全文数据库 工程科技Ⅱ辑》;20150715(第(2015)07期);C042-360 * |
Also Published As
Publication number | Publication date |
---|---|
CN109814842A (zh) | 2019-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103440196B (zh) | 一种操作系统资源问题检测方法 | |
CN111124379B (zh) | 页面生成方法、装置、电子设备及存储介质 | |
CN110489086B (zh) | 流程执行控制方法、装置、计算机设备及存储介质 | |
CN109542450B (zh) | 智能变电站过程层智能组件实现方法及装置 | |
CN114077534B (zh) | 测试用例生成方法、装置和计算机可读存储介质 | |
CN113364515B (zh) | 基于Xstate的卫星遥控方法、装置、设备和存储介质 | |
CN112214291A (zh) | 一种任务调度方法及装置 | |
CN112860312A (zh) | 项目依赖关系变化的检测方法及装置 | |
CN107870852B (zh) | 一种测试方法及装置 | |
CN109814842B (zh) | 一种双电源自动转换开关的树型逻辑软件设计方法 | |
CN101986282A (zh) | 拓扑适配方法及装置 | |
CN116432185B (zh) | 一种异常检测方法、装置、可读存储介质及电子设备 | |
Sinha et al. | Requirements engineering of industrial automation systems: Adapting the CESAR requirements meta model for safety-critical smart grid software | |
CN110968738B (zh) | 智能站描述文件数据类型模板嵌套环检测方法及系统 | |
CN113807077A (zh) | 自然语言测试脚本解析处理方法、装置及电子设备 | |
Barros et al. | From non-autonomous Petri net models to executable state machines | |
CN111090513A (zh) | 车联网平台终端链路健康状态的检测方法及存储介质 | |
Siewe | Towards the Formal Analysis of UML Activity Diagrams in a Calculus of Context-aware Ambients | |
CN113515826B (zh) | 配电网合环线路拓扑搜索方法及系统 | |
CN112733153B (zh) | 源代码扫描方法、装置、电子设备和存储介质 | |
CN110704322B (zh) | 软件测试方法和系统 | |
CN115034392B (zh) | Rete网络的编译方法及装置、Rete算法的执行方法及装置 | |
CN114338747B (zh) | 支持设备自定义上报数据报文的云端场景控制系统及方法 | |
CN105224293A (zh) | 目标对象的生成方法及服务器 | |
CN118503103A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |