Страница 211 из 857 ПерваяПервая ... 111161201209210211212213221261311711 ... ПоследняяПоследняя
Показано с 2,101 по 2,110 из 8561

Тема: CODESYS V3.5. Вопросы и ответы

  1. #2101

    По умолчанию

    CODESYS 3.5 SP11 Patch5
    на чём собрать переключатель аналоговых сигналов. SEL и MUX_R2 из OSCAT не работают.
    1.jpg2.jpg

  2. #2102

  3. #2103

    По умолчанию

    Доброго Вам суток форумчане! Кто подскажет как использовать таймеры, счетчки, блинки в методах класса! Использую псевдо-ООП при построении приложения на языке ST!

  4. #2104

    По умолчанию

    Цитата Сообщение от Umkamaks Посмотреть сообщение
    Доброго Вам суток форумчане! Кто подскажет как использовать таймеры, счетчки, блинки в методах класса! Использую псевдо-ООП при построении приложения на языке ST!
    Добрый день!
    Чтобы внести ясность, при использовании таймера невозможно "затормозить" выполнение POU, функции, метода до тех пор пока не сработает таймер.

    В остальных случаях используйте такой подход:
    1.1) В теле ФБ объявляете экземпляр таймера (счетчика, триггера и т.д.)
    Код:
    FUNCTION_BLOCK POU
    VAR
    	m_fb_Delay			: Standard.TON;
    END_VAR
    1.2) Добавляете метод:
    Код:
    (*
    Возвращает TRUE, когда истекла пауза в 30 секунд
    *)
    METHOD isDelayPassed : BOOL
    VAR_INPUT
    END_VAR
    в котором, собственно и вызываете таймер, например так:
    Код:
    m_fb_Delay.IN := TRUE;
    m_fb_Delay.PT := T#30S;
    m_fb_Delay();
    isDelayPassed := m_fb_Delay.Q;
    Вариант №2:
    2.1) Объявляете таймер (счетчик, триггер и т.д.) непосредственно в методе
    между ключевыми словами VAR_INST и END_VAR
    Код:
    (*
    Возвращает TRUE, когда истекла пауза в 30 секунд
    *)
    METHOD isDelayPassed : BOOL
    VAR_INST
    	_fb_Delay			: Standard.TON;
    END_VAR
    VAR_INST указывает, что переменная относится не к методу, а к экземпляру класса и ее значения будут сохраняться между вызовами.

    2.2) Работаете с таймером так же, как в предыдущем варианте
    Код:
    _fb_Delay.IN := TRUE;
    _fb_Delay.PT := T#30S;
    _fb_Delay();
    isDelayPassed := _fb_Delay.Q;
    Возможен еще вариант №3, в котором таймер (счетчик, триггер и т.д.) вызывается непосредственно в теле ФБ, а метод только получает доступ к переменным, например так:
    3.1) В теле ФБ объявляете экземпляр таймера (счетчика, триггера и т.д.)
    Код:
    FUNCTION_BLOCK POU
    VAR
    	m_fb_Delay			: Standard.TON;
    END_VAR
    Вызываете таймер тут же в теле:
    Код:
    m_fb_Delay.IN := TRUE;
    m_fb_Delay.PT := T#30S;
    m_fb_Delay();
    3.2) А в методе:
    Код:
    (*
    Возвращает TRUE, когда истекла пауза в 30 секунд
    *)
    METHOD isDelayPassed : BOOL
    VAR_INPUT
    END_VAR
    просто узнаете, сработал таймер или нет
    Код:
    isDelayPassed := m_fb_Delay.Q;
    Выбор конкретного варианта будет зависеть от задачи.
    Последний раз редактировалось Осинский Алексей; 02.07.2019 в 09:55.
    OSCAT.ru читать стандарты и статьи по автоматизации на русском без регистрации и СМС

  5. #2105

    По умолчанию

    Цитата Сообщение от Umkamaks Посмотреть сообщение
    Использую псевдо-ООП
    а почему "псевдо"?
    В CODESYS полноценное ООП с инкапсуляцией, полиморфизмом, наследованием.
    OSCAT.ru читать стандарты и статьи по автоматизации на русском без регистрации и СМС

  6. #2106

    По умолчанию

    спасибо Вам большое!

  7. #2107

    По умолчанию

    CODESYS 3.5 SP11 Patch5
    на чём собрать переключатель аналоговых сигналов. SEL и MUX_R2 из OSCAT не работают.
    проект
    Вложения Вложения

  8. #2108
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,633

    По умолчанию

    Цитата Сообщение от wadim625 Посмотреть сообщение
    CODESYS 3.5 SP11 Patch5
    на чём собрать переключатель аналоговых сигналов. SEL и MUX_R2 из OSCAT не работают.
    проект
    Замените MUX_R2 на OSCAT_BASIC.MUX_R2

  9. #2109
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    1,294

    По умолчанию

    wadim625
    Можно самостоятельно сделать ФБ
    Код:
    VAR_INPUT
                IN1:REAL; (*вход_1*)
                IN2:REAL; (*вход_2*)
                A:BOOL;   (*переключатель*)
    END_VAR
    VAR_OUTPUT
               MUX_R2:REAL; (*выход*)
    END_VAR
    -----------
    IF A THEN
                MUX_R2:=IN2; (*Если А=TRUE, то выход=вход_2*)
           ELSE 
                MUX_R2:=IN1;(*Иначе выход=вход_1*)
    END_IF;
    Последний раз редактировалось Sulfur; 02.07.2019 в 10:58.

  10. #2110

    По умолчанию

    Спасибо! Нужно было полностью писать название функционального блока

Страница 211 из 857 ПерваяПервая ... 111161201209210211212213221261311711 ... ПоследняяПоследняя

Похожие темы

  1. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе Панели оператора (HMI)
    Ответов: 4044
    Последнее сообщение: 17.12.2025, 10:15
  2. Панели оператора ИП320. Вопросы и ответы
    от automat в разделе Панели оператора (HMI)
    Ответов: 849
    Последнее сообщение: 16.11.2025, 08:58
  3. ИПП120. Вопросы и ответы
    от Р.Александр в разделе Программируемые реле
    Ответов: 273
    Последнее сообщение: 08.09.2025, 13:21
  4. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  5. Панели оператора СП270. Вопросы и ответы
    от Давидюк в разделе Панели оператора (HMI)
    Ответов: 930
    Последнее сообщение: 15.05.2017, 17:12

Ваши права

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