Показано с 1 по 10 из 138

Тема: IntraSCADA

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    13,153

    По умолчанию

    Не совсем понятно, что имеется в виду. "каналы связи надо программировать внутри плагина" - нет, не надо.
    Ну вот если я на счетчик буду пытаться делать плагин. Счетчиков 2 или больше. В плагине задается COM порт и его настройки? Или в какой-то надстройке которая и будет разруливать последовательные запросы? Каждый счетчик имеет несколько запросов и ответов ну по аналогии с Modbus группами.

    Еще такой вопрос, два(или более) устройства в плагине могут иметь общие переменные в рамках одной линии связи? (одного COM порта)

    тут пояснение требуется. Например плагин прибора один, по аналогии с Modbus на линии 2 устройства, это один экземпляр плагина будет запущен под разные id устройства ? в данном случае внутри плагина можно организовать глобальные переменные только для данного экземпляра плагина, чтобы эти переменные были доступны только тем устройствам, которые находятся на данной линии связи?

    Как или точнее кто в Modbus считает CRC? можно как-то подключить модуль (и что конкретно подключить) чтобы не повторять тот же самый код в плагине?
    з.ы. вообще идея отдельной dll (ну или модуля в рамках NodeJS) как бы тоже напрашивается, так как многие устройства используют похожие расчеты CRC например Modbus, Меркурий, тот же Пульсар и так далее и писать каждый раз в каждом плагине это ну как бы глупо.

    Ну и есть куча других функций по аналогии, например преобразования из BCD в DEC и обратно, из строки в HEX и обратно и так далее.
    Есть подобный функционал у вас? можно ли использовать в плагинах функции ядра системы и если можно то как?

    Проще говоря, есть ли доступ к функциям ядра и список того, что можно использовать при программировании ?
    Последний раз редактировалось melky; 12.01.2022 в 13:16.

  2. #2

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    Ну вот если я на счетчик буду пытаться делать плагин. Счетчиков 2 или больше. В плагине задается COM порт и его настройки?
    Разработчик плагина сам решает, какие параметры ему нужны и как будут устроены каналы.
    Для этого в файлах json специального формата описываются форма для параметров и форма для каналов: https://docs.intrascada.com/ru/pg143

    Пример: небольшая часть формы параметров плагина Modbus

    {"prop": "timeout","title": "Ожидание ответа на запрос","default": 5000, "type": "number"},
    {"prop" : "sendChanges", "title": "Отправлять только изменения", "type": "cb"}

    Вы можете посмотреть код плагина, который установлен, прямо в админке. Например для Modbus, в разделе Плагины->MODBUS на вкладке Редактор. Формы находятся в папке v5

    Ядро использует эти формы для ввода и передает данные плагину, т е плагин получит те параметры, которые определил (timeout, polldelay, ...)

    Аналогично, система никак не ограничивает, как будут устроены ваши каналы. Канал имеет id, r - флаг чтения, w - флаг записи. А остальное = требования протокола + ваша фантазия.

    Цитата Сообщение от melky Посмотреть сообщение
    Или в какой-то надстройке которая и будет разруливать последовательные запросы? Каждый счетчик имеет несколько запросов и ответов ну по аналогии с Modbus группами.
    Никаких надстроек, опрос выполняет сам плагин. Сколько и какие нужны запросы - сам отправляет, получает, парсит, как хочет.
    В принципе, если пишется специализированный плагин, набор каналов известен и не требуется настройка со стороны пользователя, плагин может сам объявить каналы, описав их в манифесте или отдавать их при старте. Или даже можно отдавать динамически

    Пример 1. Плагин jethomed1: https://github.com/intrahouseio/ih-v5-jethomed1-plugin
    Плагин отдает фиксированные каналы с заранее заданными ID при старте, а датчики 1-Wire отдает динамически при подключении

    Пример 2. Плагин laurent https://github.com/intrahouseio/ih-v5-laurent-plugin
    Все каналы прописаны в манифесте

    Просто нужно решить - что у вас является значением канала, которое будет отдаваться в ядро.

    Цитата Сообщение от melky Посмотреть сообщение
    Еще такой вопрос, два(или более) устройства в плагине могут иметь общие переменные в рамках одной линии связи? (одного COM порта)
    Общие переменные-параметры или переменные сеанса? В любом случае ответ - да, это реализуется просто.

    Цитата Сообщение от melky Посмотреть сообщение
    Ну и есть куча других функций по аналогии, например преобразования из BCD в DEC и обратно, из строки в HEX и обратно и так далее.
    Есть подобный функционал у вас?
    Такой функционал уже давно есть в любом языке высокого уровня. В javascript это элементарно, причем гуглится на раз:

    - parseInt( dec.toString(10),16); // DEC => BCD
    - parseInt( bcd.toString(16),10); // BCD => DEC
    - parseInt( hexString, 16); // HEX => BCD: '20' => 32
    - yourNumber.toString(16); // BCD => HEX: 32 => '20'

    Цитата Сообщение от melky Посмотреть сообщение
    Проще говоря, есть ли доступ к функциям ядра и список того, что можно использовать при программировании ?
    API плагина - https://docs.intrahouse.ru/ru/pg142
    Минимальный плагин - https://docs.intrahouse.ru/ru/pg141
    И другие разделы в пункте "Источники данных" -> "Разработка плагина"
    Там есть, как работать с ядром, как создать свои формы для параметров плагина и для каналов.

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •