PDA

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



АнтоN
25.08.2020, 20:18
Для передачи показаний температуры по модбасу с МВ110-8А на СПК1ХХ использую преобразование 2word_to_real с помощью объединения как в документации. При нагреве температура по месту становится T1, по модбасу отображается примерно T1/2. При перемене местами вордов в переменных, привязанных к регистрам канала МВ110-8А, отображается число, не относящееся к действительности. Попробовал сделать преобразование с применением перестановки байтов, используя 2 объединения как в документации - пока не присвоены между собой байтовые переменные из разных объединений у вордов и байтов первого объединения есть значения текущей температуры (рис.1), после присвоения они переходят в нули (рис.2 и 3). Пробовал менять местами байты в присвоениях, ворды в регистрах канала МВ110-8А - результат без улучшений. Что делаю не так?

Евгений Кислов
25.08.2020, 20:23
Добрый день.
Самый простой вариант решить конкретную описанную задачу - настроить опрос через шаблоны.
https://youtu.be/0m5vbe7z6Ek

АнтоN
25.08.2020, 21:06
Евгений, здравствуйте! С шаблонами понятно, но хочется сделать с преобразованием.

Евгений Кислов
25.08.2020, 21:12
Тогда как минимум стоит указать, какое значение аналогового входа соответствует скриншоту 1.
Около 26 градусов?

АнтоN
25.08.2020, 21:18
Датчик был с стакане с кипятком в другом помещении, но когда делал фото экрана прошло около часа, может 50 градусов С, не определял специально.

АнтоN
25.08.2020, 21:26
С подключениями и настройкой каналов в МВ110-8А всё нормально. Ранее для передачи значений использовалась переменная INT, привязывалась в один регистр модуля, показания соответствовали действительности и совпадали с показаниями штатных датчиков в климатических камерах.

Евгений Кислов
26.08.2020, 06:26
С подключениями и настройкой каналов в МВ110-8А всё нормально. Ранее для передачи значений использовалась переменная INT, привязывалась в один регистр модуля, показания соответствовали действительности и совпадали с показаниями штатных датчиков в климатических камерах.

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

АнтоN
26.08.2020, 19:41
С байтами сегодня разобрался - я неправильно присваивал переменные, нужно было наоборот.
Насчёт измерений: проверил в мастерской на имеющейся аппаратуре СПК110+ТРМ210+ДТС исполнение преобразований и через 2word_to_real и через 2word_to_4bytes-4bytes_to_real - через оба преобразования на СПК приходит ровно то же, что и отображается на ТРМке. Значит дело в МВ110-8А на объекте. К нему я не подключался, так как при записи проекта в СПК1ХХ (на объекте) температура со всех каналов модуля отображалась нормальной, правда при нагреве я не проверял соответствие показаний по месту у камер и на СПК. Как появится возможность доступа к МВ110-8А на объекте - проверю настройку его каналов.
Евгений, благодарю за помощь!

АнтоN
28.08.2020, 19:59
Сегодня получил доступ к модулям МВ110-8А. Всего в проекте, разработанном другим работником до меня в 2014 году, используется 2 таких модуля. В коде программы для первого модуля использовалось преобразование измеренных значений температуры с помощью выражения ch_n:=(in_n*0,01)*3)-50, для второго - ch_n:=in_n*0,01 (см. фото во вложении). И почему то это меня не насторожило, когда я решил заменить эти выражения на преобразование 2word_to_real с помощью объединения))
К первому МВ110-8А подключены через НПТ 8 ДТСХХ4.Exi с НСХ Pt100, ко второму - 6 ДТСХХ4.Exi через барьеры ИСКРА с НСХ Pt100 и 2 ДТС3ХХХ с НСХ Pt1000. В настройках каналов модулей типы датчиков были заданы и НСХ соответствовали паспортным данным датчиков, но границы нижних и верхних пределов измерений были оставлены по умолчанию 0 и 100 соответственно, когда у ДТСХХ4 диапазон измерения -50..+250С, у ДТС3ХХХ -50..+120С. После записи в каналы модулей нужных диапазонов измерений показания на СПК стали соответствовать показаниям штатных датчиков климатических камер.

capzap
28.08.2020, 20:15
Сегодня получил доступ к модулям МВ110-8А. Всего в проекте, разработанном другим работником до меня в 2014 году, используется 2 таких модуля. В коде программы для первого модуля использовалось преобразование измеренных значений температуры с помощью выражения ch_n:=(in_n*0,01)*3)-50, для второго - ch_n:=in_n*0,01 (см. фото во вложении). И почему то это меня не насторожило, когда я решил заменить эти выражения на преобразование 2word_to_real с помощью объединения))
К первому МВ110-8А подключены через НПТ 8 ДТСХХ4.Exi с НСХ Pt100, ко второму - 6 ДТСХХ4.Exi через барьеры ИСКРА с НСХ Pt100 и 2 ДТС3ХХХ с НСХ Pt1000. В настройках каналов модулей типы датчиков были заданы и НСХ соответствовали паспортным данным датчиков, но границы нижних и верхних пределов измерений были оставлены по умолчанию 0 и 100 соответственно, когда у ДТСХХ4 диапазон измерения -50..+250С, у ДТС3ХХХ -50..+120С. После записи в каналы модулей нужных диапазонов измерений показания на СПК стали соответствовать показаниям штатных датчиков климатических камер.

так вроде предшественник тоже самое делал, только он брал целочисленные значения с каждого из кaнaлов, преобразовывал диапазон от 0 до 100 в 300 и потом вычитал 50, чтоб получить интерполированные -50...250.