Записки программиста Программирование и не только

31Окт/120

[Modbus] Функции 20-24

  • 20 (14 Hex) Read General Reference
  • 21 (15 Hex) Write general reference
  • 22 (16 Hex) Mask Write 4X Register
  • 23 (17 Hex) Read/Write 4X Registers
  • 24 (18 Hex) Read FIFO Queue

20 (14 Hex) Read General Reference

ОПИСАНИЕ
Возвращает содержание регистров файла расширенной памяти (6ХХХХ). Широкое вещание не поддерживается.

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

ЗАПРОС
Запрос специфицирует группу или группы для чтения. Каждая группа определяется в поле «суб-запроса» которое содержит 7 байт:
- Тип ссылки : 1 байт (должен быть специфицирован как 6)
- Номер файла расширенной памяти: 2 байта (от 1 до 10)
- Начальный адрес регистра внутри файла: 2 байта
- Количество регистров для чтения: 2 байта.

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

Доступное количество файлов расширенной памяти зависит от установленного размера расширенной памяти в подчиненном контроллере. Каждый файл, исключая последний, содержит 10000 регистров, адресуемых как 0000-270F Hex (0000-9999).

Для контроллеров кроме 984-785:

Размер расш. памяти Кол-во файлов Остаточные регистры
16К 2 6383
32К 4 2767
64К 7 5535
96К 10 8303

Для контроллеров 984-785:

984-785 с картриджем AS-M785-032:

Польз. Статич.логика ОЗУ Размер расш. пам. Кол. файлов Ост. рег.
32К 32К 0 0 0
16К 64К 72К 8 3727

984-785 c картриджем AS-M785-048:

Польз. Статич.логика ОЗУ Размер расш. пам. Кол. файлов Ост. рег.
48К 32К 24К 3 4575
32К 64К 96К 10 8303

Пример чтения двух групп с подчиненного устройства 17 показан ниже.

Группа 1 состоит из двух регистров из файла 4, начиная с регистра 2 (адрес 0001).
Группа 2 состоит из двух регистров из файла 3, начиная с регистра 10 (адрес 0009).

Запрос

Имя поля Пример(Hex)
Адрес подчиненного 11
Функция 14
Счетчик байт 0E
Суб-запрос 1, Тип ссылки 06
Суб-запрос 1, Номер файла ст. 00
Суб-запрос 1, Номер файла мл. 04
Суб-запрос 1, Стартовый адрес ст. 00
Суб-запрос 1, Стартовый адрес мл. 01
Суб-запрос 1, Кол-во регистров ст. 00
Суб-запрос 1, кол-во регистров мл. 02
Суб-запрос 2, тип ссылки 06
Суб-запрос 2, Номер файла ст. 00
Суб-запрос 2, Номер файла мл. 03
Суб-запрос 2, Стартовый адрес ст. 00
Суб-запрос 2, Стартовый адрес мл. 09
Суб-запрос 2, Кол-во регистров ст. 00
Суб-запрос 2, кол-во регистров мл. 02
Контрольная сумма (CRC или LRC)

ОТВЕТ
Нормальный ответ состоит из серии суб-ответов, один на каждый суб-запрос.

Имя поля Пример(Hex)
Адрес подчиненного 11
Функция 14
Счетчик байт 0C
Суб-ответ 1, Счетчик байт 05
Суб-ответ 1, Тип ссылки 06
Суб-ответ 1, Данные регистра ст. 0D
Суб-ответ 1, Данные регистра мл. FE
Суб-ответ 1, Данные регистра ст. 00
Суб-ответ 1, Данные регистра мл. 20
Суб-ответ 2, Счетчик байт 05
Суб-ответ 2, Тип ссылки 06
Суб-ответ 2, Данные регистра ст. 33
Суб-ответ 2, Данные регистра мл. CD
Суб-ответ 2, Данные регистра ст. 00
Суб-ответ 2, Данные регистра мл. 40
Контрольная сумма (CRC или LRC)

21 (15 Hex) Write general reference

Описание
Запись содержимого регистров в файл расширенной память (6ХХХХ).

ЗАПРОС
Запрос специфицирует группу или группы для записи, и данные которые содержатся в них.

Запрос специфицирует группу или группы для чтения. Каждая группа определяется в поле «суб-запроса» которое содержит 7 байт:
- Тип ссылки : 1 байт (должен быть специфицирован как 6)
- Номер файла расширенной памяти: 2 байта (от 1 до 10)
- Начальный адрес регистра внутри файла: 2 байта
- Количество регистров для чтения: 2 байта.

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

Доступное количество файлов расширенной памяти зависит от установленного размера расширенной памяти в подчиненном контроллере. Каждый файл, исключая последний, содержит 10000 регистров, адресуемых как 0000-270F Hex (0000-9999).

Для контроллеров кроме 984-785:

Размер расш. памяти Кол-во файлов Остаточные регистры
16К 2 6383
32К 4 2767
64К 7 5535
96К 10 8303

Для контроллеров 984-785:

984-785 с картриджем AS-M785-032:

Польз. Статич.логика ОЗУ Размер расш. пам. Кол. файлов Ост. рег.
32К 32К 0 0 0
16К 64К 72К 8 3727

984-785 c картриджем AS-M785-048:

Польз. Статич.логика ОЗУ Размер расш. пам. Кол. файлов Ост. рег.
48К 32К 24К 3 4575
32К 64К 96К 10 8303

Пример запроса и ответа приведен ниже.

В данном примере требуется записать одну группу в подчиненное устройство 17.

Группа состоит из трех регистров в файле 4, начиная с регистра 8 (адрес 0007).

Запрос

Имя поля Пример(Hex)
Адрес подчиненного 11
Функция 15
Счетчик байт 0D
Суб-запрос 1, тип ссылки 06
Суб-запрос 1, Номер файла ст. 00
Суб-запрос 1, Номер файла мл. 04
Суб-запрос 1, Начальный адрес ст. 00
Суб-запрос 1, Начальный адрес мл. 07
Суб-запрос 1, Кол-во регистров ст. 00
Суб-запрос 1, Кол-во регистров мл. 03
Суб-запрос 1, Данные регистра ст. 06
Суб-запрос 1, Данные регистра мл. AF
Суб-запрос 1, Данные регистра ст. 04
Суб-запрос 1, Данные регистра мл. BE
Суб-запрос 1, Данные регистра ст. 10
Суб-запрос 1, Данные регистра мл. 0D
Контрольная сумма (CRC или LRC)

Ответ
Нормальный ответ повторяет запрос.

Имя поля Пример(Hex)
Адрес подчиненного 11
Функция 15
Счетчик байт 0D
Суб-ответ 1, тип ссылки 06
Суб-ответ 1, Номер файла ст. 00
Суб-ответ 1, Номер файла мл. 04
Суб-ответ 1, Начальный адрес ст. 00
Суб-ответ 1, Начальный адрес мл. 07
Суб-ответ 1, Кол-во регистров ст. 00
Суб-ответ 1, Кол-во регистров мл. 03
Суб-ответ 1, Данные регистра ст. 06
Суб-ответ 1, Данные регистра мл. AF
Суб-ответ 1, Данные регистра ст. 04
Суб-ответ 1, Данные регистра мл. BE
Суб-ответ 1, Данные регистра ст. 10
Суб-ответ 1, Данные регистра мл. 0D
Контрольная сумма (CRC или LRC)

22 (16 Hex) Mask Write 4X Register

ОПИСАНИЕ
Модифицирует содержание регистров 4ХХХХ используя комбинацию OR-маску, AND-маску и текущего содержимого регистра. Функция может использоваться для установки или сброса отдельного бита в регистре.

Функция поддерживается только 984-785 контроллерами.

ЗАПРОС
Алгоритм функции следующий:

Результат=(Текущ. знач. AND Маска_И) OR (Маска_ИЛИ AND ~Маска_И)

Например:

Hex Двоичное
Текущее значение 12 0001 0010
Маска_И F2 1111 0010
Маска_ИЛИ 25 0010 0101
~Маска_И 0D 0000 1101
Результат 17 0001 0111

Пример записи с маской в регистр 5 в подчиненное устройство 17, с приведенной выше маской описан ниже.

Запрос

Имя поля Пример (Hex)
Адрес подчиненного 11
Функция 16
Адрес ссылки ст. 00
Адрес ссылки мл. 04
Маска_И ст. 00
Маска_И мл. F2
Маска_ИЛИ ст. 00
Маска_ИЛИ мл. 25
Контрольная сумма

ОТВЕТ
Нормальный ответ повторяет запрос. Ответ возвращается после записи в регистр.

Ответ

Имя поля Пример (Hex)
Адрес подчиненного 11
Функция 16
Адрес ссылки ст. 00
Адрес ссылки мл. 04
Маска_И ст. 00
Маска_И мл. F2
Маска_ИЛИ ст. 00
Маска_ИЛИ мл. 25
Контрольная сумма

23 (17 Hex) Read/Write 4X Registers

ОПИСАНИЕ
Производит операцию чтения и записи за одну MODBUS транзакцию. Функция может записывать новое содержание регистров 4ХХХХ и возвращать содержание другой группы регистров 4ХХХХ. Эта функция поддерживается только на 984-785 контроллерах.

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

В примере, приведенном ниже требуется прочитать шесть регистров начиная с пятого, и записать три регистра начиная с 16, в подчиненном устройстве 17:

Запрос

Имя поля Пример(Hex)
Адрес подчиненного 11
Функция 17
Начальный регистр чтения ст. 00
Начальный регистр чтения мл. 04
Кол-во регистров для чтения ст. 00
Кол-во регистров для чтения мл. 06
Начальный регистр записи ст. 00
Начальный регистр записи мл. 0F
Кол-во регистров для записи ст. 00
Кол-во регистров для записи мл. 03
Счетчик байтов 06
Данные для записи 1 ст. 00
Данные для записи 1 мл. FF
Данные для записи 2 ст. 00
Данные для записи 2 мл. FF
Данные для записи 3 ст. 00
Данные для записи 3 мл. FF
Контрольная сумма (CRC или LRC)

ОТВЕТ
Нормальный ответ содержит данные прочитанных регистров.

Ответ

Имя поля Пример(Hex)
Адрес подчиненного 11
Функция 17
Счетчик байт 0C
Считанные данные 1 ст. 00
Считанные данные 1 мл. FE
Считанные данные 2 ст. 0A
Считанные данные 2 мл. CD
Считанные данные 3 ст. 00
Считанные данные 3 мл. 01
Считанные данные 4 ст. 00
Считанные данные 4 мл. 03
Считанные данные 5 ст. 00
Считанные данные 5 мл. 0D
Считанные данные 6 ст. 00
Считанные данные 6 мл. FF
Контрольная сумма (CRC или LRC)

24 (18 Hex) Read FIFO Queue

ОПИСАНИЕ
Чтение содержимого очереди FIFO (регистры 4ХХХХ). Функция возвращает счетчик регистров в очереди, следом идут данные очереди. До 32 регистров могут быть считаны: счетчик, плюс 31 регистр данных очереди.

Функция читает содержимое очереди, но не очищает ее.

Функция поддерживается только на 984-785 контроллерах.

ЗАПРОС
Запрос специфицирует начальный регистр 4ХХХХ для чтения FIFO очереди. Это адрес регистра указателя использующегося в функциональных блоках FIN и FOUT контроллеров.

Ниже показан пример чтения FIFO очереди с подчиненного устройства 17. Чтение очереди начинается с регистра указателя 41247 (04DE Hex).

Запрос

Имя поля Пример(Hex)
Адрес подчиненного 11
Функция 18
Адрес указателя FIFO ст. 04
Адрес указателя FIFO мл. DE
Контрольная сумма (CRC или LRC)

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

Счетчик байтов очереди содержит количество регистров данных в очереди (не включая счетчик).

Если счетчик очереди содержит число больше 31, то в ответе возвращается код ошибки 03 (Недопустимая величина данных).

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

Ответ

Имя поля Пример(Hex)
Адрес подчиненного 11
Функция 18
Счетчик байт ст. 00
Счетчик байт мл. 08
Счетчик FIFO ст. 00
Счетчик FIFO мл. 03
Регистр данных FIFO 1 ст. 01
Регистр данных FIFO 1 мл. B8
Регистр данных FIFO 2 ст. 12
Регистр данных FIFO 2 мл. 84
Регистр данных FIFO 3 ст. 13
Регистр данных FIFO 3 мл. 22
Контрольная сумма (CRC или LRC)
Комментарии (0) Пинги (0)

Пока нет комментариев.


Leave a comment

Нет обратных ссылок на эту запись.