- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Среднее значение входного сигнала
Модератор: Специалисты SE
-
- здесь недавно
- Сообщения: 20
- Зарегистрирован: 11 апр 2018, 16:24
- Имя: Александр
- Страна: Россиия
- город/регион: Москва
- Благодарил (а): 2 раза
Среднее значение входного сигнала
Всем привет, я еще новичок в создании программ, для PLC, опыта не хватает для каких-то базовых вещей, я думаю многие тут сталкивались с такой задачей, прошу вашей помощи. Среда программирования Unity Pro XL V13.0 контроллер Modicon M580.
Есть показания с расходомера, единицы измерения м3/ч, выдает мгновенный расход. Задача: сделать среднечасовой расход м3/ч и среднесуточный расход м3/сутки. Вопрос, как привести мои показания к среднему значению? И какими блоками это можно реализовать в FBD
Есть показания с расходомера, единицы измерения м3/ч, выдает мгновенный расход. Задача: сделать среднечасовой расход м3/ч и среднесуточный расход м3/сутки. Вопрос, как привести мои показания к среднему значению? И какими блоками это можно реализовать в FBD
-
- эксперт
- Сообщения: 2330
- Зарегистрирован: 20 дек 2018, 04:45
- Имя: Сергей
- Страна: РБ/РФ
- город/регион: РФ Сергиев Посад
- Благодарил (а): 1990 раз
- Поблагодарили: 176 раз
Среднее значение входного сигнала
Уточнение. Мгновенное считывается раз в 1 сек? 1 мин? Нужно усреднение по часам, или в любое время нужно узнать среднее за последний час?
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
-
- здесь недавно
- Сообщения: 20
- Зарегистрирован: 11 апр 2018, 16:24
- Имя: Александр
- Страна: Россиия
- город/регион: Москва
- Благодарил (а): 2 раза
Среднее значение входного сигнала
Считывается раз в 100мс. Нужно именно спрогнозировать, на основе мгновенных показаний, сколько будет в среднем м3/ч и в среднем м3/сутки
-
- эксперт
- Сообщения: 1617
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 70 раз
- Поблагодарили: 189 раз
Среднее значение входного сигнала
Среднее достаточно лукавая цифра. Считать можно по рекуррентной формуле Sn = (Sn-1X(N-1)+Xn)/N. Так как расходомер выдает показания в М3/ч, то уже со 2-го считывания вы будете иметь среднечасовой расход. Тема среднего здесь уже обсуждалась. Просто периодически нужно будет это дело сбрасывать, а то предыстория будет сильно усреднять значения. Потому как среднечасовое на периоде 1 час это одно, а на периоде 1000000 часов - что то совсем другое.....
-
- эксперт
- Сообщения: 2330
- Зарегистрирован: 20 дек 2018, 04:45
- Имя: Сергей
- Страна: РБ/РФ
- город/регион: РФ Сергиев Посад
- Благодарил (а): 1990 раз
- Поблагодарили: 176 раз
Среднее значение входного сигнала
Чем больше вы накопите мгновенных, тем точнее вы предскажите.
Вам насколько точный прогноз нужен?
Отправлено спустя 1 минуту 56 секунд:
Вам насколько точный прогноз нужен?
Отправлено спустя 1 минуту 56 секунд:
Тут не соглашусь. Вы будете получать не среднечасовой, а "интерполированный на час" расход.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
-
- здесь недавно
- Сообщения: 20
- Зарегистрирован: 11 апр 2018, 16:24
- Имя: Александр
- Страна: Россиия
- город/регион: Москва
- Благодарил (а): 2 раза
Среднее значение входного сигнала
+-2 куба.
То есть я понимаю что мне нужен буфер в который будет записываться значения с датчика. После чего я могу вывести в принципе среднее значение. Но каким образом это реализовать в FBD я не знаю т.к. багаж блоков у меня пока не большой.
-
- эксперт
- Сообщения: 1617
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 70 раз
- Поблагодарили: 189 раз
Среднее значение входного сигнала
А вот тут я уже не соглашусь, тут никакой интерполяции нет. То что нам выдает прибор, мы должны воспринимать как данность, которую нам подтверждает сертификат на средства измерения. А в нем говорится, что моментальные показания прибора это м3/час. Просто через секунду вы будете иметь усредненное значение показаний прибора за 1 секунду, за 1 минуту усредненное за одну минуту и т. д. А рассуждать, каким образом он что то там внутри экстраполирует, интегрирует, суммирует можно конечно, но имеет значение только в том случае, если Вы занимаетесь изготовлением приборов.
Отправлено спустя 2 минуты 12 секунд:
И не какого буфера не надо. Рекурентная формула очень удобна для FDB реализации. на входе блока всегда Sn-1 на выходе всегда Sn.
Отправлено спустя 2 минуты 12 секунд:
И не какого буфера не надо. Рекурентная формула очень удобна для FDB реализации. на входе блока всегда Sn-1 на выходе всегда Sn.
-
- здесь недавно
- Сообщения: 20
- Зарегистрирован: 11 апр 2018, 16:24
- Имя: Александр
- Страна: Россиия
- город/регион: Москва
- Благодарил (а): 2 раза
-
- почётный участник форума
- Сообщения: 5632
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 600 раз
- Поблагодарили: 756 раз
Среднее значение входного сигнала
Тогда лучше использовать экспоненциально взвешенное скользящее среднее и считать его по другой рекуррентной формуле, задавшись величиной окна усреднения (интервалом сглаживания).
Отправлено спустя 2 минуты 50 секунд:
А какая разница, на каком языке писать? ;)
В данном случае всё будет точно также на любом языке.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
-
- эксперт
- Сообщения: 2330
- Зарегистрирован: 20 дек 2018, 04:45
- Имя: Сергей
- Страна: РБ/РФ
- город/регион: РФ Сергиев Посад
- Благодарил (а): 1990 раз
- Поблагодарили: 176 раз
Среднее значение входного сигнала
Мгновенное значение мы можем принимать как прогноз, не спорю. Но ТС хочет в час и в сутки. А от двух последних показаний в начале часа...
Для того что бы построить хотя бы линейную интерполяцию, нам нужны минимум 2 точки. Но для сохранения сердца и здоровья оператора, нужно больше.
Сертификат нужен на средство измерения. На средство отображения прогноза, нужен алгоритм его расчета. Если прибор изначально не в тех единицах - по вашему вопрос закрыт.
А для работы на установках - не всегда нужно сертифицировать устройства вывода. ТУ.
Тут согласен, при условии, что прогноз не требуется дальше, чем 200 мс. Либо сигнал статичен, но тогда к чему прогнозирование?
Отправлено спустя 6 минут 6 секунд:
Выбирайте любой метод, который вам обеспечит нужную точность.
У нас были и программисты, и инженеры электрики. И те и другие могли поправить программу PLC (100+ изделий). Но тем, кто ближе к электронике - переключались в Ladder.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
-
- здесь недавно
- Сообщения: 20
- Зарегистрирован: 11 апр 2018, 16:24
- Имя: Александр
- Страна: Россиия
- город/регион: Москва
- Благодарил (а): 2 раза
Среднее значение входного сигнала
Вообще если еще глубже идти, то нужно задавать этот расход для производительности насоса, чтоб оператор вводил допустим, число кубов в сутки, которое ему требуется и насос уже работал таким образом, чтоб выдать это количество кубов через сутки. Погрешность в любом случае будет, но я думаю не столь критично если он +-10 кубов не долил или перелил.
-
- эксперт
- Сообщения: 2330
- Зарегистрирован: 20 дек 2018, 04:45
- Имя: Сергей
- Страна: РБ/РФ
- город/регион: РФ Сергиев Посад
- Благодарил (а): 1990 раз
- Поблагодарили: 176 раз
Среднее значение входного сигнала
Это совсем другая задача. Самый простой - PID
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
-
- здесь недавно
- Сообщения: 20
- Зарегистрирован: 11 апр 2018, 16:24
- Имя: Александр
- Страна: Россиия
- город/регион: Москва
- Благодарил (а): 2 раза
Среднее значение входного сигнала
Это я реализовал, но теперь обратная задача это на основе показаний показать среднее в час и в сутки, вот я и сижу голову ломаю
-
- шаман
- Сообщения: 984
- Зарегистрирован: 27 июн 2013, 12:20
- Имя: Валерич
- Страна: СССР
- Благодарил (а): 40 раз
- Поблагодарили: 92 раза
Среднее значение входного сигнала
Как раз сейчас занимаюсь подобной задачей, но на Дельте.
В распоряжении есть LAD и ST, делаю на LAD.
Особо в математике не силен, поэтому без особых терминов)
В арсенале есть блок MEAN, куда на вход можно подать массив до 64х переменных, на выходе получаем среднее арифметическое. Остается правильно организовать этот массив.
Я беру переменную со входа и записываю в начало массива, потом "проталкиваю", сдвигаю данные по массиву, вернее, наоборот, начиная с предпоследней ячейки перемещаю данные в конец, дойдя до начала, записываю в первую ячейку входное значение.
Цикл происходит с заданной частотой. Назначив частоту 1Гц и величину окна 60, имеем усреднение за 1 минуту.
Давненько делал ФБ на фиксированную величину окна (10), использовал во многих проектах для сглаживания показаний датчиков, недавно сел и сделал окно настраиваемым до 64 - предел API.
В распоряжении есть LAD и ST, делаю на LAD.
Особо в математике не силен, поэтому без особых терминов)
В арсенале есть блок MEAN, куда на вход можно подать массив до 64х переменных, на выходе получаем среднее арифметическое. Остается правильно организовать этот массив.
Я беру переменную со входа и записываю в начало массива, потом "проталкиваю", сдвигаю данные по массиву, вернее, наоборот, начиная с предпоследней ячейки перемещаю данные в конец, дойдя до начала, записываю в первую ячейку входное значение.
Цикл происходит с заданной частотой. Назначив частоту 1Гц и величину окна 60, имеем усреднение за 1 минуту.
Давненько делал ФБ на фиксированную величину окна (10), использовал во многих проектах для сглаживания показаний датчиков, недавно сел и сделал окно настраиваемым до 64 - предел API.
-
- эксперт
- Сообщения: 2330
- Зарегистрирован: 20 дек 2018, 04:45
- Имя: Сергей
- Страна: РБ/РФ
- город/регион: РФ Сергиев Посад
- Благодарил (а): 1990 раз
- Поблагодарили: 176 раз
Среднее значение входного сигнала
Я повторно задам вопрос. Перефразирую.kasper00761 писал(а): ↑29 мар 2019, 13:08 Это я реализовал, но теперь обратная задача это на основе показаний показать среднее в час и в сутки, вот я и сижу голову ломаю
Вам спрогнозировать расход нужно или просто средний за последний час посчитать?
Отправлено спустя 2 минуты 37 секунд:
Предусмотрите по загрузке инициализацию всех элементов массива первым считанным значением. Иначе на 1 Гц первые правдоподобные показания у вас появятся ближе к 1 минуте.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
-
- эксперт
- Сообщения: 1617
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 70 раз
- Поблагодарили: 189 раз
Среднее значение входного сигнала
Блин, ну написал же рекурентную формулу. Она для того и создана, что бы :Предусмотрите по загрузке инициализацию всех элементов массива первым считанным значением. Иначе на 1 Гц первые правдоподобные показания у вас появятся ближе к 1 минуте.
a) отказатся о массива и всяких затратных и бессмысленных идей по перетусовке этого массива
b) сразу, со 2 -го значения начинать выдавать среднее.
Где то тут в форуме - я приложил вордовский файл, где расписал - как это формула выводится. Это, еще раз, для тех кто в танке, повторяю - не интерполяция а среднее значение.
На момент считывания 2 го сначения она соответствует среднему по 2 значениям, на момент считывания 5-го значения она соответствует среднему по 5 значениям и т.д.
Единственный тонкий момент, нужно предусмотреть сброс, т.е. запуск расчета по новой, например раз в 1 час, В некоторых вариантах реализации языков МЭК массивов нет вообще и что ? Среднее типа не посчитать ?
-
- шаман
- Сообщения: 984
- Зарегистрирован: 27 июн 2013, 12:20
- Имя: Валерич
- Страна: СССР
- Благодарил (а): 40 раз
- Поблагодарили: 92 раза
Среднее значение входного сигнала
С удовольствием воспользуюсь вашей формулой, не подскажете, как она выглядит на LAD?
-
- эксперт
- Сообщения: 1617
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 70 раз
- Поблагодарили: 189 раз
Среднее значение входного сигнала
Под рукой оказался только TIA портал, не взыщите. Ну и FUP я использовал, LAD не недолюбливаю - ну это не принципиально, к тому же Вы не мой заказчик, могу и покапризничать. Далее - в коде демонстрируется схема решения, например правильнее было использовать счетчик, добавить принудительный сброс - что бы избежать переполнения целого, можно было например F_TRIG использовать.
Но я как понимаю - у Вас сомнения по поводу реализации? Пожалуйста - смотрите, ничего сверхестественного.
Но я как понимаю - у Вас сомнения по поводу реализации? Пожалуйста - смотрите, ничего сверхестественного.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- шаман
- Сообщения: 984
- Зарегистрирован: 27 июн 2013, 12:20
- Имя: Валерич
- Страна: СССР
- Благодарил (а): 40 раз
- Поблагодарили: 92 раза
Среднее значение входного сигнала
Спасибо, посмотрел, но, к сожалению, у меня нет инструмента, подобного сименсовскому CALCULATE.
Надо посидеть - подумать, как можно переложить вашу формулу на LAD.
Отправлено спустя 4 минуты 3 секунды:
А, дошел смысл: величина массива не статическая, а динамическая, равная количеству полученных значений.
Ну это легко реализовать.
Надо посидеть - подумать, как можно переложить вашу формулу на LAD.
Отправлено спустя 4 минуты 3 секунды:
А, дошел смысл: величина массива не статическая, а динамическая, равная количеству полученных значений.
Ну это легко реализовать.
-
- эксперт
- Сообщения: 1617
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 70 раз
- Поблагодарили: 189 раз
Среднее значение входного сигнала
Неправильно эту формулу называть моей, ей наверно минимум лет 100. Просто приходилось заниматься цифровой обработкой сигнала в потоке, там нужно было получать некоторые статистические характеристики, а ресурсы были не просто ограничены - а очень ограничены. Приходилось, например от плавающей арифметики отказаться.
Отправлено спустя 29 минут 27 секунд:
А самая фишка в том, что массив как таковой не нужен.
Отправлено спустя 29 минут 27 секунд:
А самая фишка в том, что массив как таковой не нужен.
-
- эксперт
- Сообщения: 2330
- Зарегистрирован: 20 дек 2018, 04:45
- Имя: Сергей
- Страна: РБ/РФ
- город/регион: РФ Сергиев Посад
- Благодарил (а): 1990 раз
- Поблагодарили: 176 раз
Среднее значение входного сигнала
Я не против этой формулы.
Однако я по одному массиву вычисляю и среднее, и поток, и "тенденцию" (термин TraceMode, обозначает, растет ли значение/снижается/стоит на нуле ) сигнала. Могу и кой какой прогноз сделать. И на пики/провалы значений проверить.
Однако я по одному массиву вычисляю и среднее, и поток, и "тенденцию" (термин TraceMode, обозначает, растет ли значение/снижается/стоит на нуле ) сигнала. Могу и кой какой прогноз сделать. И на пики/провалы значений проверить.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
-
- эксперт
- Сообщения: 1617
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 70 раз
- Поблагодарили: 189 раз
Среднее значение входного сигнала
Тут дело не в формуле. При проектировании АСУ ТП очень важно провести грань между обработкой данных непосредственно в PLC и обработкой на уровне приложения(или сервера БД). То что Вы перечисляете, (на мой естественно взгляд) есть уже анализ данных (пусть и примитивный), и не факт - что он должен делаться на уровне PLC. Грубо говоря - хранение и обработка единицы информации в PLC существенно более дорогое удовольствие, чем например в сервере приложений или сервере баз данных. например - S7-1200 самый дешевый из линейки сименсовых контроллеров, который поставляется с "бесплатной" STEP-7 стоит грубо говоря 50 тыс. руб, имея на борту 120 кбайт памяти, и 1 процессор. Сравните с системным блоком, стандартной PC который Вы можете за эти деньги купить.
-
- шаман
- Сообщения: 984
- Зарегистрирован: 27 июн 2013, 12:20
- Имя: Валерич
- Страна: СССР
- Благодарил (а): 40 раз
- Поблагодарили: 92 раза
Среднее значение входного сигнала
Уважаемый petr2off, что-то усреднение по формуле
Sn = (Sn-1X(N-1)+Xn)/N
работает как-то не так.
Во-первых, вычисленное значение среднего приближается к входящему значению, но не достигает его,
во-вторых, с каждой транзакцией (увеличением количества измерений) "вес" входящего значения уменьшается.
Может, математически всё верно, но практически не совсем правильно.
Моделирование в Excel:
Чтобы этого избежать, нужно ограничивать глубину усреднения.
Отправлено спустя 10 минут 48 секунд:
О, юбилейное сообщение)))
Sn = (Sn-1X(N-1)+Xn)/N
работает как-то не так.
Во-первых, вычисленное значение среднего приближается к входящему значению, но не достигает его,
во-вторых, с каждой транзакцией (увеличением количества измерений) "вес" входящего значения уменьшается.
Может, математически всё верно, но практически не совсем правильно.
Моделирование в Excel:
Чтобы этого избежать, нужно ограничивать глубину усреднения.
Отправлено спустя 10 минут 48 секунд:
О, юбилейное сообщение)))
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- частый гость
- Сообщения: 450
- Зарегистрирован: 19 мар 2012, 20:04
- Имя: Павел
- Страна: Россия
- Благодарил (а): 5 раз
- Поблагодарили: 53 раза
-
- эксперт
- Сообщения: 1617
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 70 раз
- Поблагодарили: 189 раз
Среднее значение входного сигнала
Ну да, если Вы считаете среднее по 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
И т.д.
Массив значений 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
И т.д.