Vjam
Forum Haunter / Завсегдатай форума
Участник № / Member № 2261
отправлено / posted
Добрый день! Пытаемся считывать данные с контроллера по ModBus TCP/IP:
1. создали MODBUS-группу; 2. в группе создал и настроил три Rout_Word; 3. привязали источники к соотв. трем каналам типа Input.
TraceMode данные читает но запросы посылает только для одного регистра (считывает каждый по очереди). Как сделать так чтобы отправлялся запрос на групповое чтение сразу всех (трех) регистров. В памяти PLC они идут друг за другом. Спасибо
Сообщения / Posts 136 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Vjam
Forum Haunter / Завсегдатай форума
Участник № / Member № 2261
Vjam
Forum Haunter / Завсегдатай форума
Участник № / Member № 2261
отправлено / posted
Хм... Поторопился... На радостях начал читать еще 13 переменных. Добавил Rout_Word'ы и каналы. Теперь чтение происходит в два запроса. Первым читает первые 4 слова а вторым остальные 12ть. Все таки, как правильно организовывать связь по ModBus TCP/IP чтобы все читалось одним запросом? Спасибо
Сообщения / Posts 136 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Самый простой вариант - использовать канал CALL.ChGroupReq, подключенный к источнику Modbus (см.описание канала CALL.ChGroupReq).
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
отправлено / posted
В памяти PLC они идут друг за другом и ID каналов тоже должны идти друг за другом мл ID -> мл PLC addr
Сообщения / Posts 873 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Vjam
Forum Haunter / Завсегдатай форума
Участник № / Member № 2261
отправлено / posted
Действительно с помощью CALL.ChGroupReq все читается в один запрос. Как теперь более грамотно организовать обмен с PLC? Нужно отправлять несколько запросов на групповое чтение по разным адресам и несколько групповых запросов на запись так же по разным адресам (ip и порт тот же). Воодушевленный успехом начал ваять но появилось ряд вопросов. 1. Нужно ли для каждого запроса создавать отдельную группу MODBUS c одним Rout_Word'ом внутри или достаточно одной группы с разными Rout_Word'ами? 2. Насколько я понял каналы CALL.ChGroupReq должны иметь тип output и включаться поочередно? Спасибо )
Сообщения / Posts 136 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Для каждого канала ChGroupReq надо создавать 1 компонент с начальным адресом группы и соответствующей функцией: для записи - W_Word(16), для чтения - Rout_Word(3).
Каналы для чтения должнs быть INPUT и работать каждый со своим циклом независимо. Каналы для записи должны быть OUT и должны включаться на отрабатку при изменении любого из их аргументов.
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Vjam
Forum Haunter / Завсегдатай форума
Участник № / Member № 2261
отправлено / posted
С чтением вроде бы разобрался. Запросы отправляются, единственное, что значит "работать каждый со своим циклом"? С записью, вопросы остаются. Каналы output включатся сами при изменении аргументов или ими нужно управлять (отслеживать это самому и включать)?
Сообщения / Posts 136 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
В настоящее время - каналы OUT надо "отслеживать и включать" - одновременно с изменением любого его аргумента взводить в "1" атрибут EXEC (39).
Каналы запросов будут запрашивать с теми периодами, которые Вы задали в штатных настройках каналов.
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Vjam
Forum Haunter / Завсегдатай форума
Участник № / Member № 2261
отправлено / posted
Благодарю за поддержку! Сделал все каналы CALL.ChGroupReq с типом output и включаю их с нужной очередностью остылая "1" в атрибут EXEC (39). Все заработало как надо. )
Сообщения / Posts 136 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Vjam
Forum Haunter / Завсегдатай форума
Участник № / Member № 2261
отправлено / posted
Добрый день! Еще один вопрос по данной теме. Как узнать что связь по ModBus TCP/IP разорвана или есть ошибки. Читаю раздел справки "Управление и диагностика обмена по встроенным протоколам": Параметры управления и диагностики: статус: 0 – нет соединения с устройством; 1 – состояние подключения; 2, 3 – соединение установлено; итд... Где этот статус искать и как к нему привязаться? Спасибо
Сообщения / Posts 136 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
В том же разделе документации указано, что у канала ChGroupReq должны быть созданы аргументы в количестве, соответствующем количеству контролируемых этим каналом устройств. В этих аргументах можно видеть результаты диагностики и выводить их на экран и/или в программу.
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |