Как прочитать 64-битное значение по modbus ?

Модераторы: kiv, 8bit, VanMo

Как прочитать 64-битное значение по modbus ?

Сообщение 8bit » 25 фев 2021, 16:06

в серии cMT доступны 64-битные форматы чисел (c некоторыми ограничениями, см. примечание).

Для считвания переменной такого формата с устройство по протоколу modbus достаточно указать такой формат числа и соотвествующие регистры подрят будут автоматически считаны и "склеены" в число.

cMT_modbus_double_03.png
cMT_modbus_double_03.png (11.78 КБ) Просмотров: 3842


cMT_modbus_double_04.png
cMT_modbus_double_04.png (11.21 КБ) Просмотров: 3842


cMT_modbus_double_01.png
cMT_modbus_double_01.png (9.3 КБ) Просмотров: 3842


cMT_modbus_double_02.png
cMT_modbus_double_02.png (8.27 КБ) Просмотров: 3842


cMT_modbus_double_05.png
cMT_modbus_double_05.png (15.46 КБ) Просмотров: 3842


Примечание:

> Допустимый диапазон входных значений (объекты ЧИСЛО, ВВЕСТИ_СЛОВО и т.д.)
1) uint64: от 0 до 2^48
2) int64: от -2^48 до 2^48
3) double: от -2^48 до 2^48

> int64 / uint64
Double - это внутренний тип данных, используемый в вычислениях, при этом мантисса хранится с 52-битной точностью. В результате 15-значные целые числа и часть 16-значных целых чисел могут быть сохранены точно, но сохранение чисел, превышающих это, может привести к потере точности.
В EasyBuilder Pro входные значения, превышающие 48 бит, могут привести к ошибке, поэтому предел ввода определен как 48-битный.

> double
В EasyBuilder Pro верхний/нижний предел для ввода ранее определялся максимальным/минимальным значением double (+/-1,79*10^308), что практически безгранично. Для единообразия верхний/нижний предел ввода также определяется от -2^48 до 2^48.

Пример:
Значение
144'115'188'075'855'872 (64-битное беззнаковое) читаемое с ПЛК может быть отображено как
144'115'188'075'855'870 в объекте ЧИСЛО/Numeric с потерей точности.

Прочие обстоятельства:
Как показано в примере выше, подобная проблема может произойти при использовании импорте Рецептов/SQL запроса/Базы_данных (Выборка данных), где находятся данные из сторонних источников.

Обратите внимание, что для числа double как числа с плавающей запятой присуще проблема точности. Не следует думать, что все числа в диапазоне от 2^48 до -2^48 будут гарантировано отображаться точно.
Приведенные выше пояснения относятся только к использованию int64/uint64.
Хороший вопрос содержит половину ответа - A good question contains half the answer
Аватара пользователя
8bit
 
Сообщения: 1179
Зарегистрирован: 20 апр 2020, 19:07

Вернуться в Как это сделать ? ( How to...?)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2