PDA

Просмотр полной версии : ПР200 modbus чтение регистров s32



renat85
30.07.2024, 10:29
Добрый день.
Подскажите, есть ли возможность читать пркой регистры s32 со сторонних устройств?
Суть вопроса, к пр слейвом подключен измеритель wirenboard map-6s. Все u регистры читаются, проблема в чтении s32, значения по нулям. Если я правильно понял отличие u от s это в наличии знака отрицательных значений в s.

Ссылка на регистры map-6s, если не корректно выразился. Конкретно интересует под номером 4870.
https://wirenboard.com/wiki/WB-MAP6S_Data_Registers_v.2

kondor3000
30.07.2024, 10:57
Добрый день.
Подскажите, есть ли возможность читать пркой регистры s32 со сторонних устройств?
Суть вопроса, к пр слейвом подключен измеритель wirenboard map-6s. Все u регистры читаются, проблема в чтении s32, значения по нулям. Если я правильно понял отличие u от s это в наличии знака отрицательных значений в s.

Ссылка на регистры map-6s, если не корректно выразился. Конкретно интересует под номером 4870.
https://wirenboard.com/wiki/WB-MAP6S_Data_Registers_v.2

Если вы про 32 целочисленное со знаком, то это тип DINT, так как в ПР нет этого типа, то полученное переводят во Float или наоборот.

Функции FLOAT_TO_INT и INT_TO_FLOAT на ST
Добавил функции FLOAT_TO_DINT и DINT_TO_FLOAT на ST
https://owen.ru/forum/showthread.php?t=22915&page=311&p=429821#post429821

renat85
30.07.2024, 11:08
Проблема в том что пр даже значение с этого регистра не может прочитать.

Cs-Cs
30.07.2024, 11:39
Ой! Прям на форуме с ПРками уже обсуждалии именно MAPx от WirenBoard где-то (скорее всего в теме про Общие вопросы про ПРку).
Там пришли к тому же выводу, что их значения ПРка прочитать и обработать НЕ сможет. К сожалению.

renat85
30.07.2024, 12:02
Не все не может прочитать. Только те что s. Успешно читаю напряжение и ток. А вот с мощностью косяк. Сейчас по мощности костыль из I*V, но он не очень корректен на малых токах. Так понимаю что косяк со стороны овена в части реализации протокола. Со стороны wb там какие-то тру последователи полной реализации протокола.

Cs-Cs
30.07.2024, 12:15
Только наоборот. Дело в том, что штатно по спецификации протокол Modbus позволяет считывать только регистры. Это тип данных WORD, 16 бит. И всё.
А вот всякие FLOAT, INT32 - это НЕ штатная передача данных по Modbus, и её (формально) никто не обязан поддерживать в принципе. Что ОВЕН и делает.
Со стороны WB там чаще всего самобытные чуваки, которые иногда изобретают то, что работает только с их контроллерами.
PS. Я в дружественном контакте с ними, поэтому позволяю себе так про них говорить =)

renat85
30.07.2024, 12:40
Только наоборот. Дело в том, что штатно по спецификации протокол Modbus позволяет считывать только регистры. Это тип данных WORD, 16 бит. И всё.
А вот всякие FLOAT, INT32 - это НЕ штатная передача данных по Modbus, и её (формально) никто не обязан поддерживать в принципе. Что ОВЕН и делает.
Со стороны WB там чаще всего самобытные чуваки, которые иногда изобретают то, что работает только с их контроллерами.
PS. Я в дружественном контакте с ними, поэтому позволяю себе так про них говорить =)

Коль у вас дружественный контакт с ними, может они подумают как повернуться к овну дружественным коннектом?

melky
30.07.2024, 13:01
Не совсем понял, WB разве не отдает по Modbus данные? кто мешает прочитать просто два регистра обезличено и потом склеить как вам надо?

Cs-Cs
30.07.2024, 13:29
Коль у вас дружественный контакт с ними, может они подумают как повернуться к овну дружественным коннектом? Скорее всего, нет, так как ПРки - это самая мала ниша устройств. ПЛК ведь будет нормально с этими данными работать. А ПРка - нет.
Тем более, что тут же отдаётся такое число, которое в меньшее количество регистров не влезет.

Вот здесь на ОВЕНе это обсуждалось: https://owen.ru/forum/showthread.php?t=26216&p=431830&viewfull=1#post431830 (с этого поста и дальше).
Я там как раз про это тупил, и поэтому запомнил про 64-битные переменные.

renat85
30.07.2024, 17:17
Ну тут вопрос простой. Логика ребят из ВБ в целом понятна, они заложили возможность работы на солнечные панели и отдачу в сеть (из киловатов получим кВт.ч.), но им ничего не мешает добавить ещё один регистр u32 чисто для мощности от счётчика.
В текущий момент понятно что грустно и придется как-то приводить показания к реальности костылями.

renat85
30.07.2024, 17:27
Не совсем понял, WB разве не отдает по Modbus данные? кто мешает прочитать просто два регистра обезличено и потом склеить как вам надо?

Прочтите внимательно пожалуйста. ПР вообще не читает, а не то что что-то. Что-то с чем-то обрабатывать умею, но не 0. И да, читаемая сетевая переменная выгонялась во временную сетевую. Не просто болталась в проекте.

renat85
30.07.2024, 20:54
в регистре 4871 что?

Расскажите как считать корректно 3 байта средствами ПР?

Cs-Cs
30.07.2024, 21:31
Ну тут вопрос простой. Логика ребят из ВБ в целом понятна, они заложили возможность работы на солнечные панели и отдачу в сеть (из киловатов получим кВт.ч.), но им ничего не мешает добавить ещё один регистр u32 чисто для мощности от счётчика.
В текущий момент понятно что грустно и придется как-то приводить показания к реальности костылями. Да. Это у них сплошь и рядом всегда.
Например в модуле AI на 6..12 каналов масштабирование есть, а в модуле на 2 канала - нет, и ток 4..20 мА отдаётся величиной типа x3.125 * 10^-2, мА, и считай как хочешь. Я даже не знаю, сможет ли такое ПРка подсчитать (скоро буду пробовать)...

Cs-Cs
30.07.2024, 21:32
Расскажите как считать корректно 3 байта средствами ПР? Всё же подушню. В той теме, ссылку на которую я дал, народ пробовал склеить DWORD из 4х байтов. Но как-то криво вроде.

EFrol
30.07.2024, 21:47
Прочтите внимательно пожалуйста. ПР вообще не читает, а не то что что-то. Что-то с чем-то обрабатывать умею, но не 0. И да, читаемая сетевая переменная выгонялась во временную сетевую. Не просто болталась в проекте.

Тихо-тихо. Вам предложили создать 2-е переменные для чтения u16 (с адреса 0x1306 и с адреса 0x1308) и выложить здесь, чтобы все убедились, что в них 0.

melky
30.07.2024, 23:28
renat85 вы уж определитесь, у WB Modbus или какая-то своя херня. Если первое, то как он может что-то не отдать? Может не там "спрашиваете" ?

renat85
31.07.2024, 09:57
Да. Это у них сплошь и рядом всегда.
Например в модуле AI на 6..12 каналов масштабирование есть, а в модуле на 2 канала - нет, и ток 4..20 мА отдаётся величиной типа x3.125 * 10^-2, мА, и считай как хочешь. Я даже не знаю, сможет ли такое ПРка подсчитать (скоро буду пробовать)...

Сможет. Сейчас по такой же +- схеме читаю и считаю напряжение и ток. В целом да, они забавно заморочились.

Cs-Cs
31.07.2024, 20:51
Сможет. В целом да, они забавно заморочились.
Я тестовый стенд сделал. На днях буду пробовать!

renat85
02.08.2024, 11:16
Обновление, пробовал читать как советовали и с 4871 регистра и с 4872 и так и сяк, по нулям. Однако умная мысль в голову приходит не сразу. У меня рядом стоит wb-mai6 (модуль аналогово ввода) и так вот там для чтения с каналов используется точной такой же регистр s32. И что самое интересное прка его читает и весьма успешно. Кому интересно: https://wirenboard.com/wiki/WB-MAI6_Modbus_Registers Надо в поддержку WB написать не попутали ли они адреса регистров в документации на map.

renat85
27.08.2024, 09:41
Вопрос с чтением решился обновлением ПО счетчика до последней версии, была 2.7.1 стала 2.9.0 + обновлением ПО ПРки до последней версии. Все зачиталось. Точность по мощности очень повысилась, по сравнению со старыми костылями I*V. Всем спасибо.
Тему можно закрыть.