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

#include <ModbusCommunicationTcpProtocol.hpp>

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

Public Member Functions

 ModbusCommunicationTcpProtocol ()=delete
 
 ModbusCommunicationTcpProtocol (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 std::weak_ptr< iv::diamar::AppFailuresLoggerManager > &appFailuresLoggerManager, const iv::types::networkId &netId, std::weak_ptr< iv::channels::AbstractChannel > &heartbeatChannel)
 
 ModbusCommunicationTcpProtocol (const ModbusCommunicationTcpProtocol &other)=delete
 
 ModbusCommunicationTcpProtocol (ModbusCommunicationTcpProtocol &&other)=delete
 
 ~ModbusCommunicationTcpProtocol () override=default
 
ModbusCommunicationTcpProtocoloperator= (const ModbusCommunicationTcpProtocol &other)=delete
 
ModbusCommunicationTcpProtocoloperator= (ModbusCommunicationTcpProtocol &&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 (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)
 

Private Attributes

std::map< iv::types::comms::tcpPacketId, std::vector< iv::types::comms::modbus::modbusAddress > > m_transactionIdToAddress
 

Constructor & Destructor Documentation

◆ ModbusCommunicationTcpProtocol() [1/4]

iv::comms::modbus::ModbusCommunicationTcpProtocol::ModbusCommunicationTcpProtocol ( )
delete

◆ ModbusCommunicationTcpProtocol() [2/4]

iv::comms::modbus::ModbusCommunicationTcpProtocol::ModbusCommunicationTcpProtocol ( 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 std::weak_ptr< iv::diamar::AppFailuresLoggerManager > & appFailuresLoggerManager,
const iv::types::networkId & netId,
std::weak_ptr< iv::channels::AbstractChannel > & heartbeatChannel )

◆ ModbusCommunicationTcpProtocol() [3/4]

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

◆ ModbusCommunicationTcpProtocol() [4/4]

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

◆ ~ModbusCommunicationTcpProtocol()

iv::comms::modbus::ModbusCommunicationTcpProtocol::~ModbusCommunicationTcpProtocol ( )
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]

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

◆ operator=() [2/2]

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

◆ processModbusResponse()

void iv::comms::modbus::ModbusCommunicationTcpProtocol::processModbusResponse ( iv::comms::modbus::ModbusResponseMessage response)
private

◆ prvProcessQueries()

bool iv::comms::modbus::ModbusCommunicationTcpProtocol::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.
The response may not match the query just sent.

◆ readQueries()

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

◆ writeQueries()

bool iv::comms::modbus::ModbusCommunicationTcpProtocol::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_transactionIdToAddress

std::map<iv::types::comms::tcpPacketId, std::vector<iv::types::comms::modbus::modbusAddress> > iv::comms::modbus::ModbusCommunicationTcpProtocol::m_transactionIdToAddress
private

◆ 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: