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

Автоматизация технологических процессов, системы управления, АСУ ТП, АСКУЭ, программирование ПЛК, человеко-машинный интерфейс, сетевое оборудование, протоколы

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

Сообщение service » 27 июн 2013, 12:47

мне необходимо реализовать подсчет моточасов оборудования и передавать эти значения в скаду. с чего начать и какой, так сказать, алгоритм подобной реализации?
service
Специалист
 
Сообщения: 248
Зарегистрирован: 16 ноя 2012, 10:23

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

Сообщение Михайло » 27 июн 2013, 13:22

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

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

Сообщение service » 27 июн 2013, 16:05

а что это за таймер TONR и как он работает?
service
Специалист
 
Сообщения: 248
Зарегистрирован: 16 ноя 2012, 10:23

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

Сообщение Михайло » 27 июн 2013, 16:24

Работает почти также как TON, только не сбрасывается при исчезновении счетного сигнала, а сбрасывается отдельным входом RESET.
Михайло
Администратор
 
Сообщения: 3332
Зарегистрирован: 19 сен 2012, 19:16

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

Сообщение ward » 27 июн 2013, 17:27

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

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

Сообщение Ryzhij » 27 июн 2013, 20:43

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

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

Сообщение CHANt » 28 июн 2013, 20:32

Использую, как упоминали коллеги, 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
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
CHANt
Профессионал
 
Сообщения: 531
Зарегистрирован: 13 окт 2012, 15:24
Откуда: Orenburg

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

Сообщение service » 09 июл 2013, 13:36

Подсказали, как сделать на языке 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?
service
Специалист
 
Сообщения: 248
Зарегистрирован: 16 ноя 2012, 10:23

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

Сообщение ward » 09 июл 2013, 14:56

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

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

Сообщение service » 09 июл 2013, 16:31

в Кодесисе это ST. Работает даже!
service
Специалист
 
Сообщения: 248
Зарегистрирован: 16 ноя 2012, 10:23

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

Сообщение Михайло » 16 июл 2013, 08:07

Это могло бы выглядеть так:
Вариант в LD.gif

Однако конкретная реализация зависит от среды разработки. Как выглядит функция ADD в языке LAD у VIPA?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Михайло
Администратор
 
Сообщения: 3332
Зарегистрирован: 19 сен 2012, 19:16


Вернуться в АВТОМАТИЗАЦИЯ

Кто сейчас на конференции

Сейчас этот форум просматривают: Google Adsense [Bot] и гости: 2