Здравствуйте.
Надеюсь задаю вопрос в подходящей ветке форума. Занимаюсь автоматизацией совсем недавно, поэтому извиняюсь за некорректные формулировки.
Суть проблемы: делаю HMI на базе СПК107 в codesys. Ряд устройств подключены по протоколу RS485. С датчиком влажности ПВТ100 проблем не возникло, все читается и отображается штатно. Но при считывании данных с ТРМ10 (USB, ТРМ10-Щ5.У3.РТ.RS) возникли нестыковки. Связь СПК107 и ТРМ10 есть, идет прием данных. Проблема в типе данных от ТРМ10 - FLOAT, а, как я понял, в codesys такой тип переменных не поддерживается. В разделе "соотнесение входов/выходов устройства modbus" автоматически проставляется тип word. И вроде как даже в таком формате удалось считать данные: в разделе "канал modbus slave" поставил под нужным номером регистра длину 2.
В итоге - на входе (например значения температуры с подключенного к ТРМ10 термопреобразователя сопротивления) имеется следующая картина:
1) Из документации к ТРМ10 я беру адрес регистра:
1.png
2) В настройках канала modbus slave ставлю длину 2 (с длиной 1 данные не считываются):
2.png
3) Во время работы ТРМ10 имеется такая картина:
3.png
С основного регистра 0х1009 приходит значение 1 - цифра, которая меняется раз в 3-4 секунды на, как мне кажется, случайное значение без очевидной закономерности.
С подрегистра 0х100А приходит значение 2 - оно прямо коррелируется со значением температуры на дисплее ТРМ10. При изменении температуры на десятую долю градуса оно изменяется на 1 (27.1 = 16856, 27.2 = 16857 и т.д.).
Подскажите пожалуйста, нигде ли я не ошибся в настройках и возможно ли считать значение float с ТРМ10 в среде codesys более простым путем? Если нет, то как в codesys соотнести входящие значения регистра 0х100А со значениями температуры для вывода на экран СПК107?


Ответить с цитированием
