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

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

parent 8b57b541
......@@ -37,7 +37,7 @@
class NCRestorer;
//---------------------------------------------------------------------------
/*!
\page page_IONotifyController Хранение информации о состоянии с уведомлениями об изменении
\page page_IONotifyController Хранение информации о состоянии с уведомлениями об изменении (IONotifyController)
Класс IONotifyController расширяет набор задач класса IOController.
Для ознакомления с базовыми функциями см. \ref page_IOController
......@@ -93,8 +93,29 @@ class NCRestorer;
\section sec_NC_Thresholds Пороговые датчики
\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
* \todo Сделать логирование выходов
......
......@@ -487,7 +487,6 @@ CORBA::Long IOController::getRawValue(const IOController_i::SensorInfo& si)
if( it->second.type == UniversalIO::AI )
return UniSetTypes::lcalibrate(it->second.value,ci.minRaw,ci.maxRaw,ci.minCal,ci.maxCal,true);
// п╨п╟п╩п╦п╠я─я┐п╣п╪ п╡ п╬п╠я─п╟я┌п╫я┐я▌ я│я┌п╬я─п╬п╫я┐ (п╫п╟ п╡я▀я┘п╬п╢)
if( it->second.type == UniversalIO::AO )
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,
}
catch(Exception& ex)
{
if( unideb.debugging(Debug::WARN) )
unideb[Debug::WARN] << myname << "(askSensor): " << conf->oind->getNameById(si.id, si.node) << " catch "<< ex << endl;
}
catch( CORBA::SystemException& ex )
{
if( unideb.debugging(Debug::WARN) )
unideb[Debug::WARN] << conf->oind->getNameById(ci.id, ci.node)
<< " недоступен!!(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
}
catch(Exception& ex)
{
if( unideb.debugging(Debug::WARN) )
unideb[Debug::WARN] << myname << " не смогли сделать dump: " << ex << endl;
}
catch(...)
{
unideb[Debug::WARN] << myname << " не смогли сделать dump" << endl;
if( unideb.debugging(Debug::WARN) )
unideb[Debug::WARN] << myname << " не смогли сделать dump (catch...)" << endl;
}
}
else
......@@ -250,11 +259,13 @@ void IONotifyController::ask(AskMap& askLst, const IOController_i::SensorInfo& s
}
catch(Exception& ex)
{
if( unideb.debugging(Debug::WARN) )
unideb[Debug::WARN] << myname << " не смогли сделать dump: " << ex << endl;
}
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
}
catch(Exception& ex)
{
if( unideb.debugging(Debug::WARN) )
unideb[Debug::WARN] << myname << " не смогли сделать dump: " << ex << endl;
}
catch(...)
{
unideb[Debug::WARN] << myname << " не смогли сделать dump" << endl;
if( unideb.debugging(Debug::WARN) )
unideb[Debug::WARN] << myname << " не смогли сделать dump (catch...)" << endl;
}
}
}
......@@ -827,6 +840,7 @@ void IONotifyController::checkThreshold( IOStateList::iterator& li,
}
catch( UniSetTypes::Exception& ex )
{
if( unideb.debugging(Debug::CRIT) )
unideb[Debug::CRIT] << myname << "(checkThreshold): "
<< 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