Просмотр полной версии : ПЧВ3 неверные данные в modbus регистре? (0x210A) Выходная мощность
Schneider
30.07.2025, 07:53
в руководстве пчв3, стр.175 есть адрес параметра:
C00.10 (0x210A) Выходная мощность 0.1 % Отображение текущего значения выходной мощности преобразователя
Привод опрашивается и управляется по RS485 modbus с ПР205,
к приводу 7К5 (7,5 квт) подключил двигатель 1,1 квт для тестов.
на этой же странице параметры выше выводятся в целочисленном значении понятно, например входное/выходное напряжение, ток
делим на 10 - получаем в REAL (float) нужный параметр, на экран ПР вывожу уже цифры в реальных цифрах, все адекватно отображается, кроме:
В регистре выходной мощности в udint (это в owen Logic,а в частотнике UINT/WORD разумеется), при подключении отладки ПР205 из owenLogic при 5 Гц вижу - 0, при оборотах 10-15 Гц вижу 65535, а при 50 Гц - 4 как это понимать?
Schneider
А на самом ПЧ этот параметр отображается корректно?
Вероятно имеет место тение в формате, отличном от WORD.
Вообще-то там должно читаться в беззнаковом целочисленном, (word или uint). Они занимают 1 регистр (2 байта), udint же занимает два регистра (4 байта), поэтому прицепляются данные с соседних регистров.
Кстати, в ПР параметры, предназначенные исключительно для отображения, не обязательно переводить в real\float, достаточно в самом поле отображения поставить запятую в нужном месте.
Schneider
30.07.2025, 08:57
Schneider
А на самом ПЧ этот параметр отображается корректно?
Правильный вопрос. отображается там то же самое , ну только видимо с учетом модификатора вывода.
при 50гц. то же самое что и по модбас прилетает, 0,4 % , (ну то есть в int =4, как я раньше и писал)
85066
так что по видимому не в последовательности байт проблема как и с остальными регистрами. в Овен Лоджик каждый
адрес настраиваю на получение одного регистра. это потом уже в среде этой UDINT - там другого целочисленного не предусмотрено.
85067
Непонятно откуда берется четырехбайтная UDINT, если переменная читается как двухбайтовая UINT\WORD.
Schneider
30.07.2025, 09:40
Непонятно откуда берется четырехбайтная UDINT, если переменная читается как двухбайтовая UINT\WORD.
я уже писал в предыдущем сообщении. по модбас получаю двухбайтовую переменную, в среде OWEN Logic НЕТ ни INT, ни UINT, ни WORD
А есть UDINT ! при присвоении UINT\WORD в переменную UDINT потеря данных не проиходит.
Но все это не имеет отношение к теме.
Только поясню следующее(еще раз). в переменной ПЧВ3 параметры хранятся в целочисленном виде, в частности мощность в десятых долях процента.
чтобы получить цифру в REAL сначала в программе для ПР205 получаю это целочисленное значение, в частности прилетает "4" когда частотник работает на 50 Гц
перевожу его в REAL а затем делю на 10 , получаю 0,4 %, что и отображает этот параметр на дисплее самого частотника.
Я разобрался. Как обычно у Овена всё не очевидно. В проекте целочисленная действительно является UDINT\DWORD. И это никак не изменить.
Проблема с отображением появляется по причине того, что данный параметр может принимать отрицательные значения, то есть абсолютное значение в регистре ПЧ будет в районе 65000.
Задачу можно решить, прикрутив к проекту преобразование int16 из онлайн-библиотеки в Менеджере компонентов.
Сделал пару скриншотиков для понимания.
85073
85075
kondor3000
30.07.2025, 10:36
Здесь выложены функции для вывода знаковых целочисленных, для 16 и 32 битных
Функции FLOAT_TO_INT и INT_TO_FLOAT на ST____ https://owen.ru/forum/showthread.php?t=22915&page=311&p=429821#post429821
kondor3000
В данном конкретном случае нужна функция UDINT_TO_UINT.
Либо иметь возможность указывать разрядность целочисленных переменных. Но это уже из области фантастики.
kondor3000
30.07.2025, 10:47
kondor3000
В данном конкретном случае нужна функция UDINT_TO_UINT.
Либо иметь возможность указывать разрядность целочисленных переменных. Но это уже из области фантастики.
Не нужно тут ничего, получили целочисленное, конвертировали и разделили на 10.
Сколько регистров надо получить, выбираете сами, 1 или 2 и соответствующую функцию. Функции выложены для DINT и для INT
kondor3000
ТС читает из ПЧ регистр, там значение в формате SINT (short int, целое со знаком, 16бит), это значение заносится в переменную проекта с неявным преобразованием в UDINT (беззнаковое целое 32бит). При отрицательном значении в регистре, получаем ненормальные цифры в переменной проекта. А там уже хоть на ноль делить можно, не поможет.
Если в переменную получать больше чем один регистр, то это значит два регистра, и в переменной будет микс из мощности и напряжения на шине DC в данном случае.
kondor3000
30.07.2025, 12:12
kondor3000
ТС читает из ПЧ регистр, там значение в формате SINT (short int, целое со знаком, 16бит), это значение заносится в переменную проекта с неявным преобразованием в UDINT (беззнаковое целое 32бит). При отрицательном значении в регистре, получаем ненормальные цифры в переменной проекта. А там уже хоть на ноль делить можно, не поможет.
Если в переменную получать больше чем один регистр, то это значит два регистра, и в переменной будет микс из мощности и напряжения на шине DC в данном случае.
С чего вы решили. что происходит неявное преобразование ?
Во всех ПР получили INT16 (WORD), оно и останется числом до 65535, даже если присвоить его в переменную UDINT.
Оно просто ляжет в младший регистр как есть.
Тоже самое и для передачи, отправляя UDINT, числом до 65535, выбрав 1 регистр, вы передаёте только младший регистр.
kondor3000
Все так, как вы описали. За исключением нюанса.
Допустим ПЧ кладет в регистр фактической значение параметра "мощность" -0.1%. В регистре будет находиться число 65535. ПР его читает в UDINT. Теперь как значение UDINT 65535 отобразить на экране ПР в переменной FLOAT в виде "-0.1%"? Если ставить имеющееся преобразование TO_FLOAT, а потом полученное поделить на 10 через fDIV, то на выходе получим 6553.5%.
Проблема не в передаче и приеме, проблема в конверсии значения.
kondor3000
30.07.2025, 13:28
kondor3000
Все так, как вы описали. За исключением нюанса.
Допустим ПЧ кладет в регистр фактической значение параметра "мощность" -0.1%. В регистре будет находиться число 65535. ПР его читает в UDINT. Теперь как значение UDINT 65535 отобразить на экране ПР в переменной FLOAT в виде "-0.1%"? Если ставить имеющееся преобразование TO_FLOAT, а потом полученное поделить на 10 через fDIV, то на выходе получим 6553.5%.
Проблема не в передаче и приеме, проблема в конверсии значения.
Вам дал ссылку на функции конверсии, ссылку то посмотрите! На скринах всё видно, даже не открывая проект.
Функции FLOAT_TO_INT и INT_TO_FLOAT на ST____ https://owen.ru/forum/showthread.php?t=22915&page=311&p=429821#post429821
Вы получаете целое 65535, после функции -1, делите на 10, получаете -0.1
85083
Вместо тысячи слов.
kondor3000
30.07.2025, 13:45
85083
Вместо тысячи слов.
Вы мою функцию не применили, а поделили целое число на 10.
Просто поразительно, вместо того чтобы посмотреть ссылку, 2 страницы хрень писать надо.
kondor3000
Я выкладывал свое решение. Нужный ФБ есть в официальном репозитории Овена. Можно сказать это штатное средство.
Не спорю, может ваше решение лучше, но оно не в официальном репозитории, и вот как обычный программер должен решать эту банальную операцию, которая в других средах делается по щелчку пальцев, штатным функционалом, не лопатя тонны форумов? Поэтому я игнорировал ваши ссылки.
kondor3000
30.07.2025, 14:02
kondor3000
Я выкладывал свое решение. Нужный ФБ есть в официальном репозитории Овена. Можно сказать это штатное средство.
Не спорю, может ваше решение лучше, но оно не в официальном репозитории, и вот как обычный программер должен решать эту банальную операцию, которая в других средах делается по щелчку пальцев, штатным функционалом, не лопатя тонны форумов?
Так и я выложил своё решение, и не вам, а ТС.
Зачем эта писанина была на 2 страницы?
Это вопрос больше к Овену, ибо такие примитивные преобразования просто обязаны быть в базовом функционале среды, что бы пользователям не приходилось городить мегатонны велосипедов.
Schneider
30.07.2025, 14:24
Во тут написали. Все вроде правильно, но все не по делу. я фотку присылал, у меня на экране ЧАСТОТНИКА показывает ТОЖЕ САМОЕ, что я получаю в ПР205 из частотника по модбасу. Преобразования не при чем!
Что вы прицепились за эти преобразования? Есть что сказать, что не так с параметром в самом частотнике?
Schneider
30.07.2025, 14:28
kondor3000
Все так, как вы описали. За исключением нюанса.
Допустим ПЧ кладет в регистр фактической значение параметра "мощность" -0.1%.
с чего это отрицательные значения появятся в параметре "мощность" выраженная в процентах от мощности частотника/двигателя?
Частотник с рекуперацией, а двигатель в режиме генератора что ли?
PS. хотя по факту эта переменная себя ведет так как будто действительно знаковая приведена к беззнаковому.
Но в руководстве для частотника указано ясно тип данных uint16, беззнаковый:
85085
только вот интересно как они температуру отрицательную кодируют. температура модуля внутреннего у них есть и считывается она тем же способом в десятых долях градуса. отображается верно при получении по modbus. Пока на улице лето, по крайней мере.
kondor3000
30.07.2025, 15:07
с чего это отрицательные значения появятся в параметре "мощность" выраженная в процентах от мощности частотника/двигателя?
Частотник с рекуперацией, а двигатель в режиме генератора что ли?
PS. хотя по факту эта переменная себя ведет так как будто действительно знаковая приведена к беззнаковому.
Но в руководстве для частотника указано ясно тип данных uint16, беззнаковый:
85085
только вот интересно как они температуру отрицательную кодируют. температура модуля внутреннего у них есть и считывается она тем же способом в десятых долях градуса. отображается верно при получении по modbus. Пока на улице лето, по крайней мере.
Как вариант, могут быть переставлены байты, на днях у одного вместо 382.6 В показывало типа 61966. https://owen.ru/forum/showthread.php?t=41653&p=468230#post468230
Или например фазы перепутаны, так и отрицательное число может вылезти. В любом случае число типа 65000 тут быть не должно.
Температура тем более может быть и отрицательной, тогда всё выше написанное в тему.
Проверять правильность передачи байт, надо например по напряжению, то что примерно известно.
с чего это отрицательные значения появятся в параметре "мощность" выраженная в процентах от мощности частотника/двигателя?
Частотник с рекуперацией, а двигатель в режиме генератора что ли?
А чему удивляться? Отрицательные значения могут иметь мощность, момент, в некоторых случаях выходная частота. Температуру не делают отрицательной потому что условия эксплуатации обычно при плюсовой температуре. Ну если только частотник не какого-нибудь специального "морозного" исполнения.
Генераторный режим - да легко. Если двигатель работает на механизм типа "поднят-опустить", либо контролируемый останов, но при коротком времени, либо как у меня на производстве, в многокаскадной протяжке материала с вытяжкой на некоторых участках. У меня часть ПЧ постоянно работают в отрицательной зоне, излишки напряжения на шине сбрасываются на тормозные резисторы.
Судя по предоставленным фото, в вашем случае двигатель практически без нагрузки, ибо 0.4 квт для 7.5 квт моторчика это ни о чем, и могут быть различные флуктуации из за погрешности измерения самим частотником, следовательно возможен заход в отрицательную зону.
Что бы не гадать, надо сделать преобразования любым предложенным выше способом, и можно закрыть вопрос.
указано ясно тип данных uint16, беззнаковый:
Во всех ПЧ, с которыми мне приходилось сталкиваться, любые данные передаются\принимаются в этом формате, даже битовые (да, они упакованы в uint16\word), например статусы состояний\аварий. Вопрос интерпретации.
Schneider
31.07.2025, 15:56
Проверять правильность передачи байт, надо например по напряжению, то что примерно известно.
вроде писал уже. Остальные параметры, напряжение, выходной ток двигателя, частота, входное напряжение - все это получается по модбас ВЕРНО, при той же последовательности байт.
не думаю что конкретно для этого регистра другие правила.
И. еще раз. на дисплее частотника этот прааметр - выходная мощность %, показывает тоже самое, что я получаю по модбас. только когда в регистре 65535- на экране показывает -0 (минус ноль) а потом 0,4, когда и в регистре 0,4 (в int = 4, делим на 10 по мануалу)
Schneider
31.07.2025, 16:03
Судя по предоставленным фото, в вашем случае двигатель практически без нагрузки, ибо 0.4 квт для 7.5 квт моторчика это ни о чем
этот параметр в РЭ представлен в %, двигатель у меня подключен 1,1 кВт (ну что же никто не читает внимательно стартовый пост???) двигатель в составе вентилятора центробежного.
при 50 Гц нагрузка номинальная и ток реальный(выходной, который показывает при этом сам частотник) совпадает с паспортным на шилде двигателя, поэтому никакие это не 0,4 кВт, если даже в них считать а более 1 кВт это точно.
хотя мысль интересная, посмотрю что покажет когда подключу реальный 7,5 квт насос, для чего эта система и собирается. Кстати уже поставили на скважину, как пустим, отпишусь.
когда в регистре 65535- на экране показывает -0 (минус ноль)
Вот про это я и говорил. Сделайте преобразование, предложенное мной, или Кондором, и будет вам счастье.
Остальные параметры, напряжение, выходной ток двигателя, частота, входное напряжение - все это получается по модбас ВЕРНО
Все эти параметры не имеют отрицательных значений, либо не заходят в отрицательную зону, поэтому и нет искажений в отображении на экране ПР.
Schneider
01.08.2025, 07:30
Как вариант, могут быть переставлены байты...
штатные средства формирования запросов в овен лоджик не позволяют оперировать с одним адресом из нескольких(в смысле менять последовательность байт)
только целиком устройством. конечно я могу перевернуть их после, своим кодом. но зачем все это, если в РЭ на частотник указано ясно uint16
для всех параметров запрашиваемых по модбас. Искать подход к чужим ошибкам? у меня других забот хватает.
Надеюсь ОВЕН исправит эту ошибку или объяснит, возможно что то я не так понял.
PS. спасибо за участие, ваши примеры с приведением типов сохранил, пригодится.
Schneider
28.08.2025, 07:54
этот параметр в РЭ представлен в %, двигатель у меня подключен 1,1 кВт (ну что же никто не читает внимательно стартовый пост???) двигатель в составе вентилятора центробежного.
при 50 Гц нагрузка номинальная и ток реальный(выходной, который показывает при этом сам частотник) совпадает с паспортным на шилде двигателя, поэтому никакие это не 0,4 кВт, если даже в них считать а более 1 кВт это точно.
хотя мысль интересная, посмотрю что покажет когда подключу реальный 7,5 квт насос, для чего эта система и собирается. Кстати уже поставили на скважину, как пустим, отпишусь.
Да, при эксплуатации двигателя 7,5 кВт при номинальной раскрутке движка (ток соответственно шилдику) показал 7,5 в этом регистре.
так что в руководстве не верно указаны проценты мощности. отображает фактическую мощность в кВт. видимо разработка китайская, неверный перевод.
PS. Офф сервис Овен за это время так и не ответил.
Всем спасибо.
Тему можно закрывать.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot