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

Тема: Универсальный диспетчер для Modbus.lib

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Цитата Сообщение от Спорягин Кирилл Посмотреть сообщение
    Увеличьте это время и счетчик NoPollingErrCnt перестанет увеличиваться.
    Убрал из циклического опроса 8 модулей - сделал опрос по условию - всё нормализовалось, сейчас счётчик не увеличивается.

    NoPollingTime тоже влияет - у меня стоит 3сек. Пробовал уменьшить до 2 сек - опять начал увеличиваться NoPollingErrCnt - оставил 3 сек.

    Ещё не понятно. Посмотрел модуль статистики контроллера - у меня постоянно показывает перегрузку процессора. В настройках минимальное время цикла - 1мс, по факту в модуле статистики наблюдаю 2-3мс. Решил поменять в настройках на 5мс... Перегрузки процессора нет, но по всем модулям начал счётчик
    NoPollingErrCnt опять увеличиваться и наблюдается затороможенность всей системы. Реакция на различные действия увеличилась на порядок. Откатил обратно на 1мс.

    Ещё проблемка. Решил увеличить скорость опроса в сетке. Максимальная, которую поддерживает самый медленный модуль - 38400. Сейчас установлено 9600. Поднял. Несколько модулей одного типа отвалились - ошибка Modbus превышение времени ответа... Подключаю сетку к ПК через USB-свисток - программой Modbus Pull - работают модули, опрос идёт... Откатил скорость на промежуточную - 19200 - опрос пошёл. Так и не смог запустить на скорости 38400, оставил 19200.

    Нет ли у Вас версии диспетчера для Codesys V3? Задолбал мой старичок (ПЛК110)... Есть ПЛК304, но модули через конфигурацию работают отвратительно - постоянные отвалы, пропуски опроса (на тех же линиях, где сейчас пробовал Ваш диспетчер на ПЛК110).
    Последний раз редактировалось Sergeba; 03.01.2020 в 12:53.

  2. #2
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    1,037

    По умолчанию

    Цитата Сообщение от Sergeba Посмотреть сообщение
    Убрал из циклического опроса 8 модулей - сделал опрос по условию - всё нормализовалось, сейчас счётчик не увеличивается.
    Интересно, сколько же у вас модулей на сети?
    Смотрели ли вы статистику опроса модулей.
    Может у вас быстрее и не получиться?


    Цитата Сообщение от Sergeba Посмотреть сообщение
    Ещё не понятно. Посмотрел модуль статистики контроллера - у меня постоянно показывает перегрузку процессора. В настройках минимальное время цикла - 1мс, по факту в модуле статистики наблюдаю 2-3мс. Решил поменять в настройках на 5мс... Перегрузки процессора нет, но по всем модулям начал счётчик
    NoPollingErrCnt опять увеличиваться и наблюдается затороможенность всей системы. Реакция на различные действия увеличилась на порядок. Откатил обратно на 1мс.

    Если вы увеличиваете время цикла ПЛК, то вы неизбежно увеличиваете общее время опроса всех модулей, так как для опроса любого модуля на любой скорости нужно как минимум 3 цикла. Об этом я писал вот тут.



    Цитата Сообщение от Sergeba Посмотреть сообщение
    Ещё проблемка. Решил увеличить скорость опроса в сетке. Максимальная, которую поддерживает самый медленный модуль - 38400. Сейчас установлено 9600. Поднял. Несколько модулей одного типа отвалились - ошибка Modbus превышение времени ответа... Подключаю сетку к ПК через USB-свисток - программой Modbus Pull - работают модули, опрос идёт... Откатил скорость на промежуточную - 19200 - опрос пошёл. Так и не смог запустить на скорости 38400, оставил 19200.
    Тут проблема скорее в различных характеристиках модулей.
    Происходит, видимо, следующее. Послан запрос на модуль 1. Он быстрый. Он очень быстро ответил. Контроллер разобрал ответ и послал запрос на модуль 2. Он медленный. И когда ПЛК уже послал запрос на модуль 2 (т.е. ему) он еще разбирает посылку для модуля 1. Поэтому посылку себе он пропускает. Возникают таймауты. Общая скорость опроса в сети падает.
    В этом случае можно увеличить настройку FramingTime в диспетчере. Это как раз пауза между посылками. Для устранения подобных проблем. Или же увеличьте общее время цикла ПЛК. Пауза возникнет сама собой.



    Цитата Сообщение от Sergeba Посмотреть сообщение
    Нет ли у Вас версии диспетчера для Codesys V3? Задолбал мой старичок (ПЛК110)... Есть ПЛК304, но модули через конфигурацию работают отвратительно - постоянные отвалы, пропуски опроса (на тех же линиях, где сейчас пробовал Ваш диспетчер на ПЛК110).
    Нет под 3-ю версию не писал. Но я думаю, что если просто перенести код 2-го КДС в 3-й, то должно заработать.

  3. #3

    По умолчанию

    Цитата Сообщение от Спорягин Кирилл Посмотреть сообщение
    Интересно, сколько же у вас модулей на сети?

    Нет под 3-ю версию не писал. Но я думаю, что если просто перенести код 2-го КДС в 3-й, то должно заработать.
    Модулей на одном порту 29, на втором 15.

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

  4. #4

    По умолчанию

    Цитата Сообщение от Спорягин Кирилл Посмотреть сообщение
    если просто перенести код 2-го КДС в 3-й, то должно заработать.
    Уточните, с библиотеками. В проекте подключаются две библиотеки GCTimers и GCCommon. Они используются в диспетчере? Нужно ли и как их перенести в CDS3?

    Вроде бы разобрался... GCCommon специально для ПЛК110, т.е. для ПЛК307 не нужна, а вторая нужна.

    Всё перенёс, пока в работе не пробовал. Немного отличается использование библиотеки ComService.

    Ещё проблема... в CDS3 на "Enable := NOT Mdl.pDisp^.ReadInpRegs.Read" ругается, посмотрел библиотеку Modbus... там нет переменной READ... Как задавать Enable для опроса? Read это локальная переменная, странно что к ней есть доступ... Могу ли я использовать для этих целей Complete?
    Последний раз редактировалось Sergeba; 20.01.2020 в 11:57.

  5. #5
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    1,037

    По умолчанию

    Цитата Сообщение от Sergeba Посмотреть сообщение
    Ещё проблема... в CDS3 на "Enable := NOT Mdl.pDisp^.ReadInpRegs.Read" ругается, посмотрел библиотеку Modbus... там нет переменной READ... Как задавать Enable для опроса? Read это локальная переменная, странно что к ней есть доступ... Могу ли я использовать для этих целей Complete?
    Поясню по Enable.

    Все блоки из библиотеки Modbus.lib активируются по переднему фронту переменной Enable.
    Если посмотреть реализации, которые предлагают в примерах от разработчика библиотеки Modbus.lib, там можно встретить такие конструкции.
    Шаг Х
    Блок1(Enable := true);
    if Блок1.Complete then
    Блок1(Enable := false);
    end_if;

    Так пишется, чтобы, когда мы в следующий раз попали на шаг Х снова появился фронт на входе Enable.
    На мой взгляд, так некрасиво.

    Вызов

    Шаг Х
    Блок1(Enable := not Блок1.Read);

    позволяет формировать фронт, не дублируя вызов Блока1.
    Так при первом заходе на шаг Х (Read = false) и мы сформировали фронт на входе Enable.
    При втором заходе Read = true и мы записали в Enabel ложь. А значит, когда в следующий раз мы попадем на шаг Х, то снова появиться фронт на входе Enable.

  6. #6

    По умолчанию

    Цитата Сообщение от Спорягин Кирилл Посмотреть сообщение

    позволяет формировать фронт, не дублируя вызов Блока1.
    Так при первом заходе на шаг Х (Read = false) и мы сформировали фронт на входе Enable.
    При втором заходе Read = true и мы записали в Enabel ложь. А значит, когда в следующий раз мы попадем на шаг Х, то снова появиться фронт на входе Enable.
    Ок, я понял. В отсутствии Read что я могу использовать?

    Прочитал Ваш ответ в той теме...Попробую скомпилировать с Read.
    Последний раз редактировалось Sergeba; 20.01.2020 в 14:33.

Похожие темы

  1. Универсальный блок питания ПР114
    от sea в разделе Программируемые реле
    Ответов: 12
    Последнее сообщение: 13.10.2013, 21:56
  2. PCLogger - универсальный логгер для CDS v3
    от Mikhail Shvetsov в разделе ПЛК3xx (архив)
    Ответов: 0
    Последнее сообщение: 23.11.2012, 13:39
  3. Универсальный Modbus Сервер Инсат и 200 контроллеров ПЛК-100
    от lomtik в разделе Сетевые технологии
    Ответов: 17
    Последнее сообщение: 08.11.2012, 22:42
  4. Универсальный конфигурируемый регулятор
    от ОООСА в разделе Разработки
    Ответов: 32
    Последнее сообщение: 09.12.2009, 22:12
  5. Ответов: 7
    Последнее сообщение: 04.05.2009, 09:42

Ваши права

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