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

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

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