Вопрос по ST

Автор Dima Haus1, 15 декабря 2025, 14:44:13

« назад - далее »

Dima Haus1

Здравствуйте. Есть ли возможность в ST макросе вызывать другой ST макрос? Как в CoDeSYS вызываются функции написанные собственноручно.

Nikolai

Здравствуйте.
На данный момент нет, но мы работаем над развитием языка ST.

Khanas

У меня тоже вопрос по поводу переменных типа TIME. Работа с этим типом данных реализована уже?

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

Khanas

Цитата: 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