Стартовая страница › Форумы › Разработка и интеграция › Взаимодействие Модуля и Плагина ?
- В этой теме 31 ответ, 5 участников, последнее обновление 3 дня, 12 часов назад сделано
Mikhail.
-
АвторСообщения
-
06.02.2025 в 14:44 #36663
manjey73
УчастникДа, для конфигурирования с разделением прав и отображения вместо создания мнемосхемы.
06.02.2025 в 17:12 #36665JurasskPark
УчастникНу тогда только TCP или UDP сервер встраивать в модуль. )
07.02.2025 в 12:48 #36681Mikhail
МодераторСталкивался с похожей задачей. Выбрал такой вариант решения: настройки сохранялись в отдельную схему БД PostgreSQL. Они редактировались с помощью плагина через веб. Модуль периодически проверял, не изменились ли настройки. Если изменились, то загружал их заново себе для работы.
Плюсы: удобно редактировать и использовать одни и те же настройки. Минусы: база данных существует отдельно от проекта скады, что усложняет систему.
07.02.2025 в 12:50 #36682Mikhail
МодераторВебстанция работает с Сервером от пользователя ScadaWeb, который имеет роль Приложение. У него есть права, чтобы записать файл в рабочую директорию конфигурации или представлений. Так что если работать на уровне файлов, то реализовывать свой клиент и сервер не потребуется.
14.04.2025 в 17:25 #38069akofor@mail.ru
УчастникПрисоединяюсь к теме. Возникла необходимость передавать конфигурацию в серверный модуль из вебстанции — чтобы оператор мог на веб-схеме нажать кнопку, которая бы вызвала окно, ввести туда данные, которые бы отправились в модуль и повлияли как-то на его дальнейшую работу
Разобрался, как разработать отдельно стоящий веб-плагин, но хотелось бы сделать это самое всплывающее окно «надстройкой» над стандартной схемой Rapid Scada, если возможно, чтобы не приходилось под каждый технологический процесс писать отдельный веб-плагин, а прикрутить его уже к существующему представлению
Либо же сделать все в рамках одного веб-плагина, если веб-плагины умеют получать данные с каналов и отправлять на них команды14.04.2025 в 17:33 #38071manjey73
Участник@akoformail-ru если не жалко поделиться кодом плагина..
Чисто предположения пока, ибо не занимался.
1. всплывающее окно делать под шаблон xml и как-то его прописывать в строке вызова плагина. По аналогии с Графиками Про и другими, когда их цепляешь как Представление.
То есть прописав шаблон, при нажатии кнопки окно заполнится данными конкретно указанного шаблона. там можно много что прикрутить.2. К плагину придется писать модуль — типа комплект. Который будет проверять передаваемые данные от плагина и выполнять действия. Вроде как Михаил писал, что можно заставить перегрузиться Сервер даже через WEB. Но есть думаю иной путь.
Модуль должен добавлять себе в список действия, переданные плагином и выполнять их, а так же сохранять.
В случае перезагрузки Сервера он прочтет сохраненные добавленные вещи от плагина и уже будет ожидать новый список…Через Плагин можно и каналами управлять и считывать данные. Те же Таблицы и Мнемосхемы это делают.
14.04.2025 в 17:33 #38072manjey73
УчастникСобственно связка Модуль + Плагин вполне актуальное решение. В некоторых случаях оправданное.
14.04.2025 в 17:45 #38075akofor@mail.ru
УчастникДелал просто по оф.руководству https://rapidscada.net/docs/ru/latest/developers/plugin-development, никакого функционала далее не добавлял, потому что не успел разобраться, как с веб-плагина отправлять данные на каналы(и как читать их тоже). Вроде в WebContext есть только количество каналов…
14.04.2025 в 22:00 #38087Mikhail
Модераторчтобы оператор мог на веб-схеме нажать кнопку, которая бы вызвала окно, ввести туда данные, которые бы отправились в модуль и повлияли как-то на его дальнейшую работу
Варианты следующие:
1. Записать значение в один или несколько каналов. Учитывать эти каналы в работе модуля.
2. Записать значение в БД. Создать свою схему и таблицы в БД PostgreSQL. Использовать их для обмена между веб частью и модулем.15.04.2025 в 12:02 #38102akofor@mail.ru
УчастникЗаписать значение в один или несколько каналов.
Не могли бы вы привести пример, как в коде веб-плагина выглядит запись/считывание значения канала?
15.04.2025 в 12:32 #38103manjey73
УчастникНу видимо надо копать webContext.ConfigDatabase.CnlTable и смотреть как читать и писать каналы например в плагине Table который есть в исходниках
15.04.2025 в 15:40 #38106Mikhail
МодераторНе могли бы вы привести пример, как в коде веб-плагина выглядит запись/считывание значения канала?
1. Если будете записывать через JavaScript со стороны браузера клиента, то посмотрите код плагина PlgMain. Он обращается к веб-сервису.
2. Можно записать с серверной части веба в коде C#. Потребуется через Dependency Injection получить ScadaClient и вызвать его методы.Если нужен вариант 2, то только на следующей неделе смогу поискать пример.
15.04.2025 в 17:50 #38112akofor@mail.ru
УчастникВариант 2 был бы идеален, спасибо
16.04.2025 в 10:17 #38116Mikhail
МодераторТогда на следующей неделе посмотрю и напишу сюда.
22.04.2025 в 14:55 #38222 -
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.