MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/application/schematic/SignalMath.hh

184 lines
4.7 KiB
C++

/*
* 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_ */