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

Алгоритм усредненнго значение расхода воды в simatic step7

ПЛК SIMATIC (S7-200, S7-1200, S7-300, S7-400, S7-1500, ET200)
Ответить

Автор темы
Kreadlling
здесь недавно
здесь недавно
Сообщения: 37
Зарегистрирован: 25 май 2016, 23:44
Имя: Евсюков Юрий Николаевич
Благодарил (а): 8 раз

Алгоритм усредненнго значение расхода воды в simatic step7

Сообщение Kreadlling »

Здравствуйте! На ПТК выводится расход воды каждую секунду. Необходимо создать алгоритм
расчета среднего значения расхода за сутки. Я хотел реализовать алгоритм, делая прерывания
каждую секунду в течении 60 секунд и записывать значения расхода в переменную,
потом складывать эти 60 значений и делить на 60 - это будет расход в минуту. Потом считать усредненное
значение в следующую минуту. Потом в 60-ти переменных хранить значения среднего расхода за 60 минут.
Тоже поделить их на 60 - будет средний расход в час. И 24 переменные для часа, тоже поделить их на 24 -
это будет средний расход за сутки.
Так вот вопрос: Можно ли в step 7 делать прерывания для одной функции, которая будет сохранять
значения расхода в единицу времени? Есть ли другой способ реализовать этот алгоритм.
Аватара пользователя

Jackson
администратор
администратор
Сообщения: 17466
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 744 раза
Поблагодарили: 1277 раз

Алгоритм усредненнго значение расхода воды в simatic step7

Сообщение Jackson »

Kreadlling писал(а): Необходимо создать алгоритм
расчета среднего значения расхода за сутки.
Kreadlling писал(а): Есть ли другой способ реализовать этот алгоритм.
Взяли количество продукта за сутки (конечное минус начальное), поделили на 24 = средний расход (единиц в час) за истекшие сутки. Не то?
По вопросам работы Форума можно обратиться по этим контактам.

Автор темы
Kreadlling
здесь недавно
здесь недавно
Сообщения: 37
Зарегистрирован: 25 май 2016, 23:44
Имя: Евсюков Юрий Николаевич
Благодарил (а): 8 раз

Алгоритм усредненнго значение расхода воды в simatic step7

Сообщение Kreadlling »

TEB писал(а):
Нет, у нас стоит датчик - он выдает уже расход, но в секунду приблизительно, нужен расход средний за сутки, то есть нужно усреднить
эти показания за сутки...
Еще раз хотел спросить - можно ли в step7 задавать прерывания для одной функции (например, чтобы она в секунду времени опрашивала показания датчика, а далее суммировать эти показания и усреднять за минуту, потом за час, потом за сутки) ?

Бондарев Михаил
почётный участник форума
почётный участник форума
Сообщения: 981
Зарегистрирован: 25 июл 2008, 23:23
Имя: Бондарев Михаил Владимирович
Страна: Россия
город/регион: Магнитогорск
Благодарил (а): 5 раз
Поблагодарили: 2 раза

Алгоритм усредненнго значение расхода воды в simatic step7

Сообщение Бондарев Михаил »

У вас там поди ДРС како-нибудь стоит?

Как вы его опрашивать-то собираетесь? Ваша задача не в симатике, а понимании процесса
Аватара пользователя

CHANt
эксперт
эксперт
Сообщения: 1465
Зарегистрирован: 25 июл 2008, 10:25
Имя: Эдуард Владимирович
Страна: СССР
город/регион: Оренбург
Благодарил (а): 43 раза
Поблагодарили: 93 раза

Алгоритм усредненнго значение расхода воды в simatic step7

Сообщение CHANt »

Kreadlling писал(а): Еще раз хотел спросить - можно ли в step7 задавать прерывания для одной функции (например, чтобы она в секунду времени опрашивала показания датчика, а далее суммировать эти показания и усреднять за минуту, потом за час, потом за сутки) ?
Да. ОВ32 - циклическое прерывание 1 сек. ОВ10-ОВ17 прерывания по времени. Можно вызвать раз в минуту, скажем ОВ10, раз в час ОВ11, раз в сутки ОВ12. А вот запуск этих ОВ по времени придется организовать самому. Почитайте по ним справку и документацию.
По ОВ10-17 все еще зависит от модели ЦПУ, для младшей линейки S7-300 увы - больше одного прерывания использовать не получится...
Более простым решением было бы сделать это все в TagLogging WinCC. Там все эти функции есть, единственно, надо создать "календарные" таймера (минутный, часовой, суточный).
--------------------------------------------------------------------------------------------
Аватара пользователя

megavolt86
эксперт
эксперт
Сообщения: 1172
Зарегистрирован: 14 ноя 2013, 20:35
Имя: Анатолий Сергеевич
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 13 раз
Поблагодарили: 65 раз

Алгоритм усредненнго значение расхода воды в simatic step7

Сообщение megavolt86 »

А почему бы не написать отдельную функцию для реалицации данных "прерываний" - в виде отключения блока подсчета?
Могу предложить свое видение реализации данной задачи
В симатике такого не делал - потребности не было, но писал блок подсчета для квантума, в принципе на сцл для симатика можно вполне это реализовать.
Часть комментариев на Англ. языке, но вроде понятно)))
[+] Код_программы
S6:=%S6; //тактовый бит - импульс раз в 1 секунду
imp_1:=re(s6);//импульс по переднему фронту тактового бита S6
imp_0:=fe(s6);//импульс по заднему фронту тактового бита S6

DOM:=bcd_to_int(shl(%sw52,8))/100; (*allocation date of month*)//sw52 -текущая дата и месяц

CUR_TIME:=(int_to_real(bcd_to_int(%sw51))+sec);(*conversion time*)//sw51 -текущее время

min:=bcd_to_int(shl(%sw51,8))/100;(*allocation of minutes*)

sec:=(int_to_real(bcd_to_int(%sw50)))/10000.0;(*conversion seconds*)//sw50 -текущая секунда

F_Sec:=FLOW/3600.0; (*calculation second flow*)

if imp_1 then
F_Hour:=F_Hour+F_Sec;(*calculation hour flow*)
end_if;

if min=0 and sec=0.0 and imp_1 then
F_Hour:=0.0;
end_if;(*the discharge flow rate everyhour*)

if min=59 and sec=0.59 and imp_0 then
if cur_time>=2300.00 or cur_time<=800.00 then
Current_23_8:=Current_23_8+F_Hour;(*the calculation for the first shift*)//смена с 23 до 8
end_if;

if cur_time>=800.00 and cur_time<=1600.00 then
Current_8_16:=Current_8_16+F_Hour;(*the calculation for the second shift*)//смена с 8 до 16
end_if;

if cur_time>=1600.00 and cur_time<=2300.00 then
Current_16_23:=Current_16_23+F_Hour;(*the calculation for the fird shift*)//Смена с 16 до 23
end_if;
end_if;

Current_Day:=Current_23_8+Current_8_16+Current_16_23;(*the calculation for the day*)

if cur_time=759.59 and imp_0 then //значения за предыдущие смены, сутки и тек месяц
old_23_8:=Current_23_8;
old_8_16:=Current_8_16;
old_16_23:=Current_16_23;
old_Day:=Current_Day;
Current_Month:=Current_Month+Current_Day;
end_if; (*previous value flow*)

if dom=1 and cur_time=800.01 and imp_1 then
old_Month:=Current_Month;
end_if;

if cur_time=800.02 and imp_0 then//сброс значений текущих счетчиков
Current_23_8:=0.0;
Current_8_16:=0.0;
Current_16_23:=0.0;
Current_Day:=0.0;(*the discharge flow rate everyday*)
if dom=1 then
Current_Month:=0.0;(*the discharge flow rate everymonth*)
end_if;
end_if;

P_CT:=cur_time;
P_Min:=min;
P_Sec:=sec*100.0;
P_date:=dom;

if min=59 and sec=0.59 and imp_0 then
old_h:=f_hour;
end_if;
это первая версия программы, выводит текущий расход, расход в текущий час, текущую смену, сутки, за предыдущие сутки и текущий месяц.
Вторая версия кода (могу приложить позже) записывала часовой расход за каждый час в четырехмерный массив и хранился расход за неделю...но тут ограничение памяти перевесило необходимость хранения такого количества данных.
:ext_secret:
Аватара пользователя

Jackson
администратор
администратор
Сообщения: 17466
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 744 раза
Поблагодарили: 1277 раз

Алгоритм усредненнго значение расхода воды в simatic step7

Сообщение Jackson »

megavolt86 писал(а): Вторая версия кода (могу приложить позже) записывала часовой расход за каждый час в четырехмерный массив и хранился расход за неделю...
А корректно, когда ПЛК хранит исторические данные?
По вопросам работы Форума можно обратиться по этим контактам.
Аватара пользователя

megavolt86
эксперт
эксперт
Сообщения: 1172
Зарегистрирован: 14 ноя 2013, 20:35
Имя: Анатолий Сергеевич
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 13 раз
Поблагодарили: 65 раз

Алгоритм усредненнго значение расхода воды в simatic step7

Сообщение megavolt86 »

TEB писал(а): А корректно, когда ПЛК хранит исторические данные?
Конечно нет, это делал на случай потери связи с сервером, основной подсчет ведется в скада. Коммерческих позиции всего три в цехе, потому продублировал счетчик в плк, на случай потери связи)))
:ext_secret:
Аватара пользователя

Jackson
администратор
администратор
Сообщения: 17466
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 744 раза
Поблагодарили: 1277 раз

Алгоритм усредненнго значение расхода воды в simatic step7

Сообщение Jackson »

megavolt86 писал(а): потому продублировал счетчик в плк
Коммерческий?
По вопросам работы Форума можно обратиться по этим контактам.
Аватара пользователя

megavolt86
эксперт
эксперт
Сообщения: 1172
Зарегистрирован: 14 ноя 2013, 20:35
Имя: Анатолий Сергеевич
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 13 раз
Поблагодарили: 65 раз

Алгоритм усредненнго значение расхода воды в simatic step7

Сообщение megavolt86 »

TEB писал(а): Коммерческий
Всмысле расход продукта на продажу - а это прибыль (на местном жаргоне называем коммерческий учет)
Пардоньте, что сразу не указал на это и ввел в заблуждение)))
:ext_secret:
Аватара пользователя

Marrenoloth
завсегдатай
завсегдатай
Сообщения: 524
Зарегистрирован: 05 окт 2009, 11:51
Имя: Тихомиров Дмитрий Викторович
Страна: Россия
город/регион: Москва
Благодарил (а): 16 раз
Поблагодарили: 18 раз

Алгоритм усредненнго значение расхода воды в simatic step7

Сообщение Marrenoloth »

А топикстартеру нужно выводить мгновенное среднесуточное, начиная от текущего момента, или за прошлые сутки, например, с 0:00 часов вчера до 0:00 часов сегодня?

Автор темы
Kreadlling
здесь недавно
здесь недавно
Сообщения: 37
Зарегистрирован: 25 май 2016, 23:44
Имя: Евсюков Юрий Николаевич
Благодарил (а): 8 раз

Алгоритм усредненнго значение расхода воды в simatic step7

Сообщение Kreadlling »

Marrenoloth писал(а): А топикстартеру нужно выводить мгновенное среднесуточное, начиная от текущего момента, или за прошлые сутки, например, с 0:00 часов вчера до 0:00 часов сегодня?
Нет нужно за каждый час по прошествии, и за каждый день по прошествии, также скорее всего придется за каждый месяц...
Ответить

Вернуться в «Simatic Step7»