一种高效的状态码锁存复位设计方法

文档序号:5158135阅读:253来源:国知局
一种高效的状态码锁存复位设计方法
【专利摘要】本发明公开了一种高效的状态码锁存复位设计方法,其特征在于:首先建立状态码结构体数组,根据这种结构体数组对状态码的锁定、复位、屏蔽等一系列动作通过一种简单的方式进行处理,使得该部分程序具备可读性强、简洁、高效等特点:1.该方式可简洁,快速地达到对风机的状态码进行锁存、复位及屏蔽的目的,仅通过一个逻辑关系式即可完成全部动作而无需大量的逻辑语句判定代码,增加程序的可读性;2.本设计将状态码的触发条件,复位条件与状态码的锁存、复位、屏蔽等动作进行了剥离;这样设计人员可以更为方便地通过添加、删除、修改状态码,而不必担心复杂的逻辑所导致程序出错的问题,增加程序的可维护性。
【专利说明】一种高效的状态码锁存复位设计方法

【技术领域】
[0001]本发明涉及风机控制系统中使用的状态码,具体涉及一种高效的状态码锁存复位设计方法。

【背景技术】
[0002]电网及风电场业主对风机控制部分提出了更多,更高的功能需求,这就使得原本的风机控制逻辑需要不时地进行修改,这就对设计人员提出了更高的要求,需要在保证安全和现存功能的情况下以较短时间内完成新功能的添加和整机测试。
[0003]状态码的锁存是发生在状态码触发后,触发条件未结束或触发条件已经结束,但还未满足复位条件时而进行的一种保护动作。在控制系统中,状态码的锁存非常重要,它直接影响着控制系统的稳定性和安全性,决定控制系统的执行动作和人机安全。
[0004]目前,包括风机控制在内的多种控制系统都采用了通过状态机来实现控制输出的方式,该方式对于控制系统来说具备逻辑清晰,程序实现较方便的优点。但是,该方式的缺点也较为明显,那就是状态机的触发极大程度上依赖于状态码所处的具体状态。特别在增力口,删除,修改状态码时,必须要慎之又慎,以避免状态码修改错误而使得系统处于一个错误的状态机,从而导致对控制系统的损坏。


【发明内容】

[0005]本发明为解决上述技术问题,提供了一种高效的状态码锁存复位设计方法,可以对状态码的触发条件、复位条件、屏蔽条件与状态码的锁定、复位、屏蔽等动作进行了区隔,从而能很大程度保障状态码的添加和修改不影响状态码的执行动作;对于状态码的锁存、复位和屏蔽等动作仅需要一个逻辑运算公式即可实现全部功能,减少了代码的编写量,提高了程序的可读性和可靠性。
[0006]本发明的技术方案如下:
一种高效的状态码锁存复位设计方法,其特征在于:首先建立状态码结构体数组,设为Statu[i],其中i为具体所需的状态码数量,每个状态码结构体的属性设置至少包含以下几项标示:
状态触发标示=Tripping ;
状态锁存标示:Tripped ;
状态复位标示:Reset ;
状态屏蔽标示:Fobbid ;
所述四个标示均为BOOL量(布尔型变量)。
[0007]根据上述建立的状态码结构体数组,则可以实现在独立文档中编写状态码的触发、复位条件及屏蔽开关:
触发页面:Statu [i].Tripping = A&B ; (A, B分别为条件的简写);
复位页面:Statu[i].Reset =C|D ; (C, D分别为复位条件的简写); 屏蔽页面:Statu [i].Fobbid = O ; (1-表示屏蔽该状态;0_表示不屏蔽);
编写好状态码之后,还需要将状态码的状态通过如下公式进行锁存:
Statu[i].Tripped=CStatu[i].Tripping&(Statu[i].Tripped&(!Statu[i].Reset)))& (! Statu[i].Fobbid);
上述步骤完整体现了状态码的锁存、复位及屏蔽的一系列过程,巧妙得将状态码的各状态与逻辑运算符结合起来,既节约了代码量,又简单易读,体现着很强的逻辑性。
[0008]通过上述步骤,完成了状态码的触发、锁存、复位及屏蔽一些列动作的编写。对应整个控制系统而言,剩下的工作就只需要编制对应的控制动作即可。
[0009]另外,在建立状态码结构体数组时,每个状态码结构体的属性设置的标示还可根据系统需要增加其他的标示,比如状态码触发时间,清除时间等等。
[0010]本发明的有益效果如下:
本发明是在对风机控制系统中使用的状态码进行修改、添加和删除过程中出现的复杂,冗余的代码修改工作的思考和实践中提炼出来的一种简洁,高效的状态码处理方式,并已经成功应用于风机控制及变桨控制等领域。从本质上来讲,凡是涉及到状态机的控制领域,该方式均可适用,具备很强的适应性和可扩展性,能增加程序的可读性和可维护性,保证控制逻辑的稳定性和正确性;本发明可以对状态码的触发条件、复位条件、屏蔽条件与状态码的锁定、复位、屏蔽等动作进行了区隔,从而能很大程度保障状态码的添加和修改不影响状态码的执行动作;对于状态码的锁存、复位和屏蔽等动作仅需要一个逻辑运算公式即可实现全部功能,减少了代码的编写量,提高了程序的可读性和可靠性。

【专利附图】

【附图说明】
[0011]图1为本发明涉及的状态锁定的逻辑框图。

【具体实施方式】
[0012]一种高效的状态码锁存复位设计方法,是首先建立状态码结构体数组,具体定义如下:
STRUCT
SC_Tripping: BOOL ; (* 状态触发 *)
SC_Tripped: BOOL ; (* 状态锁存 *)
SC_Fobbid: B00L ; (* 状态屏蔽 *)
SC_Reset: B00L ; (* 状态码复位 *)
END_STRUCT
实例化状态码结构体数组,数组长度为100:
G _SC: ARRAY[1..100] OF Statu ;
根据上述建立的状态码结构体数组,100个状态码的锁存:
FOR 1:=l TO 100 DO
G _SC[i], SC_Tripped:= (G _SC[i].SC_Tripping OR (G _SC[i].SC_Tripped ANDG _SC[i].SC_Reset )) AND (NOT G _SC[i].SC_Fobbid);
END_F0R上述步骤中,状态锁定的逻辑框图如图1所示。
【权利要求】
1.一种高效的状态码锁存复位设计方法,其特征在于:首先建立状态码结构体数组,设为Statu[i],其中i为具体所需的状态码数量,每个状态码结构体的属性设置至少包含以下几项标示: 状态触发标示=Tripping ; 状态锁存标示:Tripped ; 状态复位标示:Reset ; 状态屏蔽标示:Fobbid ; 所述四个标示均为布尔型变量; 根据上述建立的状态码结构体数组,则可以实现在独立文档中编写状态码的触发、复位条件及屏蔽开关: 触发页面:Statu[i].Tripping = A&B ;其中,A、B分别为条件的简写; 复位页面:Statu[i].Reset =C | D ;其中,C、D分别为复位条件的简写; 屏蔽页面:Statu[i].Fobbid = O ;其中,1-表示屏蔽该状态;0_表示不屏蔽; 编写好状态码之后,还需将状态码的状态通过如下公式进行锁存:
Statu[i].Tripped=CStatu[i].Tripping&(Statu[i].Tripped&(!Statu[i].Reset)))& (! Statu[i].Fobbid)。
2.根据权利要求1所述的一种高效的状态码锁存复位设计方法,其特征在于:在建立状态码结构体数组时,每个状态码结构体的属性设置的标示根据系统需要设置有其他标示,包括状态码触发时间标示、清除时间标示。
【文档编号】F03D7/00GK104454344SQ201410565942
【公开日】2015年3月25日 申请日期:2014年10月22日 优先权日:2014年10月22日
【发明者】刘显波, 王秉旭, 孟新光, 邵勤丰, 蒋驰雷, 陈建国 申请人:四川东方电气自动控制工程有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1