68 lines
1.9 KiB
C++
68 lines
1.9 KiB
C++
|
|
/*
|
|||
|
|
* ModBusRtuSetup.hh
|
|||
|
|
*
|
|||
|
|
* Created on: 30 <EFBFBD><EFBFBD><EFBFBD>. 2020 <EFBFBD>.
|
|||
|
|
* Author: s.maksimenko
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#ifndef UMLIBRARY_APPLICATION_DRIVERS_MODBUSRTU_HH_
|
|||
|
|
#define UMLIBRARY_APPLICATION_DRIVERS_MODBUSRTUSETUP_HH_
|
|||
|
|
|
|||
|
|
#include <memory_resource>
|
|||
|
|
#include "../ISetupStep.hh"
|
|||
|
|
#include "../../peripheral/IUartPort.hh"
|
|||
|
|
#include "../../systemic/ISignal.hh"
|
|||
|
|
#include "../../systemic/IStatus.hh"
|
|||
|
|
|
|||
|
|
namespace application {
|
|||
|
|
namespace drivers {
|
|||
|
|
|
|||
|
|
//!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Modbus RTU.
|
|||
|
|
class ModbusRtu : public ISetupStep {
|
|||
|
|
|
|||
|
|
typedef systemic::ISignal ISignal;
|
|||
|
|
typedef systemic::IStatus IStatus;
|
|||
|
|
|
|||
|
|
peripheral::IUartPort* mpPort = nullptr;
|
|||
|
|
|
|||
|
|
std::pmr::memory_resource * mpMemRes = nullptr;
|
|||
|
|
|
|||
|
|
ISignal * mpSigAddrModBus = nullptr;
|
|||
|
|
IStatus * mpStsAddrValid = nullptr;
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
bool input ( Environment & env );
|
|||
|
|
void build ( Environment & env );
|
|||
|
|
|
|||
|
|
struct Links {
|
|||
|
|
/* Input links */
|
|||
|
|
Environment::Id uart; //!<<3C><><EFBFBD><EFBFBD> Modbus.
|
|||
|
|
Environment::SignalId address; //!<<3C><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> Modbus RTU.
|
|||
|
|
Environment::StatusId enable; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
Environment::Id memory; //!<C<><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
/* Output links */
|
|||
|
|
Environment::Id modbus_rtu; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Modbus RTU.
|
|||
|
|
Environment::Id crc_error; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
Environment::Id incorrect_request; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
Environment::Id packet_counter; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct Setting {
|
|||
|
|
uint16_t address; //!<<3C><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> MODBUS (<28><><EFBFBD><EFBFBD> == 0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> links.sigAddr)
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const Links & links;
|
|||
|
|
const Setting & cfg;
|
|||
|
|
const configuration::ProcessConfig & params;
|
|||
|
|
|
|||
|
|
ModbusRtu( const Links &, const Setting &, const configuration::ProcessConfig & );
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
}// namespace drivers
|
|||
|
|
}// namespace application
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
#endif /* UMLIBRARY_APPLICATION_DRIVERS_MODBUSRTU_HH_ */
|