PDA

Просмотр полной версии : Учёт электроэнергии



Сема
23.03.2017, 15:46
Добрый день уважаемые коллеги!

У меня есть МЭ110-3М и ПЛК323.ТЛ. С модуля ввода я получаю текущие показания мощностей по трём фазам. Как мне рассчитать объём потреблённой электрической энергии и вывести на визуализацию и графики?

Я знаю, что с помощью скрипта. Как написать и по какой формуле это рассчитывается??

melky
23.03.2017, 16:15
У вас ПЛК323 будет успевать опрашивать 3М со скоростью 2-5 раз в секунду ? Если да, то с некоторой погрешностью вы сможете считать потребленную энергию. Если нет, поставьте счетчик с интерфейсом и вычитывайте из него.
Чем быстрее будете читать, тем меньше будет погрешность, иначе забудьте.

Сема
23.03.2017, 16:42
У вас ПЛК323 будет успевать опрашивать 3М со скоростью 2-5 раз в секунду ? Если да, то с некоторой погрешностью вы сможете считать потребленную энергию. Если нет, поставьте счетчик с интерфейсом и вычитывайте из него.
Чем быстрее будете читать, тем меньше будет погрешность, иначе забудьте.

А если будет успевать? То как это всё делается? Сильно точно и не требуются расчёты. Это не коммерческий учёт.

melky
23.03.2017, 16:48
блин, дома надо глянуть, если не затер в программе. Суть формулы собственно одна, ток*напряжение и учесть время... возможно можно брать значения мгновенной мощности но опять же с учетом времени. Вам же квт/ч надо сохранять.

ПЛК100 с однофазным в принципе успевал, но у меня только МЭ стоит и 8АС на ПЛК, скорость 115200. Жалко только LREAL в ПЛК нет, хотел чтобы с сотыми считало, плюнул на эту затею, мне проще счетчик с интерфейсом в SCADA заставить работать...
Вернее все считало нормально, но нельзя было в REAL ввести текущие показания счетчика, слишком большая величина была для REAL

Сема
23.03.2017, 16:51
А до сотых зачем мерить? Неужто такая точность нужна?

Дело в том, что не знаю я как скрипт этот писать на Паскале. И откуда мне величину времени брать?

melky
23.03.2017, 16:55
как откуда ? таймер, разница времени между опросами от системных часов.

На счет паскаля не подскажу. Да формулу наверное можно и в нете спосмотреть

Да особо не собирался до сотых мерить, вернее мерить надо как положено, просто лень было потом преобразовывать в dword для вывода на панели.

Eugene.A
23.03.2017, 17:32
Да какая там формула? Просто определенный интеграл мощности по времени.

melky
23.03.2017, 17:33
не забывая про три фазы, косинусы и тангенсы для активной и реактивной энергий...

Eugene.A
23.03.2017, 18:49
С МЭ110-3М можно считать активную, полную, реактивную мощности, косинус и коэффициент мощности. Для расчета требуемой энергии остается только проинтегрировать активную мощность по времени.

Scream
23.03.2017, 19:46
Хм.. а мы взяли меркурий 234й до 100 ампер, дешевле получилось и с архивом,rs485,индикатором и т.д.
Или может МЭ110-3М в чём то лучше, подскажете?

melky
23.03.2017, 20:06
Scream, правильно сделали, счетчик лучше, чем любой анализатор, как минимум в подсчете затраченной энергии в квт/часах

melky
23.03.2017, 21:08
PROGRAM Kwt_hours
VAR
kwt_corr: BOOL;
rt1: R_TRIG;
kwt_h: REAL;
kwt_start: REAL;
END_VAR

VAR RETAIN
kwt_summ: REAL;
END_VAR

rt1(CLK:=kwt_corr , Q=> );
IF rt1.Q THEN
kwt_summ:=kwt_start;
kwt_start:=0;
END_IF
kwt_h:=active/7200/1000;
kwt_summ:=kwt_summ+kwt_h;

Программа запускается из Задач, циклическая, интервал 500 ms, расчет вполне приемлимый от значения мгновенной активной мощности

В основной программе просто Kwt_hours.kwt_summ в переменную через округление real заводил

Сема
24.03.2017, 08:25
Хм.. а мы взяли меркурий 234й до 100 ампер, дешевле получилось и с архивом,rs485,индикатором и т.д.
Или может МЭ110-3М в чём то лучше, подскажете?

Просто так сложились обстоятельства... Единственный минус МЭ110 в том, что это не счётчик, потреблённую энергию не считает...

Сема
24.03.2017, 08:29
PROGRAM Kwt_hours
VAR
kwt_corr: BOOL;
rt1: R_TRIG;
kwt_h: REAL;
kwt_start: REAL;
END_VAR

VAR RETAIN
kwt_summ: REAL;
END_VAR

rt1(CLK:=kwt_corr , Q=> );
IF rt1.Q THEN
kwt_summ:=kwt_start;
kwt_start:=0;
END_IF
kwt_h:=active/7200/1000;
kwt_summ:=kwt_summ+kwt_h;

Программа запускается из Задач, циклическая, интервал 500 ms, расчет вполне приемлимый от значения мгновенной активной мощности

В основной программе просто Kwt_hours.kwt_summ в переменную через округление real заводил

kwt_h:=active/7200/1000; - ?????????????

А это что за цифры в знаменателе...?

Scream
24.03.2017, 08:47
kwt_h:=active/7200/1000; - ?????????????

А это что за цифры в знаменателе...?

В часе 60 минут
в 60 минутах 3600 секунд
в 3600 секундах 7200 по 500мс

/1000 это для киловатт наверное, чтож еще.....

Scream
24.03.2017, 08:49
Просто так сложились обстоятельства... Единственный минус МЭ110 в том, что это не счётчик, потреблённую энергию не считает...

А цена 8700 это наверное большой жирный плюс?

melky
24.03.2017, 08:52
Плюс еще добавить стоимость трансформаторов тока, против 60 или 100 ампер прямого включения счетчика.

С цифрами все верно, если опрашиваете чаще чем 500 мс то и первое число должно быть соответствующим.

Сема
24.03.2017, 09:22
Скажите, а вот ещё такой вопрос, а для конфигурации электросчётчиков и съёма показаний требуются какие-то разрешения? Я недавно услышал, что не дают доступа к настройкам просто так...

Scream
24.03.2017, 09:33
Скажите, а вот ещё такой вопрос, а для конфигурации электросчётчиков и съёма показаний требуются какие-то разрешения? Я недавно услышал, что не дают доступа к настройкам просто так...

Речь про какие счетчики?
Те, которые у вас в подъезде?
Или которые вы сами купили?

Странный вопрос, если я купил счетчик для своих нужд, то я конфигурирую его как хочу, ставлю тарифы и т.д., меняю все пароли, естественно доступ из конфигуратора есть, создание отчетов и т.д. (я о меркурии).
Если вам домой поставили счетчик, то ясен пень вам никаких паролей не дадут, это наказуемо в общем.

ASo
24.03.2017, 10:08
Если вам домой поставили счетчик, то ясен пень вам никаких паролей не дадут, это наказуемо в общем.В общем это никак не наказуемо, ибо по нашему чудному подзаконодательству абонентский счетчик является собственностью абонента(!!!). Поэтому кто дожен владеть админовским паролем - весьма открыт.

Scream
24.03.2017, 10:40
В общем это никак не наказуемо, ибо по нашему чудному подзаконодательству абонентский счетчик является собственностью абонента(!!!). Поэтому кто дожен владеть админовским паролем - весьма открыт.

Да, но мы то знаем что будет делать народ имея полный доступ к счетчику, что в последствии наказуемо.

Сергей0308
24.03.2017, 10:41
Вот почему доступ не давать непонятно, например у однофазных счётчиков меркурий несколько уровней доступа, тоесть можешь смотреть а изменить нет и какой здесь криминал посмотреть???

Сема
24.03.2017, 10:54
Просто мне стали задавать подобные вопросы, а я как-то и не подозревал, что доступ может быть закрыт. В принципе с меркурия по интерфейсу 485 мы просто снимаем показания..

melky
24.03.2017, 11:17
У счетчика 2 уровня доступа (3-й заводской), если вам дадут 1-й уровень, вы не сможете в нем поменять диапазон 2-ого тарифа, добавить туда праздничных дней, изменить коэффициенты трансформации и т.д.) но читать его сможете.
А если вы поставите вторым счетчик для технического учета то делайте с ним что хотите.

Сергей0308 - у однофазных Меркуриев как раз таки НЕТ уровней доступа, там он один единственный. Несколько уровней только у их трехфазников.

Сергей0308
24.03.2017, 11:35
У счетчика 2 уровня доступа (3-й заводской), если вам дадут 1-й уровень, вы не сможете в нем поменять диапазон 2-ого тарифа, добавить туда праздничных дней, изменить коэффициенты трансформации и т.д.) но читать его сможете.
А если вы поставите вторым счетчик для технического учета то делайте с ним что хотите.

Сергей0308 - у однофазных Меркуриев как раз таки НЕТ уровней доступа, там он один единственный. Несколько уровней только у их трехфазников.

Да несколько уровней доступа у трёхфазных счётчиков, у ТС, насколько понял, как раз три фазы!

Popov Boris
03.04.2017, 17:22
Предлагаю адаптацию кода пользователя melky к Телемеханике Лайт.

Скриптовый блок рассчитывает профили мощности по значению активной энергии с модуля МЭ110-3М. Скриптовый блок позволяет рассчитывать потребление энергии по фазам, а так же рассчитывает профили мощности, за указанное пользователем время,например получасовые, или пятиминутные (более детальные для технического учета). 30386

Текст скрипта на Pascal:


var kwt_h ,active,kwt_summ, kwt_per_time, kwt_last, Ti: Real;
var time, count, iter: integer;


{---------- main program -----------}
begin
kwt_h:=0;
ReadFloat('P', active) ; //считываем текущие показания
ReadFloat('суммКВч', kwt_summ) ; // считываем последнее суммарное потребление
ReadFloat('Ti', Ti) ; // считываем период итегрирования( в секундах,по умолчания 1 секунда)
ReadInteger('Время', time) ; // считываем время,за которое считаем профиль (в минутах).
ReadInteger('count', count) ; // считываем значение счетчика
ReadInteger('iter', iter) ; // считываем значение счетчика итераций с начала расчета( с момента рестарта плк) - для контроля

if count=0 then kwt_last:= kwt_summ; // если счетчик только начал считать,записываем сум.потр во временную переменную
count:= count+1; // увеличиваем счетчик
iter:= iter+1;
WriteInteger('iter', iter);
WriteInteger('count', count); //записываем значение сч на выход
kwt_h:=active*Ti/3600/1; // вычисляем потребление в данном сл ВТ-ч
kwt_summ:=kwt_summ+kwt_h; //формируем суммарное потребление
WriteFloat('сумм квч', kwt_summ); // записываем на выход
if count = 60*time then //
begin
count:=0; //
kwt_per_time:= kwt_summ - kwt_last; //
kwt_last:= kwt_summ;
WriteFloat('Профиль мощности', kwt_per_time);
WriteInteger('count', count);
end;


end.


Во вложении представлен проект Телемеханика Лайт, в котором расчет профилей ведется на ПЛК 323-ТЛ, а архивирование параметров ведется на верхнем уровне, где можно построить отчеты по профилям, посмотреть графики потребления. 30387303883038930390

Сема
07.04.2017, 08:28
Всем привет. В принципе удобный скрипт. Расчёты ведутся логичные и правильные. Неудобство заключается в том, что при выключении питания всё сбрасывается на ноль. А так всё хорошо...

Владимир Ситников
13.02.2018, 00:01
Я "случайно" купил МЭ110-224.1М (http://www.owen.ru/catalog/modul_vvoda_parametrov_elektricheskoj_seti_me110_2 203m/opisanie)
Скорее, нужно было купить счётчик с RS-485, но кто же знал?

Напишу о моих экспериментах.

Кому лень читать, краткие выводы:
За день у меня набежало примерно 16кВт*ч, и погрешность от "простого сложения показаний МЭ110" составляет 25%.
Вывод: учитывать энергию простым сложением "общего потребления" и "ежесекундного потребления" НЕЛЬЗЯ.
Поэтому варианты тов. melky (http://www.owen.ru/forum/showthread.php?t=26382&p=241940&viewfull=1#post241940) и тов. Popov Boris (http://www.owen.ru/forum/showthread.php?t=26382&p=242916&viewfull=1#post242916) неправильные.

Более хитрый вариант (с промежуточной переменной) у меня дал погрешность в 2%

Но, похоже, одна дополнительная не решает все проблемы с погрешностями. Надо попробовать ещё доработать в этой части.

-----

Участники забега:
Гранит-1М (счётчик на лестничной клетке, класс 1)
МЭ110-224.1М (написано Кл. 0,5;1.0) + трансформатор Меандр MES-62/20 (60A/5A, класс 1)
ПЛК110-М02


Потребление: 0.2...2кВт (где-то 0.9кВт в среднем)

МЭ110-224.1М настроен как "universal modbus device", с единственным "real input module" (register=55 -- активная мощность, read holding registers 0x03)
polling time = 1000ms

Рядом МУ110-6У (workmode=both, poll time=200ms)


Попробовал просто сложить ежесекундный расход.
Например, 200Вт*1с = 360/1000 кВт * 1/3600 ч = 0,0001 кВт*ч
И тут интересный момент. Суммарные показания счётчика -- минимум десятки тысяч кВт*ч

У меня, например, сейчас Гранит-1М показывает 3381.0 кВт*ч.
Если попробовать сложить 3381.0 + 0.0001, то окажется, что это сложение очень и очень сильно теряет точность. Точность REAL это примерно 7 значащих цифр.
В статье https://habrahabr.ru/post/331814/ приводится пример (видно, что последняя двойка теряется):

314155.6 +
3.12 =
314158.7

Зная это, я код написал двумя вариантами:
1) По-простому (в общую переменную добавляем ежесекундный расход)
2) "С промежуточной переменной, которая сливается в общий расход по достижению значения в 1кВт*ч"
3) Разумеется, между опросами может пройти неизвестное время, поэтому я анализирую то, сколько времени прошло с предыдущего опроса. Как в конфигураторе узнать "время последнего опроса -- неясно", поэтому сделал через R_TRIG(CLK := lastModbusAddress = 3)

Код:


VAR_GLOBAL RETAIN SUPERRESISTENT
pwr : REAL;
pwr_bpm : REAL;
kwh_simple : REAL;
kwh_small : REAL;
kwh_better : REAL;
kwh_total : REAL;
END_VAR

PROGRAM ...
MB: R_TRIG;
dq : REAL;
pt, now : DWORD;
init : BOOL;

MB(CLK := lastModbusAddress = 3);
IF MB.Q THEN
now := T_PLC_MS();
IF NOT init THEN
pt := now;
init := TRUE;
END_IF;
pwr := power_consumption; (* это REAL значение в Ваттах, которое приходит из МЭ *)
pwr_bpm := pwr/1000*(6400/60); (* вычисляем "количество импульсов в минуту", которое должен выдавать Гранит-1М, т.к. у него 6400 имп/(кВт*ч) *)
dq := pwr * (now-pt) / 1000 / 3600 / 1000; (* ежесекундный расход *)
kwh_simple := kwh_simple + dq; (* по-простому увеличиваем счётчик общего потребления. Так делать не нужно, но попробуем *)

(* чуть более хитрый подсчёт *)
kwh_small := kwh_small + dq;
IF kwh_small > 1 THEN
kwh_better := kwh_better+kwh_small;
kwh_small := 0;
END_IF;
kwh_total := kwh_better+kwh_small; (* для того, чтобы в online видно было "общее" потребление *)
pt := now;
END_IF;



По факту: вчера запустил, сбросил kwh_simple и kwh_better в значение, которое показывает Гранит (он, собака, не цифровой, а барабанчатый) и там было около 3365

Сейчас

Гранит: 3381.25
kwh_simple: 3377.51
kwh_total: 3381.52


Т.е. "набежало" около 16кВт*ч, показания "простого сложения" сильно расходятся (сумма оказалась на 4кВт*ч меньше -- т.е. на 25%).
"хитрое" сложение тоже почему-то не сошлось, и разница получилась 0.27 кВт*ч (т.е. где-то 2%)
Возможно, эти 2% получаются из-за того, что у меня в цепи трансформатор и МЭ, и у обоих 1-ый класс. Т.е. ожидаемая погрешность (1%2+1%2)0.5=1.4%

melky
13.02.2018, 08:56
Самое простое это поставить Меркурий 206 и написать ему опрос. Я тоже отказался от суммирования потребленной энергии на МЭ110, смотрю только ток, нагрузку и т.д.
И опрашивать МЭ надо максимально быстро, тогда точность увеличивается. То есть надо сажать на отдельный интерфейс, если есть такая возможность.

Сема
13.03.2018, 16:16
Вообще можно обойтись одним лишь электросчетчиком. Там есть в том числе и оперативные данные. Хотите точности, достаточно поменять опрос по изменению тока в процентном соотношении. И считать ничего не надо, всё итак чётко будет.