Commit 5d790f2d authored by Vitaly Lipatov's avatar Vitaly Lipatov

Merge branch 'master' into utf8

Conflicts: docs/DocPages/Concept.dox docs/DocPages/commitpage.dox docs/DocPages/todo.dox extensions/IOControl/IOControl.h
parents 38d8cc7b 8c76ec2e
......@@ -354,7 +354,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId code,
<xsl:template name="gensetdata">
<xsl:choose>
<xsl:when test="normalize-space(../../@iotype)='DO'">
ui.setState( <xsl:value-of select="../../@name"/>, <xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/>, node_<xsl:value-of select="../../@name"/>, );
ui.setState( <xsl:value-of select="../../@name"/>, <xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/>, node_<xsl:value-of select="../../@name"/> );
</xsl:when>
<xsl:when test="normalize-space(../../@iotype)='AO'">
ui.setValue( <xsl:value-of select="../../@name"/>, <xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/>, node_<xsl:value-of select="../../@name"/> );
......
......@@ -3,7 +3,7 @@
Name: libuniset
Version: 0.97
Release: eter62
Release: eter64
Summary: UniSet - library for building distributed industrial control systems
License: GPL
Group: Development/C++
......@@ -184,6 +184,12 @@ rm -f %buildroot%_libdir/*.la
%exclude %_pkgconfigdir/libUniSet.pc
%changelog
* Fri Apr 09 2010 Pavel Vainerman <pv@altlinux.ru> 0.97-eter64
- fixed bug in uniset-codegen
* Sun Mar 28 2010 Pavel Vainerman <pv@altlinux.ru> 0.97-eter63
- optimization
* Sat Mar 27 2010 Pavel Vainerman <pv@altlinux.ru> 0.97-eter62
- minor fixes in SM (add virtual function)
......
/*! \page page_Concept Основные понятия
В библиотеке \b uniset имеется ряд основопологающих кубиков (терминов)
из которых складывается библиотека и которые используются во многогих
В библиотеке \b uniset имеется ряд основопологающих кубиков (терминов),
из которых складывается библиотека, и которые используются во многих
местах данной документации. Здесь приводятся определения этих терминов.
- \ref sec_Cnpt_Object
......@@ -32,9 +32,9 @@
Вся система взаимодейтсвия между объектами в основном
построена на использовании сообщений (передаваемых
путём удаленного вызова специальных функций,
посредством CORBA). При этом, основные
посредством CORBA). При этом основные
типы сообщений объявлены в файле MessageType.h. Каждое
сообщение имеет свой уникальный идентификатор (enum).
сообщение имеет свой уникальный идентификатор (enum).
См. UniSetTypes::Message::TypeOfMessage.
Для разработчиков систем на основе libuniset, заложена
......@@ -122,9 +122,9 @@ UniSetTypes::Message::TheLastFieldOfTypeOfMessage.
для каждого объекта. На практике, это оказывается не сложно,
потому-что объекты вносятся в файл по мере необходимости небольшими
порциями или же эта часть файла может быть сгенерирована автоматически.
К плюсам данного способа можно отнести, то, что идентификаторы могут быть
"осмысленными" (например являтся кодами сигналов или
группироватся диапазонами по определённой логике).
К плюсам данного способа можно отнести, то, что идентификаторы могут быть
"осмысленными" (например являться кодами сигналов или
группироваться диапазонами по определённой логике).
Для ручного задания идентификаторов, необходимо в секциях
\b <nodes>,\b <sensors>,\b <objects>,\b <controllers>,\b <services>
задать поле \b id.
......@@ -187,27 +187,27 @@ UniSetTypes::Message::TheLastFieldOfTypeOfMessage.
"Входы"(DI,AI) - это информация от объекта "в систему управления".
Помимо этого, датчики не обязательно должны быть "живыми" входами или выходами.
При помощи этих четырёх типов, можно кодировать любую информацию,
Например можно передавать сообщения оператору, зараннее создавая для каждого
Например можно передавать сообщения оператору, заранее создавая для каждого
сообщения свой "датчик" и в случае необходимости послать сообщение
выставлять его в "1".
Удобство и универсальность датчиков (цифр) позволяет использовать для
передачи данных большое число различных протоколов, расчитанных
на передачу цифровой информации (не текстовой).
Например CAN,ModbusRTU,ModbusTCP и т.п.
на передачу цифровой информации (не текстовой).
Например CAN, ModbusRTU, ModbusTCP и т.п.
\section sec_Cnpt_Process Процесс
Под процессом в документации чаще всего подразумевается системный
процесс (запущенная программа) выполняющий те или иные функции управления
и обменивающийся для этого с другими процессами сообщениями или
и обменивающийся для этого с другими процессами сообщениями или
удалённо вызывающий функции других объектов.
Чаще всего понятия процесс и объект совпадают.
В некоторых случаях процесс может содержать несколько
взаимодействющих объектов. Все процессы в системе - многопоточные.
взаимодействующих объектов. Все процессы в системе - многопоточные.
Так как для взаимодействия с другими объектами (процессами)
в обязательном порядке создаются потоки для CORBA, а также
в обязательном порядке создаются потоки для CORBA, а также
у каждого объекта создаётся свой поток обработки сообщений
(если его специально не отключить).
Если в документации речь идёт о "процессе" как последовательности
Если в документации речь идёт о "процессе", как последовательности
действий во времени, это должно быть очевидно из контекста.
*/
\ No newline at end of file
*/
/*!
<<<<<<< HEAD
/*! OBSOLETE DOC!!
\page CommitPage Общее описание библиотеки UniSet
- \ref secSection1
......
......@@ -13,7 +13,7 @@
-# сделать тип в UniSetObject::getType string-ом
(для универсальности и простоты будущих расширений)
-# переписать тестовые примеры, под текущую ситуацию.
-# в будущем попытатся отказатся от ObjectId и перейти на строки
-# в будущем попытатся отказатся от ObjectId и перейти на строки (это надо ещё обдумать)
-# перенести настройки размера очереди сообщений для UniSetObject-ов в конф.файл
-# разработать API(на php), для web-интерфейса накопленной статистикики и журналов.
-# в InfoServer-е по routeList-у сообщения пересылаются, только если они локальные.
......
......@@ -35,7 +35,7 @@
--io-confnode name - Использовать для настройки указанный xml-узел
--io-name name - ID процесса. По умолчанию IOController1.
--io-numcards - Количество кард в/в. По умолчанию 1.
--io-numcards - Количество карт в/в. По умолчанию 1.
--iodev0 dev - Использовать для card='0' указанный файл comedi-устройства.
--iodev1 dev - Использовать для card='1' указанный файл comedi-устройства.
--iodev2 dev - Использовать для card='2' указанный файл comedi-устройства.
......@@ -118,7 +118,7 @@
Т.е. на самом деле дискретный выход, который может иметь три состояния
UniSetTypes::lmpOFF - выключен
UniSetTypes::lmpON - включен
UniSetTypes::lmpBLINK1 - мигание с частотой 1
UniSetTypes::lmpBLINK - мигание с частотой 1
UniSetTypes::lmpBLINK2 - мигание с частотой 2
UniSetTypes::lmpBLINK3 - мигание с частотой 3
......
......@@ -1470,14 +1470,18 @@ bool MBTCPMaster::initDeviceInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, UniX
dlog[Debug::INFO] << myname << "(initDeviceInfo): add addr=" << ModbusRTU::addr2str(a)
<< " force_disconnect=" << d->second->force_disconnect
<< " ask_every_reg=" << d->second->ask_every_reg << endl;
d->second->resp_id = conf->getSensorID(it.getProp("respondSensor"));
if( d->second->resp_id == DefaultObjectId )
{
dlog[Debug::CRIT] << myname << "(initDeviceInfo): not found ID for noRespondSensor=" << it.getProp("respondSensor") << endl;
return true;
}
string s(it.getProp("respondSensor"));
if( !s.empty() )
{
d->second->resp_id = conf->getSensorID(s);
if( d->second->resp_id == DefaultObjectId )
{
dlog[Debug::CRIT] << myname << "(initDeviceInfo): not found ID for noRespondSensor=" << s << endl;
return false;
}
}
dlog[Debug::INFO] << myname << "(initDeviceInfo): add addr=" << ModbusRTU::addr2str(a) << endl;
int tout = it.getPIntProp("timeout", UniSetTimer::WaitUpTime);
d->second->resp_ptTimeout.setTiming(tout);
......
......@@ -1607,7 +1607,7 @@ bool RTUExchange::initDeviceInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, UniX
if( d->second->resp_id == DefaultObjectId )
{
dlog[Debug::CRIT] << myname << "(initDeviceInfo): not found ID for noRespondSensor=" << it.getProp("respondSensor") << endl;
return true;
return false;
}
}
......
......@@ -4,7 +4,7 @@ export LD_LIBRARY_PATH="../../lib/.libs;../lib/.libs"
ulimit -Sc 10000000000
./uniset-start.sh -f ./uniset-smemory --smemory-id SharedMemory --pulsar-id DO_C \
./uniset-start.sh -f ./uniset-smemory --smemory-id SharedMemory --pulsar-id DO_C --pulsar-iotype DO \
--confile test.xml --datfile test.xml \
--unideb-add-levels info,crit,warn,level9,system \
--dlog-add-levels info,crit,warn
......
......@@ -90,6 +90,8 @@ SMInterface::SMInterface( UniSetTypes::ObjectId _shmID, UniversalInterface* _ui,
shmID(_shmID),
myid(_myid)
{
if( shmID == DefaultObjectId )
throw UniSetTypes::SystemError("(SMInterface): Unknown shmID!" );
}
// --------------------------------------------------------------------------
SMInterface::~SMInterface()
......
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