Hello.
Having an issue with Gateway Event timer scripts, manifested in that when the script is configured like so:
everytime the project being saved, the Gateway starts parallel thread and runs this script one more time in parallel to first one. The threads end only when their scripts finish working or the Gateway reboots.
The documentation on Gateway Event Scripts says:
So we have set all our scripts to Shared thread, but still as anyone saves the project we get another one thread.
Problem is that the script’s execution time varies widely from 60 sec to about 15000 sec (more than 4 hours) depending on many conditions.
The script is intended to collect data from one, but very slow OPC UA device so the program on the other side starts to receive multiple requests from many identical srcipts, which is not normal and causes failures and data errors.
Is there any way to make only one thread of script running at a time to avoid problems in data acquisition? Maybe make Gateway scripts restart on saving project, but I can’t figure out how to do that yet.
What additional data should I provide to solve the problem?
Thank You in advance.
Any related examples would be very appreciated.
And one more problem encountered (think it’s related to this post): Gateway Scripts diagnostics window doesn’t work for some reason with this script running:
With the script turned off Gateway Srcipt window opens normally.
Having Ignition version:
Script code’s part is listed below:
import time
from time import sleep
deviceName = "RM_NIKserver_ModbusGateway0"
try:
ErrorsThisSession = 0
print system.tag.write("[default]PowerMeters/scriptErrorsThisSession", 0) #обнуляем счетчик ошибок в данном цикле
ErrorsTotal = system.tag.read("[default]PowerMeters/scriptErrorsTotal").getValue() #считываем счетчик ошибок всего
except:
print "Cannot write [default]PowerMeters/scriptErrorsThisSession"
try:
a = system.tag.read("[default]PowerMeters/scriptCycleNumber") #увеличиваем счетчик циклов опроса
a.value = a.value + 1
print system.tag.write("[default]PowerMeters/scriptCycleNumber", a)
except:
result = 0
print "Could not read cycle number"
startTime = system.date.now()
tp = "[default]PowerMeters/scriptLastStarted.value" #запоминаем время начала скрипта
try:
# result = system.tag.write(tp, startTime)
print system.tag.write(tp, startTime)
except:
# result = 0
print "could not write [default]PowerMeters/scriptLastStarted.value"
print '>>> Script start at ', startTime
query = "SELECT * FROM RiverMall.counterlist where CounterResource='Electricity' and CounterManuf='NIK' ORDER BY SlaveID ASC"
data = system.db.runQuery(query)
print data, system.tag.write("[default]PowerMeters/scriptCountersTotal", data.getRowCount()) #записываем кол-во счетчиков всего
query = "SELECT * FROM RiverMall.counterlist where CounterResource='Electricity' and CounterStatus = 'connected' and CounterManuf='NIK' ORDER BY SlaveID ASC"
data = system.db.runQuery(query) #form a list of physical devices for data acquisition from DB
print data, system.tag.write("[default]PowerMeters/scriptCountersToRead", data.getRowCount()) #записываем кол-во счетчиков к вычитке
counter = 0
for counter in range(data.getRowCount()):
#------------- 10 попыток дисконнекта, не всегда срабатывает
print "discon...>",
for i in range(10):
try:
print str(i),
system.device.setDeviceEnabled(deviceName, 0)
sleep(3)
print "Ok >",
break
except:
print "failed disconnect >"
break
retryCount = 0
while 1:
print '.',
a = system.tag.read("[default]PowerMeters/Connection State")
print '.',
quality = a.getQuality()
print '.',
if not quality.isGood():
print quality, "+"
break
retryCount = retryCount + 1
if retryCount==100:
print "Could not disconnect."
break
#-------------
CounterName = data.getValueAt(counter,"CounterName")
server = "OPC UA"
slaveID = data.getValueAt(counter,"SlaveID")
slaveName = data.getValueAt(counter,"CounterName")
print str(deviceName) +" "+ str(slaveID)
if slaveID != None: #формируем массив адресов тего для вычитки OPC
path_SerialNo = "[" + str(deviceName) + "]" + str(slaveID) + ".IRS48:8"
#--------------------------------------------
#
#
#forming an array of parameters to request from modbusTCP-gate
#
#
#--------------------------------------------
## path_fullPower_3phase = "[" + str(deviceName) + "]" + str(slaveID) + ".IRF300"
paths = [path_SerialNo,
#--------------------------------------------
#
#
#forming an array of parameters to request from modbusTCP-gate
#
#
#--------------------------------------------
]
CounterTagFolderPath = data.getValueAt(counter,"CounterTagFolderPath")
tagPath_SerialNo = CounterTagFolderPath + "/serialNo" #формируем массив путей и имён тегов для записи значений
#--------------------------------------------
#
#
#forming an array of tag names to parse the request results into
#
#
#--------------------------------------------
tagPath_communicationStatus = CounterTagFolderPath + "/communicationStatus"
tagPaths = [tagPath_SerialNo,
#--------------------------------------------
#
#
#forming an array of tag names to parse the request results into
#
#
#--------------------------------------------
]
value = 1
result = system.tag.write("[default]PowerMeters/scriptTagsTotal", len(paths)), #записываем количество считываемых в этом цикле тегов
#------------- 10 попыток коннекта, не всегда срабатывает
print "conn...",
for i in range(10):
try:
print str(i),
a = system.device.setDeviceEnabled(deviceName, 1)
sleep(3)
print "Ok >",
break
except:
result = 0
print "failed to connect >"
retryCount = 0
while 1:
print '.',
a = system.tag.read("[default]PowerMeters/Connection State")
print '.',
quality = a.getQuality()
print '.',
if quality.isGood():
print quality, "+"
break
retryCount = retryCount + 1
if retryCount==1000:
print "no connection."
break
#-------------
values = []
try:
print "devID: ", str(counter-1)
print "Name: ", slaveName
print "Tags: ", len(paths)
for i in range(len(paths)):
a = system.tag.write("[default]PowerMeters/scriptCurrentDevice", "Id:" + str(slaveID) + " - " + slaveName), #записываем название счетчика, который вычитывается сейчас
a = system.tag.write("[default]PowerMeters/scriptTagCurrent", i), #записываем номер тега, который вычитывается сейчас
print str(i), str(system.date.now()), server, ":", paths[i], '==',
try:
value = system.opc.readValue(server, paths[i])
except:
print "cannot read parameter."
ErrorsThisSession = ErrorsThisSession + 1
ErrorsTotal = ErrorsTotal + 1
value = qualifiedValue(-1, 'bad')
a = system.tag.write("[default]PowerMeters/scriptErrorsThisSession", ErrorsThisSession) #обновляем счетчик ошибок в данном цикле
a = system.tag.write("[default]PowerMeters/scriptErrorsTotal", ErrorsTotal) #обновляем счетчик ошибок всего
continue
if paths[i] == path_Aplus_Actual_T0:
if value.getQuality().toString() == 'Bad': #Если тег не считался, пишем CommunicationStatus = 2
query = "UPDATE `RiverMall`.`counterlist` SET `CommunicationStatus` = '2' WHERE `CounterName` = \'" + CounterName + "\'"
a=system.db.runQuery(query)
a=system.tag.write(tagPath_communicationStatus, 2)
else: #Если тег считался, пишем CommunicationStatus = 1
query = "UPDATE `RiverMall`.`counterlist` SET `CommunicationStatus` = '1' WHERE `CounterName` = \'" + CounterName + "\'"
a=system.db.runQuery(query)
a=system.tag.write(tagPath_communicationStatus, 1)
value = (float(value.getValue() / float(1000))) #для актива+ масштабируем 1:1000
if paths[i] == path_Rminus_Actual_T0 or paths[i] == path_Rplus_Actual_T0: #для реактива+ и - масштабируем 1:1000
value = (float(value.getValue() / float(1000)))
print value
if (i % 15 == 0): # need to reconnect after each 16 tags been read
#---------------- disconnect
print "discon...>",
for i in range(10):
try:
print str(i),
system.device.setDeviceEnabled(deviceName, 0)
sleep(3)
print "Ok >",
break
except:
print "failed to disconnect >"
break
retryCount = 0
while 1:
print '.',
a = system.tag.read("[default]PowerMeters/Connection State")
print '.',
quality = a.getQuality()
print '.',
if not quality.isGood():
print quality, "+"
break
retryCount = retryCount + 1
if retryCount==100:
print "Could not disconnect."
break
#---------------- reconnect
print "conn...",
for i in range(10):
try:
print str(i),
a = system.device.setDeviceEnabled(deviceName, 1)
sleep(3)
print "Ok >",
break
except:
result = 0
print "failed to connect >"
retryCount = 0
while 1:
print '.',
a = system.tag.read("[default]PowerMeters/Connection State")
print '.',
quality = a.getQuality()
print '.',
if quality.isGood():
print quality, "+"
break
retryCount = retryCount + 1
if retryCount==1000:
print "no connection."
break
values.append(value)
#----------------
print "==============================================================="
print str(counter-1), ':', values
print "==============================================================="
try:
print "Writing to tags...",
tagsWritten = system.tag.writeBlocking(tagPaths, values)
tagSuccessWritten = system.tag.write("[default]PowerMeters/LastSuccessDevice", counter)
print tagsWritten, tagSuccessWritten, "ok"
except:
print "Unable to write tags devID:", str(counter-1)
continue
except:
print 'error in cycle:', counter
continue
# system.device.setDeviceEnabled(deviceName, 0)
# print "discon..."
sleep(3)
endTime = system.date.now()
duration = system.date.secondsBetween(startTime, endTime) #вычисляем длительность последнего исполнения скрипта
print '****************************************************************'
print '*** Script started at ', startTime
print '*** Script end at ', endTime
print '*** Script duration ', duration, 'seconds.'
print '****************************************************************'
tp = "[default]PowerMeters/scriptLastDuration.value" #запоминаем длительность последнего исполнения скрипта
try:
result = system.tag.write(tp, duration)
except:
print "could not write [default]PowerMeters/scriptLastDuration"
(Third-party program’s logs listed below)
As we can see from the log, devices number alternate constantly due to multiple requests.
This is bad, because may result in data errors.
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:34:37.714 [ dbg] Incoming request: 000100000006890401220002
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:34:37.714 [ dbg] /dev 137, reg 290/ Incoming request: func: 4, register 290, register nr: 2, device id: 137
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:34:37.714 [ dbg] /dev 137, reg 290/ Instant electricity metrics, parameter 290:, 2 words
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:34:37.714 [ dbg] /dev 137, reg 291/ Instant electricity metrics, parameter 291:, 2 words
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:34:37.714 [ dbg] /dev 137, reg 290/ Incoming request: func: 4, register 290, register nr: 2, device id: 137: registry request #11649
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:34:37.715 [ dbg] askue: /dbg/ [137] SelectDevice(tcp:10.1.123.28:4196:nik_fw10_electricity_meter:676.15841:3333333333333333:2), 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:34:37.716 [ dbg] askue: Reading Instant electricity metrics..., 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:34:37.718 [ dbg] askue: Operation in progress: Opening socket, 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:34:43.623 [ dbg] askue: /dbg/ [137] async request done, error = 0, 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:34:43.624 [ dbg] askue: Received value 28 (0,1), 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:34:43.624 [ dbg] askue: Received value 7 (0,2), 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:34:43.625 [ dbg] askue: finished with tcp:10.1.123.28:4196:nik_fw10_electricity_meter:676.15841:3333333333333333:2 is_ok=1
[0x7fb978001360] [140434290505472 DeviceRegistry] 25.01.20 14:34:43.626 [ dbg] /dev 137, reg 290/ response value: registry 290, value 0.000000
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:34:43.626 [ dbg] /dev 137, reg 290/ RESPONSE: 00010000000b8904080000000000000000, DATA: 0000000000000000
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:35:11.376 [ dbg] Incoming request: 000800000006550401260002
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:35:11.376 [ dbg] /dev 85, reg 294/ Incoming request: func: 4, register 294, register nr: 2, device id: 85
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:35:11.376 [ dbg] /dev 85, reg 294/ Instant electricity metrics, parameter 294:, 2 words
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:35:11.377 [ dbg] /dev 85, reg 294/ Sending response for request on register 294, 2 words...
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:35:11.377 [ dbg] /dev 85, reg 294/ RESPONSE: 00080000000b5504084492ca934492ca93, DATA: 4492ca934492ca93
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:35:11.409 [ dbg] /dev 85, reg 306/ RESPONSE: 000d0000000b55040843c4967843c49678, DATA: 43c4967843c49678
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:35:37.041 [ dbg] Incoming request: 0001000000067f0410000002
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:35:37.041 [ dbg] /dev 127, reg 4096/ Incoming request: func: 4, register 4096, register nr: 2, device id: 127
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:35:37.049 [ dbg] askue: /dbg/ [127] SelectDevice(tcp:10.1.123.53:4196:nik_fw10_electricity_meter:649.3325:3333333333333333:2), 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:35:37.050 [ dbg] askue: Reading Cumulative current energy..., 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:35:38.300 [ dbg] askue: finished with tcp:10.1.123.53:4196:nik_fw10_electricity_meter:649.3325:3333333333333333:2 is_ok=1
[0x7fb978001360] [140434290505472 DeviceRegistry] 25.01.20 14:35:38.300 [ dbg] /dev 127, reg 4096/ response value: index 0, channel 0, tariff 0, value: 10427420.000000
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:36:00.323 [ dbg] Updating meters list...
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:36:00.324 [ dbg] askue: /dbg/ [0] SelectServerDatabase(), 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:36:00.324 [ dbg] askue: Reading meters list..., 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:36:00.348 [ dbg] Updated meters list, 182 records
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:36:09.007 [ dbg] Incoming request: 0001000000068c0410000002
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:36:09.007 [ dbg] /dev 140, reg 4096/ Incoming request: func: 4, register 4096, register nr: 2, device id: 140
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:36:09.009 [ dbg] askue: Reading Cumulative current energy..., 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:36:10.298 [ dbg] askue: finished with tcp:10.1.122.48:4196:nik_fw10_electricity_meter:676.15376:3333333333333333:2 is_ok=1
[0x7fb978001360] [140434290505472 DeviceRegistry] 25.01.20 14:36:10.298 [ dbg] /dev 140, reg 4096/ response value: index 0, channel 0, tariff 0, value: 4475211.000000
[0x7fb978001360] [140434656990976 Thread (pooled)] 25.01.20 14:37:22.198 [ dbg] Incoming request: 000100000006200401220002
[0x7fb978001360] [140434656990976 Thread (pooled)] 25.01.20 14:37:22.198 [ dbg] /dev 32, reg 290/ Incoming request: func: 4, register 290, register nr: 2, device id: 32
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:37:22.198 [ dbg] askue: /dbg/ [32] SelectDevice(tcp:10.1.123.28:4196:nik_fw10_electricity_meter:649.3296:3333333333333333:2), 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:37:22.199 [ dbg] askue: Reading Instant electricity metrics..., 0
[0x7fb978001360] [140434656990976 Thread (pooled)] 25.01.20 14:37:28.243 [ dbg] /dev 32, reg 306/ Sending response for request on register 306, 2 words...
[0x7fb978001360] [140434656990976 Thread (pooled)] 25.01.20 14:37:28.243 [ dbg] /dev 32, reg 306/ RESPONSE: 00070000000b20040844c2db1044c2db10, DATA: 44c2db1044c2db10
[0x7fb978001360] [140434656990976 Thread (pooled)] 25.01.20 14:38:14.227 [ dbg] Incoming request: 0001000000068d0400300004
[0x7fb978001360] [140434656990976 Thread (pooled)] 25.01.20 14:38:14.227 [ dbg] /dev 141, reg 48/ Incoming request: func: 4, register 48, register nr: 4, device id: 141
[0x7fb978001360] [140434656990976 Thread (pooled)] 25.01.20 14:38:14.227 [ dbg] /dev 141, reg 48/ Serial number, 2 words
[0x7fb978001360] [140434656990976 Thread (pooled)] 25.01.20 14:38:14.227 [ dbg] /dev 141, reg 48/ Incoming request: func: 4, register 48, register nr: 4, device id: 141: registry request #11671
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:38:22.251 [ dbg] askue: Operation in progress: Establishing connection, 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:38:22.251 [ dbg] askue: /dbg/ [141] GetAsyncOperationStatus(30000), 0
[0x7fb978001360] [140434656990976 Thread (pooled)] 25.01.20 14:38:29.248 [ dbg] Incoming request: 000200000006330400300004
[0x7fb978001360] [140434656990976 Thread (pooled)] 25.01.20 14:38:29.248 [ dbg] /dev 51, reg 48/ Incoming request: func: 4, register 48, register nr: 4, device id: 51
[0x7fb978001360] [140434656990976 Thread (pooled)] 25.01.20 14:38:29.248 [ dbg] /dev 51, reg 48/ Serial number, 2 words
[0x7fb978001360] [140434656990976 Thread (pooled)] 25.01.20 14:38:29.248 [ dbg] /dev 51, reg 48/ Incoming request: func: 4, register 48, register nr: 4, device id: 51: registry request #11672
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:38:30.252 [ dbg] askue: /dbg/ [141] event: 25.01.2020 14:38:30.251149 i tcp connecting_socket, 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:38:30.252 [ dbg] askue: /dbg/ [141] status: 2, 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:38:38.260 [ dbg] askue: /dbg/ [141] error: askue::tcp::operation_timed_out, Operation canceled, 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:38:38.260 [ dbg] askue: Operation timed out, 100
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:38:38.260 [ dbg] askue: finished with tcp:10.1.122.63:4196:nik_fw10_electricity_meter:650.8685:3333333333333333:2 is_ok=0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:38:38.261 [ dbg] askue: Connecting to server..., 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:38:38.261 [ dbg] askue: /dbg/ [51] SelectServerDatabase(), 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:38:38.269 [ dbg] askue: Reading Serial number..., 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:38:38.569 [ dbg] askue: /dbg/ [51] async request done, error = 0, 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:38:38.569 [ dbg] askue: finished with tcp:10.1.123.67:4196:nik_fw10_electricity_meter:636.11794:3333333333333333:2 is_ok=1
[0x7fb978001360] [140434290505472 DeviceRegistry] 25.01.20 14:38:38.569 [ dbg] /dev 51, reg 48/ response value: 10432018
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:46:00.351 [ dbg] Updating meters list...
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:46:00.352 [ dbg] askue: /dbg/ [0] SelectServerDatabase(), 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:46:00.361 [ dbg] askue: Reading meters list..., 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:46:00.377 [ dbg] askue: finished with is_ok=1
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:46:00.377 [ dbg] Updated meters list, 182 records
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:46:01.488 [ dbg] Incoming request: 0001000000062f0410000002
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:46:01.488 [ dbg] /dev 47, reg 4096/ Incoming request: func: 4, register 4096, register nr: 2, device id: 47
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:46:01.490 [ dbg] askue: Reading Cumulative current energy..., 0
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:46:02.748 [ dbg] /dev 47, reg 4096/ RESPONSE: 00010000000b2f0408df1c7100df1c7100, DATA: df1c7100df1c7100
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:46:02.756 [ dbg] Incoming request: 0002000000066a0401220002
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:46:02.756 [ dbg] /dev 106, reg 290/ Incoming request: func: 4, register 290, register nr: 2, device id: 106
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:46:02.756 [ dbg] askue: /dbg/ [106] SelectDevice(tcp:10.1.122.28:4196:nik_fw10_electricity_meter:650.7397:3333333333333333:2), 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:46:02.757 [ dbg] askue: Reading Instant electricity metrics..., 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:46:10.773 [ dbg] askue: /dbg/ [106] GetAsyncOperationStatus(30000), 0
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:46:17.766 [ dbg] Incoming request: 0003000000063f0401220002
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:46:17.766 [ dbg] /dev 63, reg 290/ Incoming request: func: 4, register 290, register nr: 2, device id: 63
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:46:17.766 [ dbg] /dev 63, reg 290/ Incoming request: func: 4, register 290, register nr: 2, device id: 63: registry request #11675
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:46:18.774 [ dbg] askue: /dbg/ [106] event: 25.01.2020 14:46:18.773476 e tcp operation_timed_out, 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:46:18.774 [ dbg] askue: /dbg/ [106] status: 2, 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:46:18.774 [ dbg] askue: Operation in progress: Operation timed out, 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:46:26.792 [ dbg] askue: Connecting to server..., 0
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:46:26.792 [ dbg] /dev 106, reg 290/ Sending response for request on register 290, 2 words...
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:46:26.792 [ dbg] /dev 106, reg 290/ Error: 4 unknown_error
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:46:26.792 [ dbg] /dev 106, reg 290/ Response: 0002000000046a840104
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:46:26.793 [ dbg] askue: /dbg/ [63] SelectServerDatabase(), 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:46:26.794 [ dbg] askue: /dbg/ [63] AsyncReadAllInstantElectricityMetricRecords(), 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:46:26.801 [ dbg] askue: Operation in progress: Establishing connection, 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:46:26.801 [ dbg] askue: /dbg/ [63] GetAsyncOperationStatus(30000), 0
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:46:32.818 [ dbg] Incoming request: 0004000000060c0410000002
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:46:32.818 [ dbg] /dev 12, reg 4096/ Incoming request: func: 4, register 4096, register nr: 2, device id: 12
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:46:34.802 [ dbg] askue: /dbg/ [63] event: 25.01.2020 14:46:34.801172 e tcp operation_timed_out, 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:46:34.802 [ dbg] askue: Operation in progress: Operation timed out, 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:46:50.821 [ dbg] askue: /dbg/ [63] error: askue::tcp::operation_timed_out, Operation canceled, 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:46:50.821 [ dbg] askue: Operation timed out, 100
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:46:50.821 [ dbg] askue: Connecting to server..., 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:46:50.822 [ dbg] askue: /dbg/ [12] SelectServerDatabase(), 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:46:50.832 [ dbg] askue: /dbg/ [12] AsyncReadAllCurrentCumulativeEnergyRecords(), 0
[0x7fb978001360] [140434290505472 DeviceRegistry] 25.01.20 14:46:52.070 [ dbg] /dev 12, reg 4096/ response value: index 0, channel 0, tariff 0, value: 11987218.000000
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:54:52.725 [ dbg] Incoming request: 0001000000067b0401220002
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:54:52.725 [ dbg] /dev 123, reg 290/ Incoming request: func: 4, register 290, register nr: 2, device id: 123
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:54:52.725 [ dbg] /dev 123, reg 290/ Incoming request: func: 4, register 290, register nr: 2, device id: 123: registry request #11677
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:55:00.748 [ dbg] askue: /dbg/ [123] GetAsyncOperationStatus(30000), 0
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:55:01.949 [ dbg] Incoming request: 000100000006a10401220002
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:55:01.950 [ dbg] /dev 161, reg 290/ Incoming request: func: 4, register 290, register nr: 2, device id: 161
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:55:01.950 [ dbg] /dev 161, reg 290/ Incoming request: func: 4, register 290, register nr: 2, device id: 161: registry request #11678
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:55:08.767 [ dbg] askue: /dbg/ [123] event: 25.01.2020 14:55:08.755735 e tcp operation_timed_out, 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:55:16.785 [ dbg] askue: /dbg/ [123] error: askue::tcp::operation_timed_out, Operation canceled, 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:55:16.785 [ dbg] askue: Operation timed out, 100
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:55:16.785 [ dbg] askue: finished with tcp:10.1.122.28:4196:nik_fw10_electricity_meter:613.10244:3333333333333333:2 is_ok=0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:55:16.785 [ dbg] askue: Connecting to server..., 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:55:16.786 [ dbg] askue: /dbg/ [161] SelectServerDatabase(), 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:55:16.787 [ dbg] askue: /dbg/ [161] SelectDevice(tcp:10.1.122.94:4196:nik_fw10_electricity_meter:553.11966:3333333333333333:2), 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:55:16.788 [ dbg] askue: Reading Instant electricity metrics..., 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:55:24.856 [ dbg] askue: /dbg/ [161] GetAsyncOperationStatus(30000), 0
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:55:32.423 [ dbg] Incoming request: 000300000006170400300004
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:55:32.423 [ dbg] /dev 23, reg 48/ Incoming request: func: 4, register 48, register nr: 4, device id: 23
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:55:32.423 [ dbg] /dev 23, reg 48/ Serial number, 2 words
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:55:32.423 [ dbg] /dev 23, reg 49/ Serial number, 2 words
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:55:32.423 [ dbg] /dev 23, reg 50/ Serial number, 2 words
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:55:32.423 [ dbg] /dev 23, reg 51/ Serial number, 2 words
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:55:32.423 [ dbg] /dev 23, reg 48/ Incoming request: func: 4, register 48, register nr: 4, device id: 23: registry request #11680
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:55:32.853 [ dbg] askue: /dbg/ [161] event: 25.01.2020 14:55:32.841759 e tcp operation_timed_out, 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:55:32.853 [ dbg] askue: /dbg/ [161] event: 25.01.2020 14:55:32.841913 i tcp connecting_socket, 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:55:32.853 [ dbg] askue: /dbg/ [161] status: 2, 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:55:32.853 [ dbg] askue: Operation in progress: Operation timed out, 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:55:32.853 [ dbg] askue: Operation in progress: Opening socket, 0
[0x7fb978001360] [140434273720064 Thread (pooled)] 25.01.20 14:55:40.882 [ dbg] /dev 161, reg 290/ Response: 000100000004a1840104
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:55:40.884 [ dbg] askue: /dbg/ [173] SelectServerDatabase(), 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:55:40.886 [ dbg] askue: /dbg/ [173] SelectDevice(tcp:10.1.124.55:4196:nik_fw10_electricity_meter:648.4438:3333333333333333:2), 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:55:40.886 [ dbg] askue: Reading Cumulative current energy..., 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:55:40.886 [ dbg] askue: /dbg/ [173] AsyncReadAllCurrentCumulativeEnergyRecords(), 0
[0x7fb978001360] [140434648598272 DataManager] 25.01.20 14:55:40.887 [ dbg] askue: /dbg/ [173] GetAsyncOperationStatus(30000), 0