ConOpSys V2970  P004.07
ANVILEX control operating system
Function_Block_LVRT_FSM.h
Go to the documentation of this file.
1 //------------------------------------------------------------------------------
2 //! @file Function_Block_LVRT_FSM.h
3 //! @author ANVILEX GmbH
4 //! @version V1.0
5 //! @date 18.05.2016
6 //! @brief LVRT FSM class header file.
7 //! @attention
8 //!
9 //! COPYRIGHT(C) 2016-2018 ANVILEX GmbH
10 //!
11 //! Redistribution and use in source and binary forms, with or without
12 //! modification, are permitted provided that the following conditions are met:
13 //!
14 //! 1. Redistributions of source code must retain the above copyright notice,
15 //! this list of conditions and the following disclaimer.
16 //!
17 //! 2. Redistributions in binary form must reproduce the above copyright notice,
18 //! this list of conditions and the following disclaimer in the documentation
19 //! and/or other materials provided with the distribution.
20 //!
21 //! 3. Neither the name of ANVILEX nor the names of its contributors may be
22 //! used to endorse or promote products derived from this software without
23 //! specific prior written permission.
24 //!
25 //! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
26 //! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 //! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28 //! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
29 //! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
30 //! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
31 //! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
32 //! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
33 //! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
34 //! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35 //! POSSIBILITY OF SUCH DAMAGE.
36 //------------------------------------------------------------------------------
37 
38 //------------------------------------------------------------------------------
39 // Protecting header files from mutual, recursive inclusion.
40 //------------------------------------------------------------------------------
41 
42 #pragma once
43 
44 //------------------------------------------------------------------------------
45 // Include standard libraries header files
46 //------------------------------------------------------------------------------
47 
48 //------------------------------------------------------------------------------
49 // Include thrid party header files
50 //------------------------------------------------------------------------------
51 
52 //------------------------------------------------------------------------------
53 // Include ConOpSys header files
54 //------------------------------------------------------------------------------
55 
56 #include "Function_Block_Base.h"
57 
58 //------------------------------------------------------------------------------
59 // Include ConOpSys application header files
60 //------------------------------------------------------------------------------
61 
62 //------------------------------------------------------------------------------
63 // Macros
64 //------------------------------------------------------------------------------
65 
66 //------------------------------------------------------------------------------
67 //! @brief Class declaration description
68 //------------------------------------------------------------------------------
69 
71 {
72 
73  //----------------------------------------------------------------------------
74  // Public defines, methods and variables
75  //----------------------------------------------------------------------------
76 
77  public:
78 
79  //!-------------------------------------------------------------------------
80  //! @brief Class constructor method.
81  //! @note None
82  //! \par Override
83  //! Not allowed
84  //! @attention Don't call this method directly.
85  //--------------------------------------------------------------------------
86 
88 
89  //!-------------------------------------------------------------------------
90  //! @brief Class destructor method.
91  //! @note None
92  //! \par Override
93  //! Not allowed
94  //! @attention Don't call this method directly.
95  //--------------------------------------------------------------------------
96 
97  virtual ~TFunction_Block_LVRT_FSM();
98 
99  //!-------------------------------------------------------------------------
100  //! @brief Function block initialisation method.
101  //! @note None
102  //! \par Override
103  //! Not allowed
104  //! @attention Don't call this method directly.
105  //--------------------------------------------------------------------------
106 
107  virtual VOID Init();
108 
109  //!-------------------------------------------------------------------------
110  //! @brief Function block execution method.
111  //! @note None
112  //! \par Override
113  //! Not allowed
114  //! @attention None
115  //--------------------------------------------------------------------------
116 
117  virtual VOID Execute();
118 
119  //!-------------------------------------------------------------------------
120  //! @brief Send information about Function block over communication link protocol
121  //! @note This method sends information about Function block over specified communication link protocol.
122  //! @param [in] TProtocol_Base *object_Protocol - Pointer to the communication link protocol
123  //! @return None
124  //! \par Override
125  //! Not allowed
126  //! @attention None
127  //--------------------------------------------------------------------------
128 
129  virtual VOID Send_Information( TProtocol_Base *object_Protocol );
130 
131  //--------------------------------------------------------------------------
132  // Function block parameter connectors
133  //--------------------------------------------------------------------------
134 
135  TBlock_Input_Connector object_f32_Sample_Time; //!< Function block sample time
136 
137  TBlock_Input_Connector object_f32_LVRT_Enter_Level; //!< Enter LVRT operation voltage level
138  TBlock_Input_Connector object_f32_LVRT_Sag_Level; //!< Minimal sag voltage during LVRT operation
139  TBlock_Input_Connector object_f32_LVRT_Exit_Level; //!< Exit LVRT operation voltage level
140  TBlock_Input_Connector object_f32_LVRT_Asymmetry_Level; //! Phase voltage asymmetry level
141  TBlock_Input_Connector object_f32_LVRT_Asymmetry_Detection_Time; //! Asymmetry detection time in seconds
142  TBlock_Input_Connector object_f32_LVRT_Sag_Time; //!< Maximal voltage sag time in seconds
143  TBlock_Input_Connector object_f32_LVRT_Ramp_Time; //!< Ramp up time after voltage sag in seconds
144  TBlock_Input_Connector object_f32_LVRT_Trail_Time; //!< Trail time after voltage sag in seconds
145 
146  //--------------------------------------------------------------------------
147  // Function block input connectors
148  //--------------------------------------------------------------------------
149 
150  TBlock_Input_Connector object_bool_Enable; //!< Enable LVRT Function block operation
151  TBlock_Input_Connector object_bool_Reset; //!< Reset LVRT Function block
152 // TBlock_Input_Connector object_f32_Grid_Voltage_Magnitude; //!< Actual phase-neutral grid voltage magnitude
153  TBlock_Input_Connector object_f32_Grid_Phase_Voltage_L1; //!< Actual phase-neutral grid voltage L1 (r.m.s.)
154  TBlock_Input_Connector object_f32_Grid_Phase_Voltage_L2; //!< Actual phase-neutral grid voltage L2 (r.m.s.)
155  TBlock_Input_Connector object_f32_Grid_Phase_Voltage_L3; //!< Actual phase-neutral grid voltage L3 (r.m.s.)
156 
157  //--------------------------------------------------------------------------
158  // Function block output connectors
159  //--------------------------------------------------------------------------
160 
161  TBlock_Output_Connector object_bool_Operation; //!< LVRT in operation status output
162  TBlock_Output_Connector object_bool_Asymmetry; //!< LVRT with asymmetry status output
163  TBlock_Output_Connector object_bool_Trip; //!< LVRT trip request output
164  TBlock_Output_Connector object_bool_Error; //!< LVRT error status output
165 
166  //----------------------------------------------------------------------------
167  // Protected methods and variables
168  //----------------------------------------------------------------------------
169 
170  protected:
171 
172  //----------------------------------------------------------------------------
173  // Private methods and variables
174  //----------------------------------------------------------------------------
175 
176  private:
177 
178  // FSM state definition
179  typedef enum
180  {
181 
182  enum_Init, //!< LVRT FSM initialisation state
183  enum_Standby, //!< LVRT FSM standby state
184  enum_Sag, //!< LVRT FSM processeg voltage sag region state
185  enum_Ramp, //!< LVRT FSM processed voltage ramp region state
186  enum_Trail, //!< LVRT FSM processed voltage trail region state
187  enum_Trip, //!< LVRT FSM trip state
188  enum_Error //!< LVRT FSM error state
189 
191 
193 
194  // Internal variables
195 
196  F32 f32_Ramp_Slope; //!< Ramp slope parameter
197 
198  U32 u32_Timeout_Counter; //!< Timeout counter
199  U32 u32_Ramp_Slope_Counter; //!< Ramp slope counter
200  U32 u32_LVRT_Asymmetry_Detection_Counter; //!< Voltage asymmetry detection counter
201 
202  U32 u32_LVRT_Asymmetry_Detection_Time; //!< Voltage asymmetry detection time, given in task counts
203  U32 u32_LVRT_Sag_Time; //!< Maximal voltage sag time, given in task counts
204  U32 u32_LVRT_Ramp_Time; //!< Rump up time after voltage sag, given in task counts
205  U32 u32_LVRT_Trail_Time; //!< Trail time after LVRT, given in task counts
206 
207  BOOL bool_Asymmetry_Valid; //!< Voltage asymmetry valid flag
208  BOOL bool_Asymmetry; //!< Asymmetry flag
209 
210  U32 u32_LVRT_Cycle_Counter; //!< Count of detected LVRT cycles
211  U32 u32_Symmetrical_LVRT_Cycle_Counter; //!< Count of detected symmetrical LVRT cycles
212  U32 u32_Asymmetrical_LVRT_Cycle_Counter; //!< Count of detected asymmetrical LVRT cycles
213 
214 };
215 
216 //------------------------------------------------------------------------------
217 // End Of File
218 //------------------------------------------------------------------------------
int BOOL
Boolean datatype definition.
Definition: Defines.h:124
void VOID
Datatypesess datatype definition.
Definition: Defines.h:105
unsigned long U32
Binary 32-Bit unsigned integer datatype defenition.
Definition: Defines.h:203
float F32
IEEE-754 32-Bit single presession floating point numbers datatype defenition.
Definition: Defines.h:324
Function block base class header file.
Function block input connector class.
Definition: Block_Input_Connector.h:83
Function block output connector class.
Definition: Block_Output_Connector.h:59
Function block base class for device.
Definition: Function_Block_Base.h:96
Class declaration description.
Definition: Function_Block_LVRT_FSM.h:71
virtual VOID Init()
Function block initialisation method.
Definition: Function_Block_LVRT_FSM.cpp:179
TBlock_Input_Connector object_f32_LVRT_Sag_Time
Asymmetry detection time in seconds.
Definition: Function_Block_LVRT_FSM.h:142
virtual VOID Execute()
Function block execution method.
Definition: Function_Block_LVRT_FSM.cpp:225
TLVRT_FSM_State
Definition: Function_Block_LVRT_FSM.h:180
@ enum_Trail
LVRT FSM processed voltage trail region state.
Definition: Function_Block_LVRT_FSM.h:186
@ enum_Init
LVRT FSM initialisation state.
Definition: Function_Block_LVRT_FSM.h:182
@ enum_Error
LVRT FSM error state.
Definition: Function_Block_LVRT_FSM.h:188
@ enum_Trip
LVRT FSM trip state.
Definition: Function_Block_LVRT_FSM.h:187
@ enum_Ramp
LVRT FSM processed voltage ramp region state.
Definition: Function_Block_LVRT_FSM.h:185
@ enum_Standby
LVRT FSM standby state.
Definition: Function_Block_LVRT_FSM.h:183
@ enum_Sag
LVRT FSM processeg voltage sag region state.
Definition: Function_Block_LVRT_FSM.h:184
F32 f32_Ramp_Slope
Ramp slope parameter.
Definition: Function_Block_LVRT_FSM.h:196
TBlock_Input_Connector object_f32_LVRT_Asymmetry_Level
Definition: Function_Block_LVRT_FSM.h:140
U32 u32_LVRT_Trail_Time
Trail time after LVRT, given in task counts.
Definition: Function_Block_LVRT_FSM.h:205
U32 u32_LVRT_Sag_Time
Maximal voltage sag time, given in task counts.
Definition: Function_Block_LVRT_FSM.h:203
TBlock_Output_Connector object_bool_Trip
LVRT trip request output.
Definition: Function_Block_LVRT_FSM.h:163
TBlock_Input_Connector object_f32_Grid_Phase_Voltage_L1
Actual phase-neutral grid voltage L1 (r.m.s.)
Definition: Function_Block_LVRT_FSM.h:153
TBlock_Input_Connector object_f32_LVRT_Trail_Time
Trail time after voltage sag in seconds.
Definition: Function_Block_LVRT_FSM.h:144
U32 u32_LVRT_Ramp_Time
Rump up time after voltage sag, given in task counts.
Definition: Function_Block_LVRT_FSM.h:204
TBlock_Input_Connector object_f32_LVRT_Asymmetry_Detection_Time
Phase voltage asymmetry level.
Definition: Function_Block_LVRT_FSM.h:141
TBlock_Input_Connector object_f32_LVRT_Exit_Level
Exit LVRT operation voltage level.
Definition: Function_Block_LVRT_FSM.h:139
TLVRT_FSM_State enum_FSM_State
FSM state.
Definition: Function_Block_LVRT_FSM.h:192
BOOL bool_Asymmetry
Asymmetry flag.
Definition: Function_Block_LVRT_FSM.h:208
TBlock_Input_Connector object_bool_Enable
Enable LVRT Function block operation.
Definition: Function_Block_LVRT_FSM.h:150
TBlock_Input_Connector object_f32_Grid_Phase_Voltage_L3
Actual phase-neutral grid voltage L3 (r.m.s.)
Definition: Function_Block_LVRT_FSM.h:155
virtual VOID Send_Information(TProtocol_Base *object_Protocol)
Send information about Function block over communication link protocol.
Definition: Function_Block_LVRT_FSM.cpp:838
TBlock_Input_Connector object_f32_LVRT_Enter_Level
Enter LVRT operation voltage level.
Definition: Function_Block_LVRT_FSM.h:137
U32 u32_LVRT_Asymmetry_Detection_Counter
Voltage asymmetry detection counter.
Definition: Function_Block_LVRT_FSM.h:200
U32 u32_Ramp_Slope_Counter
Ramp slope counter.
Definition: Function_Block_LVRT_FSM.h:199
U32 u32_LVRT_Asymmetry_Detection_Time
Voltage asymmetry detection time, given in task counts.
Definition: Function_Block_LVRT_FSM.h:202
TBlock_Input_Connector object_f32_LVRT_Sag_Level
Minimal sag voltage during LVRT operation.
Definition: Function_Block_LVRT_FSM.h:138
U32 u32_Asymmetrical_LVRT_Cycle_Counter
Count of detected asymmetrical LVRT cycles.
Definition: Function_Block_LVRT_FSM.h:212
TBlock_Output_Connector object_bool_Operation
LVRT in operation status output.
Definition: Function_Block_LVRT_FSM.h:161
TBlock_Output_Connector object_bool_Asymmetry
LVRT with asymmetry status output.
Definition: Function_Block_LVRT_FSM.h:162
TBlock_Input_Connector object_f32_LVRT_Ramp_Time
Ramp up time after voltage sag in seconds.
Definition: Function_Block_LVRT_FSM.h:143
TFunction_Block_LVRT_FSM()
Class constructor method.
Definition: Function_Block_LVRT_FSM.cpp:70
TBlock_Input_Connector object_f32_Sample_Time
Function block sample time.
Definition: Function_Block_LVRT_FSM.h:135
BOOL bool_Asymmetry_Valid
Voltage asymmetry valid flag.
Definition: Function_Block_LVRT_FSM.h:207
TBlock_Input_Connector object_bool_Reset
Reset LVRT Function block.
Definition: Function_Block_LVRT_FSM.h:151
TBlock_Input_Connector object_f32_Grid_Phase_Voltage_L2
Actual phase-neutral grid voltage L2 (r.m.s.)
Definition: Function_Block_LVRT_FSM.h:154
TBlock_Output_Connector object_bool_Error
LVRT error status output.
Definition: Function_Block_LVRT_FSM.h:164
virtual ~TFunction_Block_LVRT_FSM()
Class destructor method.
Definition: Function_Block_LVRT_FSM.cpp:169
U32 u32_Symmetrical_LVRT_Cycle_Counter
Count of detected symmetrical LVRT cycles.
Definition: Function_Block_LVRT_FSM.h:211
U32 u32_LVRT_Cycle_Counter
Count of detected LVRT cycles.
Definition: Function_Block_LVRT_FSM.h:210
U32 u32_Timeout_Counter
Timeout counter.
Definition: Function_Block_LVRT_FSM.h:198
Definition: Protocol_Base.h:57