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

Тема: 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

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

    По умолчанию

    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 из 699 ПерваяПервая ... 111161201209210211212213221261311 ... ПоследняяПоследняя

Похожие темы

  1. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе Панели оператора (HMI)
    Ответов: 3177
    Последнее сообщение: Вчера, 12:47
  2. Панели оператора ИП320. Вопросы и ответы
    от automat в разделе Панели оператора (HMI)
    Ответов: 822
    Последнее сообщение: 20.11.2023, 17:48
  3. ИПП120. Вопросы и ответы
    от Р.Александр в разделе Программируемые реле
    Ответов: 245
    Последнее сообщение: 02.10.2022, 11:34
  4. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  5. Панели оператора СП270. Вопросы и ответы
    от Давидюк в разделе Панели оператора (HMI)
    Ответов: 930
    Последнее сообщение: 15.05.2017, 17:12

Ваши права

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