PDA

Просмотр полной версии : Чтение регистров ПР200 по Modbus



dimap101
27.04.2022, 16:28
Добрый день,

Встала простая на первый взгляд задача с ПЛК210 (через Codesys) считать регистры с ПР200, конкретно с AI1.

ПЛК210 - master
ПР200 - slave

Устройство на RS485 в Codesys создали, slave виден.
В ПР200 вывели значение AI1 на экран - все ОК.

Пытаемся читать через функции 3 или 4 значения по адресам 0x0b00 (длина 2) - пусто
Создали сетевую переменную с адресом 512 (dec, ну или 0x200), пытаемся читать по адресу 0x200 - пусто

Порядок байт меняли - безрезультатно (хотя это и сами понимает, что это на значения может влиять, но не на отсутствие результата).

Что не так то ?
Предполагаю, что проблема достаточно простая, но не могу понять где и что не так...

P.S. есть другой модуль аналогового ввода - с него все замечательно читается по такой же схеме, адреса конечно другие...

---
dimap

kondor3000
27.04.2022, 17:39
Добрый день,

Встала простая на первый взгляд задача с ПЛК210 (через Codesys) считать регистры с ПР200, конкретно с AI1.
Создали сетевую переменную с адресом 512 (dec,


Переменная с адресом 512-513( два регистра) должна быть Float, при получении переменной с адресом 512 (функция чтения 3Х ) в ПЛК210,
надо собрать переменную REAL ( представление Float) из двух полученных WORD, при неправильном отображении переставить местами регистры WORD.
И конечно проверить настройки RS485.

Для упрощения процедуры, можно в ПР флоат умножить на 10 и конвертировать в целочисленное ( будет 1 регистр). При получении целочисленного, конвертировать во флоат и (или) разделить на 10.0

Сергей0308
27.04.2022, 18:16
Вообще-то для чтения значений с аналоговых(дискретных) входов ПР200 можно(лучше) не создавать никаких дополнительных(дублирующих) регистров, количество сетевых регистров ограничено(и так не так много), короче, не вижу в этом разумного смысла!

60506

60507

dimap101
28.04.2022, 04:53
Для упрощения процедуры, можно в ПР флоат умножить на 10 и конвертировать в целочисленное ( будет 1 регистр).

для это есть регистр 0x0b80 - там уже целочисленное сразу отдается.

Но вопрос принципиальный - мы по всем регистрам 0 получаем.

---
dimap

kondor3000
28.04.2022, 08:28
для это есть регистр 0x0b80 - там уже целочисленное сразу отдается.

Но вопрос принципиальный - мы по всем регистрам 0 получаем.


Выкладывайте скрины всех настроек. Если не работают никакие адреса, значит с настройками напутали.

dimap101
28.04.2022, 09:24
Разобрались... Мы в программе ПЛК210 (Codesys) не использовали получаемые данные из ПР210... видимо поэтому опросы по Modbus не проходили и на устройстве RS485 данные не обновлялись.