Показано с 1 по 6 из 6

Тема: Modbus(Master)

  1. #1

    По умолчанию Modbus(Master)

    Уважаемые разработчики проясните пожалуйста следующую ситуацию.
    При работе ПЛК150 с ModbusSlave устройствами возникла следующая проблема. В PLC Configuration создан Modbus(Master). Внутри него создан Universal Modbus Device, внутри которого выбраны несколько(например, 3) Register Input Modul. Опрос Modbus-slave устройства идёт периодически 1 раз в секунду.
    Если ответ на запрос приходит позже чем Max timeout,то сообщение об ошибке почему-то отсутствует, но информация из Modbus-slave устройства оказывается не в тех Register Input Modul'ях, из которых она была запрошена. Ответы как бы сдвигаются циклически на одну позицию. Например, информация, запрошенная Register Input Modul 1, оказывается в Register Input Modul 2. Информация, запрошенная Register Input Modul 2, оказывается в Register Input Modul 3. А информация, запрошенная Register Input Modul 3, оказывается в Register Input Modul 1.
    При обмене используется интерфейс RS485 и протокол Modbus RTU
    Последний раз редактировалось uvwxyz; 06.08.2007 в 17:37.

  2. #2

    По умолчанию

    Уважаемые разработчики!
    Сделал новую прошивку и установил новый таргет как Вы советовали.
    Но ситуация не улучшилась. Теперь сдвиг информации происходит в другом направлении.
    Например, информация, запрошенная из Register Input Modul 1, оказывается в Register Input Modul 3. Информация, запрошенная из Register Input Modul 2, оказывается в Register Input Modul 1. А информация, запрошенная из Register Input Modul 3, оказывается в Register Input Modul 2.
    Второй мой вопрос.
    Не должно ли запаздывание с откликом от Modbus-slave устройства формировать сообщение об ошибке?

  3. #3

    По умолчанию

    Цитата Сообщение от uvwxyz Посмотреть сообщение
    Уважаемые разработчики проясните пожалуйста следующую ситуацию.
    При работе ПЛК150 с ModbusSlave устройствами возникла следующая проблема. В PLC Configuration создан Modbus(Master). Внутри него создан Universal Modbus Device, внутри которого выбраны несколько(например, 3) Register Input Modul. Опрос Modbus-slave устройства идёт периодически 1 раз в секунду.
    Если ответ на запрос приходит позже чем Max timeout,то сообщение об ошибке почему-то отсутствует, но информация из Modbus-slave устройства оказывается не в тех Register Input Modul'ях, из которых она была запрошена. Ответы как бы сдвигаются циклически на одну позицию. Например, информация, запрошенная Register Input Modul 1, оказывается в Register Input Modul 2. Информация, запрошенная Register Input Modul 2, оказывается в Register Input Modul 3. А информация, запрошенная Register Input Modul 3, оказывается в Register Input Modul 1.
    При обмене используется интерфейс RS485 и протокол Modbus RTU
    Дело совсем не в таргете и не в прошивке.
    Дело в особенностях протокола ModBus. В ModBus-е мастер не может идентифицировать ответы на запросы разл. регистров с одного и того-же устройства. Поэтому в Вашем случае, уважаемый uvwxyz, было следующее.

    1. При старте мастер опросил регистр 1.
    2. Устройство стормозило и ответило на запрос после таймаута - мастер высветил ошибку (только один раз, ее легко не заметить).
    3. Мастер посылает запрос ко сл. регистру и тут устройство наконец возвращает ответ на предидущий запрос.
    4.Мастер радостно кладет значение 1-го регистра в ячейку для 2-го. Цикл 3-4 повторяется.

    Решения два.
    1. Если устройство постоянно долго думает - выставите таймаут побольше.
    2. Если же это единичные случаи, то попробуйте чередовать команды чтения регистров, например 1-й читать командой 0х03, второй 0х04, третий 0х03 и т.д.
    В этом случае мастер сможет идентифицировать запаздавшую посылку по номеру команды.

  4. #4

    По умолчанию

    Уважаемый Филоненко Владислав!
    Вопрос №1.
    Modbus-slave устройство возврашает запрос хотя и с задержкой, но эта задержка явно меньше 1 секунды. Поэтому, когда Modbus-master формирует новый запрос, ответ на предыдущий запрос уже имеется в его буфере. Складывается впечатление, что Modbus-master не чистит свой буфер перед отправкой запроса. Поэтому, отправив новый запрос, он ответ на предыдущий запрос считает ответом на новый запрос. Так ли это?
    Вопрос №2
    Если Modbus-master формирует запросы в режиме By poll time,то при нажатии на кнопку "Стоп" выполнение программы, как и следовало ожидать, прекращается, а запросы на линии RS485 от ОВЕНА продолжают поступать. Это видно и по осциллографу и с помощью программ, слушающих линию.
    Почему Modbus-master в режиме By poll time при нажатии на кнопку "Стоп" не прекращает выдавать запросы на линию RS485?

  5. #5
    незарегистрированный
    Гость

    Smile

    1) Проверить можно используя by command
    2) Обновление области ввода вывода идет независимо от выполнения программы. Т.е. Вы же можете пощелкать релюшками не запапустив программу

  6. #6

    По умолчанию

    Цитата Сообщение от uvwxyz Посмотреть сообщение
    Уважаемый Филоненко Владислав!
    Вопрос №1.
    Modbus-slave устройство возврашает запрос хотя и с задержкой, но эта задержка явно меньше 1 секунды. Поэтому, когда Modbus-master формирует новый запрос, ответ на предыдущий запрос уже имеется в его буфере. Складывается впечатление, что Modbus-master не чистит свой буфер перед отправкой запроса. Поэтому, отправив новый запрос, он ответ на предыдущий запрос считает ответом на новый запрос. Так ли это?
    Вопрос №2
    Если Modbus-master формирует запросы в режиме By poll time,то при нажатии на кнопку "Стоп" выполнение программы, как и следовало ожидать, прекращается, а запросы на линии RS485 от ОВЕНА продолжают поступать. Это видно и по осциллографу и с помощью программ, слушающих линию.
    Почему Modbus-master в режиме By poll time при нажатии на кнопку "Стоп" не прекращает выдавать запросы на линию RS485?
    1. То, что я описал происходит именно так. Экспериментально подтверждено. Сам долго мучился пока не обнаружил такую "фичу" протокола МодБас.


    Кнопка ПУск/стоп выключает программу ПЛК, а не мастера. Для остановки мастеров надо записать 254 в каналы их статуса.

Ваши права

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