Commit be3c8fbf authored by Pavel Vainerman's avatar Pavel Vainerman

(Modbus): немного подправил вывод логов и ошибок связи

Conflicts: extensions/ModbusMaster/MBExchange.cc src/Communications/Modbus/ModbusTCPMaster.cc
parent 62de689b
......@@ -28,7 +28,7 @@ no_extimer(false),
prefix(prefix),
poll_count(0),
prop_prefix(""),
mb(0),
mb(nullptr),
pollActivated(false)
{
if( objId == DefaultObjectId )
......@@ -649,7 +649,7 @@ bool MBExchange::initSMValue( ModbusRTU::ModbusData* data, int count, RSProperty
if( p->nbit >= 0 )
{
bool set = b[p->nbit];
IOBase::processingAsDI( p, set, shm, force );
IOBase::processingAsDI( p, set, shm, true );
return true;
}
......@@ -658,10 +658,10 @@ bool MBExchange::initSMValue( ModbusRTU::ModbusData* data, int count, RSProperty
if( p->stype == UniversalIO::DI ||
p->stype == UniversalIO::DO )
{
IOBase::processingAsDI( p, data[0], shm, force );
IOBase::processingAsDI( p, data[0], shm, true );
}
else
IOBase::processingAsAI( p, (signed short)(data[0]), shm, force );
IOBase::processingAsAI( p, (signed short)(data[0]), shm, true );
return true;
}
......@@ -676,10 +676,10 @@ bool MBExchange::initSMValue( ModbusRTU::ModbusData* data, int count, RSProperty
if( p->stype == UniversalIO::DI ||
p->stype == UniversalIO::DO )
{
IOBase::processingAsDI( p, data[0], shm, force );
IOBase::processingAsDI( p, data[0], shm, true );
}
else
IOBase::processingAsAI( p, (signed short)(data[0]), shm, force );
IOBase::processingAsAI( p, (signed short)(data[0]), shm, true );
return true;
}
......@@ -688,10 +688,10 @@ bool MBExchange::initSMValue( ModbusRTU::ModbusData* data, int count, RSProperty
if( p->stype == UniversalIO::DI ||
p->stype == UniversalIO::DO )
{
IOBase::processingAsDI( p, data[0], shm, force );
IOBase::processingAsDI( p, data[0], shm, true );
}
else
IOBase::processingAsAI( p, (unsigned short)data[0], shm, force );
IOBase::processingAsAI( p, (unsigned short)data[0], shm, true );
return true;
}
......@@ -705,28 +705,28 @@ bool MBExchange::initSMValue( ModbusRTU::ModbusData* data, int count, RSProperty
}
VTypes::Byte b(data[0]);
IOBase::processingAsAI( p, b.raw.b[p->nbyte-1], shm, force );
IOBase::processingAsAI( p, b.raw.b[p->nbyte-1], shm, true );
return true;
}
else if( p->vType == VTypes::vtF2 )
{
VTypes::F2 f(data,VTypes::F2::wsize());
IOBase::processingFasAI( p, (float)f, shm, force );
IOBase::processingFasAI( p, (float)f, shm, true );
}
else if( p->vType == VTypes::vtF4 )
{
VTypes::F4 f(data,VTypes::F4::wsize());
IOBase::processingFasAI( p, (float)f, shm, force );
IOBase::processingFasAI( p, (float)f, shm, true );
}
else if( p->vType == VTypes::vtI2 )
{
VTypes::I2 i2(data,VTypes::I2::wsize());
IOBase::processingAsAI( p, (int)i2, shm, force );
IOBase::processingAsAI( p, (int)i2, shm, true );
}
else if( p->vType == VTypes::vtU2 )
{
VTypes::U2 u2(data,VTypes::U2::wsize());
IOBase::processingAsAI( p, (unsigned int)u2, shm, force );
IOBase::processingAsAI( p, (unsigned int)u2, shm, true );
}
return true;
......@@ -1064,7 +1064,7 @@ void MBExchange::updateRSProperty( RSProperty* p, bool write_only )
if( save && !r->mb_initOK )
return;
dlog3 << myname << "updateP: sid=" << p->si.id
dlog3 << myname << "(updateP): sid=" << p->si.id
<< " mbval=" << r->mbval
<< " vtype=" << p->vType
<< " rnum=" << p->rnum
......@@ -2038,6 +2038,16 @@ bool MBExchange::initItem( UniXML_iterator& it )
}
mbreg = ModbusRTU::str2mbData(reg);
}
if( p.nbit != -1 )
{
if( fn == ModbusRTU::fnReadCoilStatus || fn == ModbusRTU::fnReadInputStatus )
{
dcrit << myname << "(initItem): MISMATCHED CONFIGURATION! nbit=" << p.nbit << " func=" << fn
<< " for " << it.getProp("name") << endl;
return false;
}
}
}
// формула для вычисления ID
......
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