Page MenuHomePhorge

main_motor_old.cpp
No OneTemporary

Size
57 KB
Referenced Files
None
Subscribers
None

main_motor_old.cpp

#include "Agent.h"
#include "Channel.h"
#include "create_unit.h"
#include "CSVreaderModule.h"
#include "inAgentsRegistrations.h"
#include "mount_nodes.h"
#include "register_in_testbench.h"
#include "Sensor.h"
#include "setupNode.h"
#include <stdio.h>
#include "Testbench.h"
#include "file_util.h"
#include "LinearFunction.h"
#include "LinearFunctionBlock.h"
//#include "Lookuptable.h"
//#include "Clock.h"
//#include "setup_lookuptable.h"
//#include "setup_agent.h"
//#include "Cross_Confidence_Validator.h"
//#include "Continuous_Average.h"
//#include "rlutil.h"
//#define outterBoundSimDif 0.08 //0.12 //0.08 //0.04 //0.04
//#define innerBoundSimDif 0.03 //0.04 //0.01 //0.005 //0.001
#define outterBoundSimDif 0.14 //0.14
#define innerBoundSimDif 0.01 //0.01
#define outterBoundDRIFT outterBoundSimDif*3 //0.12
#define innerBoundDRIFT outterBoundSimDif //0.04
#define boundBroken 2 //2 //8
//NOTE: auch in StateHandler �ndern!!!!
#define length 10 //10
#define SAMPLING 50
//#define MODE_BROKEN
//#define MODE_HEALTHY
//#define MODE_DRIFT
#define MODE_NORMAL_UNCHANGED
//#define MODE_NORMAL_LOADCHANGE
//#define MODE_NORMAL_SPEEDCHANGE
#define CSV_FILTERED
int main(int argc, char* argv[])
{
//unsigned int workingCycle = 300; //sonst schafft er die unstetigkeit beim change load nicht (geht aber nur beim ungefilterten
//auch bei speed change (geht bei filtered & unfiltered)
unsigned int workingCycle = SAMPLING;
//unsigned int workingCycle = 60;
//unsigned int workingCycle = 1;
#if defined(MODE_BROKEN) || defined(MODE_HEALTHY)
// --- Bearing Defect ---
//create agents
printf("Create Agents\n");
Agent a_statorVoltage = create_agent("StatorVoltage");
setWorkingCycleOfAgent(&a_statorVoltage, workingCycle);
Agent a_statorCurrent_1 = create_agent("StatorCurrent1");
setWorkingCycleOfAgent(&a_statorCurrent_1, workingCycle);
Agent a_statorCurrent_2 = create_agent("StatorCurrent2");
setWorkingCycleOfAgent(&a_statorCurrent_2, workingCycle);
Agent a_statorCurrent_3 = create_agent("StatorCurrent3");
setWorkingCycleOfAgent(&a_statorCurrent_3, workingCycle);
Agent a_electromagneticTorque = create_agent("ElectromagneticTorque");
setWorkingCycleOfAgent(&a_electromagneticTorque, workingCycle);
Agent a_vibration_1 = create_agent("Vibration1");
setWorkingCycleOfAgent(&a_vibration_1, workingCycle);
Agent a_vibration_2 = create_agent("Vibration2");
setWorkingCycleOfAgent(&a_vibration_2, workingCycle);
Agent a_vibration_3 = create_agent("Vibration3");
setWorkingCycleOfAgent(&a_vibration_3, workingCycle);
Agent a_viabilityMonitor = create_agent("ViabilityMonitor");
setWorkingCycleOfAgent(&a_viabilityMonitor, workingCycle);
//create sensors
printf("\nCreate Sensors\n");
Sensor s_statorVoltage = create_sensor("Stator Voltage");
setWorkingCycleOfSensor(&s_statorVoltage, workingCycle);
Sensor s_statorCurrent_1 = create_sensor("Stator Current1");
setWorkingCycleOfSensor(&s_statorCurrent_1, workingCycle);
Sensor s_statorCurrent_2 = create_sensor("Stator Current2");
setWorkingCycleOfSensor(&s_statorCurrent_2, workingCycle);
Sensor s_statorCurrent_3 = create_sensor("Stator Current3");
setWorkingCycleOfSensor(&s_statorCurrent_3, workingCycle);
Sensor s_electromagneticTorque = create_sensor("Electromagnetic Torque");
setWorkingCycleOfSensor(&s_electromagneticTorque, workingCycle);
Sensor s_vibration_1 = create_sensor("Vibration1");
setWorkingCycleOfSensor(&s_vibration_1, workingCycle);
Sensor s_vibration_2 = create_sensor("Vibration2");
setWorkingCycleOfSensor(&s_vibration_2, workingCycle);
Sensor s_vibration_3 = create_sensor("Vibration3");
setWorkingCycleOfSensor(&s_vibration_3, workingCycle);
//create channels for sensors
printf("\nCreate Channels for Sensors\n");
Channel c_sa_statorVoltage = create_channel("Stator Voltage (SA)", 0);
Channel c_sa_statorCurrent_1 = create_channel("Stator Current 1 (SA)", 0);
Channel c_sa_statorCurrent_2 = create_channel("Stator Current 2 (SA)", 0);
Channel c_sa_statorCurrent_3 = create_channel("Stator Current 3 (SA)", 0);
Channel c_sa_electromagneticTorque = create_channel("Electromagnetic Torque (SA)", 0);
Channel c_sa_vibration_1 = create_channel("Vibration 1 (SA)", 0);
Channel c_sa_vibration_2 = create_channel("Vibration 2 (SA)", 0);
Channel c_sa_vibration_3 = create_channel("Vibration 3 (SA)", 0);
//create channels for sensors
printf("\nCreate Channels for Agents\n");
Channel c_aa_statorVoltage = create_channel("Stator Voltage (AA)", 0);
Channel c_aa_statorCurrent_1 = create_channel("Stator Current 1 (AA)", 0);
Channel c_aa_statorCurrent_2 = create_channel("Stator Current 2 (AA)", 0);
Channel c_aa_statorCurrent_3 = create_channel("Stator Current 3 (AA)", 0);
Channel c_aa_electromagneticTorque = create_channel("Electromagnetic Torque (AA)", 0);
Channel c_aa_vibration_1 = create_channel("Vibration 1 (AA)", 0);
Channel c_aa_vibration_2 = create_channel("Vibration 2 (AA)", 0);
Channel c_aa_vibration_3 = create_channel("Vibration 3 (AA)", 0);
//mount sensors in agents
printf("\nMount Sensors in Agents\n");
mount_sensorInAgent(&a_statorVoltage, &s_statorVoltage, &c_sa_statorVoltage);
mount_sensorInAgent(&a_statorCurrent_1, &s_statorCurrent_1, &c_sa_statorCurrent_1);
mount_sensorInAgent(&a_statorCurrent_2, &s_statorCurrent_2, &c_sa_statorCurrent_2);
mount_sensorInAgent(&a_statorCurrent_3, &s_statorCurrent_3, &c_sa_statorCurrent_3);
mount_sensorInAgent(&a_electromagneticTorque, &s_electromagneticTorque, &c_sa_electromagneticTorque);
mount_sensorInAgent(&a_vibration_1, &s_vibration_1, &c_sa_vibration_1);
mount_sensorInAgent(&a_vibration_2, &s_vibration_2, &c_sa_vibration_2);
mount_sensorInAgent(&a_vibration_3, &s_vibration_3, &c_sa_vibration_3);
//mount agents in agent(s)
printf("\nMount Agents in Agents\n");
mount_agentInAgent(&a_viabilityMonitor, &a_statorVoltage, &c_aa_statorVoltage);
mount_agentInAgent(&a_viabilityMonitor, &a_statorCurrent_1, &c_aa_statorCurrent_1);
mount_agentInAgent(&a_viabilityMonitor, &a_statorCurrent_2, &c_aa_statorCurrent_2);
mount_agentInAgent(&a_viabilityMonitor, &a_statorCurrent_3, &c_aa_statorCurrent_3);
mount_agentInAgent(&a_viabilityMonitor, &a_electromagneticTorque, &c_aa_electromagneticTorque);
mount_agentInAgent(&a_viabilityMonitor, &a_vibration_1, &c_aa_vibration_1);
mount_agentInAgent(&a_viabilityMonitor, &a_vibration_2, &c_aa_vibration_2);
mount_agentInAgent(&a_viabilityMonitor, &a_vibration_3, &c_aa_vibration_3);
//register agents in agents' stateHandler
printf("\nRegister agents in agents' stateHandler\n");
registerSlaveAgentAsInputVariableInStateHandler(&a_viabilityMonitor, &c_aa_statorVoltage);
registerSlaveAgentAsOutputVariableInStateHandler(&a_viabilityMonitor, &c_aa_statorCurrent_1);
registerSlaveAgentAsOutputVariableInStateHandler(&a_viabilityMonitor, &c_aa_statorCurrent_2);
registerSlaveAgentAsOutputVariableInStateHandler(&a_viabilityMonitor, &c_aa_statorCurrent_3);
registerSlaveAgentAsOutputVariableInStateHandler(&a_viabilityMonitor, &c_aa_electromagneticTorque);
registerSlaveAgentAsOutputVariableInStateHandler(&a_viabilityMonitor, &c_aa_vibration_1);
registerSlaveAgentAsOutputVariableInStateHandler(&a_viabilityMonitor, &c_aa_vibration_2);
registerSlaveAgentAsOutputVariableInStateHandler(&a_viabilityMonitor, &c_aa_vibration_3);
#else
// --- Other Modes ---
//create agents
printf("Create Agents\n");
Agent a_statorVoltage = create_agent("StatorVoltage");
setWorkingCycleOfAgent(&a_statorVoltage, workingCycle);
Agent a_statorCurrent = create_agent("StatorCurrent");
setWorkingCycleOfAgent(&a_statorCurrent, workingCycle);
Agent a_speed = create_agent("Speed");
setWorkingCycleOfAgent(&a_speed, workingCycle);
Agent a_electromagneticTorque = create_agent("ElectromagneticTorque");
setWorkingCycleOfAgent(&a_electromagneticTorque, workingCycle);
Agent a_mechanicalTorque = create_agent("MechanicalTorque");
setWorkingCycleOfAgent(&a_mechanicalTorque, workingCycle);
Agent a_viabilityMonitor = create_agent("ViabilityMonitor");
setWorkingCycleOfAgent(&a_viabilityMonitor, workingCycle);
//create sensors
printf("\nCreate Sensors\n");
Sensor s_statorVoltage = create_sensor("Stator Voltage");
setWorkingCycleOfSensor(&s_statorVoltage, workingCycle);
Sensor s_statorCurrent = create_sensor("Stator Current");
setWorkingCycleOfSensor(&s_statorCurrent, workingCycle);
Sensor s_speed = create_sensor("Speed");
setWorkingCycleOfSensor(&s_speed, workingCycle);
Sensor s_electromagneticTorque = create_sensor("Electromagnetic Torque");
setWorkingCycleOfSensor(&s_electromagneticTorque, workingCycle);
Sensor s_mechanicalTorque = create_sensor("Mechanical Torque");
setWorkingCycleOfSensor(&s_mechanicalTorque, workingCycle);
//create channels for sensors
printf("\nCreate Channels for Sensors\n");
Channel c_sa_statorVoltage = create_channel("Stator Voltage (SA)", 0);
Channel c_sa_statorCurrent = create_channel("Stator Current (SA)", 0);
Channel c_sa_speed = create_channel("Speed Sensor (SA)", 0);
Channel c_sa_electromagneticTorque = create_channel("Electromagnetic Torque (SA)", 0);
Channel c_sa_mechanicalTorque = create_channel("Mechanical Torque (SA)", 0);
//create channels for sensors
printf("\nCreate Channels for Agents\n");
Channel c_aa_statorVoltage = create_channel("Stator Voltage (AA-UP)", MAX_BUFFER_LENGTH);
Channel c_aa_statorCurrent = create_channel("Stator Current (AA-UP)", MAX_BUFFER_LENGTH);
Channel c_aa_speed = create_channel("Speed Sensor (AA-UP)", MAX_BUFFER_LENGTH);
Channel c_aa_electromagneticTorque = create_channel("Electromagnetic Torque (AA-UP)", MAX_BUFFER_LENGTH);
Channel c_aa_mechanicalTorque = create_channel("Mechanical Torque (AA-UP)", MAX_BUFFER_LENGTH);
//mount sensors in agents
printf("\nMount Sensors in Agents\n");
mount_sensorInAgent(&a_statorVoltage, &s_statorVoltage, &c_sa_statorVoltage);
mount_sensorInAgent(&a_statorCurrent, &s_statorCurrent, &c_sa_statorCurrent);
mount_sensorInAgent(&a_speed, &s_speed, &c_sa_speed);
mount_sensorInAgent(&a_electromagneticTorque, &s_electromagneticTorque, &c_sa_electromagneticTorque);
mount_sensorInAgent(&a_mechanicalTorque, &s_mechanicalTorque, &c_sa_mechanicalTorque);
//mount agents in agent(s)
printf("\nMount Agents in Agents\n");
mount_agentInAgent(&a_viabilityMonitor, &a_statorVoltage, &c_aa_statorVoltage);
mount_agentInAgent(&a_viabilityMonitor, &a_statorCurrent, &c_aa_statorCurrent);
mount_agentInAgent(&a_viabilityMonitor, &a_speed, &c_aa_speed);
mount_agentInAgent(&a_viabilityMonitor, &a_electromagneticTorque, &c_aa_electromagneticTorque);
mount_agentInAgent(&a_viabilityMonitor, &a_mechanicalTorque, &c_aa_mechanicalTorque);
//register agents in agents' stateHandler
printf("\nRegister agents in agents' stateHandler\n");
registerSlaveAgentAsInputVariableInStateHandler(&a_viabilityMonitor, &c_aa_statorVoltage);
registerSlaveAgentAsOutputVariableInStateHandler(&a_viabilityMonitor, &c_aa_statorCurrent);
registerSlaveAgentAsOutputVariableInStateHandler(&a_viabilityMonitor, &c_aa_speed);
registerSlaveAgentAsOutputVariableInStateHandler(&a_viabilityMonitor, &c_aa_electromagneticTorque);
registerSlaveAgentAsInputVariableInStateHandler(&a_viabilityMonitor, &c_aa_mechanicalTorque);
#endif // defined(MODE_BROKEN) || defined(MODE_HEALTHY)
/************************ FunctionBlocks Sim/Dif to State (NEU) ************************/
//SAME STATE DEVIATION
LinearFunctionBlock confSim2StateDev("funcBlock:confSim2StateDev");
LinearFunction funcConfSim2StateDev1;
funcConfSim2StateDev1.setDomain(false, true, (float)-outterBoundSimDif);
funcConfSim2StateDev1.setKandD((float)0, (float)0);
confSim2StateDev.addLinearFunction(&funcConfSim2StateDev1);
LinearFunction funcConfSim2StateDev2;
funcConfSim2StateDev2.setDomain(true, (float)-outterBoundSimDif, true, (float)-innerBoundSimDif);
funcConfSim2StateDev2.setKandD((float)-outterBoundSimDif, (float)0, (float)-innerBoundSimDif, (float)1);
confSim2StateDev.addLinearFunction(&funcConfSim2StateDev2);
LinearFunction funcConfSim2StateDev3;
funcConfSim2StateDev3.setDomain(true, (float)-innerBoundSimDif, true, (float)innerBoundSimDif);
funcConfSim2StateDev3.setKandD((float)0, (float)1);
confSim2StateDev.addLinearFunction(&funcConfSim2StateDev3);
LinearFunction funcConfSim2StateDev4;
funcConfSim2StateDev4.setDomain(true, (float)innerBoundSimDif, true, (float)outterBoundSimDif);
funcConfSim2StateDev4.setKandD((float)innerBoundSimDif, (float)1, (float)outterBoundSimDif, (float)0);
confSim2StateDev.addLinearFunction(&funcConfSim2StateDev4);
LinearFunction funcConfSim2StateDev5;
funcConfSim2StateDev5.setDomain(true, (float)outterBoundSimDif, false);
funcConfSim2StateDev5.setKandD((float)0, (float)0);
confSim2StateDev.addLinearFunction(&funcConfSim2StateDev5);
//ANOTHER STATE DEVIATION
LinearFunctionBlock confDif2StateDev("funcBlock:confDif2StateDev");
LinearFunction funcConfDif2StateDev1;
funcConfDif2StateDev1.setDomain(false, true, (float)-outterBoundSimDif);
funcConfDif2StateDev1.setKandD((float)0, (float)1);
confDif2StateDev.addLinearFunction(&funcConfDif2StateDev1);
LinearFunction funcConfDif2StateDev2;
funcConfDif2StateDev2.setDomain(true, (float)-outterBoundSimDif, true, (float)-innerBoundSimDif);
funcConfDif2StateDev2.setKandD((float)-outterBoundSimDif, (float)1, (float)-innerBoundSimDif, (float)0);
confDif2StateDev.addLinearFunction(&funcConfDif2StateDev2);
LinearFunction funcConfDif2StateDev3;
funcConfDif2StateDev3.setDomain(true, (float)-innerBoundSimDif, true, (float)innerBoundSimDif);
funcConfDif2StateDev3.setKandD((float)0, (float)0);
confDif2StateDev.addLinearFunction(&funcConfDif2StateDev3);
LinearFunction funcConfDif2StateDev4;
funcConfDif2StateDev4.setDomain(true, (float)innerBoundSimDif, true, (float)outterBoundSimDif);
funcConfDif2StateDev4.setKandD((float)innerBoundSimDif, (float)0, (float)outterBoundSimDif, (float)1);
confDif2StateDev.addLinearFunction(&funcConfDif2StateDev4);
LinearFunction funcConfDif2StateDev5;
funcConfDif2StateDev5.setDomain(true, (float)outterBoundSimDif, false);
funcConfDif2StateDev5.setKandD((float)0, (float)1);
confDif2StateDev.addLinearFunction(&funcConfDif2StateDev5);
//SAME STATE TIME
LinearFunctionBlock confSim2StateTime("funcBlock:confSim2StateTime");
LinearFunction funcConfSim2StateTime1;
funcConfSim2StateTime1.setDomain(false, true, (float)0);
funcConfSim2StateTime1.setKandD((float)0, (float)0);
confSim2StateTime.addLinearFunction(&funcConfSim2StateTime1);
LinearFunction funcConfSim2StateTime2;
funcConfSim2StateTime2.setDomain(true, (float)0, true, (float)length);
funcConfSim2StateTime2.setKandD((float)0, (float)0, (float)length, (float)1);
confSim2StateTime.addLinearFunction(&funcConfSim2StateTime2);
LinearFunction funcConfSim2StateTime3;
funcConfSim2StateTime3.setDomain(true, (float)length, false);
funcConfSim2StateTime3.setKandD((float)0, (float)1);
confSim2StateTime.addLinearFunction(&funcConfSim2StateTime3);
//ANOTHER STATE TIME
LinearFunctionBlock confDif2StateTime("funcBlock:confDif2StateTime");
LinearFunction funcConfDif2StateTime1;
funcConfDif2StateTime1.setDomain(false, true, (float)0);
funcConfDif2StateTime1.setKandD((float)0, (float)1);
confDif2StateTime.addLinearFunction(&funcConfDif2StateTime1);
LinearFunction funcConfDif2StateTime2;
funcConfDif2StateTime2.setDomain(true, (float)0, true, (float)length);
funcConfDif2StateTime2.setKandD((float)0, (float)1, (float)length, (float)0);
confDif2StateTime.addLinearFunction(&funcConfDif2StateTime2);
LinearFunction funcConfDif2StateTime3;
funcConfDif2StateTime3.setDomain(true, (float)length, false);
funcConfDif2StateTime3.setKandD((float)0, (float)0);
confDif2StateTime.addLinearFunction(&funcConfDif2StateTime3);
/************************ FunctionBlocks Val/Inv State (NEU) ************************/
//VALID STATE DEVIATION
LinearFunctionBlock confValidStateDev("funcBlock:confValidStateDev");
LinearFunction funcConfValidStateDev1;
funcConfValidStateDev1.setDomain(false, true, (float)-outterBoundSimDif);
funcConfValidStateDev1.setKandD((float)0, (float)0);
confValidStateDev.addLinearFunction(&funcConfValidStateDev1);
LinearFunction funcConfValidStateDev2;
funcConfValidStateDev2.setDomain(true, (float)-outterBoundSimDif, true, (float)-innerBoundSimDif);
funcConfValidStateDev2.setKandD((float)-outterBoundSimDif, (float)0, (float)-innerBoundSimDif, (float)1);
confValidStateDev.addLinearFunction(&funcConfValidStateDev2);
LinearFunction funcConfValidStateDev3;
funcConfValidStateDev3.setDomain(true, (float)-innerBoundSimDif, true, (float)innerBoundSimDif);
funcConfValidStateDev3.setKandD((float)0, (float)1);
confValidStateDev.addLinearFunction(&funcConfValidStateDev3);
LinearFunction funcConfValidStateDev4;
funcConfValidStateDev4.setDomain(true, (float)innerBoundSimDif, true, (float)outterBoundSimDif);
funcConfValidStateDev4.setKandD((float)innerBoundSimDif, (float)1, (float)outterBoundSimDif, (float)0);
confValidStateDev.addLinearFunction(&funcConfValidStateDev4);
LinearFunction funcConfValidStateDev5;
funcConfValidStateDev5.setDomain(true, (float)outterBoundSimDif, false);
funcConfValidStateDev5.setKandD((float)0, (float)0);
confValidStateDev.addLinearFunction(&funcConfValidStateDev5);
//INVALID STATE DEVIATION
LinearFunctionBlock confInvalidStateDev("funcBlock:confInvalidStateDev");
LinearFunction funcConfInvalidStateDev1;
funcConfInvalidStateDev1.setDomain(false, true, (float)-outterBoundSimDif);
funcConfInvalidStateDev1.setKandD((float)0, (float)1);
confInvalidStateDev.addLinearFunction(&funcConfInvalidStateDev1);
LinearFunction funcConfInvalidStateDev2;
funcConfInvalidStateDev2.setDomain(true, (float)-outterBoundSimDif, true, (float)-innerBoundSimDif);
funcConfInvalidStateDev2.setKandD((float)-outterBoundSimDif, (float)1, (float)-innerBoundSimDif, (float)0);
confInvalidStateDev.addLinearFunction(&funcConfInvalidStateDev2);
LinearFunction funcConfInvalidStateDev3;
funcConfInvalidStateDev3.setDomain(true, (float)-innerBoundSimDif, true, (float)innerBoundSimDif);
funcConfInvalidStateDev3.setKandD((float)0, (float)0);
confInvalidStateDev.addLinearFunction(&funcConfInvalidStateDev3);
LinearFunction funcConfInvalidStateDev4;
funcConfInvalidStateDev4.setDomain(true, (float)innerBoundSimDif, true, (float)outterBoundSimDif);
funcConfInvalidStateDev4.setKandD((float)innerBoundSimDif, (float)0, (float)outterBoundSimDif, (float)1);
confInvalidStateDev.addLinearFunction(&funcConfInvalidStateDev4);
LinearFunction funcConfInvalidStateDev5;
funcConfInvalidStateDev5.setDomain(true, (float)outterBoundSimDif, false);
funcConfInvalidStateDev5.setKandD((float)0, (float)1);
confInvalidStateDev.addLinearFunction(&funcConfInvalidStateDev5);
//VALID STATE TIME
LinearFunctionBlock confValidStateTime("funcBlock:confValidStateTime");
LinearFunction funcConfValidStateTime1;
funcConfValidStateTime1.setDomain(false, true, (float)0);
funcConfValidStateTime1.setKandD((float)0, (float)0);
confValidStateTime.addLinearFunction(&funcConfValidStateTime1);
LinearFunction funcConfValidStateTime2;
funcConfValidStateTime2.setDomain(true, (float)0, true, (float)length); //10
funcConfValidStateTime2.setKandD((float)0, (float)0, (float)length, (float)1);
confValidStateTime.addLinearFunction(&funcConfValidStateTime2);
LinearFunction funcConfValidStateTime3;
funcConfValidStateTime3.setDomain(true, (float)length, false);
funcConfValidStateTime3.setKandD((float)0, (float)1);
confValidStateTime.addLinearFunction(&funcConfValidStateTime3);
//INVALID STATE TIME
LinearFunctionBlock confInvalidStateTime("funcBlock:confInvalidStateTime");
LinearFunction funcConfInvalidStateTime1;
funcConfInvalidStateTime1.setDomain(false, true, (float)0);
funcConfInvalidStateTime1.setKandD((float)0, (float)1);
confInvalidStateTime.addLinearFunction(&funcConfInvalidStateTime1);
LinearFunction funcConfInvalidStateTime2;
funcConfInvalidStateTime2.setDomain(true, (float)0, true, (float)length);
funcConfInvalidStateTime2.setKandD((float)0, (float)1, (float)length, (float)0);
confInvalidStateTime.addLinearFunction(&funcConfInvalidStateTime2);
LinearFunction funcConfInvalidStateTime3;
funcConfInvalidStateTime3.setDomain(true, (float)length, false);
funcConfInvalidStateTime3.setKandD((float)0, (float)0);
confInvalidStateTime.addLinearFunction(&funcConfInvalidStateTime3);
/********************************** Functions NOT OK **********************************/
LinearFunctionBlock confStateDrifts("confidence:confStateDrifts");
LinearFunction functionConfidenceDriftDeviation1;
functionConfidenceDriftDeviation1.setDomain(false, true, (float)-outterBoundDRIFT);
functionConfidenceDriftDeviation1.setKandD((float)0, (float)1);
confStateDrifts.addLinearFunction(&functionConfidenceDriftDeviation1);
LinearFunction functionConfidenceDriftDeviation2;
functionConfidenceDriftDeviation2.setDomain(true, (float)-outterBoundDRIFT, true, (float)-innerBoundDRIFT);
functionConfidenceDriftDeviation2.setKandD((float)-outterBoundDRIFT, (float)1, (float)-innerBoundDRIFT, (float)0);
confStateDrifts.addLinearFunction(&functionConfidenceDriftDeviation2);
LinearFunction functionConfidenceDriftDeviation3;
functionConfidenceDriftDeviation3.setDomain(true, (float)-innerBoundDRIFT, true, (float)innerBoundDRIFT);
functionConfidenceDriftDeviation3.setKandD((float)0, (float)0);
confStateDrifts.addLinearFunction(&functionConfidenceDriftDeviation3);
LinearFunction functionConfidenceDriftDeviation4;
functionConfidenceDriftDeviation4.setDomain(true, (float)innerBoundDRIFT, true, (float)outterBoundDRIFT);
functionConfidenceDriftDeviation4.setKandD((float)innerBoundDRIFT, (float)0, (float)outterBoundDRIFT, (float)1);
confStateDrifts.addLinearFunction(&functionConfidenceDriftDeviation4);
LinearFunction functionConfidenceDriftDeviation5;
functionConfidenceDriftDeviation5.setDomain(true, (float)outterBoundDRIFT, false);
functionConfidenceDriftDeviation5.setKandD((float)0, (float)1);
confStateDrifts.addLinearFunction(&functionConfidenceDriftDeviation5);
LinearFunctionBlock confBroken("confidence:broken");
LinearFunction functionConfidenceBroken1;
functionConfidenceBroken1.setDomain(false, true, (float)0);
functionConfidenceBroken1.setKandD((float)0, (float)0);
confBroken.addLinearFunction(&functionConfidenceBroken1);
LinearFunction functionConfidenceBroken2;
functionConfidenceBroken2.setDomain(true, (float)0, true, (float)boundBroken);
functionConfidenceBroken2.setKandD((float)0, (float)0, (float)boundBroken, (float)1);
confBroken.addLinearFunction(&functionConfidenceBroken2);
LinearFunction functionConfidenceBroken3;
functionConfidenceBroken3.setDomain(true, (float)boundBroken, false);
functionConfidenceBroken3.setKandD((float)0, (float)1);
confBroken.addLinearFunction(&functionConfidenceBroken3);
/********************************** Mount Functions **********************************/
a_viabilityMonitor.get_stateHandler()->FuncBlockConfSim2StateDev = &confSim2StateDev;
a_viabilityMonitor.get_stateHandler()->FuncBlockConfDif2StateDev = &confDif2StateDev;
a_viabilityMonitor.get_stateHandler()->FuncBlockConfSim2StateTime = &confSim2StateTime;
a_viabilityMonitor.get_stateHandler()->FuncBlockConfDif2StateTime = &confDif2StateTime;
a_viabilityMonitor.get_stateHandler()->FuncBlockConfValStateDev = &confValidStateDev;
a_viabilityMonitor.get_stateHandler()->FuncBlockConfInvStateDev = &confInvalidStateDev;
a_viabilityMonitor.get_stateHandler()->FuncBlockConfValStateTime = &confValidStateTime;
a_viabilityMonitor.get_stateHandler()->FuncBlockConfInvStateTime = &confInvalidStateTime;
// HIIIIIIIIIIIIIIERRRRRRRRRRRR SCH�������������������NER MACHEN
a_viabilityMonitor.get_stateHandler()->DriftDeviation = &confStateDrifts;
a_viabilityMonitor.get_stateHandler()->FuncBlockConfBrokenSamples = &confBroken;
//create testbench
printf("\nCreate Testbench\n");
Testbench tb = create_testbench("testbench");
//at 1% threshold - stable at ~6061
//unsigned int ROW = 6040;
unsigned int ROW = 2;
//csv-data
//TODO: (1) simplify constructor, (2) check CSV for number of rows and columns, (3) redesign create_CSVreaderModule function
printf("\nCreate CSV Reader Modules\n");
std::string filepath_stator_voltage;
std::string filepath_stator_current;
std::string filepath_speed;
std::string filepath_electric_torque;
std::string filepath_mechanical_torque;
filepath_stator_voltage = PATH_TO_CSV_DATA_FILES + FOLDERNAME_NORMAL_OPERATION + FILENAME_STATOR_VOLTAGE_ABSTRACTED;
filepath_stator_current = PATH_TO_CSV_DATA_FILES + FOLDERNAME_NORMAL_OPERATION + FILENAME_STATOR_CURRENT_ABSTRACTED;
filepath_speed = PATH_TO_CSV_DATA_FILES + FOLDERNAME_NORMAL_OPERATION + FILENAME_SPEED;
filepath_electric_torque = PATH_TO_CSV_DATA_FILES + FOLDERNAME_NORMAL_OPERATION + FILENAME_ELECTROMACNTEIC_TORQUE;
filepath_mechanical_torque = PATH_TO_CSV_DATA_FILES + FOLDERNAME_NORMAL_OPERATION + FILENAME_MECHANICAL_TORQUE;
char* name_volt_csv_reader = "Stator Voltage CSV-Reader";
char* name_curr_csv_reader = "Stator Current CSV-Reader";
char* name_speed_csv_reader = "Speed CSV-Reader";
char* name_el_torque_csv_reader = "Electromagnetic Torque CSV-Reader";
char* name_me_torque_csv_reader = "Mechanical Torque CSV-Reader";
#ifdef MODE_NORMAL_UNCHANGED
#ifdef CSV_FILTERED
//Normal_operation-Tm0 (filtered)
CSVreaderModule csvr_statorVoltage = create_CSVreaderModule(name_volt_csv_reader, filepath_stator_voltage.c_str(), 2, ROW);
CSVreaderModule csvr_statorCurrent = create_CSVreaderModule(name_curr_csv_reader, filepath_stator_current.c_str(), 2, ROW);
CSVreaderModule csvr_speed = create_CSVreaderModule(name_speed_csv_reader, filepath_speed.c_str(), 2, ROW);
CSVreaderModule csvr_electromagneticTorque = create_CSVreaderModule(name_el_torque_csv_reader, filepath_electric_torque.c_str(), 2, ROW);
CSVreaderModule csvr_mechanicalTorque = create_CSVreaderModule(name_me_torque_csv_reader, filepath_mechanical_torque.c_str(), 2, ROW);
#else
//Normal_operation-Tm0
CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\Normal_operation-Tm0\\statorVoltage_abstracted.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\Normal_operation-Tm0\\statorCurrent_abstracted.csv", 2, ROW);
CSVreaderModule csvr_speed = create_CSVreaderModule("Speed CSV-Reader", "C:\\csv-data\\sambamotor\\Normal_operation-Tm0\\speed.csv", 2, ROW);
CSVreaderModule csvr_electromagneticTorque = create_CSVreaderModule("Electromagnetic Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Normal_operation-Tm0\\electromagneticTorque.csv", 2, ROW);
CSVreaderModule csvr_mechanicalTorque = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Normal_operation-Tm0\\mechanicalTorque.csv", 2, ROW);
#endif // CSV_FILTERED
#endif // MODE_NORMAL_UNCHANGED
#ifdef MODE_NORMAL_LOADCHANGE
#ifdef CSV_FILTERED
/*
//Normal_operation-changing load (filteredTwice)
CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\Normal_operation-changing load\\statorVoltage_abstracted.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\Normal_operation-changing load\\statorCurrent_abs_fil.csv", 2, ROW);
CSVreaderModule csvr_speed = create_CSVreaderModule("Speed CSV-Reader", "C:\\csv-data\\sambamotor\\Normal_operation-changing load\\speed_filtered.csv", 2, ROW);
CSVreaderModule csvr_electromagneticTorque = create_CSVreaderModule("Electromagnetic Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Normal_operation-changing load\\te_filtered.csv", 2, ROW);
CSVreaderModule csvr_mechanicalTorque = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Normal_operation-changing load\\mechanicalTorque.csv", 2, ROW);
*/
//Normal_operation-changing load (filteredOnce)
CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\Normal_operation-changing load\\statorVoltage_abstracted.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\Normal_operation-changing load\\statorCurrent_abs_fil_once.csv", 2, ROW);
CSVreaderModule csvr_speed = create_CSVreaderModule("Speed CSV-Reader", "C:\\csv-data\\sambamotor\\Normal_operation-changing load\\speed_filtered_once.csv", 2, ROW);
CSVreaderModule csvr_electromagneticTorque = create_CSVreaderModule("Electromagnetic Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Normal_operation-changing load\\te_filtered_once.csv", 2, ROW);
CSVreaderModule csvr_mechanicalTorque = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Normal_operation-changing load\\mechanicalTorque.csv", 2, ROW);
#else
//Normal_operation-Tm0
CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\Normal_operation-changing load\\statorVoltage_abstracted.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\Normal_operation-changing load\\statorCurrent_abstracted.csv", 2, ROW);
CSVreaderModule csvr_speed = create_CSVreaderModule("Speed CSV-Reader", "C:\\csv-data\\sambamotor\\Normal_operation-changing load\\speed.csv", 2, ROW);
CSVreaderModule csvr_electromagneticTorque = create_CSVreaderModule("Electromagnetic Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Normal_operation-changing load\\electromagneticTorque.csv", 2, ROW);
//CSVreaderModule csvr_mechanicalTorque = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Normal_operation-changing load\\mechanicalTorque_fil_quad.csv", 2, ROW);
//CSVreaderModule csvr_mechanicalTorque = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Normal_operation-changing load\\mechanicalTorque_fil_triple.csv", 2, ROW);
//CSVreaderModule csvr_mechanicalTorque = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Normal_operation-changing load\\mechanicalTorque_fil_twice.csv", 2, ROW);
//CSVreaderModule csvr_mechanicalTorque = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Normal_operation-changing load\\mechanicalTorque_fil_once.csv", 2, ROW);
CSVreaderModule csvr_mechanicalTorque = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Normal_operation-changing load\\mechanicalTorque.csv", 2, ROW);
#endif // CSV_FILTERED
#endif // MODE_NORMAL_UNCHANGED
#ifdef MODE_NORMAL_SPEEDCHANGE
#ifdef CSV_FILTERED
//Change_of_speed (filtered)
//CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\Change_of_speed\\vsa_amp_abs_fil_twice.csv", 2, ROW);
//CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\Change_of_speed\\vsa_amp_abs_fil_once.csv", 2, ROW);
CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\Change_of_speed\\statorVoltage_abstracted.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\Change_of_speed\\statorCurrent_abs_fil.csv", 2, ROW);
CSVreaderModule csvr_speed = create_CSVreaderModule("Speed CSV-Reader", "C:\\csv-data\\sambamotor\\Change_of_speed\\speed_filtered.csv", 2, ROW);
CSVreaderModule csvr_electromagneticTorque = create_CSVreaderModule("Electromagnetic Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Change_of_speed\\te_filtered.csv", 2, ROW);
CSVreaderModule csvr_mechanicalTorque = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Change_of_speed\\mechanicalTorque.csv", 2, ROW);
CSVreaderModule csvr_frequency = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Change_of_speed\\frequency.csv", 2, ROW);
#else
//Change_of_speed
//CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\Change_of_speed\\vsa_amp_abs_fil_twice.csv", 2, ROW);
//CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\Change_of_speed\\vsa_amp_abs_fil_once.csv", 2, ROW);
CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\Change_of_speed\\statorVoltage_abstracted.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\Change_of_speed\\statorCurrent_abstracted.csv", 2, ROW);
CSVreaderModule csvr_speed = create_CSVreaderModule("Speed CSV-Reader", "C:\\csv-data\\sambamotor\\Change_of_speed\\speed.csv", 2, ROW);
CSVreaderModule csvr_electromagneticTorque = create_CSVreaderModule("Electromagnetic Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Change_of_speed\\electromagneticTorque.csv", 2, ROW);
CSVreaderModule csvr_mechanicalTorque = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Change_of_speed\\mechanicalTorque.csv", 2, ROW);
CSVreaderModule csvr_frequency = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Change_of_speed\\frequency.csv", 2, ROW);
#endif // CSV_FILTERED
#endif // MODE_NORMAL_UNCHANGED
#ifdef MODE_DRIFT
#ifdef CSV_FILTERED
/*
CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\Wear-out\\statorVoltage_abstracted.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\Wear-out\\statorCurrent_abs_fil.csv", 2, ROW);
CSVreaderModule csvr_speed = create_CSVreaderModule("Speed CSV-Reader", "C:\\csv-data\\sambamotor\\Wear-out\\speed_filtered.csv", 2, ROW);
CSVreaderModule csvr_electromagneticTorque = create_CSVreaderModule("Electromagnetic Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Wear-out\\te_filtered.csv", 2, ROW);
CSVreaderModule csvr_mechanicalTorque = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Wear-out\\mechanicalTorque.csv", 2, ROW);
//Wear-out 10%
CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-10pc\\statorVoltage_abstracted.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-10pc\\statorCurrent_abs_fil.csv", 2, ROW);
CSVreaderModule csvr_speed = create_CSVreaderModule("Speed CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-10pc\\speed_filtered.csv", 2, ROW);
CSVreaderModule csvr_electromagneticTorque = create_CSVreaderModule("Electromagnetic Torque CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-10pc\\te_filtered.csv", 2, ROW);
CSVreaderModule csvr_mechanicalTorque = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-10pc\\mechanicalTorque.csv", 2, ROW);
//Wear-out 20%
CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-20pc\\statorVoltage_abstracted.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-20pc\\statorCurrent_abs_fil.csv", 2, ROW);
CSVreaderModule csvr_speed = create_CSVreaderModule("Speed CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-20pc\\speed_filtered.csv", 2, ROW);
CSVreaderModule csvr_electromagneticTorque = create_CSVreaderModule("Electromagnetic Torque CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-20pc\\te_filtered.csv", 2, ROW);
CSVreaderModule csvr_mechanicalTorque = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-20pc\\mechanicalTorque.csv", 2, ROW);
//Wear-out 4%
CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-4pc\\statorVoltage_abstracted.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-4pc\\statorCurrent_abs_fil.csv", 2, ROW);
CSVreaderModule csvr_speed = create_CSVreaderModule("Speed CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-4pc\\speed_filtered.csv", 2, ROW);
CSVreaderModule csvr_electromagneticTorque = create_CSVreaderModule("Electromagnetic Torque CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-4pc\\te_filtered.csv", 2, ROW);
CSVreaderModule csvr_mechanicalTorque = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-4pc\\mechanicalTorque.csv", 2, ROW);
//Wear-out 5%
CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-5pc\\statorVoltage_abstracted.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-5pc\\statorCurrent_abs_fil.csv", 2, ROW);
CSVreaderModule csvr_speed = create_CSVreaderModule("Speed CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-5pc\\speed_filtered.csv", 2, ROW);
CSVreaderModule csvr_electromagneticTorque = create_CSVreaderModule("Electromagnetic Torque CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-5pc\\te_filtered.csv", 2, ROW);
CSVreaderModule csvr_mechanicalTorque = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-5pc\\mechanicalTorque.csv", 2, ROW);
//Wear-out 6%
CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-6pc\\statorVoltage_abstracted.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-6pc\\statorCurrent_abs_fil.csv", 2, ROW);
CSVreaderModule csvr_speed = create_CSVreaderModule("Speed CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-6pc\\speed_filtered.csv", 2, ROW);
CSVreaderModule csvr_electromagneticTorque = create_CSVreaderModule("Electromagnetic Torque CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-6pc\\te_filtered.csv", 2, ROW);
CSVreaderModule csvr_mechanicalTorque = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-6pc\\mechanicalTorque.csv", 2, ROW);
//Wear-out 7%
CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-7pc\\statorVoltage_abstracted.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-7pc\\statorCurrent_abs_fil.csv", 2, ROW);
CSVreaderModule csvr_speed = create_CSVreaderModule("Speed CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-7pc\\speed_filtered.csv", 2, ROW);
CSVreaderModule csvr_electromagneticTorque = create_CSVreaderModule("Electromagnetic Torque CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-7pc\\te_filtered.csv", 2, ROW);
CSVreaderModule csvr_mechanicalTorque = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-7pc\\mechanicalTorque.csv", 2, ROW);
//Wear-out 8%
CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-8pc\\statorVoltage_abstracted.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-8pc\\statorCurrent_abs_fil.csv", 2, ROW);
CSVreaderModule csvr_speed = create_CSVreaderModule("Speed CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-8pc\\speed_filtered.csv", 2, ROW);
CSVreaderModule csvr_electromagneticTorque = create_CSVreaderModule("Electromagnetic Torque CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-8pc\\te_filtered.csv", 2, ROW);
CSVreaderModule csvr_mechanicalTorque = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-8pc\\mechanicalTorque.csv", 2, ROW);
//Wear-out 9%
CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-9pc\\statorVoltage_abstracted.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-9pc\\statorCurrent_abs_fil.csv", 2, ROW);
CSVreaderModule csvr_speed = create_CSVreaderModule("Speed CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-9pc\\speed_filtered.csv", 2, ROW);
CSVreaderModule csvr_electromagneticTorque = create_CSVreaderModule("Electromagnetic Torque CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-9pc\\te_filtered.csv", 2, ROW);
CSVreaderModule csvr_mechanicalTorque = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-9pc\\mechanicalTorque.csv", 2, ROW);
//Wear-out HedyehNew (original with less friction)
CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-HedyehNew\\statorVoltage_abstracted.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-HedyehNew\\statorCurrent_abs_fil.csv", 2, ROW);
CSVreaderModule csvr_speed = create_CSVreaderModule("Speed CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-HedyehNew\\speed_filtered.csv", 2, ROW);
CSVreaderModule csvr_electromagneticTorque = create_CSVreaderModule("Electromagnetic Torque CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-HedyehNew\\te_filtered.csv", 2, ROW);
CSVreaderModule csvr_mechanicalTorque = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\zusaetzlich\\Wearing-out-HedyehNew\\mechanicalTorque.csv", 2, ROW);
//Wear-out 001 (DataSet_2)
CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\Samba_Dataset_2\\Wearing out-001\\statorVoltage_abstracted.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\Samba_Dataset_2\\Wearing out-001\\statorCurrent_abs_fil_twice.csv", 2, ROW);
CSVreaderModule csvr_speed = create_CSVreaderModule("Speed CSV-Reader", "C:\\csv-data\\sambamotor\\Samba_Dataset_2\\Wearing out-001\\speed_filtered_twice.csv", 2, ROW);
CSVreaderModule csvr_electromagneticTorque = create_CSVreaderModule("Electromagnetic Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Samba_Dataset_2\\Wearing out-001\\te_filtered_twice.csv", 2, ROW);
CSVreaderModule csvr_mechanicalTorque = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Samba_Dataset_2\\Wearing out-001\\mechanicalTorque.csv", 2, ROW);
//Wear-out 005 (DataSet_2)
CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\Samba_Dataset_2\\Wearing out-005\\statorVoltage_abstracted.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\Samba_Dataset_2\\Wearing out-005\\statorCurrent_abs_fil_twice.csv", 2, ROW);
CSVreaderModule csvr_speed = create_CSVreaderModule("Speed CSV-Reader", "C:\\csv-data\\sambamotor\\Samba_Dataset_2\\Wearing out-005\\speed_filtered_twice.csv", 2, ROW);
CSVreaderModule csvr_electromagneticTorque = create_CSVreaderModule("Electromagnetic Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Samba_Dataset_2\\Wearing out-005\\te_filtered_twice.csv", 2, ROW);
CSVreaderModule csvr_mechanicalTorque = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Samba_Dataset_2\\Wearing out-005\\mechanicalTorque.csv", 2, ROW);
*/
#else
CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\Wear-out\\statorVoltage_abstracted.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\Wear-out\\statorCurrent_abstracted.csv", 2, ROW);
CSVreaderModule csvr_speed = create_CSVreaderModule("Speed CSV-Reader", "C:\\csv-data\\sambamotor\\Wear-out\\speed.csv", 2, ROW);
CSVreaderModule csvr_electromagneticTorque = create_CSVreaderModule("Electromagnetic Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Wear-out\\electromagneticTorque.csv", 2, ROW);
CSVreaderModule csvr_mechanicalTorque = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Wear-out\\mechanicalTorque.csv", 2, ROW);
#endif // CSV_FILTERED
#endif // MODE_NORMAL_UNCHANGED
#ifdef MODE_BROKEN
#ifdef CSV_FILTERED
//Bearing-defect 0nm
CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\OR_0nm_2\\statorVoltage_abstracted.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent_1 = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\OR_0nm_2\\statorCurrent_abs_fil.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent_2 = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\OR_0nm_2\\statorCurrent_abs_fil.csv", 3, ROW);
CSVreaderModule csvr_statorCurrent_3 = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\OR_0nm_2\\statorCurrent_abs_fil.csv", 4, ROW);
CSVreaderModule csvr_electromagneticTorque = create_CSVreaderModule("Electromagnetic Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\OR_0nm_2\\te_filtered.csv", 2, ROW);
CSVreaderModule csvr_vibration_1 = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\OR_0nm_2\\vib1_filtered.csv", 2, ROW);
CSVreaderModule csvr_vibration_2 = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\OR_0nm_2\\vib2_filtered.csv", 2, ROW);
CSVreaderModule csvr_vibration_3 = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\OR_0nm_2\\vib3_filtered.csv", 2, ROW);
#else
//Bearing-defect 0nm
CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\OR_0nm_2\\statorVoltage_abstracted.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent_1 = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\OR_0nm_2\\statorCurrent_abstracted.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent_2 = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\OR_0nm_2\\statorCurrent_abstracted.csv", 3, ROW);
CSVreaderModule csvr_statorCurrent_3 = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\OR_0nm_2\\statorCurrent_abstracted.csv", 4, ROW);
CSVreaderModule csvr_electromagneticTorque = create_CSVreaderModule("Electromagnetic Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\source\\OR_0nm_2.csv", 5, ROW);
CSVreaderModule csvr_vibration_1 = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\source\\OR_0nm_2.csv", 6, ROW);
CSVreaderModule csvr_vibration_2 = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\source\\OR_0nm_2.csv", 7, ROW);
CSVreaderModule csvr_vibration_3 = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\source\\OR_0nm_2.csv", 8, ROW);
#endif // CSV_FILTERED
#endif // MODE_NORMAL_UNCHANGED
#ifdef MODE_HEALTHY
#ifdef CSV_FILTERED
//Bearing-defect 0nm
CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\Healthy_0nm_2\\statorVoltage_abstracted.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent_1 = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\Healthy_0nm_2\\statorCurrent_abs_fil.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent_2 = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\Healthy_0nm_2\\statorCurrent_abs_fil.csv", 3, ROW);
CSVreaderModule csvr_statorCurrent_3 = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\Healthy_0nm_2\\statorCurrent_abs_fil.csv", 4, ROW);
CSVreaderModule csvr_electromagneticTorque = create_CSVreaderModule("Electromagnetic Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\Healthy_0nm_2\\te_filtered.csv", 2, ROW);
CSVreaderModule csvr_vibration_1 = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\Healthy_0nm_2\\vib1_filtered.csv", 2, ROW);
CSVreaderModule csvr_vibration_2 = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\Healthy_0nm_2\\vib2_filtered.csv", 2, ROW);
CSVreaderModule csvr_vibration_3 = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\Healthy_0nm_2\\vib3_filtered.csv", 2, ROW);
#else
printf("DATASET NOT AVAILABLE -> therefore filteres data loaded\n");
getchar();
//Bearing-defect 0nm
CSVreaderModule csvr_statorVoltage = create_CSVreaderModule("Stator Voltage CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\Healthy_0nm_2\\statorVoltage_abstracted.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent_1 = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\Healthy_0nm_2\\statorCurrent_abs_fil.csv", 2, ROW);
CSVreaderModule csvr_statorCurrent_2 = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\Healthy_0nm_2\\statorCurrent_abs_fil.csv", 3, ROW);
CSVreaderModule csvr_statorCurrent_3 = create_CSVreaderModule("Stator Current CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\Healthy_0nm_2\\statorCurrent_abs_fil.csv", 4, ROW);
CSVreaderModule csvr_electromagneticTorque = create_CSVreaderModule("Electromagnetic Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\Healthy_0nm_2\\te_filtered.csv", 2, ROW);
CSVreaderModule csvr_vibration_1 = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\Healthy_0nm_2\\vib1_filtered.csv", 2, ROW);
CSVreaderModule csvr_vibration_2 = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\Healthy_0nm_2\\vib2_filtered.csv", 2, ROW);
CSVreaderModule csvr_vibration_3 = create_CSVreaderModule("Mechanical Torque CSV-Reader", "C:\\csv-data\\sambamotor\\Anomaly-bearing_defect\\Healthy_0nm_2\\vib3_filtered.csv", 2, ROW);
#endif // CSV_FILTERED
#endif // MODE_HEALTHY
#ifdef MODE_NORMAL_SPEEDCHANGE
Agent a_frequency = create_agent("Frequency");
setWorkingCycleOfAgent(&a_frequency, workingCycle);
Sensor s_frequency = create_sensor("Frequency");
setWorkingCycleOfSensor(&s_frequency, workingCycle);
Channel c_sa_frequency = create_channel("Frequency (SA)", 0);
Channel c_aa_frequency = create_channel("Frequency (AA-UP)", MAX_BUFFER_LENGTH);
mount_sensorInAgent(&a_frequency, &s_frequency, &c_sa_frequency);
mount_agentInAgent(&a_viabilityMonitor, &a_frequency, &c_aa_frequency);
registerSlaveAgentAsInputVariableInStateHandler(&a_viabilityMonitor, &c_aa_frequency);
register_agentInTestbench(&tb, &a_frequency);
register_sensorInTestbench(&tb, &s_frequency, &csvr_frequency);
register_channelInTestbench(&tb, &c_sa_frequency);
register_channelInTestbench(&tb, &c_aa_frequency);
#endif // MODE_NORMAL_SPEEDCHANGE
#if defined(MODE_BROKEN) || defined(MODE_HEALTHY)
//register agents
printf("\nRegister Agents in Testbench\n");
//TODO: "Test Bench" not "Testbench"
register_agentInTestbench(&tb, &a_statorVoltage);
register_agentInTestbench(&tb, &a_statorCurrent_1);
register_agentInTestbench(&tb, &a_statorCurrent_2);
register_agentInTestbench(&tb, &a_statorCurrent_3);
register_agentInTestbench(&tb, &a_electromagneticTorque);
register_agentInTestbench(&tb, &a_vibration_1);
register_agentInTestbench(&tb, &a_vibration_2);
register_agentInTestbench(&tb, &a_vibration_3);
register_agentInTestbench(&tb, &a_viabilityMonitor);
//register sensors with their csv-readers
printf("\nRegister Sensors in Testbench\n");
register_sensorInTestbench(&tb, &s_statorVoltage, &csvr_statorVoltage);
register_sensorInTestbench(&tb, &s_statorCurrent_1, &csvr_statorCurrent_1);
register_sensorInTestbench(&tb, &s_statorCurrent_2, &csvr_statorCurrent_2);
register_sensorInTestbench(&tb, &s_statorCurrent_3, &csvr_statorCurrent_3);
register_sensorInTestbench(&tb, &s_electromagneticTorque, &csvr_electromagneticTorque);
register_sensorInTestbench(&tb, &s_vibration_1, &csvr_vibration_1);
register_sensorInTestbench(&tb, &s_vibration_2, &csvr_vibration_2);
register_sensorInTestbench(&tb, &s_vibration_3, &csvr_vibration_3);
//register sensor channels
printf("\nRegister Channels in Testbench\n");
register_channelInTestbench(&tb, &c_sa_statorVoltage);
register_channelInTestbench(&tb, &c_sa_statorCurrent_1);
register_channelInTestbench(&tb, &c_sa_statorCurrent_2);
register_channelInTestbench(&tb, &c_sa_statorCurrent_3);
register_channelInTestbench(&tb, &c_sa_electromagneticTorque);
register_channelInTestbench(&tb, &c_sa_vibration_1);
register_channelInTestbench(&tb, &c_sa_vibration_2);
register_channelInTestbench(&tb, &c_sa_vibration_3);
register_channelInTestbench(&tb, &c_aa_statorVoltage);
register_channelInTestbench(&tb, &c_aa_statorCurrent_1);
register_channelInTestbench(&tb, &c_aa_statorCurrent_2);
register_channelInTestbench(&tb, &c_aa_statorCurrent_3);
register_channelInTestbench(&tb, &c_aa_electromagneticTorque);
register_channelInTestbench(&tb, &c_aa_vibration_1);
register_channelInTestbench(&tb, &c_aa_vibration_2);
register_channelInTestbench(&tb, &c_aa_vibration_3);
#else
//No bearing defect
//register agents
printf("\nRegister Agents in Testbench\n");
//TODO: "Test Bench" not "Testbench"
register_agentInTestbench(&tb, &a_statorVoltage);
register_agentInTestbench(&tb, &a_statorCurrent);
register_agentInTestbench(&tb, &a_speed);
register_agentInTestbench(&tb, &a_electromagneticTorque);
register_agentInTestbench(&tb, &a_mechanicalTorque);
register_agentInTestbench(&tb, &a_viabilityMonitor);
//register sensors with their csv-readers
printf("\nRegister Sensors in Testbench\n");
register_sensorInTestbench(&tb, &s_statorVoltage, &csvr_statorVoltage);
register_sensorInTestbench(&tb, &s_statorCurrent, &csvr_statorCurrent);
register_sensorInTestbench(&tb, &s_speed, &csvr_speed);
register_sensorInTestbench(&tb, &s_electromagneticTorque, &csvr_electromagneticTorque);
register_sensorInTestbench(&tb, &s_mechanicalTorque, &csvr_mechanicalTorque);
//register sensor channels
printf("\nRegister Channels in Testbench\n");
register_channelInTestbench(&tb, &c_sa_statorVoltage);
register_channelInTestbench(&tb, &c_sa_statorCurrent);
register_channelInTestbench(&tb, &c_sa_speed);
register_channelInTestbench(&tb, &c_sa_electromagneticTorque);
register_channelInTestbench(&tb, &c_sa_mechanicalTorque);
register_channelInTestbench(&tb, &c_aa_statorVoltage);
register_channelInTestbench(&tb, &c_aa_statorCurrent);
register_channelInTestbench(&tb, &c_aa_speed);
register_channelInTestbench(&tb, &c_aa_electromagneticTorque);
register_channelInTestbench(&tb, &c_aa_mechanicalTorque);
#endif // !MODE_BROKEN
printf("\n\nPress any key to start simulation...\n");
getchar();
//Start
//TODO: read lenght of CSV-Files and pass this number to tb.simulate
#if defined (MODE_NORMAL_UNCHANGED) || defined(MODE_NORMAL_LOADCHANGE)
tb.simulate(60000);
#endif // NORMAL_OPERATION_UNCHANGED || NORMAL_OPERATION_LOADCHANGE
#ifdef MODE_NORMAL_SPEEDCHANGE
tb.simulate(20001); //change speed
#endif // NORMAL_OERATION_SPEEDCHANGE
#ifdef MODE_DRIFT
tb.simulate(100000); //drift + load change (new)
#endif // MODE_DRIFT
#if defined(MODE_BROKEN) || defined(MODE_HEALTHY)
tb.simulate(128000); //bearingDefect
#endif // defined(MODE_BROKEN) || defined(MODE_HEALTHY)
printf("\nSimulation has finished\n");
getchar();
}

File Metadata

Mime Type
text/x-c
Expires
Sun, Mar 1, 10:18 PM (1 d, 12 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
281442
Default Alt Text
main_motor_old.cpp (57 KB)

Event Timeline