Просмотр полной версии : СПК210, как задать прерывистый сигнал и чтобы он выключался при остановке программы?
Matvei115
24.04.2026, 16:05
Добрый день. Привязал три переменные к каналам пьезоизлучателя контроллера СПК210-07-CS. При поступлении байта с нужным значением сигнал идет. Но хочется, чтобы он через какое-то время прекратил работать (например, 10 секунд) и чтобы он прекратил гудеть при остановке программы. А каналов привязки таких переменных нет: только запуск/остановка по значению, состояние и частота звука. Как это реализовать? Вот исходник: PROGRAM vis
VAR
xSound: BOOL;
xSoundState: BOOL;
xFrequency:UINT;
END_VAR
IF KONTROUT.0 THEN
xSound:=TRUE;
xSoundState:=TRUE;
xFrequency:=500;
ELSE
xSound:=FALSE;
xSoundState:=FALSE;
END_IF 88974
МихаилГл
24.04.2026, 16:09
https://owen.ru/forum/showthread.php?t=38389&highlight=%CF%E8%F8%E5%EC+%EC%F3%E7%FB%EA%F3
Остановить можно по триггеру, таймеру и т.д. и т.п.
Чтл значит при остановке программы, не понятно. Программа должна работать всегда.
kondor3000
24.04.2026, 17:03
Блок BLINK (биб-ка Util.lib ) может по биту работы KONTROUT.0 , включать - выключать излучатель например раз в 500 мс,
таймером можно отсчитать 10 сек и выключить BLINK или выключить его при отключении бита KONTROUT.0 .
BLINK1 : BLINK ; // добавить в VAR
TON1 : TON ;
END_VAR
BLINK1(ENABLE:=KONTROUT.0 AND NOT TON1.Q , TIMELOW:=T#500MS, TIMEHIGH:=T#500MS );
TON1(IN:=KONTROUT.0, PT:=T#10S );
IF KONTROUT.0 THEN
xSoundState:=TRUE;
xFrequency:=500;
xSound:=BLINK1.OUT AND NOT TON1.Q ;
ELSE
xSound:=FALSE;
xSoundState:=FALSE;
END_IF
Matvei115
27.04.2026, 13:56
Спасибо за подсказку;) Контроллер при запуске кода действительно начал издавать прерывистый сигнал.
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot