Взаимодействие Модуля и Плагина ?

Стартовая страница Форумы Разработка и интеграция Взаимодействие Модуля и Плагина ?

Просмотр 15 сообщений - с 16 по 30 (из 32 всего)
  • Автор
    Сообщения
  • #36663
    manjey73
    Участник

    Да, для конфигурирования с разделением прав и отображения вместо создания мнемосхемы.

    #36665
    JurasskPark
    Участник

    Ну тогда только TCP или UDP сервер встраивать в модуль. )

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

    Сталкивался с похожей задачей. Выбрал такой вариант решения: настройки сохранялись в отдельную схему БД PostgreSQL. Они редактировались с помощью плагина через веб. Модуль периодически проверял, не изменились ли настройки. Если изменились, то загружал их заново себе для работы.

    Плюсы: удобно редактировать и использовать одни и те же настройки. Минусы: база данных существует отдельно от проекта скады, что усложняет систему.

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

    Вебстанция работает с Сервером от пользователя ScadaWeb, который имеет роль Приложение. У него есть права, чтобы записать файл в рабочую директорию конфигурации или представлений. Так что если работать на уровне файлов, то реализовывать свой клиент и сервер не потребуется.

    #38069
    akofor@mail.ru
    Участник

    Присоединяюсь к теме. Возникла необходимость передавать конфигурацию в серверный модуль из вебстанции — чтобы оператор мог на веб-схеме нажать кнопку, которая бы вызвала окно, ввести туда данные, которые бы отправились в модуль и повлияли как-то на его дальнейшую работу
    Разобрался, как разработать отдельно стоящий веб-плагин, но хотелось бы сделать это самое всплывающее окно «надстройкой» над стандартной схемой Rapid Scada, если возможно, чтобы не приходилось под каждый технологический процесс писать отдельный веб-плагин, а прикрутить его уже к существующему представлению
    Либо же сделать все в рамках одного веб-плагина, если веб-плагины умеют получать данные с каналов и отправлять на них команды

    #38071
    manjey73
    Участник

    @akoformail-ru если не жалко поделиться кодом плагина..

    Чисто предположения пока, ибо не занимался.
    1. всплывающее окно делать под шаблон xml и как-то его прописывать в строке вызова плагина. По аналогии с Графиками Про и другими, когда их цепляешь как Представление.
    То есть прописав шаблон, при нажатии кнопки окно заполнится данными конкретно указанного шаблона. там можно много что прикрутить.

    2. К плагину придется писать модуль — типа комплект. Который будет проверять передаваемые данные от плагина и выполнять действия. Вроде как Михаил писал, что можно заставить перегрузиться Сервер даже через WEB. Но есть думаю иной путь.
    Модуль должен добавлять себе в список действия, переданные плагином и выполнять их, а так же сохранять.
    В случае перезагрузки Сервера он прочтет сохраненные добавленные вещи от плагина и уже будет ожидать новый список…

    Через Плагин можно и каналами управлять и считывать данные. Те же Таблицы и Мнемосхемы это делают.

    #38072
    manjey73
    Участник

    Собственно связка Модуль + Плагин вполне актуальное решение. В некоторых случаях оправданное.

    #38075
    akofor@mail.ru
    Участник

    Делал просто по оф.руководству https://rapidscada.net/docs/ru/latest/developers/plugin-development, никакого функционала далее не добавлял, потому что не успел разобраться, как с веб-плагина отправлять данные на каналы(и как читать их тоже). Вроде в WebContext есть только количество каналов…

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

    чтобы оператор мог на веб-схеме нажать кнопку, которая бы вызвала окно, ввести туда данные, которые бы отправились в модуль и повлияли как-то на его дальнейшую работу

    Варианты следующие:
    1. Записать значение в один или несколько каналов. Учитывать эти каналы в работе модуля.
    2. Записать значение в БД. Создать свою схему и таблицы в БД PostgreSQL. Использовать их для обмена между веб частью и модулем.

    #38102
    akofor@mail.ru
    Участник

    Записать значение в один или несколько каналов.

    Не могли бы вы привести пример, как в коде веб-плагина выглядит запись/считывание значения канала?

    #38103
    manjey73
    Участник

    Ну видимо надо копать webContext.ConfigDatabase.CnlTable и смотреть как читать и писать каналы например в плагине Table который есть в исходниках

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

    Не могли бы вы привести пример, как в коде веб-плагина выглядит запись/считывание значения канала?

    1. Если будете записывать через JavaScript со стороны браузера клиента, то посмотрите код плагина PlgMain. Он обращается к веб-сервису.
    2. Можно записать с серверной части веба в коде C#. Потребуется через Dependency Injection получить ScadaClient и вызвать его методы.

    Если нужен вариант 2, то только на следующей неделе смогу поискать пример.

    #38112
    akofor@mail.ru
    Участник

    Вариант 2 был бы идеален, спасибо

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

    Тогда на следующей неделе посмотрю и напишу сюда.

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

    Посмотрите использование clientAccessor на странице отправки команды. Ссылка

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