Форум Zentec

Программное обеспечение => Вопросы по zWorkbench => Тема начата: Dima Haus1 от 15 декабря 2025, 14:44:13

Название: Вопрос по ST
Отправлено: Dima Haus1 от 15 декабря 2025, 14:44:13
Здравствуйте. Есть ли возможность в ST макросе вызывать другой ST макрос? Как в CoDeSYS вызываются функции написанные собственноручно.
Название: Re: Вопрос по ST
Отправлено: Nikolai от 15 декабря 2025, 16:16:15
Здравствуйте.
На данный момент нет, но мы работаем над развитием языка ST.
Название: Re: Вопрос по ST
Отправлено: Khanas от 17 декабря 2025, 17:50:43
У меня тоже вопрос по поводу переменных типа TIME. Работа с этим типом данных реализована уже?

Например, у меня таймер в макросе. Я хочу изменять его время на входе макроса. Что мне подавать на вход макроса на переменную VAR_INPUT var: TIME; ?
Название: Re: Вопрос по ST
Отправлено: Khanas от 13 января 2026, 09:50:42
Цитата: Khanas от 17 декабря 2025, 17:50:43У меня тоже вопрос по поводу переменных типа TIME. Работа с этим типом данных реализована уже?

Например, у меня таймер в макросе. Я хочу изменять его время на входе макроса. Что мне подавать на вход макроса на переменную VAR_INPUT var: TIME; ?

Разобрался. Нужно делать преобразование через INT_TO_TIME вроде такого:

PROGRAM timer

VAR_INPUT
    bEnable        : BOOL;          // Запуск таймера
    iSeconds       : INT;           // Время в секундах
    bReset         : BOOL;          // Сброс таймера
END_VAR

VAR_OUTPUT
    bDone          : BOOL;          // Таймер отработал
END_VAR

VAR
    tonDelay       : TON;           // TON
    tPresetTime    : TIME;          // Вычисленное время для PT
END_VAR
   
    tPresetTime := INT_TO_TIME(iSeconds * 1000);  //Перевод INT в TIME

    // Запуск таймера
    tonDelay(IN  := bEnable AND NOT bReset, PT  := tPresetTime);
    bDone        := tonDelay.Q;
   
END_PROGRAM