Страница: 1 | 2 |
|
Вопрос: Как решить проблему
|
Добавлено: 08.01.12 12:50
|
|
Номер ответа: 17 Автор ответа: Kaviton
Вопросов: 1 Ответов: 14
|
Профиль | | #17
|
Добавлено: 11.01.12 22:15
|
Winand пишет:
в любом случае нельзя использовать переменную Vb1 до её объявления var Vb1. И присваивать значение Vb в двух подряд строках бессмысленно.
Вы можете предложить что то взамен....может надо использовать куки или массивы для сохранение начального значения или все таки достаточно переменных...
Ответить
|
Номер ответа: 19 Автор ответа: Kaviton
Вопросов: 1 Ответов: 14
|
Профиль | | #19
|
Добавлено: 12.01.12 23:43
|
Попробую объяснить. На самом деле это газовая котельная, в котельной установлен контролер который управляет режимом работы котельной. В контролер сведены все необходимые рабочие параметры (температуры, давления, какое оборудование в работе.........) которые необходимы для управления, в том числе и показания газового счетчика, который передает свои показания. Эти показания (в контролере) меняются в момент изменения показаний самого счетчика. На самом деле на самом счетчике имеется свой корректор, который показывает все параметры газа (давление, температуру, количество газа, моментальный расход....), все эти показания я вижу на корректоре счетчика, и все они передаются в режиме реального времени через модем в газовую компанию. НО нам разрешили и выдали только один сигнал с газового счетчика это его показания, т.е. показания Vb количество газа на данный момент, ну это типа как показания водо счетчика, эти показания накопительные. На самом счетчике который считает и передает показания установлен обычный геркон, и замыкания контактов зависит от расхода газа, если большой расход контакты замыкаются чаще, и показания меняются быстрее, если медленнее, значит все наоборот.
Далее все эти показания контролер передает на сервер, показания передаются с некоторой задержкой каждые 5 миллисекунд, это время обмена данными между контролером и сервером. На сервере установлены несколько программ которые преобразуют все сигналы в графическую картинку и позволяющую управлять котельной в режиме реального времени с любого компьютера в режиме реального времени. Одна из этих программ это SKADA, в ней собственно все программирование и происходит, я не имею ввиду режим управления котельной, это делает контролер в котельной, я имею ввиду управления котельной или задание или изменение каких либо процессов, ручное управление и так далее.
Так вот мы имеем изменение показаний газового счетчика в режиме реального времени это одна переменная....и которую нужно пересчитать в другую......сейчас на счетчике 100 через некоторое время 200, надо (200-100/(t2-t1), еще через какое то время показания изменились на 300, надо (300-200)/(t3-t2)
Ответить
|
Номер ответа: 20 Автор ответа: Ким Чен Ир
Вопросов: 0 Ответов: 140
|
Профиль | | #20
|
Добавлено: 13.01.12 01:56
|
В scada есть, как оказалось, встроенный редактор, со своим веселым синтаксисом:
- Global Real v1 = 0;
- Function Real MyFunc(Real v2)
- Real ret = (v2 - v1);
- v1 = v2;
- Return (ret);
- End
Ответить
|
Номер ответа: 22 Автор ответа: Kaviton
Вопросов: 1 Ответов: 14
|
Профиль | | #22
|
Добавлено: 13.01.12 16:39
|
Winand пишет:
t2,3 - это время, когда присланы значения? а если линия плохая и они будут приходить с разной скоростью?
Связь между контролером и сервером устойчивая, обмен данными происходят каждые 5 миллисекунд и и естественно обновления происходят каждые 5 миллисекунд, т.е. за одну секунду обновления происходят 200 раз, а вот значения изменения показаний счетчика меняются во времени и зависит это от расхода газа. Расход газа величина не постоянная, зависит от уличной температуры, если на улице холодно значит расход больше, и показания меняются часто, если тепло на улице то показания меняются медленнее. В данное время когда на улице около нуля показания изменяются в районе 2 минут...
Ответить
|
Номер ответа: 23 Автор ответа: Kaviton
Вопросов: 1 Ответов: 14
|
Профиль | | #23
|
Добавлено: 13.01.12 16:46
|
Ким Чен Ир пишет:
Global Real v1 = 0;
Function Real MyFunc(Real v2)
Real ret = (v2 - v1);
v1 = v2;
Return (ret);
End
Протестировал данный скрипт, у меня почему то не работает......может что то не правильно делаю.......
Ответить
|
Номер ответа: 25 Автор ответа: Kaviton
Вопросов: 1 Ответов: 14
|
Профиль | | #25
|
Добавлено: 13.01.12 18:56
|
Winand пишет:
это не скрипт, а функция, вычисляющая дельту между показаниями. Естественно её нужно вызывать откуда-то. Но мы не знаем как конкретно вы используете данный код.
Допустим var Vb = getTag( 'queu'), Vb это присвоение переменной, показания счетчика, а queu это адрес по которому обращаемся к счетчику
Ответить
|
Номер ответа: 27 Автор ответа: Kaviton
Вопросов: 1 Ответов: 14
|
Профиль | | #27
|
Добавлено: 13.01.12 21:50
|
Winand пишет:
Соответственно нужно Vb = MyFunc(getTag('queu'))
В первый раз выдаст сам переданный параметр, а в последующие разы разницу значений
Попробовал протестировать, функция не работает, скрипт выдает ошибку
Ответить
|
Страница: 1 | 2 |
Поиск по форуму