Commit 178b230a authored by Pavel Vainerman's avatar Pavel Vainerman

(Modbus): Теперь в качестве префикса для modbus-свойств (у датчиков)

используется не жёстко заданное свойство (tcp_), а название указанное в качестве "filter-field". НЕСОВМЕСТИМОСТЬ с предыдущими версиями!
parent ce1a189a
......@@ -3,7 +3,7 @@
Name: libuniset
Version: 1.0
Release: alt51
Release: alt52
Summary: UniSet - library for building distributed industrial control systems
License: GPL
Group: Development/C++
......@@ -212,6 +212,9 @@ rm -f %buildroot%_libdir/*.la
%changelog
* Wed Nov 16 2011 Pavel Vainerman <pv@altlinux.ru> 1.0-alt52
- (modbus): An opportunity to change the prefix is added to the properties
* Wed Nov 02 2011 Pavel Vainerman <pv@altlinux.ru> 1.0-alt51
- (unet2): added reserv channel exchange
......
......@@ -150,6 +150,7 @@ void MBExchange::help_print( int argc, const char* const* argv )
cout << "--prefix-statistic-sec sec - Выводить статистику опроса каждые sec секунд" << endl;
cout << "--prefix-sm-ready-timeout - время на ожидание старта SM" << endl;
cout << "--prefix-exchange-mode-id - Идентификатор (AI) датчика, позволяющего управлять работой процесса" << endl;
cout << "--prefix-set-prop-prefix val - Использовать для свойств указанный или пустой префикс." << endl;
}
// -----------------------------------------------------------------------------
MBExchange::~MBExchange()
......
......@@ -17,12 +17,30 @@ force_disconnect(true),
mbtcp(0),
pollThread(0)
{
// cout << "$ $" << endl;
prop_prefix = "tcp_";
if( objId == DefaultObjectId )
throw UniSetTypes::SystemError("(MBTCPMaster): objId=-1?!! Use --" + prefix + "-name" );
// префикс для "свойств" - по умолчанию
prop_prefix = "tcp_";
// если задано поле для "фильтрации"
// то в качестве префикса используем его
if( !s_field.empty() )
prop_prefix = s_field + "_";
// если "принудительно" задан префикс
// используем его.
{
string p("--" + prefix + "-set-prop-prefix");
string v = conf->getArgParam(p,"");
if( !v.empty() )
prop_prefix = v;
// если параметр всё-таки указан, считаем, что это попытка задать "пустой" префикс
else if( findArgParam(p,conf->getArgc(),conf->getArgv()) !=-1 );
prop_prefix = "";
}
dlog[Debug::INFO] << myname << "(init): prop_prefix=" << prop_prefix << endl;
UniXML_iterator it(cnode);
// ---------- init MBTCP ----------
......
......@@ -106,6 +106,9 @@
\b --xxx-statistic-sec sec - при наличии выведет кол-во посланных запросов за этот промежуток времени.
\b --xxx-set-prop-prefix [str] - Использовать 'str' в качестве префикса для свойств.
Если не указать 'str' будет использован пустой префикс.
Если параметры не заданы, будет произведена попытка загрузить все датчики, у которых
присутствуют необходимые настроечные параметры.
......@@ -122,7 +125,12 @@
</sensors>
\endcode
К основным параметрам относятся следующие:
\warning По умолчанию для свойств используется префикс "tcp_". Но если задано поле \b filter-field,
то для свойств будет использован префикс <b>"filter-fileld"_</b>.
При этом при помощи --xxx-set-prop-prefix val можно принудительно задать префикс.
Если просто указать ключ --xxx-set-prop-prefix - будет использован "пустой" префикс (свойства без префикса).
К основным параметрам относятся следующие (префикс \b tcp_ - для примера):
- \b tcp_mbtype - [rtu] - пока едиственный разрешённый тип.
- \b tcp_mbaddr - адрес RTU-устройства.
- \b tcp_mbreg - запрашиваемый/записываемый регистр.
......
......@@ -11,7 +11,7 @@ lib_LTLIBRARIES = libUniSetMBTCPMaster.la libUniSetRTU.la
# -------------------- Mobus TCP -------------------
# не забывайте править версию в pc-файле
UMBTCP_VER=1:2:1
UMBTCP_VER=1:3:1
libUniSetMBTCPMaster_la_LDFLAGS = -version-info $(UMBTCP_VER)
......@@ -31,7 +31,7 @@ libUniSetMBTCPMaster_la_SOURCES = MBTCPMaster.cc
# -------------------- Mobus RTU -------------------
# не забывайте править версию в pc-файле
URTU_VER=2:0:0
URTU_VER=2:1:0
libUniSetRTU_la_LDFLAGS = -version-info $(URTU_VER)
libUniSetRTU_la_LIBADD = libMBMaster.la $(top_builddir)/lib/libUniSet.la \
......
......@@ -17,11 +17,29 @@ use485F(false),
transmitCtl(false),
rs_pre_clean(false)
{
prop_prefix = "";
if( objId == DefaultObjectId )
throw UniSetTypes::SystemError("(RTUExchange): objId=-1?!! Use --" + prefix + "-name" );
// префикс для "свойств" - по умолчанию
prop_prefix = "";
// если задано поле для "фильтрации"
// то в качестве префикса используем его
if( !s_field.empty() )
prop_prefix = s_field + "_";
// если "принудительно" задан префикс
// используем его.
{
string p("--" + prefix + "-set-prop-prefix");
string v = conf->getArgParam(p,"");
if( !v.empty() )
prop_prefix = v;
// если параметр всё-таки указан, считаем, что это попытка задать "пустой" префикс
else if( findArgParam(p,conf->getArgc(),conf->getArgv()) !=-1 );
prop_prefix = "";
}
dlog[Debug::INFO] << myname << "(init): prop_prefix=" << prop_prefix << endl;
UniXML_iterator it(cnode);
// ---------- init RS ----------
......
......@@ -6,6 +6,6 @@ includedir=@includedir@
Name: libUniSetMBTCPMaster
Description: Support library for UniSetModbusTCPMaster
Requires: libUniSetExtensions libUniSetSharedMemory
Version: 1.2.1
Version: 1.3.1
Libs: -L${libdir} -lUniSetMBTCPMaster
Cflags: -I${includedir}/uniset
......@@ -6,6 +6,6 @@ includedir=@includedir@
Name: libUniSetRTU
Description: Support library for UniSetRTUExchange
Requires: libUniSetExtensions
Version: 2.0.0
Version: 2.1.0
Libs: -L${libdir} -lUniSetRTU
Cflags: -I${includedir}/uniset
......@@ -12,6 +12,7 @@
--mbtcp-recv-timeout 5000 \
--mbtcp-force-disconnect 1 \
--mbtcp-polltime 5000 \
--mbtcp-exchange-mode-id MB1_Mode_AS
--mbtcp-exchange-mode-id MB1_Mode_AS \
--mbtcp-set-prop-prefix tcp_
#--mbtcp-filter-field mbtcp --mbtcp-filter-value 1
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