Commit 744ac23a authored by Pavel Vainerman's avatar Pavel Vainerman

(ModbusTCP): исправил ошибку в выставлении датчиков связи по каналам

parent ceedacdc
......@@ -13,7 +13,7 @@
Name: libuniset2
Version: 2.1
Release: alt16.1
Release: alt16.2
Summary: UniSet - library for building distributed industrial control systems
......@@ -456,6 +456,9 @@ mv -f %buildroot%python_sitelibdir_noarch/* %buildroot%python_sitelibdir/%oname
# ..
%changelog
* Fri Aug 21 2015 Pavel Vainerman <pv@altlinux.ru> 2.1-alt16.2
- (ModbusTCP): fixed bug in update respond sensor in SharedMemory
* Thu Aug 20 2015 Pavel Vainerman <pv@altlinux.ru> 2.1-alt16.1
- (ModbusTCP): add more vmonit parameters
......
......@@ -80,7 +80,7 @@
</MBMaster1>
<MBMultiMaster1 levels="info,warn,crit" name="MBMaster1" polltime="200">
<DeviceList>
<item addr="0x01" invert="0" force="0" respondSensor="RespondRTU_S" timeout="1000" modeSensor="MB1_Mode_AS"/>
<item addr="0x01" invert="1" force="0" respondSensor="RespondRTU_S" timeout="1000" modeSensor="MB1_Mode_AS"/>
</DeviceList>
<GateList>
<item ip="localhost" port="2048" recv_timeout="800" invert="1" respondSensor="MM1_Not_Respond_S"/>
......
......@@ -3138,7 +3138,7 @@ void MBExchange::updateRespondSensors()
{
RTUDevice* d(it1.second);
if( d->resp_id != DefaultObjectId && (d->checkRespond(mblog) || d->resp_ptInit.checkTime()) )
if( d->resp_id != DefaultObjectId && (d->checkRespond(mblog) || d->resp_force || d->resp_ptInit.checkTime()) )
{
try
{
......
......@@ -363,17 +363,16 @@ void MBTCPMultiMaster::check_thread()
{
try
{
if( it->use ) // игнорируем текущий mbtcp
continue;
// Если use=1" связь не проверяем и считаем что связь есть..
bool r = ( it->use ? true : it->check() );
bool r = it->check();
mblog4 << myname << "(check): " << it->myname << " " << ( r ? "OK" : "FAIL" ) << endl;
try
{
if( it->respond_id != DefaultObjectId && (it->respond_force || !it->respond_init || r != it->respond) )
{
bool set = it->respond_invert ? !it->respond : it->respond;
bool set = it->respond_invert ? !r : r;
shm->localSetValue(it->respond_it, it->respond_id, (set ? 1 : 0), getId());
it->respond_init = true;
}
......
......@@ -280,6 +280,7 @@ class MBTCPMultiMaster:
bool check();
inline void setUse( bool st )
{
respond_init = !( st && !use );
use = st;
}
......
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