Страница 3 из 5 ПерваяПервая 12345 ПоследняяПоследняя
Показано с 21 по 30 из 42

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

  1. #21

    По умолчанию

    всего лишь подбиваю уйти от трещетки и работать с накоплением времени а не импульсов )

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

    По умолчанию

    Цитата Сообщение от spectrum48k Посмотреть сообщение
    всего лишь подбиваю уйти от трещетки и работать с накоплением времени а не импульсов )
    А надо????
    Мы живем в окружении "трещотки" .
    Второе вам надо передать секунды наработанные в панель (выложить в слэйв) в формате 2байт (Ворд , Инт) ,с точностью 1 сотка. Ну тка преобразуйте T#1s105MS , ничего не потеряете ?

  3. #23

    По умолчанию

    Цитата Сообщение от Sergey666 Посмотреть сообщение
    А надо????
    Мы живем в окружении "трещотки" .
    Второе вам надо передать секунды наработанные в панель (выложить в слэйв) в формате 2байт (Ворд , Инт) ,с точностью 1 сотка. Ну тка преобразуйте T#1s105MS , ничего не потеряете ?
    не путаем. речь идет не об обострении перфекционизма и борьбой с каждой потерянной милисекундой, а именно с большой накопленной погрешностью. для кого некритично, вообще заморачиваться не стоит. хотелось бы прийти к истинно правильному методу с точки зрения математики и плк-шного квантования времени, так сказать к примеру №1 добавить пример №2 для ценителей)) (желательно простой и без посторонних бибок , как у меня)

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

    По умолчанию

    Цитата Сообщение от spectrum48k Посмотреть сообщение
    не путаем. речь идет не об обострении перфекционизма и борьбой с каждой потерянной милисекундой, а именно с большой накопленной погрешностью. для кого некритично, вообще заморачиваться не стоит. хотелось бы прийти к истинно правильному методу с точки зрения математики и плк-шного квантования времени, так сказать к примеру №1 добавить пример №2 для ценителей)) (желательно простой и без посторонних бибок , как у меня)
    Так вот товарищ Петера выше все сделал !
    А можно еще изящнее - задействовать TASK_Manager и отдаться ему (Du hast mich) вызывая 1 раз в секунду программу Tik_1s с одной строчкой Tik:=true;


    С точки зрения математической правильности конечно надо с TIME() работать .
    Америкосы тоже калаш сначала модернизировать пытались , зазоры все убрали , подогнали все четко-идеально ... , а он не заработал ...
    Последний раз редактировалось Sergey666; 26.08.2015 в 15:43.

  5. #25

    По умолчанию

    вариации на тему)
    Код:
    FUNCTION_BLOCK TIMER
    VAR_INPUT
    	iCntUp : BOOL;
    	iCntDn : BOOL;
    	iCntRes : BOOL;
    	iCntSP : TIME;
    END_VAR
    VAR_OUTPUT
    	OutTime : TIME;
    	OutAlm : BOOL;
    END_VAR
    VAR
    	TimeAct : TIME;
    	TimeOld : TIME;
    	TimeDelta : TIME;
    	DoCalc : UINT;
    	Init: BOOL;
    	CntUpOld :BOOL;
    	CntDnOld : BOOL;
    END_VAR
    
    
    
    IF iCntRes THEN Init := FALSE; END_IF
    
    
    (*INIT*)
    IF NOT Init THEN
    				Init := TRUE;
    				iCntUp := iCntDn := CntUpOld := CntDnOld := OutAlm := FALSE;
    				TimeAct := TimeOld := TimeDelta := OutTime := t#0ms;
    				DoCalc := 0;
    				RETURN;
    END_IF
    
    
    (*DOCALC*)
    DoCalc := DoCalc +1;
    
    IF (DoCalc MOD 10=0) OR (iCntUp <> CntUpOld) OR (iCntDn <> CntDnOld) THEN
    
    
    TimeAct :=TIME();
    
    		IF TimeOld > t#0ms THEN
    		TimeDelta := TimeAct - TimeOld;
    
    		(*COUNT_UP*)
    			IF iCntUp OR (CntUpOld > iCntUp) THEN
    						IF iCntSP > OutTime THEN OutTime := OutTime + TimeDelta;
    						IF OutTime > iCntSP THEN OutTime := iCntSP; END_IF
    						END_IF;
    			END_IF
    
    		(*COUNT_DOWN*)
    			IF iCntDn OR (CntDnOld > iCntDn) THEN
    						IF OutTime > TimeDelta THEN OutTime := OutTime - TimeDelta;
    						ELSE OutTime := t#0ms;
    						END_IF;
    			END_IF
    
    		OutAlm := iCntSP > t#0ms AND OutTime = iCntSP;
    
    		END_IF
    
    		TimeOld := TimeAct;
    
    END_IF
    
    CntUpOld := iCntUp;
    CntDnOld := iCntDn;
    Последний раз редактировалось spectrum48k; 27.08.2015 в 11:27.

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

    По умолчанию

    Круть!
    Как там у Филоненко , -"Любую проблему можно решить увеличением числа параметров , кроме проблемы чрезмерного числа параметров".
    Сброс Вар_Инпут тоже ... странный маневр.

  7. #27

    По умолчанию

    Цитата Сообщение от Sergey666 Посмотреть сообщение
    Круть!
    Как там у Филоненко , -"Любую проблему можно решить увеличением числа параметров , кроме проблемы чрезмерного числа параметров".
    Сброс Вар_Инпут тоже ... странный маневр.
    я эту поговорку, кстати вспоминал)) вчера попадалась несколько раз на глаза при навигации по форуму) Ничего Вар_Инпут мне это простят

  8. #28
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,586

    По умолчанию

    (*Подсчет действительного времени наработки*)
    IF NOT Wrk_drv1 THEN
    t_Start:=tim;
    ELSE
    Wrk_tim:=tim-t_Start;
    END_IF

    petera какое поведение будет при переходе через ноль ? при смене суток.

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

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    (*Подсчет действительного времени наработки*)
    IF NOT Wrk_drv1 THEN
    t_Start:=tim;
    ELSE
    Wrk_tim:=tim-t_Start;
    END_IF

    petera какое поведение будет при переходе через ноль ? при смене суток.
    Функция TIME() возвращает время работы ПЛК в мс от момента его включения, и к времени суток (RTC) отношения не имеет.
    По этому переполнение произойдет не при смене суток, а через 49d17h2m47s295ms (4294967295 ms) от момента включения ПЛК.

    ЗЫ. Уточню. Переполнение TIME() произойдет не при смене суток, а через 49d17h2m47s295ms (4294967295 ms) от момента включения ПЛК.
    Поэтому максимальное значение Wrk_tim при таком варианте подсчета равно 49d17h2m47s295ms.
    Последний раз редактировалось petera; 27.08.2015 в 14:16.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  10. #30

    По умолчанию

    при большом желании при превышении интервала более суток можно плюсовать счетчик суток, а из дворда интервала времени вычитать t#1d

Страница 3 из 5 ПерваяПервая 12345 ПоследняяПоследняя

Похожие темы

  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

Ваши права

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