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

Тема: 2 ModbusRTU Slave на 1 порту.

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,596

    По умолчанию

    но кому надо
    Кому надо - могут все сделать самостоятельно, как вы и упомянули.
    У блока есть выход stRequestInfo.
    В рамках имитатора - порядок запросов от мастера должен быть предсказуем.
    Поэтому получив информацию о текущем запросе - можно понять, какой будет следующим, и своевременно записать в регистры слэйва нужные значения.
    Никаких задержек это не должно создавать.

    Добавлять в библиотеку крайне специфический функционал ради пары человек, которые по каким-то причинам не используют для имитации слэйвов готовое ПО типа MasterOPC Universal Modbus Server - не выглядит перспективной задачей.

  2. #2

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    В рамках имитатора - порядок запросов от мастера должен быть предсказуем.
    Поэтому получив информацию о текущем запросе - можно понять, какой будет следующим, и своевременно записать в регистры слэйва нужные значения.
    Никаких задержек это не должно создавать.
    Я успел обратить внимание на то, что при попытке записать в общую область памяти данные для конкретного fbModbusSerialSlave.stRequestInfo.usiSlaveId по триггеру xNewRequest - я получаю смещение ровно на один адрес.
    То есть - прибор с адресом 21 получает инфу, предназначенную для прибора с адресом 20. И так далее. Я понимаю, что это происходит так:
    ФБ получил запрос от адреса 20, отдал ему данные, обновил переменную Id на 20, вернул управление основному циклу.
    А уже основной цикл, увидев число 20 радостно записал в общий буфер данные для 20 адреса, хотя уже поздно это делать.
    И на следующем вызове эти данные достались прибору с адресом 21.

    Но вот предположить, что запросы от мастера всегда будут приходить в строгом порядке, я почему-то не мог. Раз так - это полностью решает проблему имитации нужного количества модулей
    Последний раз редактировалось Нидвораич; 04.04.2025 в 16:25. Причина: очепятку правил

  3. #3

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Добавлять в библиотеку крайне специфический функционал ради пары человек, которые по каким-то причинам не используют для имитации слэйвов готовое ПО типа MasterOPC Universal Modbus Server - не выглядит перспективной задачей.
    Конечно же, я в первую очередь для имитации попытался использовать MasterOPC Universal Modbus Server. Вы неоднократно его упоминаете в видео и тут на форуме. Но.
    Чтоб сымитировать событие на вводе нужно:
    1) щёлкнуть по нужному тегу,
    2) щёлкнуть для открытия диалога ввода нового значения,
    3) ввести новое значение
    4) подтвердить ввод

    Очень много действий для такой маленькой операции. И это не самое главное в целом, хоть и очень неудобно.
    Вот конкретно мой пример:
    У меня есть 7 компонентов и весы. Контролер должен включать поочерёдно шнеки, чтоб насыпать в весы нужную дозу по рецепту.
    Весовой модуль уже находится в работе. Я написал в Кодесис его имитатор, который по нажатию кнопки транслирует в сом порт постепенно увеличивающийся вес.
    И вот для имитации работы всего проекта мне нужно:
    Открыть кодесис1, запустить отладку проекта
    Открыть кодесис2, запустить имитацию работы весового модуля
    Открыть Мастеор ОПС для имитации модулей ввода вывода.

    Далее в Кодесис1 я нажимаю "взвесить",
    мне срочно нужно кинуться в ОПС, чтоб сымитировать ответную реакцию первого контактора,
    потом метнуться в Кодесис2, чтоб запустить имитацию набора веса
    Когда в Кодесис1 вес подойдёт к переключению на следующий шнек - мне нужно снова побежать в ОПС, остановить первый контактор
    Потом в Кодесис2 остановить набор веса,
    потом в ОПС сымитировать ответ второго контактора
    и снова в Кодесис2 запустить набор веса.

    И при всём при этом мне одним глазом нужно следить, собственно, за отладочными параметрами )))
    Ну у меня же всего же две руки же же. Я посидел так пару вечеров, и нервы мои иссякли, потому что я постоянно либо путал, что там надо включить и получал ошибку, либо не успевал в тайминги.
    Плюс, у меня начинают уплывать в космос все измеряемые скорости насыпания... В общем, отладка в динамике меня сильно вымотала.

    Отныне у меня будет так:
    В кодесис1 крутится проект с отладкой,
    в кодесис2 крутятся сразу и имитатор весового модуля, и оба модуля ввода-вывода.
    Так как они находятся в одном проекте - весовой модуль сможет совершенно автоматически заупускаться и останавливаться в зависимости от состояния выходов модуля выводов.
    И я наконец-то смогу сконцентрироваться на отладке, не мороча голову лишними телодвижениями

    А, и бонусом - я могу расположить все кнопки визуально так, как они расположены на заводе, а не просто в столбик, чтоб не искать их глазами каждый раз.
    В общем - может, тех, кому надо, и мало, но мы в тельняшках
    И большое спасибо за вчерашнюю наводку про общее адресное пространство и за сегодняшнюю про строгий порядок опроса. Очень ценная информация

Похожие темы

  1. Ответов: 11
    Последнее сообщение: 23.11.2019, 09:38
  2. ПЛК110 + ПМ 01 и ModBusRTU
    от ZilkinHvost в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 23.04.2015, 19:46
  3. МСД-200 ModbusRTU Slave
    от LexSL в разделе Эксплуатация
    Ответов: 12
    Последнее сообщение: 14.12.2013, 11:09
  4. Управление ТРМ201 по ModbusRTU
    от rwg в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 14.08.2013, 17:12
  5. МУ110-16Р и команда 16 ModbusRTU
    от GilmiyarovKR в разделе Эксплуатация
    Ответов: 3
    Последнее сообщение: 04.11.2012, 17:11

Ваши права

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