MotorControlModuleSDFM_TMS3.../Projects/EFC_Communication/UMLibrary/application/schematic/SignalMath.hh
2024-06-07 11:12:56 +03:00

184 lines
5.2 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* SignalMathSetup.hh
*
* Created on: 14 мая 2020 г.
* Author: LeonidTitov
*/
#ifndef UMLIBRARY_APPLICATION_SCHEMATIC_SIGNALMATHSETUP_HH_
#define UMLIBRARY_APPLICATION_SCHEMATIC_SIGNALMATHSETUP_HH_
#include "../ISetupStep.hh"
#include "../../schematic/SignalMath.hpp"
namespace application { namespace schematic {
//!Абсолютное значение сигнала. Реализует функцию abs = |a|.
struct SignalAbs : public ISetupStep {
systemic::ISignal * value_a = nullptr;
bool input( Environment & env );
void build( Environment & env );
struct Links {
Environment::SignalId a;
Environment::SignalId abs; //!<Константный сигнал.
};
const Links & links;
SignalAbs( const Links & links ) : links(links) {}
};
//!Разница двух сигналов. Реализует функцию subtraction = a - b.
struct SignalSubtraction : public ISetupStep {
systemic::ISignal * value_a = nullptr;
systemic::ISignal * value_b = nullptr;
bool input( Environment & env );
void build( Environment & env );
struct Links {
Environment::SignalId a; //!<Сигнал "a".
Environment::SignalId b; //!<Сигнал "b".
Environment::SignalId subtraction; //!<Разница двух сигналов.
};
const Links & links;
SignalSubtraction( const Links & links ) : links(links) {}
};
//!Сумма двух сигналов. Реализует функцию addition = a + b.
struct SignalAddition : public ISetupStep {
systemic::ISignal * value_a = nullptr;
systemic::ISignal * value_b = nullptr;
bool input( Environment & env );
void build( Environment & env );
struct Links {
Environment::SignalId a; //!<Сигнал "a".
Environment::SignalId b; //!<Сигнал "b".
Environment::SignalId addition; //!<Сумма двух сигналов.
};
const Links & links;
SignalAddition( const Links & links ) : links(links) {}
};
//!Произведение двух сигналов. Реализует функцию multiplication = a * b.
struct SignalMultiplication : public ISetupStep {
systemic::ISignal * value_a = nullptr;
systemic::ISignal * value_b = nullptr;
bool input( Environment & env );
void build( Environment & env );
struct Links {
Environment::SignalId a; //!<Сигнал "a".
Environment::SignalId b; //!<Сигнал "b".
Environment::SignalId multiplication; //!<Произведение двух сигналов.
};
const Links & links;
SignalMultiplication( const Links & links ) : links(links) {}
};
//!Деление двух сигналов. Реализует функцию division = a / b.
struct SignalDivision : public ISetupStep {
systemic::ISignal * value_a = nullptr;
systemic::ISignal * value_b = nullptr;
bool input( Environment & env );
void build( Environment & env );
struct Links {
Environment::SignalId a; //!<Сигнал "a".
Environment::SignalId b; //!<Сигнал "b".
Environment::SignalId division; //!<Деление двух сигналов.
};
const Links & links;
SignalDivision( const Links & links ) : links(links) {}
};
//!Квадратный корень сигнала. Реализует функцию sqrt = sqrt(a).
struct SignalSquareRoot : public ISetupStep {
systemic::ISignal * value_a = nullptr;
bool input( Environment & env );
void build( Environment & env );
struct Links {
Environment::SignalId a; //!<Сигнал "a".
Environment::SignalId sqrt; //!<Квадратный корень сигнала "а".
};
const Links & links;
SignalSquareRoot( const Links & links ) : links(links) {}
};
////!Квадрат сигнала. Реализует функцию sqr = a^2.
//struct SignalSquare : public ISetupStep {
//
// systemic::ISignal * value_a = nullptr;
//
// bool input( Environment & env );
// void build( Environment & env );
//
// struct Links {
// Environment::SignalId a; //!<Сигнал "a".
// Environment::SignalId sqr; //!<Квадрат сигнала "а".
// };
//
// const Links & links;
//
// SignalSquare( const Links & links ) : links(links) {}
//
//};
//!Возведение сигнала в степень. Реализует функцию power = pow(a, b).
struct SignalPower : public ISetupStep {
systemic::ISignal * value_a = nullptr;
systemic::ISignal * value_b = nullptr;
bool input( Environment & env );
void build( Environment & env );
struct Links {
Environment::SignalId a; //!<Сигнал "a".
Environment::SignalId b; //!<Сигнал "b".
Environment::SignalId power; //!<Степень "b" сигнала "а".
};
const Links & links;
SignalPower( const Links & links ) : links(links) {}
};
}
}
#endif /* UMLIBRARY_APPLICATION_SCHEMATIC_SIGNALMATH_HH_ */