Ответы в темах
-
АвторЗаписи
-
Vyacheslav
УчастникЯсно. Значит это поле задействовано в возможностях ПО для визуализации. А в функционале сервера его можно задействовать с помощью формул.
Vyacheslav
УчастникЕсли текущий этап только начальный, то я бы например не стал погружаться в указанные вами языки.
На мой взгляд было бы неплохо начать с C#. Изучить текущую архитектуру RapidScada. Получить опыт в написании простейшего клиента. Разобраться с базовыми адаптерами из библиотеки ScadaData
Изучение адаптеров позволит сформировать понимание внутреннего представления текущего среза, и архивных срезов а также других объектов на базе которых формируются пакеты для взаимодействия по сети.После этого периода, я думаю пройдет не мало времени все зависит от текущего опыта работы с С#, можно приступать в зависимости от задач к поиску альтернативных способов взаимодействия.
В качестве базовой основы вам необходимо разобраться с концепцией программирования клиент серверной архитектуры. Разобраться с понятием сокетов. написать простейшего TCP клиента.
После того как это будет понятно. Необходимо изучить используя исходный код проекта в части протокола взаимодействия с RapidScada. Понять структуру пакетов, расположение необходимых заголовков. По исходному коду разобраться в какой последовательности отправлять запросы и разобрать полученные ответы.
Как этот этап будет пройден. Можно приступать к поиску аналогичных объектов взаимодействия в других языках программирования.
Например для реализации задач взаимодействия с RapidScada я бы использовал следующие яыки: С/С++,Go,JavaScript+node.js,Lua . Думаю, что это самый оптимальный набор для написания сторонних клиентов. Ну и на указанных языках тоже можно написать клиента.
Наверно было бы проще если бы архитектура RapidScada была в виде графической схемы с описанием структуры всех пакетов для взаимодействия и хранения данных.
Но опять же при определенном опыте можно разобраться в этом самостоятельно по исходному коду. Ключевые исходные файлы документированы достаточно подробно.Vyacheslav
УчастникДля реализации логики на обычной веб странице необходимо использовать JS.
В первом приближении можно попробовать поработать с APIДоступ к функциям API осуществляется через объект с именем scada.
При этом необходимо учитывать, что представление является дочерним элементом и доступ к этому объекту необходимо получить через родительское окно.
Например так: var rssrv = window.parent.scada;Теперь можно читать внимательно API и вызывать необходимые функции.
Например так: rssrv.clientAPI.getCurCnlData(602,fcnldata);
Данная функция возвращает текущее значение канала, номер которого передается в первом аргументе функции (в тек примере это 602). Второй аргумент это функция обратного вызова. Формат вызова коллбак функции описан для каждого метода API. В текущем примере функция должна принимать 2 параметра, первый это успешность выполнения запроса, второй результат запроса.
Пример коллбак функции:
function fcnldata(status,data){
console.log(data);
}Если открыть панель логирования то можно будет увидеть примерно следующее:
Object { Val: -38.09412816557468, Stat: 1 }
Где Val это значение канала, а Stat его статус.В описании вызова каждого из методов также приводится прямая ссылка шаблон для вызова вебсервиса. Перед тем как вызвать методы из скрипта было бы неплохо проверить работоспособность соответствующих методов сервиса при вызове их напрямую через адресную строку браузера.
При беглом ознакомлении с кодом API, сервиса для передачи команды не нашел. Возможно он реализуется где то в других частях проекта.
Альтернативный вариант (я использую именно такой подход, на мой взгляд он более гибкий) написать собственный веб сервис.
-
Ответ изменён 9 лет, 5 месяцев назад пользователем
Vyacheslav.
Vyacheslav
УчастникЭто свойство использовалось во всех версиях драйвера и на старых оно отрабатывает корректно. Проблема видимо возникла на новой версии RapidScada. Там изменилось пространство имен, что повлияло на работоспособность драйвера в целом. На гитхабе можно посмотреть суть разницы изменений в коде.
На текущий момент драйвер для KpMQTT обновлен для версии RapidScada 5.0
СкачатьА также добавлена видео инструкция по его установке и настройке.
Vyacheslav
УчастникПодскажите вы подключались к MQTT брокеру провайдера или к собственному установленному серверу MQTT?
Дело в том, что если вы подключаетесь к бесплатным сервисам MQTT, то там есть ограничения на количество опросов за период времени и другие ограничения.
Лучше всего проверять на самостоятельно установленном MQTT сервере.
В предыдущей версии драйвера поведение интерфейса при разрыве связи не приводило к ее автоматическому восстановлению. В текущей версии такая обработка добавлена, но при этом если существуют ограничения со стороны брокера то значение состояния сервера постоянно сбрасывается и тут же восстанавливается. Я думаю это будет заметно если уменьшить частоту опроса сервера.Vyacheslav
УчастникМожет из этого что то получится:
1. https://github.com/ms-iot/pid-controller/blob/master/PidController/PidController/PidController.cs
2. http://pastebin.com/J1xpTK8e
3. http://www.habrador.com/tutorials/pid-controller/3-stabilize-quadcopter/
На мой взгляд родное место для ПИД в случаях управлениях объектами АСУТП это контроллер (с ОС реального времени). Для каких то процессов наверно и можно использовать или как доп каскад. Или просто для экспериментов, моделирования и анализа процессов на более высоком уровне чем непосредственно локальное управление процессом.
Vyacheslav
УчастникЗапуск и останов служб Сервера и Коммуникатора возможен через стандартные инструменты управления компьютером. API для перезапуска линий связи, а также HTTP API нужно делать как отдельный модуль.
Подразумевалось, что RS функционирует исключительно на Linux. Изучал исходный код, на мой взгляд оптимальным местом для реализации сервиса является место где реализуется работа с классом Manager. Соответственно при запуске или перезапуске системы исполняемый файл, который будет по сути являться прокси для вызова методов класса Manager, может запускаться с наименьшими проблемами.И по сохраненному состоянию может например запустить или остановить сервер или аналогично запустить или остановить линию связи, активировать или деактивировать КП.
Еще есть идея создать Docer контейнер с Rapid Scada. Это позволит разворачивать и запускать RS практически в любой системе где установлен Docer. Вы не планируете создать базовый для RapScada и RapComm образ и выложить его на Docer Hub?
Vyacheslav
УчастникПоддерживаю идею о создании привязки состояния КП и источника данных к входным каналам. Сейчас это можно делать только в самописных драйверах.
Было бы не плохо еще добавить, возможность логирования коммуникатора и сервера на внешний syslog сервер.
Добавить HTTP API для управления коммуникатором и скада сервером. (Запуск, останов, информация о текущем состоянии линий связи и КП, аналогично что то вывести для сервера.) Выходной и входной формат взаймодеймтвия json.
Vyacheslav
УчастникОбновлена документация для драйвера KpMQTT:
https://github.com/bersim/OpenKPs/tree/master/KpMQTTБинарная версия драйвера KpMQTT:
https://github.com/bersim/OpenKPs/files/499838/KpMQTT.zipVyacheslav
УчастникПоявился вопрос, связанный с определением количества КП.
Правильно ли я понимаю ниже следующее описание алгоритма работы Scada Communicator:
1. ScadaCommunicator запускается в виде отдельного процесса.
2. Внутри каждого процесса в зависимости от конфигурации могут запускаются отдельные потоки для активных линий связи параллельно.
3. Внутри каждого потока линии связи происходит последовательный циклический опрос активных КП. При этом общее время цикла опроса внутри потока линии связи равно сумме времен затраченных на каждое КП.-
Ответ изменён 9 лет, 10 месяцев назад пользователем
Vyacheslav.
Vyacheslav
УчастникЯ смотрел на сайте, но не нашел информации о полном перечне драйверов. Было бы неплохо если была бы организована выделенная страничка с полным перечнем драйверов, кратким описанием или ссылками на внешние ресурсы. Возможно как то отдельно сгруппировать ссылки на открытые драйвера.
Документацию буду дополнять, но только на русском.
На счет английской адаптации не уверен, что самостоятельно смогу осуществить полноценный перевод.Vyacheslav
УчастникДобавлены новые функциональные возможности для драйвера KpMQTT:
1. Конфигурация уровня Qos сообщения.
2. Авторизация пользователя по имени и паролю
3. Публикация значений каналов из текущего среза RapidScada в MQTT брокер.https://github.com/bersim/OpenKPs/tree/master/KpMQTT
-
Ответ изменён 9 лет, 10 месяцев назад пользователем
Vyacheslav.
Vyacheslav
УчастникУ вас написано 2016-07-18 15:54:14 <raspberrypi><root><ERR> Ошибка при компилировании исходного кода формул:
Прочитайте вот это: Сборка scadaserver
Могу выложить свой собранный дистрибутив сервера для малины. У меня ScadaServer работает на raspberry pi модель B 512mb. Никаких проблем кроме тех о которых я описал в посте не проявлялось. Работает в круглосуточном режиме. Останавливаю периодически сам для административных нужд.
Vyacheslav
УчастникНа реальных объектах в работе не использую. Пока только как универсальную шину для передачи небольших пакетов данных в виде отдельного консольного приложения. А в составе коммуникатора пока держу его в режиме тестирования. По результатам наблюдений обнаружил что возникают моменты задержки передачи данных. Пока не понимаю с чем они связаны. Данные передаю небольшими порциями. думаю что данный драйвер не полностью реализует возможности протокола MQTT.
По коду воспользуюсь вашими советами, кроме синтаксиса {. Раньше тоже писал с новой строки и только потому, что старые версии IDE так размечали автоматом (да и во всех книжках так было). Сейчас повсеместно встречается код где { начинается сразу после скобок метода. Думаю это связано с нововведениями в .NET фреймворке когда заполняются свойства класса после его определения. На мой взгляд визуально выглядит компактней.
Vyacheslav
УчастникВыложил пока как получилось на GitHub https://github.com/bersim/OpenKPs
Код еще надо оптимизировать (неплохо будет если кто то сможет указать на явные недочеты , будет полезно для изучения и понимания) и дописывать функционал:
1. Выбор режима взаимодействия с брокером
2. Выбор типа QoS
3. Добавить параметры имя пользователя и пароль для брокера
4. Публикации топиков по команде. (тип публикации: значение, текущий срез сырым массивом байт, текущий срез в формате JSON/BSON) -
Ответ изменён 9 лет, 5 месяцев назад пользователем
-
АвторЗаписи