Команды для modbus

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы
ujin1
adviser
adviser
Сообщения: 239
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 19 раз
Поблагодарили: 38 раз
Контактная информация:

Re: Команды для modbus

Сообщение ujin1 »

Artem.spb писал(а): 23 авг 2023, 00:13 Открываем описание протокола, например, тут
01 (0x01) Чтение DO Read Coil Status Дискретное Чтение
02 (0x02) Чтение DI Read Input Status Дискретное Чтение
03 (0x03) Чтение AO Read Holding Registers 16 битное Чтение
04 (0x04) Чтение AI Read Input Registers 16 битное Чтение
05 (0x05) Запись одного DO Force Single Coil Дискретное Запись
06 (0x06) Запись одного AO Preset Single Register 16 битное Запись
15 (0x0F) Запись нескольких DO Force Multiple Coils Дискретное Запись
Сведения в этом источнике устарели. Относятся к протоколу PI–MBUS–300 1996 г.
Лучше обратиться все-таки к новому стандарту.
Названия функций не соответствуют даже старому источнику, соответственно и смысл другой
code Sub code (hex)
Read Discrete Inputs 02 02
Read Coils 01 01
Write Single Coil 05 05
Write Multiple Coils 15 0F
Read Input Register 04 04
Read Holding Registers 03 03
Write Single Register 06 06
Write Multiple Registers 16 10
Номера регистров 1-9999, 10001-19999, 30001-39999, 40001-49999 в новом стандарте отсутствуют. Просто есть 4 раздельных блока памяти
Адрес регистра указан в источнике ipc2u 0000 до 270E в стандарте от 0x0000 to 0xFFFF. То есть каждый блок может содержать не 9999 а 65535 значений
Изображение
Sergey Puzanov
assistant
assistant
Сообщения: 143
Зарегистрирован: 05 ноя 2020, 08:26
Версия LabVIEW: 18, 20.0f1
Благодарил (а): 26 раз
Поблагодарили: 4 раза
Контактная информация:

Re: Команды для modbus

Сообщение Sergey Puzanov »

Artem.spb писал(а): 23 авг 2023, 00:13 Поверьте всё же modbus pool-ом или чем-то подобным. Там проще типы регистров перебирать.
Да, попробую с ним, хоть понятно будет что именно за ответ приходит.
ujin1 писал(а): 23 авг 2023, 04:32 Можно проверить параметр F05.00, что выставлен Modbus. Попробовать записать параметр функцией 06, 16 (10H). Запись нельзя перепутать так как идет только в holding register.
Проверить настройки связи скорость и т.д., подключение, поменять провода A, B. Хотя если что либо из этого перепутать должна быть ошибка 56.
Да, 56 была ошибка когда выбирал не тот COM порт или когда подавал те же команды на чтение, только при выключенном ПЧ. Настройки сверю всё же, ну и да, что-то "безболезненное" попробую записать, спасибо.
PeyNikola
junior
junior
Сообщения: 56
Зарегистрирован: 24 июл 2012, 11:09
Версия LabVIEW: 2011, 202x
Контактная информация:

Re: Команды для modbus

Сообщение PeyNikola »

Посмотрите по статье:
https://habr.com/ru/articles/281430/
там часть вопросов которые Вы (автор темы) поднимаете - оглашены.
Sergey Puzanov
assistant
assistant
Сообщения: 143
Зарегистрирован: 05 ноя 2020, 08:26
Версия LabVIEW: 18, 20.0f1
Благодарил (а): 26 раз
Поблагодарили: 4 раза
Контактная информация:

Re: Команды для modbus

Сообщение Sergey Puzanov »

Ещё один шаг сделан.
Подключился к ПЧ через Modbus Poll, всё работает отлично и на чтение, и на запись именно командами 0х03 и 0х06.
1.png.jpg
2.jpg
А вот именно с LabView не хочет - с прежней библиотекой всё та же ошибка 538181 (illegal function), с библиотекой NI Modbus - 6001 (я так понимаю, та же самая, что и предыдущая).
На нескольких ПК пробовал работать с датчиком температуры SHT20 - с обоих библиотек с разных систем (2018 и 2020) всё работает. Что может быть на том ПК не так установлено? Перуставить всё не так просто - там чужая система. Или это может быть проблема именно с LV и ПЧ? Хотя протокол общения то один, вряд ли последний вариант имеет место быть. В общем следующий этап - прийти к тому ПК с нашим датчиком и прийти к ПЧ с нашим ПК и проверить, что будет работать. Но возможно у вас уже есть мысли, что это может быть, спасибо.

upd. Дело было в настройках, а именно в чётности, видимо только часть настроек должна быть корректна, чтобы связь с прибором установилась, и именно формат ответа labview не устраивал.
Artem.spb

Activity Автор
professor
professor
Сообщения: 3495
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 54 раза
Поблагодарили: 185 раз
Контактная информация:

Re: Команды для modbus

Сообщение Artem.spb »

Sergey Puzanov писал(а): 29 авг 2023, 08:04 upd. Дело было в настройках, а именно в чётности, видимо только часть настроек должна быть корректна, чтобы связь с прибором установилась, и именно формат ответа labview не устраивал.
Связь с прибором как таковая не устанавливается, у вас же com-порт.
В этом случае "успех" это всего лишь успешное открытие порта, по сути настройки в этот момент вообще не важны.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Коммуникация с приборами»