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

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

Классы

struct  BitRegProperty
struct  ClientInfo
struct  IOProperty

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

enum  AccessMode { amRW, amRO, amWO }

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

 MBSlave (uniset::ObjectId objId, uniset::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 uniset::SimpleInfogetInfo (const char *userparam=0) override

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

static std::shared_ptr< MBSlaveinit_mbslave (int argc, const char *const *argv, uniset::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::list< IOBaseThresholdList
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
typedef std::unordered_map
< std::string, ClientInfo
ClientsMap

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

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 uniset::SystemMessage *msg) override
virtual void sensorInfo (const uniset::SensorMessage *sm) override
void askSensors (UniversalIO::UIOCommand cmd)
void waitSMReady ()
virtual void execute_rtu ()
virtual void execute_tcp ()
virtual void updateStatistics ()
virtual void updateTCPStatistics ()
virtual void updateThresholds ()
virtual void postReceiveEvent (ModbusRTU::mbErrCode res)
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, size_t &i, size_t 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, size_t count, const int fn=0)
ModbusRTU::mbErrCode much_real_write (RegMap &rmap, const ModbusRTU::ModbusData regOKOK, ModbusRTU::ModbusData *dat, size_t 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, size_t &i, size_t 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, size_t &i, size_t count)
int getOptimizeWriteFunction (const int fn)
void initTCPClients (UniXML::iterator confnode)

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

IOMap iomap
ThresholdList thrlist
std::shared_ptr< ModbusServerSlotmbslot
std::unordered_set
< ModbusRTU::ModbusAddr > 
vaddr
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 }
uniset::uniset_rwmutex mutex_start
std::shared_ptr< ThreadCreator
< MBSlave > > 
thr
std::mutex mutexStartNotify
std::condition_variable startNotifyEvent
PassiveTimer ptHeartBeat
uniset::ObjectId sidHeartBeat = { uniset::DefaultObjectId }
long maxHeartBeat = { 10 }
IOController::IOStateList::iterator itHeartBeat
uniset::ObjectId test_id = { uniset::DefaultObjectId }
IOController::IOStateList::iterator itAskCount
uniset::ObjectId askcount_id = { uniset::DefaultObjectId }
IOController::IOStateList::iterator itRespond
uniset::ObjectId respond_id = { uniset::DefaultObjectId }
bool respond_invert = { false }
PassiveTimer ptTimeout
long askCount = { 0 }
std::atomic_bool activated = { false }
std::atomic_bool cancelled = { false }
timeout_t 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
std::string mbtype = { "" }
timeout_t sessTimeout = { 2000 }
timeout_t updateStatTime = { 4000 }
ModbusTCPServer::Sessions sess
std::mutex sessMutex
size_t sessMaxNum = { 5 }
std::shared_ptr
< ModbusTCPServerSlot
tcpserver
ClientsMap cmap
uniset::ObjectId sesscount_id = { uniset::DefaultObjectId }
IOController::IOStateList::iterator sesscount_it
std::atomic_bool tcpCancelled = { true }

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

Реализация slave-интерфейса


Методы

bool MBSlave::activateObject ( ) [override, protected, virtual]

Активизация объекта (переопределяется для необходимых действий после активизации)

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

virtual ModbusRTU::mbErrCode uniset::MBSlave::checkRegister ( ModbusRTU::ModbusData  reg,
ModbusRTU::ModbusData &  val 
) [inline, protected, virtual]

Проверка корректности регистра перед сохранением. Вызывается для каждого регистра не зависимо от используемой функции (06 или 10)

bool MBSlave::deactivateObject ( ) [override, protected, virtual]

Деактивиция объекта (переопределяется для необходимых действий перед деактивацией)

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

ModbusRTU::mbErrCode MBSlave::forceMultipleCoils ( ModbusRTU::ForceCoilsMessage query,
ModbusRTU::ForceCoilsRetMessage reply 
) [protected]

обработка 0x0F

ModbusRTU::mbErrCode MBSlave::forceSingleCoil ( ModbusRTU::ForceSingleCoilMessage query,
ModbusRTU::ForceSingleCoilRetMessage reply 
) [protected]

обработка 0x05

void MBSlave::help_print ( int  argc,
const char *const *  argv 
) [static]

глобальная функция для вывода help-а

std::shared_ptr< MBSlave > MBSlave::init_mbslave ( int  argc,
const char *const *  argv,
uniset::ObjectId  shmID,
const std::shared_ptr< SharedMemory > &  ic = nullptr,
const std::string &  prefix = "mbs" 
) [static]

глобальная функция для инициализации объекта

ModbusRTU::mbErrCode MBSlave::readCoilStatus ( ModbusRTU::ReadCoilMessage query,
ModbusRTU::ReadCoilRetMessage reply 
) [protected]

обработка 0x01

обработка 0x04

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::mbErrCode MBSlave::remoteService ( ModbusRTU::RemoteServiceMessage query,
ModbusRTU::RemoteServiceRetMessage reply 
) [protected]

обработка запроса удалённого сервиса

ModbusRTU::mbErrCode MBSlave::setDateTime ( ModbusRTU::SetDateTimeMessage query,
ModbusRTU::SetDateTimeRetMessage reply 
) [protected]

обработка запросов на чтение ошибок

обработка запроса на установку времени

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

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

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

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

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

обработка 0x10

обработка 0x06


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

ModbusRTU::ModbusData uniset::MBSlave::buf[ModbusRTU::MAXLENPACKET/2+1] [protected]

буфер для формирования ответов

bool uniset::MBSlave::force = { false } [protected]

флаг означающий, что надо сохранять в SM, даже если значение не менялось

IOMap uniset::MBSlave::iomap [protected]

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

ModbusTCPServer::Sessions uniset::MBSlave::sess [protected]

список открытых сессий

timeout_t uniset::MBSlave::sessTimeout = { 2000 } [protected]

таймаут на сессию

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

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