Периодическое накопление данных в переменной?

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Ответить
DWD
Лейтенант
Сообщения: 349
Зарегистрирован: 18.10.2015{, 13:51}
Репутация: 5
Откуда: Кривой Рог

Периодическое накопление данных в переменной?

#1

Сообщение DWD » 28.12.2015{, 13:48}

Создана переменная, в которую периодически (раз в минуту) добавляется сумма этой же переменной с новым числом. Как это реализовать?
Будет ли работать показанная ниже конструкция?

Изображение

Добавлено (28.12.2015, 13:48)
---------------------------------------------
Мужики, подскажите, как реализовать, а то вся работа стоит... :(
Приведенная выше конструкция не работает.
Не ужели ни кто такое не делал?
На асме такое делается в три строчки же... Да и операция не редкая.
Последний раз редактировалось DWD 28.12.2015{, 13:54}, всего редактировалось 1 раз.
Изображение

Airis
Сержант
Сообщения: 175
Зарегистрирован: 24.09.2015{, 07:27}
Репутация: 0

Периодическое накопление данных в переменной?

#2

Сообщение Airis » 28.12.2015{, 19:20}

Попробуйте поставить RTrig между [Minut]и входом En[Wh].

Аватара пользователя
rw6cm
Полковник
Сообщения: 2081
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 251
Имя: Владимир

Периодическое накопление данных в переменной?

#3

Сообщение rw6cm » 28.12.2015{, 19:21}

DWD писал(а):Мужики, подскажите, как реализовать, а то вся работа стоит... :(
)
Для скачивания вложений Вы должны быть зарегистрированы.
Win10-64, FLProg (portable)

DWD
Лейтенант
Сообщения: 349
Зарегистрирован: 18.10.2015{, 13:51}
Репутация: 5
Откуда: Кривой Рог

Периодическое накопление данных в переменной?

#4

Сообщение DWD » 28.12.2015{, 19:28}

Airis писал(а):Попробуйте поставить RTrig между [Minut]и входом En[Wh].
Пробовал. При одинаковых значениях (для проверки) первое значение (после нуля) записывается правильно, а последующие - удваиваются.
То есть, вместо того, что бы наращиваться так: 1, 2, 3, 4, 5...
они наращиваются вот так: 1, 3, 6, 12...
Изображение

Аватара пользователя
Chaynik
Рядовой
Сообщения: 92
Зарегистрирован: 15.11.2015{, 18:26}
Репутация: 0

Периодическое накопление данных в переменной?

#5

Сообщение Chaynik » 28.12.2015{, 19:28}

DWD,  может быть вас не совсем правильно понял, но сейчас расскажу что получилось у меня.
Конструкция похожая на вашу, только на LAD.
Значит нарисовал такую схему:
2738494.jpg
Схема по идее, должна работать следующим образом.
Симметричный генератор, раз в секунду посылает команду на счётчик который считает на увеличение.
Так же, этот генератор раз в секунду переключает аналоговый переключатель.
Т.е. в генераторе уставка на 500мс, и первый период сложение производится с 0 входа, а второй с 1 входа
Числа складываются и всё это выводится в ком-порт. 

В мониторе же творится непонятно что, числа принимают разные значения и со знаком минус тоже. 

Прикладываю проект. Возможно я что-то не понимаю, и кто-нибудь сможет объяснить, это ошибка,
или же какой-то глюк.
Для скачивания вложений Вы должны быть зарегистрированы.

Аватара пользователя
rw6cm
Полковник
Сообщения: 2081
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 251
Имя: Владимир

Периодическое накопление данных в переменной?

#6

Сообщение rw6cm » 28.12.2015{, 20:38}

Chaynik писал(а):Схема по идее, должна работать следующим образом.Симметричный генератор, раз в секунду посылает команду на счётчик который считает на увеличение.
Так же, этот генератор раз в секунду переключает аналоговый переключатель.
Т.е. в генераторе уставка на 500мс, и первый период сложение производится с 0 входа, а второй с 1 входа
Числа складываются и всё это выводится в ком-порт.
на UNO перевёл.
Для скачивания вложений Вы должны быть зарегистрированы.
Win10-64, FLProg (portable)

Аватара пользователя
Chaynik
Рядовой
Сообщения: 92
Зарегистрирован: 15.11.2015{, 18:26}
Репутация: 0

Периодическое накопление данных в переменной?

#7

Сообщение Chaynik » 28.12.2015{, 21:16}

rw6cm, я попытался решить головоломку DWD.  Значения прибавлял через счётчик.
В моём примере это заработало криво и до сих пор пока не понял, откуда берутся отрицательные числа.
В вашем примере всё работает правильно! Спасибо буду разбираться.
Сейчас уже пришло решение добавить в счётчик предустановку по входу, и включать его KRtrg2.
На вход предустановки, подаём AC1.
Т.е. головоломка DWD, для меня решена.

Аватара пользователя
Chaynik
Рядовой
Сообщения: 92
Зарегистрирован: 15.11.2015{, 18:26}
Репутация: 0

Периодическое накопление данных в переменной?

#8

Сообщение Chaynik » 28.12.2015{, 21:54}

rw6cm, а зачем на аналоговом соединителе, включили вход разрешения записи? 
Туда же всё равно цифры падают и со счётчика и с переключателя. 

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

DWD
Лейтенант
Сообщения: 349
Зарегистрирован: 18.10.2015{, 13:51}
Репутация: 5
Откуда: Кривой Рог

Периодическое накопление данных в переменной?

#9

Сообщение DWD » 29.12.2015{, 00:24}

rw6cm, спасибо, но у меня точно таже сделано - не работает как нужно...

Chaynik, в LAD не понимаю...
Да и счётчик не подходит.

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

Не получается пока...  Изображение
Последний раз редактировалось DWD 29.12.2015{, 02:22}, всего редактировалось 1 раз.
Изображение

Airis
Сержант
Сообщения: 175
Зарегистрирован: 24.09.2015{, 07:27}
Репутация: 0

Периодическое накопление данных в переменной?

#10

Сообщение Airis » 29.12.2015{, 01:11}

???
Для скачивания вложений Вы должны быть зарегистрированы.

Аватара пользователя
rw6cm
Полковник
Сообщения: 2081
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 251
Имя: Владимир

Периодическое накопление данных в переменной?

#11

Сообщение rw6cm » 29.12.2015{, 08:06}

DWD писал(а):у меня точно таже сделано - не работает как нужно...
Можно часть проекта с данными на входе, и какие должны быть на выходе.
Мне не понятно, что именно не так работает.
Win10-64, FLProg (portable)

DWD
Лейтенант
Сообщения: 349
Зарегистрирован: 18.10.2015{, 13:51}
Репутация: 5
Откуда: Кривой Рог

Периодическое накопление данных в переменной?

#12

Сообщение DWD » 29.12.2015{, 09:23}

Airis, спасибо, попробую.
Тоже начал склоняться к применению дополнительной переменной...
Собственно, если подумать, то и на асме операция сложения происходит раздельно: в аккумуляторе с дальнейшей записью результата либо назад в аккумулятор, либо в другой регистр.
Тоесть, видимо операции должны быть раздельными...

Добавлено (29.12.2015, 09:23)
---------------------------------------------
rw6cm, по схеме Airis вместо переменной "Data" у меня стоят последовательно два блока умножения: один сначала перемножает напряжение и ток с АЦП для получения мощности, а другой перемножает эту мощность на время для получения амперчасов.

Мощность, время и энергия считаются правильно. Ошибка появляется именно в блоке накопления переменной Wh. Туда складывается не два текущих значения (новое и то, что уже записано), а несколько. Их количество зависит от наличия или отсутствия блока выделения переднего фронта  и функции входа разрешения записи в перемнную. Без них в самой переменной тупо идёт постоянное наращивание.
При наличии  функции входа разрешения записи данные накапливаются в меньшем количестве и не равномерно.
А с блоком выделения переднего фронта первое значение (после нуля) записывается правильно, а последующие - просто удваиваются.
Последний раз редактировалось DWD 29.12.2015{, 09:27}, всего редактировалось 1 раз.
Изображение

Аватара пользователя
rw6cm
Полковник
Сообщения: 2081
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 251
Имя: Владимир

Периодическое накопление данных в переменной?

#13

Сообщение rw6cm » 29.12.2015{, 17:20}

DWD писал(а):Ошибка появляется именно в блоке накопления переменной Wh. Туда складывается не два текущих значения (новое и то, что уже записано), а несколько.
По ходу проблема связана с прерыванием. Мы не можем в flprog выделить определенным процессам индивидуальное прерывание, даже в Меге.
Отсюда опрос датчиков, работа АЦП, и т д, будут брать на себя прерывания проца, и в данном случае давать нам лишние, не нужные вычисления.
я бы в данном случае привязал расчет и опрос данных к определенным тактам, и постарался их развязать во времени.
но а там в живую уже анализировал надежность, и точность работы алгоритма.
В общем как то так )
Для скачивания вложений Вы должны быть зарегистрированы.
Win10-64, FLProg (portable)

DWD
Лейтенант
Сообщения: 349
Зарегистрирован: 18.10.2015{, 13:51}
Репутация: 5
Откуда: Кривой Рог

Периодическое накопление данных в переменной?

#14

Сообщение DWD » 29.12.2015{, 23:52}

Airis, не работает Ваш Вариант.

Первое значение записиывается в переменную правильно.
Второе - оказывается в 3 раза больше.
Третье - в 2 раза больше.
начиная с четвёртого - непонятно.

Если предположить, что каждую минуту показания должны увеличиваться на 1, то лучается такая последовательность:
0, 1, 3, 6, 10, 13

Добавлено (29.12.2015, 23:52)
---------------------------------------------
rw6cm, как-то сложно всё...
Сейчас уже голова не варит. Завтра подумаю на над Вашим вариантом.
Спасибо.
Последний раз редактировалось DWD 29.12.2015{, 23:53}, всего редактировалось 1 раз.
Изображение

Аватара пользователя
rw6cm
Полковник
Сообщения: 2081
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 251
Имя: Владимир

Периодическое накопление данных в переменной?

#15

Сообщение rw6cm » 30.12.2015{, 08:01}

DWD писал(а):Если предположить, что каждую минуту показания должны увеличиваться на 1, то лучается такая последовательность:0, 1, 3, 6, 10, 13
с чего бы такая последовательность?
Предположим:
U=220V, J=3A, данные стабильны во времени, получим W=660Watt/h
Будем снимать данные каждые t= 2c, получим последовательность 0, 22, 44, 66, 88....Watt.
через 30 циклов получим наши 660Ватт.
Пример ниже это как раз это и делает.
В примере для наглядности один цикл J=3A, другой J=0A, (динамичная нагрузка :))
следовательно к одному прибавит 22ватта, другой оставит последнее значение.

П/с данные мощности не в час, а за минуту :))) не выспался наверно я)
если за час надо разделить не на 60, а на 3600, в общем разберетесь)
Для скачивания вложений Вы должны быть зарегистрированы.
Последний раз редактировалось rw6cm 30.12.2015{, 08:35}, всего редактировалось 1 раз.
Win10-64, FLProg (portable)

Аватара пользователя
DerAlex
Лейтенант
Сообщения: 391
Зарегистрирован: 06.09.2015{, 08:39}
Репутация: 4
Откуда: Новосибирск

Периодическое накопление данных в переменной?

#16

Сообщение DerAlex » 30.12.2015{, 12:45}

Можно просто считать импульсы от генератора.Период генератора пропорционален измеряемой мощности.Например при мощности 1000 ватт частота генератора 0.277 герц или период равен 3. 6 сек.За час набежит 1000 импульсов.

Добавлено (30.12.2015, 12:45)
---------------------------------------------
Час равен 3600 секунд.
аврора

DWD
Лейтенант
Сообщения: 349
Зарегистрирован: 18.10.2015{, 13:51}
Репутация: 5
Откуда: Кривой Рог

Периодическое накопление данных в переменной?

#17

Сообщение DWD » 31.12.2015{, 12:09}

Мужики, нашёл причину неработоспособности...
Вот она: "...перемножающаего текущую мощность с текущим временем..."

То есть, я, придурок, умножал мгновенное значение мощности на текущее время - сначала на минуту, потом на две, на три... на десять, и т.д. и потом суммировал в переменной с её значением. Естественно, приращение было неравномерным, а почти в геометрической прогрессии.

А нужно было умножать текущее значение мощности на одну минуту.

Исправил и всё заработало!

Всем спасибо за пинки в нужном направлении. Изображение
Последний раз редактировалось DWD 31.12.2015{, 12:12}, всего редактировалось 1 раз.
Изображение

serpal66
Рядовой
Сообщения: 12
Зарегистрирован: 16.03.2016{, 13:13}
Репутация: 0

Периодическое накопление данных в переменной?

#18

Сообщение serpal66 » 26.04.2016{, 20:14}

Добрый день! Прочитал вашу ветку. Но никак не получается реализовать накопление в переменной измеренных значений (версия 1.11.1). Вы по этой теме на форуме разобрались. Не могли бы сказать в чем ошибка. Откуда то в Psum  вылезает огромное число, хотя переменная равна нулю. уже по всякому пробовал.

Добавлено (26.04.2016, 20:14)
---------------------------------------------
serpal66 писал(а):Добрый день! Прочитал вашу ветку. Но никак не получается реализовать накопление в переменной измеренных значений (версия 1.11.1). Вы по этой теме на форуме разобрались. Не могли бы сказать в чем ошибка. Откуда то в Psum вылезает огромное число, хотя переменная равна нулю. уже по всякому пробовал.Прикрепления: 8990438.png(7Kb)
Прошу извинить, вроде нашел в чем причина. Так как выводил данные вычислений в com-порт, а синхронизацию измерений сделал не для всех переменных, получалось рассогласование в интервалах измерения. Так что, думаю отбой - всем спасибо, кто задумался.
Для скачивания вложений Вы должны быть зарегистрированы.

DWD
Лейтенант
Сообщения: 349
Зарегистрирован: 18.10.2015{, 13:51}
Репутация: 5
Откуда: Кривой Рог

Периодическое накопление данных в переменной?

#19

Сообщение DWD » 26.04.2016{, 20:59}

Непонятно назначение одновибратора на входе разрешения записи в переменную.
По логике его работы он выдаст один импульс заданной длины при подаче питания на МК и всё оставшееся воемя будет стоять в нуле, запрещая дальнейшую запись в переменную...

У меня сделано вот так:
Изображение
Мощность, полученная путём перемножения текущих значений напряжения и тока, делится на 3600 (если переменная Des:Zar/Raz равна единице) для получения энергии в размерности ватт в секунду. Полученное значение складывается с текущим значением мощности в переменной и каждую секунду импульсом с блока выделения короткого импульса перезаписывается в той же переменной.

У меня просто период записи выбирается либо каждую секунду, либо раз в минуту.
Так как Вам нужно перезаписывать переменную каждую секунду,то просто уберите аналоговые переключатели.

Ну а переменная "Sys_Reset" посредством элемента "OR" осуществляет сброс (обнуление) переменной. Тоже можете выбросить, если не требуется.
Последний раз редактировалось DWD 26.04.2016{, 21:14}, всего редактировалось 1 раз.
Изображение

serpal66
Рядовой
Сообщения: 12
Зарегистрирован: 16.03.2016{, 13:13}
Репутация: 0

Периодическое накопление данных в переменной?

#20

Сообщение serpal66 » 26.04.2016{, 22:04}

Спасибо за ответ! Одновибратор видно остался по недосмотру. Пол-дня сегодня разбирался в чем причина. Главная причина - в четкой синхронизации вычисления значений (Rtrig) и промежуточная переменная p оказалась лишней. А я упустил этот момент и через com - порт смотрел откуда там огромная цифра(а она успевала набежать за секунду что я снимал первый результат). Ну сейчас уже как то вот так (отшлифую завтра, уже поздно). Еще раз спасибо за ответ. Также спасибо rw6cm, именно в его рисунке вспомнил про единую синхронизацию. Всем успехов! И с праздниками наступающими!
Для скачивания вложений Вы должны быть зарегистрированы.
Последний раз редактировалось serpal66 26.04.2016{, 22:07}, всего редактировалось 1 раз.

Ответить

Вернуться в «Спросить у знатоков»