Просмотр полной версии : ПР200 modbus чтение регистров s32
Добрый день.
Подскажите, есть ли возможность читать пркой регистры 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
Проблема в том что пр даже значение с этого регистра не может прочитать.
Ой! Прям на форуме с ПРками уже обсуждалии именно MAPx от WirenBoard где-то (скорее всего в теме про Общие вопросы про ПРку).
Там пришли к тому же выводу, что их значения ПРка прочитать и обработать НЕ сможет. К сожалению.
Не все не может прочитать. Только те что s. Успешно читаю напряжение и ток. А вот с мощностью косяк. Сейчас по мощности костыль из I*V, но он не очень корректен на малых токах. Так понимаю что косяк со стороны овена в части реализации протокола. Со стороны wb там какие-то тру последователи полной реализации протокола.
Только наоборот. Дело в том, что штатно по спецификации протокол Modbus позволяет считывать только регистры. Это тип данных WORD, 16 бит. И всё.
А вот всякие FLOAT, INT32 - это НЕ штатная передача данных по Modbus, и её (формально) никто не обязан поддерживать в принципе. Что ОВЕН и делает.
Со стороны WB там чаще всего самобытные чуваки, которые иногда изобретают то, что работает только с их контроллерами.
PS. Я в дружественном контакте с ними, поэтому позволяю себе так про них говорить =)
Только наоборот. Дело в том, что штатно по спецификации протокол Modbus позволяет считывать только регистры. Это тип данных WORD, 16 бит. И всё.
А вот всякие FLOAT, INT32 - это НЕ штатная передача данных по Modbus, и её (формально) никто не обязан поддерживать в принципе. Что ОВЕН и делает.
Со стороны WB там чаще всего самобытные чуваки, которые иногда изобретают то, что работает только с их контроллерами.
PS. Я в дружественном контакте с ними, поэтому позволяю себе так про них говорить =)
Коль у вас дружественный контакт с ними, может они подумают как повернуться к овну дружественным коннектом?
Не совсем понял, WB разве не отдает по Modbus данные? кто мешает прочитать просто два регистра обезличено и потом склеить как вам надо?
Коль у вас дружественный контакт с ними, может они подумают как повернуться к овну дружественным коннектом? Скорее всего, нет, так как ПРки - это самая мала ниша устройств. ПЛК ведь будет нормально с этими данными работать. А ПРка - нет.
Тем более, что тут же отдаётся такое число, которое в меньшее количество регистров не влезет.
Вот здесь на ОВЕНе это обсуждалось: https://owen.ru/forum/showthread.php?t=26216&p=431830&viewfull=1#post431830 (с этого поста и дальше).
Я там как раз про это тупил, и поэтому запомнил про 64-битные переменные.
Ну тут вопрос простой. Логика ребят из ВБ в целом понятна, они заложили возможность работы на солнечные панели и отдачу в сеть (из киловатов получим кВт.ч.), но им ничего не мешает добавить ещё один регистр u32 чисто для мощности от счётчика.
В текущий момент понятно что грустно и придется как-то приводить показания к реальности костылями.
Не совсем понял, WB разве не отдает по Modbus данные? кто мешает прочитать просто два регистра обезличено и потом склеить как вам надо?
Прочтите внимательно пожалуйста. ПР вообще не читает, а не то что что-то. Что-то с чем-то обрабатывать умею, но не 0. И да, читаемая сетевая переменная выгонялась во временную сетевую. Не просто болталась в проекте.
в регистре 4871 что?
Расскажите как считать корректно 3 байта средствами ПР?
Ну тут вопрос простой. Логика ребят из ВБ в целом понятна, они заложили возможность работы на солнечные панели и отдачу в сеть (из киловатов получим кВт.ч.), но им ничего не мешает добавить ещё один регистр u32 чисто для мощности от счётчика.
В текущий момент понятно что грустно и придется как-то приводить показания к реальности костылями. Да. Это у них сплошь и рядом всегда.
Например в модуле AI на 6..12 каналов масштабирование есть, а в модуле на 2 канала - нет, и ток 4..20 мА отдаётся величиной типа x3.125 * 10^-2, мА, и считай как хочешь. Я даже не знаю, сможет ли такое ПРка подсчитать (скоро буду пробовать)...
Расскажите как считать корректно 3 байта средствами ПР? Всё же подушню. В той теме, ссылку на которую я дал, народ пробовал склеить DWORD из 4х байтов. Но как-то криво вроде.
Прочтите внимательно пожалуйста. ПР вообще не читает, а не то что что-то. Что-то с чем-то обрабатывать умею, но не 0. И да, читаемая сетевая переменная выгонялась во временную сетевую. Не просто болталась в проекте.
Тихо-тихо. Вам предложили создать 2-е переменные для чтения u16 (с адреса 0x1306 и с адреса 0x1308) и выложить здесь, чтобы все убедились, что в них 0.
renat85 вы уж определитесь, у WB Modbus или какая-то своя херня. Если первое, то как он может что-то не отдать? Может не там "спрашиваете" ?
Да. Это у них сплошь и рядом всегда.
Например в модуле AI на 6..12 каналов масштабирование есть, а в модуле на 2 канала - нет, и ток 4..20 мА отдаётся величиной типа x3.125 * 10^-2, мА, и считай как хочешь. Я даже не знаю, сможет ли такое ПРка подсчитать (скоро буду пробовать)...
Сможет. Сейчас по такой же +- схеме читаю и считаю напряжение и ток. В целом да, они забавно заморочились.
Сможет. В целом да, они забавно заморочились.
Я тестовый стенд сделал. На днях буду пробовать!
Обновление, пробовал читать как советовали и с 4871 регистра и с 4872 и так и сяк, по нулям. Однако умная мысль в голову приходит не сразу. У меня рядом стоит wb-mai6 (модуль аналогово ввода) и так вот там для чтения с каналов используется точной такой же регистр s32. И что самое интересное прка его читает и весьма успешно. Кому интересно: https://wirenboard.com/wiki/WB-MAI6_Modbus_Registers Надо в поддержку WB написать не попутали ли они адреса регистров в документации на map.
Вопрос с чтением решился обновлением ПО счетчика до последней версии, была 2.7.1 стала 2.9.0 + обновлением ПО ПРки до последней версии. Все зачиталось. Точность по мощности очень повысилась, по сравнению со старыми костылями I*V. Всем спасибо.
Тему можно закрыть.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot