подсчет моточасов

Автоматизация технологических процессов, системы управления, АСУ ТП, АСКУЭ, программирование ПЛК, человеко-машинный интерфейс, сетевое оборудование, протоколы
Ответить
service
Специалист
Сообщения: 254
Зарегистрирован: 16 ноя 2012, 10:23

подсчет моточасов

Сообщение service »

мне необходимо реализовать подсчет моточасов оборудования и передавать эти значения в скаду. с чего начать и какой, так сказать, алгоритм подобной реализации?

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: подсчет моточасов

Сообщение Михайло »

Моточасы считает контроллер? Для хранения моточасов лучше использовать энергонезависимую память. Предусмотреть вход для сброса моточасов от какой-нибудь труднодоступной кнопки. Второй сигнал - "оборудование включено" подается на счетный вход таймера TONR. Выход, как я уже говорил, располагать в энергонезависимой памяти.
Не знаю, есть ли спецфункция для моточасов. S7-300?

service
Специалист
Сообщения: 254
Зарегистрирован: 16 ноя 2012, 10:23

Re: подсчет моточасов

Сообщение service »

а что это за таймер TONR и как он работает?

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: подсчет моточасов

Сообщение Михайло »

Работает почти также как TON, только не сбрасывается при исчезновении счетного сигнала, а сбрасывается отдельным входом RESET.

ward
Специалист
Сообщения: 415
Зарегистрирован: 12 ноя 2012, 08:44

Re: подсчет моточасов

Сообщение ward »


Ryzhij
Любитель
Сообщения: 80
Зарегистрирован: 10 янв 2013, 11:35

Re: подсчет моточасов

Сообщение Ryzhij »

По разному делают. Чаще с использованием значения RTC и ячеек энергонезависимой памяти, упомянутый ретентивный таймер/счётчик тому пример.
Кстати, показания он должен сохранять не только "при исчезновении счётного сигнала", а, главное, при отключении питания и рестарте контроллера.
Если есть надёжная резервированная SCADA-система (только где ж её взять?), то можно наработку считать уже там.

Аватара пользователя
CHANt
Профессионал
Сообщения: 565
Зарегистрирован: 13 окт 2012, 15:24

Re: подсчет моточасов

Сообщение CHANt »

Использую, как упоминали коллеги, RTC.
Пример, для 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
Вызов функции:
Безымянный.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.

service
Специалист
Сообщения: 254
Зарегистрирован: 16 ноя 2012, 10:23

Re: подсчет моточасов

Сообщение service »

Подсказали, как сделать на языке 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?

ward
Специалист
Сообщения: 415
Зарегистрирован: 12 ноя 2012, 08:44

Re: подсчет моточасов

Сообщение ward »

это не ST

service
Специалист
Сообщения: 254
Зарегистрирован: 16 ноя 2012, 10:23

Re: подсчет моточасов

Сообщение service »

в Кодесисе это ST. Работает даже!

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: подсчет моточасов

Сообщение Михайло »

Это могло бы выглядеть так:
Вариант в LD.gif
Однако конкретная реализация зависит от среды разработки. Как выглядит функция ADD в языке LAD у VIPA?
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Ответить