0

Скрипт для определения времени события

Александр 5 лет назад в Редактор каналов обновлен 4 года назад 0
Здравствуйте. Не могли бы помочь со скриптом на Pascal'e?
Задача стоит следующая: Необходимо чтобы происходила запись текущего времени в "виртуальный канал 1" по изменению значения в логическом "виртуальном канале 2".
добрый день


каакую задачу хотите решить ?
Если по-русски объяснять, то примерно так: при нажатии на элемент мнемосхемы (кнопка) должно отображаться время нажатия.
День добрый.

Если по-русски объяснять, то примерно так: при нажатии на элемент мнемосхемы (кнопка) должно отображаться время нажатия.

На кнопке отобразить время нажатия не получится. Вывести рядом на какой нибудь индикатор можно. Подойдёт?
Конечно подойдет
День добрый.

Тогда можно сделать следующим образом:

1. создаем виртуальный канал, с типом данных - time, имя канала для примера "test"
2. виртуальному каналу добавим скрипт - тип запуска - по событию записи.
3. текст скрипта совсем простой
begin WriteValue('test', TimeToStr(Now)); end. 4. на мнемосхему добавим кнопку и индикатор, оба элемента привяжем к нашему каналу "test"

При нажатии на кнопку на индикаторе будет выводится время нажатия.
Опробовал все в точности как вы посоветовали, но время не отображается.
Опробовал все в точности как вы посоветовали, но время не отображается.

Моя ошибка, недосмотрел))). Подправим немного скрипт:

begin WriteValue('test', Now); end.
Большое спасибо.
Не подскажите как лучше реализовать следующую задачу? Имеется схема паропровода с несколькими задвижками. Необходимо чтобы при нажатии на задвижку менялся ее цвет и цвет трубы за ней, а также выводилось время нажатия на задвижку. Плюс ко всему велась запись времени нажатия в файл в виде "Задвижка 1ПП-1 открыта: время", и "Задвижка 1ПП-1 закрыта: время". Для большей ясности прикрепляю папку slproject. Мнемосхема - "схема".
День добрый.

Не подскажите как лучше реализовать следующую задачу? Имеется схема паропровода с несколькими задвижками. Необходимо чтобы при нажатии на задвижку менялся ее цвет и цвет трубы за ней, а также выводилось время нажатия на задвижку. Плюс ко всему велась запись времени нажатия в файл в виде "Задвижка 1ПП-1 открыта: время", и "Задвижка 1ПП-1 закрыта: время". Для большей ясности прикрепляю папку slproject. Мнемосхема - "схема".

Задвижка будет управлять, или необходима только запись. Из описания не совсем понял.
Управления задвижкой не будет. Эта схема будет для фиксирования времени открытия/закрытия.
Управления задвижкой не будет. Эта схема будет для фиксирования времени открытия/закрытия.

ок. Понятно. Подумаю и накидаю примерчик. На почту simp@miniscada.com отпишитесь, что бы знал куда пример отослать.
Господа, что за секретная информация, которую нужно обязательно отсылать в личку? Ведь данным примером могли воспользоваться многие, не плодя новых тем на форуме?
К примеру: мне не мешало бы для большей информативности определять продолжительность операции (проще говоря, разность между включением и отключением). Примерно так:
If ReadValue('Пуск')=1 then T1:=Now;
If ReadValue('Пуск')=0 then T2:=Now;
WriteValue('Время операции','Продолжительность'+ 'RealToTime(TimeToReal(T2)-TimeToReal(T1))');
Но…увы. Возможно в СимпЛайте сделать нечто подобное?
P.S. Версия Ent. Сейчас будем обновляться до безлимитной.
Добрый день.

К примеру: мне не мешало бы для большей информативности определять продолжительность операции (проще говоря, разность между включением и отключением). Примерно так:
If ReadValue('Пуск')=1 then T1:=Now;
If ReadValue('Пуск')=0 then T2:=Now;
WriteValue('Время операции','Продолжительность'+ 'RealToTime(TimeToReal(T2)-TimeToReal(T1))');
Но…увы. Возможно в СимпЛайте сделать нечто подобное?
P.S. Версия Ent. Сейчас будем обновляться до безлимитной.

Можно реализовать так:

var t1, t2: TDateTime; res: string; begin If ReadValue('Пуск') = 1 then t1 := Now; If ReadValue('Пуск') = 0 then t2 := Now; // результат, строка вида 00:01:30 res := TimeToStr(t2 - t1); end.
Добрый день!

А если:
t1 = 07.12.2015 23:55:00
t2 = 08.12.2015 00:15:00
Добрый день!

А если:
t1 = 07.12.2015 23:55:00
t2 = 08.12.2015 00:15:00

можно вот так:

var t1, t2: TDateTime; res: string; d: word; const FORMATSTR = '%d д. %s'; begin t1 := StrToDateTime('07.12.2015 23:55:00'); t2 := StrToDateTime('08.12.2015 00:15:00'); d := trunc(t2) - trunc(t1); res := format(FORMATSTR, [d, timetostr(t2 - t1)]); end.

Сервис поддержки клиентов работает на платформе UserEcho