Вход

Просмотр полной версии : ПР-200 + конвертер 485 - TCP/IP проблема со значениями переменных



valphar
13.07.2025, 10:18
Всем доброго дня. Разработал проект на Masterscada 4d, под ПР-200 с физическим конвертером интерфейса HF2211A, опрос чере Owen OPC server.
Обнаружил следующую проблему, которую видно уже в окне OPC при опросе: значения всех переменных (целочисленных и Float) искажены. Причем совершенно точно целочисленные отражаются в виде, умноженными на 256 (т.е вместо 1 - 256, вместо 2 - 512 итд) Что именно с float пока не вник, скорее всего каждый их регистр тоже умножен на 256. Соответственно в masterscada передает все то же самое умноженное. Кто нибудь сталкивался с подобным? В чем суть проблемы и как с этим бороться?
Заранее благодарю

melky
13.07.2025, 10:27
1. Правильность адресации, в пр200 целочисленным не требуется переставлять байты
2. Для float надо переставить регистры местами со стороны scada

На использовать ОРС, если в ms4d встроен modbus ?

melky
13.07.2025, 10:28
Это не умножение на 256, это ваше непонимание протокола.

valphar
13.07.2025, 10:35
Скорее всего так и есть.

valphar
13.07.2025, 10:39
1. Правильность адресации, в пр200 целочисленным не требуется переставлять байты
2. Для float надо переставить регистры местами со стороны scada

На использовать ОРС, если в ms4d встроен modbus ?

Все варианты с перестановкой местами байтов в нстройке ПР-200 ничего не меняют. Переставляй, или нет - ничего не меняется. В инструкции к ПР-200 вообще сказано, что для режима slave эти порядки не имеют значения. Разумеется, я уже пробовал изменять там все, что возможно - не меняется совершенно ничего. Использование OPC показалось более простым вариантом, (для первого опыта работы со scada), дабы не ковыряеться в ее дебрях.

imaex
13.07.2025, 10:51
инструкции к ПР-200 вообще сказано, что для режима slave эти порядки не имеют значения.

Это само собой, поскольку правильная интерпретация полученных значений имеет смысл только на принимающей стороне. Может у Вас с адресацией сто напутано? ПР200 - он 0-based или 1-based?

Возьмите какую-нибудь простенькую утилиту для проверки обмена, ту же Radzio!, например.

valphar
13.07.2025, 10:55
Это само собой, поскольку правильная интерпретация полученных значений имеет смысл только на принимающей стороне. Может у Вас с адресацией сто напутано? ПР200 - он 0-based или 1-based?

Возьмите какую-нибудь простенькую утилиту для проверки обмена, ту же Radzio!, например.

Спасибо, сейчас попробую с утилитами поиграть. Не совсем понял про 0 и 1 based...

imaex
13.07.2025, 11:11
Ну, у части modbus-устройств адресация идёт от 0, у других - от 1.

valphar
13.07.2025, 11:30
от 1. Собственно, если я соединяю ПР-200 с ИП320, и опрашиваю с панели прямо по 485, то все отлично. Проблема началась, видимо при конвертации. Radzio! мне не очень помог, разве что я удостоверился что опрос возможен в режиме modbus tcp, а не modbus rtu over tcp/ip, как я полагал. В любом случае спасибо, хоть за какую-то инфу.. опытный программист посоветовал тупо поделить значения целочисленных на 256. Теория подтвердилась, все стало передаваться корректно. но с float это не катит. видимо придется программу в ПР-200 перерабатывать досканально с учетом этого странного бага. В итоге версии2: физический конвертер как-то каверкает протокол, либо OPC так интерпретирует данные от этого конвертера.

imaex
13.07.2025, 12:09
В итоге версии2: физический конвертер как-то каверкает протокол, либо OPC так интерпретирует данные от этого конвертера.
Конвертер ничего не должен коверкать. Для RTU over TCP просто пересылает содержимое TCP-пакета последовательный интерфейс и наоборот. Для Modus TCP преобразовывает протокол. Опять же - не трогая данные. Что касается "OPC так интерпретирует данные от этого конвертера" - Вы серьёзно думаете, что OPC что-то знает про все те конвертеры, от которых ему данные поступают? Открою секрет - он даже не знает о их наличии, ему всё равно. Впрочем, у Вас там не просто конвертер, а целый роутер, т.ч. фиг знает - что там китайцы намудрили.

Что касается 256, то это сдвиг влево на 8 разрядов. Может есть смысл посмотреть в программу на ПР200 - там ничего не намудрено?

melky
13.07.2025, 12:24
Пр200 адресация с 0
Один регистр не трогаем перестановку
Два регистра переставляем регистры 2301 в байтах если, или 3412 как там в вашей системе.
Перестановки в ОЛ только для пр мастера, на слейв не влияют.

melky
13.07.2025, 12:27
Все там катит и делить ничего ни на что не надо, дайте в ухо своему программисту.
У вас просто не те адреса читаются, вы половину читаете от другой переменной, все.

valphar
13.07.2025, 13:15
Конвертер ничего не должен коверкать. Для RTU over TCP просто пересылает содержимое TCP-пакета последовательный интерфейс и наоборот. Для Modus TCP преобразовывает протокол. Опять же - не трогая данные. Что касается "OPC так интерпретирует данные от этого конвертера" - Вы серьёзно думаете, что OPC что-то знает про все те конвертеры, от которых ему данные поступают? Открою секрет - он даже не знает о их наличии, ему всё равно. Впрочем, у Вас там не просто конвертер, а целый роутер, т.ч. фиг знает - что там китайцы намудрили.

Что касается 256, то это сдвиг влево на 8 разрядов. Может есть смысл посмотреть в программу на ПР200 - там ничего не намудрено?

Ура! Разобрался. Проблема была все-таки в настройках OPC ! Стал копаться в нем и нашел, что там для каждой переменной можно задавать старшинство регистров и байтов. И, разумеется все было зеркально относительно того, что требовалось. Вы правы! Умножение это сдвиг на один байт в нашем случае. Только я до этого сразу не допер (перебирая в голове все возможные варианты получения такой "математической операции" ). Немного сбивало с толку то, что в настройках самого прибора тех же самых последовательностей ничего не меняло (хотя с одной стороны вроде и не должно, а с другой если есть возможность менять, значит это для чего то там сделано). В работе самой программы я был уверен, поскольку просто по 485му она прекрасно работала пару лет. Просто решили расширить функционал и комфортность, выведя всё на монитор через скада вместо маленькой панели управления. Как говорится: "опыт приходит с опытом" :) Было бы куда приходить. Большое спасибо всем за поддержку и помощь, тема закрыта.