Здравствуйте. Есть ли возможность в ST макросе вызывать другой ST макрос? Как в CoDeSYS вызываются функции написанные собственноручно.
Здравствуйте.
На данный момент нет, но мы работаем над развитием языка ST.
У меня тоже вопрос по поводу переменных типа TIME. Работа с этим типом данных реализована уже?
Например, у меня таймер в макросе. Я хочу изменять его время на входе макроса. Что мне подавать на вход макроса на переменную VAR_INPUT var: TIME; ?
Цитата: 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