PDA

Просмотр полной версии : Передача FLOAT на СМИ2



Ефремов Николай
11.11.2019, 17:17
Мастером сети у меня СП310 (протокол MB RTU) - подчиненные 2 ПР200, МВ110 8А, МУ11016Р и СМИ2. Все работают нормально, но передать значение в СМИ ни как не могу- что-то делаю не так. Мне необходимо передать значение давления на СМИ2, которое измеряется одним из ПР200 и отображается на панеле СП310. При конфигурации СМИ2 записал все сетевые уставки и то, что будет передаваться значение FLOAT. В СМИ2 посылается только значение давления в формате FLOAT. В результате на СМИ2 я получаю, то 0.0, то dthh, то dtLL, а иногда и значение не совпадающее с посылаемым значением или отрицательное. То что вся система не виснет, говорит о том что СМИ2 получает и отвечает на посылки, но почему отображается что попало. Порядок слов менял, посылаю 2 регистра с начальным адресом 27. Может надо 2 в 17 адрес постоянно посылать?

Евгений Кислов
11.11.2019, 20:01
Добрый день.

Каким образом вы передаете значение из СП310 в СМИ2?
Каким образом вы меняли порядок регистров?

Ефремов Николай
25.11.2019, 09:02
Использую протокол Modbus RTU, витой парой по RS-485 происходит обмен.
Для изменения порядка регистров написал макрос меняющий порядок по значению бита, то есть я могу передавать FLOAT в порядке 1 и 2 регистр либо 2 и 1.
Всю эту чехарду с порядком регистров мне пришлось делать для всех входящих в систему модулей, так как значения уставок передаются на ПР200, а измеряемые значения с них (ПР200 и МВ110.8А) считываются. Всё это работает нормально уже почти год, но Заказчик попросил вывести давление к месту управления насосом, для того, чтобы аппаратчик мог видеть идёт или нет перекачка продукта ( на щитовой этот параметр видят на экране СП310).
Скорость обмена 115200, адреса: СМИ2-6; ПР200 №1 -8; ПР200 №2 16; МВ110.8А-24.

Серёга Букашкин
25.11.2019, 16:16
В результате на СМИ2 я получаю, то 0.0, то dthh, то dtLL, а иногда и значение не совпадающее с посылаемым значением или отрицательное. То что вся система не виснет, говорит о том что СМИ2 получает и отвечает на посылки, но почему отображается что попало. Порядок слов менял, посылаю 2 регистра с начальным адресом 27. Может надо 2 в 17 адрес постоянно посылать?
У меня так было когда порядок регистров неправильный. Сделал старшим регистром вперёд,и младшим байтом вперед, и стало нормально. Посылаю с ПР200 значение флоат раз в 5с и константу "2" один раз в минуту.

Сергей0308
25.11.2019, 18:25
Почему бы в INT(UINT)-е не передать, в 2 раза меньше места занимает и проблем никаких!

Сергей0308
26.11.2019, 02:04
Кабы инт мог всегда заменить float, так нет. А ещё в СМИ2 огорчило, что ничего нельзя поменять в настройках сети оперативно (адрес сетевой и положение десятичной точки- очень надо). В СМИ1 параметры сети можно было редактировать собственными кнопочками. И непонятно почему положение точки задается настройкой если в формате флоат оно передается (в СМИ1 тоже так).

Что Вам не понятно: почему в целочисленном формате нельзя передать положение запятой? Потому что в целочисленном формате не бывает запятой, в принципе! Об этом говорит даже название формата!

Валенок
26.11.2019, 02:05
что значит нельзя оперативно? из программы - в любой момент что угодно.

Серёга Букашкин
26.11.2019, 02:29
Оперативно это когда ничего не надо кроме пальца. Или для замены без смены прошивки.
Про инт не по теме..., интересно нам только про float.

Сергей0308
26.11.2019, 02:39
Оперативно это когда ничего не надо кроме пальца. Или для замены без смены прошивки.
Про инт не по теме..., интересно нам только про float.

Тогда пишите яснее, если Вы считаете, что в формате флоат, положение запятой задаётся какими-то настройками, а не значением переменной, то это ваши фантазии, это тоже никому не интересно!

Евгений Кислов
26.11.2019, 06:30
Для индикации с ограниченным количеством знакомест часто удобнее режим автосмещения точки, а его нет. Только жесткое указание позиции. При переходе к другой размерности возникает несоответствие в индикации и требуется точку сместить, и перепрошивать настройки, что неудобно. У СМИ2 нельзя даже адрес поменять без спецсредств конфигурации, хотя на корпусе 3 кнопки. На СМИ1 это можно было сделать. На практике мучает индикация давления, одно и то же надо показывать то в кг/см2, то в кПа, то в мм.в.ст. Положение точки в индикации разное. В общем нет режима "авто", в этом проблема.

Добрый день.
Вы не могли бы более подробно описать, как должен работать режим "авто"?

Ефремов Николай
26.11.2019, 06:36
У меня так было когда порядок регистров неправильный. Сделал старшим регистром вперёд,и младшим байтом вперед, и стало нормально. Посылаю с ПР200 значение флоат раз в 5с и константу "2" один раз в минуту.

Константа 2 это в 17 регистр СМИ2 для подтверждения, что передаётся Float?
Так как ПР200 работает и с другими участниками сети перетасовка байтов не желательна.
Благодарю за совет.

Ефремов Николай
26.11.2019, 06:41
Почему бы в INT(UINT)-е не передать, в 2 раза меньше места занимает и проблем никаких!

Ёще проще каждые пять секунд посылать гонца из щитовой - совсем не занимает места! (шутка)

Ефремов Николай
28.11.2019, 14:44
Добрый день.

Каким образом вы передаете значение из СП310 в СМИ2?
Каким образом вы меняли порядок регистров?

Действительно, как Вы указали на ошибку в определении переменной, сегодня исправил, изменил порядок и все заработало.
Спасибо.

Сергей0308
01.07.2020, 21:35
после прочел в руководстве: "Отображение на индикаторе принятой информации для переменных типа Int и Word
(DATA=0 и DATA=1) осуществляется с учетом заданного пользователем количества десятичных
знаков (параметр dP). Значение параметра dP определяет точность отображения переменной
на индикаторе и масштабирует ее значения путем умножения на масштабирующий
коэффициент в соответствии с таблицей 5.1.
Значение параметра dP Индикация Коэффициент
0 −−−− 1
1 −−−.− 10-1
2 −−.−− 10-2
3 −.−−− 10-3"
вроде противоречие, не так объяснено или сам не пойму.
так точка у int устанавливается или нет? Знающие объясните пожалуйста.
сми2 еще не привезли, ранее не работал, пока проверить не могу. имеется переменная float, необходимо отобразить целую часть с округлением. Как понял если исходить из объяснения Сергей0308 то вероятно можно передать float и отобразить целую часть. Но в руководстве написано параметр dP только для переменных Int и Word. В самом конфигураторе так же противоречие руководству. Не знаю где истина. Подскажите пожалуйста возможные варианты решения. Заранее всем спасибо.

Насколько понял имеется переменная флоат, вам нужно округлить до целых и передать на СМИ2, я вас правильно понял? Если да, я вижу так: переменную флоат округляете до целых, преобразуете в инт(будет и отрицательные значения показывать, если это надо), передаёте в инте на СМИ2, в настройках СМИ2 ставите "0" знаков после запятой, всё! Короче, не понятно в чём здесь проблема, мне кажется её нет!

Сергей0308
01.07.2020, 23:29
так понятно, спасибо. думал возможно есть вариант отображения целой части от полученного float пусть даже простым отбрасыванием дробной части. Т.е. выбрать отображать 0 цифр после запятой.
Тогда для чего реализован запятая для int (параметр dP)? Думаю dP логичнее для float.

Флоат только в случае если целое значение переменной в положительной области будет занимать четыре десятичных разряда - дробная часть будет отбрасываться(не поместится), если диапазон значений будет этому соответствовать то можно и флоат применить, иначе будет запятую показывать и ноль десятых(сотых), даже если флоат округлите!

Kulman
16.12.2021, 08:54
Коллеги, добрый день. Планирую использовать расходомер https://www.turbo-don.ru/rasxodomer-gaza-turbo-flow-tfg-modifikaczii-tfg-s . У него есть передача измеренного значения по Modbus RTU, данные в кодировке BigEndian (сначала старший байт), тип данных float32, адрес 0х501С. Правильно ли я понимаю, что отобразить на СМИ-2 не получится, т.к. данные "не влезут" в индикатор?

kondor3000
16.12.2021, 09:23
Коллеги, добрый день. Планирую использовать расходомер https://www.turbo-don.ru/rasxodomer-gaza-turbo-flow-tfg-modifikaczii-tfg-s . У него есть передача измеренного значения по Modbus RTU, данные в кодировке BigEndian (сначала старший байт), тип данных float32, адрес 0х501С. Правильно ли я понимаю, что отобразить на СМИ-2 не получится, т.к. данные "не влезут" в индикатор?

Так всего 4 знака, в расходомере наверное 9 или больше. Сми 2 подходит для небольших температур и давлений только. Попробовать можно конечно, если не лень)

Kulman
16.12.2021, 09:57
Так всего 4 знака, в расходомере наверное 9 или больше. Сми 2 подходит для небольших температур и давлений только. Попробовать можно конечно, если не лень)
Мне бы хватило и 4 значащих числа (у меня измеряемый диапазон 0....2000 попугаев). Вопрос в том, а будет ли вообще корректно отображаться значение?