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

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

Комбинированный просмотр

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

    По умолчанию

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

    В четвертых можно и с .ET заморочится , не вижу сложностей вообще , только ... надо-ли . Если в ПЛК с временем вообще что-то не то и 100мс это не 100мс , а где-то 120...150 . Гиви! Сколько граммов в килограмме ? -Сэмсот-Васэмсот , где-то так ...
    Так что ... сало оно и в африке сало , чего его пробовать .
    Последний раз редактировалось Sergey666; 26.08.2015 в 11:37.

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

    По умолчанию

    в 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

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

  3. #3

    По умолчанию

    Цитата Сообщение от 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. Причина: вспомнил. есть пример.

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

    По умолчанию

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

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

    По умолчанию

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

  6. #6

    По умолчанию

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

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

    По умолчанию

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

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

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

    По умолчанию

    Цитата Сообщение от 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

  9. #9

    По умолчанию

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

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

    По умолчанию

    Цитата Сообщение от spectrum48k Посмотреть сообщение
    при большом желании при превышении интервала более суток можно плюсовать счетчик суток, а из дворда интервала времени вычитать t#1d
    Причем здесь сутки, месяцы нужно рассматривать
    Переполнение TIME() произойдет не при смене суток, а через 49d17h2m47s295ms
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

Страница 2 из 4 ПерваяПервая 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

Ваши права

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