UniSet  2.6.0
Открытые типы | Открытые члены | Открытые статические члены | Защищенные члены | Защищенные данные
Класс uniset::ModbusServer
Граф наследования:uniset::ModbusServer:
Inheritance graph
[см. легенду]
Граф связей класса uniset::ModbusServer:
Collaboration graph
[см. легенду]

Полный список членов класса

Открытые типы

typedef sigc::signal
< ModbusRTU::mbErrCode, const
std::unordered_set
< ModbusRTU::ModbusAddr >
, timeout_t > 
PreReceiveSignal
typedef sigc::signal< void,
ModbusRTU::mbErrCode > 
PostReceiveSignal
typedef std::unordered_map
< ModbusRTU::mbErrCode, size_t > 
ExchangeErrorMap

Открытые члены

void initLog (uniset::Configuration *conf, const std::string &name, const std::string &logfile="")
void setLog (std::shared_ptr< DebugStream > dlog)
std::shared_ptr< DebugStreamlog ()
ModbusRTU::mbErrCode receive (const std::unordered_set< ModbusRTU::ModbusAddr > &vaddr, timeout_t msecTimeout)
virtual ModbusRTU::mbErrCode receive_one (const ModbusRTU::ModbusAddr addr, timeout_t msec)
PreReceiveSignal signal_pre_receive ()
PostReceiveSignal signal_post_receive ()
timeout_t setAfterSendPause (timeout_t msec)
timeout_t setReplyTimeout (timeout_t msec)
void setRecvTimeout (timeout_t msec)
void setSleepPause (timeout_t msec)
void setCRCNoCheckit (bool set)
bool isCRCNoCheckit () const
void setBroadcastMode (bool set)
bool getBroadcastMode () const
void setCleanBeforeSend (bool set)
bool getCleanBeforeSend ()
virtual void cleanupChannel ()
virtual void terminate ()
virtual bool isActive () const =0
ExchangeErrorMap getErrorMap ()
size_t getErrCount (ModbusRTU::mbErrCode e)
size_t resetErrCount (ModbusRTU::mbErrCode e, size_t set=0)
size_t getAskCount () const
void resetAskCounter ()

Открытые статические члены

static std::unordered_set
< ModbusRTU::ModbusAddr > 
addr2vaddr (ModbusRTU::ModbusAddr &mbaddr)
static bool checkAddr (const std::unordered_set< ModbusRTU::ModbusAddr > &vaddr, const ModbusRTU::ModbusAddr addr)
static std::string vaddr2str (const std::unordered_set< ModbusRTU::ModbusAddr > &vaddr)
static ModbusRTU::mbErrCode replySetDateTime (ModbusRTU::SetDateTimeMessage &query, ModbusRTU::SetDateTimeRetMessage &reply, std::shared_ptr< DebugStream > dlog=nullptr)
static ModbusRTU::mbErrCode replyFileTransfer (const std::string &fname, ModbusRTU::FileTransferMessage &query, ModbusRTU::FileTransferRetMessage &reply, std::shared_ptr< DebugStream > dlog=nullptr)

Защищенные члены

