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

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

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

    По умолчанию

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

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

    По умолчанию

    Цитата Сообщение от 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
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  3. #693

    По умолчанию

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

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

  4. #694

    По умолчанию

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

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

    По умолчанию

    Цитата Сообщение от 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.
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  6. #696

    По умолчанию

    Цитата Сообщение от Dimensy Посмотреть сообщение
    Так менеджер компонентов - это большая помойка, в которой куча устаревших и неоптимизированных макросов. А сейчас выясняется, что есть еще и не рабочие
    Макрос заменили на рабочий. В целом про неактуальность макросов в онлайн базе менеджера компонентов готов к обсуждению, хотел бы услышать ваши замечания и предложения поподробнее, чтобы пользователем стало удобнее и понятнее пользоваться этим инструментом.
    Менеджер по продукту | Owen Logic
    email: soft@owen.ru

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

    По умолчанию

    Цитата Сообщение от Денисов Максим Сергеевич Посмотреть сообщение
    Макрос заменили на рабочий. В целом про неактуальность макросов в онлайн базе менеджера компонентов готов к обсуждению, хотел бы услышать ваши замечания и предложения поподробнее, чтобы пользователем стало удобнее и понятнее пользоваться этим инструментом.
    Замечаний и предложений не так много, но работы хватит:
    1. Перегруппировать макросы, примеры:
    CLOCK_WEEK расположен в Дата и время, а его аналог ClockWeek_ - в Доп. функциях
    CycleTime - в разделе Общие, а его аналог TIME CYCLE - Таймеры и счетчики
    Так же, например B_SEL я бы перенес из раздела Общие в Дискретные преобразователи
    2. Используемый макрос SEL_FLOAT заменить на штатную функцию fSel, а сам макрос можно и убрать из базы
    3. В макросах, которые светятся желтым заменить связи на линию задержки
    4. Ну и, я бы все макросы температурных датчиков вынес в отдельную группу

  8. #698
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,669

    По умолчанию

    Денисов Максим Сергеевич у вас там есть макрос, который с битами работает с 1-ого бита вместо 0-ого. Со слов Ревака Юрия макрос делался для ТРМ1032(33) или около. Вот зачем подобные макросы без проверки попадают в Logic ? я понимаю, что какие-то полезны, но они ведь должны удовлетворять логике работы непосредственно для ОЛ, а не пиленные под какие-то там ТРМы...

  9. #699

    По умолчанию

    Цитата Сообщение от Сергей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
    Изображения Изображения

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

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    Я говорил про конкретную задачу, что её проще на 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
    Вот смотрю эту картинку:

    MAX_4.PNG

    Мне всё понятно!

    А смотрю вашу писанину, мне вообще ничего не понятно, зачем Вы пишите, то что пишите, в смысле, что это проще? Это же не соответствует действительности!
    Я всё прекрасно понимаю, что Вы выражаете своё мнение или для Вас проще, тогда это нужно уточнять! Боюсь со мной многие согласятся!

    Вот мой вариант с разделителем между номерами входов в виде нолика и не переусердствуете с количеством максимумов, чтобы переменная(тип данных) не переполнялась.
    MAX_4.owl
    И, вашу нижнюю(на картинке) функцию(с номерами максимумов) не нашёл, Вы, наверно забыли выложить.
    Последний раз редактировалось Сергей0308; 27.08.2022 в 00:17.
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

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

Похожие темы

  1. Универсальные макросы для OWEN Logic
    от rovki в разделе Среда программирования OWEN Logic
    Ответов: 827
    Последнее сообщение: 22.12.2023, 13:20
  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, 16:33
  5. OWEN Logic 1.2.0.14b
    от Ельцов Андрей в разделе Программируемые реле
    Ответов: 40
    Последнее сообщение: 21.02.2011, 14:16

Ваши права

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