UniSet @VERSION@
Классы | Открытые типы | Открытые члены | Открытые статические члены | Открытые атрибуты | Статические открытые данные | Защищенные типы | Защищенные члены | Защищенные данные | Полный список членов класса
Класс uniset::OPCUAExchange

#include <OPCUAExchange.h>

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

Классы

struct  Channel
 
struct  ErrorKey
 
struct  ErrorKeyHash
 
struct  ErrorRecord
 
struct  OPCAttribute
 
struct  ReadGroup
 
struct  WriteGroup
 

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

enum  ExchangeMode {
  emNone = 0 , emWriteOnly = 1 , emReadOnly = 2 , emSkipSaveToSM = 3 ,
  emSkipExchange = 4 , emLastNumber
}
 
enum  StopMode { smNone = 0 , smFirstOnly = 1 , smAny = 2 , smLastNumber }
 
using Tick = uint8_t
 
typedef std::list< IOBaseThresholdList
 

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

 OPCUAExchange (uniset::ObjectId id, xmlNode *cnode, uniset::ObjectId icID, const std::shared_ptr< SharedMemory > &shm=nullptr, const std::string &_prefix="opcua")
 
virtual uniset::SimpleInfogetInfo (const char *userparam=0) override
 
virtual Poco::JSON::Object::Ptr httpHelp (const Poco::URI::QueryParameters &p) override
 
virtual Poco::JSON::Object::Ptr httpRequest (const UHttp::HttpRequestContext &ctx) override
 
virtual Poco::JSON::Object::Ptr httpGetMyInfo (Poco::JSON::Object::Ptr root) override
 
- Открытые члены унаследованные от uniset::UniSetObject
 UniSetObject (const std::string &name, const std::string &section)
 
 UniSetObject (uniset::ObjectId id)
 
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 void pushMessage (const char *msg, ::CORBA::Long mtype, const ::uniset::Timespec &tm, const ::uniset::ProducerInfo &pi, ::CORBA::Long priority, ::CORBA::Long consumer) override
 поместить текстовое сообщение в очередь
 
uniset::ObjectPtr getRef () const
 
std::shared_ptr< UniSetObjectget_ptr ()
 
virtual timeout_t askTimer (uniset::TimerId timerid, timeout_t timeMS, clock_t ticks=-1, uniset::Message::Priority p=uniset::Message::High) override
 
- Открытые члены унаследованные от uniset::LT_Object
timeout_t checkTimers (UniSetObject *obj)
 
timeout_t getTimeInterval (uniset::TimerId timerid) const
 
timeout_t getTimeLeft (uniset::TimerId timerid) const
 

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

static std::shared_ptr< OPCUAExchangeinit_opcuaexchange (int argc, const char *const *argv, uniset::ObjectId icID, const std::shared_ptr< SharedMemory > &ic=nullptr, const std::string &prefix="opcua")
 
static void help_print (int argc, const char *const *argv)
 
static uint8_t firstBit (uint32_t mask)
 
static uint32_t getBits (uint32_t value, uint32_t mask, uint8_t offset)
 
static uint32_t setBits (uint32_t value, uint32_t set, uint32_t mask, uint8_t offset)
 
static uint32_t forceSetBits (uint32_t value, uint32_t set, uint32_t mask, uint8_t offset)
 

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

ThresholdList thrlist
 

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

static const size_t numChannels = 2
 

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

enum  Timers { tmUpdates }
 
typedef std::vector< std::shared_ptr< OPCAttribute > > IOList
 
- Защищенные типы унаследованные от uniset::LT_Object
typedef std::deque< TimerInfoTimersList
 

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

void channel1Thread ()
 
void channel2Thread ()
 
void channelThread (Channel *ch)
 
bool prepare ()
 
void channelExchange (Tick tick, Channel *ch, bool writeOn)
 
void updateFromChannel (Channel *ch)
 
void updateToChannel (Channel *ch)
 
void updateFromSM ()
 
void writeToSM ()
 
bool isUpdateSM (bool wrFunc) const noexcept
 
virtual void sysCommand (const uniset::SystemMessage *sm) override
 
virtual void askSensors (UniversalIO::UIOCommand cmd)
 
virtual void sensorInfo (const uniset::SensorMessage *sm) override
 
virtual void timerInfo (const uniset::TimerMessage *sm) override
 
virtual bool activateObject () override
 Активизация объекта (переопределяется для необходимых действий после активизации)
 
virtual bool deactivateObject () override
 Деактивация объекта (переопределяется для необходимых действий при завершении работы)
 
Poco::JSON::Object::Ptr httpGetParam (const Poco::URI::QueryParameters &p)
 
Poco::JSON::Object::Ptr httpSetParam (Poco::Net::HTTPServerResponse &resp, const Poco::URI::QueryParameters &p)
 
Poco::JSON::Object::Ptr httpStatus ()
 
Poco::JSON::Object::Ptr buildLogServerInfo ()
 
Poco::JSON::Object::Ptr httpGet (const Poco::URI::QueryParameters &p)
 
Poco::JSON::Object::Ptr httpSensors (const Poco::URI::QueryParameters &p)
 
Poco::JSON::Object::Ptr httpSensor (Poco::Net::HTTPServerResponse &resp, const Poco::URI::QueryParameters &p)
 
Poco::JSON::Object::Ptr httpDiagnostics (const Poco::URI::QueryParameters &p)
 
Poco::JSON::Object::Ptr httpTakeControl (Poco::Net::HTTPServerResponse &resp, const Poco::URI::QueryParameters &p)
 
Poco::JSON::Object::Ptr httpReleaseControl (Poco::Net::HTTPServerResponse &resp, const Poco::URI::QueryParameters &p)
 
std::string formatTime (const std::chrono::system_clock::time_point &tp) const
 
Poco::JSON::Object::Ptr sensorToJson (const std::shared_ptr< OPCAttribute > &attr, bool detailed=false, const std::string &cachedName="") const
 
void addError (size_t channel, const std::string &operation, UA_StatusCode status, const std::string &nodeid="")
 
void readConfiguration ()
 
bool initIOItem (UniXML::iterator &it)
 
bool readItem (const std::shared_ptr< UniXML > &xml, UniXML::iterator &it, xmlNode *sec)
 
bool waitSM ()
 
bool tryConnect (Channel *ch)
 
void initOutputs ()
 
- Защищенные члены унаследованные от uniset::UniSetObject
virtual void processingMessage (const uniset::VoidMessage *msg)
 
virtual void onTextMessage (const uniset::TextMessage *tm)
 
VoidMessagePtr receiveMessage ()
 
VoidMessagePtr waitMessage (timeout_t msec=UniSetTimer::WaitUpTime)
 
void termWaiting ()
 
size_t countMessages ()
 
size_t getCountOfLostMessages () const
 
void uterminate ()
 
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)
 
Poco::JSON::Object::Ptr request_configure (const std::string &req, const Poco::URI::QueryParameters &p)
 
Poco::JSON::Object::Ptr request_configure_get (const std::string &req, const Poco::URI::QueryParameters &p)
 
Poco::JSON::Object::Ptr request_configure_by_name (const std::string &name, const std::string &props)
 
Poco::JSON::Object::Ptr request_params (const std::string &req, const Poco::URI::QueryParameters &p)
 
virtual Poco::JSON::Object::Ptr request_params_get (const std::string &req, const Poco::URI::QueryParameters &p)
 
virtual Poco::JSON::Object::Ptr request_params_set (const std::string &req, const Poco::URI::QueryParameters &p)
 
- Защищенные члены унаследованные от uniset::LT_Object
virtual std::string getTimerName (int id) const
 
TimersList getTimersList () const
 

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

bool httpEnabledSetParams { true }
 
bool httpControlAllow { false }
 
std::atomic_bool httpControlActive { false }
 
xmlNode * confnode = { nullptr }
 
timeout_t polltime = { 100 }
 
timeout_t updatetime = { 100 }
 
IOList iolist
 
size_t maxItem = { 0 }
 
size_t maxReadItems = { 0 }
 
size_t maxWriteItems = { 0 }
 
Channel channels [numChannels]
 
uniset::Trigger noConnections
 
std::atomic_uint32_t currentChannel = { 0 }
 
uniset::timeout_t reconnectPause = { 10000 }
 
int filtersize = { 0 }
 
float filterT = { 0.0 }
 
std::string s_field
 
std::string s_fvalue
 
std::optional< std::regex > s_fvalue_re
 
std::shared_ptr< SMInterfaceshm
 
std::string prop_prefix
 
const std::string argprefix
 
PassiveTimer ptHeartBeat
 
uniset::ObjectId sidHeartBeat
 
int maxHeartBeat = { 10 }
 
IOController::IOStateList::iterator itHeartBeat
 
bool force = { false }
 
bool force_out = { false }
 
bool writeToAllChannels = { false }
 
timeout_t smReadyTimeout = { 15000 }
 
bool enableSubscription = {false}
 
double publishingInterval = { 0.0 }
 
double samplingInterval = { -1.0 }
 
uint16_t timeoutIterate = {100}
 
uint16_t stopOnError = {0U}
 
std::atomic< uint32_t > connectCount = {0U}
 
std::atomic_bool subscription_ok = {false}
 
std::atomic_bool newSessionActivated = {false}
 
std::atomic_bool activated = { false }
 
std::atomic_bool cancelled = { false }
 
std::atomic_bool readconf_ok = { false }
 
int activateTimeout
 
uniset::ObjectId sidTestSMReady = { uniset::DefaultObjectId }
 
uniset::ObjectId sidRespond = {uniset::DefaultObjectId }
 
IOController::IOStateList::iterator itRespond
 
std::shared_ptr< LogAgregatorloga
 
std::shared_ptr< DebugStreamopclog
 
std::shared_ptr< LogServerlogserv
 
std::string logserv_host = {""}
 
int logserv_port = {0}
 
std::shared_ptr< ThreadCreator< OPCUAExchange > > thrChannel [numChannels]
 
uniset::ObjectId sidExchangeMode = { uniset::DefaultObjectId }
 
IOController::IOStateList::iterator itExchangeMode
 
std::atomic< long > exchangeMode = { emNone }
 
std::atomic< long > sensorExchangeMode = { emNone }
 
VMonitor vmon
 
std::list< ErrorRecorderrorHistory
 
std::unordered_map< ErrorKey, std::list< ErrorRecord >::iterator, ErrorKeyHasherrorHistoryIndex
 
size_t errorHistoryMax { 100 }
 
std::mutex errorHistoryMutex
 
std::atomic< uint64_t > totalReadErrors { 0 }
 
std::atomic< uint64_t > totalWriteErrors { 0 }
 
std::atomic< uint64_t > totalConnectionLosses { 0 }
 
std::chrono::steady_clock::time_point startTime
 
- Защищенные данные унаследованные от uniset::UniSetObject
std::shared_ptr< UInterfaceui
 
std::string myname
 
std::weak_ptr< UniSetManagermymngr
 
- Защищенные данные унаследованные от uniset::LT_Object
timeout_t sleepTime
 

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

Процесс опроса OPC UA сервера

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

◆ ExchangeMode

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

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

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

emWriteOnly 

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

emReadOnly 

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

emSkipSaveToSM 

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

emSkipExchange 

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

◆ StopMode

Режимы остановки при ошибке

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

Не останавливать процесс (по-умолчанию)

smFirstOnly 

Остановка только по ошибке при инициализации

smAny 

Остановка при любой ошибке чтения/инициализации

Методы

◆ activateObject()

bool uniset::OPCUAExchange::activateObject ( )
overrideprotectedvirtual

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

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

◆ deactivateObject()

bool uniset::OPCUAExchange::deactivateObject ( )
overrideprotectedvirtual

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

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

◆ getInfo()

SimpleInfo * uniset::OPCUAExchange::getInfo ( const char *  userparam = 0)
overridevirtual

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

◆ httpGetMyInfo()

Poco::JSON::Object::Ptr uniset::OPCUAExchange::httpGetMyInfo ( Poco::JSON::Object::Ptr  root)
overridevirtual

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

◆ httpHelp()

Poco::JSON::Object::Ptr uniset::OPCUAExchange::httpHelp ( const Poco::URI::QueryParameters &  p)
overridevirtual

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

◆ httpRequest()

Poco::JSON::Object::Ptr uniset::OPCUAExchange::httpRequest ( const UHttp::HttpRequestContext ctx)
overridevirtual

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

◆ sensorInfo()

void uniset::OPCUAExchange::sensorInfo ( const uniset::SensorMessage sm)
overrideprotectedvirtual

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

◆ sysCommand()

void uniset::OPCUAExchange::sysCommand ( const uniset::SystemMessage sm)
overrideprotectedvirtual

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

◆ timerInfo()

void uniset::OPCUAExchange::timerInfo ( const uniset::TimerMessage sm)
overrideprotectedvirtual

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

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

◆ confnode

xmlNode* uniset::OPCUAExchange::confnode = { nullptr }
protected

xml-узел в настроечном файле

◆ connectCount

std::atomic<uint32_t> uniset::OPCUAExchange::connectCount = {0U}
protected

Считаем количество успешных подключений к серверу

◆ errorHistoryMax

size_t uniset::OPCUAExchange::errorHistoryMax { 100 }
protected

максимальный размер истории ошибок

◆ exchangeMode

std::atomic<long> uniset::OPCUAExchange::exchangeMode = { emNone }
protected

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

◆ force

bool uniset::OPCUAExchange::force = { false }
protected

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

◆ force_out

bool uniset::OPCUAExchange::force_out = { false }
protected

флаг, включающий принудительное чтение/запись датчиков в SM

◆ httpControlActive

std::atomic_bool uniset::OPCUAExchange::httpControlActive { false }
protected

перехват активен (runtime)

◆ httpControlAllow

bool uniset::OPCUAExchange::httpControlAllow { false }
protected

разрешён перехват управления (из конфига)

◆ iolist

IOList uniset::OPCUAExchange::iolist
protected

список входов/выходов

◆ polltime

timeout_t uniset::OPCUAExchange::polltime = { 100 }
protected

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

◆ sensorExchangeMode

std::atomic<long> uniset::OPCUAExchange::sensorExchangeMode = { emNone }
protected

последнее значение режима от датчика/SM

◆ sidExchangeMode

uniset::ObjectId uniset::OPCUAExchange::sidExchangeMode = { uniset::DefaultObjectId }
protected

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

◆ smReadyTimeout

timeout_t uniset::OPCUAExchange::smReadyTimeout = { 15000 }
protected

время ожидания готовности SM к работе, мсек

◆ stopOnError

uint16_t uniset::OPCUAExchange::stopOnError = {0U}
protected

параметр, для выбора поведения процесса при ошибке в OPCUA

◆ updatetime

timeout_t uniset::OPCUAExchange::updatetime = { 100 }
protected

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

◆ writeToAllChannels

bool uniset::OPCUAExchange::writeToAllChannels = { false }
protected

флаг, включающий запись во все каналы, по умолчанию только в активный