Типы MODBUS адресов в EasyBuilder Pro
Протокол MODBUS определяет четыре типа объектов для доступа к данным.
Тип объекта | Тип элемента условный | Тип доступа | Диапазон регистров | Код функции MODBUS (Десятичный + (HEX)) | ||
---|---|---|---|---|---|---|
Чтение | Запись одного регистра | Запись группы регистров | ||||
Регистры флагов (Coils) | DO (бит) |
Чтение и запись | 00001-09999 (0x) | 01 (0x01) | 05 (0x05) | 15 (0x0F) |
Дискретные входы (Discrete Inputs) | DI (бит) |
Чтение | 10001-19999 (1x) | 02 (0x02) | Только чтение | Только чтение |
Регистры ввода (Input Registers) | AI (16-бит слово) |
Чтение | 30001-39999 (3x) | 04 (0x04) | Только чтение | Только чтение |
Регистры хранения (Holding Registers) | AO (16-бит слово) |
Чтение и запись | 40001-49999 (4x) | 03 (0x03) | 06 (0x06) | 16 (0x10) |
Устройства с протоколом MODBUS имеют собственную таблицу/карту адресов. Эта карта предоставляет информацию, необходимую для доступа к данным. Большинство устройств с протоколом MODBUS имеют заранее определенную карту, которую задает производитель. Однако некоторые устройства MODBUS, например, программируемые логические контроллеры или операторские панели, позволяют создавать свои собственные карты.
Для работы с устройствами по протоколу MODBUS необходимо знать следующую информацию:
- Где хранятся данные? (какие типы объектов и адреса/диапазоны адресов);
- Как хранятся данные? (типы данных и порядок байтов, слов).
Поскольку протокол MODBUS не определяет точно, как данные должны храниться в регистрах, то необходимо узнать их формат хранения на подчиненном устройстве. По умолчанию драйвер MODBUS в WEINTEK в качестве порядка сначала использует младший байт/слово/двойное слово.
16-битные данные в формате HEX (0x4E20) | |
---|---|
Младший байт (0x20) | Старший байт (0x4E) |
Младший байт первый
32- битные данные в формате HEX (0xAE41,5652) | |
---|---|
Младшее слово (0x5652) | Старшее слово (0xAE41) |
Младшее слово первое
64- битные данные в формате HEX (0x7048,860F,9180) | |
---|---|
Младшее двойное слово (0x860F,9180) | Старшее двойное слово (0x7048) |
Младшее двойное слово первое
Ниже предоставлена таблица основных существующих адресов в EasyBuilder Pro, которые можно встретить в драйверах MODBUS. Указана возможность чтения или записи, предоставлен соответствующий код функции и его описание.
Адрес | Тип доступа Чтение(Ч)/ Запись(З) |
Код функции MODBUS (Десятичный) | Описание функции |
---|---|---|---|
0x *1 | Ч | 01 | Чтение значений из группы регистров флагов |
З | 05 | Запись значения одного регистра флага | |
0x_multi_coil *2 | Ч | 01 | Чтение значений из группы регистров флагов |
З | 15 | Запись значений в группы регистров флагов | |
1x *1 | Ч | 02 | Чтение значений из группы дискретных выходов |
3x_Bit *1 | Ч | 04 | Чтение бита из регистров ввода |
4x_Bit *1 | Ч | 03 | Чтение бита из регистров хранения |
З | 16 | Запись бита в регистры хранения | |
6x_Bit *1 | Ч | 03 | Чтение бита из регистров хранения |
З | 06 | Запись бита в регистры хранения | |
3x | Ч | 04 | Чтение значений из группы регистров ввода |
3x_Double | Ч | 04 | Чтение значений из группы регистров ввода (32-битные данные) |
3x_QWord *3 | Ч | 04 | Чтение значений из группы регистров ввода (64-битные данные) |
4x | Ч | 03 | Чтение значений из группы регистров хранения |
З | 16 | Запись значений в группы регистров хранения | |
4x_Double | Ч | 03 | Чтение значений из группы регистров хранения (32-битные данные) |
З | 16 | Запись значений в группы регистров хранения (32-битные данные) | |
4x_Qword *3 | Ч | 03 | Чтение значений из группы регистров хранения (64-битные данные) |
З | 16 | Запись значений в группы регистров хранения (64-битные данные) | |
5x *4 | Ч | 03 | Чтение значений из группы регистров хранения |
З | 16 | Запись значений в группы регистров хранения | |
6x *5 | Ч | 03 | Чтение значений из группы регистров хранения |
З | 06 | Запись значения в один регистр хранения |
*1. Драйвер MODBUS считывает группу из 16 бит за один раз. Группы битов: 0–15, 16–31, 32–47, 48–63 и т. д. Все биты в группе должны быть доступны в устройстве для чтения через ЧМИ. В противном случае возникнут ошибки.
Во избежание возможных ошибок используются специальные типы адресов:
Адрес | Чтение(Ч)/ Запись(З) |
Описание |
---|---|---|
0x_single_bit | Ч/З | Чтение за раз одного 0x бита вместо группы из 16 последовательных битов. |
1x_single_bit | Ч | Чтение за раз одного 1x бита вместо группы из 16 последовательных битов. |
0x_single_coil | Ч/З | Чтение/запись группы битов (Доступ к битам 0x на уровне слова). Например, если значение регистра с первым адресом 0x_single_coil-1 равно 15, то значения будут прочтены/записаны для битов от 0x-0 до 0x-3. |
*2. Адрес 0x_multi_coil использует для записи значений в группы регистров флагов, что соответствует 15 коду функции MODBUS. По умолчанию драйвер WEINTEK (адрес 0x) использует код функции 05 для записи значения в один регистр флага.
*3. Адреса 3x_QWord и 4x_QWord поддерживаются только устройствами серии cMT/cMT X.
*4. Адрес 5x использует тот же код функции, что и 4x. Разница заключается в том, что при чтении/записи значений в 32-битные регистры (двойное слово) происходит замена старшего/младшего слова. Например,
Регистр 4x содержит следующие данные:
Адрес | 1 | 2 |
---|---|---|
Данные (16-бит слово) | 0x5678 | 0x1234 |
Данные (двойное 32-бит слово) | 0x12345678 |
Тогда 5x будет содержать:
Адрес | 1 | 2 |
---|---|---|
Данные (16-бит слово) | 0x5678 | 0x1234 |
Данные (двойное 32-бит слово) | 0x56781234 |
*5. Адрес 6x использует для записи значения в один регистр хранения, что соответствует 06 коду функции Modbus. По умолчанию драйвер Weintek (адрес 4x) использует код функции 16 для записи значений в группу регистров хранения, даже если запись выполняется только в один регистр.