UniSet 2.44.3
Класс uniset::MBConfig

#include <MBConfig.h>

Граф связей класса uniset::MBConfig:

Классы

struct  RSProperty
struct  RegInfo
struct  RTUDevice
struct  InitRegInfo

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

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 ExchangeMode from_string (const std::string &s)
static std::vector< std::string > supported_modes ()
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 ExchangeMode &m)
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, MBConfig::RTUDevice &d)
std::ostream & operator<< (std::ostream &os, MBConfig::RTUDeviceMap &m)

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

Конфигурация для 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

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