FLProg
Вход на сайт
Логин:
Пароль:
Мы в VK
Поиск
Статистика


Яндекс.Метрика
Суббота, 03.12.2016, 22:38
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 212»
Модератор форума: support, Сергей 
Форум » Основной » Спросить у знатоков » Периодическое накопление данных в переменной? (Способы реализации?)
Периодическое накопление данных в переменной?
DWD
Дата: Понедельник, 28.12.2015, 13:48 | Сообщение # 1
Подполковник
Группа: Проверенные
Сообщений: 279
Награды: 12
Репутация: 5
Статус: Offline
Создана переменная, в которую периодически (раз в минуту) добавляется сумма этой же переменной с новым числом. Как это реализовать?
Будет ли работать показанная ниже конструкция?



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




Сообщение отредактировал DWD - Понедельник, 28.12.2015, 13:54
 
Airis Дата: Понедельник, 28.12.2015, 19:20 | Сообщение # 2
Майор
Группа: Проверенные
Сообщений: 135
Награды: 4
Репутация: 10
Статус: Offline
Попробуйте поставить RTrig между [Minut]и входом En[Wh].
 
rw6cm Дата: Понедельник, 28.12.2015, 19:21 | Сообщение # 3
Генерал-майор
Группа: Проверенные
Сообщений: 476
Награды: 43
Репутация: 31
Статус: Online
Цитата DWD ()
Мужики, подскажите, как реализовать, а то вся работа стоит... :(
)
Прикрепления: sum.flp(67Kb)


PC, E8400, 3.5Gb, Win7-32, ver.FLP(portable)
 
DWD Дата: Понедельник, 28.12.2015, 19:28 | Сообщение # 4
Подполковник
Группа: Проверенные
Сообщений: 279
Награды: 12
Репутация: 5
Статус: Offline
Цитата Airis ()
Попробуйте поставить RTrig между [Minut]и входом En[Wh].
Пробовал. При одинаковых значениях (для проверки) первое значение (после нуля) записывается правильно, а последующие - удваиваются.
То есть, вместо того, что бы наращиваться так: 1, 2, 3, 4, 5...
они наращиваются вот так: 1, 3, 6, 12...


 
Chaynik Дата: Понедельник, 28.12.2015, 19:28 | Сообщение # 5
Лейтенант
Группа: Проверенные
Сообщений: 93
Награды: 0
Репутация: 2
Статус: Offline
DWD,  может быть вас не совсем правильно понял, но сейчас расскажу что получилось у меня.
Конструкция похожая на вашу, только на LAD.
Значит нарисовал такую схему:



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

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

Прикладываю проект. Возможно я что-то не понимаю, и кто-нибудь сможет объяснить, это ошибка,
или же какой-то глюк.
Прикрепления: 2738494.jpg(168Kb) · test2.flp(80Kb)
 
rw6cm Дата: Понедельник, 28.12.2015, 20:38 | Сообщение # 6
Генерал-майор
Группа: Проверенные
Сообщений: 476
Награды: 43
Репутация: 31
Статус: Online
Цитата Chaynik ()
Схема по идее, должна работать следующим образом.Симметричный генератор, раз в секунду посылает команду на счётчик который считает на увеличение.
Так же, этот генератор раз в секунду переключает аналоговый переключатель.
Т.е. в генераторе уставка на 500мс, и первый период сложение производится с 0 входа, а второй с 1 входа
Числа складываются и всё это выводится в ком-порт.
на UNO перевёл.
Прикрепления: test3.flp(115Kb)


PC, E8400, 3.5Gb, Win7-32, ver.FLP(portable)
 
Chaynik Дата: Понедельник, 28.12.2015, 21:16 | Сообщение # 7
Лейтенант
Группа: Проверенные
Сообщений: 93
Награды: 0
Репутация: 2
Статус: Offline
rw6cm, я попытался решить головоломку DWD.  Значения прибавлял через счётчик.
В моём примере это заработало криво и до сих пор пока не понял, откуда берутся отрицательные числа.
В вашем примере всё работает правильно! Спасибо буду разбираться.
Сейчас уже пришло решение добавить в счётчик предустановку по входу, и включать его KRtrg2.
На вход предустановки, подаём AC1.
Т.е. головоломка DWD, для меня решена.
 
Chaynik Дата: Понедельник, 28.12.2015, 21:54 | Сообщение # 8
Лейтенант
Группа: Проверенные
Сообщений: 93
Награды: 0
Репутация: 2
Статус: Offline
rw6cm, а зачем на аналоговом соединителе, включили вход разрешения записи? 
Туда же всё равно цифры падают и со счётчика и с переключателя. 

DWD, посмотрите. Таким образом вам было необходимо решить?
К переменной добавляется сумма этой же переменной.
Прикрепления: test4.flp(116Kb)
 
DWD Дата: Вторник, 29.12.2015, 00:24 | Сообщение # 9
Подполковник
Группа: Проверенные
Сообщений: 279
Награды: 12
Репутация: 5
Статус: Offline
rw6cm, спасибо, но у меня точно таже сделано - не работает как нужно...

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

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

Не получается пока...  wacko




Сообщение отредактировал DWD - Вторник, 29.12.2015, 02:22
 
Airis Дата: Вторник, 29.12.2015, 01:11 | Сообщение # 10
Майор
Группа: Проверенные
Сообщений: 135
Награды: 4
Репутация: 10
Статус: Offline
???
Прикрепления: 4798461.png(5Kb)
 
rw6cm Дата: Вторник, 29.12.2015, 08:06 | Сообщение # 11
Генерал-майор
Группа: Проверенные
Сообщений: 476
Награды: 43
Репутация: 31
Статус: Online
Цитата DWD ()
у меня точно таже сделано - не работает как нужно...
Можно часть проекта с данными на входе, и какие должны быть на выходе.
Мне не понятно, что именно не так работает.


PC, E8400, 3.5Gb, Win7-32, ver.FLP(portable)
 
DWD Дата: Вторник, 29.12.2015, 09:23 | Сообщение # 12
Подполковник
Группа: Проверенные
Сообщений: 279
Награды: 12
Репутация: 5
Статус: Offline
Airis, спасибо, попробую.
Тоже начал склоняться к применению дополнительной переменной...
Собственно, если подумать, то и на асме операция сложения происходит раздельно: в аккумуляторе с дальнейшей записью результата либо назад в аккумулятор, либо в другой регистр.
Тоесть, видимо операции должны быть раздельными...

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

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




Сообщение отредактировал DWD - Вторник, 29.12.2015, 09:27
 
rw6cm Дата: Вторник, 29.12.2015, 17:20 | Сообщение # 13
Генерал-майор
Группа: Проверенные
Сообщений: 476
Награды: 43
Репутация: 31
Статус: Online
Цитата DWD ()
Ошибка появляется именно в блоке накопления переменной Wh. Туда складывается не два текущих значения (новое и то, что уже записано), а несколько.
По ходу проблема связана с прерыванием. Мы не можем в flprog выделить определенным процессам индивидуальное прерывание, даже в Меге.
Отсюда опрос датчиков, работа АЦП, и т д, будут брать на себя прерывания проца, и в данном случае давать нам лишние, не нужные вычисления.
я бы в данном случае привязал расчет и опрос данных к определенным тактам, и постарался их развязать во времени.
но а там в живую уже анализировал надежность, и точность работы алгоритма.
В общем как то так )
Прикрепления: sum1.flp(131Kb)


PC, E8400, 3.5Gb, Win7-32, ver.FLP(portable)
 
DWD Дата: Вторник, 29.12.2015, 23:52 | Сообщение # 14
Подполковник
Группа: Проверенные
Сообщений: 279
Награды: 12
Репутация: 5
Статус: Offline
Airis, не работает Ваш Вариант.

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

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

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




Сообщение отредактировал DWD - Вторник, 29.12.2015, 23:53
 
rw6cm Дата: Среда, 30.12.2015, 08:01 | Сообщение # 15
Генерал-майор
Группа: Проверенные
Сообщений: 476
Награды: 43
Репутация: 31
Статус: Online
Цитата 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, в общем разберетесь)
Прикрепления: sum2.flp(130Kb)


PC, E8400, 3.5Gb, Win7-32, ver.FLP(portable)

Сообщение отредактировал rw6cm - Среда, 30.12.2015, 08:35
 
Форум » Основной » Спросить у знатоков » Периодическое накопление данных в переменной? (Способы реализации?)
Страница 1 из 212»
Поиск:

FLProg © 2016
Яндекс.Метрика