Xml, БД, внешнее приложение

Стартовая страница Форумы Понять, как работает ПО Xml, БД, внешнее приложение

Просмотр 15 сообщений - с 1 по 15 (из 39 всего)
  • Автор
    Сообщения
  • #16310
    vg
    Участник

    Здравствуйте.

    Стоит задача отображать с некоторой периодичностью(для обновления) на схеме информацию, хранящуюся в БД. Некоторые колонки хранятся в виде чисел и служат уникальными идентификаторами к строковым данным в XML-файле. По этим идентификаторам нужно извлечь строковые данные(до 40 символов) из XML и передать в SCADA. То есть часть информации непосредственно из БД, часть из XML по «ключам» из БД.

    Допустим я забрал все нужные данные из БД и необходимые «ключи» хранятся в каналах. В интерфейсах можно создать XML файл и скопировать туда содержимое моего XML-файла со строковой информацией.

    1) Как мне обратиться из SCADA к XML-файлу чтобы забрать нужные данные? Как хранить полученные данные? Вероятно, отобразить строковые данные такой длины я смогу только записав их в БД и считав их в SCADA?

    2) Возможно стоит написать приложение, которое сделает всю необходимую работу, но как тогда запустить такое приложение из SCADA? Можно написать код вроде этого:

    System.Diagnostics.Process.Start(«Notepad.exe»);

    Но формула всегда привязана к каналу, который имеет значение double. Пробовал возвращать константное число в канале «Минутный ТИ», лишь бы приложение запускалось, не сработало.
    Даже если это плохой вариант запустить внешнее приложение возможно?

    3) В документации написано, что с помощью дополнительных плагинов можно осуществить поддержку не только схем и таблиц, но не понял что это за плагин.

    • Эта тема была изменена 3 года, 9 месяцев назад от vg.
    #16312
    manjey73
    Участник

    Может проще будет реализовать при помощи драйвера ? и передавать в каналы 8 байт в виде текста, а в следующей версии переделать потом на текстовую БД ?

    Можно будет сделать настройку в виде того же xml для настройки какие ключи использовать из БД для доступа к вашему xml и соответственно не тратить для этого каналы.

    • Этот ответ был изменен 3 года, 9 месяцев назад от manjey73.
    #16314
    Romiros
    Участник

    1. Можно забрать данные из БД с помощью KpDbImport и положить их в каналы RapidScada.
    2. Разработать модуль для RapidScada, который по изменению данных каналов будет считывать текстовые данные из xml файла и отправлять их в события RapidScada.
    3. Если не хватает отображения в журнале событий, то разработать свой плагин отображения, либо html страницу.

    #16317
    vg
    Участник

    Благодарствую, есть над чем подумать)

    #16319
    Mikhail
    Модератор

    Добрый день!

    Если данные есть в БД, то изобретать промежуточный XML очень не оптимально. Напишите SQL-запрос, который выдаёт данные в том виде, который принимает драйвер KpDbImport.

    Даже если это плохой вариант запустить внешнее приложение возможно?

    Да, но это действительно плохой вариант )) Т.к. SCADA-Сервер является службой, то блокнот Вы не увидите, но в процессах он будет.

    #16320
    Mikhail
    Модератор

    Пробовал возвращать константное число в канале «Минутный ТИ», лишь бы приложение запускалось, не сработало.

    Например, как?

    #16321
    Mikhail
    Модератор

    Прочитал исходное сообщение внимательнее. Наверное, здесь лучше всего разработать свой драйвер для Коммуникатора, который будет работать и с БД и с файлом. Пример драйвера.

    #16322
    vg
    Участник

    Если данные есть в БД, то изобретать промежуточный XML очень не оптимально.

    Полностью согласен. Но чем богаты, тем и рады).

    Пробовал возвращать константное число в канале «Минутный ТИ», лишь бы приложение запускалось, не сработало.

    Например, как?

    Как то так:
    public double AppStart()
    {
    System.Diagnostics.Process.Start(«Notepad.exe»);
    return 1;
    }
    Подумал, что какая разница что возвращается, если по пути запустится приложение)).
    Я неопытный разработчик, поэтому ещё много глупостей буду делать).

    Спасибо за ответы.

    • Этот ответ был изменен 3 года, 9 месяцев назад от vg.
    #16341
    Mikhail
    Модератор

    AppStart выглядит нормально. Сервер стартует? Чтобы формула выполнялась, её нужно указать для какого-нибудь канала. Лучше всего для канала управления, чтобы она срабатывала по команде.

    #16345
    vg
    Участник

    Mikhail, да, сервер стартует. Через некоторое количество попыток запустить блокнот обнаружил в процессах несколько десятков блокнотов, но ни один не открылся. Пробовал запускать свой exe-файл, который создан для другого проекта и должен создавать текстовый файл с определённым содержанием. Указывал формулу для канала типа «Минутный ТИ». Каждую минуту exe-файл отрабатывал и появлялся в процессах, а затем исчезал, но функцию свою не выполнял: текстового файла не появлялось (exe-файл работает как надо).

    Попробую с каналом управления.

    • Этот ответ был изменен 3 года, 9 месяцев назад от vg.
    #16347
    vg
    Участник

    С каналом управления результат тот же. Заметил, что во вкладке «Подробности» диспетчера задач у процесса notepad.exe стоит «Не разрешено» в колонке «Виртуализация UAC».

    Соответственно если открыть обычный текстовый файл .txt, то в «Подробности» -> «Виртуализация UAC» будет «Отключено», а notepad.exe не значится в фоновых процессах.

    Возможно в этом препятствие? Как я понял эта виртуализация является неким защитным механизмом. Использую Windows 10.

    • Этот ответ был изменен 3 года, 9 месяцев назад от vg.
    #16349
    vg
    Участник

    Попытка изменить положение ползунка в «Параметры управления учетными записями пользователей» ни к чему ни привела.

    #16350
    manjey73
    Участник

    Scada запускает все от системного пользователя. Где-то Михаил писал как вместо службы запустить exe (которые для Mono) руками, соответственно запустить и проверить.
    Вдруг сработает ?

    #16351
    vg
    Участник

    Поищу, спасибо.

    #16352
    manjey73
    Участник

    А чего там искать, отключить сервис ScadaServer и запустить руками ScadaServerMono.exe из пакета для Linux

    Кажется так.

Просмотр 15 сообщений - с 1 по 15 (из 39 всего)
  • Вы должны авторизироваться для ответа в этой теме.