Страница 10 из 15 ПерваяПервая ... 89101112 ... ПоследняяПоследняя
Показано с 91 по 100 из 155

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

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Цитата Сообщение от ElectroMan Посмотреть сообщение
    Добрый день. Подскажите пожалуйста возможно ли внутри ФБ объявить входную переменную типа TIME? При попытке объявления переменной такого типа возникает ошибка, что данный тип не поддерживается в сигнатурах функций и функциональных блоков. И от сюда вопрос как же воспользоваться функция GET_TIME возвращающее значение типа TIME? ПР102-24.2416.03 v.2.61.
    Перевести в ms:
    Код:
       time_to_udint(get_time());

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

    По умолчанию

    Цитата Сообщение от ElectroMan Посмотреть сообщение
    Добрый день. Подскажите пожалуйста возможно ли внутри ФБ объявить входную переменную типа TIME? При попытке объявления переменной такого типа возникает ошибка, что данный тип не поддерживается в сигнатурах функций и функциональных блоков. И от сюда вопрос как же воспользоваться функция GET_TIME возвращающее значение типа TIME? ПР102-24.2416.03 v.2.61.
    Преобразовать, в другой тип, например time_to_udint(GET_TIME());

    Например в таймере, уставку PT пришлось объявлять не в формате TIME
    Код:
    FUNCTION_BLOCK TON_P //(c) PeterA
    VAR_INPUT
        IN: BOOL;
        P: BOOL;
        PT: UDINT;
    END_VAR
    VAR_OUTPUT
        Q: BOOL;
        ET: UDINT;
    END_VAR
    VAR
        clk: BOOL;
        StartTime: UDINT;
        tx: UDINT;
    END_VAR
    
    tx:= time_to_udint(GET_TIME());
    IF P THEN
        StartTime:= tx - ET;
    END_IF
    IF IN AND NOT clk THEN
        StartTime:= tx;
        clk:= TRUE;
    ELSIF NOT IN THEN
        clk:= FALSE;
        Q:= FALSE;
        ET:= 0;
    END_IF
    IF clk AND NOT Q THEN
    //ET:= MIN(PT, tx - StartTime); функция MIN не поддерживается!
    //лепим ее сами
        IF PT > (tx - StartTime) THEN
            ET:= tx - StartTime;
        ELSE
            ET:= PT;
        END_IF       
    Q:= ET = PT AND IN;
    END_IF
    
    end_function_block
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  3. #3

    По умолчанию

    Цитата Сообщение от ElectroMan Посмотреть сообщение
    Добрый день. Подскажите пожалуйста возможно ли внутри ФБ объявить входную переменную типа TIME? При попытке объявления переменной такого типа возникает ошибка, что данный тип не поддерживается в сигнатурах функций и функциональных блоков. И от сюда вопрос как же воспользоваться функция GET_TIME возвращающее значение типа TIME? ПР102-24.2416.03 v.2.61.
    Добрый день. Запрет распространяется на входы и выходы функций и ФБ (var_input, var_output). Вы можете объявить локальные переменные типа TIME (var), а затем, если требуется передавать значение на выход или задавать с входа, как верно подсказывают коллеги, использовать преобразования типов udint_to_time и time_to_udint.
    Инженер по продукту | ПР и Owen Logic
    email: k.korolev@owen.ru

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

    По умолчанию

    Цитата Сообщение от Ollema Посмотреть сообщение
    можно и впихнуть, и выпихнуть
    Уверены? //для 2.6.347

    Ну пихните
    Код:
    function f: udint; 
        var_input 
            i : udint; 
        end_var
        i.25 := false; //даже не 31 и даже не выпихивая
    end_function

  5. #5
    Пользователь
    Регистрация
    15.03.2018
    Адрес
    Ижевск
    Сообщений
    978

    По умолчанию

    Тренируйтесь на моем примере (версия 2.6.345):

    Test.owle

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

    По умолчанию

    Цитата Сообщение от Ollema Посмотреть сообщение
    Тренируйтесь на моем примере (версия 2.6.345):
    А что мы должны тренировать?

  7. #7
    Пользователь
    Регистрация
    15.03.2018
    Адрес
    Ижевск
    Сообщений
    978

    По умолчанию

    Цитата Сообщение от Dimensy Посмотреть сообщение
    А что мы должны тренировать?
    Запутались кони, люди... Давайте сначала. Речь была про:

    Цитата Сообщение от Валенок Посмотреть сообщение
    А чего в функцию нельзя пихнуть целочисленное 3млрд?
    Вот код ФУНКЦИИ:

    function function1: udint; //имя функции и тип данных выхода
    var_input //объявление входных переменных
    IN : udint;
    end_var

    function1 := IN;
    end_function

    Вот результат ввода и вывода 3 млрд.:

    2024-03-31 09 00 40.png

    Я в полном объеме подтвердил свое высказывание?

    Цитата Сообщение от Ollema Посмотреть сообщение
    можно и впихнуть, и выпихнуть

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

    По умолчанию

    Цитата Сообщение от Ollema Посмотреть сообщение
    ..
    ... далее мне по ТЗ потребовались некие действия где одно из них
    Код:
    IN.2 := false; //я ж в курсе про, а тута 2 (два), чего парится то?
    и ..... всё встало.
    Я в полном объеме подтвердил свое высказывание что невпихуемо?

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

    По умолчанию

    Тренируйтесь на моем примере (версия 2.6.345):
    Код:
        
    IN.25 := true; //ну тренируйтесь
    Q.25:= IN.25;
    Q.26:= false;
    Q.29:= true;
    2.6.347.0
    345 даже в архиве на сайте нет

  10. #10
    Пользователь
    Регистрация
    15.03.2018
    Адрес
    Ижевск
    Сообщений
    978

    По умолчанию

    Давайте последовательно: Мой код работает? Впихуемо? Выпихуемо? Я прав?

    А то, что у вас там какие то еще требования появились, про их реализацию я ничего не говорил. Считаю, что на изначальный тезис я ответил правдиво.
    Блин, сперва спрашивает про 3 млрд., а потом туда же приплетает какие то записи во второй бит и спрашивает уверен ли я в своих высказываниях... Что за билиберда в голове...

    Да, косяк в лоджике имеется. При изменении любого бита в 32-разрядном числе, все ломается.
    Последний раз редактировалось Ollema; 31.03.2024 в 11:56.

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

Похожие темы

  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

Ваши права

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