подсчет моточасов
подсчет моточасов
мне необходимо реализовать подсчет моточасов оборудования и передавать эти значения в скаду. с чего начать и какой, так сказать, алгоритм подобной реализации?
Re: подсчет моточасов
Моточасы считает контроллер? Для хранения моточасов лучше использовать энергонезависимую память. Предусмотреть вход для сброса моточасов от какой-нибудь труднодоступной кнопки. Второй сигнал - "оборудование включено" подается на счетный вход таймера TONR. Выход, как я уже говорил, располагать в энергонезависимой памяти.
Не знаю, есть ли спецфункция для моточасов. S7-300?
Не знаю, есть ли спецфункция для моточасов. S7-300?
Re: подсчет моточасов
а что это за таймер TONR и как он работает?
Re: подсчет моточасов
Работает почти также как TON, только не сбрасывается при исчезновении счетного сигнала, а сбрасывается отдельным входом RESET.
Re: подсчет моточасов
По разному делают. Чаще с использованием значения RTC и ячеек энергонезависимой памяти, упомянутый ретентивный таймер/счётчик тому пример.
Кстати, показания он должен сохранять не только "при исчезновении счётного сигнала", а, главное, при отключении питания и рестарте контроллера.
Если есть надёжная резервированная SCADA-система (только где ж её взять?), то можно наработку считать уже там.
Кстати, показания он должен сохранять не только "при исчезновении счётного сигнала", а, главное, при отключении питания и рестарте контроллера.
Если есть надёжная резервированная SCADA-система (только где ж её взять?), то можно наработку считать уже там.
Re: подсчет моточасов
Использую, как упоминали коллеги, RTC.
Пример, для S7-300. При конфе процессора указываю 0 байт под тактовые меркеры. Использую бит на 0,5 сек.через передний фронт. Далее простыми арифметическими действиями, без всяких таймеров. Получается компактная функция, где данные по секундам, минутам и часам хранятся в сохраняемой DB, а для данных использую тип входов "IN_OUT" функции.
Вызов функции:
Пример, для S7-300. При конфе процессора указываю 0 байт под тактовые меркеры. Использую бит на 0,5 сек.через передний фронт. Далее простыми арифметическими действиями, без всяких таймеров. Получается компактная функция, где данные по секундам, минутам и часам хранятся в сохраняемой DB, а для данных использую тип входов "IN_OUT" функции.
Код: Выделить всё
FUNCTION "Run_Timers" : VOID
TITLE =
{ S7_language := '25(1) Русский 08.06.2008 04:36:01' }
AUTHOR : CHANt
FAMILY : OTS
NAME : RT
VERSION : 0.1
VAR_INPUT
Impuls : BOOL ;
Work : BOOL ;
END_VAR
VAR_IN_OUT
Hour : DINT ;
Minute : INT ;
Second : INT ;
END_VAR
VAR_TEMP
Sec1 : BOOL ;
Min1 : BOOL ;
END_VAR
BEGIN
NETWORK
TITLE =
CLR ;
= #Sec1;
= #Min1;
NETWORK
TITLE =
A #Work;
A #Impuls;
JCN End;
L #Second;
L 1;
+I ;
T #Second;
JU PRO1;
PRO1: L #Second;
L 60;
==I ;
JCN End;
= #Sec1;
L 0;
T #Second;
JU End;
End: NOP 0;
NETWORK
TITLE =
A #Sec1;
JCN End2;
L #Minute;
L 1;
+I ;
T #Minute;
JU PRO2;
PRO2: L #Minute;
L 60;
==I ;
JCN End2;
= #Min1;
L 0;
T #Minute;
JU End2;
End2: NOP 0;
NETWORK
TITLE =
A #Min1;
JCN End3;
L #Hour;
L 1;
+D ;
T #Hour;
JU End3;
End3: NOP 0;
END_FUNCTION
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Re: подсчет моточасов
Подсказали, как сделать на языке ST
tm1(PT := T#60s, IN := NOT tm1.Q);
T1_WORK := T1_WORK + BOOL_TO_DWORD(tm1.Q AND T1_Q);
tm1: TON - общий циклический таймер для всех устройств.
T1_Q: BOOL - выход плк, запускающий устройство.
T1_WORK: DWORD - наработка в минутах - retain
В скаде делитcя на 60 получается наработка в часах
Как это будет выглядить в LAD Step7?
tm1(PT := T#60s, IN := NOT tm1.Q);
T1_WORK := T1_WORK + BOOL_TO_DWORD(tm1.Q AND T1_Q);
tm1: TON - общий циклический таймер для всех устройств.
T1_Q: BOOL - выход плк, запускающий устройство.
T1_WORK: DWORD - наработка в минутах - retain
В скаде делитcя на 60 получается наработка в часах
Как это будет выглядить в LAD Step7?
Re: подсчет моточасов
это не ST
Re: подсчет моточасов
в Кодесисе это ST. Работает даже!
Re: подсчет моточасов
Это могло бы выглядеть так:
Однако конкретная реализация зависит от среды разработки. Как выглядит функция ADD в языке LAD у VIPA?У вас нет необходимых прав для просмотра вложений в этом сообщении.