Demus
Junior Member / Новичок
Участник № / Member № 3560
отправлено / posted
Здравствуйте. По проекту необходимо обеспечить связь ПЛК производства Delta Electronics (DVP28SV) и TraceMode по Ethernet. Также используется модуль DVPEN01-SL. ОС Win Vista Home Попробовали создать простой проект в ТМ6, предварительно изучив Пример работы с ModbusTCP из темы Тестовые примеры. Считывать и записывать параметры не получается. Возникли следующие вопросы: 1) Из встроенной Справки не понятно, что означают поля Номер порта, Адрес, Канал в редакторе компонентов источников-приемников. Порт по идее 502 используется. Но число 0x1f6 никак не вписывается в поле Номер порта (это поле 1байтное). У поля Адрес максимальное значение тоже 0xff. А в контроллере адреса достигают 0xFFFF. Как использовать это поле? Для чего предназначено поле Канал? 2) Нужно ли специально редактировать файл ip_modbus? Или достаточно задать параметры в редакторе компонентов источников-приемников.
отправлено / posted
1) В поле Номер порта задается номер COM порта (используется только для обмена по Mddbus RTU)
2) Поле Адрес задает сетевой адрес устройства (это не ip адрес)
3) Поле Канал задает адрес регистра в контроллере. Также Вам нужно использовать соответсвующую функцию чтения.
4) файл ip_modbus нужно редактировать только в том случае, когда Вам необходимо задать специальные параметры обмена.
Сообщения / Posts 17344 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Demus
Junior Member / Новичок
Участник № / Member № 3560
Demus
Junior Member / Новичок
Участник № / Member № 3560
отправлено / posted
Спасибо за ответ. Связь установить удалось. Теперь необходимо считывать состояния внутренних реле (0 или 1). Для установки или сброса использую W_SingleCoil(5). А вот для чтения состояния реле ничего из списка подтипов 9 и 100 не подходит. Подскажите есть ли такая возможность без каких-либо дополнительных ухищрений (считывание подряд байта состояний реле с помощью Rin_Byte(2) и дальнейшая программмная обработка например)?
Сообщения / Posts 10 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Да, именно так и надо делать. Считывать несколько регистров подряд и дальше работать с битами каналов.
Сообщения / Posts 17344 | Из / From: Россия
| IP / IP: IP адрес / IP address |
TT
Active Forum Member / Активный участник форума
Участник № / Member № 4177
отправлено / posted
Добрый день. А по подробнее нельзя описать как организовать процесс считывания, используя функцию Rin_Byte(2), или если можно вышлите пример с прогрпммной обработкой на почтовый ящик.Заранее спасибо.
Сообщения / Posts 66 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Функция Rin_Byte(2) считывает дискретные входы - от 1 до 8 входов. Адрес первого входа задается в HEX-формате в поле "Канал" соответствующего компонента слоя "Источники/Приемники". Количество считываемых входов (меньше 8) задается в разрядности канала HEX, связанного с этим источником. По умолчанию считывается 8 входов.
Сообщения / Posts 17344 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Michael R
Junior Member / Новичок
Участник № / Member № 4315
отправлено / posted
Здравствуйте! Можно ли читать с контроллера по протоколу ModbusTCP данные, имеющие формат 4х байтового целого числа? Не понятно, можно ли составить из двух 16 битных слов прочитанных через modbus, одну переменную 32х разрядную целую, не прибегая к программированию на технологических языках?
Сообщения / Posts 5 | Из / From: Russia
| IP / IP: IP адрес / IP address |
отправлено / posted
Да, это возможно. С помощью канала Call.ChGroupRq с привязкой MODBUS.R_FIFO_Queue
Сообщения / Posts 17344 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Michael R
Junior Member / Новичок
Участник № / Member № 4315
отправлено / posted
Но дело в том, что компонент R_FIFO_Queue реализует функцию 24 modbus (Read FIFO Queue).
А требуется читать данные с помощью функций 3 (Read Holding Registers) либо 4 (Read Input Registers). Ведь данные типа float нормально прочитываются, как чтение пары соседних регистров и преобразование в 32х битное float. Нужно то же самое, только с преобразованием в 32х битное целое. Т.е. это сделать штатными средствами не получится?
Сообщения / Posts 5 | Из / From: Russia
| IP / IP: IP адрес / IP address |
Michael R
Junior Member / Новичок
Участник № / Member № 4315
отправлено / posted
А порядок следования байт при записи в аргумент DINT можно менять?
Сообщения / Posts 5 | Из / From: Russia
| IP / IP: IP адрес / IP address |