UniSet
1.4.0
|
#include <ModbusServer.h>
Открытые члены | |
void | initLog (UniSetTypes::Configuration *conf, const std::string name, const std::string logfile="") |
void | setLog (DebugStream &dlog) |
virtual ModbusRTU::mbErrCode | receive (ModbusRTU::ModbusAddr addr, timeout_t msecTimeout)=0 |
timeout_t | setAfterSendPause (timeout_t msec) |
timeout_t | setReplyTimeout (timeout_t msec) |
void | setRecvTimeout (timeout_t msec) |
void | setSleepPause (timeout_t usec) |
void | setCRCNoCheckit (bool set) |
bool | isCRCNoCheckit () |
void | setBroadcastMode (bool set) |
bool | getBroadcastMode () |
void | setCleanBeforeSend (bool set) |
bool | getCleanBeforeSend () |
virtual void | cleanupChannel () |
virtual void | terminate () |
Открытые статические члены | |
static ModbusRTU::mbErrCode | replySetDateTime (ModbusRTU::SetDateTimeMessage &query, ModbusRTU::SetDateTimeRetMessage &reply, DebugStream *dlog=0) |
static ModbusRTU::mbErrCode | replyFileTransfer (const std::string fname, ModbusRTU::FileTransferMessage &query, ModbusRTU::FileTransferRetMessage &reply, DebugStream *dlog=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 | 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 int | 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 | pre_send_request (ModbusRTU::ModbusMessage &request) |
virtual ModbusRTU::mbErrCode | post_send_request (ModbusRTU::ModbusMessage &request) |
virtual ModbusRTU::mbErrCode | processing (ModbusRTU::ModbusMessage &buf) |
ModbusRTU::mbErrCode | recv (ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusMessage &buf, timeout_t timeout) |
ModbusRTU::mbErrCode | recv_pdu (ModbusRTU::ModbusMessage &rbuf, timeout_t timeout) |
void | printProcessingTime () |
Защищенные данные | |
UniSetTypes::uniset_mutex | recvMutex |
timeout_t | recvTimeOut_ms |
timeout_t | replyTimeout_ms |
timeout_t | aftersend_msec |
timeout_t | sleepPause_usec |
bool | onBroadcast |
bool | crcNoCheckit |
bool | cleanBeforeSend |
PassiveTimer | tmProcessing |
DebugStream | dlog |
Modbus server interface
virtual ModbusRTU::mbErrCode ModbusServer::diagnostics | ( | ModbusRTU::DiagnosticMessage & | query, |
ModbusRTU::DiagnosticRetMessage & | reply | ||
) | [protected, pure virtual] |
Обработка запроса на запись данных (0x08).
query | - запрос |
reply | - ответ. Заполняется в обработчике. |
Замещается в ModbusRTUSlaveSlot и ModbusTCPServerSlot.
virtual ModbusRTU::mbErrCode ModbusServer::fileTransfer | ( | ModbusRTU::FileTransferMessage & | query, |
ModbusRTU::FileTransferRetMessage & | reply | ||
) | [protected, pure virtual] |
Передача файла (0x66)
query | - запрос |
reply | - ответ. Заполняется в обработчике. |
Замещается в ModbusRTUSlaveSlot и ModbusTCPServerSlot.
virtual ModbusRTU::mbErrCode ModbusServer::forceMultipleCoils | ( | ModbusRTU::ForceCoilsMessage & | query, |
ModbusRTU::ForceCoilsRetMessage & | reply | ||
) | [protected, pure virtual] |
Обработка запроса на запись данных (0x0F).
query | - запрос |
reply | - ответ. Заполняется в обработчике. |
Замещается в ModbusRTUSlaveSlot и ModbusTCPServerSlot.
virtual ModbusRTU::mbErrCode ModbusServer::forceSingleCoil | ( | ModbusRTU::ForceSingleCoilMessage & | query, |
ModbusRTU::ForceSingleCoilRetMessage & | reply | ||
) | [protected, pure virtual] |
Обработка запроса на запись данных (0x05).
query | - запрос |
reply | - ответ. Заполняется в обработчике. |
Замещается в ModbusRTUSlaveSlot и ModbusTCPServerSlot.
virtual int ModbusServer::getNextData | ( | unsigned char * | buf, |
int | len | ||
) | [protected, pure virtual] |
get next data block from channel ot recv buffer
begin | - get from position |
buf | - buffer for data |
len | - size of buf |
Замещается в ModbusRTUSlave и ModbusTCPServer.
Используется в recv().
virtual ModbusRTU::mbErrCode ModbusServer::journalCommand | ( | ModbusRTU::JournalCommandMessage & | query, |
ModbusRTU::JournalCommandRetMessage & | reply | ||
) | [protected, pure virtual] |
Обработка запроса по журналу (0x65)
query | - запрос |
reply | - ответ. Заполняется в обработчике. |
Замещается в ModbusRTUSlaveSlot и ModbusTCPServerSlot.
virtual ModbusRTU::mbErrCode ModbusServer::readCoilStatus | ( | ModbusRTU::ReadCoilMessage & | query, |
ModbusRTU::ReadCoilRetMessage & | reply | ||
) | [protected, pure virtual] |
Обработка запроса на чтение данных (0x01).
query | - запрос |
reply | - ответ. Заполняется в обработчике. |
Замещается в ModbusRTUSlaveSlot и ModbusTCPServerSlot.
virtual ModbusRTU::mbErrCode ModbusServer::readInputRegisters | ( | ModbusRTU::ReadInputMessage & | query, |
ModbusRTU::ReadInputRetMessage & | reply | ||
) | [protected, pure virtual] |
Обработка запроса на чтение данных (0x04).
query | - запрос |
reply | - ответ. Заполняется в обработчике. |
Замещается в ModbusRTUSlaveSlot и ModbusTCPServerSlot.
virtual ModbusRTU::mbErrCode ModbusServer::readInputStatus | ( | ModbusRTU::ReadInputStatusMessage & | query, |
ModbusRTU::ReadInputStatusRetMessage & | reply | ||
) | [protected, pure virtual] |
Обработка запроса на чтение данных (0x02).
query | - запрос |
reply | - ответ. Заполняется в обработчике. |
Замещается в ModbusRTUSlaveSlot и ModbusTCPServerSlot.
virtual ModbusRTU::mbErrCode ModbusServer::readOutputRegisters | ( | ModbusRTU::ReadOutputMessage & | query, |
ModbusRTU::ReadOutputRetMessage & | reply | ||
) | [protected, pure virtual] |
Обработка запроса на чтение данных (0x03).
query | - запрос |
reply | - ответ. Заполняется в обработчике. |
Замещается в ModbusRTUSlaveSlot и ModbusTCPServerSlot.
virtual ModbusRTU::mbErrCode ModbusServer::receive | ( | ModbusRTU::ModbusAddr | addr, |
timeout_t | msecTimeout | ||
) | [pure virtual] |
обработать очередное сообщение
addr | - адрес для которого принимать сообщения |
msecTimeout | - время ожидания прихода очередного сообщения в мсек. |
Замещается в ModbusRTUSlave и ModbusTCPServer.
mbErrCode ModbusServer::recv | ( | ModbusRTU::ModbusAddr | addr, |
ModbusRTU::ModbusMessage & | buf, | ||
timeout_t | timeout | ||
) | [protected] |
принять сообщение из канала
Перекрестные ссылки ModbusRTU::ModbusHeader::addr, PassiveTimer::checkTime(), DebugStream::debugging(), getNextData(), onBroadcast, setChannelTimeout(), sleepPause_usec и UniSetTimer::WaitUpTime.
Используется в ModbusTCPServer::receive() и ModbusRTUSlave::receive().
virtual ModbusRTU::mbErrCode ModbusServer::remoteService | ( | ModbusRTU::RemoteServiceMessage & | query, |
ModbusRTU::RemoteServiceRetMessage & | reply | ||
) | [protected, pure virtual] |
Вызов удалённого сервиса (0x53)
query | - запрос |
reply | - ответ. Заполняется в обработчике. |
Замещается в ModbusRTUSlaveSlot и ModbusTCPServerSlot.
ModbusRTU::mbErrCode ModbusServer::replyFileTransfer | ( | const std::string | fname, |
ModbusRTU::FileTransferMessage & | query, | ||
ModbusRTU::FileTransferRetMessage & | reply, | ||
DebugStream * | dlog = 0 |
||
) | [static] |
Вспомогательная функция реализующая обработку передачи файла
fname | - запрашиваемый файл. |
query | - запрос |
reply | - ответ |
Перекрестные ссылки DebugStream::debugging(), ModbusRTU::FileTransferMessage::numfile, ModbusRTU::FileTransferMessage::numpacket и ModbusRTU::FileTransferRetMessage::set().
ModbusRTU::mbErrCode ModbusServer::replySetDateTime | ( | ModbusRTU::SetDateTimeMessage & | query, |
ModbusRTU::SetDateTimeRetMessage & | reply, | ||
DebugStream * | dlog = 0 |
||
) | [static] |
Вспомогательная функция реализующая обработку запроса на установку времени. Основана на использовании gettimeofday и settimeofday.
Перекрестные ссылки ModbusRTU::SetDateTimeMessage::century, ModbusRTU::SetDateTimeMessage::day, DebugStream::debugging(), ModbusRTU::SetDateTimeMessage::hour, ModbusRTU::SetDateTimeMessage::min, ModbusRTU::SetDateTimeMessage::mon, ModbusRTU::SetDateTimeMessage::sec и ModbusRTU::SetDateTimeMessage::year.
mbErrCode ModbusServer::send | ( | ModbusRTU::ModbusMessage & | buf | ) | [protected, virtual] |
послать сообщение(ответ) в канал
Перекрестные ссылки aftersend_msec, PassiveTimer::checkTime(), DebugStream::debugging(), PassiveTimer::getInterval(), ModbusRTU::ModbusMessage::len и msleep().
Используется в ModbusTCPServer::receive() и ModbusRTUSlave::receive().
timeout_t ModbusServer::setAfterSendPause | ( | timeout_t | msec | ) |
virtual void ModbusServer::setChannelTimeout | ( | timeout_t | msec | ) | [protected, pure virtual] |
virtual ModbusRTU::mbErrCode ModbusServer::setDateTime | ( | ModbusRTU::SetDateTimeMessage & | query, |
ModbusRTU::SetDateTimeRetMessage & | reply | ||
) | [protected, pure virtual] |
Обработка запроса по установке даты и времени (0x50)
query | - запрос |
reply | - ответ. Заполняется в обработчике. |
Замещается в ModbusRTUSlaveSlot и ModbusTCPServerSlot.
void ModbusServer::setRecvTimeout | ( | timeout_t | msec | ) |
установить время ожидания по умолчанию
Перекрестные ссылки recvTimeOut_ms и UniSetTimer::WaitUpTime.
timeout_t ModbusServer::setReplyTimeout | ( | timeout_t | msec | ) |
Установка таймаута на формирование ответа
Перекрестные ссылки replyTimeout_ms, PassiveTimer::setTiming() и UniSetTimer::WaitUpTime.
void ModbusServer::setSleepPause | ( | timeout_t | usec | ) | [inline] |
установить паузу при ожидании символа
Перекрестные ссылки sleepPause_usec.
virtual ModbusRTU::mbErrCode ModbusServer::writeOutputRegisters | ( | ModbusRTU::WriteOutputMessage & | query, |
ModbusRTU::WriteOutputRetMessage & | reply | ||
) | [protected, pure virtual] |
Обработка запроса на запись данных (0x10).
query | - запрос |
reply | - ответ. Заполняется в обработчике. |
Замещается в ModbusRTUSlaveSlot и ModbusTCPServerSlot.
virtual ModbusRTU::mbErrCode ModbusServer::writeOutputSingleRegister | ( | ModbusRTU::WriteSingleOutputMessage & | query, |
ModbusRTU::WriteSingleOutputRetMessage & | reply | ||
) | [protected, pure virtual] |
Обработка запроса на запись данных (0x06).
query | - запрос |
reply | - ответ. Заполняется в обработчике. |
Замещается в ModbusRTUSlaveSlot и ModbusTCPServerSlot.
timeout_t ModbusServer::aftersend_msec [protected] |
пауза после посылки ответа
Используется в ModbusTCPServer::receive(), send() и setAfterSendPause().
bool ModbusServer::onBroadcast [protected] |
включен режим работы с broadcst-сообщениями
Используется в recv().
timeout_t ModbusServer::recvTimeOut_ms [protected] |
таймаут на приём
Используется в setRecvTimeout().
timeout_t ModbusServer::replyTimeout_ms [protected] |
таймаут на формирование ответа
Используется в setReplyTimeout().
timeout_t ModbusServer::sleepPause_usec [protected] |
пауза между попытками чтения символа из канала
Используется в recv() и setSleepPause().