NOT лишние
всё же не понимаю почему в исходники oscat не заглянуть, почему кто то из форумчан должен что то выкладывать
Вид для печати
То, что вы называете передним фронтом называется просто фронт. То, что вы называете задним фронтом называется срез.
Ибо, передний фронт - масло масляное, а задний фронт - полный абсурд. Фронт - это то, что спереди.
https://ru.wikipedia.org/wiki/Фронт
capzap выкладывать чтобы каждый не писал по кругу одно и то же, тем более из oscat.
Посмотрел, кто-то уже выдернул TOF, значит можно его себе не переписывать а переписать то, чего еще нет.
Ну в программе ОЛ они так называются:
1. Детектор переднего фронта
2. Детектор заднего фронта
Вот так, выложишь что-то, для таких же не особо далёких как и сам (я про себя), чтобы упростить жизнь всем, и узнаешь кучу нового, в том числе и о себе. Будем внимательней и прочитаем стандарт IEC 61131-3, где про фронт и срез говорится следующим маслом - R_TRIG - Rising Edge Detector, F_TRIG - Falling Edge Detector. Обратимся к официальной справке Овен Лоджик, там сказано следующее - Детектор переднего фронта импульса (RTRIG). Обратимся к CodeSys2.3 - Функциональный блок R_TRIG генерирует импульс по переднему фронту входного сигнала. Ну и CodeSys 3.5 - Функциональный блок для выявления переднего фронта.
Вынужден учиться на том, что дают.
Да будет так, первый фронт, и Второй фронт = тушенка и все что там с этим было связано :)
Newcomer мне кажется излишне придираться там, где все прекрасно понимают о чем речь. Если вдруг вы не поняли о чем, то надо что-то менять в датском королевстве.
Не могу понять где ашыпка. При первом запуске внутренняя переменная EMA(t) := входному значению, все последующие итерации выполняются по формуле расчета скользящего экспоненциального. Но при симуляции получается иначе. Первый проход так-же считается по формуле EMA(t) = coef * input + (1 - coef) * EMA(t-1), хотя сброс переменной первого запуска проходит и сброс фильтра, если его активировать, так-же выполняется.
Код:function_block EMA // Фильтр экспоненциальное скользящее среднее
var_input
input : real; // Вход
coeff : real; // Коэффициент от 1(min) до 0(max)
reset : bool; // Сброс фильтра
end_var
var_output
output : real; // Выход
end_var
var
EMAt : real;
first_run : bool := true;
end_var
if (reset = true) OR (first_run = true) then
EMAt := input;
first_run := false;
else
EMAt := coeff * input +(1 - coeff)*EMAt;
end_if
output := EMAt;
end_function_block