|
UniSet
2.6.0
|
Открытые типы | |
|
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< DebugStream > | log () |
| 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< DebugStream > | dlog |
| 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 | - адрес который ищем |
| 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 |
Замещается в 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 | - время ожидания прихода очередного сообщения в мсек. |
| 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] |
пауза между попытками чтения символа из канала
1.7.6.1