Просмотр полной версии : ПР200 преобразование MODBUS
Всех приветствутю! есть вопрос касаемо преобразования регистров модбаса. Проблема заключается в следующем на моем преприятии есть в эксплуатации приборы (преобразователи давления расплава) которые уже давно сняты с производства замен них вышли новые но вот незадача карта регистров модбас у них отличается если ранее фактичские показания давления хранились к примеру в регистре 1001 то в новом приборе они хранятся уже в регистре 1031 данные из этих регистров грузятся в скаду, данные из скады попадают в контроллер и использутся в различных математичских функциях. сразу хочу сказать что доступа к скаде мы не имеем (она запаролена)
Хотелось бы услышать ваше мнение возможно ли сделать так что бы при помощи пр200 сделать подмену регистров тоесть счиать с прибора 1031 преобразовать его в 1001 и засунуть эти преобразованные данные поднужным регистром уже в скаду?
В общем виде - ДА. Нужна будет ПРка с двумя RS-485.
По одному она будет Master и опрашивать датчик. По другому - Slave, и её будет опрашивать SCADA
ПЕРЕД всем этим хорошо бы проверить то, в кком виде датчик отдаёт данные.
А то ПРка может отдавать такие варианты данных:
* FLOAT32 (надо поиграться с порядком байт)
* 32-битное число (2 регистра), умноженное на что-то для сдвига десятичной точки
* 16-битное число (1 регистр), тоже умноженное для сдвига
А если там был какой-то хитрый формат типа 64-битного числа - то ПРка 64 бита не умеет
МихаилГл
28.10.2025, 10:19
Извиняюсь, какая то странная конфигурация, обычно контроллер считывает данные с оборудования, а не скада. Это какой то костыль, или не было на контроллере модбас интерфейса?
kondor3000
28.10.2025, 10:19
Вопрос, сколько регистров надо преобразовать, у ПР200 всего 64 регистра в слейве и адреса 512 -576
Вам нужен ПЛК110 [М-02] или лучше ПЛК2хх (можно задать адреса слейва, например от 1000 )
Всех приветствутю! есть вопрос касаемо преобразования регистров модбаса. Проблема заключается в следующем на моем преприятии есть в эксплуатации приборы (преобразователи давления расплава) которые уже давно сняты с производства замен них вышли новые но вот незадача карта регистров модбас у них отличается если ранее фактичские показания давления хранились к примеру в регистре 1001 то в новом приборе они хранятся уже в регистре 1031 данные из этих регистров грузятся в скаду, данные из скады попадают в контроллер и использутся в различных математичских функциях. сразу хочу сказать что доступа к скаде мы не имеем (она запаролена)
Хотелось бы услышать ваше мнение возможно ли сделать так что бы при помощи пр200 сделать подмену регистров тоесть счиать с прибора 1031 преобразовать его в 1001 и засунуть эти преобразованные данные поднужным регистром уже в скаду?
Наверно не получится - у ПР200 область пользовательских SLAVE переменных начинается с 512 (вроде) и это не изменить.
Есть контроллеры, в которых можно задать произвольную нумерацию регистров
В общем виде - ДА. Нужна будет ПРка с двумя RS-485.
По одному она будет Master и опрашивать датчик. По другому - Slave, и её будет опрашивать SCADA
ПЕРЕД всем этим хорошо бы проверить то, в кком виде датчик отдаёт данные.
А то ПРка может отдавать такие варианты данных:
* FLOAT32 (надо поиграться с порядком байт)
* 32-битное число (2 регистра), умноженное на что-то для сдвига десятичной точки
* 16-битное число (1 регистр), тоже умноженное для сдвига
А если там был какой-то хитрый формат типа 64-битного числа - то ПРка 64 бита не умеет
обычный с 16 битный по сути просто нужно сдвинуть нумерацию регистров
Наверно не получится - у ПР200 область пользовательских SLAVE переменных начинается с 512 (вроде) и это не изменить.
Есть контроллеры, в которых можно задать произвольную нумерацию регистров
можете если не сложно подсказать конкретные примеры?
Когда-то ОВЕН предлагал такой продукт как OPC/DDE Lectus (https://insat.ru/lectus/lectus-modbus-opc-server/).
С его помощью я подменял Modbus-устройства целиком.
Он позволяет полностью мимикрировать под любое Modbus-устройство.
Т.е. считывать любые данные из физического устройства и раздавать под другим ID и адресами виртуального.
Ни одна Scada подмены не замечала!!!
Когда-то ОВЕН предлагал такой продукт как OPC/DDE Lectus (https://insat.ru/lectus/lectus-modbus-opc-server/).
С его помощью я подменял Modbus-устройства целиком.
Он позволяет полностью мимикрировать под любое Modbus-устройство.
Т.е. считывать любые данные из физического устройства и раздавать под другим ID и адресами виртуального.
Ни одна Scada подмены не замечала!!!
на каком железе поднимали сервер?
Сейчас ОВЕН предлагает MasterOPC Server (https://owen.ru/product/opc_server_insat), что вероятно тоже самое с небольшими отличиями.
OPC Lectus работает на любой Windows. Ставим рядом со Scada'ой - на одном ПК.
Сейчас ОВЕН предлагает MasterOPC Server (https://owen.ru/product/opc_server_insat), что вероятно тоже самое с небольшими отличиями.
OPC Lectus работает на любой Windows. Ставим рядом со Scada'ой - на одном ПК.
опять же в каком формате будет раздавать данные сервер в OPC или MODBUS? и еще есть проблема что получается на каждый прибор мне будет нужен свой отдельный сервер ибо я не смогу одним устроством сразу быть первым втором третьем слэйвом для мастера (скада)
Я делаю так:
- настраиваю один аппаратный порт (например, AC4 USB-RS485), как Slave
- и добавляю в его конфигурацию все ID от подменяемых Modbus-устройств, с настройкой Modbus-таблицы каждого как у оригинала
- к этому порту подвожу RS485-сеть, т.е. ту, которую опрашивает Scada
- настраиваю другой аппаратный порт, как Master
- и добавляю в его конфигурацию новые Modbus-приборы
- для каждого считанного регистра нового, указываю как преобразовать и в какой регистр записать у подменяющего
Cоответственно у новых приборов своя сеть, опрашиваемая Lectus,
которая отвечает на запросы Scada при обращении к конкретным ID.
Кстати, передаются запросы не только на чтение, но и на запись!!!
У Lectus свой скриптовый язык, чтобы "блоху подковать".
У MasterOPC для этого встроен язык Lua. Короче, возможностей в разы больше!!!
Я делаю так:
- настраиваю один аппаратный порт (например, AC4 USB-RS485), как Slave
- и добавляю в его конфигурацию все ID от подменяемых Modbus-устройств, с настройкой Modbus-таблицы каждого как у оригинала
- к этому порту подвожу RS485-сеть, т.е. ту, которую опрашивает Scada
- настраиваю другой аппаратный порт, как Master
- и добавляю в его конфигурацию новые Modbus-приборы
- для каждого считанного регистра нового, указываю как преобразовать и в какой регистр записать у подменяющего
Cоответственно у новых приборов своя сеть, опрашиваемая Lectus,
которая отвечает на запросы Scada при обращении к конкретным ID.
Кстати, передаются запросы не только на чтение, но и на запись!!!
У Lectus свой скриптовый язык, чтобы "блоху подковать".
У MasterOPC для этого встроен язык Lua. Короче, возможностей в разы больше!!!
хорошо но должен же быть один выходной порт со своим адресом устройства для каждого прибора или я не прав?
Я не могу понять Ваш вопрос.
Давате так. Вот пример конфигурации:
86438
Scada настроена как Slave, на запросы, приходящие в этот порт отвечают виртуальные Dev1, Dev2, Dev3, у каждого свой ID и своя Modbus-таблица.
NewDevice настроена как Master, использует другой порт и опрашивает свои реальные Dev1, Dev2, Dev3, у каждого свой ID.
И пример настройки, который значение из регистра 0x0000 реального Dev1 переносит в такой же регистр виртуального Dev1.
Вопросы?
Мне кажется НЕТ, потому что выбирать в этом диапазоне регистры вероятно вы не сможете именно в ПР200 для слейва.
Чисто совет, поставьте на свой ПК RapidScada + платный от разработчика Modbus Slave и сможете через преобразователи интерфейсов подменить данные (драйвер слейва можно пощупать, генерируя ключи на пару дней)
забыл, потребуется модуль автоуправления, тоже платный.
Я не могу понять Ваш вопрос.
Давате так. Вот пример конфигурации:
86438
Scada настроена как Slave, на запросы, приходящие в этот порт отвечают виртуальные Dev1, Dev2, Dev3, у каждого свой ID и своя Modbus-таблица.
NewDevice настроена как Master, использует другой порт и опрашивает свои реальные Dev1, Dev2, Dev3, у каждого свой ID.
И пример настройки, который значение из регистра 0x0000 реального Dev1 переносить в такой же регистр виртуального Dev1.
Вопросы?
вопрос физического подключения. ибо у каждого прибора должен быть свой адресс. тоесть как я щас понимаю мне нужно будет ставить отдельный компьютер замен одного прибора а иначе как я опрошу к примеру три устройста с одного порта
Эти три прибора будут в одной сети? У каждого свой ID? (ID - Modbus-адрес прибора)
Lectus без проблем их опросит с одного порта.
Эти три прибора будут в одной сети? У каждого свой ID? (ID - Modbus-адрес прибора)
Lectus без проблем их опросит с одного порта.
в три в одной сети. у каждого устройства свой адрес. вопрос как выбросить с одного порта все три устроства в скаду под разными адресами
Когда Scada запросит устройство по ID, которого реально не будет в сети, но оно будет в Lectus, то Lectus ответит вместо этого устройства.
Все IDы Вам же известны? Вы их зададите виртуальным устройствам в Lectus и всё!!!
Когда Scada запросит устройство по ID, которого реально не будет в сети, но оно будет в Lectus, то Lectus ответит вместо этого устройства.
Все IDы Вам же известны? Вы их зададите виртуальным устройствам в Lectus и всё!!!
теперь понял спасибо
Мне кажется НЕТ, потому что выбирать в этом диапазоне регистры вероятно вы не сможете.
1001? Ну пусть 0x03E9
86439
В Lectus без проблем можно создать регистр с любым адресом.
86440
теперь понял спасибо
IDы реальных и виртуальных устройств могут не совпадать, т.к. они находятся в разных сетях.
Если Вы включите Log в Lectus при работе со Scada, то запросы к ID, которых у него нет, он будет выводить "Нет устройства с таким ID" и отвечать не будет.
Соответственно, на запрос ответит реальный прибор, и наоборот.
При составлении Modbus-таблицы, можно указывать только те регистры, которые реально будут нужны.
Указывать все необязательно.
Если забыли что-то добавить, то Lectus в Log'е сообщит, что было обращение к несуществующему адресу и что его надо добавить.
Я же с помощью Lectus еще делаю:
- все оперативные параметры собираю в одном виртуальном ModbusTCP-сервере с доступом из разных мест для нескольких мастеров (например, панели СП3хх или из другого ПО) (например, совместный доступ к счётчику газа - для контролирующей организации через GSM и нам на панель)
- создаю виртуальную сеть из приборов для отладки проектов на СП3хх, ПР, ПЛК и и т.д.
- протоколирую все параметры в SQL-сервере с визуализацией в виде графиков и отчётов
IDы реальных и виртуальных устройств могут не совпадать, т.к. они находятся в разных сетях.
Если Вы включите Log в Lectus при работе со Scada, то запросы к ID, которых у него нет, он будет выводить "Нет устройства с таким ID" и отвечать не будет.
Соответственно, на запрос ответит реальный прибор, и наоборот.
При составлении Modbus-таблицы, можно указывать только те регистры, которые реально будут нужны.
Указывать все необязательно.
Если забыли что-то добавить, то Lectus в Log'е сообщит, что было обращение к несуществующему адресу и что его надо добавить.
последний вопрос получиться ли настроить двухстронний маппинг с записью значений в прибор. тоесть допустим я из скады захочу поменять SP прибора
в теории все должно выглядить примерно таким образом
SCADA записывает в 1001 → Lectus преобразует → Записывает в 1031 прибора
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot