Профиль должен быть заполнен на русском языке кириллицей. Заполнение профиля заведомо ложными или некорректными данными - причина возможного отказа в регистрации на форуме.

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


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

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

Сообщение Kreadlling » 25 май 2016, 23:47

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

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

TEB
специалист по DEIF
специалист по DEIF
Сообщения: 7906
Зарегистрирован: 17 июн 2008, 15:01
Ф.И.О.: Евгений свет Брониславович
Благодарил (а): 38 раз
Поблагодарили: 66 раз
Контактная информация:

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

Сообщение TEB » 26 май 2016, 01:18

Kreadlling писал(а):Источник цитаты Необходимо создать алгоритм
расчета среднего значения расхода за сутки.


Kreadlling писал(а):Источник цитаты Есть ли другой способ реализовать этот алгоритм.


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


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

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

Сообщение Kreadlling » 26 май 2016, 15:48

TEB писал(а):Источник цитаты

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


Бондарев Михаил
почётный участник форума
почётный участник форума
Сообщения: 945
Зарегистрирован: 25 июл 2008, 22:23
Ф.И.О.: Бондарев Михаил Владимирович
Поблагодарили: 1 раз

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

Сообщение Бондарев Михаил » 28 май 2016, 22:26

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

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

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

CHANt
эксперт
эксперт
Сообщения: 1247
Зарегистрирован: 25 июл 2008, 09:25
Ф.И.О.: Гринев Эдуард Владимирович
Откуда: Оренбург
Благодарил (а): 12 раз
Поблагодарили: 37 раз
Контактная информация:

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

Сообщение CHANt » 30 май 2016, 07:19

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

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

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

megavolt86
специалист
специалист
Сообщения: 630
Зарегистрирован: 14 ноя 2013, 19:35
Ф.И.О.: Анатолий Сергеевич
Откуда: Башкортостан
Благодарил (а): 3 раза
Поблагодарили: 6 раз

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

Сообщение megavolt86 » 01 июн 2016, 10:41

А почему бы не написать отдельную функцию для реалицации данных "прерываний" - в виде отключения блока подсчета?
Могу предложить свое видение реализации данной задачи
В симатике такого не делал - потребности не было, но писал блок подсчета для квантума, в принципе на сцл для симатика можно вполне это реализовать.
Часть комментариев на Англ. языке, но вроде понятно)))

[+] Код_программы
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:

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

TEB
специалист по DEIF
специалист по DEIF
Сообщения: 7906
Зарегистрирован: 17 июн 2008, 15:01
Ф.И.О.: Евгений свет Брониславович
Благодарил (а): 38 раз
Поблагодарили: 66 раз
Контактная информация:

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

Сообщение TEB » 01 июн 2016, 11:01

megavolt86 писал(а):Источник цитаты Вторая версия кода (могу приложить позже) записывала часовой расход за каждый час в четырехмерный массив и хранился расход за неделю...

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

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

megavolt86
специалист
специалист
Сообщения: 630
Зарегистрирован: 14 ноя 2013, 19:35
Ф.И.О.: Анатолий Сергеевич
Откуда: Башкортостан
Благодарил (а): 3 раза
Поблагодарили: 6 раз

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

Сообщение megavolt86 » 01 июн 2016, 13:04

TEB писал(а):Источник цитаты А корректно, когда ПЛК хранит исторические данные?

Конечно нет, это делал на случай потери связи с сервером, основной подсчет ведется в скада. Коммерческих позиции всего три в цехе, потому продублировал счетчик в плк, на случай потери связи)))
:ext_secret:

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

TEB
специалист по DEIF
специалист по DEIF
Сообщения: 7906
Зарегистрирован: 17 июн 2008, 15:01
Ф.И.О.: Евгений свет Брониславович
Благодарил (а): 38 раз
Поблагодарили: 66 раз
Контактная информация:

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

Сообщение TEB » 01 июн 2016, 15:05

megavolt86 писал(а):Источник цитаты потому продублировал счетчик в плк

Коммерческий?
По вопросам работы Форума можно обратиться ко мне, или по этим контактам.

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

megavolt86
специалист
специалист
Сообщения: 630
Зарегистрирован: 14 ноя 2013, 19:35
Ф.И.О.: Анатолий Сергеевич
Откуда: Башкортостан
Благодарил (а): 3 раза
Поблагодарили: 6 раз

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

Сообщение megavolt86 » 01 июн 2016, 15:24

TEB писал(а):Источник цитаты Коммерческий

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

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

Marrenoloth
завсегдатай
завсегдатай
Сообщения: 504
Зарегистрирован: 05 окт 2009, 10:51
Ф.И.О.: Тихомиров Дмитрий Викторович
Откуда: Москва
Благодарил (а): 15 раз
Поблагодарили: 18 раз
Контактная информация:

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

Сообщение Marrenoloth » 02 июн 2016, 09:11

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


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

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

Сообщение Kreadlling » 27 июн 2016, 18:34

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

Нет нужно за каждый час по прошествии, и за каждый день по прошествии, также скорее всего придется за каждый месяц...


Вернуться в «ПЛК SIMATIC (S7-200, S7-1200, S7-300, S7-400, S7-1500, ET200)»



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость