Здравствуйте, коллеги!
У кого есть изящный код обычной старт-стопной кнопки (нажал - вкл, нажал еще раз - выкл, и т.д.) на SCL? Поделитесь пож-та!
И более глобальный вопрос - где найти толковый справочник или список инструкций хотя бы? Что то нигде такого не нашел. Или может следует искать справочник не для SCL, а для PASCAL? (вроде как там синтаксис Паскаля)
Программирование на SCL
Re: Программирование на SCL
Код: Выделить всё
IF Кнопка_Старт = True THEN Выход := True;
IF Кнопка_Стоп = True THEN Выход := False;
Re: Программирование на SCL
Вроде бы детекторов фронтов в SCL нет, но можно сгородить вручную самостоятельно. Сохраняем в глобальную или статическую булеву переменную состояние кнопки и потом сравниваем сохранённое значение с текущим:
Код: Выделить всё
IF Кнопка = True AND Кнопка_prev = False THEN Выход := NOT(Выход);
Кнопка_prev := Кнопка;
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;
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;
Re: Программирование на SCL
Это генератор случайных чисел. Результат зависит от того, сколько раз в прокрутку циклов CPU попало состояние нажатого i0.1IF 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;
Re: Программирование на SCL
Нет i0.1 не изменится в течение скана ЦПУ, но все же я посоветовал более простой мой вариант реализации)
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;
(т.е. в первой строке вместо проверки меркера на противоположность вх. сигналу проверка на ноль?)
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;
(т.е. в первой строке вместо проверки меркера на противоположность вх. сигналу проверка на ноль?)
Re: Программирование на SCL
Если сильно постараться - запараметрировать I0.1 входом для прерываний, а обработку прописать в ОВ40, то всё получится
Re: Программирование на SCL
Просто загрубите фильтр на DI.