ModBus: типы данных

Тип данных

Описание

INT16

Целое число в диапазоне от –32768 до 32767
Фактически используемый для точки данных диапазон целых чисел может отличаться

UINT16

Целое число без знака в диапазоне от 0 до 65535
Фактически используемый для точки данных диапазон целых чисел может отличаться

ENUM

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

BOOL

Булево значение — это параметр с двумя точными положениями (0 — ложь/false и 1 — истина/true). Обычно все значения больше нуля считаются true.

BITMAP*

Это свод 16 булевых значений (биты). Значения индексируются от 0 до 15. Число, которое необходимо считать в реестре или записать в реестр, получается в результате суммы всех битов и значения 1, умноженного на 2 в степени их индекса.

  • Бит 0: 20 = 1
  • Бит 1: 21 = 2
  • Бит 2: 22 = 4
  • Бит 3: 23 = 8
  • Бит 4: 24 = 16
  • Бит 5: 25 = 32
  • Бит 6: 26 = 64
  • Бит 7: 27 = 128
  • Бит 8: 28 = 256
  • Бит 9: 29 = 512
  • Бит 10: 210 = 1024
  • Бит 11: 211 = 2048
  • Бит 12: 212 = 4096
  • Бит 13: 213 = 8192
  • Бит 14: 214 = 16384
  • Бит 15: 215 = 32768

BITMAP32

Это свод 32 булевых значений (биты). Для подробностей по расчету см. «Битовый массив»

* Пример для пояснения
Бит 3, 6, 8, 15 равен 1, все остальные — 0. Тогда сумма составляет 23 + 26 + 28 + 215 = 8 + 64 + 256 + 32768 = 33096. Возможен также обратный ход. При этом проверяется исходящий бит с максимальным индексом, является ли считанное число больше или равно степени числа 2. Если условие верно, то устанавливается бит 1, и степень числа 2 убирается. После этого проверка бита со следующим минимальным индексом и прямо рассчитанным остаточным числом повторяется, пока не будет достигнут бит 0 или остаточное число не будет равно нулю. Пример для пояснения. Считанное число равно 1416. Бит 15 становится 0, поскольку 1416 < 32768. Биты с 14 по 11 также становятся 0. Бит 10 становится 1, поскольку 1416 > 1024. Остаточное число 1416 – 1024 = 392. Бит 9 становится 0, поскольку 392 < 512. Бит 8 становится 1, поскольку 392 > 256. Остаточное число 392 – 256 = 136. Бит 7 становится 1, поскольку 136 > 128. Остаточное число 136 – 128 = 8. Биты с 6 по 4 становятся 0. Бит 3 становится 1, поскольку 8 = 8. Остаточное число 0. Следовательно, оставшиеся биты с 2 по 0 становятся 0.