/* * SystemDefinitions.h * * Author: Aleksey Gerasimenko * gerasimenko.aleksey.n@gmail.com */ #include #include #ifndef SYSCTRL_SYSTEMDEFINITIONS_H_ #define SYSCTRL_SYSTEMDEFINITIONS_H_ namespace SYSCTRL { struct Register16BitField { uint16_t b00: 1; uint16_t b01: 1; uint16_t b02: 1; uint16_t b03: 1; uint16_t b04: 1; uint16_t b05: 1; uint16_t b06: 1; uint16_t b07: 1; uint16_t b08: 1; uint16_t b09: 1; uint16_t b10: 1; uint16_t b11: 1; uint16_t b12: 1; uint16_t b13: 1; uint16_t b14: 1; uint16_t b15: 1; };//Register16BitField struct Register16ByteField { uint16_t bt0 :8; uint16_t bt1 :8; };//Register16ByteField struct Register16WordField { uint16_t wL :16; };//Register16WordField union Register16 { uint16_t all; Register16BitField bit; Register16ByteField byte; };//Register16 struct Register32BitField { uint16_t b00: 1; uint16_t b01: 1; uint16_t b02: 1; uint16_t b03: 1; uint16_t b04: 1; uint16_t b05: 1; uint16_t b06: 1; uint16_t b07: 1; uint16_t b08: 1; uint16_t b09: 1; uint16_t b10: 1; uint16_t b11: 1; uint16_t b12: 1; uint16_t b13: 1; uint16_t b14: 1; uint16_t b15: 1; uint16_t b16: 1; uint16_t b17: 1; uint16_t b18: 1; uint16_t b19: 1; uint16_t b20: 1; uint16_t b21: 1; uint16_t b22: 1; uint16_t b23: 1; uint16_t b24: 1; uint16_t b25: 1; uint16_t b26: 1; uint16_t b27: 1; uint16_t b28: 1; uint16_t b29: 1; uint16_t b30: 1; uint16_t b31: 1; };//Register32BitField struct Register32ByteField { uint16_t bt0 :8; uint16_t bt1 :8; uint16_t bt2 :8; uint16_t bt3 :8; };//Register32ByteField struct Register32WordField { uint16_t wL :16; uint16_t wH :16; };//Register32WordField union Register32 { uint32_t all; Register32BitField bit; Register32ByteField byte; Register32WordField word; };//Register32 struct BoolRegisterBitField { uint16_t b0 :1; };//BoolRegisterBitField union BoolRegister { uint16_t all; BoolRegisterBitField boolbit; BoolRegister(): all(0) {} };//BoolRegister // Decompose Voltage #define DECOMPOSEVOLTAGETIME_50HZ (float)(3.183e-3) #define DECOMPOSEVOLTAGETIME_25HZ (float)(6.366e-3) #define DECOMPOSEVOLTAGETIME_20HZ (float)(7.958e-3) #define DECOMPOSEVOLTAGETIME_10HZ (float)(15.915e-3) #define DECOMPOSEVOLTAGETIME_5HZ (float)(31.831e-3) // #ifndef DECOMPOSEVOLTAGETIME //#define DECOMPOSEVOLTAGETIME DECOMPOSEVOLTAGETIME_50HZ //#define DECOMPOSEVOLTAGETIME DECOMPOSEVOLTAGETIME_25HZ //#define DECOMPOSEVOLTAGETIME DECOMPOSEVOLTAGETIME_20HZ #define DECOMPOSEVOLTAGETIME DECOMPOSEVOLTAGETIME_10HZ //#define DECOMPOSEVOLTAGETIME DECOMPOSEVOLTAGETIME_5HZ #endif #ifndef REGULATORVOLTAGETIME //#define REGULATORVOLTAGETIME DECOMPOSEVOLTAGETIME_50HZ //#define REGULATORVOLTAGETIME DECOMPOSEVOLTAGETIME_25HZ //#define REGULATORVOLTAGETIME DECOMPOSEVOLTAGETIME_20HZ //#define REGULATORVOLTAGETIME DECOMPOSEVOLTAGETIME_10HZ #define REGULATORVOLTAGETIME DECOMPOSEVOLTAGETIME_5HZ #endif #ifndef REGULATOR_VOLTAGE_RMS_TIME //#define REGULATOR_VOLTAGE_RMS_TIME (float)(1.0/2.0/FP_PI/50.0) //#define REGULATOR_VOLTAGE_RMS_TIME (float)(1.0/2.0/FP_PI/40.0) //#define REGULATOR_VOLTAGE_RMS_TIME (float)(1.0/2.0/FP_PI/30.0) //#define REGULATOR_VOLTAGE_RMS_TIME (float)(1.0/2.0/FP_PI/25.0) //#define REGULATOR_VOLTAGE_RMS_TIME (float)(1.0/2.0/FP_PI/20.0) //#define REGULATOR_VOLTAGE_RMS_TIME (float)(1.0/2.0/FP_PI/10.0) //#define REGULATOR_VOLTAGE_RMS_TIME (float)(1.0/2.0/FP_PI/5.0) #define REGULATOR_VOLTAGE_RMS_TIME (float)(1.0/2.0/FP_PI/1.0) #endif #ifndef REFERENCE_INTENSITY_VOLTAGE_RMS_TIME //#define REFERENCE_INTENSITY_VOLTAGE_RMS_TIME (float)(1.0/2.0/FP_PI/30.0) //#define REFERENCE_INTENSITY_VOLTAGE_RMS_TIME (float)(1.0/2.0/FP_PI/20.0) //#define REFERENCE_INTENSITY_VOLTAGE_RMS_TIME (float)(1.0/2.0/FP_PI/10.0) #define REFERENCE_INTENSITY_VOLTAGE_RMS_TIME (float)(1.0/2.0/FP_PI/5.0) #endif #ifndef REGULATOR_VOLTAGE_ABC_SATURATION #define REGULATOR_VOLTAGE_ABC_SATURATION (float)(1800.0) //#define REGULATOR_VOLTAGE_ABC_SATURATION (float)(4500.0) #endif #ifndef REGULATOR_VOLTAGE_RMS_SATURATION //#define REGULATOR_VOLTAGE_RMS_SATURATION (float)(1800.0) #define REGULATOR_VOLTAGE_RMS_SATURATION (float)(4500.0) #endif #define CURRENT_LIMIT_RMS (float)(100.0) #define CURRENT_PFC_RMS (float)(0.0) #define GRID_VOLTAGE_REFERENCE (float)(6100.0) //6000 #define GRID_VOLTAGE_HIGH_LIMIT (float)(6600.0) #define CELL_DC_VOLTAGE_REFERENCE (float)(5.0*950.0) #define REGULATOR_CURRENT_LIMIT_LOW_SATURATION (float)(GRID_VOLTAGE_REFERENCE * 0.57735) #define REGULATOR_CURRENT_LIMIT_HIGH_SATURATION (float)(GRID_VOLTAGE_HIGH_LIMIT * 0.57735) #define REGULATOR_CURRENT_PFC_HIGH_SATURATION (float)(GRID_VOLTAGE_REFERENCE * 0.57735) #define REGULATOR_CURRENT_PFC_LOW_SATURATION (float)((-1.0)*GRID_VOLTAGE_REFERENCE * 0.57735) #define CONTROL_BIT_ENABLE_CURRENT_LIMIT (uint16_t)(0x0001) #define CONTROL_BIT_ENABLE_PFC (uint16_t)(0x0002) #define CONTROL_BIT_ENABLE_HARMONICA (uint16_t)(0x0004) #define CONTROL_BIT_ENABLE_AUTO_OFFSET (uint16_t)(0x0008) #define ENABLE_CONTROL_BIT (uint16_t)(\ CONTROL_BIT_ENABLE_CURRENT_LIMIT |\ CONTROL_BIT_ENABLE_PFC |\ CONTROL_BIT_ENABLE_AUTO_OFFSET \ ) // CONTROL_BIT_ENABLE_CURRENT_LIMIT |\// // CONTROL_BIT_ENABLE_PFC |\// // // Voltage PLL-ABC Parameters // #define PLLABC_FREQUENCY_NOMINAL (float)(2.0*FP_PI*50.0) #define PLLABC_FREQUENCY_CUT (float)(2.0*FP_PI*10.0) #define PLLABC_FREQUENCY_LIMIT_HI PLLABC_FREQUENCY_CUT #define PLLABC_FREQUENCY_LIMIT_LOW -PLLABC_FREQUENCY_CUT /* struct EquipmentFaultsBitFieldStructure { uint16_t remote_e_stop : 1; //0 uint16_t local_e_stop : 1; //1 uint16_t fan : 1; //2 uint16_t cells : 1; //3 // uint16_t temperature_transformer_multi_winding : 1; //4 uint16_t temperature_transformer_phase_a : 1; //5 uint16_t temperature_transformer_phase_b : 1; //6 uint16_t temperature_transformer_phase_c : 1; //7 // uint16_t cabinet_door_open : 1; //8 uint16_t reserved_09 : 1; //9 uint16_t reserved_10 : 1; //10 uint16_t reserved_11 : 1; //11 // uint16_t reserved_12 : 1; //12 uint16_t reserved_13 : 1; //13 uint16_t reserved_14 : 1; //14 uint16_t reserved_15 : 1; //15 };//EquipmentFaultsBitFieldStructure */ #define REMOTE_E_STOP 0//0x0001 #define LOCAL_E_STOP 0//0x0002 #define FAN 0//0x0004 #define CELLS 0//0x0008 #define TEMPERATURE_TRANSFORMER_MULTI_WINDINGS 0//0x0010 #define TEMPERATURE_TRANSFORMER_PHASE_A 0//0x0020 #define TEMPERATURE_TRANSFORMER_PHASE_B 0//0x0040 #define TEMPERATURE_TRANSFORMER_PHASE_C 0//0x0080 #define CABINET_DOOR_OPEN 0x0100 #define ENABLE_EQUIPMENT_RESTART 0x0100 /* #define ENABLE_EQUIPMENT_RESTART (uint16_t)(\ REMOTE_E_STOP |\ LOCAL_E_STOP |\ FAN |\ CELLS |\ TEMPERATURE_TRANSFORMER_MULTI_WINDINGS |\ TEMPERATURE_TRANSFORMER_PHASE_A |\ TEMPERATURE_TRANSFORMER_PHASE_B |\ TEMPERATURE_TRANSFORMER_PHASE_C |\ CABINET_DOOR_OPEN \ ) */ /* struct PhaseFaultBit { uint16_t exceed_voltage_level_3 :1; // 0 uint16_t exceed_voltage_level_4 :1; // 1 uint16_t decrease_voltage_level_3 :1; // 2 uint16_t phase_lost :1; // 3 // uint16_t short_circuit :1; // 4 uint16_t high_current :1; // 5 uint16_t overload_current_level_1 :1; // 6 uint16_t overload_current_level_2 :1; // 7 // uint16_t overload_current_level_3 :1; // 8 uint16_t overload_invertor_current_level_1 :1; // 9 uint16_t overload_invertor_current_level_2 :1; // 10 uint16_t overload_invertor_current_level_3 :1; // 11 // uint16_t reserved_12 :1; // 12 uint16_t reserved_13 :1; // 13 uint16_t reserved_14 :1; // 14 uint16_t reserved_15 :1; // 15 };//PhaseFaultBit */ #define EXCEED_VOLTAGE_LEVEL_3 (uint16_t)0x0001 #define EXCEED_VOLTAGE_LEVEL_4 (uint16_t)0x0002 #define DECREASE_VOLTAGE_LEVEL_3 (uint16_t)0x0004 #define LOST_PHASE (uint16_t)0x0008 #define SHORT_CIRCUIT (uint16_t)0x0010 #define HIGH_CURRENT (uint16_t)0x0020 #define OVERLOAD_CURRENT_LEVEL_1 (uint16_t)0x0040 #define OVERLOAD_CURRENT_LEVEL_2 (uint16_t)0x0080 #define OVERLOAD_CURRENT_LEVEL_3 (uint16_t)0x0100 #define OVERLOAD_INVERTOR_CURRENT_LEVEL_1 (uint16_t)0x0200 #define OVERLOAD_INVERTOR_CURRENT_LEVEL_2 (uint16_t)0x0400 #define OVERLOAD_INVERTOR_CURRENT_LEVEL_3 (uint16_t)0x0800 #define ENABLE_PHASE_RESTART 0 /* #define ENABLE_PHASE_RESTART (uint16_t)(\ EXCEED_VOLTAGE_LEVEL_3 |\ EXCEED_VOLTAGE_LEVEL_4 |\ DECREASE_VOLTAGE_LEVEL_3 |\ LOST_PHASE |\ SHORT_CIRCUIT |\ HIGH_CURRENT |\ OVERLOAD_CURRENT_LEVEL_1 |\ OVERLOAD_CURRENT_LEVEL_2 |\ OVERLOAD_CURRENT_LEVEL_3 |\ OVERLOAD_INVERTOR_CURRENT_LEVEL_1 |\ OVERLOAD_INVERTOR_CURRENT_LEVEL_2 |\ OVERLOAD_INVERTOR_CURRENT_LEVEL_3 \ ) */ #define NOMINAL_GRID_VOLTAGE (float)6000.0 #define PROTECTION_EXCEED_VOLTAGE_LEVEL_1_PERCENT (float)35.0 // 10.0 was changed to 35.0 #define PROTECTION_EXCEED_VOLTAGE_LEVEL_2_PERCENT (float)35.0 // 15.0 was changed to 35.0 #define PROTECTION_EXCEED_VOLTAGE_LEVEL_3_PERCENT (float)35.0 // 25.0 was changed to 35.0 #define PROTECTION_EXCEED_VOLTAGE_LEVEL_4_PERCENT (float)20.0 // 50.0 was changed to 20.0 #define PROTECTION_DECREASE_VOLTAGE_LEVEL_1_PERCENT (float)15.0 #define PROTECTION_DECREASE_VOLTAGE_LEVEL_2_PERCENT (float)25.0 #define PROTECTION_DECREASE_VOLTAGE_LEVEL_3_PERCENT (float)40.0 // 35.0 was changed to 40.0 } /* namespace SYSCTRL */ #endif /* SYSCTRL_SYSTEMDEFINITIONS_H_ */