PDA

Просмотр полной версии : Архивация данных на ПК



Malyshevsergey
19.04.2013, 18:52
Здравствуйте!
Перелистал весь форум но так и не понял или не нашёл.
Возможно ли архивировать данные на ПК на подобие трендов но по команде и то что я хочу?

Malyshevsergey
19.04.2013, 19:19
Спасибо! Не видел вашу программу на форуме. Пишу с айпада и посмотреть (проверить) вашу программу сейчас не могу. В двух словах описать работу программы можете?

Malyshevsergey
19.04.2013, 19:34
Еще раз спасибо.

Malyshevsergey
26.05.2013, 17:09
Попробовал программу и не понял как с ней работать, подскажите плиз?

Malyshevsergey
26.05.2013, 18:38
Связь по эзернет, регистров порядка 200. Если я правильно понял то это самостоятельная программа и может ли она работать параллельно с КДС?

Malyshevsergey
27.05.2013, 11:37
Я понимаю что модбас это другой порт, но у меня нет желания тянуть 485 к ПК тем более он у меня занят для связи с МВВ. От этого и спрашиваю про эзернет и КДС.

Malyshevsergey
27.05.2013, 12:33
С этим я еще не сталкивался. Где мне глянуть или что нужно сделать?

120181
26.06.2025, 10:16
Добрый день. Также возникла необходимость запись некоторых переменных в архив, желательно на ПК. Буду рад любой помощи. Спасибо.

МихаилГл
26.06.2025, 15:07
Добрый день. Также возникла необходимость запись некоторых переменных в архив, желательно на ПК. Буду рад любой помощи. Спасибо.

Rapid Scada, а нужные данные через modbus... А средствами скады можно писать в любую доступную базу данных, там их 3 разных можно использовать. Скриптами и триггерами в базе управляете что писать и когда...

120181
26.06.2025, 21:29
Писать просто в файл, для последующего просмотра состояний переменной с меткой по времени. Modbus TCP

capzap
27.06.2025, 08:30
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()

должно быть достаточно