diff --git a/app/datamodel.h b/app/datamodel.h index ee12bc3..dfc75ef 100755 --- a/app/datamodel.h +++ b/app/datamodel.h @@ -18,12 +18,127 @@ Notes: [Any relevant details, such as dependencies, usage examples, or kno #define HeadlineOverheat Kennfeld_Ueberhitzung #define HeadlineOverheatDefault Kennfeld_Ueberhitzung_Default +// Inputs for the component 'control-algorithm', not (only) to be seen als physical inputs e.g. from a sensor +typedef struct Inputs +{ + struct BinInputs { + // Eingangswerte aus bool_inXX / real_inXX / reset_flag + bool reset_flag{}; + bool Sammelalarm_quittiert{}; + bool Tuer_offen{}; + bool Sollwert_Feuchte_aktiv{}; + bool Steuerkontakt_Standby{}; + bool Steuerkontakt_Befeuchtung_aus{}; + bool Steuerkontakt_Entfeuchtung_aus{}; + bool Entleerbehaelter_Oben{}; + bool Wasserkanister_leer{}; + bool Entleerbehaelter_Unten{}; + bool Sammelalarm{}; + } bin; -class DataModel{ + struct AnalogInputs { + double Istwert_Temperatur{}; + double Sollwert_Temperatur{}; + double Temperaturband{}; + double Istwert_Ueberwachungsregler{}; + double Klasse_Ueberwachungsregler{}; + double Grenzwert_Untertemperatur{}; + double Istwert_Feuchte{}; + double Sollwert_Feuchte{}; + double Feuchteband{}; + double Sollwert_Luefter{}; + double Istwert_Temperatur_Tuer{}; + double Istwert_Temperatur_Verdampferausgang{}; + double Temperatur_Feuchtemodul{}; + double Bandalarm_nach{}; + double Betauungsschutz{}; + double real_in11{}; // du nutzt real_in11 später direkt in alarm_15 ?? uj - todo : Kann das weg? + } analog; + +}Input_t; + + +typedef struct Outputs +{ + struct AnalogOutputs { + // real_outXX (nur die, die du im ST setzt) + double real_out01{}; + double real_out02{}; + double real_out04{}; + double real_out05{}; + double real_out06{}; + double real_out07{}; + double real_out08{}; + double real_out09{}; + double real_out10{}; + double real_out11{}; + double real_out12{}; + double real_out13{}; + double real_out14{}; + double real_out16{}; + double Stellgrad_Feuchtemodul{}; // ...out17 + double real_out18{}; + double real_out19{}; + double real_out20{}; + double real_out21{}; + double real_out25{}; + double real_out26{}; + double Stellgrad_Heizung{}; + double Stellgrad_Kuehlung{}; + double Stellgrad_Befeuchtung{}; + double Stellgrad_Entfeuchtung{}; + double Counter_Tuer{}; + } analog; + + struct BinOutputs { + // bool_outXX + bool bool_out01{}; + bool bool_out02{}; + bool bool_out03{}; + bool bool_out07{}; + bool bool_out09{}; + bool bool_out11{}; + bool bool_out12{}; + bool bool_out13{}; + bool bool_out14{}; + bool bool_out16{}; + bool bool_out17{}; + bool bool_out18{}; + bool bool_out19{}; + bool bool_out20{}; + bool bool_out21{}; + bool bool_out23{}; + } bin; + +}Output_t; + + +static constexpr double sampling_time = 0.25; + +typedef struct Counter +{ + +}Counter_t; + +class IInputs { +public: + virtual ~IInputs() = default; + // Pure virtual function returning a pointer to a vector + virtual QList* getInputs() = 0; +}; + +class DataModel: public IInputs +{ public: DataModel(); + QList* getInputs() override; private: + Input_t input; + QList in{ input }; + +#ifndef BUILD_TARGET_SOM + QList> Kennfeld_Ueberhitzung; QList> Kennfeld_Entfeuchtung; QList> Kennfeld_Regler_Heizung_Xp; @@ -70,7 +185,14 @@ private: {1.00, 0.80, 0.60, 0.50, 0.40, 0.35, 0.30, 0.25, 0.20}, {1.00, 0.80, 0.60, 0.50, 0.40, 0.35, 0.30, 0.25, 0.20}}; - void* CurrentData(void); + QList> Kennfeld_Sollwert_Feuchte_Limit_List{ + {0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100}, + {80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; + + + +#endif };