должно быть достаточноКод:from pyModbusTCP.client import ModbusClient
from datetime import datetime
import pandas as pd
import time
def save_last_data(stroke):
stroke.to_csv('save_last_data.csv',mode='a',index=False,header=False)
def read_data():
client = ModbusClient(host='127.0.0.1', port=502, auto_open=True)
col_name = ['time','result','duration']
df = pd.DataFrame(columns=col_name)
while True:
time.sleep(1) # запрос каждую секунду
try:
start_time = time.time()
result = client.read_input_registers(0,1)
duration = time.time() - start_time # расчитать время в секундах затраченное на запрос/ответ
df.loc[len(df)] = [datetime.now(),result[0],duration] # текущее время, значение регистра, потраченное время
save_last_data(df.tail(1)) # запись в конец файла
if len(df) > 10: # если записей в таблице больше десяти удаляем старую
df = df.iloc[1:]
if result[0] == 1: # если регистр принимает определенное значение заканчиваем работу
print(df)
break
except Exception as e:
print(f'Что топошло не так: {str(e)}')
break
client.close()
if __name__ == "__main__":
read_data()
