<< Click to Display Table of Contents >> Navigation: Проект в MasterSCADA 4D > Дерево системы > Получение и отправка данных > Стандартные протоколы > Modbus > Рекомендации по настройке протокола Modbus > Диагностика работы с устройством Modbus |
При первом подключении к контроллеру рекомендуется создать устройство и добавить в него только один канал, предпочтительно с типом данных INT или WORD, чтобы избежать проблем с чередованием байт. Затем запустите опрос. Если в канале отображается корректное значение с достоверным признаком качества, можно приступить к созданию остальных каналов для этого устройства.
В ином случае требуется сформировать отчёт об ошибках и провести анализ трассировки обмена.
Если при опросе одного канала или всех параметров прибора возникают проблемы, то можно получить лог-файл и проанализировать обмен с устройством.
Важно! Получать лог-файлы обмена с устройством следует всегда на отдельном проекте, с одним устройством и минимумом переменных.
Чтобы в лог-файлы записывались запросы от устройств, необходимо активировать расширенный режим записи логов. Для этого, в панели свойств узла, для настройки Параметры запуска RT нужно установить значение /t :
После этого, запустите проект в режим исполнения, дождитесь возникновения проблемы, затем перейдите на главном меню во вкладку Сервис и выберите Отчет об ошибках. Создайте отчет об ошибке и откройте папку, содержащую отчет.
В случае если используется исполнительная система, входящая в состав среды разработки, файлы, по умолчанию, хранятся в папке: С:\Users\[имя пользователя]\AppData\Roaming\MPSSoft\MasterSCADA4D[номер версии]\ProjectsServiceData\[имя проекта]\Debug\[имя узла]\PLC\logs\log_[дата формирования файла].txt
В случае если используется исполнительная система, установленная как независимое приложение, то информацию о получении лог-файлов смотрите в соответствующем разделе.
Откройте лог-файл при помощи Блокнота или специальным ПО для просмотра логов (например LogViewer).
Поскольку в лог-файл попадает вся информация от системы, то нужно найти сообщения непосредственно от драйвера.
При включенном формировании расширенного лога при старте драйвер один раз выводит параметры всех запросов чтения для каждого устройства, сформированных драйвером. Пример сообщения:
[INF] (127.0.0.1:502) Device with address 1 Id 61049 Number of requests by region:
Coils:1
HoldingRegisters:1
Structure of requests (Region:StartAddress:CountElements)
C:0:1
H:0:5
В первой строке выводится IP адрес и номер порта устройства, затем адрес устройства. После этого количество запросов чтения для каждого региона. В данном случае устройство 127.0.0.1:502, адрес 1, запрашивается 1 запрос региона Coils и 1 запрос региона Holding Registers. Затем выводится структуру каждого запроса - Регион:Стартовый адрес:Количество элементов. В данном случае из региона Coils запрашивается 1 элемент с адреса 0, а из региона Holding Registers запрашивается 5 элементов с адреса 0.
После этого выводятся диагностические сообщения от драйвера уже в режиме опроса. Строки с информацией о чтении и отправки данных с устройства имеют уровень TRA (трассировки). Информация о чтении и записи данных по каждому каналу модуля Modbus:
[INF] (127.0.0.1:502) <Modbus> Address 1 ID 58152. Read start 2024-08-13T08:16:31.298539
54565749: |23384| [TRA] (127.0.0.1:502) Tx: [12] C1 8B 00 00 00 06 01 01 00 00 00 01
54565765: |23384| [TRA] (127.0.0.1:502) Rx: [10] C1 8B 00 00 00 04 01 01 01 00
54565765: |23384| [TRA] (127.0.0.1:502) Tx: [12] C1 8C 00 00 00 06 01 03 00 00 00 05
54565781: |23384| [TRA] (127.0.0.1:502) Rx: [19] C1 8C 00 00 00 0D 01 03 0A 00 0C 00 00 00 00 00 00 00 00
54565782: |23384| [INF] (127.0.0.1:502) <Modbus> Read done
Строки с информацией об отсутствии связи с устройством Modbus:
50735646: |22560| [INF] (127.0.0.1:502) <Modbus> Address 1 ID 61049. Read start 2024-08-13T07:12:41.195468
50735647: |22560| [ERR] (127.0.0.1:502) OpenTCPSocket failed error=10035
50735709: |22560| [INF] (127.0.0.1:502) Close socket : (state=1)
50735709: |22560| [ERR] (127.0.0.1:502) <Modbus> No connection. Set BAD to all tags
Это означает что нет ответа от устройства. Перепроверьте скорость, четность, стоп-биты, адрес устройства, а также тип протокола.
Драйвер может выдавать в лог следующие ошибки:
Текст ошибки |
Описание |
ERROR: no init sendandreceive |
Ошибка инициализации функции отправки запроса. Проверьте параметры подключения - номер СОМ порта, IP адрес и т.д. Например - неверно указан COM порт или он занят. |
ERROR: Port not open |
Не удалось открыть порт. Проверьте параметры подключения - номер СОМ порта, IP адрес и т.д. Например - неверно указан COM порт или он занят. |
ERROR: no answer |
Нет ответа от устройства. Проверьте параметры подключения к устройству. |
ERROR: CRC. Clear buffer |
Не совпадение контрольной суммы. Такое может быть, если задан слишком маленький таймаут. В этом случае драйвер очищает буфер и пытается опросить параметр снова. Попробуйте увеличить таймаут. |
ERROR: incorrect Transaction ID. Clear buffer |
Проявляется только с Modbus TCP. Означает что ID запроса не совпадает с ID ответа. В этом случае буфер также очищается и запрос повторяется. Также рекомендуется добавить таймаут. |
ERROR: incorrect address. Clear buffer |
Адрес устройства в запросе не совпадает с адресов в ответе. Такое может быть, если перепутались запросы. Опять же следует добавить таймаут. |
ERROR: incorrect data length. Clear buffer |
Не корректная длина данных - полученное количество данных не совпадает с запрошенным. Такое может быть, если перепутались запросы. Опять же следует добавить таймаут. |
ERROR: wrong answer length. Clear buffer |
Не корректная длина ответа - пакет не той длины какой ожидалось. Такое может быть, если перепутались запросы. Опять же следует добавить таймаут. |
ERROR: get code error. Exit |
От устройства получен код ошибки - второй байт после адрес более 0x80. Это означает что вы опрашиваете не тот регистр, не тот регион, слишком большая длина запроса. Подробнее эта ситуация описывается в разделе часто задаваемых вопросов. |
Смотрите также: