Просмотр полной версии : Хронометраж выполнения алгоритма
Виктор74
03.09.2024, 09:03
Столкнулся с такой проблемой: ПЛК160М, модули расширения, панель оператора + ТРМ1033. Алгоритм из нескольких POU, условий вызова POU нет, просто циклический вызов из головной программы. С панели оператора передаю команды в ТРМ1033
- пуск, стоп, сброс аварий... Опытным путем подобрал время (5с), которое нужно "держать" команду для корректного считывания ТРМ1033. Хотелось бы (не методом "тыка") определит время выполнения каждого POU и программы в целом.
kondor3000
03.09.2024, 09:26
Столкнулся с такой проблемой: ПЛК160М, модули расширения, панель оператора + ТРМ1033. Алгоритм из нескольких POU, условий вызова POU нет, просто циклический вызов из головной программы. С панели оператора передаю команды в ТРМ1033
- пуск, стоп, сброс аварий... Опытным путем подобрал время (5с), которое нужно "держать" команду для корректного считывания ТРМ1033. Хотелось бы (не методом "тыка") определит время выполнения каждого POU и программы в целом.
Время цикла всего проекта ПЛК 1-3 ms, больше почти не бывает. Посмотреть время цикла можно добавив Статистику в конфигурации.
Все тормоза в обмене, некорректных адресах регистров и не подключённых слейвах, прописанных в обмене, особенно если панель Мастер.
При корректном обмене тормозов нет вообще, нажали кнопку на панели, моментально сработало, не более 30 ms (0.03 сек.) на передачу.
А что такое "Команда для корректного считывания"?
Может быть, тормозит не ПЛК, а Modbus, на котором висят модули расширения и всё остальное? Там же опрос идёт последовательный и, чем больше устройств и чем ниже скорость линии, тем больше время опроса каждого из них.
В таком случае и правда может быть так, что какое-то из устройств будет опрашиваться раз в 5-10 секунд.
Виктор74
03.09.2024, 15:47
Время цикла всего проекта ПЛК 1-3 ms, больше почти не бывает. Посмотреть время цикла можно добавив Статистику в конфигурации.
Все тормоза в обмене, некорректных адресах регистров и не подключённых слейвах, прописанных в обмене, особенно если панель Мастер.
При корректном обмене тормозов нет вообще, нажали кнопку на панели, моментально сработало, не более 30 ms (0.03 сек.) на передачу.
Не совсем понял,о каком цикле идет речь - о цикле опроса входов/выходов самого ПЛК или о цикле выполнения всего алгоритма, т.е.опроса всех модулей и панели. Что именно выдает модуль статистики? Алгоритм достаточно объемный, сотни переменных. И POU разные по объему. Не подключенных модулей нет, панель слейв. Все таки хотелось бы знать время выполнения каждого POU и алгоритма в целом.
выполнение алгоритма в целом можно посчитать программно, при старте запоминаем время, по окончании запоминаем новое время и выводим разницу. Как это в ST я хз.
kondor3000
03.09.2024, 16:35
Не совсем понял,о каком цикле идет речь - о цикле опроса входов/выходов самого ПЛК или о цикле выполнения всего алгоритма, т.е.опроса всех модулей и панели. Что именно выдает модуль статистики? Алгоритм достаточно объемный, сотни переменных. И POU разные по объему. Не подключенных модулей нет, панель слейв. Все таки хотелось бы знать время выполнения каждого POU и алгоритма в целом.
Статистика показывает именно время выполнения полного цикла ПЛК ( время выполнения всего алгоритма). Цикл ПЛК, это чтение входов, проход программы от начала до конца, приём, отправка запросов, запись выходов. Первая строчка статистики например показывает 15, значит весь цикл 1,5 ms (миллисекунд). Время плавает, но примерно понять можно.
Так же там 2 квадратика, 1 должен гореть - есть питание, а 2 при работе должен погаснуть, если горит, значит надо увеличить мин. цикл.
Если весь цикл 1,5 ms, то выполнение одного POU, вы замерить физически не сможете, разрешение таймера 1 ms, а время будет явно меньше. Время опроса одного модуля примерно 25-30 ms, двух примерно 35-40 ms.
Виктор74
05.09.2024, 20:23
ПЛК опрашивает модули в режиме "Мастер", с панелью обмен в режиме "слейв". Модуль "статистика" можно добавить в конфигурации в ПЛК, в "мастер" и в "слейв". Как я понял, если добавить в ПЛК, он покажет время выполнения выполнения всего алгоритма? Если в "мастер" - время опроса модулей? Ну и если в "слейв" - время общения с панелью?
В конце концов прошу ещё раз обратить внимание на моё сообщение в этой теме.
Даю ещё мыслей:
1. Модуль "Статистика" показывает только свободные ресурсы процессора ПЛК. Время выполнения показывается в ЗАДАЧАХ.
2. Как сделан опрос:
а) Через конфигурацию ПЛК? Если да - выложите проект. Хочу посмотреть.
б) Через библиотеки?
до сих пор так и не раскрыли загадочное “держать 5с команду для корректного считывания"
Никто не знает полный список оборудования
Никто не знает настроек этого оборудования
Никто не знает что и как делается с опросами.
Никто не знает цели хотелки и что подразумевается под временем которое хочет получить ТС
ТС - вам на шоу экстрасенсов.
Выкладывайте проекты (плк, панель) Если что - не думайте что тута вас мучают вопросами люди которые жаждут присвоить и запатентовать ваши алгоритмы
На этот раз я солидарен с Валенком. Тема про Modbus и опрос интересная. Я вообще материал для статьи набрал бы.
Если бы автор понятно бы всё описал.
Опрос происходит ВНЕ цикла программы. Так понимаю, автор хочет узнать время цикла опроса. Через Конфигурацию наверное никак, если у Конфигуратора нет какой-то системной переменной.
Используя библиотеку Modbus можно в коде сохранять время между командой опроса и ответом о готовности получения ответа.
Виктор74
08.09.2024, 20:11
Еще раз описываю проблему. Есть проект - автоматизация 3х сушилок, котельная и вентиляция. Сушилки - отдельные POU, котельная и вентиляция - общий POU. Реализация в "железе" - ПЛК 160М, 7 модулей расширения плюс ТРМ1033 (управление вентиляцией, ПО предустановлено), плюс панель ONI. Конфигурация: обмен ПЛК с модулями расширения и ТРМ - RS485, протокол Modbus (ПЛК мастер), обмен с панелью -Ethernet TCP (ПЛК "слейв"). POU вызываются последовательно без всяких условий. При наладке на объекте возникла проблема - нажимаю кнопку на панели (сброс аварий вентиляции) - никакой реакции. В POU вентиляции ставлю таймер, т. е. делаю так, что сигнал "сброс аварии" длится 4с - все работает адекватно.
Отсюда вопрос: как узнать время выполнения выполнения всей программы и каждого POU?
Выкладываю ссылку на проект.https://cloud.mail.ru/public/RNAj/BZZYtLdD4
Если это можно сделать с помощью модуля "Статистика", не понятно, как он работает будучи включенным в конфигурацию - в ПЛК, "мастер" или "слейв".
При наладке на объекте возникла проблема - нажимаю кнопку на панели (сброс аварий вентиляции) - никакой реакции. В POU вентиляции ставлю таймер, т. е. делаю так, что сигнал "сброс аварии" длится 4с - все работает адекватно.
Можете написать, какие переменные в каких местах проекта за это отвечают? Я открыл, и так просто не могу это найти.
И я ЕЩЁ раз спрашиваю: почему речь идёт о сокрости работы программы ПЛК, а не о скорости работы Modbus?!
Я глянул структуру проекта: там на Modbus Master ДОФИГА запросов, которые можно было бы объединить в групповые. То, что там написано сейчас, должно тормозить.
kondor3000
09.09.2024, 15:27
В ТРМ1032 просто каша из регистров чтения и записи, несколько раз повторяется регистр 0.
Регистры по порядку надо читать и записывать группой, если не по порядку, хоть расставьте их правильно.
Запись по идее должна быть только по изменению , в отдельном UMD
Так делается чтение и запись группой,
petera неоднократно выкладывал примеры записи, чтения через STRING https://owen.ru/forum/showthread.php?t=22915&page=40&p=244022&viewfull=1#post244022
Виктор74
11.09.2024, 16:13
Понял, проблема "тормозов" в нерациональной настройке обмена между ПЛК и периферией. Спасибо за столь подробный разбор конфигурации и ссылку на организацию чтение/запись группой. Буду "переваривать".
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot