1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Опрос нескольких устройств 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 »

Добрый день!

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

Это опыт работы на контроллере 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
здесь недавно
здесь недавно
Сообщения: 76
Зарегистрирован: 01 мар 2010, 17:37
Имя: Алексей Алексеевич
Страна: Россия
город/регион: Нижний Тагил
Благодарил (а): 12 раз
Поблагодарили: 8 раз

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

Сообщение UNTK_RAA »

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

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

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3559
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 253 раза

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

Сообщение Михайло »

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

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

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

Сообщение 12zero »

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

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

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

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

Сообщение 12zero »

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

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

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3559
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 253 раза

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

Сообщение Михайло »

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

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

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

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

Сообщение 12zero »

Михайло писал(а): 02 мар 2018, 14:41DONE включается буквально на один цикл, поэтому мониторить его глазами бесполезно. Функция Модбаса постоянна занята, поэтому практически всегда 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: )

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

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3559
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 253 раза

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

Сообщение Михайло »

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

ASUTP_PLC
эксперт
эксперт
Сообщения: 1055
Зарегистрирован: 11 ноя 2012, 18:21
Имя: Нурисламов Руслан М.
Страна: Казахстан
город/регион: Алматы
Благодарил (а): 23 раза
Поблагодарили: 31 раз

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

Сообщение ASUTP_PLC »

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

mf_
осмотрелся
осмотрелся
Сообщения: 163
Зарегистрирован: 09 апр 2019, 19:52
Имя: Денис
Страна: Россия
город/регион: Saint-Petersburg
Благодарил (а): 45 раз
Поблагодарили: 19 раз

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

Сообщение mf_ »

Добрый вечер всем. Прошу подсказать, как быть, если нужно опрашивать разные устройства с разной скоростью (у одних не более 4800, у других - не менее 9600 в настройках). Делить на две сети, на разные платы/модули? Или можно их опрашивать с физического одного порта?
Аватара пользователя

M3f
не первый раз у нас
не первый раз у нас
Сообщения: 377
Зарегистрирован: 31 янв 2017, 11:08
Имя: Николай
Благодарил (а): 8 раз
Поблагодарили: 116 раз

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

Сообщение M3f »

mf_, Если будет ПЛК S7-1200, то необходимо делить на разные модули.
EPLAN Electric P8 Professional+ 2.7 HF1 11496 | TIA Portal Professional V17 Upd1 | Creo Parametric 4.0 M070

mf_
осмотрелся
осмотрелся
Сообщения: 163
Зарегистрирован: 09 апр 2019, 19:52
Имя: Денис
Страна: Россия
город/регион: Saint-Petersburg
Благодарил (а): 45 раз
Поблагодарили: 19 раз

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

Сообщение mf_ »

Да, 1200.
Вот думаю, пока нет второго модуля, ввести попеременный опрос с разными скоростями.
Аватара пользователя

M3f
не первый раз у нас
не первый раз у нас
Сообщения: 377
Зарегистрирован: 31 янв 2017, 11:08
Имя: Николай
Благодарил (а): 8 раз
Поблагодарили: 116 раз

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

Сообщение M3f »

Конфигурация порта идет обычно при первой загрузки ПЛК, переконфигурация в цикле на старых прошивках (< 4.0) и "legacy" блоках вела к ошибке в работе (уже не помню, или самого блока "COMM_LOAD" или блока "MASTER"), поэтому и отказался от этого.
Возможно на новых прошивках и новых блоках ("Comm_Load" и "Master") поправили, но я никогда не видел, чтобы сам Siemens так делал.
EPLAN Electric P8 Professional+ 2.7 HF1 11496 | TIA Portal Professional V17 Upd1 | Creo Parametric 4.0 M070
Ответить

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