На форуме обязательно:
  1. Заполнить свой профиль НА РУССКОМ ЯЗЫКЕ КИРИЛЛИЦЕЙ. См. Правила, п.2.d.
  2. Не писать свой вопрос в первую попавшуюся тему, а вместо этого создать свою. См. Правила, п.3.a.

Рекламу мы не размещаем ни на каких условиях.

Опрос нескольких устройств Modbus RTU S7-1200

ПЛК SIMATIC (S7-200, S7-1200, S7-300, S7-400, S7-1500, ET200)
Ответить

Автор темы
12zero
здесь недавно
здесь недавно
Сообщения: 26
Зарегистрирован: 29 май 2015, 10:21
Имя: Сергей Александрович

Опрос нескольких устройств Modbus RTU S7-1200

Сообщение 12zero » 20 дек 2017, 21:27

Добрый день!

Код: Выделить всё

Это опыт работы на контроллере S7-1200, да и вообще первый проект в области асутп
Прошу не пинать за, возможно, кривое и технически неправильное изложение своей проблемы. Пишу на LAD 
.

Вводная: Необходимо вести опрос 15 ведомых амперметров по Modbus RTU. Скорость обновления показаний на приборе до 1.1 сек.
1. Составил в TIA v13 в организационном блоке MAIN запрос MODBUS_COMM_LOAD.
2. Далее MB_MASTER.
3. Добавил смену адреса прибора после каждой успешной (DONE) или неудачной попытки (ERROR) обращения к устройству.
4. Данные со всех приборов получаю в штатном режиме.

Проблема: При выключении любого устройства из сети, происходит задержка при опросе ( BUSY ), длительность примерно 3s для каждого отключенного устройства. Так как опрос происходит последовательно, в итоге длительность ответа от работающих устройств возрастает.
Обратил внимание, что в защищенном от записи FB MB_MASTER есть переменная BLOCKED_PROC_TIMEOUT (REAL) значение которой 3.0. Насколько я понимаю она отвечает за время ожидания до того, как записать ошибку ( ERROR ).

Вопрос: Есть ли решения, возможно идеи, как уменьшить время ожидания, или пропустить это устройство для обеспечения нормального времени опроса 15 устройств.
На форумах находил аналогичные проблемы, но решений не увидел.


UNTK_RAA
здесь недавно
здесь недавно
Сообщения: 48
Зарегистрирован: 01 мар 2010, 17:37
Имя: Алексей Алексеевич
Поблагодарили: 1 раз

Опрос нескольких устройств Modbus RTU S7-1200

Сообщение UNTK_RAA » 21 дек 2017, 05:41

Про таймаут точно не помню (вроде 1 сек), но точно, что мастер шлет три запроса, пока не диагностирует отказ. Вот и набирается 3 сек.

А вот как лечить? Самому реализовывать протокол с помощью функций работы с портом? Так, наверное.


Михайло
почётный участник форума
почётный участник форума
Сообщения: 2630
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
Благодарил (а): 1 раз
Поблагодарили: 77 раз
Контактная информация:

Опрос нескольких устройств Modbus RTU S7-1200

Сообщение Михайло » 21 дек 2017, 16:28

Вы можете перезаписать значение этой переменной в этом датаблоке с помощью функции MOVE.


Автор темы
12zero
здесь недавно
здесь недавно
Сообщения: 26
Зарегистрирован: 29 май 2015, 10:21
Имя: Сергей Александрович

Опрос нескольких устройств Modbus RTU S7-1200

Сообщение 12zero » 21 дек 2017, 18:05

Михайло писал(а): Вы можете перезаписать значение этой переменной в этом датаблоке с помощью функции MOVE.
Михайло, спасибо, попробую завтра утром.
А это технически верно? Какие могут быть негативные последствия уменьшения времени ожидания?

Интересно узнать, на сколько быстрым может быть время опроса до 32 устройств в линии. Исходя из личного опыта.


Автор темы
12zero
здесь недавно
здесь недавно
Сообщения: 26
Зарегистрирован: 29 май 2015, 10:21
Имя: Сергей Александрович

Опрос нескольких устройств Modbus RTU S7-1200

Сообщение 12zero » 02 мар 2018, 09:59

Михайло писал(а):
21 дек 2017, 16:28
Вы можете перезаписать значение этой переменной в этом датаблоке с помощью функции MOVE.
Не получилось изменением этой переменной добиться уменьшения ожидания.
Обратил внимание, что при отключении одного из устройств опрос продолжается с задержкой (как описал в шапке), но при этом, когда цикл доходит до работающих устройств, опрос производится, ответ приходит, но ни DONE ни ERROR блока MB_MASTER не срабатывает (постоянно активна BUSY). В чем может быть причина?

Есть предположение, что необходимо настроить скорость опроса, но т.к. опыта в работе с tia мало, я не нашел где это можно сделать.


Михайло
почётный участник форума
почётный участник форума
Сообщения: 2630
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
Благодарил (а): 1 раз
Поблагодарили: 77 раз
Контактная информация:

Опрос нескольких устройств Modbus RTU S7-1200

Сообщение Михайло » 02 мар 2018, 14:41

DONE включается буквально на один цикл, поэтому мониторить его глазами бесполезно. Функция Модбаса постоянна занята, поэтому практически всегда BUSY=1, это нормально. ERROR вообще может не появляться, в зависимости от ситуации.

Мне кажется 15 устройств и 1,1 сек - это вполне адекватный результат. Какая скорость обмена выставлена?


Автор темы
12zero
здесь недавно
здесь недавно
Сообщения: 26
Зарегистрирован: 29 май 2015, 10:21
Имя: Сергей Александрович

Опрос нескольких устройств Modbus RTU S7-1200

Сообщение 12zero » 05 мар 2018, 23:26

Михайло писал(а):
02 мар 2018, 14:41
DONE включается буквально на один цикл, поэтому мониторить его глазами бесполезно. Функция Модбаса постоянна занята, поэтому практически всегда BUSY=1, это нормально. ERROR вообще может не появляться, в зависимости от ситуации.

Мне кажется 15 устройств и 1,1 сек - это вполне адекватный результат. Какая скорость обмена выставлена?
По поводу DONE. Поставил счетчик, не обратил внимание на тип данных. Счетчик уперся в предел и мне показалось, что ни DONE ни ERROR не работают. :ges_slap:
Скорость 19200.

Проблему решил.(во всяком случае я так думаю). В системной DB modbus_comm_load изменил 2 переменные. 1) RETRIES. Насколько я понял она отвечает за кол-во повторных опросов, стояло 2 изменил на 1. 2) RESP_TO отвечает за длительность ожидания. Стояла 1000ms, изменил на 50ms.

Теперь с 15 отключенными приборами из 17 (да, устройств стало больше) скорость опроса визуально быстрее раза в секунду. Со всеми работающими устройствами несколько раз в секунду.

Подскажите, где посмотреть время цикла? В онлайн диагностике показывает от 1 до 3ms, но тогда я не понимаю как оно бьется со скоростью опроса всех 17 устройств.(что происходит в остальное время? :ges_hmm: )

Прошу прощения за кривое объяснение.


Михайло
почётный участник форума
почётный участник форума
Сообщения: 2630
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
Благодарил (а): 1 раз
Поблагодарили: 77 раз
Контактная информация:

Опрос нескольких устройств Modbus RTU S7-1200

Сообщение Михайло » 06 мар 2018, 05:41

Время цикла основного процессора и коммуникационного процессора - это разные вещи. Основной процессор (цикл OB1) лишь подготавливает и забирает данные через буфер, управляет режимами, а коммуникационный процессор работает "на своей волне", на более высокой частоте.


ASUTP_PLC
эксперт
эксперт
Сообщения: 1006
Зарегистрирован: 11 ноя 2012, 17:21
Имя: Нурисламов Руслан М.
Благодарил (а): 23 раза
Поблагодарили: 28 раз

Опрос нескольких устройств Modbus RTU S7-1200

Сообщение ASUTP_PLC » 06 мар 2018, 07:25

Михайло писал(а):
06 мар 2018, 05:41
Время цикла основного процессора и коммуникационного процессора - это разные вещи. Основной процессор (цикл OB1) лишь подготавливает и забирает данные через буфер, управляет режимами, а коммуникационный процессор работает "на своей волне", на более высокой частоте.
На самом деле такие выкрутасы появляются когда пара коммуникационных процессоров в работе.
По идее они влиять друг на друга не должны. А по факту - влияют.
Был опрос по радиоканалу, по одной линии. Попробовали разделить на две линии, добавив второй коммуникационник, физически это стало другой линией. Ничего хорошего это не дало.

Ответить

Вернуться в «Simatic TIA Portal»