Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
iv::comms::modbus::ModbusCommunicationRtuProtocol Class Referencefinal

#include <ModbusCommunicationRtuProtocol.hpp>

Inheritance diagram for iv::comms::modbus::ModbusCommunicationRtuProtocol:
[legend]
Collaboration diagram for iv::comms::modbus::ModbusCommunicationRtuProtocol:
[legend]

Public Member Functions

 ModbusCommunicationRtuProtocol ()=delete
 
 ModbusCommunicationRtuProtocol (const std::shared_ptr< iv::comms::ICommunicationDriver > &driver, const iv::model::comms::modbus::Settings &settings, const std::map< iv::types::comms::modbus::modbusAddressAndFunction, std::vector< std::shared_ptr< iv::channels::AbstractChannel > > > &channelsOrderedByAddress, const iv::types::networkId &netId, const std::weak_ptr< iv::diamar::AppFailuresLoggerManager > &appFailuresLoggerManager, std::weak_ptr< iv::channels::AbstractChannel > &heartbeatChannel)
 
 ModbusCommunicationRtuProtocol (const ModbusCommunicationRtuProtocol &other)=delete
 
 ModbusCommunicationRtuProtocol (ModbusCommunicationRtuProtocol &&other)=delete
 
 ~ModbusCommunicationRtuProtocol () override=default
 
ModbusCommunicationRtuProtocoloperator= (const ModbusCommunicationRtuProtocol &other)=delete
 
ModbusCommunicationRtuProtocoloperator= (ModbusCommunicationRtuProtocol &&other)=delete
 
bool writeQueries () override
 
bool readQueries () override
 
bool isOnline () override
 
std::optional< iv::types::comms::modbus::registerValuegetAddressValue (const iv::types::comms::modbus::modbusAddressAndFunction &addressAndFunct)
 
void emptyGrid ()
 

Protected Member Functions

void buildAllQueries (const std::map< iv::types::comms::modbus::modbusAddressAndFunction, std::vector< std::shared_ptr< iv::channels::AbstractChannel > > > &channels, const iv::types::networkId &netId, bool forceContinuousRegisters)
 

Protected Attributes

iv::model::comms::modbus::Settings m_modbusSettings
 
std::vector< iv::comms::modbus::ModbusQueryMessagem_queriesCoils
 
std::vector< iv::comms::modbus::ModbusQueryMessagem_queriesDiscreteInputs
 
std::vector< iv::comms::modbus::ModbusQueryMessagem_queriesInputRegisters
 
std::vector< iv::comms::modbus::ModbusQueryMessagem_queriesHoldingRegisters
 
std::vector< iv::comms::modbus::ModbusQueryMessagem_queriesWriteCoils
 
std::vector< iv::comms::modbus::ModbusQueryMessagem_queriesWriteRegisters
 
std::map< iv::types::comms::modbus::modbusAddressAndFunction, std::optional< iv::types::comms::modbus::registerValue > > m_valueAtAddress
 
std::weak_ptr< iv::channels::AbstractChannelm_heartbeatChannel
 
std::weak_ptr< iv::diamar::AppFailuresLoggerManagerm_appFailuresLoggerManager
 
iv::types::networkId m_networkId
 
std::shared_ptr< iv::comms::ICommunicationDriverm_driver
 

Private Member Functions

void processModbusResponse (const iv::comms::modbus::ModbusQueryMessage &query, iv::comms::modbus::ModbusResponseMessage response)
 
bool prvProcessQueries (const std::vector< iv::comms::modbus::ModbusQueryMessage > &queries)
 Process the queries.
 
std::vector< iv::comms::modbus::ModbusQueryMessagebuildSpecificQuery (const std::vector< std::shared_ptr< iv::channels::AbstractChannel > > &chVectOrderedByAddress, uint16_t maxRegPerQuery, iv::comms::modbus::eFunctionCode mbFunction, const iv::types::networkId &netId, bool forceContinuousRegisters=false) const
 

Static Private Member Functions

static void classifyChannelsMap (const std::map< iv::types::comms::modbus::modbusAddressAndFunction, std::vector< std::shared_ptr< iv::channels::AbstractChannel > > > &channelsByAddress, std::vector< std::shared_ptr< iv::channels::AbstractChannel > > &readCoils, std::vector< std::shared_ptr< iv::channels::AbstractChannel > > &readDiscreteInputs, std::vector< std::shared_ptr< iv::channels::AbstractChannel > > &readInputRegisters, std::vector< std::shared_ptr< iv::channels::AbstractChannel > > &readHoldingRegisters, std::vector< std::shared_ptr< iv::channels::AbstractChannel > > &writeCoils, std::vector< std::shared_ptr< iv::channels::AbstractChannel > > &writeHoldingRegisters, const iv::types::networkId &netId)
 

Constructor & Destructor Documentation

◆ ModbusCommunicationRtuProtocol() [1/4]

iv::comms::modbus::ModbusCommunicationRtuProtocol::ModbusCommunicationRtuProtocol ( )
delete

◆ ModbusCommunicationRtuProtocol() [2/4]

iv::comms::modbus::ModbusCommunicationRtuProtocol::ModbusCommunicationRtuProtocol ( const std::shared_ptr< iv::comms::ICommunicationDriver > & driver,
const iv::model::comms::modbus::Settings & settings,
const std::map< iv::types::comms::modbus::modbusAddressAndFunction, std::vector< std::shared_ptr< iv::channels::AbstractChannel > > > & channelsOrderedByAddress,
const iv::types::networkId & netId,
const std::weak_ptr< iv::diamar::AppFailuresLoggerManager > & appFailuresLoggerManager,
std::weak_ptr< iv::channels::AbstractChannel > & heartbeatChannel )
explicit

◆ ModbusCommunicationRtuProtocol() [3/4]

iv::comms::modbus::ModbusCommunicationRtuProtocol::ModbusCommunicationRtuProtocol ( const ModbusCommunicationRtuProtocol & other)
delete

◆ ModbusCommunicationRtuProtocol() [4/4]

iv::comms::modbus::ModbusCommunicationRtuProtocol::ModbusCommunicationRtuProtocol ( ModbusCommunicationRtuProtocol && other)
delete

◆ ~ModbusCommunicationRtuProtocol()

iv::comms::modbus::ModbusCommunicationRtuProtocol::~ModbusCommunicationRtuProtocol ( )
overridedefault

Member Function Documentation

◆ buildAllQueries()

void iv::comms::modbus::comms::modbus::AbstractModbusCommunicationProtocol::buildAllQueries ( const std::map< iv::types::comms::modbus::modbusAddressAndFunction, std::vector< std::shared_ptr< iv::channels::AbstractChannel > > > & channels,
const iv::types::networkId & netId,
bool forceContinuousRegisters )
protectedinherited

TODO RAG: Esta opción genera problemas si tienes un canal de un tipo que ya de por si es mayor a 1 registro. ej: Float, Dint, Qint, etc. ¿Descartamos ese canal de la lista?

◆ buildSpecificQuery()

std::vector< iv::comms::modbus::ModbusQueryMessage > iv::comms::modbus::AbstractModbusCommunicationProtocol::buildSpecificQuery ( const std::vector< std::shared_ptr< iv::channels::AbstractChannel > > & chVectOrderedByAddress,
uint16_t maxRegPerQuery,
iv::comms::modbus::eFunctionCode mbFunction,
const iv::types::networkId & netId,
bool forceContinuousRegisters = false ) const
nodiscardprivateinherited

◆ classifyChannelsMap()

void iv::comms::modbus::AbstractModbusCommunicationProtocol::classifyChannelsMap ( const std::map< iv::types::comms::modbus::modbusAddressAndFunction, std::vector< std::shared_ptr< iv::channels::AbstractChannel > > > & channelsByAddress,
std::vector< std::shared_ptr< iv::channels::AbstractChannel > > & readCoils,
std::vector< std::shared_ptr< iv::channels::AbstractChannel > > & readDiscreteInputs,
std::vector< std::shared_ptr< iv::channels::AbstractChannel > > & readInputRegisters,
std::vector< std::shared_ptr< iv::channels::AbstractChannel > > & readHoldingRegisters,
std::vector< std::shared_ptr< iv::channels::AbstractChannel > > & writeCoils,
std::vector< std::shared_ptr< iv::channels::AbstractChannel > > & writeHoldingRegisters,
const iv::types::networkId & netId )
staticprivateinherited

◆ emptyGrid()

void iv::comms::modbus::AbstractModbusCommunicationProtocol::emptyGrid ( )
inherited

◆ getAddressValue()

std::optional< iv::types::comms::modbus::registerValue > iv::comms::modbus::AbstractModbusCommunicationProtocol::getAddressValue ( const iv::types::comms::modbus::modbusAddressAndFunction & addressAndFunct)
inherited

◆ isOnline()

bool iv::comms::modbus::AbstractModbusCommunicationProtocol::isOnline ( )
inlinenodiscardoverridevirtualinherited

◆ operator=() [1/2]

ModbusCommunicationRtuProtocol & iv::comms::modbus::ModbusCommunicationRtuProtocol::operator= ( const ModbusCommunicationRtuProtocol & other)
delete

◆ operator=() [2/2]

ModbusCommunicationRtuProtocol & iv::comms::modbus::ModbusCommunicationRtuProtocol::operator= ( ModbusCommunicationRtuProtocol && other)
delete

◆ processModbusResponse()

void iv::comms::modbus::ModbusCommunicationRtuProtocol::processModbusResponse ( const iv::comms::modbus::ModbusQueryMessage & query,
iv::comms::modbus::ModbusResponseMessage response )
private

◆ prvProcessQueries()

bool iv::comms::modbus::ModbusCommunicationRtuProtocol::prvProcessQueries ( const std::vector< iv::comms::modbus::ModbusQueryMessage > & queries)
private

Process the queries.

Parameters
queriesThe queries to process.
Returns
True if all queries were successful, false otherwise.
Note
The success of the queries is determined by the success of the response.

◆ readQueries()

bool iv::comms::modbus::ModbusCommunicationRtuProtocol::readQueries ( )
overridevirtual

◆ writeQueries()

bool iv::comms::modbus::ModbusCommunicationRtuProtocol::writeQueries ( )
overridevirtual

Member Data Documentation

◆ m_appFailuresLoggerManager

std::weak_ptr<iv::diamar::AppFailuresLoggerManager> iv::comms::modbus::AbstractModbusCommunicationProtocol::m_appFailuresLoggerManager
protectedinherited

◆ m_driver

std::shared_ptr<iv::comms::ICommunicationDriver> iv::comms::ICommunicationProtocol::m_driver
protectedinherited

◆ m_heartbeatChannel

std::weak_ptr<iv::channels::AbstractChannel> iv::comms::modbus::AbstractModbusCommunicationProtocol::m_heartbeatChannel
protectedinherited

◆ m_modbusSettings

iv::model::comms::modbus::Settings iv::comms::modbus::AbstractModbusCommunicationProtocol::m_modbusSettings
protectedinherited

◆ m_networkId

iv::types::networkId iv::comms::modbus::AbstractModbusCommunicationProtocol::m_networkId
protectedinherited

◆ m_queriesCoils

std::vector<iv::comms::modbus::ModbusQueryMessage> iv::comms::modbus::AbstractModbusCommunicationProtocol::m_queriesCoils
protectedinherited

Queries para leer coils.

◆ m_queriesDiscreteInputs

std::vector<iv::comms::modbus::ModbusQueryMessage> iv::comms::modbus::AbstractModbusCommunicationProtocol::m_queriesDiscreteInputs
protectedinherited

Queries para leer discrete inputs.

◆ m_queriesHoldingRegisters

std::vector<iv::comms::modbus::ModbusQueryMessage> iv::comms::modbus::AbstractModbusCommunicationProtocol::m_queriesHoldingRegisters
protectedinherited

Queries para leer holding registers.

◆ m_queriesInputRegisters

std::vector<iv::comms::modbus::ModbusQueryMessage> iv::comms::modbus::AbstractModbusCommunicationProtocol::m_queriesInputRegisters
protectedinherited

Queries para leer input registers.

◆ m_queriesWriteCoils

std::vector<iv::comms::modbus::ModbusQueryMessage> iv::comms::modbus::AbstractModbusCommunicationProtocol::m_queriesWriteCoils
protectedinherited

Queries para escribir uno o multiples coils.

◆ m_queriesWriteRegisters

std::vector<iv::comms::modbus::ModbusQueryMessage> iv::comms::modbus::AbstractModbusCommunicationProtocol::m_queriesWriteRegisters
protectedinherited

Queries para escribir uno o multiples registros.

◆ m_valueAtAddress

std::map<iv::types::comms::modbus::modbusAddressAndFunction, std::optional<iv::types::comms::modbus::registerValue> > iv::comms::modbus::AbstractModbusCommunicationProtocol::m_valueAtAddress
protectedinherited

Valor contenido en cada registro.


The documentation for this class was generated from the following files: