8-900-374-94-44
[email protected]
Slide Image
Меню

Связь modbus: Просто о протоколе Modbus RTU

Содержание

Просто о протоколе Modbus RTU

Из данной статьи вы узнаете о протоколе Modbus RTU, который широко применяется в АСУ ТП. Англоязычная версия статьи доступна на сайте ipc2u.com. Описание протокола Modbus TCP можно найти в статье.

Оглавление:

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

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

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

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

Если отбросить SlaveID адрес и CRC контрольную сумму, то получится PDU, Protocol Data Unit.

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

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

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

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

Номер регистраАдрес регистра HEXТипНазваниеТип
1-99990000 до 270EЧтение-записьDiscrete Output CoilsDO
10001-199990000 до 270EЧтениеDiscrete Input ContactsDI
30001-399990000 до 270EЧтениеAnalog Input RegistersAI
40001-499990000 до 270EЧтение-записьAnalog Output Holding RegistersAO

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

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

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

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

Ниже приведен пример запроса Modbus RTU для получения значения AO аналогового выхода (holding registers) из регистров от #40108 до 40110 с адресом устройства 17.

11 03 006B 0003 7687

11Адрес устройства SlaveID (17 = 11 hex)
03Функциональный код Function Code (читаем Analog Output Holding Registers)
006BАдрес первого регистра (40108-40001 = 107 =6B hex)
0003Количество требуемых регистров (чтение 3-х регистров с 40108 по 40110)
7687Контрольная сумма CRC

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

11 03 06 AE41 5652 4340 49AD

Где:

11Адрес устройства (17 = 11 hex)SlaveID
03Функциональный кодFunction Code
06Количество байт далее (6 байтов идут следом)Byte Count
AEЗначение старшего разряда регистра (AE hex)Register value Hi (AO0)
41Значение младшего разряда регистра (41 hex)Register value Lo (AO0)
56Значение старшего разряда регистра (56 hex)Register value Hi (AO1)
52Значение младшего разряда регистра (52 hex)Register value Lo (AO1)
43Значение старшего разряда регистра (43 hex)Register value Hi (AO2)
40Значение младшего разряда регистра (40 hex)Register value Lo (AO2)
49Контрольная суммаCRC value Lo
AD
Контрольная сумма
CRC value Hi

Регистр аналогового выхода 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-bit unsigned integer0 до 65535AE4144,609
16-bit signed integer-32768 до 32767AE41-20,927
two character ASCII string2 знакаAE41
® A
discrete on/off value0 и 100010001
32-bit unsigned integer0 до 4,294,967,295AE41 56522,923,517,522
32-bit signed integer-2,147,483,648 до 2,147,483,647AE41 5652-1,371,449,774
32-bit single precision IEEE floating point number1,2·10−38 до 3,4×10+38AE41 5652-4.395978 E-11
four character ASCII string4 знакаAE41 5652® A V R

Наверх к оглавлению

Какие бывают команды Modbus RTU?

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

Код функцииЧто делает функцияТип значенияТип доступа
01 (0x01)Чтение DORead Coil StatusДискретноеЧтение
02 (0x02)Чтение DIRead Input StatusДискретное
Чтение
03 (0x03)Чтение AORead Holding Registers16 битноеЧтение
04 (0x04)Чтение AIRead Input Registers16 битноеЧтение
05 (0x05)Запись одного DOForce Single CoilДискретноеЗапись
06 (0x06)Запись одного AOPreset Single Register16 битноеЗапись
15 (0x0F)Запись нескольких DOForce Multiple CoilsДискретноеЗапись
16 (0x10)Запись нескольких AOPreset Multiple Registers16 битноеЗапись

Наверх к оглавлению

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

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

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

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

Значения битов определяются как 1 = ON и 0 = OFF.

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

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

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

БайтЗапросБайтОтвет
(Hex)Название поля(Hex)Название поля
11Адрес устройства 11Адрес устройства
01Функциональный код01Функциональный код
00Адрес первого регистра Hi байт05Количество байт далее
13Адрес первого регистра Lo байтCDЗначение регистра DO 27-20 (1100 1101)
00Количество регистров Hi байт6BЗначение регистра DO 35-28 (0110 1011)
25Количество регистров Lo байтB2Значение регистра DO 43-36 (1011 0010)
0EКонтрольная сумма CRC0EЗначение регистра 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 56DO 55DO 54DO 53DO 52
Биты00011011
Hex1B

Модули с дискретным выводом: M-7065, ioLogik R1214, ADAM-4056S

Наверх к оглавлению

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

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

Пример запроса DI с регистров от #10197 до 10218 для SlaveID адреса устройства 17. Адрес первого регистра будет 00C4 hex = 196, т.к. счет ведется с 0 адреса.

БайтЗапросБайтОтвет
(Hex)Название поля(Hex)Название поля
11Адрес устройства11Адрес устройства
02Функциональный код02Функциональный код
00Адрес первого регистра Hi байт03Количество байт далее
C4Адрес первого регистра Lo байтACЗначение регистра DI 10204-10197 (1010 1100)
00Количество регистров Hi байтDBЗначение регистра DI 10212-10205 (1101 1011)
16Количество регистров Lo байт35Значение регистра DI 10218-10213 (0011 0101)
BAКонтрольная сумма CRC20Контрольная сумма CRC
A9Контрольная сумма CRC18Контрольная сумма CRC

Модули с дискретным вводом: M-7053, ioLogik R1210, ADAM-4051

Наверх к оглавлению

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

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

Пример запроса AO с регистров от #40108 до 40110 для SlaveID адреса устройства 17. Адрес первого регистра будет 006B hex = 107, т.к. счет ведется с 0 адреса.

БайтЗапросБайтОтвет
(Hex)Название поля(Hex)Название поля
11Адрес устройства11Адрес устройства
03Функциональный код03Функциональный код
00Адрес первого регистра Hi байт06Количество байт далее
6BАдрес первого регистра Lo байтAEЗначение регистра Hi #40108
00Количество регистров Hi байт41Значение регистра Lo #40108
03Количество регистров Lo байт56Значение регистра Hi #40109
76Контрольная сумма CRC52Значение регистра Lo #40109
87Контрольная сумма CRC43Значение регистра Hi #40110
40Значение регистра Lo #40110
49Контрольная сумма CRC
ADКонтрольная сумма CRC

Модули с аналоговым выводом: M-7024, ioLogik R1241, ADAM-4024

Наверх к оглавлению

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

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

Пример запроса AI с регистра #30009 для SlaveID адреса устройства 17. Адрес первого регистра будет 0008 hex = 8, т.к. счет ведется с 0 адреса.

БайтЗапросБайтОтвет
(Hex)Название поля(Hex)Название поля
11Адрес устройства11Адрес устройства
04Функциональный код04Функциональный код
00Адрес первого регистра Hi байт02Количество байт далее
08Адрес первого регистра Lo байт00Значение регистра Hi #30009
00Количество регистров Hi байт0AЗначение регистра Lo #30009
01Количество регистров Lo байтF8Контрольная сумма CRC
B2Контрольная сумма CRCF4Контрольная сумма CRC
98Контрольная сумма CRC

Модули с аналоговым вводом: M-7017, ioLogik R1240, ADAM-4017+

Наверх к оглавлению

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

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

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

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

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

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

Пример записи в DO с регистром #173 для SlaveID адреса устройства 17. Адрес регистра будет 00AC hex = 172, т.к. счет ведется с 0 адреса.

БайтЗапросБайтОтвет
(Hex)Название поля(Hex)Название поля
11Адрес устройства11Адрес устройства
05Функциональный код05Функциональный код
00Адрес первого регистра Hi байт00Адрес первого регистра Hi байт
ACАдрес первого регистра Lo байтACАдрес первого регистра Lo байт
FFЗначение Hi байтFFЗначение Hi байт
00Значение Lo байт00Значение Lo байт
4EКонтрольная сумма CRC4EКонтрольная сумма CRC
8BКонтрольная сумма CRC8BКонтрольная сумма CRC

Состояние выхода DO173 поменялось с выключен OFF на включен ON.

Модули с дискретным выводом: M-7053, ioLogik R1210, ADAM-4051

Наверх к оглавлению

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

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

Пример записи в AO с регистром #40002 для SlaveID адреса устройства 17. Адрес первого регистра будет 0001 hex = 1, т.к. счет ведется с 0 адреса.

БайтЗапросБайтОтвет
(Hex)Название поля(Hex)Название поля
11Адрес устройства11Адрес устройства
06Функциональный код06Функциональный код
00Адрес первого регистра Hi байт00Адрес первого регистра Hi байт
01Адрес первого регистра Lo байт01Адрес первого регистра Lo байт
00Значение Hi байт00Значение Hi байт
03Значение Lo байт03Значение Lo байт
9AКонтрольная сумма CRC9AКонтрольная сумма CRC
9BКонтрольная сумма CRC9BКонтрольная сумма CRC

Модули с аналоговым выводом: M-7024, ioLogik R1241, ADAM-4024

Наверх к оглавлению

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

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

Пример записи в несколько DO с регистрами от #20 до #29 для SlaveID адреса устройства 17. Адрес регистра будет 0013 hex = 19, т.к. счет ведется с 0 адреса.

БайтЗапросБайтОтвет
(Hex)Название поля(Hex)Название поля
11Адрес устройства11Адрес устройства
0FФункциональный код0FФункциональный код
00Адрес первого регистра Hi байт00Адрес первого регистра Hi байт
13Адрес первого регистра Lo байт13Адрес первого регистра Lo байт
00Количество регистров Hi байт00Кол-во записанных рег. Hi байт
0AКоличество регистров Lo байт0AКол-во записанных рег. Lo байт
02Количество байт далее26Контрольная сумма CRC
CDЗначение байт DO 27-20 (1100 1101)99Контрольная сумма CRC
01Значение байт DO 29-28 (0000 0001)
BFКонтрольная сумма CRC
0BКонтрольная сумма CRC

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

Модули с дискретным выводом: M-7053, ioLogik R1210, ADAM-4051

Наверх к оглавлению

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

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

Пример записи в несколько AO с регистрами #40002 и #40003 для SlaveID адреса устройства 17. Адрес первого регистра будет 0001 hex = 1, т.к. счет ведется с 0 адреса.

БайтЗапросБайтОтвет
(Hex)Название поля(Hex)Название поля
11Адрес устройства11Адрес устройства
10Функциональный код10Функциональный код
00Адрес первого регистра Hi байт00Адрес первого регистра Hi байт
01Адрес первого регистра Lo байт01Адрес первого регистра Lo байт
00Количество регистров Hi байт00Кол-во записанных рег. Hi байт
02Количество регистров Lo байт02Кол-во записанных рег. Lo байт
04Количество байт далее12Контрольная сумма CRC
00Значение Hi 4000298Контрольная сумма CRC
0AЗначение Lo 40002
01Значение Hi 40003
02Значение Lo 40003
C6Контрольная сумма CRC
F0Контрольная сумма CRC

Модули с аналоговым выводом: M-7024, ioLogik R1241, ADAM-4024

Наверх к оглавлению

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

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

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

Пример:

БылоСтало
Функциональный код в запросеФункциональный код ошибки в ответе
01 (01 hex) 0000 0001129 (81 hex) 1000 0001
02 (02 hex) 0000 0010130 (82 hex) 1000 0010
03 (03 hex) 0000 0011131 (83 hex) 1000 0011
04 (04 hex) 0000 0100132 (84 hex) 1000 0100
05 (05 hex) 0000 0101133 (85 hex) 1000 0101
06 (06 hex) 0000 0110134 (86 hex) 1000 0110
15 (0F hex) 0000 1111143 (8F hex) 1000 1111
16 (10 hex) 0001 0000144 (90 hex) 1001 0000

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

БайтЗапросБайтОтвет
(Hex)Название поля(Hex)Название поля
0AАдрес устройства0AАдрес устройства
01Функциональный код81Функциональный код с измененным битом
04Адрес первого регистра Hi байт02Код ошибки
A1Адрес первого регистра Lo байтB0Контрольная сумма CRC
00Количество регистров Hi байт53Контрольная сумма CRC
01Количество регистров Lo байт
ACКонтрольная сумма CRC
63Контрольная сумма CRC

Расшифровка кодов ошибок

01Принятый код функции не может быть обработан.
02Адрес данных, указанный в запросе, недоступен.
03Значение, содержащееся в поле данных запроса, является недопустимой величиной.
04Невосстанавливаемая ошибка имела место, пока ведомое устройство пыталось выполнить затребованное действие.
05Ведомое устройство приняло запрос и обрабатывает его, но это требует много времени. Этот ответ предохраняет ведущее устройство от генерации ошибки тайм-аута.
06Ведомое устройство занято обработкой команды. Ведущее устройство должно повторить сообщение позже, когда ведомое освободится.
07Ведомое устройство не может выполнить программную функцию, заданную в запросе. Этот код возвращается для неуспешного программного запроса, использующего функции с номерами 13 или 14. Ведущее устройство должно запросить диагностическую информацию или информацию об ошибках от ведомого.
08Ведомое устройство при чтении расширенной памяти обнаружило ошибку паритета. Ведущее устройство может повторить запрос, но обычно в таких случаях требуется ремонт.
10
(0A hex)
Шлюз неправильно настроен или перегружен запросами.
11
(0B hex)
Slave устройства нет в сети или от него нет ответа.

Наверх к оглавлению

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

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

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

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

Modbus TCP client с поддержкой Modbus TCP. Скачать

Наверх к оглавлению

Оборудование с поддержкой протокола Modbus RTU

Наверх к оглавлению


За более подробной информацией обращайтесь к специалистам IPC2U по телефону: +7 (495) 232 0207 или по e-mail: [email protected]

Все, что вы боялись спросить о преобразовании протокола Modbus

Протокол Modbus широко используется при автоматизации производства, многие устройства поддерживают протокол передачи данных Modbus RTU, использующий последовательный интерфейс. Обычно устройства имеют интерфейс RS-232 или RS-485 с разъемом DB-9 или клеммной колодкой. Устройства Modbus RTU легко внедрять и недорого обслуживать. Именно поэтому протокол Modbus RTU стал настолько популярным. Сегодня все больше и больше промышленных устройств начинают поддерживать стандарт Ethernet, т.к. сложность и масштабы сетей повышаются. Многие системы уже работают через Modbus TCP с использованием Ethernet, например, SCADA. В результате, возникают проблемы сопряжения между протоколами Modbus RTU и Modbus TCP. Приведенные ниже часто задаваемые вопросы и ответы на них призваны помочь вам выявить и предотвратить частые проблемы преобразования протокола Modbus.

Перечень часто задаваемых вопросов:

  1. Нужен ли мне специальный преобразователь протоколов для подключения устройств с последовательным интерфейсом Modbus RTU к сети Ethernet? Достаточно ли сервера последовательных устройств?
  2. Если к разным последовательным портам шлюза подключено несколько устройств Modbus RTU, какова должна быть архитектура подключения TCP? Можно ли использовать одно подключение или требуется отдельное соединение для каждого последовательного порта?
  3. Как с помощью одного шлюза несколько хостов SCADA могут получить доступ к одним и тем же устройствам Modbus RTU одновременно?
  4. У меня есть два рабочих ведущих устройства Modbus (PLC или HMI). Как мне организовать обмен данными между ними?
  5. У меня есть несколько устройств Modbus RTU, которые нужно опросить. Я могу использовать несколько команд Modbus, чтобы получить данные регистров, но это занимает слишком много времени. Может ли шлюз активно получать данные и объединять их в единый регистр, чтобы я мог получить все данные с помощью одной команды Modbus?

Нужен ли мне специальный преобразователь протоколов для подключения устройств с последовательным интерфейсом Modbus RTU к сети Ethernet? Достаточно ли сервера последовательных устройств?

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

  1. хост SCADA с драйвером Modbus TCP
  2. хост SCADA с драйвером Modbus RTU — со встроенным последовательным портом
  3. хост SCADA с драйвером Modbus RTU — без встроенного последовательного порта
  4. хост SCADA с драйвером «Инкапсуляция Ethernet»
Вариант 1: Хост SCADA с драйвером Modbus TCP

Для данного варианта необходим преобразователь протоколов. Вы можете использовать протокол Modbus TCP для связи с устройствами Modbus RTU через шлюз.

На рынке устройств автоматизации доступно много «шлюзов Modbus», которые обеспечивают подключение через Modbus TCP для ведомых устройств Modbus TCP. Когда шлюз получает запрос Modbus TCP, он преобразует пакет в Modbus RTU и немедленно посылает его к устройствам Modbus RTU.

Вариант 2: Хост SCADA с драйвером Modbus RTU — со встроенным последовательным портом

Этот вариант подходит, если необходимо просто подключить существующий хост SCADA и устройства Modbus RTU к сети Ethernet. Если ваш хост SCADA оборудован последовательным портом, то с помощью пары шлюзов можно решить данную проблему.

Как показано на схеме сети, шлюз может преобразовывать пакет Modbus RTU в Modbus TCP и обратно. Если встроенный последовательный порт отсутствует, данное решение вам не подходит, воспользуйтесь вариантом 3.

Вариант 3: Хост SCADA с драйвером Modbus RTU — без встроенного последовательного порта

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

Для создания «виртуального COM-порта» сервер последовательных устройств установит драйвер виртуального COM-порта на ваш хост SCADA. Чтобы активировать этот порт, установите сервер последовательных устройств в режим виртуального COM-порта. Все данные, передаваемые через него, будут отправляться на удаленный последовательный порт сервера последовательных устройств. Так как с точки зрения ОС и SCADA виртуальный COM идентичен реальному, вы можете отправить запрос Modbus RTU на него напрямую.

Вариант 4: Хост SCADA с драйвером «Инкапсуляция Ethernet»

Если ваш хост SCADA не оснащен последовательным портом, а вы не хотите устанавливать драйвер виртуального COM-порта, то вместо этого вы можете использовать драйвер «Инкапсуляция Ethernet». Обратите внимание, что программное обеспечение SCADA должно поддерживать тип соединения «Инкапсуляция Ethernet». Использование драйверов «Инкапсуляция Ethernet» рекомендуется при наличии углубленных знаний о последовательных протоколах и протоколах TCP/IP.

Сервер последовательных устройств необходимо перевести в режим «Raw Socket» или «туннелирования», в котором при отправке SCADA пакетов Modbus RTU на устройства соединение между хостом и сервером последовательных устройств осуществляется через прозрачный канал TCP/IP или UDP без преобразования протокола. Сервер последовательных устройств необходимо корректно настроить, т.к. протокол Modbus RTU определяет конец пакета на основе пауз в передаче. Если пакет Modbus RTU будет разделён на два или более пакетов TCP/IP или UDP, вы можете столкнуться с некоторыми проблемами. Если вы не можете правильно настроить передачу пакетов между последовательными каналами и сетями Ethernet, рекомендуется использовать вариант со шлюзом (2) или виртуальным COM-портом (3).

Хотя серверы последовательных устройств можно использовать для подключения устройств Modbus RTU к сети Ethernet, вариант со шлюзом (2) наиболее предпочтителен и удовлетворяет практически всем требованиям системы. Ваш хост должен поддерживать протокол Modbus TCP, но это редко вызывает проблемы, т.к. этот протокол очень популярен и широко распространен. Ниже описаны несколько ситуаций, в которых необходимо использовать представленный вариант со шлюзом:

Несколько ведущих устройств или резервирование сети

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

Одно соединение для нескольких устройств Modbus RTU

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

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

Одновременный доступ к устройству со старого контроллера Modbus RTU и новой Modbus TCP SCADA

Хотя протокол Ethernet позволяет легко настроить удаленный доступ, иногда бывает необходимо сохранить существующие локальные соединения с контроллером или HMI. Проблема состоит в том, последовательный порт на устройстве уже подключен к шлюзу, поэтому последовательный порт для подключения HMI отсутствует. Для решения этой проблемы некоторые шлюзы оборудованы функцией «Serial Redirector». Эта система очень похожа на маршрутизатор тем, что шлюз может передавать запрос между различными последовательными портами на основе идентификатора ведомого устройства.

Вывод

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

К списку вопросов


Если к разным последовательным портам шлюза подключено несколько устройств Modbus RTU, какова должна быть архитектура подключения TCP? Можно ли использовать одно подключение или требуется отдельное соединение для каждого последовательного порта?

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

  1. подключение последовательного порта к уникальному TCP-порту
  2. подключение последовательного порта к уникальному IP-адресу
  3. использование таблицы маршрутизации
Метод 1: Подключение последовательного порта к уникальному TCP-порту

Наиболее популярный метод планирования топологии шлюза. В конфигурации шлюза каждый последовательный порт будет подключен к отдельному TCP-порту. Например, 4001 — последовательный порт 1, 4002 — последовательный порт 2 и т.д. Если вы хотите подключить устройства Modbus RTU к последовательному порту 1, установите соединение Modbus TCP с 4001. Шлюз будет передавать пакеты Modbus TCP между TCP-портом 4001 и последовательным портом 1.

В этой топологии драйвер SCADA должен создать несколько соединений Modbus TCP.

Метод 2: Подключение последовательного порта к уникальному IP-адресу

Этот вариант очень похож на вариант 1, но для идентификации последовательных портов шлюз использует различные IP-адреса.

Например, 192.168.2.1 — к последовательному порту 1, 192.168.2.2 — к последовательному порту 2 и т.д. Если вы хотите подключить устройства Modbus RTU к последовательному порту 1, установите соединение Modbus TCP с 502. Шлюз будет передавать пакеты Modbus TCP между 192.168.2.1:502 и последовательным портом 1. В этой топологии драйвер SCADA также должен создать несколько соединений Modbus TCP. Хотя для топологии требуется несколько IP-адресов, некоторые клиенты Modbus TCP позволяют использовать только TCP-порт 502. В этом случае вариант 1 вам не подойдет, и придется использовать вариант 2.

Метод 3: Использование таблицы маршрутизации

В данной топологии для связи с несколькими устройствами используется маршрутизация. Чтобы запрос передавался к правильному последовательному порту, необходимо правильно настроить шлюз и направление маршрутизации. Например, последовательный порт 1 обрабатывает все пакеты Modbus, которые имеют идентификаторы ведомых устройств от 1 до 10, последовательный порт 2 — идентификаторы от 11 до 20 и т.д.

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

Примечание:

Если вы подключите несколько устройств к одному последовательному порту или привяжете несколько последовательных портов к одному TCP-соединению, время опроса Modbus увеличится. Для увеличения скорости опроса требуется больше TCP-соединений, поэтому необходимо учитывать возможности SCADA.

К списку вопросов


Как с помощью одного шлюза несколько хостов SCADA могут получить доступ к одним и тем же устройствам Modbus RTU одновременно?

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

Тем не менее, описанное выше решение не является единственным. Некоторые шлюзы поддерживают режим «агента», активно и постоянно получающего данные от подключенных устройств.

Обновляющиеся данные хранятся во внутренней памяти, которая используется для ответа на запросы хоста. Хотя это решение является более быстрым и эффективным, полученные данные не будут самыми актуальными.

Например, если один запрос занимает 100 мс, то 5 подключений вызовут задержку не менее 100 мс х (5-1) = 400 мс перед отправкой следующего запроса. Это означает, что цикл опроса каждого хоста SCADA должен составлять 400 мс (плюс некоторый допуск).

К списку вопросов


У меня есть два рабочих ведущих устройства Modbus (PLC или HMI). Как мне организовать обмен данными между ними?

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

К списку вопросов


У меня есть несколько устройств Modbus RTU, которые нужно опросить. Я могу использовать несколько команд Modbus, чтобы получить данные регистров, но это занимает слишком много времени. Может ли шлюз активно получать данные и объединять их в единый регистр, чтобы я мог получить все данные с помощью одной команды Modbus?

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

К списку вопросов


Глоссарий

Сервер последовательных устройств

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

Современные серверы последовательных устройств также поддерживают функцию «виртуального COM-порта» для компьютеров, у которых нет дополнительного последовательного порта, преобразуя Ethernet-соединение в СОМ-порт. Помимо этих основных функций, более сложные серверы могут даже поддерживать протокол PPP по последовательным линиям связи или Telnet — в сетях Ethernet. Сервер последовательных устройств можно использовать для консольного управления сетевым и серверным оборудованием (поэтому некоторые производители называют его «консольным») или управления удаленными терминалами в старых банковских системах (поэтому иногда его называют «терминальным»).

Виртуальный COM-порт, драйвер виртуального COM-порта

Виртуальный COM-порт — это не реальный (т.е., не физический) COM-порт на компьютере. Вместо этого на компьютер под устанавливается драйвер виртуального COM-порта, полностью эмулирующий поведение локального COM-порта. Драйвер управляет портами на сервере последовательных устройств, который подключен по сети TCP/IP. Последовательный порт на удаленном сервере последовательных устройств будет функционировать так же, как локальный COM-порт. Виртуальный COM-порт привязывается к конкретному порту конкретного сервера последовательных устройств. Например, COM3 — это последовательный порт 1 на удаленном сервере последовательных устройств с IP-адресом 192.168.2.1. Поэтому при прохождении данных через этот порт они будут отправлены драйвером на «192.168.2.1@serial port 1» (192.168.2.1 на последовательный порт 1). Все запросы на этот виртуальный COM-порт будут перенаправлены на «192.168.2.1@serial port 1». Т.к. новые хост-компьютеры часто имеют недостаточное количество встроенных последовательных портов, виртуальные COM-порты являются бесценным инструментом для подключения существующего оборудования промышленной автоматизации.

Прозрачный шлюз

Прозрачный шлюз — это основной метод использования шлюза Modbus. Т.к. протоколы Modbus RTU и Modbus TCP имеют тот же PDU (блок данных), а разница заключается только в заголовке, шлюз может с легкостью передавать данные между такими устройствами. Таким образом, когда шлюз получает пакет Modbus TCP из сети Ethernet, он может просто заменить поле адреса в соответствии с требованиями Modbus RTU и сразу же отправить пакет на последовательный порт. Когда шлюз получает ответ от устройства Modbus RTU, он ответит клиенту Modbus TCP.

Шлюз-агент

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

  1. Два протокола используют разную структуру пакетов. Например, PROFIBUS и Modbus, Ethernet/IP, PROFINET и т.д.
  2. Два протокола используют разное время циклов. Некоторые протоколы, например, PROFIBUS, PROFINET и Ethernet/IP, обмениваются данными в течение очень коротких временных циклов, в которые не может уложиться прозрачный шлюз.

Что такое Modbus и RS-485

Изучая оборудование систем Умный Дом мы постоянно сталкиваемся с упоминанием протокола Modbus и порта RS-485.

Например, у контроллера EasyHomePLC есть два порта RS-485 и два порта RS-232, у контроллера Wiren Board есть два порта RS-485, у контроллера Beckhoff CX-8080 есть порт RS-485 и порт RS-232. У различного оборудования есть возможность управления по протоколу Modbus: кондиционеры, вентустановки, модули ввода-вывода. А ещё программное обеспечение EasyHome связывается с контроллером по протоколу Modbus TCP. Что всё это означает? Значит ли это, что если у контроллера есть интерфейс Modbus, и у устройства есть такой интерфейс, они сразу заработают вместе? Многие так считают, но это неверно. Объясню максимально просто и понятно.

Что такое RS-485

RS-485 — это стандарт физического уровня. Что это означает? Он определяет следующие параметры общения устройств:

  • связь кабелем «витая пара» по двум жилам
  • максимальная длина кабеля 1200 метров
  • дискретные сигналы (либо 1, либо 0)
  • если напряжение жилы А больше напряжения жилы В более, чем на 200 милливольт, то сигнал считается единицей. Если наоборот, то нулем
  • скорость общения может быть до 1 мегабита в секунду по одной витой паре и до 10 мегабит по двум витым парам
  • максимальный ток в шине 250 миллиампер
  • напряжение от -7 до +12 вольт постоянного тока
  • в один момент времени может передавать информацию только одно устройство в сети

То есть, стандарт подразумевает, что на 2-проводную шину (одну витую пару) можно подключить множество устройств. Он не описывает никакой язык общения оборудования.

Что такое RS-232

Другой стандарт, тоже по кабелю «витая пара». Не буду перечислять все параметры стандарта, он используется достаточно мало сейчас. В частности, все помнят мышки, которые подключались к компьютеру через широкий COM-порт, вот это как раз была связь по RS-232. К контроллерам EasyHomePLC и Beckhoff подключается GSM модем для приёма и отправки смс как раз через порт RS-232. Длина кабеля совсем небольшая.

Существуют переходники с RS-232 на RS-485 и обратно. Мы получаем возможность подключить на порт RS-232 что-то, что подключается по RS-485 или сделать длинную линию связи для устройств RS-232, поставив в начале линии переходник на 485, а в конце обратно.

Что такое Modbus

Переходим к более интересной вещи. Modbus — это уже протокол. Он определяет правила общения устройств. Например, он говорит, что одно устройство должно быть ведущим (master), а остальные ведомыми (slave). Ведущее посылает в шину связи сообщение определённого формата, в котором либо указан адрес нужного slave устройства, либо сообщение предназначено для всех устройств. Устройство slave, на которое отправлено сообщение, может ответить мастеру. Протокол регламентирует формат сообщения, его длину, возможные значения элементов сообщения. Есть также контрольная сумма, которая нужна для проверки того, что сообщение дошло неискажённым.

Но протокол Modbus не регламентирует, какими могут быть сами команды и какая среда передачи данных используется. Есть Modbus serial — это работа по RS-485 или RS-232, то есть, по одной перевитой паре кабелей. Есть Modbus TCP — это работа в компьютерной сети TCP/IP, где у каждого устройства есть IP адрес и порт.

Можно привести аналогию с человеческим общением. Среда передачи данных — это обычно звук. Стандарт подразумевает, что есть минимальная громкость и максимальная громкость, и громкость речи находится в этом диапазоне. Можно говорить по очереди, а можно одновременно. Есть некий диапазон скоростей передачи звуков, который может использоваться. Есть также диапазон частот звуков. Есть максимальное расстояние, на которое можно передавать звук. А можно общаться не звуком, а световыми вспышками, текстом, хлопками в ладоши или жестами. На каждый способ общения есть некий набор правил. Вот что определяет стандарт.

Протокол общения — это ещё не язык, нет. Протокол даёт нам такие понятия как то, что сообщение состоит из слов, разделяемых тишиной. Слова состоят из слогов. А ещё то, что в начале общения надо здороваться, а в конце прощаться. Говорить может только один в один момент времени. Как-то так.

И вот мы подошли к главному вопросу. У нас контроллер имеет порт (он же разъём, он же шлюз) RS-485 и в него программно заложена возможность общения по Modbus. Также у нас есть кондиционер, у которого также есть физический разъём RS-485 и в паспорте указана возможность работы по Modbus. Что это для нас значит? Это значит, что устройства теоретически могут работать совместно.
Как люди, имеющие возможность говорить, теоретически могут общаться. Для нас такая возможность подразумевает полноценное управление и контроль обратной связи. Но заставить их работать вместе не так просто. Нужно в контроллере написать драйвер для работы именно с этим устройством. Для этого в инструкции к устройству надо найти карту регистров, то есть, описание возможных команд устройства. Вот пример некоторых регистров для вентмашины:

[Request0]
Direction=read
Type=bit
Baudrate=115200
Address=1
Period=100
var0=3800#bool#SCo_Зима/~Лето
var1=3801#bool#SCo_Дист/~Мест
var2=3802#bool#SCo_Таймер
var3=3803#bool#SCo_Блокировка
var4=3804#bool#SCo_Пуск/~Стоп
var5=3805#bool#SCo_Локальный~Пуск/Стоп var6=3806#bool#SCoРежимR2 var7=3807#bool#SCoРежимR3 var8=3808#bool#SCoРежимR4 var9=3809#bool#SCoРежимR5 var10=380a#bool#SCoРежим_R6

Чем сложнее устройство, тем вариантов команд больше. В вентмашине или кондиционере их может быть до сотни. Также по протоколу RS-485 мы можем общаться с инфракрасными приёмопередатчиками, генераторами, конвекторами, электрокарнизами, кондиционерами, термостатами, датчиками и различными элементами расширения контроллера на DIN рейку: модулями входов и выходов, диммерами.

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

Например, в программном обеспечении EasyHome есть поддержка ИК-передатчиков ICPDas и Insyte, модулей связи с кондиционерами Mitsubishi и Daikin, конвекторов Varmann, счётчиков электричества Delta, блоков расширения Овен, Razumdom, Bolid, вентмашин Komfovent и ещё много чего. Нужно смотреть конкретные поддерживаемые модели, у разных моделей разные спецификации команд.

Есть устройства с поддержкой Modbus TCP, там нужно, чтобы оно было включено в локальную сеть, отдельный порт RS-485 контроллера не нужен.

К системам на Z-Wave напрямую ничего по Modbus не подключить, там нет такой возможности. Только используя промежуточный контроллер, который поддерживает и Modbus, и Z-Wave, например, Wiren Board.

Есть важная особенность работы устройств по Modbus. У Modbus есть устройство-мастер (это контроллер) и устройство-слейв (то, что к нему подключается). Слейв не может сам инициировать передачу данных, поэтому мастер постоянно опрашивает все подключенные к нему слейвы на предмет их состояния. Если у нас датчик подключен к дискретному входу устройства Овен МВ, то при изменении состояния датчика меняется состояние входа, но модуль не может сразу же сообщить об этом контроллеру, так как не может сам инициировать связь. Нужно дождаться, пока контроллер опросит этот модуль, тогда модуль отправит ему в ответ своё состояние и контроллер поймёт, что датчик изменил состояние и что-то сделает.

Что произойдёт, если на вход Овен МВ пришёл сигнал о сработке датчика, а потом датчик изменил состояние на первоначальное, а контроллер не успел его опросить? В программе модуля МВ есть счётчики количества сработок каждого входа, вот их-то контроллер и считывает, и видит, что было изменение.

Скорость опроса модулей контроллером ограничена, поэтому контроллер не мгновенно узнаёт о событии, это зависит от того, какая скорость опроса, насколько она оптимизирована, и сколько модулей расширения подключено к контроллеру. Если у нас очень много модулей, которых контроллер по очереди опрашивает, то весь цикл опроса занимает некоторое время, пока очередь нужного нам модуля не подойдёт, об изменении состояния мы не узнаем. А потом контроллер должен будет отправить нужную команду соответствующему модулю реле для изменения его состояния. У EasyHomePLC при количестве модулей расширения не более 5 максимальная задержка отрабатывания события не превышает 1.5 секунды, что достаточно быстро. Зависит от того, что опрашивалось в момент изменения состояния входа. У контроллеров Beckhoff связь между модулями расширения происходит по собственному протоколу связи, там независимо от количества модулей всё отрабатывает мгновенно.

Версии Modbus — TCP и RTU

Ещё раз обозначим разницу между версиями связи по ModBus.

Modbus RTU, он же Modbus Serial — работа по RS-485 или RS-232. Подключение устройств по витой паре, где контроллер мастер, а остальные устройства — слейвы, которые не могут сами инициировать связь. Самый распространённый вариант связи.

Modbus TCP или Modbus TCP/IP — общение устройств происходит по обычной компьютерной сети TCP/IP, включающей работу через интернет и через Wi-Fi. То есть, возможна связь между устройствами на любом расстоянии, когда оба подключены к интернет.

Есть ещё несколько разновидностей: Modbus RTU/IP (отличается от TCP наличием контрольной суммы), Modbus over UDP, Modbus Plus (собственный протокол фирмы Schneider Electric, в сети могут быть несколько мастеров).

Ещё небольшая статья про работу устройств по протоколу Modbus в системах Умный Дом: RS-485 Modbus в системах Умного Дома.

 242,553 просмотров всего,  176 просмотров сегодня

Modbus

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

Рассмотрим некоторые особенности из широкого спектра различий между протоколами Modbus RTU и Modbus TCP, реализуемыми через последовательный интерфейс и через Ethernet.

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

Далее мы рассмотрим прохождение пакетов Modbus в качестве Мастера и Слейва сети через последовательный интерфейс и в качестве Клиента и Сервера через Ethernet.

Углубимся в особенности адресации данных в протоколе Modbus.

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

Для начала немного истории.

Modbus представляет собой последовательный коммуникационный протокол, разработанный компанией Modicon в 1979 (Schneider Electric) .

Он был создан специально для использования в ПЛК, производимых этой компанией для промышленного применения.

На сегодняшний день Modbus является распространенным открытым протоколом, используемым для широкого спектра средств автоматизации.

Modbus может использоваться как для передачи данных через Ethernet, так и через последовательный интерфейс.

Существуют три основных разновидности протокола Modbus: Modbus ASCII, Modbus RTU и Modbus TCP/IP.

Первоначально Modbus был разработан с использованием ASCII-символов для кодирования сообщений и эта версия протокола все еще используется.

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

Эти два режима – ASCII и RTU – несовместимы. Поэтому устройство, сконфигурированное для режима ASCII, не может взаимодействовать с другим устройством при помощи Modbus RTU.

Устройства, поддерживающие Modbus RTU, обычно используют один из трех интерфейсов: RS232, RS485, и RS422.

Топология сети «точка – точка» используется для подключения устройств по Интерфейсу RS232.

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

Для подключения до 32 устройств на одной линии и/или на расстояние большее, чем 100 метров, необходимо использовать RS485 или RS422.

Для Мастера, сообщающегося с несколькими Слейвами, на сегодняшний день наиболее популярным интерфейсом является RS485.

Этот стандарт может поддерживать до 32 узлов в диапазоне до 4000 футов или примерно 1200 метров без повторителей.

Единицей измерения передачи сообщений через Modbus является скорость передачи бит в секунду.

Все устройства в сети RTU должны использовать одинаковую скорость передачи данных.

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

Через протокол Modbus модули ввода-вывода могут иметь количество сигналов более 10 000.

В последовательной сети Modbus есть одно устройство-Мастер, который передает команды подчиненным устройствам-Слейвам.

Сами Слейвы информацию не передают, за исключением случаев, когда они получают такую команду от Мастера.

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

Однако интерфейс RS485 не может управлять более чем 32 узлами в одном сегменте; поэтому если в сети более 32 узлов, то потребуется повторитель.

Мастер может выдавать команды Слейв-устройствам, а также считывать с них данные.

СКАДА-система/человеко-машинный интерфейс обычно являются Мастерами, взаимодействующими с несколькими Слейв-устройствами. Устройства должны быть подключены последовательным соединением; они не могут быть соединены по топологии «звезда».

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

Главной отличительной особенностью Modbus TCP/IP является то, что протокол прикладного уровня (MBAP) добавляет сообщение для каждого устройства, подключенного по сети.

ID Слейв-устройства в начале сообщения удаляется так же, как циклический контроль конца сообщения.

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

Modbus использует порт 502 для связи через TCP/IP.

Это важно, если данные должны пройти через систему сетевой защиты.

Большое количество пользователей использует этот порт для передачи данных через протокол прикладного уровня (MBAP).

Последовательные сообщения Modbus также могут быть отправлены как обычные сообщения RTU в рамках передачи данных внутри и пакета Ethernet TCP/IP (инкапсуляция).

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

Обращаем внимание, что инкапсуляция протокола прикладного уровня (MBAP) и RTU не допустима; устройства должны быть настроены на использование либо одного, либо другого протокола.

Сообщения протокола прикладного уровня (MBAP) на сегодняшний день являются самым популярным способом связи через Modbus TCP/IP.

В данной статье мы сделаем упор на рассмотрение Modbus RTU и Modbus TCP/IP с использованием протокола прикладного уровня (MBAP).

Modbus TCP/IP использует понятия «Клиент» и «Сервер» вместо «Мастер» и «Слейв».

Сеть TCP/IP состоит из Клиента, подключенного к сетевому коммутатору (коммутаторам), к которому также подключены все Серверы в сети.

Устройства, поддерживающие Modbus TCP/IP, используют межсетевой протокол для сети Интернет и требуют маску подсети.

IP-адрес и маска подсети представлены упорядоченным набором из 8 бит или иначе – октетом.

IP-адреса местоположения конкретного устройства в сети и Серверов маски подсети упрощают задачу маршрутизации трафика в сети.

Если вы не знаете свой IP-адрес, то IT-группа или администратор сети позволят вам узнать IP-адреса и маску подсети, которые будут необходимы вашим устройствам.

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

По этому вопросу вы также сможете проконсультироваться у вашей IT-группы или администратора сети.

А теперь давайте поговорим о нецентровой системе адресации Modbus и разнице между строками в данной таблице.

Здесь представлены 4 строки, в которых хранится информация.

Две строки хранят простые дискретные значения, называемые ячейками, и цифровые 16-битные значения, известные как регистры.

Для каждого типа данных имеется одна строка только для чтения и одна строка для чтения и записи.

Там нет строк для 32-битных типов данных, потому что в то время, когда Modbus был определен и зафиксирован, двойные целые числа и значения с плавающей точкой не были доступны в ПЛК.

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

Каждая строка имеет максимум 9999 адресов.

Адреса от 1 до 9999 предназначены для чтения и записи, адреса с 10001 по 19999 предназначены только для чтения для дискретных входов.

Адреса от 30001 до39 999 предназначены только для чтения входных регистров, адреса от 40 001 до 49 999 используются для чтения и записи для регистров временного хранения.

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

Ячейки в дискретных входах Modbus, как правило, используются для передачи 1-битных данных или булевых данных. Состояние бита: либо поднят, либо опущен.

Регистром обозначается 1 слово (word) или 16 бит или 2 байта или переменная INTEGER.

Нет регистров для плавающих и двойных целочисленых значений, хотя они могут быть посланы, разделившись при этом на два регистра (WORD).

Значение плавающей переменной выражается в любом числе с десятичной точкой, которое представлено 32-битовым регистром.

Двойные целые числа, или DINTы являются просто двумя 16-битными значениями, сложенными вместе. Также представлены 32 битами.

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

Решение данной проблемы представляется очевидным: 32 + -битовое значение разбивается на 2 отдельных 16-битных регистра, а затем преобразовывается в 32-битное реальное значение (REAL).

Это достигается путем копирования двух 16-битных регистров в 1 переменную типа REAL. Функциональные коды Modbus представляют собой простые цифровые коды, которые указывают слейв-устройствам на то, какие таблицы данных используются для доступа и какую функцию необходимо выполнить в этой таблице – чтение или запись.

Каждая функция кода относится к определенному диапазону адресов таблицы данных.

Например, функциональный код 1 является это кодом для чтения и индивидуальным битом состояния.

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

Вот некоторые из наиболее часто используемых функциональных кодов.

Modbus не определяет, как именно данные должны храниться в регистрах.

Различные производители средств автоматизации используют разные способы хранения и передачи данных.

Некоторые устройства будут передавать первым старший байт, а затем младший байт.

Другие же устройства будут делать это с точностью до наоборот.

К тому же, когда регистры объединяются, чтобы представлять 32 + – реальные битовый значения, некоторые устройства будут передавать более высокий 16-бит в первом регистре и младшие 16-бит во втором регистре.

Другие производители делают это с точностью до наоборот.

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

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

И в завершении рассмотрим сообщения по Modbus RTU, которые отправляются от Мастера к Слейв-устройствам.

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

После того, как Слейв-устройство получает команду, оно возвращает запрашиваемые данные к Мастеру в случае, если командой было чтение, или записывает данные в собственную базу данных, а затем посылает обратно к Мастеру исходное сообщение, чтобы подтвердить, что сообщение было получено.

Мы надеемся, что эта статья даст лучшее понимание Modbus и TCP/IP.

#Modbus, #protocol, #features, #модбас, #особенности, #протокола


Если Вы не нашли то, что искали, сообщите об этом в комментарии

Нужен ли специальный преобразователь протоколов для подключения устройств с последовательным интерфейсом Modbus RTU к сети Ethernet? Достаточно ли сервера последовательных устройств?

Прежде всего необходимо определить, какой драйвер Modbus на хосте SCADA вы хотите использовать.

Существует четыре возможных варианта:

  1. Хост SCADA с драйвером Modbus TCP
  2. Хост SCADA с драйвером Modbus RTU — со встроенным последовательным портом
  3. Хост SCADA с драйвером Modbus RTU — без встроенного последовательного порта
  4. Хост SCADA с драйвером «Инкапсуляция Ethernet»

Вариант 1: Хост SCADA с драйвером Modbus TCP

Для данного варианта необходим преобразователь протоколов MGate. Вы можете использовать протокол Modbus TCP для связи с устройствами Modbus RTU через шлюз. На рынке устройств автоматизации доступно много «шлюзов Modbus», которые обеспечивают подключение через Modbus TCP для ведомых устройств Modbus TCP. Когда шлюз получает запрос Modbus TCP, он преобразует пакет в Modbus RTU и немедленно посылает его к устройствам Modbus RTU.

Подходят устройства: шлюзы MGate.

Вариант 2: Хост SCADA с драйвером Modbus RTU — со встроенным последовательным портом

Этот вариант подходит, если необходимо просто подключить существующий хост SCADA и устройства Modbus RTU к сети Ethernet. Если ваш хост SCADA оборудован последовательным портом, то с помощью пары шлюзов можно решить данную проблему. Как показано на схеме сети, шлюз MGate может преобразовывать пакет Modbus RTU в Modbus TCP и обратно. Если встроенный последовательный порт отсутствует, данное решение вам не подходит, воспользуйтесь вариантом 3.

Подходят устройства: шлюзы MGate.

Вариант 3: Хост SCADA с драйвером Modbus RTU — без встроенного последовательного порта

Если вы хотите пользоваться имеющимися программами и устройствами SCADA, но ваш хост SCADA не оснащен последовательным портом, используйте сервер последовательных устройств для создания виртуального COM-порта. Так вы сможете получить доступ к удаленным последовательным устройствам через сервер, причем функциональность будет соответствовать реальному COM-порту. Для создания «виртуального COM-порта» сервер последовательных устройств установит драйвер виртуального COM-порта на ваш хост SCADA. Чтобы активировать этот порт, установите сервер последовательных устройств в режим виртуального COM-порта. Все данные, передаваемые через него, будут отправляться на удаленный последовательный порт сервера последовательных устройств. Так как с точки зрения ОС и SCADA виртуальный COM идентичен реальному, вы можете отправить запрос Modbus RTU на него напрямую.

Подходят устройства: серии NPort – серверы последовательных интерфейсов.

Вариант 4: Хост SCADA с драйвером «Инкапсуляция Ethernet»

Если ваш хост SCADA не оснащен последовательным портом, а вы не хотите устанавливать драйвер виртуального COM-порта, то вместо этого вы можете использовать драйвер «Инкапсуляция Ethernet». Обратите внимание, что программное обеспечение SCADA должно поддерживать тип соединения «Инкапсуляция Ethernet». Использование драйверов «Инкапсуляция Ethernet» рекомендуется при наличии углубленных знаний о последовательных протоколах и протоколах TCP/IP.

Сервер последовательных устройств необходимо перевести в режим «Raw Socket» или «туннелирования», в котором при отправке SCADA пакетов Modbus RTU на устройства соединение между хостом и сервером последовательных устройств осуществляется через прозрачный канал TCP/IP или UDP без преобразования протокола. Сервер последовательных устройств необходимо корректно настроить, т.к. протокол Modbus RTU определяет конец пакета на основе пауз в передаче. Если пакет Modbus RTU будет разделён на два или более пакетов TCP/IP или UDP, вы можете столкнуться с некоторыми проблемами. Если вы не можете правильно настроить передачу пакетов между последовательными каналами и сетями Ethernet, рекомендуется использовать вариант со шлюзом (2) или виртуальным COM-портом (3).

Подходят устройства: серии NPort – серверы последовательных интерфейсов.

Хотя серверы последовательных устройств можно использовать для подключения устройств Modbus RTU к сети Ethernet, вариант со шлюзом (2) наиболее предпочтителен и удовлетворяет практически всем требованиям системы. Ваш хост должен поддерживать протокол Modbus TCP, но это редко вызывает проблемы, т.к. этот протокол очень популярен и широко распространен. Ниже описаны несколько ситуаций, в которых необходимо использовать представленный вариант со шлюзом:

Несколько ведущих устройств или резервирование сети

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

Подходят устройства: шлюзы MGate.

Одно соединение для нескольких устройств Modbus RTU

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

Подходят устройства: шлюзы MGate.

Одновременный доступ к устройству со старого контроллера Modbus RTU и новой Modbus TCP SCADA

Хотя протокол Ethernet позволяет легко настроить удаленный доступ, иногда бывает необходимо сохранить существующие локальные соединения с контроллером или HMI. Проблема состоит в том, последовательный порт на устройстве уже подключен к шлюзу, поэтому последовательный порт для подключения HMI отсутствует. Для решения этой проблемы некоторые шлюзы оборудованы функцией «Serial Redirector». Эта система очень похожа на маршрутизатор тем, что шлюз может передавать запрос между различными последовательными портами на основе идентификатора ведомого устройства.

Подходят устройства: шлюзы MGate 3270 или MGate MB3660.

Вывод

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

OPC-сервер ИнСАТ (Modbus Universal MasterOPC Server)

Modbus Universal MasterOPC Server предназначен для организации связи по стандарту OPC-устройств, поддерживающих протокол Modbus, список параметров в которых жестко не определен – таких как ОВЕН ПЛК, СПК и т.д.

Modbus – открытый коммуникационный протокол (с архитектурой Master – Slave), широко применяющийся в различных областях промышленности для передачи данных через последовательные линии связи RS-485, RS-232, а также сети TCP/IP.

Modbus Universal MasterOPC Server позволяет опрашивать устройства по наиболее распространенному промышленному протоколу передачи данных Modbus RTU/ASCII/TCP.

Поддерживаются следующие стандарты передачи данных:

  • ОРС DA 2.06 – передача текущих данных.
  • ОРС HDA 1.2 – передача архивных данных.
  • ОРС UA – унифицированный кроссплатформенный стандарт передачи текущих и архивных данных.

ОРС-сервер выпускается в модификациях 32, 500, 2500, 10000, 60000 и 200000 по числу переменных. Модификация на 32 точки – это бесплатный Modbus OPC-сервер.

В дополнение к данному протоколу компания ИнСАТ разработала надстройки, позволяющие обмениваться с удаленными устройствами по протоколу Modbus, используя радио, GSM-связь или коммутируемую телефонную линию. Также к OPC-серверу предоставляется набор готовых конфигураций для различных устройств.

Отличительные особенности Modbus Universal MasterOPC Server

  • Масштабирование значений (приведение к требуемому диапазону).
  • Групповая правка тегов.
  • Мастер импорта тегов из csv файлов.
  • Гибкая перестановка байтов (в словах длиной до 8 байтов).
  • Выделение отдельных битов в теги.
  • Автоматическое преобразование типов.
  • Поддерживаемые типы данных bool, int16, uint16, int32, uint32, float, double, string.
  • Ведение подробного лога диагностических сообщений.
  • Отслеживание качества связи с устройством.
  • Поддержка резервирования каналов связи (в редакциях на 10 000, 60 000 и 200 000 тегов).
  • Поддержка 20 функции Modbus (функция 0x14 – Read File Record).
  • Формирование любого Modbus запроса.
  • Гибкое управление групповыми запросами.
  • Поддержка внеочередного чтения после записи значения при управлении.
  • Трассировка обмена с устройствами.
  • Архивирование тегов с передачей архивов по OPC HDA.
  • Поддержка ODBC-клиента (в редакциях на 10 000, 60 000 и 200 000 тегов): возможность обмена данными со сторонними приложениями, не поддерживающими технологию OPC, – MES, ERP и BI-системами, различными системами учета и контроля, облачными сервисами и т.д.
Поддержка Modbus RTU, ASCII, TCP++++++
Встроенный сценарный язык++++++
Работа по каналам GSM или иной модемной связи++++++
ODBC-клиент+++
IEC-60870-5-104 Server+++
IoT Server+++
Резервирование каналов связи+++
Разрядность, битх32х32х32х32х64х64

ODBC-клиент

В редакциях Modbus Universal MasterOPC Server на 10000, 60000 и 200000 тегов реализован функционал ODBC-клиента. Это позволяет Modbus Master Universal MasterOPC Server напрямую взаимодействовать с большинством современных баз данных. Для реализации обмена используется технология Open DataBase Connectivity (ODBC).

Благодаря ODBC-клиенту MasterOPC может легко обмениваться данными со сторонними приложениями, не поддерживающими технологию OPC, – MES, ERP и BI-системами, различными системами учета и контроля, облачными сервисами и т.д. Это делает MasterOPC удобным инструментом для интеграции отдельных программных продуктов и систем сбора данных в общую информационно-коммуникационную сеть предприятия, создавая таким образом единое информационное пространство.

ODBC-клиент имеет следующие функциональные особенности:

  • поддержка SQL-запросов для чтения и записи из ODBC-совместимых баз данных;
  • настройка функций работы с базами данных реализованы во встроенном в MasterOPC редакторе скриптов;
  • поддержка самых распространенных СУБД: Microsoft SQL, PostgreSQL и др.;
  • высокая производительность.

IEC-60870-5-104 Server
В редакциях Modbus Universal MasterOPC Server на 10000, 60000 и 200000 тегов доступен протокол IEC 60870-5-104, применяемый в России для контроля нефтепроводов, газопроводов, объектов энергетики. Это позволяет выдавать данные из любых тегов OPC-сервера про данному протоколу, то есть создать программный конвертер Modbus – IEC 60870-5-104.

IoT Server
В редакциях Modbus Universal MasterOPC Server на 10000, 60000 и 200000 тегов доступен протокол MQTT, предназначенным для обмена данными между IoT-устройствами. В IoT Server также поддерживается MQTT-клиент, что позволяет интегрировать различные устройства в SCADA, а также работать в обратном направлении – передавать данные от различных протоколов в облачные сервисы.

CANopen, EtherCAT, Modbus/TCP | Festo Russia

CANopen:

 

Протокол связи CANopen, основанный на CAN (Controller Area Network), используется для комплексного сетевого оборудования/систем. Сети CANopen обеспечивают двухточечное соединение для сервиса объектов данных (SDO, например, параметров и диагностики) и циркулярная связь для обработки объектов данных (PDO).

 

Преимущества продукции Festo для CANopen:

 

  • Поддержка протокола LSS для конфигурации шины шинного узла CPX
  • Комплексная диагностика, например, с помощью светодиодов, а также опция, позволяющая определить поведение устройства в случае ошибки

 

EtherCAT:

 

Характеризуется коротким временем цикла и очень точной синхронизацией почти без фазовых искажений. Постоянная связь с CANopen возможна на основе стандартизированных профилей.

 

Преимущества продукции Festo для EtherCAT:

 

  • Поддержка Модульного Профиля Устройства (MDP) для легкой настройки
  • Функция почтового ящика CoE (CAN с EtherCAT), FoE (файл с EtherCAT) и EoE (Ethernet с EtherCAT)
  • Комплексная диагностика, например, с помощью светодиодов, а также опция, позволяющая определить поведение устройства в случае ошибки

 

Modbus-TCP:

 

Просто структурированная модель данных основана на архитектуре клиент/сервер и передает данные внутри TCP/IP-пакетов. Таким образом, Modbus полностью совместим со стандартными сетями Ethernet.

Festo имеет более чем 20-летний опыт в системе связи Modbus-TCP и предлагает широкий ассортимент продуктов, включая системы технического зрения для бесперебойной интеграции в сети Modbus.

 

Читайте подробнее в нашей детальной брошюре, «Планета Fieldbus» (англ.)

Сайт CANopen

Сайт EtherCAT

Сайт Modbus

 

Продукция для CANopen в онлайн каталоге

Продукция для EtherCAT в онлайн каталоге

Продукция для Modbus в онлайн каталоге

Обзор протокола Modbus RTU

Введение в адресацию Modbus RTU, функциональные коды и сеть Modbus RTU Обзор

Давайте разберемся с Modbus RTU

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

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

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

Немного истории Modbus RTU

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

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

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

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

Простота — причина такого широкого распространения Modbus. Не повредило и то, что Modbus был создан одним из крупнейших производителей ПЛК в то время и сделал его открытым и широко доступным.Modbus также требует очень мало места для кода процессора или оперативной памяти. Хотя сегодня это не так важно, учитывая доступные нам мощные процессоры и технологии, это было очень важно в первые годы промышленной автоматизации, когда в процессорах использовалась 8-битная технология, а такие ресурсы, как ОЗУ и ПЗУ, были чрезвычайно дорогими и дефицитными.

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

Связь по протоколу Modbus

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

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

Чтобы создать блок данных приложения Modbus, клиент должен инициировать транзакцию Modbus. Это функция, которая информирует сервер о том, какое действие следует выполнить. Формат запроса, инициированного мастером, устанавливается протоколом приложения Modbus.Поле кода функции затем кодируется в один байт. Только коды в диапазоне от 1 до 255 считаются действительными, а 128–255 зарезервированы для ответов об исключениях. Когда мастер отправляет сообщение подчиненному, именно поле кода функции информирует сервер о том, какое действие следует выполнить.

Нравится то, что вы читаете?

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

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

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

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

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

Переданный байт кодируется как 8-битное двоичное значение, шестнадцатеричное 0–9 и A – F. Младший значащий бит отправляется и принимается первым.

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

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

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

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

Требования к адресам Modbus RTU и идентификация станции

Стандартные адреса узлов Modbus RTU — 1-255, где 0 зарезервирован для широковещательных сообщений и только для записи. Однако адрес 0 используется редко, поскольку нет подтверждения того, что сообщение было правильно получено на подчиненном узле. Это не сильно повлияет, если вашим физическим уровнем является RS-232, поскольку в любом случае может быть реализован только один узел. RS-485 ограничивает количество узлов до 32, хотя некоторые драйверы позволяют увеличить это количество.

Последовательные подчиненные устройства Modbus идентифицируются по номеру станции, который предшествует общей структуре сообщения. Как правило, поддерживается до 32 станций, поскольку это ограничение, накладываемое большинством драйверов последовательного интерфейса RS485. Программного ограничения на количество поддерживаемых станций нет. Действительные адреса Slave назначаются в диапазоне от 1 до 255 с номером станции 0, зарезервированным для широковещательных сообщений, сообщений, обрабатываемых всеми Slaves.

Транспортные уровни

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

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

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

Кодирование данных Modbus RTU

Механизм кодирования описывает, как битовые комбинации формируются из значений управления и данных, которые закодированы в пакет.И отправитель, и получатель должны использовать одну и ту же кодировку, чтобы правильно понимать содержимое данных. Существует два механизма кодирования сообщений Modbus: ASCII и RTU.

Кодирование RTU — гораздо более распространенный механизм кодирования, используемый в Modbus. RTU просто означает, что значения кодируются как стандартный двоичный код с прямым порядком байтов. Это означает, что в случае 16-битных значений старший значащий байт (MSB) кодируется до младшего значащего байта (LSB). 8-битное значение, такое как десятичное число 41 (29 шестнадцатеричное), кодируется просто как 0010 1001.В то время как 16-битное значение, такое как десятичное 300 (шестнадцатеричное 12C), кодируется как 0000 0001 0010 1100. MSB 01 кодируется и передается до LSB 2C.

Карта памяти MODBUS RTU Аналоговые значения 9010
Modbus RTU
Тип данных
Общее двоичное имя
Начальный адрес значения, флаги 00001
Цифровые входы Двоичные входы 10001
Аналоговые входы Двоичные входы 30001
Modbus Регистры

Разница между Modbus RTU и Modbus TCP

Основное различие между Modbus RTU и Modbus TCP (также известное как Modbus IP, Modbus EtherNet и Modbus TCP / IP) заключается в том, что Modbus TCP работает на физическом уровне Ethernet. и Modbus RTU — это протокол последовательного уровня.Modbus TCP также использует 6-байтовый заголовок для маршрутизации.

Ведущее устройство Modbus RTU — это отдельная ведущая шина. Он отправляет сообщение ведомому устройству RTU и получает ответ. Modbus RTU ограничен одним ведущим устройством. По каналу RS485 одновременно может быть только один набор сигналов. Либо один RTU Master передает, либо одно из клиентских устройств RTU передает.

С появлением Modbus TCP все стало проще и проще. С Modbus TCP контроллеры могут гораздо более эффективно использовать полосу пропускания Ethernet, чтобы быть ведущим для сотен устройств Modbus TCP.Modbus TCP позволяет использовать несколько клиентов. Если у RS485 было электрическое ограничение в 32 устройства, у Ethernet не было ограничений. Операционная RAM — единственное практическое ограничение. С Modbus TCP у проектировщика сети есть возможность использовать несколько клиентов / мастеров, если они того пожелают.

Для Modbus TCP (Ethernet) вам потребуется дорогостоящий коммутатор. С Modbus RTU (последовательный) вы можете просто последовательно подключить все устройства вместе. Устройства со старыми 8-битными процессорами и небольшим объемом памяти могут легко использовать последовательный протокол Modbus, но для работы с Ethernet вам потребуется более дорогая платформа.

Знаете ли вы?

Основатель Real Time Automation Джон С. Ринальди написал целую книгу о Modbus? Ознакомьтесь с The Everyman’s Guide to Modbus , доступным сейчас на Amazon!

Для получения дополнительной информации о наших продуктах и ​​услугах Modbus RTU позвоните по телефону 1-800-249-1612 или напишите нам по адресу [email protected].

Хотите добавить Modbus RTU в свой проект?

См. Решения Modbus RTU

Хотите эту страницу в формате PDF? Кликните сюда!

Modbus FAQ


Часто задаваемые вопросы по Modbus: Об организации Modbus

Кто такая организация Modbus?

Организация Modbus — это независимая некоммерческая организация, состоящая из членов (действующая как бизнес-лига в соответствии с налоговым кодексом США 501 (c) 6).Это группа независимых пользователей и поставщиков устройств автоматизации, которая стремится стимулировать внедрение набора протоколов связи Modbus и эволюцию архитектур для распределенных систем автоматизации в различных сегментах рынка. Организация Modbus предоставляет инфраструктуру для получения и обмена информацией о протоколах, их приложениях и сертификации устройств, чтобы упростить внедрение пользователями. Организация Modbus и входящие в нее компании будут способствовать развитию протокола Modbus TCP / IP.

Каковы отношения между Modbus, Modbus Organization и Schneider Electric?

Modicon, сегодня Schneider Electric, представила на рынке протокол Modbus в 1979 году. Schneider Automation поддерживала и обслуживала сайт Modbus в прошлом. Понимая важную роль, которую он должен играть на рынке, Schneider Electric помог в создании независимой организации сообщества разработчиков и пользователей: The Modbus Organization.

Могу ли я присоединиться к организации Modbus?

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

Есть ли какие-либо отрасли, которым может быть выгодно использование протокола Modbus?

Modbus не является отраслевым и используется во многих отраслях.Общий знаменатель — это структура обмена сообщениями, которую поддерживают все устройства. В ответ на запросы клиентов полупроводниковая промышленность внедрила стандарт сетевой связи и протокол обмена объектами с использованием Modbus TCP / IP. Это позволяет датчикам, совместимым с SEMI Sensor Bus, связываться друг с другом с помощью Modbus TCP / IP.

Modbus FAQ: О протоколе

Что такое протокол Modbus ®?

Протокол Modbus

— это структура обмена сообщениями, разработанная Modicon в 1979 году.Он используется для установления связи клиент-сервер между интеллектуальными устройствами. Это стандарт де-факто, действительно открытый и наиболее широко используемый сетевой протокол в промышленной производственной среде. Он был реализован сотнями поставщиков на тысячах различных устройств для передачи дискретных / аналоговых входов / выходов и регистрации данных между устройствами управления. Это лингва-франка или общий знаменатель для разных производителей. В одном из отчетов это было названо «стандартом де-факто в интеграции мультивендоров».По данным отраслевых аналитиков, только в Северной Америке и Европе имеется более 7 миллионов узлов Modbus.

Где используется Modbus ®?

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

Что такое протокол Modbus TCP / IP?

TCP / IP — это общий транспортный протокол Интернета, который на самом деле представляет собой набор многоуровневых протоколов, обеспечивающих надежный механизм передачи данных между машинами. Ethernet стал де-факто стандартом корпоративных корпоративных систем, поэтому неудивительно, что он также де-факто стал стандартом для заводских сетей.Ethernet — не новая технология. Он созрел до такой степени, что стоимость внедрения этого сетевого решения снижается до уровня, соизмеримого со стоимостью современных полевых шин.

Использование Ethernet TCP / IP на заводе обеспечивает полную интеграцию с корпоративной внутренней сетью и системами MES, которые поддерживают завод. Чтобы перевести Modbus в XXI век, в 1999 году была разработана открытая спецификация Modbus TCP / IP. Спецификация протокола и руководство по реализации доступны для загрузки (www.modbus.org/specs).

Сочетая универсальную, масштабируемую и повсеместную физическую сеть (Ethernet) с универсальным сетевым стандартом (TCP / IP) и независимым от производителя представлением данных, Modbus дает действительно открытую и доступную сеть для обмена данными процесса. Его легко реализовать для любого устройства, поддерживающего сокеты TCP / IP.

Где используется Modbus TCP / IP?

Modbus TCP / IP стал повсеместным благодаря своей открытости, простоте, низкой стоимости разработки и минимальному количеству оборудования, необходимого для его поддержки.На рынке доступно несколько сотен устройств Modbus TCP / IP, и с каждым годом их становится все больше. Он используется для обмена информацией между устройствами, мониторинга и программирования их. Он также используется для управления распределенным вводом-выводом, являясь предпочтительным протоколом для производителей устройств этого типа.

Почему я должен использовать Modbus TCP / IP?

Когда дело доходит до выбора сети для вашего устройства, Modbus TCP / IP предлагает несколько существенных преимуществ:

  • Простота: Modbus TCP / IP просто берет набор команд Modbus и обертывает вокруг него TCP / IP.Если у вас уже есть драйвер Modbus и вы разбираетесь в разъемах Ethernet и TCP / IP, вы можете запустить драйвер и разговаривать с ПК через несколько часов. Затраты на разработку исключительно низкие. Требуется минимум оборудования, а разработка проста в любой операционной системе.
  • Стандартный Ethernet: Никаких экзотических наборов микросхем не требуется, и вы можете использовать стандартные Ethernet-карты ПК для связи с вашим недавно созданным устройством. По мере снижения стоимости Ethernet вы получаете выгоду от снижения цены на оборудование, а по мере повышения производительности с 10 до 100 Мбайт, а вскоре и до 1 Гбайт, ваша технология перемещается вместе с ней, защищая ваши вложения.Вы больше не привязаны к одному поставщику для поддержки, но получаете выгоду от тысяч разработчиков, которые делают Ethernet и Интернет сетевыми инструментами будущего. Эти усилия были своевременно дополнены назначением известного порта 502 Ethernet для протокола Modbus TCP / IP.
  • Открыт: Протокол Modbus был передан от Schneider Electric к Modbus Organization в апреле 2004 года, что свидетельствует о приверженности открытости. Спецификация доступна для бесплатной загрузки, и для использования протоколов Modbus или Modbus TCP / IP не требуется дополнительных лицензионных сборов .Дополнительные примеры кода, примеры реализации и средства диагностики доступны в наборе инструментов Modbus TCP, бесплатном преимуществе для членов организации Modbus и доступны для покупки лицами, не являющимися членами
  • Доступность множества устройств: Взаимодействие между устройствами разных производителей и совместимость с большим количеством установленных устройств, совместимых с Modbus, делают Modbus отличным выбором.

Как реализовать устройство Modbus TCP / IP?

Чтобы реализовать устройство Modbus® TCP / IP, загрузите с веб-сайта спецификацию протокола Modbus TCP / IP и руководство по реализации Modbus TCP / IP.Вам также необходимо понимать основы реализации драйвера TCP. Для тестирования вашего драйвера вам понадобится как минимум два устройства: сервер и клиент для обмена информацией. Это могут быть два компьютера, которые разговаривают друг с другом с помощью стандартных карт Ethernet, или компьютер, взаимодействующий с датчиком или устройством со встроенным микрокомпьютером.

Могу ли я использовать Modbus TCP / IP через Интернет?

Modbus TCP / IP — это Интернет-протокол. Тот факт, что TCP / IP является транспортным протоколом Интернета, автоматически означает, что Modbus TCP / IP может использоваться в Интернете.Он был разработан для достижения этой цели. На практике это означает, что к устройству Modbus TCP / IP, установленному в Европе, можно обращаться через Интернет из любой точки мира. Последствия для поставщика оборудования или конечного пользователя безграничны. Выполнение технического обслуживания и ремонта удаленных устройств с помощью ПК и браузера сокращает расходы на поддержку и улучшает обслуживание клиентов. Вход в систему управления заводом из дома позволяет инженеру по техническому обслуживанию максимально увеличить время безотказной работы своей установки и сократить время нахождения в поле.Управление географически распределенными системами становится простым благодаря коммерчески доступным интернет-технологиям / интранет-технологиям.

Могут ли существующие устройства Modbus обмениваться данными через Modbus TCP / IP?

Поскольку Modbus TCP / IP — это просто протокол Modbus с оболочкой TCP, для существующих устройств Modbus очень просто обмениваться данными через Modbus TCP / IP. Устройство шлюза требуется для преобразования текущего физического уровня (RS232, RS485 или других) в Ethernet и преобразования протокола Modbus в Modbus TCP / IP.Такое шлюзовое устройство может быть реализовано с помощью ПК. Коммерческие продукты для этого доступны от нескольких производителей. База данных устройств Modbus может помочь вам идентифицировать шлюзы и другие устройства Modbus.

Какой производительности я могу ожидать от системы Modbus TCP / IP?

Производительность зависит от сети и оборудования. Если вы используете Modbus TCP / IP через Интернет, вы не получите лучшего времени отклика, чем обычно.Однако при общении в целях отладки и обслуживания этого может быть вполне достаточно, и вам не придется садиться на самолет или ехать на место в воскресенье утром!

Для высокопроизводительной интрасети с высокоскоростными коммутаторами Ethernet, гарантирующими производительность, ситуация совершенно иная. Теоретически Modbus TCP / IP передает данные с эффективностью до 250 / (250 + 70 + 70) или около 60% при массовой передаче регистров. Поскольку 10BaseT Ethernet передает необработанные данные примерно на 1,25 Мбит / с, теоретическая пропускная способность равна 1.25M / 2 * 60% = 360000 регистров в секунду, а скорость 100BaseT в 10 раз больше.

Предполагается, что вы используете устройства, которые могут обслуживать Ethernet со скоростью, соответствующей доступной полосе пропускания. Практические испытания, проведенные Schneider Electric с использованием ПЛК MOMENTUM ™ Ethernet с вводом-выводом Ethernet, показали, что в секунду можно сканировать до 4000 баз ввода-вывода, причем каждая база ввода-вывода имеет до 16 12-битных аналоговых вводов-выводов или 32 дискретных входа / выхода. Четыре базы могут быть обновлены за одну миллисекунду. Хотя это ниже теоретического предела, рассчитанного выше, помните, что тестируемое устройство работало только с процессором 80186, работающим на частоте 50 МГц с эффективной вычислительной мощностью 3 MIPS (по сравнению с 700 MIPS для Pentium 500 МГц).Тем не менее, эти результаты быстрее, чем используемые до сих пор проприетарные методы сканирования ввода-вывода. По мере того, как недорогие процессоры становятся менее дорогими, устройства типа Momentum будут преследовать теоретический предел, хотя они никогда не достигнут его, потому что предел будет и дальше отодвигаться с помощью 1 Gigabit Ethernet, 10 Gigabit Ethernet и т. Д. Сравните это с другие полевые шины, которые по своей природе застревают на одной скорости.

Как получить поддержку Modbus и Modbus TCP / IP?

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



Авторские права © 2005-2021 Modbus Organization, Inc. PO Box 628 Hopkinton, MA 01748. Все права защищены.

Используя Modbus.org, вы принимаете условия нашего посетителя соглашение и политика конфиденциальности.

RTU против TCP против ASCII

Modbus — это протокол связи для передачи данных между двумя или более устройствами.Он был разработан в 1979 году для использования с программируемыми логическими контроллерами (ПЛК). Сейчас он широко используется для подключения многих типов промышленных электронных устройств к разным типам сетей.

Modbus Разъяснение: что такое Modbus?

Протокол связи Modbus — широко используемый протокол в системах диспетчерского управления и сбора данных (SCADA). Он широко используется для ряда своих ключевых преимуществ, включая следующие:

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

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

Системы Modbus гибки

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

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

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

Два канала: Modbus RTU против Modbus TCP / IP

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

Существует два типа последовательных протоколов Modbus: RS-232 и RS-485. Modbus RS-232 обеспечивает одновременный полнодуплексный поток данных.Modbus RS-485 является полудуплексным и отображает значения с помощью разницы в напряжении.

Сообщения Modbus также можно отправлять через Ethernet или TCP / IP. Эти сообщения Modbus упаковываются в виде пакетов с одним битом или 16-битным словом.

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

Реальный пример: использование Modbus для отслеживания состояния вашего генератора

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

В этом видео вы увидите несколько простых шагов, как контролировать свой генератор с помощью Modbus. Начнем опрос данных с резервного генератора (пропан / дизель). В этом примере используется веб-интерфейс устройства удаленного мониторинга NetGuardian DIN.

Два варианта: Modbus RTU против Modbus ASCII

Существует два варианта стандартного протокола Modbus: ASCII Modbus против Modbus RTU. Протокол Modbus RTU более компактен и использует двоичную связь. В этом формате за сообщением всегда следует контрольная сумма циклического контроля избыточности, которая используется для обнаружения проблем передачи.

Второй вариант — протокол Modbus ASCII. Эта версия более подробна и использует символы ASCII, которые могут быть прочитаны операторами.Другой тип контрольной суммы, контрольная сумма продольного избыточного кода, имеет место после передачи данных ASCII. ASCII — менее безопасный из двух вариантов.

Поскольку он также менее эффективен, чем вариант RTU, операторам не следует использовать его в качестве альтернативного варианта. Используйте только Modbus ASCII для передачи данных на устройства, которые не поддерживают формат RTU.

Modbus — это протокол опросчика / ответчика

Обмен данными по Modbus осуществляется между централизованным опросчиком и до 247 подключенных электронных устройств в одной сети.Дизайн обычно называют протоколом «ведущий / ведомый».

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

