Страница 70 из 83 ПерваяПервая ... 2060686970717280 ... ПоследняяПоследняя
Показано с 691 по 700 из 828

Тема: Универсальные макросы для OWEN Logic

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

    По умолчанию

    Цитата Сообщение от Stranger199017 Посмотреть сообщение
    Здравствуйте. Знающие люди подскажите существует ли макрос с нелинейным масштабированием для пр100. Необходимо подключить датчик температуры NTC 10k. Пока вышел из ситуации использую 10 макросов Scale из онлайн библиотеки макросов.
    Смотреть под спойлером аналоговые преобразования https://owen.ru/forum/showthread.php...l=1#post397000
    Код:
    function fNTC: Real; // Универсальный датчик типа NTC, необходимо указывать R0 и B25/100
        var_input
            R:real;
            R0:Real;
            B:Real;
        end_var
    
    //PRG
        fNTC:=1/(1/298.15+1/B*fLn(R/R0))-273.15; // вызов функции "fLn"
    end_function
    логарифм
    Код:
    function fLn: Real; //Натуральный логарифм
        var_input 
            X:real;
        end_var
    
    //PRG
    fLn:=0.6931472*fLb(x); //вызов функции "fLb"
    end_function
    двоичный логарифм
    Код:
    function fLb: Real; //Двоичный логарифм
        var_input 
            X:real;
        end_var
        var
            s:real:=0.0;
            a:real:=0.5;
            i:udint;
            b:real;
    
    
        end_var
    
    //PRG
    
    if X>0 then
        if X>=1 then
            b:=1;
            X:=X;
        else
            b:=-1;
            X:=1/X;
        end_if
    
    
        if x>2 then
            s:=udint_to_real( cd32(real_to_udint(x)));
            X:=X/ pow(2,s);
        end_if;
    
        for i:=0 to 16 do
            x:=x*x;
            if x>2 then
                x:=x/2;
                s:=s+a;
            end_if;
            a:=a*0.5;
        end_for
        fLb:=s*b;
    end_if
    
    end_function
    ЗЫ.
    использую 10 макросов Scale из онлайн библиотеки макросов.
    (кусочно-линейная аппроксимация) по 10 точкам https://owen.ru/forum/showthread.php...l=1#post369459

    Код:
    function PLA_ST: real; //    (c) PeterA
        var_input //объявление входных переменных
            x1: real;
            x2: real;
            x3: real;
            x4: real;
            x5: real;
            x6: real;
            x7: real;
            x8: real;
            x9: real;
            x10: real;
            y1: real;
            y2: real;
            y3: real;
            y4: real;
            y5: real;
            y6: real;
            y7: real;
            y8: real;
            y9: real;
            y10: real;
            In: real;
        end_var
        
        var //объявление локальных переменных
         a:udint;    (*Начало интервала поиска*)
         b: udint;    (*Конец интервала поиска*)
         N: udint;    (*Число точек в графике*)
         i: udint;
         x: array [0..9] of real;
         y: array [0..9] of real;
        end_var
        
    N:= 10;
    x[0]:= x1;
    x[1]:= x2;
    x[2]:= x3;
    x[3]:= x4;
    x[4]:= x5;
    x[5]:= x6;
    x[6]:= x7;
    x[7]:= x8;
    x[8]:= x9;
    x[9]:= x10;
    
    y[0]:= y1;
    y[1]:= y2;
    y[2]:= y3;
    y[3]:= y4;
    y[4]:= y5;
    y[5]:= y6;
    y[6]:= y7;
    y[7]:= y8;
    y[8]:= y9;
    y[9]:= y10;
    
    (*Начальные значения интервала поиска*)
    a:=0;
    b:=N-1;
    
    (*Обрезание графика для крайних точек*)
    IF IN<=x[0] THEN
        PLA_ST:=y1;
    ELSIF IN>= x[N-1] THEN
        PLA_ST:= y[N-1];
    (*Теперь можно начать поиск*)
    ELSE
        WHILE (b-a) <> 1 DO (*В конце концов, входной сигнал ТОЧНО попадет между двумя соседними точками X(a) и Х(а+1)*)
        i:=(a+b)/2;    (*Делим интервал поиска пополам*)
        IF IN=x[i+1] THEN    (*Может нам повезло, и мы сразу нашли точку? *)
        a:=i; b:=i+1;            (*Бинго! прекращаем итераций, нечего в пустую молотить :) *)
        (*мимо :( ,тогда посмотрим в какую половину интервала попали*)
        ELSIF IN>x[i] THEN    (*Если входной сигнал больше середины интервала поиска,*)
        a:=i;                     (*то следующий поиск будем делать начиная от середины и до конца массива*)
        ELSE                    (*А если входной сигнал меньше середины интервала поиска,*)
        b:=i;                     (*то следующий поиск будем делать начиная от начала и до середины массива*)
        END_IF
    (*Таким образом на каждой итерации отбрасываем из поиска заведомо ненужную половину значений
    две соседние координаты X(a) и Х(а+1), меду которыми попадает входной сигнал найдем очень быстро
    для 8 точек графика нужно не более 3 итераций
    при 9..16 точек в графике нужно не более 4 итераций
    при 17..32 точек в графике нужно не более 5 итераций
    при 33..64 точек в графике нужно не более 6 итераций
    при 65..128 точек в графике нужно не более 7 итераций
    инфа точная - 100% ;) *)
    END_WHILE;
    (*Теперь самое простое - сделать линейную аппроксимацию по двум точкам ;) *)
    PLA_ST:= y[b] - (x[b] - IN) * (y[b] - y[a]) / (x[b] - x[a]);
    END_IF
       
    end_function
    Последний раз редактировалось petera; 05.08.2023 в 13:25.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  2. #692
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    1,138

    По умолчанию

    Цитата Сообщение от Stranger199017 Посмотреть сообщение
    Здравствуйте. Знающие люди подскажите существует ли макрос с нелинейным масштабированием для пр100. Необходимо подключить датчик температуры NTC 10k. Пока вышел из ситуации использую 10 макросов Scale из онлайн библиотеки макросов.
    В менеджере компонентов есть макрос NTC

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

    По умолчанию

    Кроме специального макроса для его типа датчиков температуры в менеджере компонентов имеется и макрос кусочно-линейной аппроксимации на 10 точек:

    Макрос кусочно-линейной паппроксимации на 10 точек.PNG
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  4. #694

    По умолчанию

    Прошу прощения Может в этой теме этот макрос и есть,но что-то не нашёл...
    А именно "Извлечение квадратного корня из числа с плавающей запятой "
    Если не трудно-то поделитесь.

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

    По умолчанию

    Цитата Сообщение от АРТ.Кар 64 Посмотреть сообщение
    Прошу прощения Может в этой теме этот макрос и есть,но что-то не нашёл...
    А именно "Извлечение квадратного корня"
    Если не трудно-то поделитесь.
    В библиотеке ОЛ есть функция возведения в степень!
    Если возведёте в степень 1/2 или 0,5 на практике это равнозначно извлечению квадратного корня!

    Короче, это много раз обсуждалось(доходило до ругани) и надеюсь теперь понятно, как извлечь кубический корень или четвёртой степени?!
    Последний раз редактировалось Сергей0308; 05.08.2023 в 21:04.
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  6. #696

    По умолчанию

    Если возведёте в степень 1/2 или 0,5 на практике это равнозначно извлечению квадратного корня!


    Ну Ё-моё ,конечно же То ли 6-ой,то ли 7 -ой класс Надо же так лохануться....
    Спасибо за ответ..

  7. #697

    По умолчанию

    Цитата Сообщение от Dimensy Посмотреть сообщение
    В менеджере компонентов есть макрос NTC
    Он для пр200 подходит, к которому можно подключить в режиме измерения сопротивления. У пр100 только 0-10в или 4-20ма

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

    По умолчанию

    Цитата Сообщение от Stranger199017 Посмотреть сообщение
    Он для пр200 подходит, к которому можно подключить в режиме измерения сопротивления. У пр100 только 0-10в или 4-20ма
    Чем же Вас не устраивает ПР200 или датчики температуры, подходящие для вашего прибора: https://owen.ru/product/dtshh5_termo...ignalom_420_ma
    Я уже ранее неоднократно писал, экран всегда пригодится, в смысле, мне трудно представить такой случай, когда экран не может пригодится!
    И, чтобы Вы думали, что это дешёвые датчики, наверно надо ещё и такие предложить: https://owen.ru/product/dtsxx5m_rs
    Если ваше ПР100 с сетевым интерфейсом!
    Последний раз редактировалось Сергей0308; 06.08.2023 в 10:15.
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  9. #699

    По умолчанию

    Я уже ранее неоднократно писал, экран всегда пригодится, в смысле, мне трудно представить такой случай, когда экран не может пригодится!

    Ну уж если говорить про "Экран" на ПР 200-то скорее интерес представляет не "Экран",а кнопки...
    "Монохромная 2-строчка".... ПР 205 в этом отношении будет по-привлекательнее.
    Но если сравнивать ПР 100 и ПР 200-то это "как небо от земли"..
    В том смысле,что всё со временем меняется . И меняется в лучшую сторону.
    Тем более ,что между ПР 100 и ПР 200 есть ещё ПР 102 и ПР 103,которые ни кнопок,ни дисплея не имеют.
    Зато ПР 103 имеет Езернет..."У каждого овоща свой вкус".
    Последний раз редактировалось АРТ.Кар 64; 06.08.2023 в 10:24.

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

    По умолчанию

    Цитата Сообщение от АРТ.Кар 64 Посмотреть сообщение
    Я уже ранее неоднократно писал, экран всегда пригодится, в смысле, мне трудно представить такой случай, когда экран не может пригодится!

    Ну уж если говорить про "Экран" на ПР 200-то скорее интерес представляет не "Экран",а кнопки...
    "Монохромная 2-строчка".... ПР 205 в этом отношении будет по-привлекательнее.
    Но если сравнивать ПР 100 и ПР 200-то это "как небо от земли"..
    В том смысле,что всё со временем меняется . И меняется в лучшую сторону.
    И, чем же кнопки там так уникальны? Если я кнопки к ПР без экрана приделаю(на дискретный вход), это уже не такие кнопки будут?
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

Страница 70 из 83 ПерваяПервая ... 2060686970717280 ... ПоследняяПоследняя

Похожие темы

  1. OWEN Logic v1.7
    от Евгений Сергеевич в разделе Среда программирования OWEN Logic
    Ответов: 404
    Последнее сообщение: 25.08.2020, 15:17
  2. Хотелки в OWEN Logic
    от maks_dmm в разделе Программируемые реле
    Ответов: 4
    Последнее сообщение: 20.02.2016, 13:56
  3. ПО OWEN Logic !!!
    от Ельцов Андрей в разделе Программируемые реле
    Ответов: 3
    Последнее сообщение: 11.10.2011, 16:33
  4. OWEN Logic 1.2.0.14b
    от Ельцов Андрей в разделе Программируемые реле
    Ответов: 40
    Последнее сообщение: 21.02.2011, 14:16
  5. OWEN Logic 1.1.0.11b
    от Ельцов Андрей в разделе Программируемые реле
    Ответов: 58
    Последнее сообщение: 12.10.2010, 21:55

Ваши права

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