Страница 2 из 5 ПерваяПервая 1234 ... ПоследняяПоследняя
Показано с 11 по 20 из 42

Тема: Свой таймер

  1. #11

    По умолчанию

    Цитата Сообщение от Sergey666 Посмотреть сообщение
    В третьих можно вместо таймера использовать функцию+ переменную TIME , то длительность цикла внесет ту-же погрешность.
    разница в том что в одном случае (TIME) погрешность равна максимум циклу, а при использовании метода в примере погрешность накапливается. Я хотел узнать есть ли такие энтузиасты, которые "замораживали" (перезаписывали) ET в таймере TON, например? Как себя ведет таймер при таких манипуляциях?

  2. #12
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,246

    По умолчанию

    Цитата Сообщение от spectrum48k Посмотреть сообщение
    разница в том что в одном случае (TIME) погрешность равна максимум циклу, а при использовании метода в примере погрешность накапливается. Я хотел узнать есть ли такие энтузиасты, которые "замораживали" (перезаписывали) ET в таймере TON, например? Как себя ведет таймер при таких манипуляциях?
    что за ересь, когда в очередном цикле плк происходит вызов таймера, он выдает текущее значение времени от RTC, дискретный сигнал меняет состояние при превышении уставки в текущем цикле, какое там может быть накапливание? Не нра секунды накапливайте значение в миллисекундах
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  3. #13

    По умолчанию

    правильно. в миллисикундах давайте еще чаще суммировать погрешность. ) capzap, вы конечно здесь ветеран, и я Вас уважаю. но весь этот скепсис выглядит так как будто не хотите вникать. Таймер вызванный с установленным Q уже выполнил отсечку превышения уставки. Ее величина от нуля до времени цикла. поправьте меня, если я не прав. Если за ересь здесь принято сжигать перфекционистов, то пожалста) жгите

  4. #14
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,841

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    что за ересь, когда в очередном цикле плк происходит вызов таймера, он выдает текущее значение времени от RTC, дискретный сигнал меняет состояние при превышении уставки в текущем цикле, какое там может быть накапливание? Не нра секунды накапливайте значение в миллисекундах
    Накопление погрешности относится к способу подсчета времени наработки в посте #8, когда используется таймер для генерации секундных импульсов, из которых и подсчитывается суммарное время. На самом деле на выходе таймера будут импульсы не точно 1сек, а в диапазоне от 1сек до 1сек+время цикла. Вот эта погрешность и будет накапливаться в течение дней или месяцев.

    ЗЫ.
    Цитата Сообщение от Sergey666 Посмотреть сообщение
    ...Во вторых длительность цикла для ПЛК100-110 никогда не устанавливаю более 5мс , 5мс тем более можно пренебречь .
    погрешность при времени цикла 5мс даст погрешность подсчета времени до 18 сек/час или 432 сек/день.
    Последний раз редактировалось petera; 26.08.2015 в 13:02.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  5. #15
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,246

    По умолчанию

    в 14:50:32.500 поступила команда TRUE на вход IN, с уставкой 5 секунд, время цикла плк ~3мс, отсчитываем приблизительно 1667 циклов, подходим к вызову таймера, он берет время с реальных часов, на них должно быть 14:50:37.501, вычитает время когда таймер запустился, у него получается больше уставки на 1мс, следовательно он меняет состояние Q, о каком накоплении идет речь у Вас?

    ЗЫ а кто сказал что при поступлении сигнала на выключение двигателя он сразу останавливается, так что мы еще теряем наработку
    в течение дней или месяцев
    Последний раз редактировалось capzap; 26.08.2015 в 13:04.
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  6. #16
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,246

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Накопление погрешности относится к способу подсчета времени наработки в посте #8
    перечитаем строчку из поста№8 and Wrk_drv1(*Признак работы механизма*) команда на выключение дана, лишняя секунда не досчитается, так что мы не накапливаем а уменьшаем время
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  7. #17
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,841

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    перечитаем строчку из поста№8 and Wrk_drv1(*Признак работы механизма*) команда на выключение дана, лишняя секунда не досчитается, так что мы не накапливаем а уменьшаем время
    Накапливаем от 0 до времени цикла при каждом срабатывании секундного таймера здесь
    IF Tmr_TON_1S.Q THEN
    Wrk_sec_drv1:=Wrk_sec_drv1+1;

    and Wrk_drv1(*Признак работы механизма*)
    погрешность при времени цикла 5мс даст погрешность подсчета времени до 18 сек/на один час работы механизма или 432 сек/день.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  8. #18

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    в 14:50:32.500 поступила команда TRUE на вход IN, с уставкой 5 секунд, время цикла плк ~3мс, отсчитываем приблизительно 1667 циклов, подходим к вызову таймера, он берет время с реальных часов, на них должно быть 14:50:37.501, вычитает время когда таймер запустился, у него получается больше уставки на 1мс, следовательно он меняет состояние Q, о каком накоплении идет речь у Вас?

    ЗЫ а кто сказал что при поступлении сигнала на выключение двигателя он сразу останавливается, так что мы еще теряем наработку



    3600 / 5 * (3ms*~0.5=1.5ms) / 1000 = ~1,08 в час в сторону уменьшения. данный метод имеет право на жизнь с срабатыванием "трещетки" как можно реже (5-10с). что при частых пусках -остановках дает свой "бонус" ).


    Код:
    вот покуроченный METER из оскат:
    
    FUNCTION_BLOCK METERMOD
    VAR_INPUT
    	Count : BOOL;
    	Reset : BOOL;
    END_VAR
    VAR_IN_OUT
    	Hours : REAL;
    END_VAR
    VAR
    	Count2 : BOOL;
    	Scale : REAL := 1;
    	Scale2 : REAL;
    	(* Period seconds *)
    	D : REAL := 3600;
    	MR : REAL2;
    	Hours1, Hours2 : REAL; (* current consumption value on Scale and Scale2 *)
    	HoursAct: DWORD;
    	last: DWORD;
    	tc: REAL;
    	init: BOOL;
    END_VAR
    
    
    
    (* see OSCAT Library METER *)
    HoursAct := T_PLC_MS();
    IF NOT init THEN
    	init := TRUE;
    	last := HoursAct;
    	mr.RX := Hours;
    	mr.R1 := 0.0;
    ELSIF HoursAct = last THEN
    	RETURN;
    ELSE
    	tc := DWORD_TO_REAL(HoursAct - last) * 0.001;
    END_IF;
    last := HoursAct;
    
    (* reset *)
    IF Reset THEN
    	mr.R1 := 0.0;
    	mr.RX := 0.0;
    	Hours := mr.RX;
    ELSE
    	(* current consumption measurement *)
    	IF Count THEN Hours1 := Scale; ELSE Hours1 := 0.0; END_IF;
    	IF Count2 THEN Hours2 := Scale2; ELSE Hours2 := 0.0; END_IF;
    	(* add up the current values in a double real *)
    	MR := R2_ADD(MR,(SEL(Count,0.0,Hours1) + SEL(Count2, 0.0, Hours2)) / D * TC);
    	(* set the current output value *)
    	Hours := mr.RX;
    END_IF;
    sXbQwLk.png
    Последний раз редактировалось spectrum48k; 26.08.2015 в 14:05. Причина: вспомнил. есть пример.

  9. #19
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,841

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    перечитаем строчку из поста№8 and Wrk_drv1(*Признак работы механизма*) команда на выключение дана, лишняя секунда не досчитается, так что мы не накапливаем а уменьшаем время
    Цитата Сообщение от petera Посмотреть сообщение
    Накапливаем от 0 до времени цикла при каждом срабатывании секундного таймера здесь
    IF Tmr_TON_1S.Q THEN
    Wrk_sec_drv1:=Wrk_sec_drv1+1;

    and Wrk_drv1(*Признак работы механизма*)
    погрешность при времени цикла 5мс даст погрешность подсчета времени до 18 сек/на один час работы механизма или 432 сек/день.
    Немного изменим программу из поста #8
    Код:
    tim:=TIME();
    (*Подсчет с использованием секундного таймера*)
    Tmr_TON_1S(In:=(NOT Tmr_TON_1S.Q)AND Wrk_drv1 (*Признак работы механизма*),Pt:=t#1s);
    IF Tmr_TON_1S.Q THEN
    Wrk_sec_drv1:=Wrk_sec_drv1+1;
    IF Wrk_sec_drv1>=60 THEN
    Wrk_min_drv1:=Wrk_min_drv1+1;
    Wrk_sec_drv1:=0;
    END_IF
    END_IF
    (*Подсчет действительного времени наработки*)
    IF NOT Wrk_drv1 THEN
    t_Start:=tim;
    ELSE
    Wrk_tim:=tim-t_Start;
    END_IF
    В первой части подсчитываем секундные импульсы
    Во второй измеряем интервал времени с помощью TIME()
    В эмуляторе быстро видно нарастание погрешности, т.к. время цикла десятки мс.

    Хорошо видно, что старт таймера(.StartTime) происходит не ровно через 1с, а с добавленной погрешностью
    Ну и итог тоже видно погрешность больше 3 сек при времени работы механизма ~30 сек.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  10. #20
    Пользователь
    Регистрация
    28.08.2008
    Адрес
    23..93..123
    Сообщений
    1,674

    По умолчанию

    Вот , зануды !
    Да кому нах-н нужны эти секунды , для времени наработки эл-двигателя ?
    Да ! Согласен так , как предлагал не точно , но я бы посмотрел что вы будете делать если в ПЛК нет "TIME" и если и есть FLOAT , то нету FLOAT_TO_DWORD(WORD) !
    А еще можно взять эталон милисекундный и ПЛК100-110 завести TIME() и посмотреть что с погрешностью .
    А еще музыку в формате MP3 можно брезгливо скидывать в бачок , типа -"фи... она не повторяет все гармоники оригинала" .
    А зачем люди ставят время цикла в ПЛК более 10мс ???

Страница 2 из 5 ПерваяПервая 1234 ... ПоследняяПоследняя

Похожие темы

  1. Как оценить свой труд?
    от a_gricaj в разделе Master SCADA 3
    Ответов: 30
    Последнее сообщение: 12.07.2015, 13:20
  2. Ответов: 2
    Последнее сообщение: 18.03.2015, 16:04
  3. Таймер
    от Deoxes в разделе СПК1хх
    Ответов: 8
    Последнее сообщение: 16.07.2014, 12:19
  4. Таймер(ы)
    от AntoNechayuk в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 23.08.2011, 20:39

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •