ConOpSys V2970  P004.07
ANVILEX control operating system
P005_03_V2_0_AI_V_BUG_FIX.h
Go to the documentation of this file.
1 //------------------------------------------------------------------------------
2 //! @file P005_03_V2_0_AI_V_BUG_FIX.h
3 //! @brief Analog input board P005.03 V2.0 hardware driver header file.
4 //! @attention No special attention requered.
5 //! @copyright (C) 2015-2020 ANVILEX LLC
6 //! $HeadURL: https://192.168.3.4:8443/svn/P004_07/ConOpSys/Hardware/P005_03_V2_0_AI/P005_03_V2_0_AI_V_BUG_FIX.h $
7 //! $Revision: 2262 $
8 //! $Date: 2020-12-05 07:20:48 +0500 (Sa, 05 Dez 2020) $
9 //! $Author: minch $
10 //------------------------------------------------------------------------------
11 //
12 // Redistribution and use in source and binary forms, with or without
13 // modification, are permitted provided that the following conditions are met:
14 //
15 // 1. Redistributions of source code must retain the above copyright notice,
16 // this list of conditions and the following disclaimer.
17 //
18 // 2. Redistributions in binary form must reproduce the above copyright notice,
19 // this list of conditions and the following disclaimer in the documentation
20 // and/or other materials provided with the distribution.
21 //
22 // 3. Neither the name of ANVILEX nor the names of its contributors may be
23 // used to endorse or promote products derived from this software without
24 // specific prior written permission.
25 //
26 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
27 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29 // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
30 // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
31 // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
32 // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
33 // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
34 // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36 // POSSIBILITY OF SUCH DAMAGE.
37 //
38 //------------------------------------------------------------------------------
39 
40 #pragma once
41 
42 //------------------------------------------------------------------------------
43 // Include standard libraries header files
44 //------------------------------------------------------------------------------
45 
46 //------------------------------------------------------------------------------
47 // Include thrid party header files
48 //------------------------------------------------------------------------------
49 
50 //------------------------------------------------------------------------------
51 // Include ConOpSys header files
52 //------------------------------------------------------------------------------
53 
54 #include "Functional_Block_Base.h"
55 
56 //------------------------------------------------------------------------------
57 // Include ConOpSys application header files
58 //------------------------------------------------------------------------------
59 
60 //------------------------------------------------------------------------------
61 // Macros
62 //------------------------------------------------------------------------------
63 
64 //! @brief Analog input P005.03 V2.0 board class
65 class TP005_03_V2_0_AI_V_BUG_FIX : public TFunctional_Block_Base
66 {
67 
68  //----------------------------------------------------------------------------
69  // Public defines, methods and variables
70  //----------------------------------------------------------------------------
71 
72  public:
73 
74  // Register structure for generic access
75  typedef struct
76  {
77 
78  // Analog value registers
79  U16 u16_Analog_Input_Status; //!< Status register
80  I16 i16_Analog_Input_Data_1; //!< Analog input channel 1 data register as I16 value
81  I16 i16_Analog_Input_Data_2; //!< Analog input channel 2 data register as I16 value
82  I16 i16_Analog_Input_Data_3; //!< Analog input channel 3 data register as I16 value
87 
89 
90  //--------------------------------------------------------------------------
91  // Public methods
92  //--------------------------------------------------------------------------
93 
94  // Constructor and destructor
95  TP005_03_V2_0_AI_V_BUG_FIX(); //!< Constructor
96  ~TP005_03_V2_0_AI_V_BUG_FIX(); //!< Destructor
97 
98  VOID Map( TP005_03_V2_0_AI_V_Registers *struct_Registers_Base_Address );
99  virtual VOID Init();
100  virtual VOID Execute();
101  virtual VOID Send_Information( TProtocol_Base *object_Protocol );
102 
103  // Block parameters
104 
105  TBlock_Input_Connector object_f32_Analog_Input_Full_Scale_1; //!< Analog input channel 1 fill scale value. Also used for channel total gain adjustment.
106  TBlock_Input_Connector object_f32_Analog_Input_Full_Scale_2; //!< Analog input channel 1 fill scale value. Also used for channel total gain gain adjustment.
107  TBlock_Input_Connector object_f32_Analog_Input_Full_Scale_3; //!< Analog input channel 1 fill scale value. Also used for channel total gain gain adjustment.
108 
109  TBlock_Input_Connector object_f32_Analog_Input_Offset_1; //!< Analog input channel 1 offset
110  TBlock_Input_Connector object_f32_Analog_Input_Offset_2; //!< Analog input channel 2 offset
111  TBlock_Input_Connector object_f32_Analog_Input_Offset_3; //!< Analog input channel 3 offset
112 
113  // Block inputs
114 
116 
117  // Block outputs
118 
119  U16 u16_Analog_Input_Status; //!< Analog input status
120  I16 i16_Analog_Input_Data_1; //!< Analog input channel 1 block output as I16
121  I16 i16_Analog_Input_Data_2; //!< Analog input channel 2 block output as I16
122  I16 i16_Analog_Input_Data_3; //!< Analog input channel 3 block output as I16
123 
124  TBlock_Output_Connector object_f32_Analog_Input_Data_1; //!< Analog input channel 1 block output
125  TBlock_Output_Connector object_f32_Analog_Input_Data_2; //!< Analog input channel 2 block output
126  TBlock_Output_Connector object_f32_Analog_Input_Data_3; //!< Analog input channel 3 block output
127 
128  TBlock_Output_Connector object_f32_AN; //!< Analog input channel 1 block output
129  TBlock_Output_Connector object_f32_BN; //!< Analog input channel 2 block output
130  TBlock_Output_Connector object_f32_CN; //!< Analog input channel 3 block output
131 
132  TBlock_Output_Connector object_bool_Hardware_Error; //!< Critical hardware error flag
133  TBlock_Output_Connector object_bool_Symmenty_Error; //!< Signal symmery error flag
135  TBlock_Output_Connector object_bool_Magnitude_Software_Level_Error; // !< Software magnitude limit reached error flag
136 
137  //----------------------------------------------------------------------------
138  // Protected defines, methods and variables
139  //----------------------------------------------------------------------------
140 
141  protected:
142 
143  //----------------------------------------------------------------------------
144  // Private defines, methods and variables
145  //----------------------------------------------------------------------------
146 
147  private:
148 
149  typedef union
150  {
152  struct
153  {
157  U16 :1;
158  U16 :1;
159  U16 :1;
160  U16 :1;
167  U16 :1;
168  U16 :1;
169  U16 :1;
170  };
171  } TStatus;
172 
173  volatile TP005_03_V2_0_AI_V_Registers *struct_Registers; //!< Hardware mapped registers
174 
178 
179 };
180 
181 //------------------------------------------------------------------------------
182 // End Of File
183 //------------------------------------------------------------------------------
void VOID
Datatypesess datatype definition.
Definition: Defines.h:105
float F32
IEEE-754 32-Bit single presession floating point numbers datatype defenition.
Definition: Defines.h:324
short I16
2s Compliment 16-Bit signed integer datatype defenition
Definition: Defines.h:196
unsigned short U16
Binary 16-Bit unsigned integer datatype defenition.
Definition: Defines.h:193
Function block input connector class.
Definition: Block_Input_Connector.h:83
Function block output connector class.
Definition: Block_Output_Connector.h:59
Analog input P005.03 V2.0 board class.
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:66
TP005_03_V2_0_AI_V_BUG_FIX()
Constructor.
Definition: P005_03_V2_0_AI_V_BUG_FIX.cpp:70
TBlock_Input_Connector object_f32_Analog_Input_Full_Scale_2
Analog input channel 1 fill scale value. Also used for channel total gain gain adjustment.
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:106
TBlock_Output_Connector object_f32_Analog_Input_Data_3
Analog input channel 3 block output.
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:126
TBlock_Output_Connector object_f32_AN
Analog input channel 1 block output.
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:128
TBlock_Output_Connector object_f32_BN
Analog input channel 2 block output.
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:129
TBlock_Output_Connector object_bool_Magnitude_Hardware_Level_Error
Hardware limit reached error flag.
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:134
TBlock_Input_Connector object_f32_Magnitude_Software_Level
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:115
virtual VOID Send_Information(TProtocol_Base *object_Protocol)
Send detailed information about functional block.
Definition: P005_03_V2_0_AI_V_BUG_FIX.cpp:251
I16 i16_Analog_Input_Data_3
Analog input channel 3 block output as I16.
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:122
TBlock_Output_Connector object_f32_Analog_Input_Data_2
Analog input channel 2 block output.
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:125
virtual VOID Execute()
Analog input board P005.03 V2.0 execute method.
Definition: P005_03_V2_0_AI_V_BUG_FIX.cpp:201
virtual VOID Init()
Analog input board P005.03 V2.0 object initialization.
Definition: P005_03_V2_0_AI_V_BUG_FIX.cpp:182
TBlock_Input_Connector object_f32_Analog_Input_Full_Scale_3
Analog input channel 1 fill scale value. Also used for channel total gain gain adjustment.
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:107
TBlock_Input_Connector object_f32_Analog_Input_Full_Scale_1
Analog input channel 1 fill scale value. Also used for channel total gain adjustment.
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:105
I16 i16_Analog_Input_Data_2
Analog input channel 2 block output as I16.
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:121
TBlock_Output_Connector object_bool_Hardware_Error
Critical hardware error flag.
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:132
F32 f32_Gain_2
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:176
TBlock_Output_Connector object_f32_Analog_Input_Data_1
Analog input channel 1 block output.
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:124
TBlock_Output_Connector object_bool_Magnitude_Software_Level_Error
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:135
TBlock_Input_Connector object_f32_Analog_Input_Offset_3
Analog input channel 3 offset.
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:111
TBlock_Input_Connector object_f32_Analog_Input_Offset_2
Analog input channel 2 offset.
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:110
F32 f32_Gain_1
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:175
I16 i16_Analog_Input_Data_1
Analog input channel 1 block output as I16.
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:120
TBlock_Output_Connector object_f32_CN
Analog input channel 3 block output.
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:130
U16 u16_Analog_Input_Status
Analog input status.
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:119
F32 f32_Gain_3
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:177
TBlock_Output_Connector object_bool_Symmenty_Error
Signal symmery error flag.
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:133
volatile TP005_03_V2_0_AI_V_Registers * struct_Registers
Hardware mapped registers.
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:173
TBlock_Input_Connector object_f32_Analog_Input_Offset_1
Analog input channel 1 offset.
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:109
~TP005_03_V2_0_AI_V_BUG_FIX()
Destructor.
Definition: P005_03_V2_0_AI_V_BUG_FIX.cpp:157
VOID Map(TP005_03_V2_0_AI_V_Registers *struct_Registers_Base_Address)
Analog input board P005.03 V2.0 memory map.
Definition: P005_03_V2_0_AI_V_BUG_FIX.cpp:168
Definition: Protocol_Base.h:57
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:76
I16 i16_Analog_Input_Data_3
Analog input channel 3 data register as I16 value.
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:82
U16 u16_Analog_Input_Status
Status register.
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:79
I16 i16_Analog_Input_Data_1
Analog input channel 1 data register as I16 value.
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:80
I16 i16_Analog_Input_Filtered_Data_1
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:84
I16 i16_Analog_Input_Data_2
Analog input channel 2 data register as I16 value.
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:81
U16 u16_Reserve_0x04
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:83
I16 i16_Analog_Input_Filtered_Data_2
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:85
I16 i16_Analog_Input_Filtered_Data_3
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:86
U16 u16_CMP_P_1_Status
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:161
U16 u16_CMP_P_2_Status
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:163
U16 u16_ADC_Hardware_Fault_2
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:155
U16 u16_CMP_P_3_Status
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:165
U16 u16_ADC_Hardware_Fault_3
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:156
U16 u16_CMP_N_1_Status
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:162
U16 u16_CMP_N_3_Status
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:166
U16 u16_CMP_N_2_Status
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:164
U16 u16_Status
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:151
U16 u16_ADC_Hardware_Fault_1
Definition: P005_03_V2_0_AI_V_BUG_FIX.h:154