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

Тема: СИ-30 вычисление мгновенного значения

  1. #1
    Пользователь
    Регистрация
    21.03.2013
    Адрес
    Калининград
    Сообщений
    23

    По умолчанию СИ-30 вычисление мгновенного значения

    Здравствуйте! Подскажите пожалуйста, как правильнее реализовать алгоритм вычисления мгновенного значения показаний счетчика СИ-30?

    На счетчик приходят импульсы - 1 импульс = 10 л воды. Необходимо вычислить текущий расход м3/ч, пройденный за 1 минуту.

    Математически я легко представляю как это реализовать, но как это лучше сделать в CodeSys? Использовать таймеры для отсчета количества импульсов в минуту? Или, возможно, уже есть какая то готовая библиотека для подобных целей? Может у кого есть готовый похожий код?
    Последний раз редактировалось s22; 24.04.2013 в 05:39.

  2. #2
    Пользователь Аватар для rovki
    Регистрация
    03.01.2010
    Адрес
    Чехов
    Сообщений
    12,115

    По умолчанию

    Лучше сделать это вычисление самому -просто,наглядно,быстро,,, ,однако.
    электронщик до мозга костей и не только

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

    По умолчанию

    в режиме импульса наверное
    библиотека с сайта oscat.de
    Изображения Изображения
    • Тип файла: jpg owen.jpg (220.5 Кб, Просмотров: 64)

  4. #4
    Пользователь
    Регистрация
    21.03.2013
    Адрес
    Калининград
    Сообщений
    23

    По умолчанию

    Цитата Сообщение от rovki Посмотреть сообщение
    Лучше сделать это вычисление самому -просто,наглядно,быстро,,, ,однако.
    спасибо, учту. Но я имел в виду:
    Подскажите пожалуйста, как правильнее реализовать алгоритм вычисления мгновенного значения

  5. #5
    Пользователь Аватар для rovki
    Регистрация
    03.01.2010
    Адрес
    Чехов
    Сообщений
    12,115

    По умолчанию

    Любой работающий алгоритм -правильный .Если вам нужен оптимальный алгоритм ,то сформулируйте требования ,что для вас имеет первостепенное значение.
    Вы хотите реализовать алгоритм(расходомер) СИ30 на ПЛК?
    Последний раз редактировалось rovki; 26.04.2013 в 20:52.
    электронщик до мозга костей и не только

  6. #6
    Пользователь
    Регистрация
    21.03.2013
    Адрес
    Калининград
    Сообщений
    23

    По умолчанию

    Решено. Алгоритм реализован на трёх BLINK'ах: третий управляет первым и вторым генератором, которые дают импульс на запись переменной z1 и z2. Далее над ними производятся стандартные математические операции в результате чего получается переменная z с мгновенным значением. Применить модуль (абсолютное значение) пришлось в силу того, что алгоритм в первый момент времени дает положительное значение во второй - отрицательное. Избавиться от этого можно было использовав 4 блинк, но зачем использовать лишние вычислительные ресурсы если результат одинаков?

    Код:
    VAR
            blink1: BLINK;
    	blink2: BLINK;
    	blink3: BLINK;
    	si30rchv_z1: DWORD;
    	si30rchv_z2: DWORD;
    	si30rchv_z3: DWORD;
    	si30rchv_en1: BOOL ;
    	si30rchv_en3: BOOL:=TRUE ;
    	si30rchv_out3: BOOL;
    	si30rchv_out1: BOOL;
    	si30rchv_en2: BOOL ;
    	si30rchv_out2: BOOL;
    	si30rchv_dw: DWORD;
    END_VAR
    
    si30rchv_dw:=%ID6.5.0.0;
    
    si30rchv_r:=si30rchv_dw*0.01; (*1 импульс = 10 литров, *0.01 = м3*)
    
    blink3 (ENABLE := si30rchv_en3, TIMELOW:=t#60s, TIMEHIGH := t#60s);
    si30rchv_out3 := blink3.OUT;
    
    blink1 (ENABLE := si30rchv_out3, TIMELOW:=t#60s, TIMEHIGH := t#2ms);
    si30rchv_out1 := blink1.OUT;
    
    IF si30rchv_out3=FALSE THEN
    si30rchv_en2:=TRUE;
    ELSE
    si30rchv_en2:=FALSE;
    END_IF
    
    blink2 (ENABLE := si30rchv_en2, TIMELOW:=t#60s, TIMEHIGH := t#2ms);
    si30rchv_out2 := blink2.OUT;
    
    IF si30rchv_out1=FALSE AND si30rchv_out2=FALSE THEN
    si30rchv_z3:=si30rchv_z2-si30rchv_z1;
    END_IF
    
    IF si30rchv_out1=TRUE THEN
    si30rchv_z1:=si30rchv_dw;
    END_IF
    
    IF si30rchv_out2=TRUE THEN
    si30rchv_z2:=si30rchv_dw;
    END_IF
    
    si30rchv_z:=ABS (si30rchv_z3*0.01*60);

  7. #7
    Пользователь
    Регистрация
    22.03.2011
    Адрес
    Ивановская обл, Родники
    Сообщений
    145

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    в режиме импульса наверное
    библиотека с сайта oscat.de
    Какая у Вас библиотека, в <OSCAD codesys2_311_320> FLOW_METER отсутствует.
    Снимок.JPG

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

    По умолчанию

    Цитата Сообщение от Сергей Мих Посмотреть сообщение
    Какая у Вас библиотека, в <oscad codesys2_311_320=""> FLOW_METER отсутствует.
    Снимок.JPG
    В версии 332 точно есть
    Захват-15.png</oscad>
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  9. #9
    Пользователь
    Регистрация
    22.03.2011
    Адрес
    Ивановская обл, Родники
    Сообщений
    145

    По умолчанию

    Спасибо, нашёл . Теперь бы ещё и описание. Просто планируем обвязать насосные счётчиками воды и подключить в действующую диспетчиризацию. Водомеры с К=100 л./имп.

Похожие темы

  1. 2ТРМ1 вычисление разности значений на входах
    от Tehnopolis в разделе Эксплуатация
    Ответов: 10
    Последнее сообщение: 13.02.2024, 08:33
  2. вычисление влажности по тсух и т мокр
    от Юрий_Уфа в разделе ПЛК1хх
    Ответов: 12
    Последнее сообщение: 24.04.2012, 09:03
  3. СИ8 как прочитать значения
    от Anton_Minsk в разделе Помощь Разработчикам
    Ответов: 14
    Последнее сообщение: 27.02.2010, 12:06
  4. Ответов: 6
    Последнее сообщение: 25.11.2009, 16:36
  5. Значения переменных bad
    от AndrRus в разделе Master SCADA 3
    Ответов: 0
    Последнее сообщение: 04.07.2009, 01:37

Ваши права

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