Подсчет времени работы оборудования с помощью блока прерываний или счетчиков в ПЛК — АСУ ТП: сообщество инженеров

Подсчет времени работы оборудования с помощью блока прерываний или счетчиков в ПЛК

О чём видео

В ролике показаны два способа подсчёта времени работы оборудования в ПЛК: через организационный блок с циклическими прерываниями и через системные таймеры (Clock Memory) в обычном организационном блоке. На примере программы для 18 ячеек демонстрируется инкрементный подсчёт секунд, минут, часов и суток, а также сравнение поведения счётчика в главном цикле и в блоке прерываний.

Что разбирается
  1. 00:00 Организационные блоки и циклические прерывания
  2. 01:27 Программа подсчёта времени работы 18 ячеек
  3. 02:56 Инкрементный подсчёт секунд, минут, часов, суток
  4. 03:59 Симуляция работы и простоя ячейки
  5. 04:44 Почему счётчик в главном цикле считает неверно
  6. 06:33 Активация системных таймеров Clock Memory
  7. 07:05 Программа счёта секунд с таймером 1 Гц
  8. 09:47 Добавление срабатывания по переднему фронту
  9. 10:11 Проверка точности секундомера и выводы
Оборудование и ПО
  • ПЛК

Кому полезно: Инженерам АСУ ТП, программистам ПЛК, изучающим подсчёт моточасов и работу с прерываниями

Описание составлено автоматически по расшифровке речи в ролике.

Расшифровка видео

0:00 Всем привет, ребята, сегодня будет небольшое видео в 1 из 1 роликов. Когда я рассказывал вам про организационные блоки в Теопортале, я рассказывал про. Обычный блок программ Сайкл, да который постоянно в цикле у нас контроллера исполняется и говорил про блок циклических прерываний, этот блок исполняется. У нас раз в определенное время, да то есть вот сейчас по умолчанию раз. В 10.00 Миллисекунд ой раз в 100 миллиардекунд этот блок будет вызываться. Контроллером и программа в нем будет исполняться и в том ролике. Я упомянул, что с помощью этого блока я делаю подсчет моточасов двигателя, например, да это. 1 Из способов применения этого блока. В общем, смотрите, у меня реальная программа есть, и у меня здесь есть блок метроном называется, ну просто я его так. Назвал об 35 если мы в его свойства зайдем, то мы посмотрим то, что у нас идут циклические прерывания. Раз в 10.00 Миллисекунд, то есть это 12.00 контроллер. У него здесь миль секунды стоят, если вы будете тыщи. 500 Например, контроллер использовать, то смотрите внимательно. Там микросекунды указаны, поэтому. Если вы хотите делать какой, то подсчет дам там раз в секунду, то пересчитывайте микросекунды. Да, соответственно, сколько будет микросекунд в секунде?

1:27 И смотрите, у меня есть этот блок и в нем абсолютно простая программа. У меня есть ячейки много штук, их я не знаю, сколько 18 ячеек и соответственно для каждой. Ячейки, я считаю, сколько времени это ячейка находилась в работе, но если она сейчас в работе либо сколько времени эта ячейка находится в режиме простоя, то. Есть, как это выглядит, у меня есть вот блоки данных экземплярные от соответственно вот этих функций. И вот, например, я открою и посмотрю то, что у меня здесь. Есть переменные, она соответственно в ходе то, что ячейка включена ячейка, выключена и сколько ячейка находилась в работе в секундах в минутах, в часах и в днях. И сколько эта ячейка находится в простое секунды минуты? Часы дни, то есть я только что программу симуляции запустил у меня, вот она 8 минут находится в простое. И считает секунды, то есть когда досчитывает до 60. У меня прибавляется 10 минут, а когда у меня досчитывает до 60 минут, мне прибавляется час, когда 24 часа. Мне прибавляется дни, ну сутки соответственно, то есть ничего сложного нету. А если зайти внутрь самой функции вот этой, то мы посмотрим, что здесь обычный. Инкремент у нас идет, то есть у нас сейчас ячейка остановлена. Давайте посмотрим, где она у нас. Вот если у нас ячейка не целый раннинг, то мы смотрим то, что у нас.

2:56 Вот смотрите, подсчет секунд простой ячейки, это обычный инкремент. То есть мы просто прибавляем к переменной секунды единичку соответственно, пока ячейка у нас установлена дальше. Мы уже считаем, то есть, если у нас. Секунды равны, 60 вот видим, да у нас единичка к минутам прибавляется, ну и записалась у нас, и тут же мы секунды обнулили. То есть было 60 мы поставили сразу, 0 когда у нас 60 секунд стало вот так, у нас считается минуты. Точно так же у нас считается часы, когда у нас будет 60 минут, у нас в переменную часы добавится единичка и минуты сбросится. Ну и точно так же сутки, когда у нас 24 часа мы инкрементируем переменную дни, на 1 сбрасываем. Часы в 0 вот все и то же самое у нас. Если ячейка у нас в работе, то есть сейчас она у нас не в работе. Давайте я ее сейчас включу, сымитирую, как будто бы она вас включена. Вот и мы можем посмотреть сразу то, что у.

3:59 Нас пошли секунды здесь считаться, давайте в блок данных за еду. Вот у меня все простой закончился, у меня здесь по нулям, но на самом деле эти данные. Они у меня в другое место перезаписались, но здесь они обнулились. И в данный момент я считаю, сколько ячейка у меня работает, то есть видим то, что у. Нас в работе и пошли секунды здесь считаться. Вот это вся программа, и просто вот этот блок данных. Если бы я его засунул просто в Мейн вот сюда, давайте. Посмотрим вот ради интереса, я его отсюда вырежу и вставлю в блок Мейн и посмотрим, что произойдет, потому что у нас вот этот блок он получается.

4:44 Так вот, блок Мейна у нас исполняется постоянно, и у нас сейчас будет минуты и секунды там лететь. Просто в космос куда то вот смотрите, что происходит, потому что он у нас не раз в. Секунду строго исполняется, он как программу свою выполнил, он переходит на новый цикл. Поэтому у нас прошло несколько секунд, он уже у нас насчитал 16 минут, соответственно мы просто. Создаем блок, организационный с циклическими прерываниями, ставим ему время исполнения цикла и просто пишем программу обычные инкременты и считаем секунды минуты там хоть что угодно. Вот, в общем, вся задумка, и давайте раз мы уже об этом говорим. Я сейчас вам покажу 1 простой способ, как тоже можно считать время не в блоке циклических прерываний, а в обычном. Организационном блоке смотрите, для начала нам нужно зайти в конфигурацию контроллера во дворе. Его перейдем в оффлайн, потому что мы иначе не сможем поменять ничего в конфигурации вот. И зайдем в конфигурацию контроллера и здесь перейдем на вкладку систем. Эн Клок Мемори, у вас по умолчанию вот этой галочки стоять не будет. Но у меня меня она уже была включена, поэтому. Просто эту галочку включаете, и тем самым вы активируете системные таймеры, сразу же можете посмотреть их названия и их адреса. То есть у нас есть таймер, например, 10 герц клок 10 герц. У него адрес м 0 0 соответственно, так они называются такие у них адреса, их изменить по моему нельзя. Они по умолчанию идут, их также можно посмотреть в то Си, если мы сюда зайдем.

6:33 То мы в принципе их тут найдем, вот они. А ну, наверное, можем поменять, стать им, но я сейчас не буду этого делать. Просто запомнили, вот и теперь мы заходим в программу куда нибудь, но я сразу же зайду. Просто в Блокмейн неважно в новом нетверки, это напишу.

6:54 Смотрите мы. Мне будет маленько неудобно писать, надо блок данных создать под это дело, наверное, так вот сделаю. И сделаю здесь какую нибудь переменную образно. Пускай будет старт пока что для начала и поставлю ее сюда на вход. Так все сделали теперь, давайте добавим еще 1 переменную, в которой мы будем считать секунды, например, секундции назову тип интеджер. Добавлю вот сюда. Функцию сложения Эд. И получается, к переменной секунды я буду прибавлять единицу и записывать все в эту же переменную соответственно. Смотрите, если мы так сделаем, то у нас сейчас секунды будут тоже улетать в космос куда то, когда программу мы запустим, то.

8:05 И включим эту переменную старт. То увидим то, что у нас секунды вот уже там 150 секунд. Да, очень много, потому что у нас это все исполняется в главном цикле, и там много циклов происходит. За короткий промежуток времени, вот поэтому мы сюда еще в разрыв. После кнопки старт воткнем еще 1 нормальный открытый контакт, который будет называться уже.

8:42 Вот этими часами, которые мы видели в конфигурации, которые мы создавали, вот то есть мы, например, добавим 1 герц клок часы. Блин потерялся и прям сюда пишем клок и выбираем нужный нам таймер. Вот добавляем вот этот таймер, загружаем программу. И смотрите, какой у нас результат получится, я секунды обнулю. Видим то, что у нас вот этот таймер, он уже у нас моргает. Ну работает и соответственно, когда я нажму кнопку, старт у. У меня будет полная.

9:26 Я забыл еще 1 фигню добавить, нам нужно срабатывание по переднему фронту. Потому что пока у нас висит вот этот таймер да на входе, то у нас он за вот это. За вот эту секунду очень много добавляет к этой переменной секунд, поэтому мы еще создадим.

9:47 Добавим инструкцию, Петрик. И создадим еще переменную, которую я назову Эдж, то есть фронт край неважно. Вот и добавлю ее вот сюда и теперь загрузим программу. И увидим то, что мы только что сделали с вами секундомер. Давайте запускать кнопочку нажимаем и видим то, что у нас считается ровно по 1 секунде добавляется, то есть можете. Включить секундомер и посмотреть то, что работает очень точно. Тут как бы сомневаться не приходится, поэтому вы можете такой способ, например, использовать для тоже подсчета. Какого то времени, то есть вы в принципе можете использовать другие таймеры? Я добавил специально одногерцовый счетчик, потому что он, соответственно, исполняется с частотой 1. Герц 1 раз в секунду, поэтому мы можем четко наблюдать то, что у нас это переменная. Она инкрементируется, и с этим никаких проблем нету. Мы точно так же можем здесь дописывать.

11:03 Тоже белиберду, которая у меня была вот здесь, вот в этом блоке. То есть мы, когда будет у нас 60 секунд? Мы могли бы инкриминтировать переменную минуты, обнулять перемену секунды и точно так же дальше продолжать считать. Рекомендовать какой то из этих способов я вам не могу. То есть смотрите по ситуации, смотрите, что вам удобнее использовать, вы можете безболезненно. Точно также использовать блок циклических прерываний. Либо можете, какие то такие вставочки делать в программе, если у вас там, где то. Единоразово надо подсчитать, что то то можете пользоваться таким способом. Ну и на этом все я рассказал все, что хотел всем спасибо ребят за. Просмотр, подписывайтесь на канал, ставьте лайки, пишите комментарии. Стараюсь все читать по возможности на все отвечать, вот все всем пока пока.

Расшифровка сделана автоматически (Yandex SpeechKit) и может содержать ошибки в терминах.

Оставьте комментарий

Войти

Зарегистрироваться

Сбросить пароль

Пожалуйста, введите ваше имя пользователя или эл. адрес, вы получите письмо со ссылкой для сброса пароля.

Прокрутить вверх