Страница 56 из 77 ПерваяПервая ... 646545556575866 ... ПоследняяПоследняя
Показано с 551 по 560 из 933

Тема: Макросы в онлайн базе OWEN Logic

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

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

    По умолчанию

    Мой чем не устраивает, Вам шашечки или ехать?
    Вот даже макрос состряпал, находит большее из 16 и номер входа показывает, вроде даже превосходит ваши хотелки?!
    Так он ещё и на порядок проще вашего "монстра", можете же Вы находить худшее из худшего к тому же и неработающее!
    Короче, проверяйте:

    MAX_2.PNG

    MAX_2.owl

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

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

    По умолчанию

    MAX10 в базе существует в двух версиях
    собственно MAX10.tpl
    и MAX10_old.tpl

    MAX10_old - работает, а в новом MAX10 что-то пошло не так!
    Вложения Вложения
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  3. #3

    По умолчанию

    Функция:

    function Max: udint;
    var_input
    IN1,IN2,IN3,IN4,IN5,IN6,IN7,IN8 : udint;
    end_var

    var
    num : udint := 1;
    end_var

    Max := IN1;
    num := 1;

    if IN2 > Max then Max := IN2; num := 2; end_if;
    if IN3 > Max then Max := IN3; num := 3; end_if;
    if IN4 > Max then Max := IN4; num := 4; end_if;
    if IN5 > Max then Max := IN5; num := 5; end_if;
    if IN6 > Max then Max := IN6; num := 6; end_if;
    if IN7 > Max then Max := IN7; num := 7; end_if;
    if IN8 > Max then Max := IN8; num := 8; end_if;

    Max.28 := num.0;
    Max.29 := num.1;
    Max.30 := num.2;
    Max.31 := num.3;

    end_function
    Изображения Изображения

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

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    Функция:

    function Max: udint;
    var_input
    IN1,IN2,IN3,IN4,IN5,IN6,IN7,IN8 : udint;
    end_var

    var
    num : udint := 1;
    end_var

    Max := IN1;
    num := 1;

    if IN2 > Max then Max := IN2; num := 2; end_if;
    if IN3 > Max then Max := IN3; num := 3; end_if;
    if IN4 > Max then Max := IN4; num := 4; end_if;
    if IN5 > Max then Max := IN5; num := 5; end_if;
    if IN6 > Max then Max := IN6; num := 6; end_if;
    if IN7 > Max then Max := IN7; num := 7; end_if;
    if IN8 > Max then Max := IN8; num := 8; end_if;

    Max.28 := num.0;
    Max.29 := num.1;
    Max.30 := num.2;
    Max.31 := num.3;

    end_function
    и как решается проблема двух максимумов?
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  5. #5

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    и как решается проблема двух максимумов?
    Это не столько проблема, сколько вопрос необходимой функциональности. Если о наличии более одного максимума нужно сигнализировать, то нужен ещё один выход. Если нужен другой приоритет входов, то нужно сделать соответствующий порядок их обхода.

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

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    Это не столько проблема, сколько вопрос необходимой функциональности. Если о наличии более одного максимума нужно сигнализировать, то нужен ещё один выход. Если нужен другой приоритет входов, то нужно сделать соответствующий порядок их обхода.
    Если Вы говорите, что на ST это просто, сделайте так, что бы при наличии нескольких входов с максимальными значениями их номера выводились одной строкой начиная с самого маленького порядкового номера входа, например, если все входа имеют одинаковое значение, строка будет так выглядеть: "12345678", тем более для восьми значений(одноразрядных) хватает диапазона типа данных(DINT), понятно объяснил?

    Примерно как-то так:

    MAX_3.PNG

    MAX_3_2.PNG

    MAX_3_3.PNG

    MAX_5.owl

    Я к тому, что Вы сами это сказали!

    Могу и в качестве разделителя нолик поставить:

    MAX_3_4.PNG

    MAX_3_5.PNG

    Только тогда меньшее количество входов можно будет записать до переполнения.

    Вот, немного текущий макрос поправил(были небольшие косяки):

    MAX_6.owle
    Последний раз редактировалось Сергей0308; 25.12.2022 в 12:40.
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  7. #7

    По умолчанию

    Цитата Сообщение от Сергей0308 Посмотреть сообщение
    Если Вы говорите, что на ST это просто, сделайте так, что бы при наличии нескольких входов с максимальными значениями их номера выводились одной строкой начиная с самого маленького порядкового номера входа, например, если все входа имеют одинаковое значение, строка будет так выглядеть: "12345678", тем более для восьми значений(одноразрядных) хватает диапазона типа данных(DINT), понятно объяснил?

    Примерно как-то так:
    ...
    Я к тому, что Вы сами это сказали!

    Могу и в качестве разделителя нолик поставить:
    ...
    Только тогда меньшее количество входов можно будет записать до переполнения.
    Я говорил про конкретную задачу, что её проще на ST сделать
    А код для этой виртуальной задачи такой (в одной функции выводится значение, а в другой - счётчик номера входов):

    Код:
    function Max: udint;
       var_input
            IN1,IN2,IN3,IN4,IN5,IN6,IN7,IN8 : udint; 
       end_var
        
       var
    
            Count : udint := 1;
       end_var
       
       Max := IN1;
       Count := 1;
        
       if IN2 > Max then Max := IN2; Count := 2;
       elsif  IN2 = Max then Count:=Count*10+2; 
       end_if;
       
       if IN3 > Max then Max := IN3; Count := 3;
       elsif  IN3 = Max then Count:=Count*10+3; 
       end_if;
    
       if IN4 > Max then Max := IN4; Count := 4;
       elsif  IN4 = Max then Count:=Count*10+4; 
       end_if;
       
       if IN5 > Max then Max := IN5; Count := 5;
       elsif  IN5 = Max then Count:=Count*10+5; 
       end_if;
    
       if IN6 > Max then Max := IN6; Count := 6;
       elsif  IN6 = Max then Count:=Count*10+6; 
       end_if;
       
       if IN7 > Max then Max := IN7; Count := 7;
       elsif  IN7 = Max then Count:=Count*10+7; 
       end_if;
    
       if IN8 > Max then Max := IN8; Count := 8;
       elsif  IN8 = Max then Count:=Count*10+8; 
       end_if;
       
    
    end_function
    Изображения Изображения

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

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    Функция:

    function Max: udint;
    var_input
    IN1,IN2,IN3,IN4,IN5,IN6,IN7,IN8 : udint;
    end_var

    var
    num : udint := 1;
    end_var

    Max := IN1;
    num := 1;

    if IN2 > Max then Max := IN2; num := 2; end_if;
    if IN3 > Max then Max := IN3; num := 3; end_if;
    if IN4 > Max then Max := IN4; num := 4; end_if;
    if IN5 > Max then Max := IN5; num := 5; end_if;
    if IN6 > Max then Max := IN6; num := 6; end_if;
    if IN7 > Max then Max := IN7; num := 7; end_if;
    if IN8 > Max then Max := IN8; num := 8; end_if;

    Max.28 := num.0;
    Max.29 := num.1;
    Max.30 := num.2;
    Max.31 := num.3;

    end_function
    Сложновато, можно так вырезать метку(4 старших бита):

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

  9. #9

    По умолчанию

    Цитата Сообщение от Сергей0308 Посмотреть сообщение
    Сложновато, можно так вырезать метку(4 старших бита):

    Вырезать метку(4 старших бита).PNG
    Да, можно и так. Сделал что первое в голову пришло

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

    По умолчанию

    А как надо(в идеале), чтобы на соответствующем выходе по очереди появлялись номера входов с наибольшими значениями, если их более одного?
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

Страница 56 из 77 ПерваяПервая ... 646545556575866 ... ПоследняяПоследняя

Похожие темы

  1. Универсальные макросы для OWEN Logic
    от rovki в разделе Среда программирования OWEN Logic
    Ответов: 920
    Последнее сообщение: 01.12.2025, 11:45
  2. OWEN Logic v1.7
    от Евгений Сергеевич в разделе Среда программирования OWEN Logic
    Ответов: 404
    Последнее сообщение: 25.08.2020, 15:17
  3. OWEN Logic v1.7
    от Евгений Сергеевич в разделе Программируемые реле
    Ответов: 401
    Последнее сообщение: 28.07.2016, 19:46
  4. ПО OWEN Logic !!!
    от Ельцов Андрей в разделе Программируемые реле
    Ответов: 3
    Последнее сообщение: 11.10.2011, 15:33
  5. OWEN Logic 1.2.0.14b
    от Ельцов Андрей в разделе Программируемые реле
    Ответов: 40
    Последнее сообщение: 21.02.2011, 14:16

Ваши права

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