Программирование на SCL

Инженерное программное обеспечение
Ответить
САМ
Любитель
Сообщения: 26
Зарегистрирован: 20 фев 2017, 19:05

Программирование на SCL

Сообщение САМ »

Здравствуйте, коллеги!

У кого есть изящный код обычной старт-стопной кнопки (нажал - вкл, нажал еще раз - выкл, и т.д.) на SCL? Поделитесь пож-та!

И более глобальный вопрос - где найти толковый справочник или список инструкций хотя бы? Что то нигде такого не нашел. Или может следует искать справочник не для SCL, а для PASCAL? (вроде как там синтаксис Паскаля)

Михайло
Администратор
Сообщения: 4100
Зарегистрирован: 19 сен 2012, 19:16

Re: Программирование на SCL

Сообщение Михайло »

Код: Выделить всё

IF Кнопка_Старт = True THEN Выход := True;
IF Кнопка_Стоп = True THEN Выход := False;
Этот блок должен выполняться циклически.

САМ
Любитель
Сообщения: 26
Зарегистрирован: 20 фев 2017, 19:05

Re: Программирование на SCL

Сообщение САМ »

Михайло писал(а):
29 фев 2024, 02:27
IF Кнопка_Старт = True THEN Выход := True;
IF Кнопка_Стоп = True THEN Выход := False;
Как говорил Промокашка, "тю... так я и сам сбацать могу" 8)
Вопрос не про триггер с двумя кнопками, а про "кувыркающийся", на одной кнопке.

Михайло
Администратор
Сообщения: 4100
Зарегистрирован: 19 сен 2012, 19:16

Re: Программирование на SCL

Сообщение Михайло »

Вроде бы детекторов фронтов в SCL нет, но можно сгородить вручную самостоятельно. Сохраняем в глобальную или статическую булеву переменную состояние кнопки и потом сравниваем сохранённое значение с текущим:

Код: Выделить всё

IF Кнопка = True AND Кнопка_prev = False THEN Выход := NOT(Выход);
Кнопка_prev := Кнопка;

САМ
Любитель
Сообщения: 26
Зарегистрирован: 20 фев 2017, 19:05

Re: Программирование на SCL

Сообщение САМ »

Ладно, вопрос закрыт. Уже сам сочинил. Но на случай, если кому будет интересно, код такой:

IF I 0.1 END M 0.1 = NOT I 0.1 THEN
Q 0.1 := NOT Q 0.1;
END_IF;
M 0.1 := I 0.1;

САМ
Любитель
Сообщения: 26
Зарегистрирован: 20 фев 2017, 19:05

Re: Программирование на SCL

Сообщение САМ »

Михайло писал(а):
29 фев 2024, 11:23
Сохраняем в глобальную или статическую булеву переменную состояние кнопки и потом сравниваем сохранённое значение с текущим
Да, именно так :beer:

Lgirdas
Профан
Сообщения: 1
Зарегистрирован: 21 мар 2024, 15:44

Re: Программирование на SCL

Сообщение Lgirdas »

IF I 0.1 END M 0.1 = NOT I 0.1 THEN
Q 0.1 := NOT Q 0.1;
END_IF;
M 0.1 := I 0.1;
Это генератор случайных чисел. Результат зависит от того, сколько раз в прокрутку циклов CPU попало состояние нажатого i0.1

Михайло
Администратор
Сообщения: 4100
Зарегистрирован: 19 сен 2012, 19:16

Re: Программирование на SCL

Сообщение Михайло »

Нет i0.1 не изменится в течение скана ЦПУ, но все же я посоветовал более простой мой вариант реализации)

САМ
Любитель
Сообщения: 26
Зарегистрирован: 20 фев 2017, 19:05

Re: Программирование на SCL

Сообщение САМ »

Михайло, так?

IF I 0.1 END M 0.1 := 0 THEN
Q 0.1 := NOT Q 0.1;
END_IF;
M 0.1 := I 0.1;

(т.е. в первой строке вместо проверки меркера на противоположность вх. сигналу проверка на ноль?)

Михайло
Администратор
Сообщения: 4100
Зарегистрирован: 19 сен 2012, 19:16

Re: Программирование на SCL

Сообщение Михайло »

САМ писал(а):
07 май 2024, 15:01
IF I 0.1 END M 0.1 := 0 THEN
IF I 0.1 AND NOT (M 0.1) THEN

САМ
Любитель
Сообщения: 26
Зарегистрирован: 20 фев 2017, 19:05

Re: Программирование на SCL

Сообщение САМ »

Lgirdas писал(а):
21 мар 2024, 15:53
Это генератор случайных чисел. Результат зависит от того, сколько раз в прокрутку циклов CPU попало состояние нажатого i0.1
Михайло писал(а):
21 мар 2024, 23:25
... i0.1 не изменится в течение скана ЦПУ
Если сильно постараться - запараметрировать I0.1 входом для прерываний, а обработку прописать в ОВ40, то всё получится :bb:

Михайло
Администратор
Сообщения: 4100
Зарегистрирован: 19 сен 2012, 19:16

Re: Программирование на SCL

Сообщение Михайло »

Просто загрубите фильтр на DI.

Ответить