|
|
|
|
|
|
|
|
|
|
|
// |
|
|
|
|
|
// Academic License - for use in teaching, academic research, and meeting |
|
|
|
|
|
// course requirements at degree granting institutions only. Not for |
|
|
|
|
|
// government, commercial, or other organizational use. |
|
|
|
|
|
// |
|
|
|
|
|
// File: FSMTreppe.cpp |
|
|
|
|
|
// |
|
|
|
|
|
// Code generated for Simulink model 'FSMTreppe'. |
|
|
|
|
|
// |
|
|
|
|
|
// Model version : 1.28 |
|
|
|
|
|
// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 |
|
|
|
|
|
// C/C++ source code generated on : Sat Jul 3 13:50:17 2021 |
|
|
|
|
|
// |
|
|
|
|
|
// Target selection: ert.tlc |
|
|
|
|
|
// Embedded hardware selection: ARM Compatible->ARM Cortex-M |
|
|
|
|
|
// Code generation objectives: Unspecified |
|
|
|
|
|
// Validation result: Not run |
|
|
|
|
|
// |
|
|
|
|
|
#include "FSMTreppe.h" |
|
|
|
|
|
#include "FSMTreppe_private.h" |
|
|
|
|
|
|
|
|
|
|
|
// Named constants for Chart: '<Root>/FSMTreppe' |
|
|
|
|
|
const uint8_T FSMTreppe_IN_abdimmen_hoch = 1U; |
|
|
|
|
|
const uint8_T FSMTreppe_IN_abdimmen_runter = 2U; |
|
|
|
|
|
const uint8_T FSMTreppe_IN_aufdimmen_hoch = 3U; |
|
|
|
|
|
const uint8_T FSMTreppe_IN_aufdimmen_runter = 4U; |
|
|
|
|
|
const uint8_T FSMTreppe_IN_inaktiv = 5U; |
|
|
|
|
|
const uint8_T FSMTreppe_IN_ruhezustand = 6U; |
|
|
|
|
|
const uint8_T FSMTreppe_IN_warten_hoch = 7U; |
|
|
|
|
|
const uint8_T FSMTreppe_IN_warten_runter = 8U; |
|
|
|
|
|
|
|
|
|
|
|
// Model step function |
|
|
|
|
|
void FSMTreppeModelClass::step() |
|
|
|
|
|
{ |
|
|
|
|
|
// Chart: '<Root>/FSMTreppe' incorporates: |
|
|
|
|
|
// Inport: '<Root>/anim_beendet' |
|
|
|
|
|
// Inport: '<Root>/ldr_schwelle' |
|
|
|
|
|
// Inport: '<Root>/sensor_oben' |
|
|
|
|
|
// Inport: '<Root>/sensor_unten' |
|
|
|
|
|
|
|
|
|
|
|
if (FSMTreppe_DW.temporalCounter_i1 < 511U) { |
|
|
|
|
|
FSMTreppe_DW.temporalCounter_i1 = static_cast<uint16_T> |
|
|
|
|
|
(FSMTreppe_DW.temporalCounter_i1 + 1U); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (FSMTreppe_DW.is_active_c3_FSMTreppe == 0U) { |
|
|
|
|
|
FSMTreppe_DW.is_active_c3_FSMTreppe = 1U; |
|
|
|
|
|
FSMTreppe_DW.is_c3_FSMTreppe = FSMTreppe_IN_inaktiv; |
|
|
|
|
|
} else { |
|
|
|
|
|
switch (FSMTreppe_DW.is_c3_FSMTreppe) { |
|
|
|
|
|
case FSMTreppe_IN_abdimmen_hoch: |
|
|
|
|
|
// Outport: '<Root>/dimmrichtung' |
|
|
|
|
|
FSMTreppe_Y.dimmrichtung = 0U; |
|
|
|
|
|
|
|
|
|
|
|
// Outport: '<Root>/status' |
|
|
|
|
|
FSMTreppe_Y.status = 3U; |
|
|
|
|
|
if (FSMTreppe_U.anim_beendet || (FSMTreppe_DW.temporalCounter_i1 >= 500U)) |
|
|
|
|
|
{ |
|
|
|
|
|
FSMTreppe_DW.is_c3_FSMTreppe = FSMTreppe_IN_ruhezustand; |
|
|
|
|
|
|
|
|
|
|
|
// Outport: '<Root>/status' |
|
|
|
|
|
FSMTreppe_Y.status = 0U; |
|
|
|
|
|
} |
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case FSMTreppe_IN_abdimmen_runter: |
|
|
|
|
|
// Outport: '<Root>/dimmrichtung' |
|
|
|
|
|
FSMTreppe_Y.dimmrichtung = 0U; |
|
|
|
|
|
|
|
|
|
|
|
// Outport: '<Root>/status' |
|
|
|
|
|
FSMTreppe_Y.status = 6U; |
|
|
|
|
|
if (FSMTreppe_U.anim_beendet || (FSMTreppe_DW.temporalCounter_i1 >= 500U)) |
|
|
|
|
|
{ |
|
|
|
|
|
FSMTreppe_DW.is_c3_FSMTreppe = FSMTreppe_IN_ruhezustand; |
|
|
|
|
|
|
|
|
|
|
|
// Outport: '<Root>/status' |
|
|
|
|
|
FSMTreppe_Y.status = 0U; |
|
|
|
|
|
} |
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case FSMTreppe_IN_aufdimmen_hoch: |
|
|
|
|
|
// Outport: '<Root>/laufrichtung' |
|
|
|
|
|
FSMTreppe_Y.laufrichtung = 1U; |
|
|
|
|
|
|
|
|
|
|
|
// Outport: '<Root>/dimmrichtung' |
|
|
|
|
|
FSMTreppe_Y.dimmrichtung = 1U; |
|
|
|
|
|
|
|
|
|
|
|
// Outport: '<Root>/status' |
|
|
|
|
|
FSMTreppe_Y.status = 1U; |
|
|
|
|
|
if (FSMTreppe_U.anim_beendet || (FSMTreppe_DW.temporalCounter_i1 >= 500U)) |
|
|
|
|
|
{ |
|
|
|
|
|
FSMTreppe_DW.is_c3_FSMTreppe = FSMTreppe_IN_warten_hoch; |
|
|
|
|
|
FSMTreppe_DW.temporalCounter_i1 = 0U; |
|
|
|
|
|
|
|
|
|
|
|
// Outport: '<Root>/status' |
|
|
|
|
|
FSMTreppe_Y.status = 2U; |
|
|
|
|
|
} |
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case FSMTreppe_IN_aufdimmen_runter: |
|
|
|
|
|
// Outport: '<Root>/laufrichtung' |
|
|
|
|
|
FSMTreppe_Y.laufrichtung = 0U; |
|
|
|
|
|
|
|
|
|
|
|
// Outport: '<Root>/dimmrichtung' |
|
|
|
|
|
FSMTreppe_Y.dimmrichtung = 1U; |
|
|
|
|
|
|
|
|
|
|
|
// Outport: '<Root>/status' |
|
|
|
|
|
FSMTreppe_Y.status = 4U; |
|
|
|
|
|
if (FSMTreppe_U.anim_beendet || (FSMTreppe_DW.temporalCounter_i1 >= 500U)) |
|
|
|
|
|
{ |
|
|
|
|
|
FSMTreppe_DW.is_c3_FSMTreppe = FSMTreppe_IN_warten_runter; |
|
|
|
|
|
FSMTreppe_DW.temporalCounter_i1 = 0U; |
|
|
|
|
|
|
|
|
|
|
|
// Outport: '<Root>/status' |
|
|
|
|
|
FSMTreppe_Y.status = 5U; |
|
|
|
|
|
} |
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case FSMTreppe_IN_inaktiv: |
|
|
|
|
|
if (FSMTreppe_U.ldr_schwelle == 1.0) { |
|
|
|
|
|
FSMTreppe_DW.is_c3_FSMTreppe = FSMTreppe_IN_ruhezustand; |
|
|
|
|
|
|
|
|
|
|
|
// Outport: '<Root>/status' |
|
|
|
|
|
FSMTreppe_Y.status = 0U; |
|
|
|
|
|
} |
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case FSMTreppe_IN_ruhezustand: |
|
|
|
|
|
// Outport: '<Root>/status' |
|
|
|
|
|
FSMTreppe_Y.status = 0U; |
|
|
|
|
|
if (FSMTreppe_U.sensor_unten) { |
|
|
|
|
|
FSMTreppe_DW.is_c3_FSMTreppe = FSMTreppe_IN_aufdimmen_hoch; |
|
|
|
|
|
FSMTreppe_DW.temporalCounter_i1 = 0U; |
|
|
|
|
|
|
|
|
|
|
|
// Outport: '<Root>/laufrichtung' |
|
|
|
|
|
FSMTreppe_Y.laufrichtung = 1U; |
|
|
|
|
|
|
|
|
|
|
|
// Outport: '<Root>/dimmrichtung' |
|
|
|
|
|
FSMTreppe_Y.dimmrichtung = 1U; |
|
|
|
|
|
|
|
|
|
|
|
// Outport: '<Root>/status' |
|
|
|
|
|
FSMTreppe_Y.status = 1U; |
|
|
|
|
|
} else if (FSMTreppe_U.sensor_oben) { |
|
|
|
|
|
FSMTreppe_DW.is_c3_FSMTreppe = FSMTreppe_IN_aufdimmen_runter; |
|
|
|
|
|
FSMTreppe_DW.temporalCounter_i1 = 0U; |
|
|
|
|
|
|
|
|
|
|
|
// Outport: '<Root>/laufrichtung' |
|
|
|
|
|
FSMTreppe_Y.laufrichtung = 0U; |
|
|
|
|
|
|
|
|
|
|
|
// Outport: '<Root>/dimmrichtung' |
|
|
|
|
|
FSMTreppe_Y.dimmrichtung = 1U; |
|
|
|
|
|
|
|
|
|
|
|
// Outport: '<Root>/status' |
|
|
|
|
|
FSMTreppe_Y.status = 4U; |
|
|
|
|
|
} else if (FSMTreppe_U.ldr_schwelle == 0.0) { |
|
|
|
|
|
FSMTreppe_DW.is_c3_FSMTreppe = FSMTreppe_IN_inaktiv; |
|
|
|
|
|
} |
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case FSMTreppe_IN_warten_hoch: |
|
|
|
|
|
// Outport: '<Root>/status' |
|
|
|
|
|
FSMTreppe_Y.status = 2U; |
|
|
|
|
|
if (FSMTreppe_U.sensor_oben || (FSMTreppe_DW.temporalCounter_i1 >= 500U)) |
|
|
|
|
|
{ |
|
|
|
|
|
FSMTreppe_DW.is_c3_FSMTreppe = FSMTreppe_IN_abdimmen_hoch; |
|
|
|
|
|
FSMTreppe_DW.temporalCounter_i1 = 0U; |
|
|
|
|
|
|
|
|
|
|
|
// Outport: '<Root>/dimmrichtung' |
|
|
|
|
|
FSMTreppe_Y.dimmrichtung = 0U; |
|
|
|
|
|
|
|
|
|
|
|
// Outport: '<Root>/status' |
|
|
|
|
|
FSMTreppe_Y.status = 3U; |
|
|
|
|
|
} |
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
default: |
|
|
|
|
|
// Outport: '<Root>/status' |
|
|
|
|
|
// case IN_warten_runter: |
|
|
|
|
|
FSMTreppe_Y.status = 5U; |
|
|
|
|
|
if (FSMTreppe_U.sensor_unten || (FSMTreppe_DW.temporalCounter_i1 >= 500U)) |
|
|
|
|
|
{ |
|
|
|
|
|
FSMTreppe_DW.is_c3_FSMTreppe = FSMTreppe_IN_abdimmen_runter; |
|
|
|
|
|
FSMTreppe_DW.temporalCounter_i1 = 0U; |
|
|
|
|
|
|
|
|
|
|
|
// Outport: '<Root>/dimmrichtung' |
|
|
|
|
|
FSMTreppe_Y.dimmrichtung = 0U; |
|
|
|
|
|
|
|
|
|
|
|
// Outport: '<Root>/status' |
|
|
|
|
|
FSMTreppe_Y.status = 6U; |
|
|
|
|
|
} |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// End of Chart: '<Root>/FSMTreppe' |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Model initialize function |
|
|
|
|
|
void FSMTreppeModelClass::initialize() |
|
|
|
|
|
{ |
|
|
|
|
|
// (no initialization code required) |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Model terminate function |
|
|
|
|
|
void FSMTreppeModelClass::terminate() |
|
|
|
|
|
{ |
|
|
|
|
|
// (no terminate code required) |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Constructor |
|
|
|
|
|
FSMTreppeModelClass::FSMTreppeModelClass() : |
|
|
|
|
|
FSMTreppe_DW(), |
|
|
|
|
|
FSMTreppe_U(), |
|
|
|
|
|
FSMTreppe_Y(), |
|
|
|
|
|
FSMTreppe_M() |
|
|
|
|
|
{ |
|
|
|
|
|
// Currently there is no constructor body generated. |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Destructor |
|
|
|
|
|
FSMTreppeModelClass::~FSMTreppeModelClass() |
|
|
|
|
|
{ |
|
|
|
|
|
// Currently there is no destructor body generated. |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Real-Time Model get method |
|
|
|
|
|
FSMTreppeModelClass::RT_MODEL_FSMTreppe_T * FSMTreppeModelClass::getRTM() |
|
|
|
|
|
{ |
|
|
|
|
|
return (&FSMTreppe_M); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// |
|
|
|
|
|
// File trailer for generated code. |
|
|
|
|
|
// |
|
|
|
|
|
// [EOF] |
|
|
|
|
|
// |