This is topic Modbus TCP IP + Delta in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/31/t/000705.html

Posted by Demus (Участник № / Member № 3560) on :
 
Здравствуйте.
По проекту необходимо обеспечить связь ПЛК производства Delta Electronics (DVP28SV) и TraceMode по Ethernet. Также используется модуль DVPEN01-SL. ОС Win Vista Home
Попробовали создать простой проект в ТМ6, предварительно изучив Пример работы с ModbusTCP из темы Тестовые примеры. Считывать и записывать параметры не получается.
Возникли следующие вопросы:
1) Из встроенной Справки не понятно, что означают поля Номер порта, Адрес, Канал в редакторе компонентов источников-приемников.
Порт по идее 502 используется. Но число 0x1f6 никак не вписывается в поле Номер порта (это поле 1байтное).
У поля Адрес максимальное значение тоже 0xff. А в контроллере адреса достигают 0xFFFF. Как использовать это поле?
Для чего предназначено поле Канал?
2) Нужно ли специально редактировать файл ip_modbus? Или достаточно задать параметры в редакторе компонентов источников-приемников.

Заранее спасибо.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1) В поле Номер порта задается номер COM порта (используется только для обмена по Mddbus RTU)

2) Поле Адрес задает сетевой адрес устройства (это не ip адрес)

3) Поле Канал задает адрес регистра в контроллере. Также Вам нужно использовать соответсвующую функцию чтения.

4) файл ip_modbus нужно редактировать только в том случае, когда Вам необходимо задать специальные параметры обмена.
 
Posted by Demus (Участник № / Member № 3560) on :
 

 
Posted by Demus (Участник № / Member № 3560) on :
 

 
Posted by Demus (Участник № / Member № 3560) on :
 
Спасибо за ответ. Связь установить удалось. Теперь необходимо считывать состояния внутренних реле (0 или 1). Для установки или сброса использую W_SingleCoil(5).
А вот для чтения состояния реле ничего из списка подтипов 9 и 100 не подходит.
Подскажите есть ли такая возможность без каких-либо дополнительных ухищрений (считывание подряд байта состояний реле с помощью Rin_Byte(2) и дальнейшая программмная обработка например)?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Да, именно так и надо делать. Считывать несколько регистров подряд и дальше работать с битами каналов.
 
Posted by TT (Участник № / Member № 4177) on :
 
Добрый день. А по подробнее нельзя описать как организовать процесс считывания, используя функцию Rin_Byte(2), или если можно вышлите пример с прогрпммной обработкой на почтовый ящик.Заранее спасибо.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Функция Rin_Byte(2) считывает дискретные входы - от 1 до 8 входов.
Адрес первого входа задается в HEX-формате в поле "Канал" соответствующего компонента слоя "Источники/Приемники".
Количество считываемых входов (меньше 8) задается в разрядности канала HEX, связанного с этим источником. По умолчанию считывается 8 входов.
 
Posted by Michael R (Участник № / Member № 4315) on :
 
Здравствуйте!
Можно ли читать с контроллера по протоколу ModbusTCP данные, имеющие формат 4х байтового целого числа?
Не понятно, можно ли составить из двух 16 битных слов прочитанных через modbus, одну переменную 32х разрядную целую, не прибегая к программированию на технологических языках?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Да, это возможно. С помощью канала Call.ChGroupRq с привязкой MODBUS.R_FIFO_Queue
 
Posted by Michael R (Участник № / Member № 4315) on :
 
Но дело в том, что компонент R_FIFO_Queue
реализует функцию 24 modbus (Read FIFO Queue).

А требуется читать данные с помощью функций 3 (Read Holding Registers) либо 4 (Read Input Registers).
Ведь данные типа float нормально прочитываются, как чтение пары соседних регистров и преобразование в 32х битное float. Нужно то же самое, только с преобразованием в 32х битное целое.
Т.е. это сделать штатными средствами не получится?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Вы прочитайте описание Call.ChGroupRq с привязкой MODBUS.R_FIFO_Queue прежде, чем делать выводы.

Параметр=1

Канал посылает в контроллер команду MODBUS, сформированную по следующим правилам:

номер функции соответствует аргументу arg0
 
Posted by Michael R (Участник № / Member № 4315) on :
 
Ага, понятно. спасибо!
 
Posted by Michael R (Участник № / Member № 4315) on :
 
А порядок следования байт при записи в аргумент DINT можно менять?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Нет, нельзя.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2