Commit 098c55eb authored by Pavel Vainerman's avatar Pavel Vainerman

(MBSlave): исправил ошибку с неправильной работой счётчика запросов

parent 2c7ee345
...@@ -60,6 +60,9 @@ ...@@ -60,6 +60,9 @@
</GateList> </GateList>
</MBMultiMaster1> </MBMultiMaster1>
<MBSlave2 addr="0x3">
</MBSlave2>
<MBSlave1 addr="0x31" aftersend-pause="0" dev="/dev/ttyS0" levels="info,warn,crit" name="MBSlave1" poll_time="200" reply_timeout="60" speed="9600"> <MBSlave1 addr="0x31" aftersend-pause="0" dev="/dev/ttyS0" levels="info,warn,crit" name="MBSlave1" poll_time="200" reply_timeout="60" speed="9600">
<filelist> <filelist>
<!-- Список файлов разрешённых для передачи по modbus <!-- Список файлов разрешённых для передачи по modbus
...@@ -207,6 +210,7 @@ ...@@ -207,6 +210,7 @@
<item id="55" iotype="AI" name="AI55_S" textname="AI sensor 55" rrd="1" rrd1_ds="GAUGE:20:U:U"/> <item id="55" iotype="AI" name="AI55_S" textname="AI sensor 55" rrd="1" rrd1_ds="GAUGE:20:U:U"/>
<item id="56" iotype="AI" name="AI56_S" textname="AI sensor 56" rrd="2" rrd2_ds="COUNTER:20:U:U"/> <item id="56" iotype="AI" name="AI56_S" textname="AI sensor 56" rrd="2" rrd2_ds="COUNTER:20:U:U"/>
<item id="57" iotype="AI" name="AI57_S" textname="AI sensor 57" rrd="2" rrd2_ds="DERIVE:20:U:U"/> <item id="57" iotype="AI" name="AI57_S" textname="AI sensor 57" rrd="2" rrd2_ds="DERIVE:20:U:U"/>
<item id="58" iotype="AI" name="SVU_AskCount_AS" textname="svu asl count"/>
</sensors> </sensors>
<thresholds name="thresholds"> <thresholds name="thresholds">
<sensor iotype="AI" name="AI_AS"> <sensor iotype="AI" name="AI_AS">
...@@ -244,6 +248,7 @@ ...@@ -244,6 +248,7 @@
<item id="6009" name="MBMaster2"/> <item id="6009" name="MBMaster2"/>
<item id="6010" name="MBMultiMaster1"/> <item id="6010" name="MBMultiMaster1"/>
<item id="6011" name="RRDStorage1"/> <item id="6011" name="RRDStorage1"/>
<item id="6012" name="MBSlave2"/>
</objects> </objects>
</ObjectsMap> </ObjectsMap>
<messages idfromfile="1" name="messages"> <messages idfromfile="1" name="messages">
......
...@@ -379,6 +379,7 @@ void MBSlave::execute_rtu() ...@@ -379,6 +379,7 @@ void MBSlave::execute_rtu()
{ {
ModbusRTUSlaveSlot* rscomm = dynamic_cast<ModbusRTUSlaveSlot*>(mbslot); ModbusRTUSlaveSlot* rscomm = dynamic_cast<ModbusRTUSlaveSlot*>(mbslot);
ModbusRTU::mbErrCode prev = erNoError;
while(1) while(1)
{ {
try try
...@@ -395,10 +396,10 @@ void MBSlave::execute_rtu() ...@@ -395,10 +396,10 @@ void MBSlave::execute_rtu()
askCount = askCount>=numeric_limits<long>::max() ? 0 : askCount+1; askCount = askCount>=numeric_limits<long>::max() ? 0 : askCount+1;
if( res!=ModbusRTU::erNoError ) if( res!=ModbusRTU::erNoError )
errmap[res]++; errmap[res]++;
prev = res;
} }
prev = res;
if( res!=ModbusRTU::erNoError && res!=ModbusRTU::erTimeOut ) if( res!=ModbusRTU::erNoError && res!=ModbusRTU::erTimeOut )
dlog[Debug::WARN] << myname << "(execute_rtu): " << ModbusRTU::mbErr2Str(res) << endl; dlog[Debug::WARN] << myname << "(execute_rtu): " << ModbusRTU::mbErr2Str(res) << endl;
...@@ -460,6 +461,8 @@ void MBSlave::execute_tcp() ...@@ -460,6 +461,8 @@ void MBSlave::execute_tcp()
{ {
ModbusTCPServerSlot* sslot = dynamic_cast<ModbusTCPServerSlot*>(mbslot); ModbusTCPServerSlot* sslot = dynamic_cast<ModbusTCPServerSlot*>(mbslot);
ModbusRTU::mbErrCode prev = erNoError;
while(1) while(1)
{ {
try try
...@@ -476,9 +479,9 @@ void MBSlave::execute_tcp() ...@@ -476,9 +479,9 @@ void MBSlave::execute_tcp()
askCount = askCount>=numeric_limits<long>::max() ? 0 : askCount+1; askCount = askCount>=numeric_limits<long>::max() ? 0 : askCount+1;
if( res!=ModbusRTU::erNoError ) if( res!=ModbusRTU::erNoError )
errmap[res]++; errmap[res]++;
prev = res;
} }
prev = res;
if( res!=ModbusRTU::erNoError && res!=ModbusRTU::erTimeOut ) if( res!=ModbusRTU::erNoError && res!=ModbusRTU::erTimeOut )
dlog[Debug::WARN] << myname << "(execute_tcp): " << ModbusRTU::mbErr2Str(res) << endl; dlog[Debug::WARN] << myname << "(execute_tcp): " << ModbusRTU::mbErr2Str(res) << endl;
......
...@@ -185,7 +185,6 @@ class MBSlave: ...@@ -185,7 +185,6 @@ class MBSlave:
bool respond_invert; bool respond_invert;
PassiveTimer ptTimeout; PassiveTimer ptTimeout;
ModbusRTU::mbErrCode prev;
long askCount; long askCount;
typedef std::map<ModbusRTU::mbErrCode,unsigned int> ExchangeErrorMap; typedef std::map<ModbusRTU::mbErrCode,unsigned int> ExchangeErrorMap;
ExchangeErrorMap errmap; /*!< статистика обмена */ ExchangeErrorMap errmap; /*!< статистика обмена */
......
#!/bin/sh #!/bin/sh
uniset-start.sh -f ./uniset-mbslave --confile test.xml --dlog-add-levels info,crit,warn \ uniset-start.sh -f ./uniset-mbslave --confile test.xml --dlog-add-levels info,crit,warn \
--smemory-id SharedMemory \
--mbs-name MBSlave1 \ --mbs-name MBSlave1 \
--mbs-type TCP --mbs-inet-addr 127.0.0.1 --mbs-inet-port 2048 --mbs-reg-from-id 1 --mbs-my-addr 0x01 \ --mbs-type TCP --mbs-inet-addr 127.0.0.1 --mbs-inet-port 2048 --mbs-reg-from-id 1 --mbs-my-addr 0x01 \
--mbs-askcount-id SVU_AskCount_AS --mbs-respond-id RespondRTU_S --mbs-respond-invert 1 --mbs-askcount-id SVU_AskCount_AS --mbs-respond-id RespondRTU_S --mbs-respond-invert 1
......
#!/bin/sh
uniset-start.sh -f ./uniset-mbslave --confile test.xml --dlog-add-levels info,crit,warn \
--smemory-id SharedMemory \
--mbs-name MBSlave2 --mbs-type TCP --mbs-inet-addr localhost --mbs-inet-port 2050 --mbs-reg-from-id 1 --mbs-my-addr 0x01 \
# --mbs-askcount-id SVU_AskCount_AS --mbs-respond-id RespondRTU_S --mbs-respond-invert 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