UniSet  2.2.1
Классы | Открытые типы | Открытые члены | Открытые статические члены | Статические открытые данные | Защищенные типы | Защищенные члены | Защищенные данные
Класс MBSlave

#include <MBSlave.h>

Граф наследования:MBSlave:
UniSetObject LT_Object MBTCPPersistentSlave

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

Классы

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< LogAgregatorgetLogAggregator ()
std::shared_ptr< DebugStreamlog ()
virtual UniSetTypes::SimpleInfogetInfo (CORBA::Long userparam=0) override

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

static std::shared_ptr< MBSlaveinit_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)

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

ModbusRTUSlaveSlotrscomm
std::unordered_set
< ModbusRTU::ModbusAddr > 
vaddr
bool verbose
long replyVal
long replyVal2
long replyVal3
IOMap iomap
std::shared_ptr< ModbusServerSlotmbslot
std::string default_mbaddr = { "" }
xmlNode * cnode = { 0 }
std::string s_field = { "" }
std::string s_fvalue = { "" }
int default_mbfunc = {0}
std::shared_ptr< SMInterfaceshm
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< LogAgregatorloga
std::shared_ptr< DebugStreammblog
std::shared_ptr< LogServerlogserv
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]
ModbusRTU::mbErrCode MBSlave::forceMultipleCoils ( ModbusRTU::ForceCoilsMessage query,
ModbusRTU::ForceCoilsRetMessage reply 
) [protected]

обработка 0x0F

ModbusRTU::mbErrCode MBSlave::forceSingleCoil ( ModbusRTU::ForceSingleCoilMessage query,
ModbusRTU::ForceSingleCoilRetMessage reply 
) [protected]
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

обработка 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]

Функция вызываемая при приходе сигнала завершения или прерывания процесса. Переопределив ее можно выполнять специфичные для процесса действия по обработке сигнала. Например переход в безопасное состояние.

Предупреждения:
В обработчике сигналов ЗАПРЕЩЕНО вызывать функции подобные exit(..), abort()!!!!

Переопределяет метод предка UniSetObject.

Переопределяется в MBTCPPersistentSlave.

virtual void MBSlave::sigterm ( int  signo) [override, protected, virtual]

Функция вызываемая при приходе сигнала завершения или прерывания процесса. Переопределив ее можно выполнять специфичные для процесса действия по обработке сигнала. Например переход в безопасное состояние.

Предупреждения:
В обработчике сигналов ЗАПРЕЩЕНО вызывать функции подобные exit(..), abort()!!!!

Переопределяет метод предка UniSetObject.

Переопределяется в MBTCPPersistentSlave.

ModbusRTU::mbErrCode MBSlave::writeOutputRegisters ( ModbusRTU::WriteOutputMessage query,
ModbusRTU::WriteOutputRetMessage reply 
) [protected]
ModbusRTU::mbErrCode MBSlave::writeOutputRegisters ( ModbusRTU::WriteOutputMessage query,
ModbusRTU::WriteOutputRetMessage reply 
) [protected]

обработка 0x10

обработка 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]

список входов/выходов по адресам

интерфейс ModbusRTUSlave для обмена по RS

Используется в execute().

std::unordered_set< ModbusRTU::ModbusAddr > MBSlave::vaddr [protected]

адреса на которые отвечаем

адреса данного узла

Используется в MBTCPServer::execute() и execute().


Объявления и описания членов классов находятся в файлах: