Страница 325 из 404 ПерваяПервая ... 225275315323324325326327335375 ... ПоследняяПоследняя
Показано с 3,241 по 3,250 из 4800

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

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

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

  2. #2

    По умолчанию

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


  3. #3

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    Можно тупо бахнуть всю таблицу в массив, и считать по нему:
    [CODE]
    FUNCTION GRAPH : REAL;

    VAR_INPUT
    x :REAL;
    END_VAR
    VAR
    [CODE]
    1exan, подскажите, на каком сервисе расцвечиваете исходники?
    Тоже хочется красоты...

  4. #4

    По умолчанию

    Цитата Сообщение от FPavel Посмотреть сообщение
    1exan, подскажите, на каком сервисе расцвечиваете исходники?
    Тоже хочется красоты...
    Что самое интересное - ни на каком. Просто копирую из OL

  5. #5

    По умолчанию

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

  6. #6

    По умолчанию

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

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

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

    По умолчанию

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

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

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

    ПД200-ДД.jpg

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

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

  8. #8

    По умолчанию

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

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

    ПД200-ДД.jpg

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

    Могу добавить, примерно лет 10 назад покупали четыре датчика дифференциального давления, как раз для этих целей(о который писал), короче, они примерно в 3 раза были дешевле овенских и к тому же и более надёжные оказались, в смысле, до сих пор работают и проблем с ними не возникало, короче, лучше в 10 раз по совокупности качеств, это по моим подсчётам, марку не буду называть, а то заругают!
    не является тайной. обычное базовое масло для изготовления пластика. по поводу что было применено. повторяю. так видел задачу и ее реализация мастер который за пару месяцев уволился до прихода моего друга на предприятия. Собственно все что Сергей сейчас высказал. я слово в слово сказал моему другу. на что начальник сказал работаем с тем что имеем. ибо как было замечено стоил этот датчик с учетом что приехал целым только на 3 раз огого сколько. единственное на что развели "Убедили" начальника это использовать ПР200. такие дела.

  9. #9

    По умолчанию

    Попробовал решить задачу измерения объёма в усечённом конусе двумя способами:
    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. #10

    По умолчанию

    Цитата Сообщение от FPavel Посмотреть сообщение
    Попробовал решить задачу измерения объёма в усечённом конусе двумя...
    Вроде тангенс, а не котангенс... Или вы какой угол использовали для расчётов?

    PS Снимаю вопрос, вы другой угол взяли.
    Последний раз редактировалось МихаилГл; 17.11.2024 в 07:32.

Страница 325 из 404 ПерваяПервая ... 225275315323324325326327335375 ... ПоследняяПоследняя

Похожие темы

  1. ПЛК 110 - Вопросы новичка?
    от di-s в разделе ПЛК1хх
    Ответов: 21
    Последнее сообщение: 15.04.2025, 16:38
  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

Ваши права

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