Страница 393 из 411 ПерваяПервая ... 293343383391392393394395403 ... ПоследняяПоследняя
Показано с 3,921 по 3,930 из 4101

Тема: разные вопросы новичка

  1. #3921

    По умолчанию

    Цитата Сообщение от IVM Посмотреть сообщение
    А почему не подложить под емкость тензодатчик ?
    хорошая мысля. но уже до этого была куплена линейка датчик уровня. установлен. даже ее сейчас не хотят переделать. и бо говорят нефиг трогать. работаем с тем что есть.

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

    По умолчанию

    Netadmin, в понедельник сброшу пример по своему датчику топлива.
    Правда у меня пересчет в scada выполняется, но думаю в лоджик на ST можно сделать аналогичное.

  3. #3923

    По умолчанию

    изначально это было сделано вообще на трм WhatsApp Image 2024-10-31 at 11.37.10.jpeg но сами понимаете это вариант никакой. мало того что емкость не линейна. так еще и датчик в двух частях емкости. конус и цилиндр.

  4. #3924

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    Netadmin, в понедельник сброшу пример по своему датчику топлива.
    Правда у меня пересчет в scada выполняется, но думаю в лоджик на ST можно сделать аналогичное.
    спасибо. не знаю смогу я на овен логик это спроецировать. с СТ дело не имел.

  5. #3925

    По умолчанию

    Цитата Сообщение от Netadmin Посмотреть сообщение
    спасибо. не знаю смогу я на овен логик это спроецировать. с СТ дело не имел.
    Готовая функция линейной апроксимации на 10 точек от Petera, можно снять зависимость объёма от уровня или зависимость объёма от давления.
    На конус сделать 6-8 точек, выше конуса достаточно 2 точек. Тарировать в конусе и выше можно например, по 5-10 литров.
    https://owen.ru/forum/showthread.php?t=35489&page=5
    Последний раз редактировалось kondor3000; 16.11.2024 в 14:18.

  6. #3926

    По умолчанию

    Спасибо неравнодушным, если что это не корыстный интерес. друг пришел на производства пластика. попросил улучшить визуализацию расхода жидкости. то-есть не как у них было в условных единицах на ТРМ а в литрах. Пока решили на конус забить. он как запас.

  7. #3927

    По умолчанию

    Цитата Сообщение от Netadmin Посмотреть сообщение
    спасибо. не знаю смогу я на овен логик это спроецировать. с СТ дело не имел.
    Можно тупо бахнуть всю таблицу в массив, и считать по нему:
    Код:
    FUNCTION GRAPH : REAL;
    
    VAR_INPUT
        x     :REAL;
    END_VAR
    VAR
        arX: ARRAY[0..49] OF REAL := [1,    2,    3,    4,    5,    6,    7,    8,    9,    10,    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,    37,    38,    39,    40,    41,    42,    43,    44,    45,    46,    47,    48,    49, 50];
        arY: ARRAY[0..49] OF REAL := [1,    2,    3,    4,    5,    6,    7,    8,    9,    10,    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,    37,    38,    39,    40,    41,    42,    43,    44,    45,    46,    47,    48,    49, 50];
        i: udint;
    END_VAR
    
    IF    x < arX[0] THEN GRAPH := arY[0];
    ELSIF x > arX[49] THEN GRAPH := arY[49];
    ELSE
        FOR i:=0 TO 48 DO
            IF x >= arx[i] AND x <= arx[i+1] THEN
                GRAPH := LINEAR(x, arx[i], arx[i+1], ary[i], ary[i+1]);
            END_IF;
        END_FOR;
    END_IF;
    
    end_function
    
    
    FUNCTION LINEAR : REAL;
    VAR_INPUT
        rX, rX1, rX2, rY1, rY2 : REAL;
    END_VAR
    
    IF rX2 = rX1 THEN LINEAR := rY2;
    ELSE LINEAR := (rX - rX1) * (rY2 - rY1) / (rX2 - rX1) + rY1;
    END_IF;
    
    end_function
    


  8. #3928

    По умолчанию

    Только это подойдёт для одной плотности, если в ёмкость нальют что-то более или менее плотное, то всё коту под хвост.

    Хотя для поплавкового ду пойдут. Для давления нет.
    Последний раз редактировалось МихаилГл; 16.11.2024 в 14:20.

  9. #3929

    По умолчанию

    Попробовал решить задачу измерения объёма в усечённом конусе двумя способами:
    1. Выразил объём прямого (полного) конуса через высоту конуса и угол между основанием и образующей (т.е. выразил радиус через высоту и подставил в формулу объёма). Далее взял три точки - начало отсчёта датчика, середину конуса и верхнюю часть конуса - для них известны и уровень и объём. Получил систему из двух уравнений относительно двух переменных - высота конуса до нижней точки измерения датчика и угол между основанием и образующей. Получил квадратное уравнение, решил.
    2. Взял точки и при помощи метода наименьших квадратов нашёл полином второй степени. Тут всё просто - в институте на чисметах делал, осталась программка на Pascal. Думаю, что для тех, кто чисметы не изучал - существуют онлайн сервисы аппроксимации МНК.

    Какие результаты.
    Очень удивился, что лобовое решение при помощи интерполяции по 3 точкам (1-й способ) дал неудовлетворительные результаты - вместо параболы получилась функция гиперболы с перегибом.
    А вот аппроксимация дала весьма хорошие результаты.

    У меня нет MS Office - работаю в Libre Office, поэтому исходники прикладывать нет смысла, покажу распечатки в pdf - и вывод формулы (как оказалось не нужной) и результаты вычислений по формуле и МНК.

    Итого. Как бы поступил лично я.
    Нет ничего универсального и эта программа пишется не для всех конусных и не только бункеров, а для конкретного. А для конкретного бункера на диапазоне 35-60 см хорошо применим полином второй степени, коэффициенты для которого получены МНК. Поэтому решение такое:
    1. на диапазоне измерений от 35 до 60 см объём вычисляется по аппроксимационному полиному.
    2. на диапазоне 60 см и более - по линейной формуле для цилиндра (может придётся разбить на несколько участков)


    В примере программы не стал усердствовать с точностью вычислений для цилиндрической части, просто для примера показал с каким-то коэффициентом.

    Код:
    function BunkerVolume: real;
        var_input
            rLevel: real;
        end_var
    
        var
            a: array [0..2] of real := [7.8577289377217835E-002, -3.0897496947466449E-003, 1.4868742368739197E-004];
            rVolumeMin: real := 0.152;
            rVolumeMax: real := 0.429;
            rResult: real;
            i: udint;
        end_var
    
        if rLevel < 35.0 then
            rResult := rVolumeMin;
        elsif rLevel <=60.0 then
            rResult := 0;
            for i := 0 to 2 do
                rResult := rResult * rLevel + a[2-i];
            end_for;
        elsif rLevel <= 200.0 then
            rResult := rVolumeMax + 0.0348 * (rLevel - 60.0);
        end_if;
        
        BunkerVolume := rResult;
    
    end_function
    Вложения Вложения
    Последний раз редактировалось FPavel; 17.11.2024 в 00:40.

  10. #3930
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    8,969

    По умолчанию

    Цитата Сообщение от МихаилГл Посмотреть сообщение
    Только это подойдёт для одной плотности, если в ёмкость нальют что-то более или менее плотное, то всё коту под хвост.

    Хотя для поплавкового ду пойдут. Для давления нет.
    Надеюсь плотность налитой жидкости не будет являться государственным секретом(тайной), непонятно к чему разговор, в смысле, даже в теплосчётчиках объём воды пересчитывается в массу в зависимости от температуры, но насколько я понял и этого товарищу не надо, в смысле, сверхвысокой точности, коль он измеритель уровня применил с точностью плюс-минус лапоть, в смысле, состоящий из линейки герконов, любой датчик избыточного давления, коих у Овена великое множество, измерит точнее, даже без пересчёта массы в объём, товарищ вроде объём хочет, при использовании тензодатчиков аналогичная ситуация!

    И, совсем непонятно зачем датчики применять более чем в 10 раз дороже(наверно куры денег не клюют) датчика избыточного давления и даже дороже датчиков дифференциального давления, для измерения уровня в сосудах под избыточным давлением:

    ПД200-ДД.jpg

    короче, маразмом попахивает, мне так кажется!

    Могу добавить, примерно лет 10 назад покупали четыре датчика дифференциального давления, как раз для этой цели(о которой писал), короче, они примерно в 3 раза были дешевле овенских и к тому же и более надёжные оказались, в смысле, до сих пор работают и проблем с ними не возникало, короче, лучше в 10 раз по совокупности качеств, это по моим подсчётам, марку не буду называть, а то заругают!
    Последний раз редактировалось Сергей0308; 17.11.2024 в 11:29.
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

Страница 393 из 411 ПерваяПервая ... 293343383391392393394395403 ... ПоследняяПоследняя

Похожие темы

  1. ПЛК 110 - Вопросы новичка?
    от di-s в разделе ПЛК1хх
    Ответов: 16
    Последнее сообщение: 24.05.2024, 13:53
  2. Вопросы новичка!!!
    от sau в разделе ПЛК1хх
    Ответов: 42
    Последнее сообщение: 02.05.2022, 19:57
  3. Вопросы новичка по MasterScada
    от MrNobody в разделе Master SCADA 3
    Ответов: 4
    Последнее сообщение: 04.09.2014, 14:39
  4. Вопросы полного новичка
    от Korion в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 09.02.2010, 10:08
  5. Вопросы новичка по ПЛК
    от Ollegator в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 07.07.2009, 09:29

Ваши права

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