согласовать не проблема ,делайте пока проект
согласовать не проблема ,делайте пока проект
электронщик до мозга костей и не только
Интересно ,как на 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.libtx := 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;
Скромненько ,но одним взглядом не обьять ,надо в каждую строку вникать
Не, в Писатели поздно переучиваться ,посижу в ХудожникахХотя начинал с ассемблера .За долгие годы образ мышления сформировался под "картинки"
![]()
а не текст
![]()
Последний раз редактировалось rovki; 14.10.2012 в 16:59.
электронщик до мозга костей и не только
вот и я думаю, и чего говорят ST для продвинутых.. так всё путанно ((( одно только преимущество это вычисления формулой
Ну значит мы еще не продвинуты ...путано ,потому как языка не знаем ,если написать на монгольском языке... так мы то же синус рядами вычисляем на ПР
![]()
Последний раз редактировалось rovki; 14.10.2012 в 17:44.
электронщик до мозга костей и не только
Да я то ещё и на ПР не многое могу, к своей последней задачей даже алгоритм не могу подобрать.. принцип понять как должно работать
чего там сложного, NOT init тупо инициализация при запуске программы, а так как цикл исчисляется в мс, то на него можно и не обращать внимание, второе условие RST, тут должно тоже быть понятно обычный сброс, и вот только далее начинаются условия интересующие, это IN AND NOT edge AND NOT Q - расшифровываю при переднем фронте входа и выключенном выходе, NOT IN AND edge AND ((tx - last) > T1) - сработал задний фронт входной переменной и время превысило Т1, далее (tx - last) >= T2 если наступило время большее или равное чем Т2, в телах условий идет присвоение значений выходу