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

Среднее значение входного сигнала

Unity Pro (Control Expert), Quantum, Premium, M340, M580, Hybrid DCS, Process Expert, Zelio, Twido, M17*, M2**, SCADAPACK, SoMachine, MachineExpert, ZelioSoft, TwidoSoft, TwidoSuite, TelePace

Модератор: Специалисты SE

Ответить
Аватара пользователя

Автор темы
kasper00761
здесь недавно
здесь недавно
Сообщения: 20
Зарегистрирован: 11 апр 2018, 16:24
Имя: Александр
Страна: Россиия
город/регион: Москва
Благодарил (а): 2 раза

Среднее значение входного сигнала

Сообщение kasper00761 »

Всем привет, я еще новичок в создании программ, для PLC, опыта не хватает для каких-то базовых вещей, я думаю многие тут сталкивались с такой задачей, прошу вашей помощи. Среда программирования Unity Pro XL V13.0 контроллер Modicon M580.
Есть показания с расходомера, единицы измерения м3/ч, выдает мгновенный расход. Задача: сделать среднечасовой расход м3/ч и среднесуточный расход м3/сутки. Вопрос, как привести мои показания к среднему значению? И какими блоками это можно реализовать в FBD
Аватара пользователя

keysansa
эксперт
эксперт
Сообщения: 2319
Зарегистрирован: 20 дек 2018, 04:45
Имя: Сергей
Страна: РБ/РФ
город/регион: РФ Сергиев Посад
Благодарил (а): 1645 раз
Поблагодарили: 160 раз

Среднее значение входного сигнала

Сообщение keysansa »

Уточнение. Мгновенное считывается раз в 1 сек? 1 мин? Нужно усреднение по часам, или в любое время нужно узнать среднее за последний час?
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
Аватара пользователя

Автор темы
kasper00761
здесь недавно
здесь недавно
Сообщения: 20
Зарегистрирован: 11 апр 2018, 16:24
Имя: Александр
Страна: Россиия
город/регион: Москва
Благодарил (а): 2 раза

Среднее значение входного сигнала

Сообщение kasper00761 »

keysansa писал(а): 29 мар 2019, 11:40 Уточнение. Мгновенное считывается раз в 1 сек? 1 мин? Нужно усреднение по часам, или в любое время нужно узнать среднее за последний час?
Считывается раз в 100мс. Нужно именно спрогнозировать, на основе мгновенных показаний, сколько будет в среднем м3/ч и в среднем м3/сутки
Аватара пользователя

petr2off
эксперт
эксперт
Сообщения: 1602
Зарегистрирован: 06 янв 2016, 19:45
Имя: Петров В.Л.
Страна: Россия
город/регион: Красноярск
Благодарил (а): 69 раз
Поблагодарили: 185 раз

Среднее значение входного сигнала

Сообщение petr2off »

Среднее достаточно лукавая цифра. Считать можно по рекуррентной формуле Sn = (Sn-1X(N-1)+Xn)/N. Так как расходомер выдает показания в М3/ч, то уже со 2-го считывания вы будете иметь среднечасовой расход. Тема среднего здесь уже обсуждалась. Просто периодически нужно будет это дело сбрасывать, а то предыстория будет сильно усреднять значения. Потому как среднечасовое на периоде 1 час это одно, а на периоде 1000000 часов - что то совсем другое.....
Аватара пользователя

keysansa
эксперт
эксперт
Сообщения: 2319
Зарегистрирован: 20 дек 2018, 04:45
Имя: Сергей
Страна: РБ/РФ
город/регион: РФ Сергиев Посад
Благодарил (а): 1645 раз
Поблагодарили: 160 раз

Среднее значение входного сигнала

Сообщение keysansa »

Чем больше вы накопите мгновенных, тем точнее вы предскажите.
Вам насколько точный прогноз нужен?

Отправлено спустя 1 минуту 56 секунд:
petr2off писал(а): 29 мар 2019, 12:13 считывания вы будете иметь среднечасовой расход
Тут не соглашусь. Вы будете получать не среднечасовой, а "интерполированный на час" расход.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
Аватара пользователя

Автор темы
kasper00761
здесь недавно
здесь недавно
Сообщения: 20
Зарегистрирован: 11 апр 2018, 16:24
Имя: Александр
Страна: Россиия
город/регион: Москва
Благодарил (а): 2 раза

Среднее значение входного сигнала

Сообщение kasper00761 »

keysansa писал(а): 29 мар 2019, 12:18 Вам насколько точный прогноз нужен?
+-2 куба.
То есть я понимаю что мне нужен буфер в который будет записываться значения с датчика. После чего я могу вывести в принципе среднее значение. Но каким образом это реализовать в FBD я не знаю т.к. багаж блоков у меня пока не большой.
Аватара пользователя

petr2off
эксперт
эксперт
Сообщения: 1602
Зарегистрирован: 06 янв 2016, 19:45
Имя: Петров В.Л.
Страна: Россия
город/регион: Красноярск
Благодарил (а): 69 раз
Поблагодарили: 185 раз

Среднее значение входного сигнала

Сообщение petr2off »

А вот тут я уже не соглашусь, тут никакой интерполяции нет. То что нам выдает прибор, мы должны воспринимать как данность, которую нам подтверждает сертификат на средства измерения. А в нем говорится, что моментальные показания прибора это м3/час. Просто через секунду вы будете иметь усредненное значение показаний прибора за 1 секунду, за 1 минуту усредненное за одну минуту и т. д. А рассуждать, каким образом он что то там внутри экстраполирует, интегрирует, суммирует можно конечно, но имеет значение только в том случае, если Вы занимаетесь изготовлением приборов.

Отправлено спустя 2 минуты 12 секунд:
И не какого буфера не надо. Рекурентная формула очень удобна для FDB реализации. на входе блока всегда Sn-1 на выходе всегда Sn.
Аватара пользователя

Автор темы
kasper00761
здесь недавно
здесь недавно
Сообщения: 20
Зарегистрирован: 11 апр 2018, 16:24
Имя: Александр
Страна: Россиия
город/регион: Москва
Благодарил (а): 2 раза

Среднее значение входного сигнала

Сообщение kasper00761 »

petr2off писал(а): 29 мар 2019, 12:28 Рекурентная формула очень удобна для FDB реализации
Каким образом её реализовать в FBD?

Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5620
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 544 раза
Поблагодарили: 706 раз

Среднее значение входного сигнала

Сообщение Ryzhij »

petr2off писал(а): 29 мар 2019, 12:13 Просто периодически нужно будет это дело сбрасывать, а то предыстория будет сильно усреднять значения. Потому как среднечасовое на периоде 1 час это одно, а на периоде 1000000 часов - что то совсем другое.....
Тогда лучше использовать экспоненциально взвешенное скользящее среднее и считать его по другой рекуррентной формуле, задавшись величиной окна усреднения (интервалом сглаживания).

Отправлено спустя 2 минуты 50 секунд:
petr2off писал(а): 29 мар 2019, 12:28 Рекурентная формула очень удобна для FDB реализации. на входе блока всегда Sn-1 на выходе всегда Sn
А какая разница, на каком языке писать? ;)
В данном случае всё будет точно также на любом языке.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
Аватара пользователя

keysansa
эксперт
эксперт
Сообщения: 2319
Зарегистрирован: 20 дек 2018, 04:45
Имя: Сергей
Страна: РБ/РФ
город/регион: РФ Сергиев Посад
Благодарил (а): 1645 раз
Поблагодарили: 160 раз

Среднее значение входного сигнала

Сообщение keysansa »

petr2off писал(а): 29 мар 2019, 12:28 А вот тут я уже не соглашусь, тут никакой интерполяции нет.
Мгновенное значение мы можем принимать как прогноз, не спорю. Но ТС хочет в час и в сутки. А от двух последних показаний в начале часа...
Для того что бы построить хотя бы линейную интерполяцию, нам нужны минимум 2 точки. Но для сохранения сердца и здоровья оператора, нужно больше.
Сертификат нужен на средство измерения. На средство отображения прогноза, нужен алгоритм его расчета. Если прибор изначально не в тех единицах - по вашему вопрос закрыт.
А для работы на установках - не всегда нужно сертифицировать устройства вывода. ТУ.
petr2off писал(а): 29 мар 2019, 12:28 Рекурентная формула очень удобна для FDB реализации

Тут согласен, при условии, что прогноз не требуется дальше, чем 200 мс. Либо сигнал статичен, но тогда к чему прогнозирование?

Отправлено спустя 6 минут 6 секунд:
Ryzhij писал(а): 29 мар 2019, 12:39 Тогда лучше использовать экспоненциально взвешенное скользящее среднее и считать его по другой рекуррентной формуле, задавшись величиной окна усреднения (интервалом сглаживания).
Выбирайте любой метод, который вам обеспечит нужную точность.
Ryzhij писал(а): 29 мар 2019, 12:39 А какая разница, на каком языке писать? ;)
У нас были и программисты, и инженеры электрики. И те и другие могли поправить программу PLC (100+ изделий). Но тем, кто ближе к электронике - переключались в Ladder.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
Аватара пользователя

Автор темы
kasper00761
здесь недавно
здесь недавно
Сообщения: 20
Зарегистрирован: 11 апр 2018, 16:24
Имя: Александр
Страна: Россиия
город/регион: Москва
Благодарил (а): 2 раза

Среднее значение входного сигнала

Сообщение kasper00761 »

keysansa писал(а): 29 мар 2019, 12:42 Мгновенное значение мы можем принимать как прогноз, не спорю
Вообще если еще глубже идти, то нужно задавать этот расход для производительности насоса, чтоб оператор вводил допустим, число кубов в сутки, которое ему требуется и насос уже работал таким образом, чтоб выдать это количество кубов через сутки. Погрешность в любом случае будет, но я думаю не столь критично если он +-10 кубов не долил или перелил.
Аватара пользователя

keysansa
эксперт
эксперт
Сообщения: 2319
Зарегистрирован: 20 дек 2018, 04:45
Имя: Сергей
Страна: РБ/РФ
город/регион: РФ Сергиев Посад
Благодарил (а): 1645 раз
Поблагодарили: 160 раз

Среднее значение входного сигнала

Сообщение keysansa »

Это совсем другая задача. Самый простой - PID
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
Аватара пользователя

Автор темы
kasper00761
здесь недавно
здесь недавно
Сообщения: 20
Зарегистрирован: 11 апр 2018, 16:24
Имя: Александр
Страна: Россиия
город/регион: Москва
Благодарил (а): 2 раза

Среднее значение входного сигнала

Сообщение kasper00761 »

keysansa писал(а): 29 мар 2019, 12:57 Это совсем другая задача. Самый простой - PID
Это я реализовал, но теперь обратная задача это на основе показаний показать среднее в час и в сутки, вот я и сижу голову ломаю
Аватара пользователя

Valerich
шаман
шаман
Сообщения: 973
Зарегистрирован: 27 июн 2013, 12:20
Имя: Валерич
Страна: СССР
Благодарил (а): 35 раз
Поблагодарили: 78 раз

Среднее значение входного сигнала

Сообщение Valerich »

Как раз сейчас занимаюсь подобной задачей, но на Дельте.
В распоряжении есть LAD и ST, делаю на LAD.
Особо в математике не силен, поэтому без особых терминов)
В арсенале есть блок MEAN, куда на вход можно подать массив до 64х переменных, на выходе получаем среднее арифметическое. Остается правильно организовать этот массив.
Я беру переменную со входа и записываю в начало массива, потом "проталкиваю", сдвигаю данные по массиву, вернее, наоборот, начиная с предпоследней ячейки перемещаю данные в конец, дойдя до начала, записываю в первую ячейку входное значение.
Цикл происходит с заданной частотой. Назначив частоту 1Гц и величину окна 60, имеем усреднение за 1 минуту.
Давненько делал ФБ на фиксированную величину окна (10), использовал во многих проектах для сглаживания показаний датчиков, недавно сел и сделал окно настраиваемым до 64 - предел API.
Аватара пользователя

keysansa
эксперт
эксперт
Сообщения: 2319
Зарегистрирован: 20 дек 2018, 04:45
Имя: Сергей
Страна: РБ/РФ
город/регион: РФ Сергиев Посад
Благодарил (а): 1645 раз
Поблагодарили: 160 раз

Среднее значение входного сигнала

Сообщение keysansa »

kasper00761 писал(а): 29 мар 2019, 13:08 Это я реализовал, но теперь обратная задача это на основе показаний показать среднее в час и в сутки, вот я и сижу голову ломаю
Я повторно задам вопрос. Перефразирую.
Вам спрогнозировать расход нужно или просто средний за последний час посчитать?

Отправлено спустя 2 минуты 37 секунд:
and909 писал(а): 01 апр 2019, 06:33 Я беру переменную со входа и записываю в начало массива, потом "проталкиваю", сдвигаю данные по массиву
Предусмотрите по загрузке инициализацию всех элементов массива первым считанным значением. Иначе на 1 Гц первые правдоподобные показания у вас появятся ближе к 1 минуте.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
Аватара пользователя

petr2off
эксперт
эксперт
Сообщения: 1602
Зарегистрирован: 06 янв 2016, 19:45
Имя: Петров В.Л.
Страна: Россия
город/регион: Красноярск
Благодарил (а): 69 раз
Поблагодарили: 185 раз

Среднее значение входного сигнала

Сообщение petr2off »

Предусмотрите по загрузке инициализацию всех элементов массива первым считанным значением. Иначе на 1 Гц первые правдоподобные показания у вас появятся ближе к 1 минуте.
Блин, ну написал же рекурентную формулу. Она для того и создана, что бы :
a) отказатся о массива и всяких затратных и бессмысленных идей по перетусовке этого массива
b) сразу, со 2 -го значения начинать выдавать среднее.
Где то тут в форуме - я приложил вордовский файл, где расписал - как это формула выводится. Это, еще раз, для тех кто в танке, повторяю - не интерполяция а среднее значение.
На момент считывания 2 го сначения она соответствует среднему по 2 значениям, на момент считывания 5-го значения она соответствует среднему по 5 значениям и т.д.
Единственный тонкий момент, нужно предусмотреть сброс, т.е. запуск расчета по новой, например раз в 1 час, В некоторых вариантах реализации языков МЭК массивов нет вообще и что ? Среднее типа не посчитать ?
Аватара пользователя

Valerich
шаман
шаман
Сообщения: 973
Зарегистрирован: 27 июн 2013, 12:20
Имя: Валерич
Страна: СССР
Благодарил (а): 35 раз
Поблагодарили: 78 раз

Среднее значение входного сигнала

Сообщение Valerich »

petr2off писал(а): 29 мар 2019, 12:13 Считать можно по рекуррентной формуле Sn = (Sn-1X(N-1)+Xn)/N.
С удовольствием воспользуюсь вашей формулой, не подскажете, как она выглядит на LAD?
Аватара пользователя

petr2off
эксперт
эксперт
Сообщения: 1602
Зарегистрирован: 06 янв 2016, 19:45
Имя: Петров В.Л.
Страна: Россия
город/регион: Красноярск
Благодарил (а): 69 раз
Поблагодарили: 185 раз

Среднее значение входного сигнала

Сообщение petr2off »

Под рукой оказался только TIA портал, не взыщите. Ну и FUP я использовал, LAD не недолюбливаю - ну это не принципиально, к тому же Вы не мой заказчик, могу и покапризничать. Далее - в коде демонстрируется схема решения, например правильнее было использовать счетчик, добавить принудительный сброс - что бы избежать переполнения целого, можно было например F_TRIG использовать.
Но я как понимаю - у Вас сомнения по поводу реализации? Пожалуйста - смотрите, ничего сверхестественного.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя

Valerich
шаман
шаман
Сообщения: 973
Зарегистрирован: 27 июн 2013, 12:20
Имя: Валерич
Страна: СССР
Благодарил (а): 35 раз
Поблагодарили: 78 раз

Среднее значение входного сигнала

Сообщение Valerich »

Спасибо, посмотрел, но, к сожалению, у меня нет инструмента, подобного сименсовскому CALCULATE.
Надо посидеть - подумать, как можно переложить вашу формулу на LAD.

Отправлено спустя 4 минуты 3 секунды:
А, дошел смысл: величина массива не статическая, а динамическая, равная количеству полученных значений. :ges_slap:
Ну это легко реализовать.
Аватара пользователя

petr2off
эксперт
эксперт
Сообщения: 1602
Зарегистрирован: 06 янв 2016, 19:45
Имя: Петров В.Л.
Страна: Россия
город/регион: Красноярск
Благодарил (а): 69 раз
Поблагодарили: 185 раз

Среднее значение входного сигнала

Сообщение petr2off »

Неправильно эту формулу называть моей, ей наверно минимум лет 100. Просто приходилось заниматься цифровой обработкой сигнала в потоке, там нужно было получать некоторые статистические характеристики, а ресурсы были не просто ограничены - а очень ограничены. Приходилось, например от плавающей арифметики отказаться.

