This is topic Чтение множественных регистров (FC 0x03) по ModBus TCP/IP 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/001146.html

Posted by Vjam (Участник № / Member № 2261) on :
 
Добрый день!
Пытаемся считывать данные с контроллера по ModBus TCP/IP:

1. создали MODBUS-группу;
2. в группе создал и настроил три Rout_Word;
3. привязали источники к соотв. трем каналам типа Input.

TraceMode данные читает но запросы посылает только для одного регистра (считывает каждый по очереди). Как сделать так чтобы отправлялся запрос на групповое чтение сразу всех (трех) регистров. В памяти PLC они идут друг за другом. Спасибо [Улыбка / Smile]
 
Posted by Vjam (Участник № / Member № 2261) on :
 
Вопрос снят. Все работает как надо )
 
Posted by Vjam (Участник № / Member № 2261) on :
 
Хм... Поторопился... [Улыбка / Smile]
На радостях начал читать еще 13 переменных.
Добавил Rout_Word'ы и каналы. Теперь чтение происходит в два запроса. Первым читает первые 4 слова а вторым остальные 12ть. Все таки, как правильно организовывать связь по ModBus TCP/IP чтобы все читалось одним запросом? Спасибо [Улыбка / Smile]
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Самый простой вариант - использовать канал CALL.ChGroupReq, подключенный к источнику Modbus (см.описание канала CALL.ChGroupReq).
 
Posted by Nico (Участник № / Member № 5342) on :
 
В памяти PLC они идут друг за другом и ID каналов
тоже должны идти друг за другом
мл ID -> мл PLC addr
 
Posted by Vjam (Участник № / Member № 2261) on :
 
Действительно с помощью CALL.ChGroupReq все читается в один запрос. Как теперь более грамотно организовать обмен с PLC? Нужно отправлять несколько запросов на групповое чтение по разным адресам и несколько групповых запросов на запись так же по разным адресам (ip и порт тот же). Воодушевленный успехом начал ваять но появилось ряд вопросов. [Улыбка / Smile]
1. Нужно ли для каждого запроса создавать отдельную группу MODBUS c одним Rout_Word'ом внутри или достаточно одной группы с разными Rout_Word'ами?
2. Насколько я понял каналы CALL.ChGroupReq должны иметь тип output и включаться поочередно?
Спасибо )
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Для каждого канала ChGroupReq надо создавать 1 компонент с начальным адресом группы и соответствующей функцией: для записи - W_Word(16), для чтения - Rout_Word(3).

Каналы для чтения должнs быть INPUT и работать каждый со своим циклом независимо.
Каналы для записи должны быть OUT и должны включаться на отрабатку при изменении любого из их аргументов.
 
Posted by Vjam (Участник № / Member № 2261) on :
 
С чтением вроде бы разобрался. Запросы отправляются, единственное, что значит "работать каждый со своим циклом"? С записью, вопросы остаются. Каналы output включатся сами при изменении аргументов или ими нужно управлять (отслеживать это самому и включать)?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В настоящее время - каналы OUT надо "отслеживать и включать" - одновременно с изменением любого его аргумента взводить в "1" атрибут EXEC (39).

Каналы запросов будут запрашивать с теми периодами, которые Вы задали в штатных настройках каналов.
 
Posted by Vjam (Участник № / Member № 2261) on :
 
Благодарю за поддержку!
Сделал все каналы CALL.ChGroupReq с типом output и включаю их с нужной очередностью остылая "1" в атрибут EXEC (39). Все заработало как надо. )
 
Posted by Vjam (Участник № / Member № 2261) on :
 
Добрый день!
Еще один вопрос по данной теме. Как узнать что связь по ModBus TCP/IP разорвана или есть ошибки. Читаю раздел справки "Управление и диагностика обмена по встроенным протоколам":
Параметры управления и диагностики:
статус:
0 – нет соединения с устройством;
1 – состояние подключения;
2, 3 – соединение установлено;
итд... Где этот статус искать и как к нему привязаться? Спасибо [Улыбка / Smile]
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В том же разделе документации указано, что у канала ChGroupReq должны быть созданы аргументы в количестве, соответствующем количеству контролируемых этим каналом устройств.
В этих аргументах можно видеть результаты диагностики и выводить их на экран и/или в программу.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2