Commit 586aad90 authored by Pavel Vainerman's avatar Pavel Vainerman

(2.0)(docs): подправил документацию, описал механизм настройки зависимостей между датчиками.

parent 8b57b541
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
class NCRestorer; class NCRestorer;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
/*! /*!
\page page_IONotifyController Хранение информации о состоянии с уведомлениями об изменении \page page_IONotifyController Хранение информации о состоянии с уведомлениями об изменении (IONotifyController)
Класс IONotifyController расширяет набор задач класса IOController. Класс IONotifyController расширяет набор задач класса IOController.
Для ознакомления с базовыми функциями см. \ref page_IOController Для ознакомления с базовыми функциями см. \ref page_IOController
...@@ -93,8 +93,29 @@ class NCRestorer; ...@@ -93,8 +93,29 @@ class NCRestorer;
\section sec_NC_Thresholds Пороговые датчики \section sec_NC_Thresholds Пороговые датчики
\section sec_NC_Depends Механизм зависимостей между датчиками \section sec_NC_Depends Механизм зависимостей между датчиками
Механизм зависимостей позволяет задать зависимость одного датчика, от другого.
Например пока "разрешающий" датчик не равен "1", у зависимого держится значение "0".
Зависимость настраивается в конфигурационном файле, непосредственно у "зависимого датчика".
<br>Доступные настройки:
- \b depend - задаёт имя датчика \b ОТ \b КОТОРОГО зависит данный
- \b depend_value - задаёт "разрешающее работу" значение (если поле не задано, считается depend_value="1").
- \b depend_off_value - задаёт значение которое будет выставлено для данного датчика, в случае его "блокировки". По умолчанию 0.
\code
...
<sensors ..>
...
<item id="11" iotype="AI" name="AI11_AS" textname="AI 11" depend="Input4_S" depend_off_value="-50"/>
...
</sensors>
\endcode
В данном примере можно увидеть, что датчик AI11_AS зависит от датчика Input4_S и пока Input4_S=0,
в AI11_AS будет записано значение -50. Как только Input4_S=1 в AI11_AS - появиться его истинное значение.
\note Следует иметь ввиду, что для \b ЗАВИСИМОГО датчика функция setValue(..) действует как обычно и
даже если он "заблокирован", значение в него можно сохранять. Оно "появиться" как только сниметься блокировка.
*/ */
//---------------------------------------------------------------------------
/*! \class IONotifyController /*! \class IONotifyController
* \todo Сделать логирование выходов * \todo Сделать логирование выходов
......
...@@ -487,7 +487,6 @@ CORBA::Long IOController::getRawValue(const IOController_i::SensorInfo& si) ...@@ -487,7 +487,6 @@ CORBA::Long IOController::getRawValue(const IOController_i::SensorInfo& si)
if( it->second.type == UniversalIO::AI ) if( it->second.type == UniversalIO::AI )
return UniSetTypes::lcalibrate(it->second.value,ci.minRaw,ci.maxRaw,ci.minCal,ci.maxCal,true); return UniSetTypes::lcalibrate(it->second.value,ci.minRaw,ci.maxRaw,ci.minCal,ci.maxCal,true);
// п╨п╟п╩п╦п╠я─я┐п╣п╪ п╡ п╬п╠я─п╟я┌п╫я┐я▌ я│я┌п╬я─п╬п╫я┐ (п╫п╟ п╡я▀я┘п╬п╢)
if( it->second.type == UniversalIO::AO ) if( it->second.type == UniversalIO::AO )
return UniSetTypes::lcalibrate(it->second.value,ci.minCal,ci.maxCal,ci.minRaw,ci.maxRaw,true); return UniSetTypes::lcalibrate(it->second.value,ci.minCal,ci.maxCal,ci.minRaw,ci.maxRaw,true);
} }
......
...@@ -194,15 +194,22 @@ void IONotifyController::askSensor(const IOController_i::SensorInfo& si, ...@@ -194,15 +194,22 @@ void IONotifyController::askSensor(const IOController_i::SensorInfo& si,
} }
catch(Exception& ex) catch(Exception& ex)
{ {
unideb[Debug::WARN] << myname << "(askSensor): " << conf->oind->getNameById(si.id, si.node) << " catch "<< ex << endl; if( unideb.debugging(Debug::WARN) )
unideb[Debug::WARN] << myname << "(askSensor): " << conf->oind->getNameById(si.id, si.node) << " catch "<< ex << endl;
} }
catch( CORBA::SystemException& ex ) catch( CORBA::SystemException& ex )
{ {
unideb[Debug::WARN] << conf->oind->getNameById(ci.id, ci.node) if( unideb.debugging(Debug::WARN) )
<< " недоступен!!(CORBA::SystemException): " unideb[Debug::WARN] << conf->oind->getNameById(ci.id, ci.node)
<< ex.NP_minorString() << endl; << " недоступен!!(CORBA::SystemException): "
} << ex.NP_minorString() << endl;
catch(...){} }
catch(...)
{
if( unideb.debugging(Debug::WARN) )
unideb[Debug::WARN] << conf->oind->getNameById(ci.id, ci.node)
<< " catch..." << endl;
}
} }
} }
...@@ -233,11 +240,13 @@ void IONotifyController::ask(AskMap& askLst, const IOController_i::SensorInfo& s ...@@ -233,11 +240,13 @@ void IONotifyController::ask(AskMap& askLst, const IOController_i::SensorInfo& s
} }
catch(Exception& ex) catch(Exception& ex)
{ {
unideb[Debug::WARN] << myname << " не смогли сделать dump: " << ex << endl; if( unideb.debugging(Debug::WARN) )
unideb[Debug::WARN] << myname << " не смогли сделать dump: " << ex << endl;
} }
catch(...) catch(...)
{ {
unideb[Debug::WARN] << myname << " не смогли сделать dump" << endl; if( unideb.debugging(Debug::WARN) )
unideb[Debug::WARN] << myname << " не смогли сделать dump (catch...)" << endl;
} }
} }
else else
...@@ -250,11 +259,13 @@ void IONotifyController::ask(AskMap& askLst, const IOController_i::SensorInfo& s ...@@ -250,11 +259,13 @@ void IONotifyController::ask(AskMap& askLst, const IOController_i::SensorInfo& s
} }
catch(Exception& ex) catch(Exception& ex)
{ {
unideb[Debug::WARN] << myname << " не смогли сделать dump: " << ex << endl; if( unideb.debugging(Debug::WARN) )
unideb[Debug::WARN] << myname << " не смогли сделать dump: " << ex << endl;
} }
catch(...) catch(...)
{ {
unideb[Debug::WARN] << myname << " не смогли сделать dump" << endl; if( unideb.debugging(Debug::WARN) )
unideb[Debug::WARN] << myname << " не смогли сделать dump (catch...)" << endl;
} }
} }
} }
...@@ -277,11 +288,13 @@ void IONotifyController::ask(AskMap& askLst, const IOController_i::SensorInfo& s ...@@ -277,11 +288,13 @@ void IONotifyController::ask(AskMap& askLst, const IOController_i::SensorInfo& s
} }
catch(Exception& ex) catch(Exception& ex)
{ {
unideb[Debug::WARN] << myname << " не смогли сделать dump: " << ex << endl; if( unideb.debugging(Debug::WARN) )
unideb[Debug::WARN] << myname << " не смогли сделать dump: " << ex << endl;
} }
catch(...) catch(...)
{ {
unideb[Debug::WARN] << myname << " не смогли сделать dump" << endl; if( unideb.debugging(Debug::WARN) )
unideb[Debug::WARN] << myname << " не смогли сделать dump (catch...)" << endl;
} }
} }
} }
...@@ -827,7 +840,8 @@ void IONotifyController::checkThreshold( IOStateList::iterator& li, ...@@ -827,7 +840,8 @@ void IONotifyController::checkThreshold( IOStateList::iterator& li,
} }
catch( UniSetTypes::Exception& ex ) catch( UniSetTypes::Exception& ex )
{ {
unideb[Debug::CRIT] << myname << "(checkThreshold): " if( unideb.debugging(Debug::CRIT) )
unideb[Debug::CRIT] << myname << "(checkThreshold): "
<< ex << endl; << ex << endl;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment