Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема с замораживанием изменяющегося значеня (https://javascript.ru/forum/misc/24453-problema-s-zamorazhivaniem-izmenyayushhegosya-znachenya.html)

Kaviton 30.12.2011 11:47

Проблема с замораживанием изменяющегося значеня
 
Имеется газовый счетчик, который передает показания газа. Эти показания меняются. Необходимо найти моментальный расход газа по формуле Qb(t)=(Vb(t1+t2-t1)−Vb(t1))/(t2-t1).
Qb - моментальный расход газа м3/ч
Vb - показание счетчика в определенный момент времени
Проблема в том как зафиксировать начальное показание, т.е. Vb

Livaanderiamarum 30.12.2011 12:21

var startVb = Vb //зафиксировали в переменной startVb

Kaviton 30.12.2011 12:59

Может я не правильно сформулировал вопрос, попробую подробнее. var Vb = getTag( 'Vb') Переменная Vb допустим на данный момент имеет значение 100, через какое то время изменилось на 200, т.е. мне нужно (200-100)/(t1-t2)

Livaanderiamarum 30.12.2011 13:03

Цитата:

Сообщение от Kaviton (Сообщение 147342)
Может я не правильно сформулировал вопрос, попробую подробнее. var Vb = getTag( 'Vb') Переменная Vb допустим на данный момент имеет значение 100, через какое то время изменилось на 200, т.е. мне нужно (200-100)/(t1-t2)

//фиксируешь в эти переменные время и значение
vb1 = VB
t1 = (new Date).getTime()



//как прошло время нужное тебе и значение и время изменились вычитаешь

vb2 = VB
t2 = (new Date).getTime()

(vb1-vb2)/(t1-t2)

Kaviton 30.12.2011 13:13

В результате получаю ноль, я полагаю что vb1=vb2

Livaanderiamarum 30.12.2011 13:15

Цитата:

Сообщение от Kaviton (Сообщение 147347)
В результате получаю ноль, я полагаю что vb1=vb2

и в чем проблема?

Kaviton 30.12.2011 13:18

100-100=0
и 0/(t1-t2 ) получаю 0
Необходимо первое число заморозить 200-100

Livaanderiamarum 30.12.2011 13:26

Цитата:

Сообщение от Kaviton (Сообщение 147350)
100-100=0
и 0/(t1-t2 ) получаю 0
Необходимо первое число заморозить 200-100

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

Kaviton 30.12.2011 13:36

Проблема в том, что я должен разницу чисел поделенную на время в течении которого произошли изменения,т.е. если предположить что изменения между 100 и 200 произошли через 5 сек, получаем
(200-100)/5=20

Livaanderiamarum 30.12.2011 13:38

Цитата:

Сообщение от Kaviton (Сообщение 147355)
Проблема в том, что я должен разницу чисел поделенную на время в течении которого произошли изменения,т.е. если предположить что изменения между 100 и 200 произошли через 5 сек, получаем
(200-100)/5=20

нуу)!! а у тебя изменения не произошли!! раз vb1 и vb2 равны)) что сложного я говорю)?

через какое время ты начинаешь vb2 вычислять и проверять разницу)?

Kaviton 30.12.2011 13:47

VB меняет значения постоянно, этот сигнал приходит от счетчика, если идет большой расход показания меняются часто, если расход маленький показания меняются реже, т.е. скажем сейчас он показывает 100 а через 10 или 30 сек может показать 200 зависит от расхода в данное время, и смысл заключается найти моментальной расход газа

Kaviton 30.12.2011 13:52

Показания меняются постоянно. При малом расходе сигнал в среднем поступает каждые 5-7 сек.

Kaviton 30.12.2011 13:59

Когда я vb1 = VB меняю на vb1 = 100 начинает считать

Livaanderiamarum 30.12.2011 14:05

какая сила заставляет в твой сайт поступать значения щетчика?

Kaviton 30.12.2011 14:14

На самом деле это один из объектов газовой котельной, которой можно управлять через интернет. На котельной имеется контролер который передает всю инфу на сервер. На сервере установлена прога SCADA и еще ряд программ, которые в общей сложности дают графическую и визуальную картинку о работе оборудования.

Livaanderiamarum 30.12.2011 14:19

Цитата:

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

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

Kaviton 30.12.2011 14:31

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

Aetae 30.12.2011 19:56

Т.е. страница таки обновляется. Значит алгоритм такой(если знаний мало и заморачиваться не охота):
1. Получаем предыдущее значение и Date из cookie.
2. Пишем текущее значение и Date в cookie.
3. Производим вычисления со старым и текущим значениями и временем.

Livaanderiamarum 30.12.2011 19:59

Цитата:

Сообщение от Aetae (Сообщение 147440)
Т.е. страница таки обновляется. Значит алгоритм такой(если знаний мало):
1. Получаем предыдущее значение и Date из cookie.
2. Пишем текущее значение и Date в cookie.
3. Производим вычисления со старым и текущим значениями и временем.

иными словами между двумя обновлениями странички данные можно зафиксировать в куках.

Kaviton 30.12.2011 20:29

Цитата:

Сообщение от Livaanderiamarum (Сообщение 147441)
иными словами между двумя обновлениями странички данные можно зафиксировать в куках.

Я извиняюсь а подробнее можно?

Livaanderiamarum 30.12.2011 20:56

Цитата:

Сообщение от Kaviton (Сообщение 147452)
Я извиняюсь а подробнее можно?

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

Aetae 30.12.2011 21:01

Цитата:

Сообщение от Kaviton (Сообщение 147451)
Значение меняется постоянно необходимо аргумент который изменился сохранить и зафиксировать время когда он изменился, чтобы найти разницу аргумента и времени и найти их частное.

Именно это я и описал алгоритмом.

Если вам нужен конкретный работающий код:
Вы просите готовый скрипт с нуля.

Это работа, и за нее обычно платят деньги.
Для таких сообщений предназначен раздел форума "Работа".

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

Kaviton 30.12.2011 21:01

Цитата:

Сообщение от Livaanderiamarum (Сообщение 147454)
да, конечно, страничка обновилась, вы засунули значение нужных вам показателей в куки/ потом страничка снова обновилась, и вы достали значения из куки сравнили их с текущими, посчитали что вам нужно и засунули в куки новые значения.

Вы не могли подсказать какие теги при этом надо использовать

Livaanderiamarum 30.12.2011 21:04

Цитата:

Сообщение от Kaviton (Сообщение 147456)
Вы не могли подсказать какие теги при этом надо использовать

Не, я не помню уже, погуглите "как установить куки" и "как считать куки" ))

Kaviton 30.12.2011 21:11

Цитата:

Сообщение от Aetae (Сообщение 147440)
Т.е. страница таки обновляется. Значит алгоритм такой(если знаний мало и заморачиваться не охота):
1. Получаем предыдущее значение и Date из cookie.
2. Пишем текущее значение и Date в cookie.
3. Производим вычисления со старым и текущим значениями и временем.

А можно конкретнее как это сделать какие теги использовать

Livaanderiamarum 30.12.2011 21:15

Цитата:

Сообщение от Kaviton (Сообщение 147458)
какие теги использовать


Kaviton 30.12.2011 21:19

Цитата:

Сообщение от Livaanderiamarum (Сообщение 147459)

Кроме Date в cookie других вариантов нет

Livaanderiamarum 30.12.2011 21:35

Цитата:

Сообщение от Kaviton (Сообщение 147460)
Кроме Date в cookie других вариантов нет

есть еще local storge )
либо можно переписать страничку так чтобы она не обновлялась а просто давала запросы серверу каждую секунду и получала данные)) либо чтобы сервер сам эти данные считал)

открою одну штуку что сервер сам НЕ МОЖЕТ данные страничке передавать без запроса со стороны странички) то есть в страничке есть скрипт который отсылает запросы) в котельную

Kaviton 30.12.2011 22:04

Цитата:

Сообщение от Livaanderiamarum (Сообщение 147467)
есть еще local storge )
либо можно переписать страничку так чтобы она не обновлялась а просто давала запросы серверу каждую секунду и получала данные)) либо чтобы сервер сам эти данные считал)

открою одну штуку что сервер сам НЕ МОЖЕТ данные страничке передавать без запроса со стороны странички) то есть в страничке есть скрипт который отсылает запросы) в котельную

Может что то я не так объясняю...на самом деле между контролером в котельной сервером и удаленном компьютером (при условии что удаленный компьютер имеет доступ к серверу со статическим айпи) происходит постоянный обмен данными. Другими словами на сервер с котельной поступает информация о всех объектах в режиме реального времени, ну это как вебкамера. Все параметры или значения, что в котельной что на сервере одинаковы.........Задача простая зафиксировать показания счетчика в данный момент времени и зафиксировать показания после поступления импульса изменения показаний и время в которое поступил импульс, присвоить им аргументы и произвести вычисления.

Kaviton 30.12.2011 22:09

var Vb = getTag( 'Vb') || 0;
var vb2 = Vb;
var t1 = (new Date).getTime();
var vb1 = Vb;
var t2 = (new Date).getTime();
var y = (vb2-vb1)/(t2-t1);
setTag( 'Vb1', y);

Livaanderiamarum 30.12.2011 22:24

Цитата:

Сообщение от Kaviton (Сообщение 147471)
Может что то я не так объясняю...на самом деле между контролером в котельной сервером и удаленном компьютером (при условии что удаленный компьютер имеет доступ к серверу со статическим айпи) происходит постоянный обмен данными. Другими словами на сервер с котельной поступает информация о всех объектах в режиме реального времени, ну это как вебкамера. Все параметры или значения, что в котельной что на сервере одинаковы.........Задача простая зафиксировать показания счетчика в данный момент времени и зафиксировать показания после поступления импульса изменения показаний и время в которое поступил импульс, присвоить им аргументы и произвести вычисления.

каким образом страничка обменивается данными с сервером?

Kaviton 30.12.2011 22:31

страничка находится на самом сервере

Kaviton 30.12.2011 22:35

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

Kaviton 30.12.2011 22:36

или расход топлива на 100 км

Livaanderiamarum 30.12.2011 23:14

Цитата:

Сообщение от Kaviton (Сообщение 147481)
страничка находится на самом сервере

да я понял что тебе надо, суть в том что я не просто так спрашиваю.
нужно чтобы срабатывало событие.. бля короче давай код страницы сохрани засуй в архив и скинь мне на мыло посмотрю что там Livanderiamarum@gmail.com

Kaviton 31.12.2011 11:47

Цитата:

Сообщение от Livaanderiamarum (Сообщение 147487)
да я понял что тебе надо, суть в том что я не просто так спрашиваю.
нужно чтобы срабатывало событие.. бля короче давай код страницы сохрани засуй в архив и скинь мне на мыло посмотрю что там Livanderiamarum@gmail.com

На самом деле скрипт нужно вставлять не в код страницы а в прогу IntegraXor Server

Kaviton 31.12.2011 12:09

Попробую объяснить по другому

var v = getTag( 'queu') || 0;
v>99? v=0: v++;
for (i=0; i<10; i++) {
setTag( 'queu_msec0' + i, v);
}
setTag( 'queu', v);
Это генератор чисел, он выдает числа 1,2,3,4,5........100. Если его использовать как имитатор счетчика, скажем в определенное время имеем число 10, через какое то время стало 11, надо (10+11)/(t2-t1), далее число поменялось на 12, надо (11+12)/ (t3-t2), и так далее. Если это будет работать все остальное мелочи.

Livaanderiamarum 31.12.2011 13:49

Цитата:

Сообщение от Kaviton (Сообщение 147519)
Попробую объяснить по другому

var v = getTag( 'queu') || 0;
v>99? v=0: v++;
for (i=0; i<10; i++) {
setTag( 'queu_msec0' + i, v);
}
setTag( 'queu', v);
Это генератор чисел, он выдает числа 1,2,3,4,5........100. Если его использовать как имитатор счетчика, скажем в определенное время имеем число 10, через какое то время стало 11, надо (10+11)/(t2-t1), далее число поменялось на 12, надо (11+12)/ (t3-t2), и так далее. Если это будет работать все остальное мелочи.

В общем я скажу тебе алгоритм, а если написать его за тебя то это платно.
Фиксируешь значение , потом после его изменения достаешь и проивзводишь сравнения. Я думаю реализовать сам сможешь)

переменными пользоваться умеешь)?
событиями пользоваться умеешь)?
куками пользоваться умеешь)?

просто ты уже что-то непонятное говоришь) я скажу один секрет, только ни кому, программный код выполняется моментально)) он не может самовызываться в определенное время без какой либо силы)) ты думаешь обратное)

Kaviton 08.01.2012 17:26

Цитата:

Сообщение от Livaanderiamarum (Сообщение 147534)
В общем я скажу тебе алгоритм, а если написать его за тебя то это платно.
Фиксируешь значение , потом после его изменения достаешь и проивзводишь сравнения. Я думаю реализовать сам сможешь)

переменными пользоваться умеешь)?
событиями пользоваться умеешь)?
куками пользоваться умеешь)?

Так вот и вся проблема как зафиксировать начальное значение???

Livaanderiamarum 08.01.2012 17:39

Цитата:

Сообщение от Kaviton (Сообщение 148890)
Так вот и вся проблема как зафиксировать начальное значение???

куками блять))!



Часовой пояс GMT +3, время: 23:11.