Страница 5 из 15 ПерваяПервая ... 34567 ... ПоследняяПоследняя
Показано с 41 по 50 из 155

Тема: ST функции OWEN Logic

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,054

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    проверить просто, написать одинаковый "тяжелый" код в обеих ветках условия ..
    Сложно как-то.
    Это же, но по бразильской системе.
    Код:
    function jopa: bool;
        var_input
            in : bool;
        end_var
    
        while in do
           ; //максимально тяжелый код
        end_while
        jopa := not in; //инверсия для показать проход функции
    end_function
    
    
    function func: bool;
        var_input
           in : bool;
        end_var
    
        if in then
          func := jopa(true);
        else
          func := jopa(false);
        end_if
    end_function
    func на холст и прилепить вход и выход
    Кто докажет ОБА вызова jop'ы при func(false) ?

  2. #2

    По умолчанию

    Попробовал...
    1.При запуске эмуляции все нормально.
    2.При подаче на вход - бесконечный цикл.
    Что говорит о том, что вроде как выполняется одна функция????
    Но это не точно
    Я заменил "тяжелый код"

    Код:
    // while in do
        //   ; //максимально тяжелый код
       // end_while
       for i := 0 to 1000000 do
           ;
       end_for
    И вот, бесконечный цикл уже на этапе запуска симуляции и она уже не запускается. Это проверка симулятора или как то осуществляется пробег по всем функциям? Хотя лоджик интерпретатор и выполняет код построчно? Не, ну их домыслы, факты на скринах.f1.jpgf11.jpgf111.jpg

  3. #3
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,054

    По умолчанию

    Глубины мысли с for'ом не понял. Продолжаем лепить про исполнение всех веток if ?

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

    По умолчанию

    после прочтения статьи про алгоритмы быстрого умножения написал вариант, проверил, все работает
    Вложения Вложения
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  5. #5

    По умолчанию

    Судя по коду 12 месяц и не нужен, тогда и массив надо сделать с 0 до 11.

  6. #6

    По умолчанию

    Вот еще попробовал создать функцию fBOOL_INT на ST - аналог макроса BOOL_INT
    Можно конечно еще причесать через FOR...
    Код:
    function fBOOL_INT: udint; //имя функции и тип данных выхода
        var_input //объявление входных переменных
            IN01 : bool; //входная переменная с типом данных bool
            IN02 : bool; //входная переменная с типом данных bool
            IN03 : bool; //входная переменная с типом данных bool
            IN04 : bool; //входная переменная с типом данных bool
            IN05 : bool; //входная переменная с типом данных bool
            IN06 : bool; //входная переменная с типом данных bool
            IN07 : bool; //входная переменная с типом данных bool
            IN08 : bool; //входная переменная с типом данных bool
        end_var
        
        var //объявление локальных переменных
            sel1 : udint; //локальная переменная с типом данных udint
            sel2 : udint; //локальная переменная с типом данных udint
            sel3 : udint; //локальная переменная с типом данных udint
            sel4 : udint; //локальная переменная с типом данных udint
            sel5 : udint; //локальная переменная с типом данных udint
            sel6 : udint; //локальная переменная с типом данных udint
            sel7 : udint; //локальная переменная с типом данных udint
            sel8 : udint; //локальная переменная с типом данных udint
        end_var
        
        if IN01 then sel1 :=1; else sel1 :=0; end_if
        
        if IN02 then sel2 :=2; else sel2 :=0; end_if
        
        if IN03 then sel3 :=4; else sel3 :=0; end_if
        
        if IN04 then sel4 :=8; else sel4 :=0; end_if
        
        if IN05 then sel5 :=16; else sel5 :=0; end_if
        
        if IN06 then sel6 :=32; else sel6 :=0; end_if
        
        if IN07 then sel7 :=64; else sel7 :=0; end_if
        
        if IN08 then sel8 :=128; else sel8 :=0; end_if
            
        fBOOL_INT := sel1+sel2+sel3+sel4+sel5+sel6+sel7+sel8;
        
    end_function
    Последний раз редактировалось Pvalp; 30.03.2023 в 15:34.

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

    По умолчанию

    Цитата Сообщение от Pvalp Посмотреть сообщение
    Вот еще попробовал создать функцию fBOOL_INT на ST - аналог макроса BOOL_INT
    Можно конечно еще причесать через FOR...
    Код:
    function fBOOL_INT: udint; //имя функции и тип данных выхода
        var_input //объявление входных переменных
            IN01 : bool; //входная переменная с типом данных bool
            IN02 : bool; //входная переменная с типом данных bool
            IN03 : bool; //входная переменная с типом данных bool
            IN04 : bool; //входная переменная с типом данных bool
            IN05 : bool; //входная переменная с типом данных bool
            IN06 : bool; //входная переменная с типом данных bool
            IN07 : bool; //входная переменная с типом данных bool
            IN08 : bool; //входная переменная с типом данных bool
        end_var
        
        var //объявление локальных переменных
            sel1 : udint; //локальная переменная с типом данных udint
            sel2 : udint; //локальная переменная с типом данных udint
            sel3 : udint; //локальная переменная с типом данных udint
            sel4 : udint; //локальная переменная с типом данных udint
            sel5 : udint; //локальная переменная с типом данных udint
            sel6 : udint; //локальная переменная с типом данных udint
            sel7 : udint; //локальная переменная с типом данных udint
            sel8 : udint; //локальная переменная с типом данных udint
        end_var
        
        if IN01 then sel1 :=1; else sel1 :=0; end_if
        
        if IN02 then sel2 :=2; else sel2 :=0; end_if
        
        if IN03 then sel3 :=4; else sel3 :=0; end_if
        
        if IN04 then sel4 :=8; else sel4 :=0; end_if
        
        if IN05 then sel5 :=16; else sel5 :=0; end_if
        
        if IN06 then sel6 :=32; else sel6 :=0; end_if
        
        if IN07 then sel7 :=64; else sel7 :=0; end_if
        
        if IN08 then sel8 :=128; else sel8 :=0; end_if
            
        fBOOL_INT := sel1+sel2+sel3+sel4+sel5+sel6+sel7+sel8;
        
    end_function
    Это делается так
    Код:
    function BYTE_OF_BIT: udint; //
    //    (c) PeterA для ворума ОВЕН
        var_input //объявление входных переменных
        B0:BOOL;
        B1:BOOL;
        B2:BOOL;
        B3:BOOL;
        B4:BOOL;
        B5:BOOL;
        B6:BOOL;
        B7:BOOL;
        end_var
        
        BYTE_OF_BIT:= SHL(SHL(SHL(SHL(SHL(SHL(SHL(bool_to_udint(B7),1) + bool_to_udint(B6),1) 
                            + bool_to_udint(B5),1) + bool_to_udint(B4),1) + bool_to_udint(B3),1) 
                            + bool_to_udint(B2),1) + bool_to_udint(B1),1) + bool_to_udint(B0);
    end_function
    Последний раз редактировалось petera; 30.03.2023 в 16:00.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  8. #8

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Это делается так
    Код:
    function BYTE_OF_BIT: udint; //
    //    (c) PeterA для ворума ОВЕН
        var_input //объявление входных переменных
        B0:BOOL;
        B1:BOOL;
        B2:BOOL;
        B3:BOOL;
        B4:BOOL;
        B5:BOOL;
        B6:BOOL;
        B7:BOOL;
        end_var
        
        BYTE_OF_BIT:= SHL(SHL(SHL(SHL(SHL(SHL(SHL(bool_to_udint(B7),1) + bool_to_udint(B6),1) 
                            + bool_to_udint(B5),1) + bool_to_udint(B4),1) + bool_to_udint(B3),1) 
                            + bool_to_udint(B2),1) + bool_to_udint(B1),1) + bool_to_udint(B0);
    end_function
    Вариант:
    Код:
    ...
    
    
    BYTE_OF_BIT. 0 := B0 ; BYTE_OF_BIT. 1 := B1 ; BYTE_OF_BIT. 2 := B2 ; BYTE_OF_BIT. 3 := B3 ; BYTE_OF_BIT. 4 := B4 ; BYTE_OF_BIT. 5 := B5 ; BYTE_OF_BIT. 6 := B6 ; BYTE_OF_BIT. 7 := B7 ;
    end_function
    Последний раз редактировалось 1exan; 30.03.2023 в 16:33. Причина: ошибся в названии функции

  9. #9

    По умолчанию

    Ну вы заморочились)) Зачем вообще тут преобразования ?
    Код:
    function B8_M:  udint; ;//имя функции и тип данных выхода
        var_input //объявление входных переменных
            b0,b1,b2,b3,b4,b5,b6,b7: bool; //входная переменная с типом данных bool
        end_var
        
           B8_M.0:=b0; B8_M.1:=b1; B8_M.2:=b2; B8_M.3:=b3; B8_M.4:=b4; B8_M.5:=b5; B8_M.6:=b6; B8_M.7:=b7;
       
    end_function
    Последний раз редактировалось kondor3000; 30.03.2023 в 16:44.

  10. #10

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Ну вы заморочились)) Зачем вообще тут IF и преобразования ?
    Код:
    function B8_M:  udint; ;//имя функции и тип данных выхода
        var_input //объявление входных переменных
            b0,b1,b2,b3,b4,b5,b6,b7: bool; //входная переменная с типом данных bool
        end_var
        var //объявление локальных переменных
        end_var
        
           B8_M.0 :=b0; B8_M.1 :=b1; B8_M.2 :=b2; B8_M.3 :=b3; B8_M.4 :=b4; B8_M.5 :=b5; B8_M.6 :=b6; B8_M.7 :=b7;
       
    end_function
    Да это не преобразование, я там в названии функции ошибся

Страница 5 из 15 ПерваяПервая ... 34567 ... ПоследняяПоследняя

Похожие темы

  1. Групповые запросы в Owen Logic. Что хотите видеть в этой функции?
    от EvgenyR в разделе Программируемые реле
    Ответов: 37
    Последнее сообщение: 05.07.2023, 15:26
  2. Owen Logic 2.1 нет экспорта устройства в Owen Cloud.
    от Григори в разделе Среда программирования OWEN Logic
    Ответов: 4
    Последнее сообщение: 12.10.2022, 19:33
  3. Добавление аварийных ситуаций в Owen Logic на ПР200 для отображения в Owen Cloud.
    от Григори в разделе Среда программирования OWEN Logic
    Ответов: 6
    Последнее сообщение: 07.07.2022, 11:09
  4. OWEN Logic v1.7
    от Евгений Сергеевич в разделе Программируемые реле
    Ответов: 401
    Последнее сообщение: 28.07.2016, 19:46
  5. Тригонометрические функции OWEN Logic
    от POMAXA в разделе Среда программирования OWEN Logic
    Ответов: 36
    Последнее сообщение: 13.02.2016, 12:11

Ваши права

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