Отправлено спустя 29 минут 27 секунд:
А самая фишка в том, что массив как таковой не нужен.
Аватара пользователя

keysansa
эксперт
эксперт
Сообщения: 2319
Зарегистрирован: 20 дек 2018, 04:45
Имя: Сергей
Страна: РБ/РФ
город/регион: РФ Сергиев Посад
Благодарил (а): 1645 раз
Поблагодарили: 160 раз

Среднее значение входного сигнала

Сообщение keysansa »

Я не против этой формулы.
Однако я по одному массиву вычисляю и среднее, и поток, и "тенденцию" (термин TraceMode, обозначает, растет ли значение/снижается/стоит на нуле ) сигнала. Могу и кой какой прогноз сделать. И на пики/провалы значений проверить.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
Аватара пользователя

petr2off
эксперт
эксперт
Сообщения: 1602
Зарегистрирован: 06 янв 2016, 19:45
Имя: Петров В.Л.
Страна: Россия
город/регион: Красноярск
Благодарил (а): 69 раз
Поблагодарили: 185 раз

Среднее значение входного сигнала

Сообщение petr2off »

Тут дело не в формуле. При проектировании АСУ ТП очень важно провести грань между обработкой данных непосредственно в PLC и обработкой на уровне приложения(или сервера БД). То что Вы перечисляете, (на мой естественно взгляд) есть уже анализ данных (пусть и примитивный), и не факт - что он должен делаться на уровне PLC. Грубо говоря - хранение и обработка единицы информации в PLC существенно более дорогое удовольствие, чем например в сервере приложений или сервере баз данных. например - S7-1200 самый дешевый из линейки сименсовых контроллеров, который поставляется с "бесплатной" STEP-7 стоит грубо говоря 50 тыс. руб, имея на борту 120 кбайт памяти, и 1 процессор. Сравните с системным блоком, стандартной PC который Вы можете за эти деньги купить.
Аватара пользователя

Valerich
шаман
шаман
Сообщения: 973
Зарегистрирован: 27 июн 2013, 12:20
Имя: Валерич
Страна: СССР
Благодарил (а): 35 раз
Поблагодарили: 78 раз

Среднее значение входного сигнала

Сообщение Valerich »

Уважаемый petr2off, что-то усреднение по формуле

Sn = (Sn-1X(N-1)+Xn)/N

работает как-то не так.

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

Может, математически всё верно, но практически не совсем правильно.

Моделирование в Excel:
Усреднение.PNG

Чтобы этого избежать, нужно ограничивать глубину усреднения.

Отправлено спустя 10 минут 48 секунд:
О, юбилейное сообщение)))
Асушник.PNG
У вас нет необходимых прав для просмотра вложений в этом сообщении.

pkl58
частый гость
частый гость
Сообщения: 428
Зарегистрирован: 19 мар 2012, 20:04
Имя: Павел
Страна: Россия
Благодарил (а): 5 раз
Поблагодарили: 50 раз

Среднее значение входного сигнала

Сообщение pkl58 »

Ryzhij писал(а): 29 мар 2019, 12:39 Тогда лучше использовать экспоненциально взвешенное скользящее среднее и считать его по другой рекуррентной формуле, задавшись величиной окна усреднения (интервалом сглаживания).
Я бы сделал так как рекомендовал коллега.
Аватара пользователя

petr2off
эксперт
эксперт
Сообщения: 1602
Зарегистрирован: 06 янв 2016, 19:45
Имя: Петров В.Л.
Страна: Россия
город/регион: Красноярск
Благодарил (а): 69 раз
Поблагодарили: 185 раз

Среднее значение входного сигнала

Сообщение petr2off »

Ну да, если Вы считаете среднее по 100 значениям, то естественно влияние 1 измерения составляет 1%. Ну а по счету давайте проверим.
Массив значений 1,5,7,3,9,4,8,9,2,6. Sс - стандартный счет, Sр - рекурентный
N=1 Sc = 1/1 = 1 ; Sр = (0*0+1)/1 = 1
N=2, Sc = (1+5)/2=3; Sр = (1*1+5)/2 = 3
N=3> Sc =(1+5+7)/3=13/3=4,33333; Sр = (3*2+7)/3 = 13/3 = 4,33333

И т.д.
Ответить

Вернуться в «ПЛК»