virtual void iowait (timeout_t usec)
virtual ModbusRTU::mbErrCode realReceive (const std::unordered_set< ModbusRTU::ModbusAddr > &vaddr, timeout_t msecTimeout)=0
virtual ModbusRTU::mbErrCode readCoilStatus (ModbusRTU::ReadCoilMessage &query, ModbusRTU::ReadCoilRetMessage &reply)=0
virtual ModbusRTU::mbErrCode readInputStatus (ModbusRTU::ReadInputStatusMessage &query, ModbusRTU::ReadInputStatusRetMessage &reply)=0
virtual ModbusRTU::mbErrCode readOutputRegisters (ModbusRTU::ReadOutputMessage &query, ModbusRTU::ReadOutputRetMessage &reply)=0
virtual ModbusRTU::mbErrCode readInputRegisters (ModbusRTU::ReadInputMessage &query, ModbusRTU::ReadInputRetMessage &reply)=0
virtual ModbusRTU::mbErrCode forceSingleCoil (ModbusRTU::ForceSingleCoilMessage &query, ModbusRTU::ForceSingleCoilRetMessage &reply)=0
virtual ModbusRTU::mbErrCode writeOutputSingleRegister (ModbusRTU::WriteSingleOutputMessage &query, ModbusRTU::WriteSingleOutputRetMessage &reply)=0
virtual ModbusRTU::mbErrCode forceMultipleCoils (ModbusRTU::ForceCoilsMessage &query, ModbusRTU::ForceCoilsRetMessage &reply)=0
virtual ModbusRTU::mbErrCode writeOutputRegisters (ModbusRTU::WriteOutputMessage &query, ModbusRTU::WriteOutputRetMessage &reply)=0
virtual ModbusRTU::mbErrCode diagnostics (ModbusRTU::DiagnosticMessage &query, ModbusRTU::DiagnosticRetMessage &reply)=0
virtual ModbusRTU::mbErrCode read4314 (ModbusRTU::MEIMessageRDI &query, ModbusRTU::MEIMessageRetRDI &reply)=0
virtual ModbusRTU::mbErrCode journalCommand (ModbusRTU::JournalCommandMessage &query, ModbusRTU::JournalCommandRetMessage &reply)=0
virtual ModbusRTU::mbErrCode setDateTime (ModbusRTU::SetDateTimeMessage &query, ModbusRTU::SetDateTimeRetMessage &reply)=0
virtual ModbusRTU::mbErrCode remoteService (ModbusRTU::RemoteServiceMessage &query, ModbusRTU::RemoteServiceRetMessage &reply)=0
virtual ModbusRTU::mbErrCode fileTransfer (ModbusRTU::FileTransferMessage &query, ModbusRTU::FileTransferRetMessage &reply)=0
virtual size_t getNextData (unsigned char *buf, int len)=0
virtual ModbusRTU::mbErrCode sendData (unsigned char *buf, int len)=0
virtual void setChannelTimeout (timeout_t msec)=0
virtual ModbusRTU::mbErrCode send (ModbusRTU::ModbusMessage &buf)
virtual ModbusRTU::mbErrCode make_adu_header (ModbusRTU::ModbusMessage &request)
virtual ModbusRTU::mbErrCode post_send_request (ModbusRTU::ModbusMessage &request)
virtual ModbusRTU::mbErrCode processing (ModbusRTU::ModbusMessage &buf)
ModbusRTU::mbErrCode recv (const std::unordered_set< ModbusRTU::ModbusAddr > &vaddr, ModbusRTU::ModbusMessage &buf, timeout_t timeout)
ModbusRTU::mbErrCode recv_pdu (ModbusRTU::ModbusMessage &rbuf, timeout_t timeout)
void printProcessingTime ()

Защищенные данные

std::timed_mutex recvMutex
timeout_t recvTimeOut_ms = { 50 }
timeout_t replyTimeout_ms = { 2000 }
timeout_t aftersend_msec = { 0 }
timeout_t sleepPause_msec = { 10 }
bool onBroadcast = { false }
bool crcNoCheckit = { false }
bool cleanBeforeSend = { false }
PassiveTimer tmProcessing
std::shared_ptr< DebugStreamdlog
size_t askCount = { 0 }
ExchangeErrorMap errmap
PreReceiveSignal m_pre_signal
PostReceiveSignal m_post_signal

Подробное описание

Modbus server interface


Методы

bool uniset::ModbusServer::checkAddr ( const std::unordered_set< ModbusRTU::ModbusAddr > &  vaddr,
const ModbusRTU::ModbusAddr  addr 
) [static]

Проверка входит ли данный адрес в список

Аргументы:
vaddr- вектор адресов
addr- адрес который ищем
Возвращает:
TRUE - если найден
Предупреждения:
Если addr=ModbusRTU::BroadcastAddr то всегда возвращается TRUE!
virtual ModbusRTU::mbErrCode uniset::ModbusServer::diagnostics ( ModbusRTU::DiagnosticMessage query,
ModbusRTU::DiagnosticRetMessage reply 
) [protected, pure virtual]

Обработка запроса на запись данных (0x08).

Аргументы:
query- запрос
reply- ответ. Заполняется в обработчике.
Возвращает:
Результат обработки

Замещается в uniset::ModbusTCPSession, uniset::ModbusRTUSlaveSlot и uniset::ModbusTCPServerSlot.

virtual ModbusRTU::mbErrCode uniset::ModbusServer::fileTransfer ( ModbusRTU::FileTransferMessage query,
ModbusRTU::FileTransferRetMessage reply 
) [protected, pure virtual]

Передача файла (0x66)

Аргументы:
query- запрос
reply- ответ. Заполняется в обработчике.
Возвращает:
Результат обработки

Замещается в uniset::ModbusTCPSession, uniset::ModbusRTUSlaveSlot и uniset::ModbusTCPServerSlot.

virtual ModbusRTU::mbErrCode uniset::ModbusServer::forceMultipleCoils ( ModbusRTU::ForceCoilsMessage query,
ModbusRTU::ForceCoilsRetMessage reply 
) [protected, pure virtual]

Обработка запроса на запись данных (0x0F).

Аргументы:
query- запрос
reply- ответ. Заполняется в обработчике.
Возвращает:
Результат обработки

Замещается в uniset::ModbusTCPSession, uniset::ModbusRTUSlaveSlot и uniset::ModbusTCPServerSlot.

virtual ModbusRTU::mbErrCode uniset::ModbusServer::forceSingleCoil ( ModbusRTU::ForceSingleCoilMessage query,
ModbusRTU::ForceSingleCoilRetMessage reply 
) [protected, pure virtual]

Обработка запроса на запись данных (0x05).

Аргументы:
query- запрос
reply- ответ. Заполняется в обработчике.
Возвращает:
Результат обработки

Замещается в uniset::ModbusTCPSession, uniset::ModbusRTUSlaveSlot и uniset::ModbusTCPServerSlot.

virtual size_t uniset::ModbusServer::getNextData ( unsigned char *  buf,
int  len 
) [protected, pure virtual]

get next data block from channel or recv buffer

Аргументы:
begin- get from position
buf- buffer for data
len- size of buf
Возвращает:
real data lenght ( must be <= len )

Замещается в uniset::ModbusTCPServer, uniset::ModbusTCPSession и uniset::ModbusRTUSlave.

virtual ModbusRTU::mbErrCode uniset::ModbusServer::journalCommand ( ModbusRTU::JournalCommandMessage query,
ModbusRTU::JournalCommandRetMessage reply 
) [protected, pure virtual]

Обработка запроса по журналу (0x65)

Аргументы:
query- запрос
reply- ответ. Заполняется в обработчике.
Возвращает:
Результат обработки

Замещается в uniset::ModbusTCPSession, uniset::ModbusRTUSlaveSlot и uniset::ModbusTCPServerSlot.

virtual ModbusRTU::mbErrCode uniset::ModbusServer::read4314 ( ModbusRTU::MEIMessageRDI query,
ModbusRTU::MEIMessageRetRDI reply 
) [protected, pure virtual]

Обработка запроса 43(0x2B).

Аргументы:
query- запрос
reply- ответ. Заполняется в обработчике.
Возвращает:
Результат обработки

Замещается в uniset::ModbusTCPSession, uniset::ModbusRTUSlaveSlot и uniset::ModbusTCPServerSlot.

virtual ModbusRTU::mbErrCode uniset::ModbusServer::readCoilStatus ( ModbusRTU::ReadCoilMessage query,
ModbusRTU::ReadCoilRetMessage reply 
) [protected, pure virtual]

Обработка запроса на чтение данных (0x01).

Аргументы:
query- запрос
reply- ответ. Заполняется в обработчике.
Возвращает:
Результат обработки

Замещается в uniset::ModbusTCPSession, uniset::ModbusRTUSlaveSlot и uniset::ModbusTCPServerSlot.

virtual ModbusRTU::mbErrCode uniset::ModbusServer::readInputRegisters ( ModbusRTU::ReadInputMessage query,
ModbusRTU::ReadInputRetMessage reply 
) [protected, pure virtual]

Обработка запроса на чтение данных (0x04).

Аргументы:
query- запрос
reply- ответ. Заполняется в обработчике.
Возвращает:
Результат обработки

Замещается в uniset::ModbusTCPSession, uniset::ModbusRTUSlaveSlot и uniset::ModbusTCPServerSlot.

virtual ModbusRTU::mbErrCode uniset::ModbusServer::readInputStatus ( ModbusRTU::ReadInputStatusMessage query,
ModbusRTU::ReadInputStatusRetMessage reply 
) [protected, pure virtual]

Обработка запроса на чтение данных (0x02).

Аргументы:
query- запрос
reply- ответ. Заполняется в обработчике.
Возвращает:
Результат обработки

Замещается в uniset::ModbusTCPSession, uniset::ModbusRTUSlaveSlot и uniset::ModbusTCPServerSlot.

virtual ModbusRTU::mbErrCode uniset::ModbusServer::readOutputRegisters ( ModbusRTU::ReadOutputMessage query,
ModbusRTU::ReadOutputRetMessage reply 
) [protected, pure virtual]

Обработка запроса на чтение данных (0x03).

Аргументы:
query- запрос
reply- ответ. Заполняется в обработчике.
Возвращает:
Результат обработки

Замещается в uniset::ModbusTCPSession, uniset::ModbusRTUSlaveSlot и uniset::ModbusTCPServerSlot.

virtual ModbusRTU::mbErrCode uniset::ModbusServer::realReceive ( const std::unordered_set< ModbusRTU::ModbusAddr > &  vaddr,
timeout_t  msecTimeout 
) [protected, pure virtual]

реализация получения очередного сообщения

Замещается в uniset::ModbusTCPServer, uniset::ModbusTCPSession и uniset::ModbusRTUSlave.

mbErrCode uniset::ModbusServer::receive ( const std::unordered_set< ModbusRTU::ModbusAddr > &  vaddr,
timeout_t  msecTimeout 
)

обработать очередное сообщение

Аргументы:
vaddr- вектор адресов для которых принимать сообщения
msecTimeout- время ожидания прихода очередного сообщения в мсек.
Возвращает:
Возвращает код ошибки из ModbusRTU::mbErrCode
mbErrCode uniset::ModbusServer::recv ( const std::unordered_set< ModbusRTU::ModbusAddr > &  vaddr,
ModbusRTU::ModbusMessage buf,
timeout_t  timeout 
) [protected]

принять сообщение из канала

virtual ModbusRTU::mbErrCode uniset::ModbusServer::remoteService ( ModbusRTU::RemoteServiceMessage query,
ModbusRTU::RemoteServiceRetMessage reply 
) [protected, pure virtual]

Вызов удалённого сервиса (0x53)

Аргументы:
query- запрос
reply- ответ. Заполняется в обработчике.
Возвращает:
Результат обработки

Замещается в uniset::ModbusTCPSession, uniset::ModbusRTUSlaveSlot и uniset::ModbusTCPServerSlot.

ModbusRTU::mbErrCode uniset::ModbusServer::replyFileTransfer ( const std::string &  fname,
ModbusRTU::FileTransferMessage query,
ModbusRTU::FileTransferRetMessage reply,
std::shared_ptr< DebugStream dlog = nullptr 
) [static]

Вспомогательная функция реализующая обработку передачи файла

Аргументы:
fname- запрашиваемый файл.
query- запрос
reply- ответ
ModbusRTU::mbErrCode uniset::ModbusServer::replySetDateTime ( ModbusRTU::SetDateTimeMessage query,
ModbusRTU::SetDateTimeRetMessage reply,
std::shared_ptr< DebugStream dlog = nullptr 
) [static]

Вспомогательная функция реализующая обработку запроса на установку времени. Основана на использовании gettimeofday и settimeofday.

mbErrCode uniset::ModbusServer::send ( ModbusRTU::ModbusMessage buf) [protected, virtual]

послать сообщение(ответ) в канал

timeout_t uniset::ModbusServer::setAfterSendPause ( timeout_t  msec)

Установка паузы после посылки

Возвращает:
старое значение
virtual void uniset::ModbusServer::setChannelTimeout ( timeout_t  msec) [protected, pure virtual]

set timeout for receive data

Замещается в uniset::ModbusTCPServer, uniset::ModbusTCPSession и uniset::ModbusRTUSlave.

virtual ModbusRTU::mbErrCode uniset::ModbusServer::setDateTime ( ModbusRTU::SetDateTimeMessage query,
ModbusRTU::SetDateTimeRetMessage reply 
) [protected, pure virtual]

Обработка запроса по установке даты и времени (0x50)

Аргументы:
query- запрос
reply- ответ. Заполняется в обработчике.
Возвращает:
Результат обработки

Замещается в uniset::ModbusTCPSession, uniset::ModbusRTUSlaveSlot и uniset::ModbusTCPServerSlot.

void uniset::ModbusServer::setRecvTimeout ( timeout_t  msec)

установить время ожидания по умолчанию

timeout_t uniset::ModbusServer::setReplyTimeout ( timeout_t  msec)

Установка таймаута на формирование ответа

Возвращает:
старое значение
void uniset::ModbusServer::setSleepPause ( timeout_t  msec) [inline]

установить паузу при ожидании символа

virtual ModbusRTU::mbErrCode uniset::ModbusServer::writeOutputRegisters ( ModbusRTU::WriteOutputMessage query,
ModbusRTU::WriteOutputRetMessage reply 
) [protected, pure virtual]

Обработка запроса на запись данных (0x10).

Аргументы:
query- запрос
reply- ответ. Заполняется в обработчике.
Возвращает:
Результат обработки

Замещается в uniset::ModbusTCPSession, uniset::ModbusRTUSlaveSlot и uniset::ModbusTCPServerSlot.

virtual ModbusRTU::mbErrCode uniset::ModbusServer::writeOutputSingleRegister ( ModbusRTU::WriteSingleOutputMessage query,
ModbusRTU::WriteSingleOutputRetMessage reply 
) [protected, pure virtual]

Обработка запроса на запись данных (0x06).

Аргументы:
query- запрос
reply- ответ. Заполняется в обработчике.
Возвращает:
Результат обработки

Замещается в uniset::ModbusTCPSession, uniset::ModbusRTUSlaveSlot и uniset::ModbusTCPServerSlot.


Данные класса

timeout_t uniset::ModbusServer::aftersend_msec = { 0 } [protected]

пауза после посылки ответа

ExchangeErrorMap uniset::ModbusServer::errmap [protected]

статистика ошибок обмена

bool uniset::ModbusServer::onBroadcast = { false } [protected]

включен режим работы с broadcst-сообщениями

timeout_t uniset::ModbusServer::recvTimeOut_ms = { 50 } [protected]

таймаут на приём

timeout_t uniset::ModbusServer::replyTimeout_ms = { 2000 } [protected]

таймаут на формирование ответа

timeout_t uniset::ModbusServer::sleepPause_msec = { 10 } [protected]

пауза между попытками чтения символа из канала