Как подключить Modbus RTU к компьютеру

Обновлено: 21.11.2024

Modbus RTU — это открытый последовательный протокол, основанный на архитектуре Master/Slave, первоначально
разработанной компанией Modicon (теперь Schneider Electric). Это широко распространенный протокол последовательного уровня
из-за его простоты использования и надежности. Modbus RTU широко используется в системах управления зданием (BMS) и системах промышленной автоматизации (IAS).

Сообщения Modbus RTU представляют собой простую 16-битную структуру с CRC (циклически избыточной контрольной суммой).
Простота этих сообщений обеспечивает надежность. Благодаря этой простоте базовая 16-разрядная структура регистров
Modbus RTU может использоваться для упаковки данных с плавающей запятой, таблиц, текста ASCII, очередей и других несвязанных данных.

Этот протокол в основном использует для связи последовательные интерфейсы RS-232 или RS-485 и поддерживается всеми коммерческими SCADA, HMI, серверами OPC и программами сбора данных на рынке. Это позволяет очень легко интегрировать оборудование, совместимое с Modbus, в новые или существующие приложения для мониторинга и управления.

Рекомендуемые шлюзы Modbus RTU

Ресурсы Modbus RTU

Хотите узнать больше о Modbus RTU?

Подпишитесь на нашу серию электронных писем по обучению автоматизации, чтобы узнавать все о Modbus и основных промышленных протоколах в недельном формате!

Блоги Modbus RTU

Modbus: настолько простой, что его могли понять даже ваши бабушки и дедушки

Что Modbus делает не очень хорошо

Четыре вещи, которые должен знать каждый новичок о Modbus (рассказ новичка в Modbus)

Будущее шлюзов Modbus

Десять самых важных вопросов (и ответов) о Modbus

Книги по Modbus RTU

Хотите получить главы 1–3 бесплатно? Скачать сейчас

Примеры использования Modbus RTU

Modbus в эпоху Интернета вещей: столкновение двух миров

Маршрутизатор Modbus обеспечивает удаленный мониторинг

Организации/Членство

Краткая история Modbus RTU

Протокол Modbus можно назвать дедушкой промышленных сетей. Это действительно так же старо, как мир, и есть усы, чтобы доказать это. В нынешнюю эпоху подключения к Интернету и веб-сервисов неподключенные сообщения Modbus и простая структура связи запрос-ответ выглядят почти причудливо. Почти такой же старый, как первый программируемый логический контроллер, Modicon 084, который в те дни назывался ПК для программируемого контроллера.

Modbus RTU — это открытый стандарт, что означает, что производители могут встраивать его в свое оборудование, не платя лицензионных отчислений. Это самый распространенный коммуникационный протокол в промышленной автоматизации, и в настоящее время он является наиболее доступным средством подключения промышленных электронных устройств.

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

Почему Modbus так популярен?

Проверка сообщений — еще одна причина популярности Modbus. Проверка CRC и LRC означает, что ошибки передачи проверяются с точностью до 99 %.

Связь Modbus

В протоколе Modbus RTU для связи между устройствами используется метод «ведущий/ведомый». Это означает, что любое приложение, использующее протокол Modbus RTU, будет иметь ведущее устройство Modbus и как минимум одно ведомое устройство Modbus. Ведущее устройство Modbus обычно представляет собой главный управляющий компьютер с установленным программным обеспечением, которое взаимодействует с одним или несколькими ведомыми устройствами Modbus.

Modbus обеспечивает связь Master/Slave между устройствами, подключенными через шины или сети. В модели OSI Modbus находится на уровне 7. Modbus предназначен для использования в качестве протокола запроса/ответа и предоставляет услуги, определяемые функциональными кодами. Функциональные коды Modbus являются элементами PDU запроса/ответа Modbus (Protocol Data Unit).

Чтобы определить несколько действий, к некоторым функциям будут добавлены коды подфункций. Например, Мастер может считывать состояния ВКЛ/ВЫКЛ группы дискретных выходов или входов. Он также может читать/записывать содержимое группы регистров MODBUS. Когда Ведущее устройство получает ответ Ведомого, поле функционального кода используется Ведомым для указания либо безошибочного ответа, либо ответа об исключении. Подчиненный эхом повторяет запрос начального функционального кода в случае нормального ответа.

Представление данных Modbus RTU

Как и все остальное в Modbus, представление данных простое. На самом деле данные в Modbus представляются проще, чем в любом другом промышленном протоколе, который вы когда-либо встречали. Бит наименьшей важности отправляется и принимается первым. Все устройства в сети должны аналогичным образом интерпретировать каждый передаваемый байт.

Не существует методов автоматического распознавания скорости передачи данных. Одинаковая скорость передачи данных должна использоваться подчиненными и ведущими устройствами, подключенными к шине. Modbus не определяет конкретную скорость передачи данных: типичные скорости передачи данных составляют 9600 или 19200.

В Modbus существует только два типа данных: катушки и регистры. Катушки - это просто отдельные биты. Биты могут быть включены (1) или выключены (0). Некоторые катушки представляют собой входы, то есть они содержат состояние некоторого физического дискретного входа. Или они представляют выходы, что означает, что они содержат состояние некоторого физического дискретного выходного сигнала. Регистры — это просто 16-битные беззнаковые регистровые данные. Регистры могут иметь значение от 0 до 65535 (от 0 до FFFF в шестнадцатеричном формате). Нет представления для отрицательных значений, нет представления для значений больше 65 535 и нет представления для реальных данных, таких как 200,125.

Регистры сгруппированы в регистры ввода и регистры хранения. Как и входные катушки, входные регистры сообщают о состоянии некоторого внешнего входа как значение от 0 до 65535. Первоначальное назначение входного регистра заключалось в том, чтобы отражать значение некоторого аналогового входа. Это цифровое представление аналогового сигнала, такого как напряжение или ток. Большинство современных устройств Modbus не являются устройствами ввода-вывода, и входные регистры просто функционируют так же, как регистры временного хранения.

Регистры хранения изначально разрабатывались как временное хранилище программ для таких устройств, как контроллеры Modbus. Сегодня регистры временного хранения служат хранилищем данных для устройств.

Пакеты Modbus RTU предназначены только для отправки данных; у них нет возможности отправлять такие параметры, как имя точки, разрешение, единицы измерения и т. д. Если возможность отправки таких параметров необходима, следует изучить BACnet, EtherNet/IP или другие современные протоколы.

Добро пожаловать. В этом видеоролике демонстрируется настройка и основные процедуры для связи с вашим контроллером FUSION с использованием полевой шины Modbus RTU через последовательный интерфейс RS-485.

Modbus RTU — это полевая шина, обеспечивающая цифровую связь между ПЛК и контроллером.

Есть некоторые преимущества использования Modbus RTU по сравнению с аналоговым интерфейсом:

  • Открывает доступ ко всем параметрам пользователя.
  • Устраняет аналоговую ошибку
  • Снижает затраты на установку

Прежде чем мы начнем, вам необходимо установить программное обеспечение панели управления, которое предоставляется бесплатно вместе с вашим контроллером. Подключите питание к контроллеру и подключите его к компьютеру с помощью USB-кабеля. Теперь вам нужно настроить интерфейс между вашим заводским контроллером или ПЛК и контроллером мощности. В этом руководстве мы будем использовать последовательный порт RS-485, подключенный к ноутбуку через Comm 3.

Давайте рассмотрим несколько основных процедур.Во-первых, мы настроим подчиненный адрес и параметры связи на нашем контроллере.

Откройте программное обеспечение панели управления. В левой части экрана вы должны увидеть «USB», выбранный в качестве интерфейса. Нажмите кнопку "Подключиться".

Затем выберите вкладку «Цифровая связь». Вы увидите «Общие настройки» — мы вернемся к этому позже — и ниже «Связь RS-485». Для этой демонстрации мы введем «1» для нашего адреса Modbus или подчиненного адреса и выберем стандартные настройки Modbus: 19200 для скорости передачи и E_8_1 для формата байта.

Хорошо, мы видим, что индикаторы передачи/приема мигают, значит, связь есть.

Далее мы обсудим чтение и запись параметров.

Мы рассмотрим два типа параметров: параметры настройки и параметры мониторинга.

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

Параметры с 200 по 389 — это параметры монитора. Они доступны только для чтения; они состоят из данных процесса, которые вы, возможно, захотите отслеживать, например напряжения нагрузки, тока нагрузки или мощности нагрузки.

Хорошо, давайте рассмотрим очень типичный сценарий: сначала предположим, что мы хотим записать цифровую уставку, затем прочитать параметр монитора, например, ток нагрузки A на фазе 3, и, наконец, обработать информацию, чтобы обновить уставку. . А затем мы повторим процесс.

Чтобы прочитать параметры монитора для тока нагрузки A, мы используем функцию Modbus 3, «Чтение регистров временного хранения». Введите 1 для идентификатора подчиненного устройства, 222 для параметра и 1 для байтов. Мы рекомендуем обратиться к документации вашего ПЛК за конкретными инструкциями по внедрению Modbus для вашего конкретного контроллера.

Вы также можете найти технические характеристики Modbus в Интернете на сайте www.modbus.org в разделе "Технические ресурсы".

Программа FUSION Control Panel также имеет удобную функцию для поиска параметров. Просто наведите курсор на значение или параметр, который вы ищете, и соответствующий номер параметра появится под курсором.

Мы кратко поговорим о перегрузке. Если вы одновременно читаете или записываете слишком много параметров, контроллер может быть перегружен. Чтобы избежать перегрузки, используйте блочное чтение для более эффективного сбора данных. Чтение блока может содержать до 16 параметров. Кроме того, не опрашивайте контроллер чаще, чем четыре чтения блоков в секунду.

Теперь давайте рассмотрим сбой цифровой связи. На вкладке «Цифровая связь» Панели управления видим «Общие настройки». Если связь прерывается из-за проблем с кабелем или отключения вашего ПЛК, здесь вы указываете, как будет реагировать ваш контроллер. Это известное состояние по умолчанию, которое вы определили.

Comm Heartbeat — это своего рода сторожевой пес для вашего контроллера. Заводская настройка по умолчанию — 0, что означает бесконечный тайм-аут. Когда он установлен на ноль, в случае сбоя связи контроллер продолжит работу, как это было основано на вашей последней команде. Но, возможно, вы захотите узнать или предпринять определенные действия, когда у вас возникнут проблемы со связью.

У вас есть два варианта, обозначенных этими двумя радиальными кнопками: продолжить и остановить. Для нашей демонстрации наш тайм-аут будет установлен на 5 секунд. Это означает, что контроллер ожидает чтения или записи из полевой шины, по крайней мере, каждые 5 секунд, и если связь была прервана, он выполняет одно из двух действий:

Если вы настроили контроллер на продолжение, он продолжит работу по вашей последней цифровой команде до тех пор, пока не будет восстановлена ​​сетевая связь. Мы можем продемонстрировать это, удалив кабель. Через 5 секунд контроллер выводит предупреждение и удерживает последнюю команду. Таким образом, чтобы восстановить связь, мы устраняем сбой и убеждаемся, что заводской контроллер или ПЛК обмениваются данными с контроллером. После этого предупреждающий сигнал исчезнет.

Если вы выберете "стоп" и связь будет прервана, контроллер перейдет в состояние запрета и перестанет работать. Это состояние неисправности, отображаемое на панели управления здесь. Вы можете выбрать этот вариант из соображений безопасности, все зависит от вашего конкретного приложения и предпочтений.

Режим останова требует, чтобы вы сделали две вещи, чтобы вернуть контроллер в рабочее состояние. Во-первых, восстановите цифровую связь — устраните проблему, в нашем случае восстановите кабель и убедитесь, что связь между заводским контроллером или ПЛК и контроллер. Затем выполните цикл запуска/сброса на P1, чтобы сбросить ошибку. Эти два шага должны происходить последовательно; сначала восстановить цифровую связь, а затем запустить/сбросить второй цикл.

Дополнительным вариантом может быть то, что контроллер уведомляет внешнее сигнальное устройство, такое как осветительная мачта или система сигнализации. Вы можете найти эту опцию на вкладке «Система» на панели управления; выберите здесь «Ошибка связи», чтобы активировать реле 1 или реле 2 в случае сбоя связи.

Краткое руководство по RS485 и MODBUS

Автор mvuilleu , Internet of Things and Measures, 21 августа 2016 г.

Обсуждая с нашими клиентами наилучшие способы взаимодействия с промышленными контроллерами, мы заметили, что в настоящее время небольшие секреты, позволяющие вам использовать интерфейс RS485, иногда неизвестны инженерам, внедряющим компьютерную или интернет-автоматизацию. Итак, вот краткий курс исправления.

Что такое RS485?

RS485 — это стандарт последовательной передачи данных, немного похожий на RS232, но использующий другие электрические сигналы. Важным преимуществом RS485 является то, что на одну шину можно подключить несколько устройств RS485. Поэтому вам не нужно множить интерфейсы RS485 на хосте, чтобы опрашивать несколько устройств. Однако для этого есть небольшая хитрость: на каждом конце шины необходимо поставить терминатор шины. Иногда это означает, что вы должны прикрутить небольшое сопротивление к клемме или просто переместить переключатель в соответствующее положение.


Шина RS485 часто состоит всего из двух проводов и резистора на концах.

RS485 и RS232 несовместимы напрямую: вы должны использовать правильный тип интерфейса, иначе сигналы не будут проходить. Шлюзы RS232-RS485 действительно существуют, но в настоящее время они не представляют интереса: так же легко использовать RS485-USB, Ethernet или напрямую GSM. Это дешевле и в системе на один компонент меньше.

Основная особенность при использовании RS485 заключается в формате обмениваемых данных. В то время как с RS232 многие устройства используют просто текстовые (ASCII) протоколы, с RS485 большинство устройств используют протокол MODBUS. Поэтому вы должны знать как минимум MODBUS для подключения устройства RS485.

Что такое MODBUS?

MODBUS — это протокол между хостом (ведущим) и устройствами (ведомыми) для доступа к конфигурации устройств и считывания показателей. Сообщения MODBUS соответствуют относительно простым операциям чтения и записи 16-битных слов и двоичных регистров (часто называемых «катушками»). Хост систематически инициирует обмен, а «ведомое» устройство отвечает. Подчиненное устройство не отправляет никаких сообщений до того, как его запросит хост.

Поскольку к шине RS485 может быть подключено несколько устройств параллельно, каждое ведомое устройство должно использовать уникальный идентификатор подчиненного устройства MODBUS на шине. Каждый запрос MODBUS начинается с идентификатора подчиненного устройства предполагаемого устройства, каждый ответ начинается с идентификатора подчиненного устройства, отправляющего его. Итак, для того, чтобы связь по MODBUS работала, необходимо проверить в конфигурации устройства его Slave ID и при необходимости изменить его. По пути проверьте также скорость связи и четность (тот же принцип, что и для RS232).

Вы не можете легко создавать сообщения MODBUS "вручную", как это было бы с протоколами ASCII, используемыми на RS232: каждое сообщение MODBUS заканчивается кодом контрольной суммы, вычисляемым из полного содержимого сообщения. Поэтому для обмена сообщениями MODBUS необходимо использовать:

  • либо специальная программа, предоставленная производителем устройства, с совместимым интерфейсом;
  • или простой интерфейс RS485 с библиотекой для программирования, которая кодирует и декодирует сообщения MODBUS;
  • или интеллектуальный интерфейс RS485, способный самостоятельно кодировать и декодировать сообщения MODBUS, например Yocto-RS485.

Также обратите внимание, что существует два варианта протокола MODBUS: режим MODBUS ASCII, в котором сообщения передаются в виде строк шестнадцатеричных кодов, и режим MODBUS RTU, в котором сообщения передаются непосредственно в виде двоичных кадров. Чтобы общаться с устройством MODBUS, вы обязательно должны использовать тот же режим, который настроен в устройстве. Все устройства, которые действительно соответствуют стандарту, поддерживают режим MODBUS RTU. В реальной жизни всегда используется последний режим: MODBUS ASCII не имеет никаких преимуществ, поскольку все сообщения в любом случае трудно закодировать вручную.


Небольшой регулятор температуры со встроенным ПИД, нечеткой логикой, . и интерфейс MODBUS на RS485

Доступ к регистрам MODBUS

Когда вы теоретически понимаете, как обмениваться информацией, вы все равно должны знать, какой регистр запрашивать для получения мер и какие регистры нужно изменить для настройки устройства. На этом уровне адреса регистров меняются от одного устройства к другому, но существуют соглашения MODBUS, которые полезно знать для понимания технических руководств пользователя, которые часто не так ясны, как можно было бы надеяться.

Существует 4 типа регистров MODBUS:

  • катушки, соответствующие бинарным выходам включения/выключения, например, реле.
  • Входные биты, соответствующие двоичным вводам (только для чтения).
  • Входные регистры, соответствующие аналоговым входам (только для чтения).
  • Регистры хранения, соответствующие аналоговым параметрам, которые можно изменить.

Техническое руководство пользователя устройства MODBUS обычно содержит список всех доступных регистров, перечисленных по типам. Каждому типу регистра соответствует диапазон номеров регистров, следующих этому соглашению:

  • катушки нумеруются с 00001 и далее
  • Входные биты нумеруются от 10001 и далее
  • Регистры ввода нумеруются с 30001 и далее
  • Регистры хранения нумеруются с 40001 и далее

Обратите внимание, что при использовании этого соглашения первый регистр каждой категории всегда заканчивается цифрой 1 (ноль не используется).

Иногда вместо указания уникального номера регистра производитель указывает тип регистра с идентификатором функции MODBUS, позволяющей их считывать:

  • 01h для катушек
  • 02h для входных битов
  • 04h для регистров ввода
  • 03h для регистров хранения

В этом случае часто указывается относительная позиция регистра в его группе с позицией 0 для первого элемента. Таким образом, регистр 0 функции 04h соответствует первому входному регистру, который вы также можете назвать регистром 30001. Будьте осторожны, чтобы вас не смутила несогласованность между диапазонами регистров, которые не соответствуют функции MODBUS. идентификаторы и непоследовательность относительных позиций, начинающихся с 0, в то время как абсолютные позиции начинаются с 1.

Когда вы знаете, к какому регистру обращаться, вы все равно должны знать, как его интерпретировать. Поскольку аналоговые регистры кодируются 16 битами, обычно используются два соглашения. Первый заключается в использовании диапазона значений, определенного в конфигурации устройства, и выполнении линейного сопоставления значения регистра 0-65535 с этим диапазоном значений. Второй заключается в непосредственном сохранении значения в десятичной фиксированной точке, в технических единицах: например, 2345 представляет 23,45 градуса Цельсия. Некоторые поставщики предоставляют значения одновременно в двух форматах: например, регистр 30001 для версии, пропорциональной заданному диапазону, и регистр 31001 для десятичной версии.

Конкретный пример

Давайте посмотрим, как получить доступ к измерению температуры и заданному значению контроллера температуры Schneider Electric Zelio REG48. Вот выдержка из технического руководства пользователя:


Выдержка из таблицы регистров контроллера Zelio REG48

Если вы обратили внимание, то поняли, что эта таблица описывает регистры ввода. Базовый регистр использует пропорциональный формат, а регистр со смещением +1000 имеет десятичную форму (техническая единица). Если вы используете Yocto-RS485, вы можете получить к нему доступ с помощью функции modbusReadRegisters(). Осторожно, как указано в документации, эта функция использует относительное положение регистра (индексируется с нуля):

// Получаем наш интерфейс RS485
var serial = YSerialPort . FindSerialPort ("RS485-REG48");
// Читаем первые два регистра в "инженерной единице"
var slaveID = 1 ;
var firstRegs = серийный номер. modbusReadInputRegisters(slaveID, 1000, 2);
// Декодирование десятичного числа с фиксированной запятой
var processVal = firstRegs [ 0 ] / 10 ;
var setpointVal = firstRegs [ 1 ] / 10 ;

Другая возможность использования с Yocto-RS485: вы можете настроить его с помощью веб-интерфейса, чтобы он автоматически считывал эти регистры, без необходимости взаимодействия с компьютером для запуска мер.


Задание на периодическое чтение регистра

Благодаря этому Yocto-RS485 может служить регистратором данных для хранения измерений, полученных RS485, во флэш-памяти (до 500 000 измерений).

Вы можете пойти еще дальше: если вы подключите Yocto-RS485 к YoctoHub-Ethernet и загрузите на него небольшую веб-страницу с некоторым JavaScript, вы можете превратить этот простой контроллер температуры RS485, основанный на технологии 70-х годов, в подключенный продукт в стиле Интернета вещей. После этого любой браузер, работающий на планшете, может подключиться к интерфейсу и взаимодействовать с терморегулятором:

Главное устройство Modbus обычно представляет собой главный управляющий компьютер с программным обеспечением, которое взаимодействует с одним или несколькими ведомыми устройствами Modbus. Modbus позволяет использовать Master/.

DTM Modbus SL Comm позволяет установить связь Modbus через стандартный последовательный порт ПК. Подключение преобразователя USB/RS232 USB/RS485.

В режиме RTU сообщения начинаются с интервала молчания не менее 3,5 символов. Первое передаваемое поле — это адрес устройства. Допустимое.

Главный компьютер обычно имеет полный контроль над связью и может выполнять запросы на чтение или запись. Подчиненное устройство может отвечать только на те запросы, на которые оно не может активно.

Механизм, по которому передаются данные; например RS 232 RS485 или. Ethernet-соединение между хостом и мастер-станциями. Шлюз. ПЛК хост-устройства.

Общие обсуждения OpenPLC, работающего на ПК с Linux или Windows, сделали ведомые устройства modbus rtu с платой arduino, когда я подключаю 1, он работает, но.

получил от последовательного порта к MODBUS RTU Over TCP TCP и MODBUS ASCII Over TCP запросы и перенаправил их на удаленные устройства, подключенные к сети.

Как физически подключить измеритель напряжения ND20 с выходом RS485 к компьютеру с Modbus RTU? Стоит ли использовать преобразователь в RS232 и.

Подключите ведомые устройства Modbus RTU к контроллеру системной логики BACnet MS/TP Modicon 084, который в те дни назывался ПК для программируемого контроллера.

устройство. Т. Программное обеспечение. У. Другое. Преобразователь связи. SCM38I. Соединение SCMUS48I. РС485. Стандарт. ОВОС RS485. Протокол. Модбус РТУ. ком. метод.

Если вы вообще не получаете ответа от подчиненного устройства, вам следует сосредоточиться на соединении RS485 и/или настройках связи. Проверьте скорость передачи данных.

Первое физическое подключение. Устройства Modbus обмениваются данными через последовательные соединения для соединений Ethernet. Если ваше устройство Modbus имеет Ethernet.

У нас есть бесплатный инструмент для Windows, который может считывать регистры временного хранения с устройств Modbus/TCP или Modbus RTU и записывать значения в CSV-файл.

Поскольку к шине RS485 может быть подключено несколько устройств параллельно, каждое ведомое устройство должно использовать уникальный идентификатор подчиненного устройства MODBUS на шине. Каждый.

Привет, я пытаюсь создать на своем компьютере провайдера ModBus. Это работает следующим образом: Мой компьютер обменивается данными с другим устройством, у которого есть.

Таким образом, программное обеспечение вашего ПК будет последовательно обмениваться данными с каждым устройством Modbus. Вы должны убедиться, что оба устройства Modbus и ваш компьютер.

Мне нужно подключить и использовать два MODBUS RTU с ПК через сплошной контрольный кабель fo/cat5. у меня также есть программное обеспечение для сопряжения RTU с ПК, но его нет.

Устройства Modbus взаимодействуют через последовательные соединения Ethernet, используемые для имитации регистров ведомого устройства, через ModBus TCP или RS485.

Здравствуйте! Мне нужен совет/рекомендация по проекту метеостанции, над которым я сейчас работаю. У меня есть метеостанция от Rainwise.

Благодаря их встроенным коммуникационным интерфейсам, таким как Modbus RTU, вы не только облегчаете процесс чтения, но и служите для записи.

Главное устройство Modbus обычно представляет собой главный управляющий компьютер с программным обеспечением, которое взаимодействует с одним или несколькими ведомыми устройствами Modbus.

Обсуждение Mango Automation с того же ПК, вместо этого я не могу подключиться к нему с помощью Modbus RTU, поддерживаемого инвертором.

Преобразование и передача сигналов между устройствами USB и RS485 на расстояние до 1,2 км. Устройство с питанием от USB и интерфейсом связи USB Modbus RTU.

modbus TCP.PNG Может ли кто-нибудь объяснить мне суть создания устройства, отвечающего на запрос? С уважением.

Главная Форум Обсуждения общих проблем Modbus RTU / TCP расскажите мне о хост-компьютере. Я думаю, что они тоже действуют как ведомые устройства Modbus, как и вы.

Мой вопрос в том, как я могу заставить его общаться с ПК, если я не знаю ни его адреса, ни его регистров. Устройство Ziegler mfm 3440.

Другие части, обсуждаемые в теме: TMDSCNCD28069MISO TMDSHVMTRINSPIN MAX232 Здравствуйте, у меня есть преобразователь USBtoRS485, подключенный к моему ПК.

да, вам нужно преобразовать RS485 в RS232. компьютеры / программные инструменты ЧМИ RTU и датчики, совместимые с Modbus. CR800.

Modbus RS485 соединяет ведущее устройство с одним или несколькими ведомыми устройствами. Сопротивление окончанию; Подключение к персональному компьютеру.

Modbus RS485 соединяет ведущее устройство с одним или несколькими ведомыми устройствами. Сопротивление окончанию; Подключение к персональному компьютеру.

Здравствуйте! Мне нужно подключить ПК к сети Modbus TCP и получить данные из ведомого устройства Modbus в базу данных или систему Scada.

Из этой статьи вы узнаете о протоколе Modbus RTU, который широко используется в системе управления технологическими процессами.

Описание протокола Modbus RTU

Modbus — протокол связи основан на архитектуре ведущий-ведомый. Для передачи данных используются интерфейсы RS-485, RS-422, RS-232, а также сети Ethernet TCP/IP (протокол Modbus TCP).

Сообщение Modbus RTU состоит из адреса устройства SlaveID, кода функции, специальных данных в зависимости от кода функции и CRC контрольной суммы.

SlaveIDКод функцииСпециальные данныеCRC

Если вы отбросите адрес SlaveID и контрольную сумму CRC, вы получите PDU, блок данных протокола.

SlaveID — адрес устройства, может принимать значение от 0 до 247, адреса от 248 до 255 зарезервированы.

Данные в модуле хранятся в 4 таблицах.

Две таблицы доступны только для чтения, а две — для чтения и записи.

В каждой таблице размещено 9999 значений.

< /tr>чтение-запись < td>DO
НОМЕР РЕГИСТРАРЕГИСТРАЦИОННЫЙ АДРЕС HEXТИПИМЯТИП
1-9999от 0000 до 270Eчтение-записьДискретные выходные катушки
10001-19999от 0000 до 270EчтениеКонтакты дискретного вводаDI
30001-39999от 0000 до 270EчтениеАналоговый вход РегистрыAI
40001-49999от 0000 до 270Eчтение-запись Регистры хранения аналогового выходаAO

Сообщение Modbus использует адрес регистра.

Например, первый регистр AO Holding Register имеет номер 40001, но его адрес 0000.

Разница между этими двумя величинами — «смещение».

Каждая таблица имеет свое смещение соответственно: 1, 10001, 30001 и 40001.

В ответ на Modbus RTU Slave устройство получаем:

11 03 06 AE41 5652 4340 49AD

Регистр аналогового вывода AO0 имеет значение AE 41 HEX или 44609 в десятичной системе.

Регистр аналогового вывода AO1 имеет значение 56 52 HEX или 22098 в десятичной системе.

Регистр аналогового вывода AO2 имеет значение 43 40 HEX или 17216 в десятичной системе.

Значение AE 41 HEX составляет 16 бит 1010 1110 0100 0001, может принимать другое значение в зависимости от типа представления.

Значение регистра 40108 в сочетании с регистром 40109 дает 32-битное значение.

Пример представления.

< td>0 и 1
Тип представленияДиапазон значенийПример в HEXВ десятичной форме
16-разрядное целое число без знакаот 0 до 65535AE4144 609
16 -битное целое число со знаком-32768 до 32767AE41-20,927
двухсимвольная строка ASCII 2 символаAE41® A
дискретное значение включения/выключения00010001
32-разрядное целое число без знакаот 0 до 4 294 967 295 AE41 56522 923 517 522
32-разрядное целое число со знаком-2 147 483 648 до 2 147 483 647AE41 5652-1,371,449,774
32-битное число с плавающей запятой одинарной точности IEEE1,2·10 от −38 до 3,4×10+38AE41 5652-4,395978 E-11
четырехсимвольная строка ASCII< /td>4 символаAE41 5652® AVR

Что такое команды Modbus RTU?

Вот таблица с кодами для чтения и записи регистров Modbus RTU.

< /tr>
КОД ФУНКЦИИЧТО ДЕЛАЕТ ФУНКЦИЯТИП ЗНАЧЕНИЯТИП ДОСТУПА
01 (0x01)Чтение DOЧтение состояния катушкиДискретноеЧтение
02 (0x02)Чтение DIЧтение состояния входаДискретный Чтение
03 (0x03)Чтение AOЧтение регистров хранения16 битЧтение
04 (0x04)Чтение AIЧтение входных регистров16 битЧтение
05 (0x05)Запись одного DOForce Single CoilДискретныйЗапись
06 (0x06)Запись одного АОПредустановленный одиночный Регистр16 битЗапись
15 (0x0F)Многократная запись DO Force Multiple CoilsДискретнаяЗапись
16 (0x10)Множественная запись AO Предустановка нескольких регистров16 битЗапись

Как отправить команду Modbus RTU для чтения дискретного вывода? Команда 0x01

Эта команда используется для считывания значений цифровых выходов DO.

Запрос PDU указывает начальный адрес первого регистра DO и последующее количество требуемых значений DO. В PDU значения DO адресуются, начиная с нуля.

Значения DO в ответе находятся в одном байте и соответствуют значению битов.

Значения битов определяются как 1 = ВКЛ и 0 = ВЫКЛ.

Младший бит первого байта данных содержит значение DO, адрес которого был указан в запросе. Остальные значения DO следуют за возрастающим значением до самого высокого значения байта. Те. справа налево.

Если было запрошено менее восьми значений DO, оставшиеся биты в ответе будут заполнены нулями (в направлении от младшего к старшему байту). Количество байтов Количество байтов также указывает количество полных байтов данных в ответе.

Пример запроса DO от 20 до 56 для адреса SlaveID устройства 17. Адрес первого регистра будет 0013 hex = 19, т.к. учетная запись ведется с 0 адреса (0014 hex = 20, -1 нулевое смещение = получаем 0013 hex = 19).

БАЙТЗАПРОСБАЙТОТВЕТ
(Hex )Имя поля(Hex)Имя поля
11Адрес устройства11Адрес устройства
01Функциональный код01Функциональный код
00Адрес первого регистра Старшие байты05Количество байтов больше
13Адрес первого регистра Lo байтCD Значение регистра DO 27-20 (1100 1101)
00Количество регистров Старшие байты6BЗначение регистра DO 35-28 (0110 1011)
25Количество регистров Lo байтB2 Значение регистра DO 43-36 (1011 0010)
0EКонтрольная сумма CRC0E< /td>Значение регистра DO 51-44 (0000 1110)
84Контрольная сумма CRC1BЗначение регистра DO 56-52 (0001 1011)
45Контрольная сумма CRC
E6Контрольная сумма CRC

Состояния выхода DO 27-20 показаны как значения байта CD hex или в двоичной системе 1100 1101.

В регистре DO 56-52 было запрошено 5 бит справа, а остальные биты заполнены нулями до полного байта (0001 1011).

Каналы---DO 56 DO 55DO 54DO 53DO 52
Биты0001101 1
Hex1B

Как отправить команду Modbus RTU для считывания цифрового входа? Команда 0x02

Эта команда используется для чтения значений цифровых входов DI.

Как отправить команду Modbus RTU для считывания аналогового вывода? Команда 0x03

Эта команда используется для чтения значений аналоговых выходов AO.

Как я могу отправить команду Modbus RTU для чтения аналогового входа? Команда 0x04

Эта команда используется для чтения значений аналоговых входов AI.

Как отправить команду Modbus RTU для записи дискретного вывода? Команда 0x05

Эта команда используется для записи одного значения цифрового выхода DO.

Значение FF 00 hex устанавливает выход в положение ON.

Значение 00 00 hex отключает выход.

Все остальные значения недействительны и не будут затронуты выходным значением.

Обычным ответом на такой запрос является эхо (повторный запрос в ответе), возвращаемое после изменения состояния DO.

Состояние выхода DO173 изменилось с ВЫКЛ на ВКЛ.

Как отправить команду Modbus RTU для записи аналогового вывода? Команда 0x06

Эта команда используется для записи одного значения аналогового выхода AO.

Как отправить команду Modbus RTU для записи нескольких дискретных контактов? Команда 0x0F

Эта команда используется для записи нескольких значений цифрового выхода DO.

Ответ возвращает количество записанных регистров.

Как отправить команду Modbus RTU для записи нескольких аналоговых выходов? Команда 0x10

Эта команда используется для записи нескольких значений аналогового выхода AO.

Каковы ошибки запроса Modbus?

Если устройство получает запрос, но не может его обработать, устройство ответит кодом ошибки.

Ответ будет содержать измененный код функции, старший бит будет равен 1.

Пример:

< /tr>
ЭТО БЫЛОЭТО СТАЛО
ФУНКЦИОНАЛЬНЫЙ КОД В ЗАПРОСЕ Функциональный код ошибки в ответе
01 (01 hex) 0000 0001129 (81 hex) 1000 0001
02 (02 шестнадцатеричный) 0000 0010130 (82 шестнадцатеричный) 1000 0010
03 (03 шестнадцатеричный) 0000 0011 131 (83 шестн.) 1000 0011
04 (04 шестн.) 0000 0100132 (84 шестн.) 1000 0100
05 (05 hex) 0000 0101133 (85 hex) 1000 0101
06 (06 hex) 0000 0110134 (86 шестнадцатеричный) 1000 0110
15 (0F шестнадцатеричный) 0000 1111143 (8F шестнадцатеричный) 1000 1111
16 (10 шестнадцатеричных) 0001 0000144 (90 шестнадцатеричных) 1001 0000

Пример запроса и ответа с ошибкой:

< td>Функциональный код
BYTEREQUESTBYTEANSWER
(Hex)Имя поля(Hex)Имя поля
0AАдрес устройства0AАдрес устройства
0181Функциональный код с измененным битом
04Адрес первого регистр Старшие байты02Код ошибки
A1Адрес первого регистра Младшие байты< /td>B0Контрольная сумма CRC
00Количество регистров Старшие байты 53Контрольная сумма CRC
01Количество регистров Младшие байты
ACКонтрольная сумма CRC
63Контрольная сумма CRC

Объяснение кодов ошибок

< td> Ведомое устройство обнаружило ошибку четности при чтении расширенной памяти. Мастер может повторить запрос, но обычно в таких случаях требуется ремонт.
01КОД ФУНКЦИИ ПРИНЯТ, НЕ МОЖЕТ БЫТЬ ОБРАБОТАН.
02Адрес данных, указанный в запросе, недоступен.
03Значение, содержащееся в поле данных запроса, является недопустимым.
04Произошла неисправимая ошибка, когда подчиненное устройство пыталось выполнить запрошенное действие.
05Слейв принял запрос и обрабатывает его, но это занимает много времени. Этот ответ предотвращает генерирование хостом ошибки тайм-аута.
06Подчиненное устройство занято обработкой команды. Ведущий должен повторить сообщение позже, когда ведомый будет освобожден.
07Подчиненный не может выполнить функцию программы, указанную в запросе. Этот код возвращается при неудачном программном запросе с использованием функций с номерами 13 или 14. Ведущий должен запросить диагностическую информацию или информацию об ошибке у ведомого.
08

Программы для работы с протоколом Modbus RTU

Ниже приведены программы, облегчающие работу с Modbus.

DCON Utility Pro с поддержкой Modbus RTU, ASCII, DCON. Скачать

Modbus Master Tool с поддержкой Modbus RTU, ASCII, TCP. Скачать

Читайте также: