68 lines
2.1 KiB
C++
68 lines
2.1 KiB
C++
|
|
/*
|
|||
|
|
* ModBusRtuSetup.hh
|
|||
|
|
*
|
|||
|
|
* Created on: 30 июн. 2020 г.
|
|||
|
|
* 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 {
|
|||
|
|
|
|||
|
|
//!Драйвер протокола обмена 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; //!<Порт Modbus.
|
|||
|
|
Environment::SignalId address; //!<Адрес на шине Modbus RTU.
|
|||
|
|
Environment::StatusId enable; //!<Разрешение присвоения адреса.
|
|||
|
|
Environment::Id memory; //!<Cистемный идентификатор аллокатора памяти
|
|||
|
|
|
|||
|
|
/* Output links */
|
|||
|
|
Environment::Id modbus_rtu; //!<Протокол Modbus RTU.
|
|||
|
|
Environment::Id crc_error; //!<Ошибка контрольной суммы.
|
|||
|
|
Environment::Id incorrect_request; //!<Некорректный запрос.
|
|||
|
|
Environment::Id packet_counter; //!<Счетчик пакетов.
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct Setting {
|
|||
|
|
uint16_t address; //!<Адрес на шине MODBUS (если == 0 то адрес определяется 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_ */
|