Когда адрес ответчика передает сообщение на запросчик Modbus, он начинает сообщение с уникального идентификатора адреса.Это число в диапазоне от 1 до 247. Это позволяет запросчику определить, какое конкретное устройство отвечает с запрошенной информацией.

Регистры временного хранения Modbus Сохраняют ключевые значения

Регистры Modbus форматируются в соответствии с одним из нескольких «функциональных кодов» на основе содержащихся данных. У вас может быть аналоговое значение уровня топлива, сохраненное как 8-битное целое число. Вместо этого регистр может использовать те же 8 бит для хранения 8 различных двоичных значений (открытая дверь, сбой питания и т. Д.)) в растровом изображении.

Диспетчерский контроль и сбор данных могут принимать разные формы

Как и любые устройства SCADA, официальная функция Modbus «сбор данных» может быть разной.

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

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

Наконец, есть синтезированные регистры, которые зависят от программных значений, таких как таймеры и вычисления. «Время с момента последнего обслуживания», возможно, можно было бы отследить как аналоговое значение. У некоторых генераторов есть более 1000 регистров для опроса. Большинство из них не являются показаниями физического датчика.

Помните передовой опыт SCADA — независимо от протокола

Независимо от того, какой протокол вы выберете для использования, имейте в виду несколько важных моментов:

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

Открытые стандарты позволяют позже выбрать нового производителя. Закрытые протоколы, написанные одним производителем, этого не допустят.

Также обратите внимание на устройства, которые поддерживают несколько протоколов. Вы всегда должны максимально стандартизировать, потому что что-то БУДЕТ придумать. Не соглашайтесь на мастера, если у него есть только программное обеспечение Modbus SCADA, если у вас есть другие устройства, использующие другие протоколы, такие как SNMP или DNP3.T / Mon LNX — отличный пример мастера, говорящего по нескольким протоколам.

Потратьте время на оценку производителей

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

Проверенные поставщики, которые уделяют особое внимание вашим потребностям, могут быть отличными. Ищите команду, которая предоставит бесплатную техническую поддержку, и которая не передает свою техническую поддержку на аутсорсинг.

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

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

Выполняйте домашнюю работу с помощью этих руководств

Чем больше вы знаете о шине Mod и SCADA, тем ценнее вы будете для своей компании.

Вы также можете прочитать о T / Mon Alarm Master, если вы сейчас оцениваете решения. Наконец, продолжайте изучать технологии с помощью статьи RS485 / RS232 ниже.

Сопутствующие товары:

  • T / Mon LNX: пример протокола Modbus для главной станции

Связанные темы:

Организация Modbus

Организация Modbus заменяет главный-подчиненный на клиент-сервер
Организация Modbus Попечительский совет объявляет, что он исключает все случаи использования несоответствующего языка парадигмы запросов и ответов в коммуникациях Modbus.Все упоминания «господин-раб» в литературе организации и на ее веб-сайте будут удалены.
Щелкните здесь, чтобы получить дополнительную информацию …

Безопасность Modbus — новый протокол для повышения безопасности системы управления
Новый протокол обеспечивает надежную защиту за счет сочетания безопасности транспортного уровня (TLS) с традиционным протоколом Modbus. Загрузите бесплатную копию спецификации на http://modbus.org/tech.php.
Щелкните здесь, чтобы получить дополнительную информацию …

Граничный ввод / вывод Groov RIO® Ethernet в Opto 22 поставляется с поддержкой PID, SSH и LDAP
Вскоре после первого запуска Groov RIO в начале 2020 года Opto 22 расширилась. удаленный ввод / вывод, возможности подключения и функции безопасности его периферийного модуля ввода / вывода с выпуском его версии 3.0 прошивка.
Щелкните здесь, чтобы получить дополнительную информацию …

Phoenix Contact выпускает серию неуправляемых коммутаторов с новыми возможностями
FL SWITCH 1000 поддерживает автоматическую приоритизацию протокола (APP), что упрощает приоритизацию важного трафика. Критически важные промышленные коммуникации, такие как Ethernet / IP, PROFINET, Modbus / TCP и BACnet, сначала передаются по сети.
Щелкните здесь, чтобы получить дополнительную информацию …

Новая карта PCI Express Hilscher формата M.2 поддерживает полевые шины и Ethernet-сети реального времени
В основе M.2 2230 — это отмеченный наградами чип многопротокольной связи netX 90 от Hilscher. Пользователи карты M.2 могут выбрать загружаемое микропрограммное обеспечение для устройства ввода-вывода PROFINET, адаптера EtherNet / IP, EtherCAT и OpenModbus / TCP.
Щелкните здесь, чтобы получить дополнительную информацию …

Представляем новый бренд универсальных входных дисплеев Vertu ™ от Acromag
Эти приборы сочетают в себе функцию цифрового индикатора панельного счетчика с дополнительным формированием сигнала для выхода передатчика 4-20 мА и / или аварийного отключения твердотельные реле.Большие яркие цифры размером 1,2 дюйма (31 мм) хорошо видны издалека даже при ярком солнечном свете. Также поддерживается Modbus RTU.
Щелкните здесь для получения дополнительной информации …

Продлите срок службы вашей устаревшей системы DCS, получив доступ к устройствам FOUNDATION Fieldbus через Modbus
Универсальное устройство связи и шлюз Modbus от Softing (FG-200) объединяет до четырех FOUNDATION ™ Fieldbus (FF) h2 подключается к системам управления, поддерживающим HSE или Modbus.
Щелкните здесь для получения дополнительной информации…

Fieldbus International выпускает адаптер WirelessHART с интерфейсом Modbus RTU: T910.
T910 позволяет передавать до 8 переменных устройства (с плавающей запятой или целых чисел) и обширный массив индикаторов состояния устройства, передаваемых от устройства Modbus по сети WirelessHART.
Щелкните здесь, чтобы получить дополнительную информацию …

Сетевые поворотные энкодеры AMCI могут похвастаться новыми функциями
Сетевые абсолютные угловые энкодеры Advanced Micro Controls Inc. (AMCI) NR60E2 теперь включают интерфейс Profinet, технологию E2, ступичный вал (слепой) Вал) Вариант и агрегаты из нержавеющей стали.
Щелкните здесь для получения дополнительной информации …

Weinzierl предлагает мощный и компактный шлюз KNX для Modbus
Устройство позволяет интерпретировать и масштабировать данные Modbus в соответствии с типами точек данных стандарта KNX. Его можно использовать как клиент или сервер Modbus.
Щелкните здесь, чтобы получить дополнительную информацию …

AMCI выпускает встроенный серводвигатель SV160E2
Серводвигатель SV160E2 включает в себя встроенный двухпортовый переключатель с возможностью подключения EtherNet / IP, Modbus TCP и Profinet, а также простую настройку производительности , динамическое управление крутящим моментом, безопасное отключение крутящего момента (опционально), виртуальный следящий механизм, абсолютная обратная связь энкодера, встроенный веб-сервер, совместимые наборы шнуров и многое другое.
Щелкните здесь, чтобы получить дополнительную информацию …

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

Applied Motion Products предлагает компактные шаговые двигатели с высоким крутящим моментом для приложений с ограниченным пространством
Компактные шаговые двигатели типоразмеров 8, 11 и 14 NEMA отлично подходят для приложений с ограниченным пространством, таких как медицина устройства, 3D-принтеры, аналитические и медицинские инструменты, текстильное оборудование, оборудование для автоматизации лабораторий, оборудование для наблюдения, элементы управления камерами и многое другое.Новое семейство шаговых приводов STF совместимо с Modbus и предлагает встроенное программирование и сетевую связь.
Щелкните здесь для получения дополнительной информации …

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

Applied Motion Products представляет новую линейку компактных и мощных цифровых сервоприводов
Новая линейка цифровых сервоприводов SV200 для приложений управления движением с питанием от постоянного тока устраняет требования к компонентам преобразования энергии и снижает затраты за счет использования нескольких сервоприводов. оси для получения энергии от одного источника постоянного тока.
Щелкните здесь для получения дополнительной информации …

Modbus — Kvaser — Расширенные решения CAN

Modbus — это протокол последовательной связи, используемый для передачи информации между электронными устройствами по последовательным линиям или Ethernet.Первоначально он был опубликован компанией Modicon (ныне Schneider Electric) в 1979 году для использования с ПЛК. С 1979 года это стандарт de facto для последовательной передачи данных промышленной электроники в области управления технологическими процессами и автоматизации. Schneider Electric поддерживал и поддерживал проект Modbus в прошлом. Организация Modbus — это независимая организация разработчиков и пользователей, созданная при активном содействии Schneider Electric и образованная в связи со стратегической ролью Modbus на промышленном рынке.Протокол Modbus был передан от Schneider Electric к Modbus Organization в 2004 году, что сделало протокол открытым и бесплатным для использования.

Modbus RTU (удаленный терминал) и Modbus ASCII используются для последовательной связи, а Modbus TCP используется для Ethernet. Modbus определяет и использует модель связи «ведущий / ведомый», и в стандартной сети Modbus будет один ведущий и до 247 ведомых устройств, каждое из которых будет иметь уникальный адрес ведомого в диапазоне от 1 до 247.Мастер имеет однонаправленное управление подчиненными устройствами и может записывать информацию в регистры подчиненных и считывать из них. Ведущее устройство Modbus может адресовать отдельные ведомые устройства или может отправлять широковещательное сообщение всем ведомым устройствам. Подчиненные устройства возвращают ответ на адресованные им запросы и не будут отвечать на широковещательные сообщения.

Modbus ASCII и Modbus RTU используют методы последовательной связи RS-485 или RS-232 для передачи пакетов данных. Modbus TCP / IP или Modbus TCP — это протокол Modbus RTU с интерфейсом TCP для запуска Ethernet.Поскольку Ethernet позволяет одноранговую связь, а не связь ведущий / ведомый, Modbus TCP полагается на связь между клиентом и сервером для Ethernet. Modbus TCP следует сетевой модели OSI и определяет уровни представления и приложения.

Подробное описание протокола Modbus — NI

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

Формат PDU Modbus определяется как код функции, за которым следует связанный набор данных. Размер и содержимое этих данных определяются кодом функции, и весь PDU (код функции и данные) не может превышать 253 байта. Каждый код функции имеет определенное поведение, которое ведомые устройства могут гибко реализовать в зависимости от желаемого поведения приложения. Спецификация PDU определяет основные концепции доступа к данным и управления ими; однако ведомое устройство может обрабатывать данные способом, который явно не определен в спецификации.

Доступ к данным в Modbus и модель данных Modbus

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

Блок памяти Тип данных Мастер доступа Доступ подчиненного устройства
Катушки логический Чтение / запись Чтение / запись
Дискретные входы логический Только для чтения Чтение / запись
Регистры временного хранения Слово без знака Чтение / запись Чтение / запись
Входные регистры Слово без знака Только для чтения Чтение / запись

Таблица 1. Блоки модели данных Modbus

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

Блоки полностью концептуальные. Они могут существовать как отдельные адреса памяти в данной системе, но они также могут перекрываться. Например, первая катушка может находиться в том же месте в памяти, что и первый бит слова, представленного регистром хранения один.Схема адресации полностью определяется ведомым устройством, и его интерпретация каждого блока памяти является важной частью модели данных устройства.

Адресация модели данных

В спецификации определяется, что каждый блок содержит адресное пространство из 65 536 (2 16 ) элементов. В определении PDU Modbus определяет адрес каждого элемента данных в диапазоне от 0 до 65 535. Однако каждый элемент данных пронумерован от 1 до n, где n имеет максимальное значение 65 536.То есть катушка 1 находится в блоке катушек по адресу 0, в то время как регистр хранения 54 находится по адресу 53 в разделе памяти, который ведомое устройство определило как регистры хранения.

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

Диапазоны адресации данных

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

Например, вместо того, чтобы ссылаться на элемент как регистр временного хранения 14 по адресу 13, в руководстве по устройству будет ссылаться на элемент данных по адресу 4,014, 40,014 или 400,014. В каждом случае первое указанное число — 4 для представления регистров временного хранения, а адрес указывается с использованием оставшихся чисел. Разница между 4XXX, 4XXXX и 4XXXXX зависит от адресного пространства, используемого устройством. Если используются все 65 536 регистров, следует использовать нотацию 4XXXXX, поскольку она допускает диапазон от 400 001 до 465 536.Если используется всего несколько регистров, обычно используется диапазон от 4001 до 4999.

В этой схеме адресации каждому типу данных назначается префикс, как показано в таблице 2.

Блок данных Префикс
Катушки 0
Дискретные входы 1
Входные регистры 3
Регистры временного хранения 4

Таблица 2. Префиксы диапазона данных

Катушки существуют с префиксом 0. Это означает, что ссылка 4001 может относиться либо к регистру временного хранения 1, либо к катушке 4001. По этой причине во всех новых реализациях рекомендуется использовать 6-значную адресацию с ведущими нулями и это учитывать. в документации. Таким образом, регистр временного хранения 1 обозначается как 400,001, а катушка 4001 — как 004,001.

Начальные значения адреса данных

Разница между адресами памяти и ссылочными номерами еще больше усложняется индексированием, выбранным данным приложением.Как упоминалось ранее, регистр временного хранения один находится по адресу ноль. Обычно ссылочные номера имеют единичный индекс, что означает, что начальное значение данного диапазона равно единице. Таким образом, 400 001 переводится буквально в регистр временного хранения 00001, который находится по адресу 0. Некоторые реализации предпочитают начинать свои диапазоны с нуля, что означает, что 400 000 транслируются в регистр временного хранения по нулевому адресу. Таблица 3 демонстрирует эту концепцию.

Адрес Регистрационный номер Номер (1-индексный, стандартный) Число (0-индексация, альтернатива)
0 1 400001 400000
1 2 400002 400001
2 3 400003 400002

Таблица 3. Схемы индексирования регистров

Диапазоны с одним индексом широко распространены и настоятельно рекомендуются. В любом случае начальное значение для каждого диапазона должно быть указано в документации.

Типы больших данных

Стандарт Modbus предоставляет относительно упрощенную модель данных, которая не включает дополнительные типы данных, кроме беззнакового слова и битового значения. Хотя этого достаточно для некоторых систем, где значения битов соответствуют соленоидам и реле, а значения слов соответствуют немасштабированным значениям АЦП, этого недостаточно для более продвинутых систем.В результате многие реализации Modbus включают типы данных, которые пересекают границы регистров. Модуль регистрации данных и диспетчерского управления (DSC) NI LabVIEW и KEPServerEX определяют несколько типов ссылок. Например, строки, хранящиеся в регистре временного хранения, имеют стандартную форму (400 001), но за ними следуют десятичное число, длина и порядок байтов строки (400 001,2H, двухсимвольная строка в регистре временного хранения 1, где старший байт соответствует к первому символу строки).Это необходимо, потому что каждый запрос имеет конечный размер, и поэтому ведущее устройство Modbus должно знать точные границы строки, а не искать длину или разделитель, например NULL.

Битовый доступ

В дополнение к разрешению доступа к данным, которые пересекают границу регистра, некоторые ведущие устройства Modbus поддерживают ссылки на отдельные биты в регистре. Это полезно, так как позволяет устройствам объединять данные каждого типа в одном диапазоне памяти без необходимости разделять двоичные данные на диапазоны катушки и дискретного ввода.Обычно это указывается с помощью десятичной точки и битового индекса или числа, в зависимости от реализации. То есть первый бит в первом регистре может быть 400 001,00 или 400 001,01. Рекомендуется в любой документации указывать используемую схему индексации.

Порядок байтов в данных

Данные из нескольких регистров, такие как значение с плавающей запятой одинарной точности, могут быть легко переданы в Modbus путем разделения данных по двум регистрам. Поскольку это не определено стандартом, порядок следования байтов (или порядок байтов) этого разбиения не определен.Хотя каждое беззнаковое слово должно быть отправлено в сетевом порядке байтов (с прямым порядком байтов), чтобы соответствовать стандарту, многие устройства меняют порядок байтов для многобайтовых данных. На рисунке 2 показан необычный, но действенный пример этого.

Рисунок 2. Замена порядка байтов для данных из нескольких слов

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

Струны

Строки можно легко сохранить в регистрах Modbus. Для простоты в некоторых реализациях требуется, чтобы длина строки была кратной двум, а любое дополнительное пространство заполнялось нулевыми значениями. Порядок байтов также является переменной при взаимодействии строк. Формат строки может включать или не включать NULL в качестве окончательного значения. В качестве примера этой изменчивости некоторые устройства могут хранить данные, как показано на рисунке 3.

Рисунок 3. Изменение порядка байтов в строках Modbus

Общие сведения о кодах функций

В отличие от модели данных, которая может значительно отличаться от устройства к устройству, коды функций и их данные явно определены стандартом. Каждая функция следует шаблону. Сначала ведомое устройство проверяет такие входные данные, как код функции, адрес данных и диапазон данных. Затем он выполняет запрошенное действие и отправляет ответ, соответствующий коду.Если какой-либо шаг в этом процессе завершается неудачно, запрашивающей стороне возвращается исключение. Транспортом данных для этих запросов является PDU.

PDU Modbus

PDU состоит из однобайтового кода функции, за которым следуют до 252 байтов данных, специфичных для функции.

Рис. 4. Modbus PDU

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

Поскольку размер пакета ограничен 253 байтами, устройства ограничены объемом данных, которые могут быть переданы. Наиболее распространенные функциональные коды могут передавать от 240 до 250 байтов фактических данных из подчиненной модели данных, в зависимости от кода.

Выполнение подчиненной функции

Согласно определению модели данных, различные функции определены для доступа к различным концептуальным блокам данных.Обычная реализация заключается в том, чтобы коды обращались к ячейкам статической памяти, но доступны и другие варианты поведения. Например, код функции 1 (считывание катушек) и 3 (считывание регистров временного хранения) может иметь доступ к одному и тому же физическому месту в памяти. Напротив, функциональный код 3 (чтение регистров хранения) и 16 (запись регистров хранения) может обращаться к совершенно разным местам в памяти. Таким образом, выполнение кода каждой функции лучше всего рассматривать как часть определения подчиненной модели данных.

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

Рисунок 5. Чтение диаграммы состояний катушек из спецификации протокола Modbus

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

Хотя диапазоны статических адресов показаны на диаграмме состояний выше, потребности реальных систем могут привести к тому, что они будут несколько отличаться от определенных чисел.В некоторых случаях ведомые устройства не могут передать максимальное количество байтов, определенное протоколом. То есть, вместо того, чтобы позволить мастеру запрашивать входы 0x07D0, он может ответить только с помощью 0x0400. Точно так же модель данных ведомого устройства может определять диапазон допустимых значений катушки как адрес от 0 до 500. Если ведущее устройство делает запрос на 125, начиная с адреса 0, это нормально, но если ведущее устройство делает тот же запрос, начиная с адреса 400, последняя катушка будет по адресу 525, который находится вне диапазона для этого устройства и приведет к исключению 02, как определено диаграммой состояний.

Коды стандартных функций

Определение каждого стандартного кода функции находится в спецификации. Даже для наиболее распространенных кодов функций неизбежны несоответствия между функциями, включенными на ведущем устройстве, и тем, что ведомое устройство может обрабатывать. Чтобы решить эту проблему, в ранних версиях спецификации Modbus TCP были определены три класса соответствия. Официальная спецификация испытаний на соответствие Modbus не ссылается на эти классы, а вместо этого определяет соответствие для каждой функции; однако они могут быть удобны для понимания.Рекомендуется, чтобы любая документация соответствовала спецификации тестов и определяла их соответствие кодам, которые они поддерживают, а не устаревшим классификациям.

Класс 0 Коды
Коды

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

Код Описание
3 Чтение нескольких регистров
16 Запись нескольких регистров

Таблица 4. Класс соответствия 0 Коды

Коды класса 1

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

Код Описание
1 Катушки чтения
2 Чтение дискретных входов
4 Чтение входных регистров
5 Запись одиночной катушки
6 Запись одиночного регистра
7 Чтение статуса исключения (только серийный номер)

Таблица 5. Коды класса соответствия 1

Коды класса 2

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

Код Описание
15 Запись нескольких катушек
20 Чтение записи файла
21 Запись файла записи
22 Регистр записи маски
23 Чтение / запись нескольких регистров
24 Чтение FIFO

Таблица 6. Коды класса соответствия 2

Инкапсулированный интерфейс Modbus

Код инкапсулированного интерфейса Modbus (MEI), функция 43, используется для инкапсуляции других данных в пакете Modbus. В настоящее время доступны два номера MEI: 13 (CANopen) и 14 (идентификация устройства).

Функция 43/14 (Идентификация устройства) полезна тем, что позволяет передавать до 256 уникальных объектов. Некоторые из этих объектов предопределены и зарезервированы, например, название поставщика и код продукта, но приложения могут определять другие объекты для передачи как общие наборы данных.

Этот код обычно не реализуется.

Исключения

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

Исключения сообщаются в определенном формате пакета.Во-первых, запрашивающему мастеру возвращается код функции, равный исходному коду функции, за исключением того, что у него установлен самый старший бит. Это эквивалентно добавлению 0x80 к значению исходного кода функции. Вместо обычных данных, связанных с заданным ответом функции, ответы на исключения включают в себя один код исключения.

В рамках стандарта четыре наиболее распространенных кода исключения — это 01, 02, 03 и 04. Они показаны в таблице 7 со стандартными значениями для каждой функции.

Код исключения Значение
01 Полученный код функции не поддерживается. Чтобы подтвердить исходный код функции, вычтите 0x80 из возвращенного значения.
02 Запрос попытался получить доступ к недопустимому адресу. В стандарте это может произойти только в том случае, если начальный адрес и запрошенное количество значений превышает 2 16 .Однако некоторые устройства могут ограничивать это адресное пространство в своей модели данных.
03 Запрос содержит неверные данные. В некоторых случаях это означает несоответствие параметров, например, между количеством отправленных регистров и полем «счетчик байтов». Чаще всего ведущее устройство запрашивает больше данных, чем позволяет ведомое устройство или протокол. Например, ведущее устройство может одновременно читать только 125 регистров временного хранения, а устройства с ограниченными ресурсами могут ограничивать это значение еще меньшим количеством регистров.
04 Произошла неустранимая ошибка при попытке обработать запрос. Это общий код исключения, который указывает, что запрос действителен, но ведомое устройство не может его выполнить.

Таблица 7. Общие коды исключений Modbus

Диаграмма состояний для каждого кода функции должна охватывать как минимум код исключения 01 и обычно включает коды исключения 04, 02, 03, и любые другие определенные коды исключений являются необязательными.

Введение в Modbus с использованием LabVIEW

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

Вводный пример Modbus

Первый пример, Modbus Library.lvproj , дает базовый обзор функциональности API. Он также демонстрирует различия между реализацией на ПК и целью в реальном времени. На рисунке 3 показан код, использованный в примере ведущего устройства Modbus в реальном времени.

Рисунок 3. Мастер на RT Target.vi

Этот пример демонстрирует основные требования приложения Modbus с использованием LabVIEW API.Сначала создается экземпляр Modbus. В данном случае мастер TCP. Однако вы можете переключить этот пример на серийный мастер, изменив селектор полиморфных экземпляров.

Рисунок 4. Изменение типа ведущего устройства Modbus

Когда экземпляр будет создан, вы можете начать опрос данных на ведомом устройстве. В примере показано использование кода функции Чтение входных регистров . Все коды функций Modbus, поддерживаемые API, показаны на соответствующей палитре.Из-за реализации протокола у ведомого API есть дополнительные функции, которые ведущий не может реализовать. Например, ведомое устройство может записывать данные в диапазон входных регистров, в то время как ведущее устройство может читать только из этого диапазона. На рисунке 5 показаны коды функций.

Рисунок 5. Палитры Modbus Master и Slave с функциональными кодами

Наконец, экземпляр Modbus закрывается, освобождая память, связанную с экземпляром. Это также закрывает все ссылки, включая TCP-соединение или последовательные ссылки NI-VISA, используемые экземпляром.

До сих пор обсуждался только главный пример; однако каждый пример следует той же базовой схеме, знакомой большинству пользователей LabVIEW: открытие, чтение / запись и закрытие.

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

Пример резервного главного устройства

Для некоторых приложений может хватить базового примера; однако этого может быть недостаточно для сложных приложений, где целью является взаимодействие с датчиком или шлюзом.Чтобы восполнить этот пробел, в примере приложения показано, как использовать два ведущего устройства для связи с данным ведомым устройством. Если один из мастеров выходит из строя и теряет соединение с подчиненным или человеко-машинным интерфейсом (HMI), другой мастер берет на себя ответственность.

Рис. 6. Пример создания избыточного главного устройства

Если эта конструкция соответствует потребностям вашего приложения или если вас интересует более сложный пример связи Modbus, просмотрите Redundant Modbus Masters.lvproj в поисковике примеров.

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *