согласовать не проблема ,делайте пока проект
Вид для печати
согласовать не проблема ,делайте пока проект
Интересно ,как на ST будет это выглядит ?(принт скрин)
объявление
тело ФБЦитата:
VAR_INPUT
IN : BOOL;
T1 : TIME;
T2 : TIME;
RST : BOOL;
END_VAR
VAR_OUTPUT
Q : BOOL;
END_VAR
VAR
init: BOOL;
last: TIME;
tx: TIME;
edge: BOOL;
END_VAR
из ОСКАТ-вской библиотеки oscat_building_100.libЦитата:
tx := DWORD_TO_TIME(T_PLC_MS());
IF NOT init THEN
init := TRUE;
last := tx;
ELSIF RST THEN
(* asynchronous reset *)
Q := FALSE;
ELSIF IN AND NOT edge AND NOT Q THEN
(* a rising edge on in will reversre the output status, if new pulse is startet the start time is stored in last *)
last := tx;
Q := TRUE;
ELSIF NOT IN AND edge AND ((tx - last) > T1) THEN
(* a falling edge on IN will clear the output if in was high for more then T1 *)
Q := FALSE;
ELSIF (tx - last) >= T2 THEN
(* timeout for long pulse if second click did not occur or in stays high *)
Q := FALSE;
END_IF;
edge := IN;
Скромненько ,но одним взглядом не обьять ,надо в каждую строку вникать
Не, в Писатели поздно переучиваться ,посижу в Художниках:) Хотя начинал с ассемблера .За долгие годы образ мышления сформировался под "картинки":) :rolleyes: а не текст ;)
вот и я думаю, и чего говорят ST для продвинутых.. так всё путанно ((( одно только преимущество это вычисления формулой
Ну значит мы еще не продвинуты ...путано ,потому как языка не знаем ,если написать на монгольском языке:D ... так мы то же синус рядами вычисляем на ПР;)
Да я то ещё и на ПР не многое могу, к своей последней задачей даже алгоритм не могу подобрать.. принцип понять как должно работать
чего там сложного, NOT init тупо инициализация при запуске программы, а так как цикл исчисляется в мс, то на него можно и не обращать внимание, второе условие RST, тут должно тоже быть понятно обычный сброс, и вот только далее начинаются условия интересующие, это IN AND NOT edge AND NOT Q - расшифровываю при переднем фронте входа и выключенном выходе, NOT IN AND edge AND ((tx - last) > T1) - сработал задний фронт входной переменной и время превысило Т1, далее (tx - last) >= T2 если наступило время большее или равное чем Т2, в телах условий идет присвоение значений выходу