CODESYS 3.5 SP11 Patch5
на чём собрать переключатель аналоговых сигналов. SEL и MUX_R2 из OSCAT не работают.
Вложение 43399Вложение 43400
Вид для печати
CODESYS 3.5 SP11 Patch5
на чём собрать переключатель аналоговых сигналов. SEL и MUX_R2 из OSCAT не работают.
Вложение 43399Вложение 43400
Проект выложите, пожалуйста.
Доброго Вам суток форумчане! Кто подскажет как использовать таймеры, счетчки, блинки в методах класса! Использую псевдо-ООП при построении приложения на языке ST!
Добрый день!
Чтобы внести ясность, при использовании таймера невозможно "затормозить" выполнение POU, функции, метода до тех пор пока не сработает таймер.
В остальных случаях используйте такой подход:
1.1) В теле ФБ объявляете экземпляр таймера (счетчика, триггера и т.д.)
1.2) Добавляете метод:Код:FUNCTION_BLOCK POU
VAR
m_fb_Delay : Standard.TON;
END_VAR
в котором, собственно и вызываете таймер, например так:Код:(*
Возвращает TRUE, когда истекла пауза в 30 секунд
*)
METHOD isDelayPassed : BOOL
VAR_INPUT
END_VAR
Вариант №2:Код:m_fb_Delay.IN := TRUE;
m_fb_Delay.PT := T#30S;
m_fb_Delay();
isDelayPassed := m_fb_Delay.Q;
2.1) Объявляете таймер (счетчик, триггер и т.д.) непосредственно в методе
между ключевыми словами VAR_INST и END_VAR
VAR_INST указывает, что переменная относится не к методу, а к экземпляру класса и ее значения будут сохраняться между вызовами.Код:(*
Возвращает TRUE, когда истекла пауза в 30 секунд
*)
METHOD isDelayPassed : BOOL
VAR_INST
_fb_Delay : Standard.TON;
END_VAR
2.2) Работаете с таймером так же, как в предыдущем варианте
Возможен еще вариант №3, в котором таймер (счетчик, триггер и т.д.) вызывается непосредственно в теле ФБ, а метод только получает доступ к переменным, например так:Код:_fb_Delay.IN := TRUE;
_fb_Delay.PT := T#30S;
_fb_Delay();
isDelayPassed := _fb_Delay.Q;
3.1) В теле ФБ объявляете экземпляр таймера (счетчика, триггера и т.д.)
Вызываете таймер тут же в теле:Код:FUNCTION_BLOCK POU
VAR
m_fb_Delay : Standard.TON;
END_VAR
3.2) А в методе:Код:m_fb_Delay.IN := TRUE;
m_fb_Delay.PT := T#30S;
m_fb_Delay();
просто узнаете, сработал таймер или нетКод:(*
Возвращает TRUE, когда истекла пауза в 30 секунд
*)
METHOD isDelayPassed : BOOL
VAR_INPUT
END_VAR
Выбор конкретного варианта будет зависеть от задачи.Код:isDelayPassed := m_fb_Delay.Q;
спасибо Вам большое!
CODESYS 3.5 SP11 Patch5
на чём собрать переключатель аналоговых сигналов. SEL и MUX_R2 из OSCAT не работают.
проект
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;
Спасибо! Нужно было полностью писать название функционального блока