@@ -1 +1 @@ | |||
Subproject commit a70be39257e317d35e9118b385006a1e030e6452 | |||
Subproject commit 23e06c06a6026801a856141f64a6de54dd493b47 |
@@ -16,18 +16,19 @@ | |||
// Code generation objectives: Unspecified | |||
// Validation result: Not run | |||
// | |||
#include "FSMTreppe.h" | |||
#include "FSMTreppe_private.h" | |||
#include "FSMTreppe2.h" | |||
// #include "FSMTreppe_private.h" | |||
#include <stdint.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; | |||
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() | |||
@@ -39,7 +40,7 @@ void FSMTreppeModelClass::step() | |||
// Inport: '<Root>/sensor_unten' | |||
if (FSMTreppe_DW.temporalCounter_i1 < 511U) { | |||
FSMTreppe_DW.temporalCounter_i1 = static_cast<uint16_T> | |||
FSMTreppe_DW.temporalCounter_i1 = static_cast<uint16_t> | |||
(FSMTreppe_DW.temporalCounter_i1 + 1U); | |||
} | |||
@@ -18,8 +18,8 @@ | |||
// | |||
#ifndef RTW_HEADER_FSMTreppe_h_ | |||
#define RTW_HEADER_FSMTreppe_h_ | |||
#include "rtwtypes.h" | |||
#include "FSMTreppe_types.h" | |||
#include <stdint.h> | |||
// Macros for accessing real-time model data structure | |||
#ifndef rtmGetErrorStatus | |||
@@ -36,29 +36,29 @@ class FSMTreppeModelClass { | |||
public: | |||
// Block states (default storage) for system '<Root>' | |||
struct DW_FSMTreppe_T { | |||
uint16_T temporalCounter_i1; // '<Root>/FSMTreppe' | |||
uint8_T is_active_c3_FSMTreppe; // '<Root>/FSMTreppe' | |||
uint8_T is_c3_FSMTreppe; // '<Root>/FSMTreppe' | |||
uint16_t temporalCounter_i1; // '<Root>/FSMTreppe' | |||
uint8_t is_active_c3_FSMTreppe; // '<Root>/FSMTreppe' | |||
uint8_t is_c3_FSMTreppe; // '<Root>/FSMTreppe' | |||
}; | |||
// External inputs (root inport signals with default storage) | |||
struct ExtU_FSMTreppe_T { | |||
boolean_T sensor_unten; // '<Root>/sensor_unten' | |||
boolean_T sensor_oben; // '<Root>/sensor_oben' | |||
boolean_T anim_beendet; // '<Root>/anim_beendet' | |||
real_T ldr_schwelle; // '<Root>/ldr_schwelle' | |||
bool sensor_unten; // '<Root>/sensor_unten' | |||
bool sensor_oben; // '<Root>/sensor_oben' | |||
bool anim_beendet; // '<Root>/anim_beendet' | |||
double ldr_schwelle; // '<Root>/ldr_schwelle' | |||
}; | |||
// External outputs (root outports fed by signals with default storage) | |||
struct ExtY_FSMTreppe_T { | |||
uint8_T laufrichtung; // '<Root>/laufrichtung' | |||
uint8_T status; // '<Root>/status' | |||
uint8_T dimmrichtung; // '<Root>/dimmrichtung' | |||
uint8_t laufrichtung; // '<Root>/laufrichtung' | |||
uint8_t status; // '<Root>/status' | |||
uint8_t dimmrichtung; // '<Root>/dimmrichtung' | |||
}; | |||
// Real-time Model Data Structure | |||
struct RT_MODEL_FSMTreppe_T { | |||
const char_T * volatile errorStatus; | |||
const char * volatile errorStatus; | |||
}; | |||
// model initialize function |
@@ -158,20 +158,18 @@ void Treppe::print_state_on_change() { | |||
static FSMTreppeModelClass::ExtU_FSMTreppe_T last_in; | |||
static FSMTreppeModelClass::ExtY_FSMTreppe_T last_out; | |||
if( | |||
fsm_inputs.anim_finished != last_in.anim_finished || | |||
fsm_inputs.anim_beendet != last_in.anim_beendet || | |||
fsm_inputs.sensor_oben != last_in.sensor_oben || | |||
fsm_inputs.sensor_unten != last_in.sensor_unten || | |||
fsm_outputs.anim_active != last_out.anim_active | |||
fsm_inputs.sensor_unten != last_in.sensor_unten | |||
) { | |||
last_in.anim_finished = fsm_inputs.anim_finished; | |||
last_in.anim_beendet = fsm_inputs.anim_beendet; | |||
last_in.sensor_oben = fsm_inputs.sensor_oben; | |||
last_in.sensor_unten = fsm_inputs.sensor_unten; | |||
last_out.anim_active = fsm_outputs.anim_active; | |||
Serial.printf("FSM inputs: s_u: %d, s_o: %d, an_fin: %d =>", | |||
fsm_inputs.sensor_oben, fsm_inputs.sensor_unten, fsm_inputs.anim_finished); | |||
fsm_inputs.sensor_oben, fsm_inputs.sensor_unten, fsm_inputs.anim_beendet); | |||
Serial.print(" step => "); | |||
Serial.printf("FSM outputs: an_act: %d\n", fsm_outputs.anim_active); | |||
Serial.printf("FSM outputs: LR: %d DR: %d ST: %d\n", fsm_outputs.laufrichtung, fsm_outputs.dimmrichtung, fsm_outputs.status); | |||
} | |||
} | |||
@@ -185,13 +183,16 @@ void Treppe::task(){ | |||
fsm_inputs.sensor_oben = read_sensor(SENSOR_OBEN); | |||
fsm_inputs.sensor_unten = read_sensor(SENSOR_UNTEN); | |||
fsm_inputs.anim_finished = static_cast<bool>(finish); | |||
fsm_inputs.anim_beendet = static_cast<bool>(finish); | |||
FSMTreppe_Obj.setExternalInputs(&fsm_inputs); | |||
FSMTreppe_Obj.step(); | |||
fsm_outputs = FSMTreppe_Obj.getExternalOutputs(); | |||
print_state_on_change(); | |||
direction = fsm_outputs.laufrichtung; | |||
state = fsm_outputs.dimmrichtung; | |||
// setTick(ticks_treppe); | |||
// setAnAus(1); | |||
// setDirection(0); |
@@ -1,6 +1,6 @@ | |||
#pragma once | |||
#include "FSMTreppe/FSMTreppe.h" | |||
#include "FSMTreppe2/FSMTreppe2.h" | |||
#include "PCA9685.h" | |||
#define SENSOR_OBEN 2 | |||
@@ -21,7 +21,7 @@ private: | |||
uint8_t switch_direction = 0; | |||
uint8_t state = 0; | |||
uint8_t switch_state = 0; | |||
uint8_t finish = 1; | |||
bool finish = 1; | |||
// alternative | |||
uint32_t tick = 0; |