• Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  • Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже предостаточно - придумайте что-то пооригинальнее.
  • Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  • За поиск и предложение пиратского ПО - бан без предупреждения.
  • Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  • Перед тем как что-то написать - читать здесь и здесь.

Фильтр аварий по дате и времени.

Ответить

Автор темы
buch20
здесь недавно
здесь недавно
Сообщения: 2
Зарегистрирован: 28 дек 2020, 13:03
Имя: Игорь

Фильтр аварий по дате и времени.

Сообщение buch20 »

Добрый день.

VBS и С не знаю, все знания это чтение форумов.
Если поделитесь информацией, буду благодарен.


Хочу написать скрипт (язык не важен, мне больше нравится VBS) для фильтра аварий по дате и времени. Дату и время задавать через I/O Field/

Пробовал такой скрипт (найден на немецком форуме)

Код: Выделить всё

char sql_string[255];
sprintf (sql_string, "DATETIME >= '%s' " GetTagChar ("Time_Start"));
SetPropChar ("Avariya", "Alarm1", "MsgFilterSQL", sql_string);
Скрипт не работает. При замене Time_Start на конкретное время ( к примеру 2021-07-20 00:00:00.000) тоже не работает, но работает когда так :

Код: Выделить всё

SetPropChar ("Avariya", "Alarm1", "MsgFilterSQL", "DATETIME >= '2021-07-20  00:00:00.000' ");
Что я делаю не так ?

И второй вопрос : как получить значение "Time_Start" ?
Значение хочу получать примерно так же как и на скрине.
Снимок.JPG
У вас нет необходимых прав для просмотра вложений в этом сообщении.


LexSL
осмотрелся
осмотрелся
Сообщения: 140
Зарегистрирован: 16 дек 2011, 14:13
Имя: Михайлов Алексей
Страна: Россия
Благодарил (а): 14 раз
Поблагодарили: 25 раз

Фильтр аварий по дате и времени.

Сообщение LexSL »

1. Для отладки скриптов пользуйтесь окном Global Diagnostics.
2. в строке -
buch20 писал(а):
20 июл 2021, 17:48
sprintf (sql_string, "DATETIME >= '%s' " GetTagChar ("Time_Start"));
пропущена запятая.
Должно быть так:

Код: Выделить всё

sprintf (sql_string, "DATETIME >= '%s' ", GetTagChar ("Time_Start"));
3. Если TimeStart - отдельный тег (string), то вот именно функцией GetTagChar его значение и получается.
Но исходя из Вашей картинки, можно предположить, что поля ввода (IO Field) даты и времени привязаны к отдельным тегам.
Тогда:

Код: Выделить всё

sprintf (str, "DATETIME >= '%d-%02d-%02d %02d:%02d:00' ", GetTagWord("year"), GetTagWord("month"), GetTagWord("day"), GetTagWord("hour"), GetTagWord("minute"));


Автор темы
buch20
здесь недавно
здесь недавно
Сообщения: 2
Зарегистрирован: 28 дек 2020, 13:03
Имя: Игорь

Фильтр аварий по дате и времени.

Сообщение buch20 »

Спасибо.
1. Для отладки скриптов пользуйтесь окном Global Diagnostics.
За это отдельное спасибо .

Почти разобрался как это работает, но теперь параметр из строки sprintf "DATETIME" не передает значение в строку SetPropChar.
У меня есть сомнения в том , что тут не нужны кавычки

SetPropChar ("Avariya", "Alarm1", "MsgFilterSQL", sql_string);

Подскажите литературу по VBS и С.

Ответить

Вернуться в «WinCC»