Вход

Просмотр полной версии : Проверьте пожалуйста, правильно ли я настроил подключение к датчику?



alex1z
01.02.2011, 17:53
Приветствую, уважаемые коллеги! :)

Думаю, что вопрос несложный для экспертов.

Я новичок в CoDeSys и мало с ним знаком. Мне поставили задачу подключить датчик Modbus slave через интерфейс RS-485 к контроллеру Овен ПЛК 150.

Датчик:
- Modbus slave;
- Node id = 2;
- Скорость подключения 57600;
- Фрейм RTU.

Для начала я решил попробовать прочитать серийный номер датчика, который расположен по адресу 40001, считывающийся по команде 0x03 и имеющий длину в 1 байт.

Я решил сконфигурировать входы/выходы следующим образом:
1. Добавил Modbus (Master).
2. Настроил связь по RS-485:
- назначил Node id = 1;
- скорость 57600;
- фрейм RTU.
3. Добавил Universal Mudbus device:
- Node id = 2;
- ModuleSlaveAddress = 2.
(Насколько я понял из документации, здесь нужно указать тип сети Serial для RS-485 и Modbus node id).
4. Добавил '8 bit input module':
- Node id = 2;
- Register address = 40001 (адрес серийного номера датчика);
- Command = 0x03 (из документации к датчику).
5. Дал названия каналам: байт sn и биты sn1..8.

Во время выполнения смотрю глобальные переменные: пусто. Хотя, при подключении датчика через переходник к USB, поставляемый к комплекте, всё работает. Серийный номер датчика 29.

В переменных Modbus (Master) следующая информация:
Last address: 2
Last error: 0x81.

Как я понимаю, контроллер пытается считать какой-то дискретный выход датчика, возможно для каких-то действий инициализации, но это у него не получается.

Итак вопрос: правильно ли я настроил подключение с датчиком в CoDeSys (при условии, что физически всё подключено правильно)? Подскажите, что можно подкорректировать?

P.S. прилагаю скриншоты к тексту.

alex1z
01.02.2011, 17:55
Ещё два скриншота. У меня их 7, а можно загрузить только 5.

Николаев Андрей
01.02.2011, 19:26
4 - команда, первый регистр.
Нужно вводить не Node, а адрес Slave устройства, который вы ему присвоили при конфигурировании.

alex1z
01.02.2011, 19:39
4 - команда, первый регистр.
Нужно вводить не Node, а адрес Slave устройства, который вы ему присвоили при конфигурировании.

Спасибо за быстрый ответ, но я немного не понял сути. Могли бы Вы прояснить более подробно?

"4 - команда, первый регистр.": К чему относится высказывание к адресу "40001"? Что мне нужно с этим сделать?

"Нужно вводить не Node, а адрес Slave устройства, который вы ему присвоили при конфигурировании.": Как я понял, Node id во вкладке "Base parameters" и есть адрес устройства, т.е. номер от 0 до 255. При этом у меня 1 назначен ПЛК (Master), а 2 назначен датчику (Slave). Если я понимаю неверно, проясните, пожалуйста.

Николаев Андрей
02.02.2011, 10:56
Нет.
Многие производители номера регистров пишут:
Х0001, Х0001 и т.д.
Х в данном случае - команда, которой будет считываться значение переменной.
0001 - соответственно номер регистра.
NodID - это внутренний адрес подмодуля в CoDeSys, не имеет никакого отношения к физическому адресу Slave устройства. Адрес Slave задается в UniversalModBusDevice, который добавляется в ModBus Master.
Посмотрите на сайте описание подключения модулей с помощью UniversalModBusDevice.

alexval2006
02.02.2011, 11:43
Руководство по подключению МВА8, МВУ8 и МДВВ к ПЛК по протоколу ModBus (http://owen.ru/forum/attachment.php?attachmentid=529&d=1212390987) это вам должно помочь

alex1z
02.02.2011, 11:49
Руководство по подключению МВА8, МВУ8 и МДВВ к ПЛК по протоколу ModBus (http://owen.ru/forum/attachment.php?attachmentid=529&d=1212390987) это вам должно помочь

Спасибо, но ссылка не работает.

alex1z
02.02.2011, 11:54
Нет.
Многие производители номера регистров пишут:
Х0001, Х0001 и т.д.
Х в данном случае - команда, которой будет считываться значение переменной.
0001 - соответственно номер регистра.
NodID - это внутренний адрес подмодуля в CoDeSys, не имеет никакого отношения к физическому адресу Slave устройства. Адрес Slave задается в UniversalModBusDevice, который добавляется в ModBus Master.
Посмотрите на сайте описание подключения модулей с помощью UniversalModBusDevice.

Спасибо за разъяснение. В моём случае производителем датчика указан номер регистра "40001" и указана команда для чтения "3".

Подскажите, ещё по поводу Node Id, пожалуйста. Его нужно указывать самому или достаточно оставить то значение, которое задал CoDeSys по-умолчанию?

alexval2006
02.02.2011, 12:01
ссылка работает хорошо проверил для скачивания нужно входить под логином и паролем на форум овен
http://www.owen.ru/forum/showpost.php?p=7485&postcount=6

Николаев Андрей
02.02.2011, 12:18
NodID не трогаете. Это значение CoDeSys выдает.

alex1z
02.02.2011, 12:24
ссылка работает хорошо проверил для скачивания нужно входить под логином и паролем на форум овен
http://www.owen.ru/forum/showpost.php?p=7485&postcount=6

Вот это работает, спасибо! :) Там ссылка на rar-архив не работает, zip- -архив скачивается без проблем.

alex1z
03.02.2011, 17:41
Всем спасибо, проблема разрешилась. Всё дело в документации по датчику - она была немного некорректной.

В целом, мои настройки верны, но для данного датчика, для этого конкретного запроса, следовало использовать адрес "1" вместо "40001", а также поменять "Byte Sequence" с "Trace_mode" на "Native".