UniSet 2.32.1
Классы | Открытые типы | Открытые члены | Открытые статические члены | Открытые атрибуты | Статические открытые данные | Защищенные члены | Друзья | Полный список членов класса
Класс uniset::MBConfig

#include <MBConfig.h>

Граф связей класса uniset::MBConfig:
Collaboration graph
[см. легенду]

Классы

struct  InitRegInfo
 
struct  RegInfo
 
struct  RSProperty
 
struct  RTUDevice
 

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

enum  ExchangeMode {
  emNone = 0 , emWriteOnly = 1 , emReadOnly = 2 , emSkipSaveToSM = 3 ,
  emSkipExchange = 4
}
 
enum  SafeMode { safeNone = 0 , safeResetIfNotRespond = 1 , safeExternalControl = 2 }
 
enum  DeviceType { dtUnknown , dtRTU , dtMTR , dtRTU188 }
 
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
 
typedef std::list< IOBaseThresholdList
 
typedef std::list< InitRegInfoInitList
 

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

 MBConfig (const std::shared_ptr< uniset::Configuration > &conf, xmlNode *cnode, std::shared_ptr< SMInterface > _shm)
 
void loadConfig (const std::shared_ptr< uniset::UniXML > &xml, UniXML::iterator sensorsSection)
 
void initDeviceList (const std::shared_ptr< UniXML > &xml)
 
bool initItem (UniXML::iterator &it)
 
void cloneParams (const std::shared_ptr< MBConfig > &conf)
 
std::string getShortInfo () const
 
bool checkDuplicationRegID (const ModbusRTU::RegID id, const std::shared_ptr< RTUDevice > &dev, const std::shared_ptr< RegMap > &rmap) const
 

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

static DeviceType getDeviceType (const std::string &dtype) noexcept
 
static void printMap (RTUDeviceMap &d)
 
static void rtuQueryOptimization (RTUDeviceMap &m, size_t maxQueryCount)
 
static void rtuQueryOptimizationForDevice (const std::shared_ptr< RTUDevice > &d, size_t maxQueryCount)
 
static void rtuQueryOptimizationForRegMap (const std::shared_ptr< RegMap > &regmap, size_t maxQueryCount)
 

Открытые атрибуты

ThresholdList thrlist
 
RTUDeviceMap devices
 
InitList initRegList
 
std::string s_field
 
std::string s_fvalue
 
timeout_t recv_timeout = { 500 }
 
timeout_t default_timeout = { 5000 }
 
timeout_t aftersend_pause = { 0 }
 
timeout_t polltime = { 100 }
 
timeout_t sleepPause_msec = { 10 }
 
size_t maxQueryCount = { ModbusRTU::MAXDATALEN }
 
xmlNode * cnode = { 0 }
 
std::shared_ptr< DebugStreammblog
 
std::string myname
 
std::string prefix
 
std::string prop_prefix
 
std::string defaultMBtype
 
std::string defaultMBaddr
 
bool mbregFromID = { false }
 
bool defaultMBinitOK = { false }
 
bool noQueryOptimization = { false }
 
std::shared_ptr< uniset::Configurationconf
 
std::shared_ptr< SMInterfaceshm
 
bool init_mbval_changed = { true }
 

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

static const size_t changeOnlyWrite = { 65535 }
 

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

bool initSMValue (ModbusRTU::ModbusData *data, int count, RSProperty *p)
 
void readConfiguration (const std::shared_ptr< uniset::UniXML > &xml, UniXML::iterator sensorsSection)
 
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)
 
bool initDeviceInfo (RTUDeviceMap &m, ModbusRTU::ModbusAddr a, UniXML::iterator &it)
 

Друзья

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

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

Конфигурация для ModbusMaster

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

◆ DeviceType

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

неизвестный

dtRTU 

RTU (default)

dtMTR 

MTR (DEIF)

dtRTU188 

RTU188 (Fastwell)

◆ ExchangeMode

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

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

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

emWriteOnly 

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

emReadOnly 

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

emSkipSaveToSM 

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

emSkipExchange 

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

◆ SafeMode

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

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

не использовать безопасный режим (по умолчанию)

safeResetIfNotRespond 

выставлять безопасное значение, если пропала связь с устройством

safeExternalControl 

управление сбросом по внешнему датчику

Методы

◆ checkDuplicationRegID()

bool uniset::MBConfig::checkDuplicationRegID ( const ModbusRTU::RegID id,
const std::shared_ptr< RTUDevice > & dev,
const std::shared_ptr< RegMap > & rmap ) const

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

◆ initItem()

bool uniset::MBConfig::initItem ( UniXML::iterator & it)

приоритет опроса: 1...n - задаёт "частоту" опроса. Т.е. каждые 1...n циклов 0 - значение по-умолчанию фактически тоже, что и 1. 65535 - Отдельное значение для записи регистров по изменению значения датчика. По-этому без оптимизации "склейки" регистров в один запрос. TODO:

  • На подумать, оптимизировать запросы если регистры для записи по изменению идут подряд, в каких случаях это будет полезно.
  • На подумать, сделать общий флаг для группы(всех датчиков), чтобы не проверять все регистры по отдельности. Т.е. когда есть оптимизация, отправляем все по изменению хотя бы одного датчика.

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

◆ changeOnlyWrite

const size_t uniset::MBConfig::changeOnlyWrite = { 65535 }
static

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

◆ init_mbval_changed

bool uniset::MBConfig::init_mbval_changed = { true }

Глобальный флаг для инициализации флага изменения значения датчика каждого регистра

◆ initRegList

InitList uniset::MBConfig::initRegList

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

◆ maxQueryCount

size_t uniset::MBConfig::maxQueryCount = { ModbusRTU::MAXDATALEN }

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

◆ polltime

timeout_t uniset::MBConfig::polltime = { 100 }

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

◆ prop_prefix

std::string uniset::MBConfig::prop_prefix

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