This is topic Чтение данных с файла txt in forum SIAD/SQL. Архивирование в TRACE MODE / SIAD/SQL. Data Logging in TRACE MODE at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/40/t/000187.html

Posted by Yurchik1 (Участник № / Member № 8907) on :
 
Добрый день. Может ли ТМ6 читать данные с текстового файла и выгружать их на тренд? И если может, то как это реализовать
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Да, выводить данные на тренд из внешнего источника можно, есть пример с выводом из БД: http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/54/t/000001.html "Вывод данных из БД на тренд (для базовой и профессиональной версии)".

Данные из текстового файла можно паредать в БД сторонними средствами в БД или Excel и запрашивать в TRACE MODE через ODBC драйвер, аналогично любым данным из СУБД.

Можно забирать данные через Call.STRING (в справке см. Каналы и системные переменные TRACE MODE 6 - Канал класса CALL - Запись длинных строк в канал CALL). Файл должен быть определённого формата.

Или можно переименовать файл в *.dat, задать ему определенный формат и читать через 128 атрибут канала CALL (в справке см. Каналы и системные переменные TRACE MODE 6 - Канал класса CALL - Атрибуты канала класса CALL - Чтение из файла).

Далее для этих двух случаев данные обработать и выводить как в вышеописанном примере.
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
Если делается выгрузка с Excel. Есть возможность как-то выбирать файл excel пользователю?
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
Как данные из Excel выгрузить на тренд?
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
Опишу всю ситуацию. В папку поступают новые файлы excel. И все имеют разные названия. Требуется читать эти файлы средствами скады и выводить их на тренд в зависимости от даты (дата пишется в названии файлов).
Удобнее было бы если бы пользователь сам выбирал какой файл ему выгрузить на тренд в зависимости от даты которая ему требуется. Но возможно ли это реализовать?
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
quote:
Отправитель / Originally posted by Yurchik1:
Если делается выгрузка с Excel. Есть возможность как-то выбирать файл excel пользователю?

Как было указано выше, информационный обмен с Excel файлами рекомендуется организовать через ODBC драйвер, аналогично любым данным из СУБД.
Возможность изменить настройки Источника данных относится к функциональным возможностям драйвера ODBC.

quote:
Отправитель / Originally posted by Yurchik1:
Как данные из Excel выгрузить на тренд?

выводить данные на тренд из внешнего источника можно, есть пример с выводом из БД: http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/54/t/000001.html "Вывод данных из БД на тренд (для базовой и профессиональной версии)".

quote:
Отправитель / Originally posted by Yurchik1:
Опишу всю ситуацию. В папку поступают новые файлы excel. И все имеют разные названия. Требуется читать эти файлы средствами скады и выводить их на тренд в зависимости от даты (дата пишется в названии файлов).
Удобнее было бы если бы пользователь сам выбирал какой файл ему выгрузить на тренд в зависимости от даты которая ему требуется. Но возможно ли это реализовать?

Спасибо за подробное описание. Ответ был дан выше - Данные из текстового файла можно паредать в БД сторонними средствами в БД или Excel и запрашивать в TRACE MODE через ODBC драйвер, аналогично любым данным из СУБД.

Так же стоит повторно рассмотреть возможность использования механизма работы с dat-файлами (см. ответ выше). Канал Call можно в реальном времени переименовать и подчитывать данные с нового dat-файла.
Или использовать традиционные методы передачи данных
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
В вашем примере куча ссылок на одну и ту же БД, куча каналов CALL с кучей аргументов. Как я должна понять что именно мне нужно сделать для вывода данных из БД на тренд?
Пример аж 2009 года, сделан в старом релизе. В одном из топиков 2012 года вы пишете что скоро этот пример обновится, обновления до сих пор нет. То есть данный алгоритм устарел.
Про выбор пользователем файла excel никакого ответа я не получила.
Про файл dat. Я не просто так написала подробно, что файлы все разные, имена разные. Как мне в этой ситуации может помочь файл dat?
Спрошу еще раз. Есть ли возможность дать пользователю доступ менять файл базы данных в odbc драйвере?
Можно ли по нажатию кнопки в реальном времени открыть администратора odbc?
Есть ли вообще какие-нибудь варианты решения моей задачи? Мне главное чтобы скада могла тянуть данные с разных файлов, а не с одного, заложенного на этапе разработки проекта.
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
quote:
Отправитель / Originally posted by Yurchik1:
В вашем примере куча ссылок на одну и ту же БД, куча каналов CALL с кучей аргументов. Как я должна понять что именно мне нужно сделать для вывода данных из БД на тренд?

Вы можете задать конкретные вопросы по примеру и мы Вам предоставим ответы.
Для начала попробуйте запустить пример и отобразить данные из access-файла на тренде.
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
quote:
Отправитель / Originally posted by Yurchik1:
Пример аж 2009 года, сделан в старом релизе. В одном из топиков 2012 года вы пишете что скоро этот пример обновится, обновления до сих пор нет. То есть данный алгоритм устарел.

Демо-проект "Вывод данных из БД на тренд (для базовой и профессиональной версии)", который можно скачать по ссылке выше, сохранен в 2013 году. Верно, он разработан в релизе 6.08, но механизм актуален и в релизе 6.10.2. Вы можете открыть данный проект в Среде Разработки, пересохранить, скомпилировать и запустить.
Повторюсь, пример актуален.
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
quote:
Отправитель / Originally posted by Yurchik1:
Про выбор пользователем файла excel никакого ответа я не получила.

Ответ был дан выше.
Так как у Вас этот вопрос остался не закрыт, то я распишу подробнее.

Как было описано выше, мы рекомендуем для работы с excel-файлами использовать подключение через ODBC-драйвер (в Среде Разработки это "Шаблон связи с СУБД"). Используемый файл базы данных выбирается в Администраторе источников данных ODBC (ПО, встроенное в Windows) при настройке Источника данных. Это делается без участия Trace Mode.

Так как у Вас все файлы имеют разное название, то было предложено "Так же стоит повторно рассмотреть возможность использования механизма работы с dat-файлами (см. ответ выше). Канал Call можно в реальном времени переименовать и подчитывать данные с нового dat-файла.
Или использовать традиционные методы передачи данных".

Отдельно отмечу, просто так взять любой файл и извлечь из него данные на тренд нельзя. Файл необходимо предварительно подготовить. Либо передать данные в Базу Данных, либо сформировать этот с определенной внутренней структурой (dat-файл).
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
quote:
Отправитель / Originally posted by Yurchik1:
Про файл dat. Я не просто так написала подробно, что файлы все разные, имена разные. Как мне в этой ситуации может помочь файл dat?

Прошу внимательно читать ответы.
Так же стоит повторно рассмотреть возможность использования механизма работы с dat-файлами (см. ответ выше). Канал Call можно в реальном времени переименовать и подчитывать данные с нового dat-файла.

В Справочной Системе (ссылка на описание дана выше) указано, что канал Call подчитывает dat-файл с тем именем, которое у канала Call. Если канал Call переименовать в реальном времени, то можно подчитать второй dat-файл. Таким образом одним каналом можно по очереди читать разные dat-файлы. Эти dat-файлы должны иметь определенную внутреннюю структуру. Создайте dat-файл, согласно Справочной Системе, и далее создавайте свои dat-файлы с аналогичной внутренней структурой.

Отдельно отмечу, что рядом с примером "Вывод данных из БД на тренд (для базовой и профессиональной версии)" есть пример по чтению из файла "Пример записи/чтения аргументов канала CALL через файл"

[ 07.09.2022, 10:24: Сообщение отредактировал / Message edited by АдАстра. Техподдержка ]
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
quote:
Отправитель / Originally posted by Yurchik1:
Спрошу еще раз. Есть ли возможность дать пользователю доступ менять файл базы данных в odbc драйвере?

Это скорее организационный вопрос и решается Разработчиком проекта совместно с Заказчиком.
Встроенные средства Windows позволяют менять файл базы данных в Источнике данных ODBC. Trace Mode в данном вопросе (замена файла в источнике данных ODBC) не участвует.
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
quote:
Отправитель / Originally posted by Yurchik1:
Можно ли по нажатию кнопки в реальном времени открыть администратора odbc?

Для вызова внешнего приложения используется канал Call с типом вызова EXEC.
(в справке см. Каналы и системные переменные TRACE MODE 6 - Канал класса CALL - Канал CALL.Exec)

Для вызова внешнего приложения необходимо знать точное местоположение exe-файла вызываемого приложения.

Однако, описанный Вами план реализации не оптимален. А предоставление доступа Оператору к настройкам источника данных можно считать нарушением целостности готового проекта.

Оптимальным решением является запись данных из файла в БД, с последующим чтением из БД и выводе на тренд (см. пример "Вывод данных из БД на тренд (для базовой и профессиональной версии)")

[ 07.09.2022, 10:52: Сообщение отредактировал / Message edited by АдАстра. Техподдержка ]
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
quote:
Отправитель / Originally posted by Yurchik1:
Есть ли вообще какие-нибудь варианты решения моей задачи? Мне главное чтобы скада могла тянуть данные с разных файлов, а не с одного, заложенного на этапе разработки проекта.

Варианты решения предоставлены в самом начале топика
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/40/t/000187/p/1.html#000001
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
quote:
Отправитель / Originally posted by АдАстра. Техподдержка:
quote:
Отправитель / Originally posted by Yurchik1:
В вашем примере куча ссылок на одну и ту же БД, куча каналов CALL с кучей аргументов. Как я должна понять что именно мне нужно сделать для вывода данных из БД на тренд?

Вы можете задать конкретные вопросы по примеру и мы Вам предоставим ответы.
Для начала попробуйте запустить пример и отобразить данные из access-файла на тренде.

Мне нужен алгоритм по которому можно выгрузить с бд данные на тренд. Запускать проект который вы делали и выгружать данные на тренд у меня получилось. Мне не понятен алгоритм реализации такой выгрузки
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
В проекте демонстрируется ряд механизмов.
Конкретно по выводу данных на тренд.

Данные из БД запрашивает Call.SQLQuery с названием "База_данных#1:1" (изучите его привязки)
Первый его аргумент передает метку времени. Второй передает считанное значение в канал Call.TVC с названием "SQL_TVC".
В атрибутах канала Call.TVC в первых двух аргументах фиксируется временной интервал, в остальных непосредственно значение и метка времени.
Далее, Тренд имеет две привязки:
1. в настройках оси времени привязка к аргументу шаблона экрана, который привязан к первому аргументу канала Call.TVC
2. непосредственно кривая привязана к аргументу экрана, который привязан к третьему атрибуту(!) 142 канала Call.TVC.
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
Уважаемая техподдержка, скажите понятным языком. Перезаписывается ли сторонняя бд при переполнении? Вот имеется бд sql на 10 Гб. Будет ли trace mode записывать старые значения на новые при достижении этих 10 Гб, или он просто перестанет посылать туда значения?
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Здравствуйте!
Вопросы по сторонним базам данных (в особенности по работе сторонних баз данных) не входит в обязанности Службы технической поддержки. Мы Вам можем помочь с вопросами по Trace Mode.

Контролирование переполнения базы данных прерогатива непосредственно базы данных.

Согласно встроенной Справочной Системе (Распределенные АСУ - Обмен с базами данных - Создание и выполнение SQL-запросов - Выполнение SQL-запросов в реальном времени) MPB нe упpaвляeт тpaнзaкциями и нe кoнтpoлиpуeт иx; т.e., зa цeлocтнocть БД oтвeчaeт CУБД.

Если упрощенно:
Взаимодействие с БД осуществляется с помощью драйвера ODBC (Источник данных ODBC). SQL-запрос от TM передается драйверу ODBC. Он взаимодействует с БД. Результат взаимодействия (результат выполнения sql-запроса или сообщение об ошибке) возвращается в ТМ.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2