PDA

Просмотр полной версии : Подсчет количества импульсов за единицу времени.



Вячеслав@
31.10.2019, 14:11
Добрый день.
Встала задача выводить на экран ПР200 количество ошибок за последний час и 8 часов.
Я сделал так, как смог догадаться сам )) Но не уверен, что мое решение самое простое.
Логика - на вход I1 приходит сигнал ошибки, дальше счетчиком считаем импульсы.
На вход I2 приходит системная переменная Минуты. Отслеживается каждое изменение текущей минуты, и каждые 10 минут подается сигнал на сброс текущего счетчика (с задержкой на цикл) и на перезапись переменных. Текущее значение уходит в переменную, хранящую счетчик за предыдущие 10-20 минут, 10-20 переходит в 20-30 и т.д. Таким образом получаю значение за текущий час с обновлением каждые 10 мин.
Ну а на вход I3 приходят часы и по той же схеме, считаем последние 8 часов, обновление каждый час.

Собственно все работает нормально, но схема мне показалась громоздкой :)

Если не сложно, подскажите, есть ли более элегантное решение? P.S. важно считать не просто час с 00 минут (это было бы просто), а с более частым обновлением. То же самое и про последние 8 часов.
45402

Василий Кашуба
31.10.2019, 16:41
Добрый день.
Встала задача выводить на экран ПР200 количество ошибок за последний час и 8 часов.
Я сделал так, как смог догадаться сам )) Но не уверен, что мое решение самое простое.
Логика - на вход I1 приходит сигнал ошибки, дальше счетчиком считаем импульсы.
На вход I2 приходит системная переменная Минуты. Отслеживается каждое изменение текущей минуты, и каждые 10 минут подается сигнал на сброс текущего счетчика (с задержкой на цикл) и на перезапись переменных. Текущее значение уходит в переменную, хранящую счетчик за предыдущие 10-20 минут, 10-20 переходит в 20-30 и т.д. Таким образом получаю значение за текущий час с обновлением каждые 10 мин.
Ну а на вход I3 приходят часы и по той же схеме, считаем последние 8 часов, обновление каждый час.

Собственно все работает нормально, но схема мне показалась громоздкой :)

Если не сложно, подскажите, есть ли более элегантное решение? P.S. важно считать не просто час с 00 минут (это было бы просто), а с более частым обновлением. То же самое и про последние 8 часов.
45402
Вместо счётчика часов 45404 поставьте эту схему 45405она полностью заменит его.

Вячеслав@
31.10.2019, 18:22
Вместо счётчика часов 45404 поставьте эту схему 45405она полностью заменит его.
Ого, неслабое упрощение :)
Спасибо!

Василий Кашуба
31.10.2019, 23:38
Ого, неслабое упрощение :)
Спасибо!
В десятках минут, SEL тоже можно убрать.

Василий Кашуба
01.11.2019, 00:13
Ого, неслабое упрощение :)
Спасибо!
А если по крупному, то надо сделать так.45408

Вячеслав@
01.11.2019, 09:16
А если по крупному, то надо сделать так.45408

Добрый день! Благодарю! Выглядит намного проще. Но, честно говоря, я пока не понял, как это работает, как линии задержки используются :D
Буду разбираться.
P. S. Понял. Гениально просто)

Василий Кашуба
01.11.2019, 15:53
Добрый день! Благодарю! Выглядит намного проще. Но, честно говоря, я пока не понял, как это работает, как линии задержки используются :D
Буду разбираться.
P. S. Понял. Гениально просто)
Вход аварии подключается через R-TRIG.

Сергей0308
01.11.2019, 18:11
Если не требуется синхронизации 10 минутного и часовых импульсов(как у вас сделано), то можно как-то так:

45426

Василий Кашуба
01.11.2019, 20:38
Если не требуется синхронизации 10 минутного и часовых импульсов(как у вас сделано), то можно как-то так:

45426
Входа на GT нужно поменять местами.

Вячеслав@
01.11.2019, 21:31
Если не требуется синхронизации 10 минутного и часовых импульсов(как у вас сделано), то можно как-то так:

45426

Да, спасибо. Простой счетчик я бы сделал, хоть и чуть более сложным способом :) Но нужно именно текущий час и текущие 8 часов с регулярным обновлением, чтобы была понятна тенденция.

Сергей0308
02.11.2019, 03:02
Входа на GT нужно поменять местами.

Ну и что тогда получится?
На том элементе, что Вы применили(операция сравнения на равенство) можно менять входа местами как угодно, от этого логика работы не изменится, на том элементе, что я применил(операция сравнения на большее значение) входа поменять местами(как на вашем элементе) не получится!

45430

Сергей0308
02.11.2019, 03:23
Да, спасибо. Простой счетчик я бы сделал, хоть и чуть более сложным способом :) Но нужно именно текущий час и текущие 8 часов с регулярным обновлением, чтобы была понятна тенденция.

Вы видите в моём варианте какое-то отличие в работе от вашего варианта или варианта Василия?
Никакого отличия в работе здесь не существует, за исключением применения меньшего числа элементов!

Если 10-минутные импульсы надо синхронизировать с часовыми(чего нет у вас), то можно как-то так(существует множество вариантов):

45431

45432

И у меня есть такой вот целочисленный стек(в проекте):

45433

На нём можно организовать подсчёт импульсов за 1 час с периодом обновления 2 минуты или за 8 часов с периодом обновления 15 минут!

dan75
02.11.2019, 10:49
Входа на GT нужно поменять местами.

Тоже сначала не понял. Но ежели входа поменять местами, то импульсы будут каждую минуту и каждые 10 секунд. А схема Сергея выдаёт импульс только когда значение системной переменной меняется с 59 на 00. Почему было просто не взять системные переменные "часы" и "минуты"? А х.з.

dan75
02.11.2019, 10:52
А если по крупному, то надо сделать так.45408

И чем это отличается от простого счётчика? Подсчёт так же происходит раз в час, а не в 10 минут.

Сергей0308
02.11.2019, 21:44
Я это как -то так вижу:

45440

45441

георгий@1001
29.03.2023, 16:13
добрый день я здесь новичок, прошу не судить строго за тупые вопросы. Поставлена задача контролировать скорость вращения нории либо конвейера. не подскажите как в codesys это реализовать. с примером программы.