Как подключить 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 значений.
НОМЕР РЕГИСТРА | РЕГИСТРАЦИОННЫЙ АДРЕС HEX | ТИП | ИМЯ | ТИП | < /tr>чтение-запись
---|---|---|---|---|
1-9999 | от 0000 до 270E | чтение-запись | Дискретные выходные катушки | < td>DO|
10001-19999 | от 0000 до 270E | чтение | Контакты дискретного ввода td> | 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-битное значение.
Пример представления.
Тип представления | Диапазон значений | Пример в HEX | В десятичной форме |
---|---|---|---|
16-разрядное целое число без знака | от 0 до 65535 | AE41 | 44 609 |
16 -битное целое число со знаком | -32768 до 32767 | AE41 | -20,927 |
двухсимвольная строка ASCII | 2 символа | AE41 | ® A |
дискретное значение включения/выключения | < td>0 и 10001 | 0001 | |
32-разрядное целое число без знака | от 0 до 4 294 967 295 | AE41 5652 | 2 923 517 522 |
32-разрядное целое число со знаком | -2 147 483 648 до 2 147 483 647 | AE41 5652 | -1,371,449,774 |
32-битное число с плавающей запятой одинарной точности IEEE | 1,2·10 от −38 до 3,4×10+38 | AE41 5652 | -4,395978 E-11 |
четырехсимвольная строка ASCII< /td> | 4 символа | AE41 5652 | ® AVR |
Что такое команды Modbus RTU?
Вот таблица с кодами для чтения и записи регистров Modbus RTU.
КОД ФУНКЦИИ | ЧТО ДЕЛАЕТ ФУНКЦИЯ | ТИП ЗНАЧЕНИЯ | ТИП ДОСТУПА | < /tr>|
---|---|---|---|---|
01 (0x01) | Чтение DO | Чтение состояния катушки | Дискретное | Чтение td> |
02 (0x02) | Чтение DI | Чтение состояния входа | Дискретный | Чтение |
03 (0x03) | Чтение AO | Чтение регистров хранения | 16 бит | Чтение |
04 (0x04) | Чтение AI | Чтение входных регистров | 16 бит | Чтение |
05 (0x05) | Запись одного DO | Force 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 td> | Количество байтов больше |
13 | Адрес первого регистра Lo байт | CD | Значение регистра DO 27-20 (1100 1101) |
00 | Количество регистров Старшие байты | 6B td> | Значение регистра DO 35-28 (0110 1011) |
25 | Количество регистров Lo байт | B2 | Значение регистра DO 43-36 (1011 0010) |
0E | Контрольная сумма CRC | 0E< /td> | Значение регистра DO 51-44 (0000 1110) |
84 | Контрольная сумма CRC | 1B td> | Значение регистра 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 55 | DO 54 | DO 53 | DO 52 |
---|---|---|---|---|---|---|---|---|
Биты | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 1 |
Hex | 1B |
Как отправить команду 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.
Пример:
ЭТО БЫЛО | ЭТО СТАЛО |
---|---|
ФУНКЦИОНАЛЬНЫЙ КОД В ЗАПРОСЕ | Функциональный код ошибки в ответе |
01 (01 hex) 0000 0001 | 129 (81 hex) 1000 0001 |
02 (02 шестнадцатеричный) 0000 0010 | 130 (82 шестнадцатеричный) 1000 0010 |
03 (03 шестнадцатеричный) 0000 0011 | 131 (83 шестн.) 1000 0011 |
04 (04 шестн.) 0000 0100 | 132 (84 шестн.) 1000 0100 | < /tr>
05 (05 hex) 0000 0101 | 133 (85 hex) 1000 0101 |
06 (06 hex) 0000 0110 | 134 (86 шестнадцатеричный) 1000 0110 |
15 (0F шестнадцатеричный) 0000 1111 | 143 (8F шестнадцатеричный) 1000 1111 |
16 (10 шестнадцатеричных) 0001 0000 | 144 (90 шестнадцатеричных) 1001 0000 |
Пример запроса и ответа с ошибкой:
BYTE | REQUEST | BYTE | ANSWER | tr>
---|---|---|---|
(Hex) | Имя поля | (Hex) | Имя поля |
0A | Адрес устройства | 0A | Адрес устройства |
01 | < td>Функциональный код81 | Функциональный код с измененным битом | |
04 | Адрес первого регистр Старшие байты | 02 | Код ошибки |
A1 | Адрес первого регистра Младшие байты< /td> | B0 | Контрольная сумма CRC |
00 | Количество регистров Старшие байты | 53 | Контрольная сумма CRC |
01 | Количество регистров Младшие байты | ||
AC | Контрольная сумма CRC | ||
63 | Контрольная сумма CRC |
Объяснение кодов ошибок
01 | КОД ФУНКЦИИ ПРИНЯТ, НЕ МОЖЕТ БЫТЬ ОБРАБОТАН. |
02 | Адрес данных, указанный в запросе, недоступен. |
03 | Значение, содержащееся в поле данных запроса, является недопустимым. |
04 | Произошла неисправимая ошибка, когда подчиненное устройство пыталось выполнить запрошенное действие. |
05 | Слейв принял запрос и обрабатывает его, но это занимает много времени. Этот ответ предотвращает генерирование хостом ошибки тайм-аута. |
06 | Подчиненное устройство занято обработкой команды. Ведущий должен повторить сообщение позже, когда ведомый будет освобожден. |
07 | Подчиненный не может выполнить функцию программы, указанную в запросе. Этот код возвращается при неудачном программном запросе с использованием функций с номерами 13 или 14. Ведущий должен запросить диагностическую информацию или информацию об ошибке у ведомого. |
08 | < td> Ведомое устройство обнаружило ошибку четности при чтении расширенной памяти. Мастер может повторить запрос, но обычно в таких случаях требуется ремонт.
Программы для работы с протоколом Modbus RTU
Ниже приведены программы, облегчающие работу с Modbus.
DCON Utility Pro с поддержкой Modbus RTU, ASCII, DCON. Скачать
Modbus Master Tool с поддержкой Modbus RTU, ASCII, TCP. Скачать
Читайте также: