Показано с 1 по 10 из 10

Тема: Суммирование предыдущих значений расхода.

  1. #1

    Lightbulb Суммирование предыдущих значений расхода.

    Для того чтобы знать количество воды прошедшее через фильтры за определенное время, в ST написал следующее выражение:
    a=a+(QF1)\3600- где QF1-тэг расход в т\час , 3600сек - т.е. вычисляем т\сек. Все вроде логично, но в конечном итоге не получилось того чего хотел - подскажите где ошибка. Методом научного втыка подобрал число в 2100000 на которое надо делить чтобы получить нужные данные...Проверял на контроллере ПЛК63. В режиме эмуляции число отличается на порядок... Чувствую что надо как то привязаться к TIME? но не знаю как...Жду помощи от специалистов...

  2. #2
    Пользователь Аватар для _Mikhail
    Регистрация
    25.07.2013
    Адрес
    Ярославль
    Сообщений
    510

    По умолчанию

    Расчет вызывается раз в секунду или в каждом цикле?

  3. #3
    Пользователь
    Регистрация
    24.07.2012
    Адрес
    Россия
    Сообщений
    1,492

    По умолчанию

    Цитата Сообщение от arelavv Посмотреть сообщение
    Для того чтобы знать количество воды прошедшее через фильтры за определенное время, в ST написал следующее выражение:
    a=a+(QF1)\3600- где QF1-тэг расход в т\час , 3600сек - т.е. вычисляем т\сек. Все вроде логично, но в конечном итоге не получилось того чего хотел - подскажите где ошибка. Методом научного втыка подобрал число в 2100000 на которое надо делить чтобы получить нужные данные...Проверял на контроллере ПЛК63. В режиме эмуляции число отличается на порядок... Чувствую что надо как то привязаться к TIME? но не знаю как...Жду помощи от специалистов...
    Код:
    r1(clk:=i8);(*триггер на вход от счетчика*)
    IF r1.Q THEN(*если сработал триггер*)
    	IF one=FALSE(*доп. переменная, если она false запоминаем время сейчас, если TRUE, то вычитаем от текущего запомненное в t1 = получаем сколько прошло между сигналами в мс*)
    		THEN
    			one:=TRUE;
    			t1:=TIME();
    			ELSE
    			t2:=TIME()-t1;
    			one:=FALSE;
    	END_IF
    END_IF
    Liters:=DWORD_TO_WORD(3600000/TIME_TO_DWORD(t2));(*счетчик 1 имп\л liters - выходная переменная WORD литров в час*)

  4. #4
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Код:
    VAR
        tickTock: R_TRIG;
    END_VAR
    
    
    tickTock(CLK := TIME_TO_UDINT(TIME()) MOD 1000 > 500);
    
    
    IF tickTock.Q THEN
        a := a + QF1 / 3600;
    END_IF

  5. #5

    По умолчанию

    Расчет вызывается раз в сек.
    Спасибо всем!!!
    будем посмотреть...

  6. #6

    По умолчанию

    Использовал программку от Егора все работает спасибо еще раз!!!
    есть маленький вопросик, -MOD целочисленное деление - а цифры 1000>500 что обозначают?

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

    По умолчанию

    Цитата Сообщение от arelavv Посмотреть сообщение
    Использовал программку от Егора все работает спасибо еще раз!!!
    есть маленький вопросик, -MOD целочисленное деление - а цифры 1000>500 что обозначают?
    скобок для Вас не добавили (TIME_TO_UDINT(TIME()) MOD 1000) > 500
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  8. #8

    По умолчанию

    Так что-же >500

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

    По умолчанию

    да любое число там может стоять больше 500, чтоб событие случилось один раз в секунду
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  10. #10

    По умолчанию

    Спасибо за информацию!!!

Похожие темы

  1. Суммирование погрешности
    от AtlantisNN в разделе Эксплуатация
    Ответов: 4
    Последнее сообщение: 01.10.2014, 08:51
  2. Накопленное значение расхода
    от Lukasevich в разделе Master SCADA 3
    Ответов: 4
    Последнее сообщение: 28.01.2013, 11:49
  3. регулятор расхода клея
    от antey в разделе Подбор Оборудования
    Ответов: 9
    Последнее сообщение: 02.03.2010, 00:27
  4. Регулирование расхода
    от DeMax в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 18.06.2009, 12:49
  5. суммирование в орм1.2
    от Р.Александр в разделе OWEN Proces Manager
    Ответов: 2
    Последнее сообщение: 05.05.2009, 13:23

Ваши права

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