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
- Открытые члены inherited from uniset::UniSetObject
 UniSetObject (const std::string &name, const std::string &section)
 UniSetObject (uniset::ObjectId id)
std::shared_ptr< UniSetObjectget_ptr ()
virtual CORBA::Boolean exist () override
virtual uniset::ObjectId getId () override
const uniset::ObjectId getId () const
std::string getName () const
virtual uniset::ObjectType getType () override
const std::string getStrType ()
virtual uniset::SimpleInfoapiRequest (const char *query) override
virtual void push (const uniset::TransportMessage &msg) override
 поместить сообщение в очередь
virtual Poco::JSON::Object::Ptr httpGet (const Poco::URI::QueryParameters &p) override
virtual Poco::JSON::Object::Ptr httpHelp (const Poco::URI::QueryParameters &p) override
uniset::ObjectPtr getRef () const
virtual timeout_t askTimer (uniset::TimerId timerid, timeout_t timeMS, clock_t ticks=-1, uniset::Message::Priority p=uniset::Message::High) override
- Открытые члены inherited from uniset::LT_Object
timeout_t checkTimers (UniSetObject *obj)
timeout_t getTimeInterval (uniset::TimerId timerid)
timeout_t getTimeLeft (uniset::TimerId timerid)
- Открытые члены inherited from uniset::UHttp::IHttpRequest
virtual Poco::JSON::Object::Ptr httpRequest (const std::string &req, const Poco::URI::QueryParameters &p)

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

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)
- Защищенные члены inherited from uniset::UniSetObject
virtual void processingMessage (const uniset::VoidMessage *msg)
virtual void timerInfo (const uniset::TimerMessage *tm)
VoidMessagePtr receiveMessage ()
virtual VoidMessagePtr waitMessage (timeout_t msec=UniSetTimer::WaitUpTime)
void termWaiting ()
size_t countMessages ()
size_t getCountOfLostMessages () const
void terminate ()
void thread (bool create)
void offThread ()
void onThread ()
virtual void callback ()
void setID (uniset::ObjectId id)
void setThreadPriority (Poco::Thread::Priority p)
void setMaxSizeOfMessageQueue (size_t s)
size_t getMaxSizeOfMessageQueue () const
bool isActive () const
void setActive (bool set)
virtual Poco::JSON::Object::Ptr httpGetMyInfo (Poco::JSON::Object::Ptr root)
Poco::JSON::Object::Ptr request_conf (const std::string &req, const Poco::URI::QueryParameters &p)
Poco::JSON::Object::Ptr request_conf_name (const std::string &name, const std::string &props)
- Защищенные члены inherited from uniset::LT_Object
virtual std::string getTimerName (int id)
TimersList getTimersList ()

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

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 }
- Защищенные данные inherited from uniset::UniSetObject
std::shared_ptr< UInterfaceui
std::string myname
std::string section
std::weak_ptr< UniSetManagermymngr
- Защищенные данные inherited from uniset::LT_Object
timeout_t sleepTime

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

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

Методы

bool MBSlave::activateObject ( )
overrideprotectedvirtual

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

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

virtual ModbusRTU::mbErrCode uniset::MBSlave::checkRegister ( ModbusRTU::ModbusData  reg,
ModbusRTU::ModbusData &  val 
)
inlineprotectedvirtual

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

bool MBSlave::deactivateObject ( )
overrideprotectedvirtual

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

Переопределяет метод предка 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

mbErrCode MBSlave::readInputRegisters ( ModbusRTU::ReadInputMessage query,
ModbusRTU::ReadInputRetMessage reply 
)
protected

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

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

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

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

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::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

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