UniSet  2.2.1
Классы | Открытые типы | Открытые члены | Открытые статические члены | Статические открытые данные | Защищенные типы | Защищенные члены | Защищенные данные | Друзья
Класс MBExchange

#include <MBExchange.h>

Граф наследования:MBExchange:
UniSetObject LT_Object MBTCPMaster MBTCPMultiMaster RTUExchange

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

Классы

struct  InitRegInfo
struct  RegInfo
struct  RSProperty
struct  RTUDevice

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

enum  ExchangeMode {
  emNone = 0, emWriteOnly = 1, emReadOnly = 2, emSkipSaveToSM = 3,
  emSkipExchange = 4
}
enum  DeviceType { dtUnknown, dtRTU, dtMTR, dtRTU188 }
enum  Timer { tmExchange }
typedef std::list< RSPropertyPList
typedef std::map
< ModbusRTU::RegID,
std::shared_ptr< RegInfo > > 
RegMap
typedef std::unordered_map
< ModbusRTU::ModbusAddr,
std::shared_ptr< RTUDevice > > 
RTUDeviceMap

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

 MBExchange (UniSetTypes::ObjectId objId, UniSetTypes::ObjectId shmID, const std::shared_ptr< SharedMemory > &ic=nullptr, const std::string &prefix="mb")
void printMap (RTUDeviceMap &d)
void execute ()
std::shared_ptr< LogAgregatorgetLogAggregator ()
std::shared_ptr< DebugStreamlog ()
virtual UniSetTypes::SimpleInfogetInfo (CORBA::Long userparam=0) override

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

static void help_print (int argc, const char *const *argv)
static DeviceType getDeviceType (const std::string &dtype)
static std::ostream & print_plist (std::ostream &os, const PList &p)

Статические открытые данные

static const int NoSafetyState = -1

Защищенные типы

typedef std::list< InitRegInfoInitList
typedef std::list< IOBaseThresholdList

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

virtual void step ()
virtual void sysCommand (const UniSetTypes::SystemMessage *msg) override
virtual void sensorInfo (const UniSetTypes::SensorMessage *sm) override
virtual void timerInfo (const UniSetTypes::TimerMessage *tm) override
virtual void askSensors (UniversalIO::UIOCommand cmd)
virtual void initOutput ()
virtual void sigterm (int signo) override
virtual bool activateObject () override
 Активизация объекта (переопределяется для необходимых действий после активизации)
virtual void initIterators ()
virtual void initValues ()
void firstInitRegisters ()
bool preInitRead (InitList::iterator &p)
bool initSMValue (ModbusRTU::ModbusData *data, int count, RSProperty *p)
virtual std::shared_ptr
< ModbusClient
initMB (bool reopen=false)=0
virtual bool poll ()
bool pollRTU (std::shared_ptr< RTUDevice > &dev, RegMap::iterator &it)
void updateSM ()
void updateRTU (RegMap::iterator &it)
void updateMTR (RegMap::iterator &it)
void updateRTU188 (RegMap::iterator &it)
void updateRSProperty (RSProperty *p, bool write_only=false)
virtual void updateRespondSensors ()
bool checkUpdateSM (bool wrFunc, long devMode)
bool checkPoll (bool wrFunc)
bool checkProcActive ()
void setProcActive (bool st)
void waitSMReady ()
void readConfiguration ()
bool readItem (const std::shared_ptr< UniXML > &xml, UniXML::iterator &it, xmlNode *sec)
bool initItem (UniXML::iterator &it)
void initDeviceList ()
void initOffsetList ()
std::shared_ptr< RTUDeviceaddDev (RTUDeviceMap &dmap, ModbusRTU::ModbusAddr a, UniXML::iterator &it)
std::shared_ptr< RegInfoaddReg (std::shared_ptr< RegMap > &devices, ModbusRTU::RegID id, ModbusRTU::ModbusData r, UniXML::iterator &it, std::shared_ptr< RTUDevice > dev)
RSPropertyaddProp (PList &plist, RSProperty &&p)
bool initMTRitem (UniXML::iterator &it, std::shared_ptr< RegInfo > &p)
bool initRTU188item (UniXML::iterator &it, std::shared_ptr< RegInfo > &p)
bool initRSProperty (RSProperty &p, UniXML::iterator &it)
bool initRegInfo (std::shared_ptr< RegInfo > &r, UniXML::iterator &it, std::shared_ptr< RTUDevice > &dev)
bool initRTUDevice (std::shared_ptr< RTUDevice > &d, UniXML::iterator &it)
virtual bool initDeviceInfo (RTUDeviceMap &m, ModbusRTU::ModbusAddr a, UniXML::iterator &it)
std::string initPropPrefix (const std::string &def_prop_prefix="")
void rtuQueryOptimization (RTUDeviceMap &m)

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

bool allInitOK
RTUDeviceMap devices
InitList initRegList
UniSetTypes::uniset_rwmutex pollMutex
xmlNode * cnode = { 0 }
std::string s_field
std::string s_fvalue
std::shared_ptr< SMInterfaceshm
timeout_t initPause = { 3000 }
UniSetTypes::uniset_rwmutex mutex_start
bool force = { false }
bool force_out = { false }
bool mbregFromID = { false }
int polltime = { 100 }
timeout_t sleepPause_usec
unsigned int maxQueryCount = { ModbusRTU::MAXDATALEN }
PassiveTimer ptHeartBeat
UniSetTypes::ObjectId sidHeartBeat = { UniSetTypes::DefaultObjectId }
int maxHeartBeat = { 10 }
IOController::IOStateList::iterator itHeartBeat
UniSetTypes::ObjectId test_id = { UniSetTypes::DefaultObjectId }
UniSetTypes::ObjectId sidExchangeMode = { UniSetTypes::DefaultObjectId }
IOController::IOStateList::iterator itExchangeMode
long exchangeMode = {emNone}
std::atomic_bool activated = { false }
int activateTimeout = { 20000 }
bool noQueryOptimization = { false }
bool no_extimer = { false }
std::string prefix
timeout_t stat_time = { 0 }
unsigned int poll_count = { 0 }
PassiveTimer ptStatistic
std::string prop_prefix
std::shared_ptr< ModbusClientmb
timeout_t recv_timeout = { 500 }
timeout_t default_timeout = { 5000 }
int aftersend_pause = { 0 }
PassiveTimer ptReopen
Trigger trReopen
PassiveTimer ptInitChannel
ThresholdList thrlist
std::string defaultMBtype
std::string defaultMBaddr
bool defaultMBinitOK = { false }
std::shared_ptr< LogAgregatorloga
std::shared_ptr< DebugStreammblog
std::shared_ptr< LogServerlogserv
std::string logserv_host = {""}
int logserv_port = {0}
const std::shared_ptr
< SharedMemory
ic
VMonitor vmon
unsigned long ncycle = { 0 }

Друзья

std::ostream & operator<< (std::ostream &os, const ExchangeMode &em)
std::ostream & operator<< (std::ostream &os, const DeviceType &dt)
std::ostream & operator<< (std::ostream &os, const RSProperty &p)
std::ostream & operator<< (std::ostream &os, RegInfo &r)
std::ostream & operator<< (std::ostream &os, RegInfo *r)
std::ostream & operator<< (std::ostream &os, RTUDevice &d)
std::ostream & operator<< (std::ostream &os, RTUDeviceMap &d)

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

Базовый класс для реализация обмена по протоколу Modbus [RTU|TCP].

Перечисления

Элементы перечислений:
dtUnknown 

неизвестный

dtRTU 

RTU (default)

dtMTR 

MTR (DEIF)

dtRTU188 

RTU188 (Fastwell)

Режимы работы процесса обмена

Элементы перечислений:
emNone 

нормальная работа (по умолчанию)

emWriteOnly 

"только посылка данных" (работают только write-функции)

emReadOnly 

"только чтение" (работают только read-функции)

emSkipSaveToSM 

не писать данные в SM (при этом работают и read и write функции)

emSkipExchange 

отключить обмен


Методы

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

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

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

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

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

Переопределяется в MBTCPMultiMaster, MBTCPMaster и RTUExchange.

bool MBExchange::initItem ( UniXML::iterator it) [protected]

приоритет опроса: 1...n - задаёт "часоту" опроса. Т.е. каждые 1...n циклов

Перекрестные ссылки UniSetTypes::DefaultObjectId, dtMTR, dtRTU188, ORepHelpers::getShortName(), IOController_i::SensorInfo::id, initRegList, MBExchange::RSProperty::nbit, prop_prefix, MBExchange::RSProperty::rnum, IOBase::stype, IOBase::t_ai, UniSetTypes::uni_atoi(), UniSetTypes::uniset_conf() и MBExchange::RSProperty::vType.

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

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

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

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

Переопределяется в MBTCPMultiMaster и MBTCPMaster.


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

long MBExchange::exchangeMode = {emNone} [protected]

режим работы см. ExchangeMode

bool MBExchange::force = { false } [protected]

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

bool MBExchange::force_out = { false } [protected]

флаг означающий, принудительного чтения выходов

InitList MBExchange::initRegList [protected]

список регистров для инициализации

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

unsigned int MBExchange::maxQueryCount = { ModbusRTU::MAXDATALEN } [protected]

максимальное количество регистров для одного запроса

unsigned long MBExchange::ncycle = { 0 } [protected]

текущий номер цикла опроса

int MBExchange::polltime = { 100 } [protected]

переодичность обновления данных, [мсек]

std::string MBExchange::prop_prefix [protected]

префикс для считывания параметров обмена

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

таймер не реинициализацию канала связи

таймер для переоткрытия соединения

таймер для сбора статистики обмена

иденидентификатор для датчика режима работы

timeout_t MBExchange::stat_time = { 0 } [protected]

время сбора статистики обмена, 0 - отключена


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