
0
Скрипт для определения времени события
Здравствуйте. Не могли бы помочь со скриптом на Pascal'e?
Задача стоит следующая: Необходимо чтобы происходила запись текущего времени в "виртуальный канал 1" по изменению значения в логическом "виртуальном канале 2".
Задача стоит следующая: Необходимо чтобы происходила запись текущего времени в "виртуальный канал 1" по изменению значения в логическом "виртуальном канале 2".
Сервис поддержки клиентов работает на платформе UserEcho
каакую задачу хотите решить ?
На кнопке отобразить время нажатия не получится. Вывести рядом на какой нибудь индикатор можно. Подойдёт?
Тогда можно сделать следующим образом:
1. создаем виртуальный канал, с типом данных - time, имя канала для примера "test"
2. виртуальному каналу добавим скрипт - тип запуска - по событию записи.
3. текст скрипта совсем простой
begin WriteValue('test', TimeToStr(Now)); end.
4. на мнемосхему добавим кнопку и индикатор, оба элемента привяжем к нашему каналу "test"При нажатии на кнопку на индикаторе будет выводится время нажатия.
Моя ошибка, недосмотрел))). Подправим немного скрипт:
begin WriteValue('test', Now); end.
Задвижка будет управлять, или необходима только запись. Из описания не совсем понял.
ок. Понятно. Подумаю и накидаю примерчик. На почту simp@miniscada.com отпишитесь, что бы знал куда пример отослать.
К примеру: мне не мешало бы для большей информативности определять продолжительность операции (проще говоря, разность между включением и отключением). Примерно так:
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
можно вот так:
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.