Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: Работа MODBUS-RTU через библиотеку OwenCommunication

  1. #1
    Пользователь
    Регистрация
    30.11.2012
    Адрес
    40RUS
    Сообщений
    316

    Question Работа MODBUS-RTU через библиотеку OwenCommunication

    Здравствуйте!
    Пытаемся внедрить библиотеку OwenCommunication для организации обмена через интерфейс RS485 по протоколу MODBUS-RTU на ПЛК210.
    Заметили, что при выполнении запроса чтения параметра скорость опроса зависит от количества вызовов соответствующего функционального блока запроса (MB_SerialRequest).
    То есть: если вызывать MB_SerialRequest один раз за цикл ПЛК - то при цикле 5мс - частота опроса получалась 40 мс, при цикле ПЛК 10 мс - частота опроса - 80 мс.
    Потом провели эксперимент (костыль): стали вызывать MB_SerialRequest несколько раз подряд в одном цикле ПЛК - и (О, чудо!) время опроса уменьшилось.
    Сделали вывод: библиотека работает не оптимально, то есть появление флага завершения транзакции xDone - требует обязательно определённого количества вызовов ФБ MB_SerialRequest, независимо от того что физически ответ от SLAVE устройства был уже был получен.
    Подскажите, пожалуйста, либо мы где-то ошибаемся (подскажите где?), либо можно как-нибудь оптимизировать работу библиотеки?
    Последний раз редактировалось _Pavel_; 30.04.2021 в 13:47.
    Напильник, велосипед, бубен, грабли и костыли - основные инструменты программиста.

  2. #2
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,062

    По умолчанию

    Добрый день.

    Потом провели эксперимент (костыль): стали вызывать MB_SerialRequest несколько раз подряд в одном цикле ПЛК - и (О, чудо!) время опроса уменьшилось.
    Сделайте, пожалуйста, простейший тестовый проект с обоим вариантами опроса (с одним вызовом ФБ в цикле и несколькими).

  3. #3
    Пользователь
    Регистрация
    30.11.2012
    Адрес
    40RUS
    Сообщений
    316

    По умолчанию

    Отправил вам на почту проекты. Надеюсь она примет 120 мб...
    Напильник, велосипед, бубен, грабли и костыли - основные инструменты программиста.

  4. #4

  5. #5

    По умолчанию

    О! Интересная мысль. Подпишуь на тему.
    У меня по 70 мсек получались задержки опросов на этой либе. Но я вызывал по разу за цикл. Вот тут расписывал: https://owen.ru/forum/showthread.php...l=1#post345831

    _Pavel_ А можно чуток подробностей? Сколько модулей IO опрашивается?
    Как были сделаны костыли? А то мне видится что-то типа FOR ... 1 TO 10... =)

  6. #6
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,062

    По умолчанию

    Подскажите, пожалуйста, либо мы где-то ошибаемся (подскажите где?), либо можно как-нибудь оптимизировать работу библиотеки?
    Я бы не сказал, что вы где-то ошибаетесь. Ваш вариант использования (с вызовом ФБ в цикле FOR) в определенной степени "подавляет" асинхронную модель выполнения библиотеки.
    За счет этого вы, с одной стороны, получаете "более быстрый" обмен, а с другой - увеличиваете время цикла вашей задачи (особенно ярко это будет проявляться при обрыве линии связи, когда начнут срабатывать таймауты).

    библиотека работает не оптимально
    Я не готов согласиться с этой фразой, потому что не упомянуты критерии оптимальности.
    При разработке библиотеки не ставилась цель обеспечения возможности "очень быстрого" опроса.
    Основная парадигма библиотеки - функциональность, гибкость настройки, управление обменом из кода, базовые средства для реализации нестандартных протоколов.

    В тех специфических задачах, где нужна очень высокая частота опроса (когда принципиальны десятки или даже единицы миллисекунд) - можно использовать синхронную библиотеку SysCom.

  7. #7
    Пользователь
    Регистрация
    30.11.2012
    Адрес
    40RUS
    Сообщений
    316

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    О! Интересная мысль. Подпишуь на тему.
    У меня по 70 мсек получались задержки опросов на этой либе. Но я вызывал по разу за цикл. Вот тут расписывал: https://owen.ru/forum/showthread.php...l=1#post345831

    _Pavel_ А можно чуток подробностей? Сколько модулей IO опрашивается?
    Как были сделаны костыли? А то мне видится что-то типа FOR ... 1 TO 10... =)
    Да, сперва мы именно так и поступили: FOR ... 1 TO 10... но благодаря многочисленным экспериментам удалось выявить наиболее оптимальный способ использования ФБ MB_SerialRequest, а именно: после того как предыдущий запрос выполнен, то есть MB_SerialRequest установил флаг xDone, необходимо в этом же цикле ПЛК трижды продёрнуть ФБ MB_SerialRequest с новыми параметрами запроса, или с теми же, если это поллинг одного устройства. Таким образом получается максимальная скорость опроса, сравнимая с ПЛК 110 М02. Например, удалось достичь периода опроса одного модуля на скорости 115200 - 15 мс, при времени цикла ПЛК 5 мс.
    Напильник, велосипед, бубен, грабли и костыли - основные инструменты программиста.

  8. #8
    Пользователь
    Регистрация
    30.11.2012
    Адрес
    40RUS
    Сообщений
    316

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Я бы не сказал, что вы где-то ошибаетесь. Ваш вариант использования (с вызовом ФБ в цикле FOR) в определенной степени "подавляет" асинхронную модель выполнения библиотеки.
    За счет этого вы, с одной стороны, получаете "более быстрый" обмен, а с другой - увеличиваете время цикла вашей задачи (особенно ярко это будет проявляться при обрыве линии связи, когда начнут срабатывать таймауты).



    Я не готов согласиться с этой фразой, потому что не упомянуты критерии оптимальности.
    При разработке библиотеки не ставилась цель обеспечения возможности "очень быстрого" опроса.
    Основная парадигма библиотеки - функциональность, гибкость настройки, управление обменом из кода, базовые средства для реализации нестандартных протоколов.

    В тех специфических задачах, где нужна очень высокая частота опроса (когда принципиальны десятки или даже единицы миллисекунд) - можно использовать синхронную библиотеку SysCom.
    Я с Вами не могу согласиться. Насколько показывают наши испытания - библиотека работает именно неоптимально. Какой смысл в 3-х кратном продёргивании запроса в одном цикле ПЛК? И разве скорость опроса не является одним из главных критериев оптимальности работы библиотеки, да и и контроллера в целом? А если количество модулей на RS485 будет большое? Причём при срабатывании таймаутов мы не заметили каких-либо проблем (при использовании нашего, вышеизложенного способа применения библиотеки)
    Да, она достаточно удобна в использовании - вопросов нет.
    Я в свое время потому и не перешёл на ПЛК210, потому что увидел слишком высокие тайминги опроса по сравнению с ПЛК110 М02. Однако, как оказалось ПЛК может больше)
    Напильник, велосипед, бубен, грабли и костыли - основные инструменты программиста.

  9. #9
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,062

    По умолчанию

    Какой смысл в 3-х кратном продёргивании запроса в одном цикле ПЛК?
    В вашем случае вы просто постоянно в цикле вычитываете буфер COM-порта, ожидая, когда же наконец придет ответ.
    Смысл примерно такой же, как увидев на дверях табличку "перерыв" ждать под дверью вместо того, чтобы просто зайти попозже.

    А если количество модулей на RS485 будет большое?
    Т.е. проектировщик системы, понимая, как важна в рамках конкретной задачи скорость опроса использовал для обмена последовательный интерфейс.
    Вероятно, стоит переадресовать этот вопрос ему.

  10. #10
    Пользователь
    Регистрация
    30.11.2012
    Адрес
    40RUS
    Сообщений
    316

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    В вашем случае вы просто постоянно в цикле вычитываете буфер COM-порта, ожидая, когда же наконец придет ответ.
    Смысл примерно такой же, как увидев на дверях табличку "перерыв" ждать под дверью вместо того, чтобы просто зайти попозже.
    Евгений, я могу доказать что дело не в "зайти попозже", то есть не во времени, а именно в количестве вызовов ФБ. Вот только что ещё раз проделали эксперимент: один slave, 115200, читаем один регистр, время цикла 10 мс, один вызов ФБ за цикл - результат период обмена 80 мс. Далее - все те же условия, но продёргиваем ФБ по три раза в каждом цикле - результат - 30 мс. Вы считаете это нормальное поведение? Вычитывание в цикле буфера занимает несравнимо малое время, меньше 0,5 мс.


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

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Библиотека OwenCommunication (релиз версии 3.5.11.7)
    от Евгений Кислов в разделе Библиотеки CODESYS
    Ответов: 5
    Последнее сообщение: 05.03.2024, 11:05
  2. Работа с архивом через библиотеку CAA File
    от KuristinaK в разделе СПК1хх [М01]
    Ответов: 9
    Последнее сообщение: 16.04.2021, 08:34
  3. СПК107 не работает ФБ UNM_SerialRequest OwenCommunication
    от eigor_vl в разделе СПК1хх [М01]
    Ответов: 5
    Последнее сообщение: 22.07.2020, 08:35
  4. Ответов: 8
    Последнее сообщение: 24.10.2014, 15:41
  5. Опрос СИ-30 через библиотеку owen_io.dll
    от MCBK в разделе Эксплуатация
    Ответов: 0
    Последнее сообщение: 05.09.2013, 16:25

Метки этой темы

Ваши права

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