PDA

Просмотр полной версии : ПР200. Некорректная передача данных типа float по Modbus RTU в режиме Slave.



maks.dav
17.11.2021, 11:54
Доброго дня. ПР200 работает как slave в сети RS485 Modbus RTU. К контроллеру подключен термометр Pt500, данные которого должны передаваться мастеру в формате c плавающей точкой. Так вот, данные мастер получает, но это какие-то рандомные значения. В отладчике посмотрел: после блока преобразования сопротивления в температуру значение действительное. Менял последовательности байт и регистров - ничего не меняется, всё время получаю рандомные данные. Меняю значение с плавающей точкой на целочисленное - значение приходит верное, возвращаю назад - опять рандом.
В чем может быть проблема?

P.S. С других слейвов мастер получает значения float без проблем.

keysansa
17.11.2021, 12:25
Возможно преобразовываете не верно.

ЗЫ. Лично мое мнение - передавать температуру во Float - бессмысленная трата ресурсов. 16 бит хватает почти для всего, где нужна точность в 0.1%

maks.dav
17.11.2021, 13:14
Возможно преобразовываете не верно.

ЗЫ. Лично мое мнение - передавать температуру во Float - бессмысленная трата ресурсов. 16 бит хватает почти для всего, где нужна точность в 0.1%

Согласен! И всё бы ничего, но значение температуры нужно выводить с точностью до второго знака после запятой.

petera
17.11.2021, 13:17
Согласен! И всё бы ничего, но значение температуры нужно выводить с точностью до второго знака после запятой.

Ну и что?
Если исходная укладывается в диапазон +/- 327,68, то в чем проблема?

melky
17.11.2021, 13:26
Для слейва галочки не действуют, для ПР200 порядок байт 2301(3412)

Ревака Юрий
17.11.2021, 13:27
Менял последовательности байт и регистров - ничего не меняется, всё время получаю рандомные данные.

P.S. С других слейвов мастер получает значения float без проблем.

А где меняете? Менять нужно в мастере https://www.youtube.com/watch?v=NMTvVy9ABVc

maks.dav
17.11.2021, 13:52
Ну и что?
Если исходная укладывается в диапазон +/- 327,68, то в чем проблема?

А проблема в том, что значения с плавающей точкой мне нормальные не приходят

maks.dav
17.11.2021, 13:58
А где меняете? Менять нужно в мастере https://www.youtube.com/watch?v=NMTvVy9ABVc

Зачем тогда для слейва в настройках есть эта функция??
В мастере не могу поменять, т.к. другие слейвы работают на установленной последовательности регистров и байт.

maks.dav
17.11.2021, 14:03
Для слейва галочки не действуют, для ПР200 порядок байт 2301(3412)

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

И почему, интересно, выбран такой порядок байт 2301(3412)?

petera
17.11.2021, 14:09
Ну и что?
Если исходная укладывается в диапазон +/- 327,68, то в чем проблема?

А проблема в том, что значения с плавающей точкой мне нормальные не приходят

Я имел в виду, что float в int, с двумя знаками после запятой без проблем в диапазоне +/- 327,68


Перевод float в целые с фикс. точкой и обратно

https://owen.ru/forum/attachment.php?attachmentid=57811&d=1635940534

keysansa
17.11.2021, 14:13
Ну и что?
Если исходная укладывается в диапазон +/- 327,68, то в чем проблема?

Совершенно верно, или 0...+655.35

keysansa
17.11.2021, 14:14
И почему, интересно, выбран такой порядок байт 2301(3412)?

Изначально был связан с архитектурой процессора, но затем, прижился.
ЗЫ. Там еще вторая галочка должна быть. Которая меняет порядок байт, а не слов, как у вас.

maks.dav
17.11.2021, 14:16
Перевод float в целые с фикс. точкой и обратно

https://owen.ru/forum/attachment.php?attachmentid=57811&d=1635940534

Точно, подзабыл я этот финт, когда-то очень давно это делал, даже не на Овне.
Спасибо тебе добрый человек!)

maks.dav
17.11.2021, 14:18
Изначально был связан с архитектурой процессора, но затем, прижился.

Познавательно, спасибо)

Ревака Юрий
17.11.2021, 14:40
Зачем тогда для слейва в настройках есть эта функция??
В мастере не могу поменять, т.к. другие слейвы работают на установленной последовательности регистров и байт.

Эти настройки влияют на чтение регистров которые жестко прописаны в карте, только не спрашивайте почему именно так:D

keysansa
17.11.2021, 14:50
Познавательно, спасибо)

Прошу прощения...
Где-то так: https://www.ferra.ru/review/computers/processor-evolution-part-2.htm

Yakut
20.01.2022, 17:39
Тоже столкнулся с такой же проблемой float не передаёт. int = вполне успешно.
2 ПР200 один мастер другой слейв.
На мастере адрес регистра 2816, а на слейве такого невозможно вбить.

Ревака Юрий
20.01.2022, 18:38
Тоже столкнулся с такой же проблемой float не передаёт. int = вполне успешно.
2 ПР200 один мастер другой слейв.
На мастере адрес регистра 2816, а на слейве такого невозможно вбить.

Я так понимаю я вчера с Вами вел долгую беседу в комментариях, а результата так и нет:(.
Не нужен в слейве адрес 2816, прицепите на внутренний регистр float сигнал с аналогового входа и читайте мастером из области 512-576.

keysansa
20.01.2022, 21:12
Я, подозреваю, что с Yakut я знаком.
Я конечно не аргумент, но мы проверили удаленно все параметры, и все было одинаково. После модификации программы для передачи WORD (округление умножения на 10), все сразу заработало.
ЗЫ. Там адрес переменной был 512.

Yakut
23.01.2022, 16:05
Я, подозреваю, что с Yakut я знаком.

Так точно!
С Мастера Слефв читал только целочисленные, но не читал с запятой.
Итак, понеслось:
Вложил все настройки.
Со слейф в мастер не идёт float.

Сергей0308
23.01.2022, 20:28
Так точно!
С Мастера Слефв читал только целочисленные, но не читал с запятой.
Итак, понеслось:
Вложил все настройки.
Со слейф в мастер не идёт float.

Для начала пусть РЭ посмотрит, тогда не придётся делать то, что уже есть и ресурсы ПР без толку расходовать, про личное время уже молчу!
Особое внимание можно обратить на настройки связи, в частности на скорость!

58880

58881

keysansa
24.01.2022, 14:37
Программу ты мне не показывал...
Я правда и не просил )
Лишнее движение - SCALE. Масштабировать статически можно прямо "на аналоговом входе", с помощью его настройки.

keysansa
24.01.2022, 14:40
Для начала пусть РЭ посмотрит, тогда не придётся делать то, что уже есть и ресурсы ПР без толку расходовать, про личное время уже молчу!
Особое внимание можно обратить на настройки связи, в частности на скорость!


Сергей, а если не думать только о входах? Если нужны, кроме них еще и нормализованные (и каким-то образом пересчитанные) значения?

Сергей0308
24.01.2022, 16:10
Сергей, а если не думать только о входах? Если нужны, кроме них еще и нормализованные (и каким-то образом пересчитанные) значения?

Так входа здесь ни при чём, для начала связь пусть настроит, без связи, боюсь, ничего не передаст!

keysansa
24.01.2022, 16:12
Так входа здесь ни при чём, для начала связь пусть настроит, без связи, боюсь, ничего не передаст!

Так связь работает, целые числа передаются легко.

kondor3000
24.01.2022, 16:22
В выложенных проектах скорость на мастере 115200, а на слейве 9600. Просто красавцы, удивительно, как вообще что то передаётся)))

keysansa
24.01.2022, 16:32
В выложенных проектах скорость на мастере 115200, а на слейве 9600. Просто красавцы, удивительно, как вообще что то передаётся)))

Это, видимо ошибка, скрины разных тестов. Я видел на обеих сторонах 115200. Но все равно не объясняет передачу целых чисел.

keysansa
24.01.2022, 16:41
Вот, что видел я, в момент обсуждения:
58889
58890
58891
58892

Ревака Юрий
24.01.2022, 17:30
Вот, что видел я, в момент обсуждения:
58889
58890
58891
58892

Я ему говорил скачать проекты и сравнить настройки, практически под каждым видео с ПР проекты с обменом float.

keysansa
24.01.2022, 17:42
Я ему говорил скачать проекты и сравнить настройки, практически под каждым видео с ПР проекты с обменом float.

В скринах нет ошибок? Обмен по ModBus вроде к телу проекта не относится, только к данным настройкам?
То, что зачеркнуто - должно работать, вроде. Таймаут не играет роли, если связь есть, порядок байт тоже, если на обоих концах они установлены одинаково?

kondor3000
24.01.2022, 18:31
В скринах нет ошибок? Обмен по ModBus вроде к телу проекта не относится, только к данным настройкам?
То, что зачеркнуто - должно работать, вроде. Таймаут не играет роли, если связь есть, порядок байт тоже, если на обоих концах они установлены одинаково?

При работе с флоат, на слейве галки пофиг (не работают), а в мастере если неправильно (регистры, байты переставлены), будет или фигня или ничего. Если считать, что скорость стояла правильно, то дело как раз в галках.

keysansa
24.01.2022, 19:09
При работе с флоат, на слейве галки пофиг, не работают, а в мастере если неправильно (регистры переставлены), будет или фигня или ничего. Если считать, что скорость стояла правильно, то дело как раз в галках.

Если приемник и передатчик собраны на одном устройстве, с одной прошивкой - не важно, как стоят настройки, главное, что бы одинаковы на обоих концах были.

Yakut
24.01.2022, 19:28
Благодарю, коллеги за ответы.
Да, действительно сейчас скорость напутана, но после редакции, всё равно что попало показывает.

@Я ему говорил скачать проекты и сравнить настройки, практически под каждым видео с ПР проекты с обменом float.@

https://www.youtube.com/watch?v=kOo4INKt8Nw&t=0s
https://www.youtube.com/watch?v=miTsntqGIQA&t=0s
https://www.youtube.com/watch?v=k9rUF5_kLqk&t=0s
https://www.youtube.com/watch?v=nw1JvDFqS88&t=0s
https://www.youtube.com/watch?v=nw1JvDFqS88&t=0s

К сожалению, не нашёл:(

kondor3000
24.01.2022, 19:42
Если приемник и передатчик собраны на одном устройстве, с одной прошивкой - не важно, как стоят настройки, главное, что бы одинаковы на обоих концах были.

Вам 2 человека на скринах сказали что делать. Заметьте Юрий выложил только один скрин для мастера, где галка зачёркнута.
На слейве галка не работает.

Yakut
24.01.2022, 20:27
Убери эту рекламную хрень.
Можешь не компостировать мозги а тупо перечислить байты запроса и ответа того флоата и сказать сколько было в флоате на слейве ?

К сожалению не могу, ибо не знаю как это посмотреть в OwenLogic. Могу только сказать ЧТО я подаю на входе по аналоговому сигналу и какие числа вижу на экране у Мастера и Слейва.

Yakut
24.01.2022, 20:29
Вам 2 человека на скринах и так сказали, что делать, сидите дальше на передаче целочисленного. Заметьте Юрий выложил только один скрин для мастера, где галка зачёркнута. На слейве галка не работает.

Секундочку, если есть функция передачи FLOAT, то почему бы ей не пользоваться?
Конечно, может у Овена нет тестировщиков, а форум отличная площадка для тестирования их оборудования, почему бы не прислушаться к мнению пользователей и сделать по человечески, что бы даже на интуитивном уровне было понятно что куда нажимать.

keysansa
24.01.2022, 20:29
Убери эту рекламную хрень.
Можешь не компостировать мозги а тупо перечислить байты запроса и ответа того флоата и сказать сколько было в флоате на слейве ?
Рекламу ютьюб добавляет, сам.

keysansa
24.01.2022, 20:31
Вам 2 человека на скринах и так сказали, что делать, сидите дальше на передаче целочисленного. Заметьте Юрий выложил только один скрин для мастера, где галка зачёркнута. На слейве галка не работает.

Так мы и сидим, но два человека так и не смогли сказать, в чем разница в настройках для передачи целого числа и вещественного по Modbus. Вы третий будете...

keysansa
24.01.2022, 20:34
Секундочку, если есть функция передачи FLOAT, то почему бы ей не пользоваться?
Конечно, может у Овена нет тестировщиков, а форум отличная площадка для тестирования их оборудования, почему бы не прислушаться к мнению пользователей и сделать по человечески, что бы даже на интуитивном уровне было понятно что куда нажимать.

Есть функция передачи регистров, каждый по 16 бит. Float там будет или Int - протоколу нет разницы.

keysansa
24.01.2022, 20:53
Где пакет мастера который что-то просит с регистра 512 ?
Где пакет от слейва ?

У вас есть вопросы к пакетам Modbus, на двух устройствах, которые не допускают в программе даже узнать состояние обмена? )

keysansa
24.01.2022, 21:20
Да. У меня есть вопросы к пакетам модбас. Чел что-то в ютуб выкладывал из сканера. Вот и пусть выпишет циферки и покажет. Или в рекламном дерьме копатся предложите кому ? Проблема - у чела.

Можно цифирь не выкладывать - а еще страниц 20-30 на форуме запилить.

Есть два устройства, одного производителя. Скрины настроек выше. Не получается передать float с этими настройками. У вас есть предположения почему?

Yakut
24.01.2022, 21:24
Колеги, давайте конкретно по пунктам что нужно мне сделать. Только таким языком, что бы и школьнику было понятно.

На обоих устройствах стоят 512 регистры. Слейв передаёт мастеру плавающую запятую. Оба "разговаривают" старшим байтом вперёд. Что=то даже приходит на мастера, но это либо -999.9, либо 0.0, либо 48.3, либо 999.9 и ещё что-то в том духе.

P.S. Если что, ролики видео не мои.

Yakut
24.01.2022, 21:29
Для начала пусть РЭ посмотрит, тогда не придётся делать то, что уже есть и ресурсы ПР без толку расходовать, про личное время уже молчу!
Особое внимание можно обратить на настройки связи, в частности на скорость!

58880

58881

Что самое интересное, в мастере эти адреса регистров по float можно выставить, а в слейве нет. 512-574 это предельные адреса регистров в слейве!

Yakut
24.01.2022, 21:37
Я ему говорил скачать проекты и сравнить настройки, практически под каждым видео с ПР проекты с обменом float.

Поставил в настройках как на скрине = работает.
500 мс. и Убрал галку старшим байтом вперёд.

Yakut
24.01.2022, 22:22
Про ордер - обычное дело )) Потому пакет и просил.

Но каким боком к этому таймаут 500мс ? Такой хреновый слейв на ПР200 ?

Да кто его знает. обидно, конечно, что не работает на других режимах, как по умолчанию.

Ревака Юрий
24.01.2022, 22:48
Благодарю, коллеги за ответы.
Да, действительно сейчас скорость напутана, но после редакции, всё равно что попало показывает.


К сожалению, не нашёл:(

Лайфхаки OwenLogic ч.7 в описании 4 проекта, два из них для Master(ИПП120) это ПР200 без входов/выходов, настройки модбас работают аналогично.

Ревака Юрий
24.01.2022, 22:51
Есть два устройства, одного производителя. Скрины настроек выше. Не получается передать float с этими настройками. У вас есть предположения почему?

По float почему не работает при одних и работает при других настройках с примерами показано в Лайфхаки OwenLogic ч.18, посмотрите 7 минут, и не нужно ничего гадать, про одинаковые галочки на двух устройствах, и от чего там что зависит а что нет.

keysansa
24.01.2022, 23:03
Лайфхаки OwenLogic ч.7 в описании 4 проекта, два из них для Master(ИПП120) это ПР200 без входов/выходов, настройки модбас работают аналогично.

Звучит так, что купленный продукт требует настройки даже в том, что заявляется как преимущество.

Сергей0308
24.01.2022, 23:44
Звучит так, что купленный продукт требует настройки даже в том, что заявляется как преимущество.

Всё гораздо хуже: купленный продукт(ПЧВ), для управления по RS485, с помощью ИПП120, ПР200 не возможно настроить управление без дополнительной приблуды, например ЛПО1, не так давно в какой-то теме на форуме этот вопрос освещался. А Вы говорите: требует настроек!

Ревака Юрий
25.01.2022, 12:03
Практически 3й раз вопрос.
И зачем Ревака Ю предложил дичь в виде 500мс таймаута ? Настолько кривой слейв на ПР ?

Скажем так, на передачу float это никак не влияет, можно было это и не указывать, но учитывая что там не до конца понятно на какой скорости планировалось работать 9600 или 115200, я на всякий случай поправил. Часто вижу настройки, когда на 9600 и по 10мс ставят времена, потом удивляются почему не работает.

Ревака Юрий
25.01.2022, 16:07
Даже на 9600 время транзакций с учетом протокольных временных периодов 30-35мс на туда-сюда. Пусть дополнительная сверх протокольная полсотня (ничего страшного) - даже 100мс никак не натянется.
Так со 100мс таймаута (для 2 регистров) работать ПР-ПР может или не может ?

Сможет. Я посмотрел свои логи которые делал для опытов с модбас при разных циклах, везде успевает, а вот период опрос при сильно нагруженной программе может быть больше 100мс.