Страница 7 из 11 ПерваяПервая ... 56789 ... ПоследняяПоследняя
Показано с 61 по 70 из 110

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

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

    По умолчанию

    Цитата Сообщение от Dimensy Посмотреть сообщение
    Массив нужен для нахождения количества дней с начала года до текущего дня. Поэтому в декабре нам нужен только день месяца, к которому мы прибавляем количество дней в предыдущих месяцах
    Если в массиве задать для месяцев сразу количество дней от начала года до начала месяца (0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334), то код можно было упростить - выбросить цикл
    for i:= 0 to (month -1)
    days:= days + DayInMonth[i]
    end_for

    что-то типа этого
    days:= DayInMonth[month] + BOOL_TO_UDINT(month>2 and is_leap);
    Последний раз редактировалось petera; 25.03.2023 в 19:17.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  2. #62

    По умолчанию

    Вот еще попробовал создать функцию 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.

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

    По умолчанию

    Цитата Сообщение от 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/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  4. #64

    По умолчанию

    Цитата Сообщение от 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. Причина: ошибся в названии функции

  5. #65

    По умолчанию

    Ну вы заморочились)) Зачем вообще тут преобразования ?
    Код:
    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.

  6. #66

    По умолчанию

    Цитата Сообщение от 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
    Да это не преобразование, я там в названии функции ошибся

  7. #67
    Пользователь
    Регистрация
    29.05.2017
    Адрес
    Санкт-Петербург
    Сообщений
    44

    По умолчанию

    Кто знает, как в OwenLogik на ST выглядит экспонента?
    Например:
    Ev:=Eo * exp((a * Tv)/(b + Tv)); - на такую запись ругается

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

    По умолчанию

    Цитата Сообщение от Михаил Троицкий Посмотреть сообщение
    Кто знает, как в OwenLogik на ST выглядит экспонента?
    Например:
    Ev:=Eo * exp((a * Tv)/(b + Tv)); - на такую запись ругается
    Наверно только так
    eksponenta-2.png
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  9. #69

    По умолчанию

    по моему exp(x)= ex
    е=2.718... число Эйлера
    Последний раз редактировалось gmz_001; 06.04.2023 в 14:55.

  10. #70

    По умолчанию

    Добрый день

    Как понимать такое сообщение компилятора ? FB объявлен. Вчера было все нормально при создании FB, а сегодня выскакивает эта ошибка.
    Изображения Изображения
    • Тип файла: jpg 77.jpg (138.1 Кб, Просмотров: 32)
    Последний раз редактировалось Newcomer; 03.11.2023 в 09:39.

Страница 7 из 11 ПерваяПервая ... 56789 ... ПоследняяПоследняя

Похожие темы

  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

Ваши права

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