m-d-a
Junior Member / Новичок
Участник № / Member № 5992
отправлено / posted
Здравствуйте.
Возникла задача сохранения входных и рассчитанных значений в текстовый файл csv на диске по дням и годам.
Я так понимаю есть несколько способов. Подскажите, пожалуйста, в каком направлении лучше двигаться, чтобы среда исполнения успевала сохранять данных и как можно следить за очередью.
отправлено / posted
Непонятно, что означает "сохарнять по дням и годам". Штатной функции сохранения текущих данных в текстовый файл произвольной формы в Trace Mode 6. Существуют вспомогательные функции сохранения в файл аргументов каналов CALL, но они выполняются в online-режиме и могут выполняться в весьма ограниченном объеме. Можно сохранять все параметры в СПАД-архиве, а затем экспортировать выборочно с нужными Вам фильтрами в текстовый файл.
Но надо более точно знать назначение этой экспортной операции и ее динамические характерисристики.
m-d-a
Junior Member / Новичок
Участник № / Member № 5992
отправлено / posted
Необходимо в начале каждых суток (или с последнего сохранения) сохранить в csv файл считанные с устройства 100 входных значений float каналов и 100 значений производных от этих каналов (математически пересчитаны полученные значения и записаны в другие 100 каналов float). В СПАД все пишется и вроде нет проблем вытащить через диалог с пользователем. А хотелось бы еще текстовую базу хранить отдельно в виде файлов по дням работы.
Сообщения / Posts 17 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Можно использовать функцию экспорта данных из архива с помощью канала CALL.ChGroupReq, привязанного к системной переменной @Data_from_SIAD (см.документацию).
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |
m-d-a
Junior Member / Новичок
Участник № / Member № 5992
отправлено / posted
Спасибо за поддержку, так и пытаюсь делать. Было бы еще примеров побольше. А в ситуации, когда надо дать возможность менять верхние и нижние аварийные границы и это должно сохраняться при перезапуске системы, надо тоже создать канал CALL.ChGroupReq, к аргументам привязать 30 и 31 арг числового канала, сохранить канал в файл, потом при запуске монитора загружать в канал CALL из файла, и связанные аргументы автоматически изменят границы числового канала? Или есть способ попроще?
Сообщения / Posts 17 | Из / From: Россия
| IP / IP: IP адрес / IP address |
m-d-a
Junior Member / Новичок
Участник № / Member № 5992
отправлено / posted
Все сделал по отгрузке и загрузке границ канала в файл. При загрузке границ из файла все загружается в CALL.ChGroupReq, из него по связанным аргументам в канал Float (границы меняются) - Единственное что не работает - они не применяются и не отображаются в элементе текст (хотя, если у него параметр ввести и передать, то в выпадающем окне все нормально). Также не отрабатывают события превышения новых границ. Я так понимаю, канал после загрузки в него новых границ надо вручную заставить отработать? Подскажите, пожалуйста, как это сделать.
Сообщения / Posts 17 | Из / From: Россия
| IP / IP: IP адрес / IP address |
m-d-a
Junior Member / Новичок
Участник № / Member № 5992
отправлено / posted
Дамп не поможет. Мне надо границы менять, не в среде разработки а в исполнительной среде. Если что слетит, с дампом замучаешься. Но спасибо за совет.
Сообщения / Posts 17 | Из / From: Россия
| IP / IP: IP адрес / IP address |
m-d-a
Junior Member / Новичок
Участник № / Member № 5992
отправлено / posted
И по первому вопросу. Я в документации нашел только возможность экспорта данных из СПАД в файл с дискретностью 1 сек и более. Есть ли возможность выдачи всей накопленной информации за заданный промежуток времени в текстовый файл? Заранее спасибо.
Сообщения / Posts 17 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Для сохранения и восстановления границ канала следует использовать именно DUMP. Это корректно и надежно. При изменении границ в реальном времени (любым способом) они будут сохраняться в файле DUMP. Любые другие способы чреваты неоправданными усложнениями.
Для того чтобы экспортировать все данные за заданный интервал времени в текстовый файл, надо задать у канала, осуществляющего экспорт, значение ПАРАМЕТР=0. Минимальный диапазон экспорта - 2 мин.
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |
m-d-a
Junior Member / Новичок
Участник № / Member № 5992
отправлено / posted
Спасибо. С дампом попробую. Хотя все сохраняется и загружается через call. Единственное, сразу не применяется после загрузки. Можно свой пример на почту Вам скину на предмет возможности такого варианта и понимания принципа работы с атрибутами связанного канала с каналом call (что происходит после загрузки)
Сообщения / Posts 17 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Присылайте проект на hotline@adastra.ru с комментариями, которые привязывают Вашу задачу к заложенным функциям.
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
1. Поставленная Вами задача сохранения и восстановления различных наборов границ действительно требует использования файлов.
2. При использованной Вами методике отображения границ на экране через ссылки на атрибуты синхронизация отображения осуществляется по изменению атрибута, которому привязан аргумент экрана. Для оперативного отображения изменения границ необходимо каждую границу привязывать к отдельному аргументу экрана.
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |