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

Avatar
  • обновлен
Здравствуйте. Не могли бы помочь со скриптом на Pascal'e?
Задача стоит следующая: Необходимо чтобы происходила запись текущего времени в "виртуальный канал 1" по изменению значения в логическом "виртуальном канале 2".
Avatar
SIMP Tech (Сергей)
День добрый.

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

Задвижка будет управлять, или необходима только запись. Из описания не совсем понял.
Avatar
Александр
Управления задвижкой не будет. Эта схема будет для фиксирования времени открытия/закрытия.
Avatar
SIMP Tech (Сергей)
Управления задвижкой не будет. Эта схема будет для фиксирования времени открытия/закрытия.

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

К примеру: мне не мешало бы для большей информативности определять продолжительность операции (проще говоря, разность между включением и отключением). Примерно так:
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.
Avatar
Добрый день!

А если:
t1 = 07.12.2015 23:55:00
t2 = 08.12.2015 00:15:00
Avatar
SIMP Tech (Сергей)
Добрый день!

А если:
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.