Как настроить дату-время при чтении с приборов? - PullRequest
0 голосов
/ 06 мая 2019

Я использую Minimmodbus для связи через Modbus RS-485. Код читает 4 регистра каждые 6 секунд. Затем каждую минуту среднее значение для каждой переменной сохраняется в CSV-файле. Цель состоит в том, чтобы получать данные временных рядов каждую минуту, но время от времени я теряю 1 минуту данных, потому что время ожидания между считываниями не одинаково на каждом этапе цикла.

Я пытался настроить время, оставляя время, необходимое для завершения процесса, но его сложно настроить.

Любая идея, как улучшить это или любое предложение о другом способе сделать это, чтобы сохранять данные точно каждую минуту?

def collect_data():
    try:
        register_3204 = instr.read_registers(3203,4,3)
        register_3208 = instr.read_registers(3207,4,3) 
        register_3220 = instr.read_registers(3219,4,3)
        register_3224 = instr.read_registers(3223,4,3)
        EaImport = convert_64bit(register_3204)
        EaExport = convert_64bit(register_3208)
        ErImport = convert_64bit(register_3220)
        ErExport = convert_64bit(register_3224)
        data=[EaImport,EaExport,ErImport,ErExport]
    except IOError:
        print("Failed to read from instrument")
    return (data)


startt = time.time()

with open('/iEM_test/iEM3155.csv', 'a', buffering=0) as file:
    while True:
        average = np.hstack([0])
        for i in range(10):
            data=(collect_data())
            data1=np.hstack([data[0], data[1], data[2], data[3]])
            average = average + data1
            stopt= time.time()
            sleeptime = 6-(stopt-startt) - 0.000925925926
            time.sleep(sleeptime)
            startt = time.time()
        average1=average/10
        dt= datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S')
        data=[dt,str(average1[0]),str(average1[1]),str(average1[2]),str(average1[3])]
        data_str=",".join(data)
        file.write(data_str + '\n')

Ниже приведены данные, которые я получаю с действительным кодом

5/5/2019 18:08:59   37.8401 4.407   13.0227 43.797
5/5/2019 18:09:59   37.8532 4.4073  13.0277 43.797
5/5/2019 18:10:59   37.856  4.408   13.029  43.797
5/5/2019 18:12:00   37.8599 4.408   13.0292 43.7976
5/5/2019 18:13:00   37.8824 4.408   13.03   43.798
5/5/2019 18:14:00   37.9075 4.408   13.03   43.79877

В 18:11 происходит небольшой прыжок.

...