|
UniSet
2.2.1
|
#include <MBSlave.h>
Классы | |
| struct | BitRegProperty |
| struct | IOProperty |
Открытые типы | |
| enum | AccessMode { amRW, amRO, amWO } |
Открытые члены | |
| MBSlave (const std::unordered_set< ModbusRTU::ModbusAddr > &vaddr, const std::string &dev, const std::string &speed, bool use485=false) | |
| void | setVerbose (bool state) |
| void | setReply (long val) |
| void | setReply2 (long val) |
| void | setReply3 (long val) |
| void | execute () |
| void | setLog (std::shared_ptr< DebugStream > dlog) |
| MBSlave (UniSetTypes::ObjectId objId, UniSetTypes::ObjectId shmID, const std::shared_ptr< SharedMemory > &ic=nullptr, const std::string &prefix="mbs") | |
| long | getAskCount () |
| std::shared_ptr< LogAgregator > | getLogAggregator () |
| std::shared_ptr< DebugStream > | log () |
| virtual UniSetTypes::SimpleInfo * | getInfo (CORBA::Long userparam=0) override |
Открытые статические члены | |
| static std::shared_ptr< MBSlave > | init_mbslave (int argc, const char *const *argv, UniSetTypes::ObjectId shmID, const std::shared_ptr< SharedMemory > &ic=nullptr, const std::string &prefix="mbs") |
| static void | help_print (int argc, const char *const *argv) |
Статические открытые данные | |
| static const int | NoSafetyState = -1 |
Защищенные типы | |
|
typedef std::map < ModbusRTU::RegID, IOProperty > | RegMap |
|
typedef std::unordered_map < ModbusRTU::ModbusAddr, RegMap > | IOMap |
|
typedef std::unordered_map < ModbusRTU::mbErrCode, unsigned int > | ExchangeErrorMap |
|
typedef std::unordered_map < int, std::string > | FileList |
|
typedef std::unordered_map < int, std::string > | MEIValMap |
|
typedef std::unordered_map < int, MEIValMap > | MEIObjIDMap |
|
typedef std::unordered_map < int, MEIObjIDMap > | MEIDevIDMap |
Защищенные члены | |
| void | sigterm (int signo) |
| ModbusRTU::mbErrCode | readCoilStatus (ModbusRTU::ReadCoilMessage &query, ModbusRTU::ReadCoilRetMessage &reply) |
| ModbusRTU::mbErrCode | readInputStatus (ModbusRTU::ReadInputStatusMessage &query, ModbusRTU::ReadInputStatusRetMessage &reply) |
| ModbusRTU::mbErrCode | readOutputRegisters (ModbusRTU::ReadOutputMessage &query, ModbusRTU::ReadOutputRetMessage &reply) |
| ModbusRTU::mbErrCode | readInputRegisters (ModbusRTU::ReadInputMessage &query, ModbusRTU::ReadInputRetMessage &reply) |
| ModbusRTU::mbErrCode | forceSingleCoil (ModbusRTU::ForceSingleCoilMessage &query, ModbusRTU::ForceSingleCoilRetMessage &reply) |
| ModbusRTU::mbErrCode | forceMultipleCoils (ModbusRTU::ForceCoilsMessage &query, ModbusRTU::ForceCoilsRetMessage &reply) |
| ModbusRTU::mbErrCode | writeOutputRegisters (ModbusRTU::WriteOutputMessage &query, ModbusRTU::WriteOutputRetMessage &reply) |
| ModbusRTU::mbErrCode | writeOutputSingleRegister (ModbusRTU::WriteSingleOutputMessage &query, ModbusRTU::WriteSingleOutputRetMessage &reply) |
| ModbusRTU::mbErrCode | journalCommand (ModbusRTU::JournalCommandMessage &query, ModbusRTU::JournalCommandRetMessage &reply) |
| ModbusRTU::mbErrCode | setDateTime (ModbusRTU::SetDateTimeMessage &query, ModbusRTU::SetDateTimeRetMessage &reply) |
| ModbusRTU::mbErrCode | remoteService (ModbusRTU::RemoteServiceMessage &query, ModbusRTU::RemoteServiceRetMessage &reply) |
| ModbusRTU::mbErrCode | fileTransfer (ModbusRTU::FileTransferMessage &query, ModbusRTU::FileTransferRetMessage &reply) |
| ModbusRTU::mbErrCode | diagnostics (ModbusRTU::DiagnosticMessage &query, ModbusRTU::DiagnosticRetMessage &reply) |
| ModbusRTU::mbErrCode | read4314 (ModbusRTU::MEIMessageRDI &query, ModbusRTU::MEIMessageRetRDI &reply) |
| ModbusRTU::mbErrCode | readCoilStatus (ModbusRTU::ReadCoilMessage &query, ModbusRTU::ReadCoilRetMessage &reply) |
| ModbusRTU::mbErrCode | readInputStatus (ModbusRTU::ReadInputStatusMessage &query, ModbusRTU::ReadInputStatusRetMessage &reply) |
| ModbusRTU::mbErrCode | readOutputRegisters (ModbusRTU::ReadOutputMessage &query, ModbusRTU::ReadOutputRetMessage &reply) |
| ModbusRTU::mbErrCode | readInputRegisters (ModbusRTU::ReadInputMessage &query, ModbusRTU::ReadInputRetMessage &reply) |
| ModbusRTU::mbErrCode | forceSingleCoil (ModbusRTU::ForceSingleCoilMessage &query, ModbusRTU::ForceSingleCoilRetMessage &reply) |
| ModbusRTU::mbErrCode | forceMultipleCoils (ModbusRTU::ForceCoilsMessage &query, ModbusRTU::ForceCoilsRetMessage &reply) |
| ModbusRTU::mbErrCode | writeOutputRegisters (ModbusRTU::WriteOutputMessage &query, ModbusRTU::WriteOutputRetMessage &reply) |
| ModbusRTU::mbErrCode | writeOutputSingleRegister (ModbusRTU::WriteSingleOutputMessage &query, ModbusRTU::WriteSingleOutputRetMessage &reply) |
| ModbusRTU::mbErrCode | setDateTime (ModbusRTU::SetDateTimeMessage &query, ModbusRTU::SetDateTimeRetMessage &reply) |
| ModbusRTU::mbErrCode | remoteService (ModbusRTU::RemoteServiceMessage &query, ModbusRTU::RemoteServiceRetMessage &reply) |
| ModbusRTU::mbErrCode | fileTransfer (ModbusRTU::FileTransferMessage &query, ModbusRTU::FileTransferRetMessage &reply) |
| ModbusRTU::mbErrCode | diagnostics (ModbusRTU::DiagnosticMessage &query, ModbusRTU::DiagnosticRetMessage &reply) |
| ModbusRTU::mbErrCode | read4314 (ModbusRTU::MEIMessageRDI &query, ModbusRTU::MEIMessageRetRDI &reply) |
| virtual ModbusRTU::mbErrCode | checkRegister (ModbusRTU::ModbusData reg, ModbusRTU::ModbusData &val) |
| virtual void | sysCommand (const UniSetTypes::SystemMessage *msg) override |
| virtual void | sensorInfo (const UniSetTypes::SensorMessage *sm) override |
| void | askSensors (UniversalIO::UIOCommand cmd) |
| void | waitSMReady () |
| virtual void | execute_rtu () |
| virtual void | execute_tcp () |
| virtual bool | activateObject () override |
| Активизация объекта (переопределяется для необходимых действий после активизации) | |
| virtual bool | deactivateObject () override |
| Дизактивизация объекта (переопределяется для необходимых действий перед деактивацией) | |
| virtual void | sigterm (int signo) override |
| virtual void | finalThread () |
| virtual void | initIterators () |
| bool | initItem (UniXML::iterator &it) |
| bool | readItem (const std::shared_ptr< UniXML > &xml, UniXML::iterator &it, xmlNode *sec) |
| void | readConfiguration () |
| bool | check_item (UniXML::iterator &it) |
| ModbusRTU::mbErrCode | real_write (RegMap &rmap, const ModbusRTU::ModbusData regOKOK, ModbusRTU::ModbusData val, const int fn=0) |
| ModbusRTU::mbErrCode | real_write (RegMap &rmap, const ModbusRTU::ModbusData regOKOK, ModbusRTU::ModbusData *dat, int &i, int count, const int fn=0) |
| ModbusRTU::mbErrCode | real_read (RegMap &rmap, const ModbusRTU::ModbusData regOKOK, ModbusRTU::ModbusData &val, const int fn=0) |
| ModbusRTU::mbErrCode | much_real_read (RegMap &rmap, const ModbusRTU::ModbusData regOKOK, ModbusRTU::ModbusData *dat, int count, const int fn=0) |
| ModbusRTU::mbErrCode | much_real_write (RegMap &rmap, const ModbusRTU::ModbusData regOKOK, ModbusRTU::ModbusData *dat, int count, const int fn=0) |
| ModbusRTU::mbErrCode | real_read_it (RegMap &rmap, RegMap::iterator &it, ModbusRTU::ModbusData &val) |
| ModbusRTU::mbErrCode | real_bitreg_read_it (std::shared_ptr< BitRegProperty > &bp, ModbusRTU::ModbusData &val) |
| ModbusRTU::mbErrCode | real_read_prop (IOProperty *p, ModbusRTU::ModbusData &val) |
| ModbusRTU::mbErrCode | real_write_it (RegMap &rmap, RegMap::iterator &it, ModbusRTU::ModbusData *dat, int &i, int count) |
| ModbusRTU::mbErrCode | real_bitreg_write_it (std::shared_ptr< BitRegProperty > &bp, const ModbusRTU::ModbusData val) |
| ModbusRTU::mbErrCode | real_write_prop (IOProperty *p, ModbusRTU::ModbusData *dat, int &i, int count) |
| int | getOptimizeWriteFunction (const int fn) |
Защищенные данные | |
| ModbusRTUSlaveSlot * | rscomm |
| std::unordered_set < ModbusRTU::ModbusAddr > | vaddr |
| bool | verbose |
| long | replyVal |
| long | replyVal2 |
| long | replyVal3 |
| IOMap | iomap |
| std::shared_ptr< ModbusServerSlot > | mbslot |
| std::string | default_mbaddr = { "" } |
| xmlNode * | cnode = { 0 } |
| std::string | s_field = { "" } |
| std::string | s_fvalue = { "" } |
| int | default_mbfunc = {0} |
| std::shared_ptr< SMInterface > | shm |
| timeout_t | initPause = { 3000 } |
| UniSetTypes::uniset_rwmutex | mutex_start |
|
std::shared_ptr< ThreadCreator < MBSlave > > | thr |
| std::mutex | mutexStartNotify |
| std::condition_variable | startNotifyEvent |
| PassiveTimer | ptHeartBeat |
| UniSetTypes::ObjectId | sidHeartBeat = { UniSetTypes::DefaultObjectId } |
| int | maxHeartBeat = { 10 } |
| IOController::IOStateList::iterator | itHeartBeat |
| UniSetTypes::ObjectId | test_id = { UniSetTypes::DefaultObjectId } |
| IOController::IOStateList::iterator | itAskCount |
| UniSetTypes::ObjectId | askcount_id = { UniSetTypes::DefaultObjectId } |
| IOController::IOStateList::iterator | itRespond |
| UniSetTypes::ObjectId | respond_id = { UniSetTypes::DefaultObjectId } |
| bool | respond_invert = { false } |
| PassiveTimer | ptTimeout |
| long | askCount = { 0 } |
| ExchangeErrorMap | errmap |
| std::atomic_bool | activated = { false } |
| std::atomic_bool | cancelled = { false } |
| int | activateTimeout = { 20000 } |
| bool | pingOK = { false } |
| timeout_t | wait_msec = { 3000 } |
| bool | force = { false } |
| bool | mbregFromID = {0} |
| bool | checkMBFunc = {0} |
| bool | noMBFuncOptimize = {0} |
| FileList | flist |
| std::string | prefix = { "" } |
| std::string | prop_prefix = { "" } |
| ModbusRTU::ModbusData | buf [ModbusRTU::MAXLENPACKET/2+1] |
| MEIDevIDMap | meidev |
| std::shared_ptr< LogAgregator > | loga |
| std::shared_ptr< DebugStream > | mblog |
| std::shared_ptr< LogServer > | logserv |
| std::string | logserv_host = {""} |
| int | logserv_port = {0} |
| VMonitor | vmon |
Ничего не делающая реализация MBSlave для тестирования
Реализация slave-интерфейса
| bool MBSlave::activateObject | ( | ) | [override, protected, virtual] |
Активизация объекта (переопределяется для необходимых действий после активизации)
Переопределяет метод предка UniSetObject.
| virtual ModbusRTU::mbErrCode MBSlave::checkRegister | ( | ModbusRTU::ModbusData | reg, |
| ModbusRTU::ModbusData & | val | ||
| ) | [inline, protected, virtual] |
Проверка корректности регистра перед сохранением. Вызывается для каждого регистра не зависимо от используемой функции (06 или 10)
| bool MBSlave::deactivateObject | ( | ) | [override, protected, virtual] |
Дизактивизация объекта (переопределяется для необходимых действий перед деактивацией)
Переопределяет метод предка UniSetObject.
Переопределяется в MBTCPPersistentSlave.
| void MBSlave::execute | ( | ) |
основной цикл работы
Перекрестные ссылки errmap, ModbusRTUSlave::receive(), rscomm, vaddr и UniSetTimer::WaitUpTime.
| ModbusRTU::mbErrCode MBSlave::forceMultipleCoils | ( | ModbusRTU::ForceCoilsMessage & | query, |
| ModbusRTU::ForceCoilsRetMessage & | reply | ||
| ) | [protected] |
обработка 0x0F
Перекрестные ссылки ModbusRTU::ForceCoilsMessage::quant, ModbusRTU::ForceCoilsRetMessage::set() и ModbusRTU::ForceCoilsMessage::start.
| ModbusRTU::mbErrCode MBSlave::forceMultipleCoils | ( | ModbusRTU::ForceCoilsMessage & | query, |
| ModbusRTU::ForceCoilsRetMessage & | reply | ||
| ) | [protected] |
обработка 0x0F
| ModbusRTU::mbErrCode MBSlave::forceSingleCoil | ( | ModbusRTU::ForceSingleCoilMessage & | query, |
| ModbusRTU::ForceSingleCoilRetMessage & | reply | ||
| ) | [protected] |
обработка 0x05
Перекрестные ссылки ModbusRTU::ForceSingleCoilMessage::cmd(), ModbusRTU::ForceSingleCoilRetMessage::set() и ModbusRTU::ForceSingleCoilMessage::start.
| ModbusRTU::mbErrCode MBSlave::forceSingleCoil | ( | ModbusRTU::ForceSingleCoilMessage & | query, |
| ModbusRTU::ForceSingleCoilRetMessage & | reply | ||
| ) | [protected] |
обработка 0x05
| void MBSlave::help_print | ( | int | argc, |
| const char *const * | argv | ||
| ) | [static] |
глобальная функция для вывода help-а
Переопределяется в MBTCPPersistentSlave.
| std::shared_ptr< MBSlave > MBSlave::init_mbslave | ( | int | argc, |
| const char *const * | argv, | ||
| UniSetTypes::ObjectId | shmID, | ||
| const std::shared_ptr< SharedMemory > & | ic = nullptr, |
||
| const std::string & | prefix = "mbs" |
||
| ) | [static] |
глобальная функция для инициализации объекта
Переопределяется в MBTCPPersistentSlave.
Перекрестные ссылки UniSetTypes::DefaultObjectId и UniSetTypes::uniset_conf().
| ModbusRTU::mbErrCode MBSlave::journalCommand | ( | ModbusRTU::JournalCommandMessage & | query, |
| ModbusRTU::JournalCommandRetMessage & | reply | ||
| ) | [protected] |
обработка запросов на чтение ошибок
Перекрестные ссылки ModbusRTU::JournalCommandMessage::cmd, ModbusRTU::JournalCommandMessage::num и ModbusRTU::JournalCommandRetMessage::setData().
| ModbusRTU::mbErrCode MBSlave::readCoilStatus | ( | ModbusRTU::ReadCoilMessage & | query, |
| ModbusRTU::ReadCoilRetMessage & | reply | ||
| ) | [protected] |
обработка 0x01
Перекрестные ссылки ModbusRTU::ReadCoilRetMessage::addData().
| ModbusRTU::mbErrCode MBSlave::readCoilStatus | ( | ModbusRTU::ReadCoilMessage & | query, |
| ModbusRTU::ReadCoilRetMessage & | reply | ||
| ) | [protected] |
обработка 0x01
| mbErrCode MBSlave::readInputRegisters | ( | ModbusRTU::ReadInputMessage & | query, |
| ModbusRTU::ReadInputRetMessage & | reply | ||
| ) | [protected] |
обработка 0x04
Перекрестные ссылки ModbusRTU::ReadInputRetMessage::addData() и ModbusRTU::ReadInputRetMessage::count.
| ModbusRTU::mbErrCode MBSlave::readInputRegisters | ( | ModbusRTU::ReadInputMessage & | query, |
| ModbusRTU::ReadInputRetMessage & | reply | ||
| ) | [protected] |
обработка 0x04
| ModbusRTU::mbErrCode MBSlave::readInputStatus | ( | ModbusRTU::ReadInputStatusMessage & | query, |
| ModbusRTU::ReadInputStatusRetMessage & | reply | ||
| ) | [protected] |
обработка 0x02
Перекрестные ссылки ModbusRTU::ReadInputStatusRetMessage::addData() и ModbusRTU::ReadInputStatusRetMessage::setBit().
| ModbusRTU::mbErrCode MBSlave::readInputStatus | ( | ModbusRTU::ReadInputStatusMessage & | query, |
| ModbusRTU::ReadInputStatusRetMessage & | reply | ||
| ) | [protected] |
обработка 0x02
| ModbusRTU::mbErrCode MBSlave::readOutputRegisters | ( | ModbusRTU::ReadOutputMessage & | query, |
| ModbusRTU::ReadOutputRetMessage & | reply | ||
| ) | [protected] |
обработка 0x03
Перекрестные ссылки ModbusRTU::ReadOutputRetMessage::addData() и ModbusRTU::ReadOutputRetMessage::count.
| ModbusRTU::mbErrCode MBSlave::readOutputRegisters | ( | ModbusRTU::ReadOutputMessage & | query, |
| ModbusRTU::ReadOutputRetMessage & | reply | ||
| ) | [protected] |
обработка 0x03
| ModbusRTU::mbErrCode MBSlave::remoteService | ( | ModbusRTU::RemoteServiceMessage & | query, |
| ModbusRTU::RemoteServiceRetMessage & | reply | ||
| ) | [protected] |
обработка запроса удалённого сервиса
| ModbusRTU::mbErrCode MBSlave::remoteService | ( | ModbusRTU::RemoteServiceMessage & | query, |
| ModbusRTU::RemoteServiceRetMessage & | reply | ||
| ) | [protected] |
обработка запроса удалённого сервиса
| ModbusRTU::mbErrCode MBSlave::setDateTime | ( | ModbusRTU::SetDateTimeMessage & | query, |
| ModbusRTU::SetDateTimeRetMessage & | reply | ||
| ) | [protected] |
обработка запроса на установку времени
| ModbusRTU::mbErrCode MBSlave::setDateTime | ( | ModbusRTU::SetDateTimeMessage & | query, |
| ModbusRTU::SetDateTimeRetMessage & | reply | ||
| ) | [protected] |
обработка запросов на чтение ошибок
обработка запроса на установку времени
| void MBSlave::sigterm | ( | int | signo | ) | [protected, virtual] |
Функция вызываемая при приходе сигнала завершения или прерывания процесса. Переопределив ее можно выполнять специфичные для процесса действия по обработке сигнала. Например переход в безопасное состояние.
Переопределяет метод предка UniSetObject.
Переопределяется в MBTCPPersistentSlave.
| virtual void MBSlave::sigterm | ( | int | signo | ) | [override, protected, virtual] |
Функция вызываемая при приходе сигнала завершения или прерывания процесса. Переопределив ее можно выполнять специфичные для процесса действия по обработке сигнала. Например переход в безопасное состояние.
Переопределяет метод предка UniSetObject.
Переопределяется в MBTCPPersistentSlave.
| ModbusRTU::mbErrCode MBSlave::writeOutputRegisters | ( | ModbusRTU::WriteOutputMessage & | query, |
| ModbusRTU::WriteOutputRetMessage & | reply | ||
| ) | [protected] |
обработка 0x10
Перекрестные ссылки ModbusRTU::WriteOutputMessage::quant, ModbusRTU::WriteOutputRetMessage::set() и ModbusRTU::WriteOutputMessage::start.
| ModbusRTU::mbErrCode MBSlave::writeOutputRegisters | ( | ModbusRTU::WriteOutputMessage & | query, |
| ModbusRTU::WriteOutputRetMessage & | reply | ||
| ) | [protected] |
обработка 0x10
| ModbusRTU::mbErrCode MBSlave::writeOutputSingleRegister | ( | ModbusRTU::WriteSingleOutputMessage & | query, |
| ModbusRTU::WriteSingleOutputRetMessage & | reply | ||
| ) | [protected] |
обработка 0x06
Перекрестные ссылки ModbusRTU::WriteSingleOutputMessage::data, ModbusRTU::WriteSingleOutputRetMessage::set() и ModbusRTU::WriteSingleOutputMessage::start.
| ModbusRTU::mbErrCode MBSlave::writeOutputSingleRegister | ( | ModbusRTU::WriteSingleOutputMessage & | query, |
| ModbusRTU::WriteSingleOutputRetMessage & | reply | ||
| ) | [protected] |
обработка 0x06
ModbusRTU::ModbusData MBSlave::buf[ModbusRTU::MAXLENPACKET/2+1] [protected] |
буфер для формирования ответов
ExchangeErrorMap MBSlave::errmap [protected] |
статистика обмена
Используется в MBTCPServer::execute() и execute().
bool MBSlave::force = { false } [protected] |
флаг означающий, что надо сохранять в SM, даже если значение не менялось
IOMap MBSlave::iomap [protected] |
список входов/выходов по адресам
ModbusRTUSlaveSlot* MBSlave::rscomm [protected] |
интерфейс ModbusRTUSlave для обмена по RS
Используется в execute().
std::unordered_set< ModbusRTU::ModbusAddr > MBSlave::vaddr [protected] |
1.7.6.1