Есть турбина с 12-ю лопастями, датчик подключен через FDI к ПР205 он считывает обороты турбины 12 импульсов - оборот.
Написал прогу на ST с целью контроля скорости вращения турбины. В норме скорость +/- 240 Гц отклонение в меньшую сторону приводит к ошибке.
Программа запоминает обороты, потом через время 1с вычисляет разницу было/стало и если меньше, то ошибка (неисправность турбины).
Вопрос как протестировать прогу, если нет возможности подключить прибор к турбине. генератора импульсов тоже нет.
Есть ли ошибка в программе? Может задача проще решается? Спасибо.
function_block TurbAlrm // Сравнение оборотов за равный интервал времени. Если обороты упали меньше dObor то Q=1.
var_input //объявление входных переменных
Onn : bool; // Вход, когда ЭМК открыт и должен быть проток раствора.
Tur : udint; // Обороты с турбинки
dObor : udint; // Разница между оборотами за интервал времени должна быть больше рабочих оборотов
Tmsek : udint; // дельта времени в mс. Время за которое идет опрос турбинки (1000)
end_var
var_output //объявление выходных переменных
Q : bool; // Выход аварии турбинки по низким оборотам Q=1 - авария.
end_var
var //объявление локальных переменных
Tr : time; // реальное время прибора
Tx : time; dlT : time; S : udint; d1 : udint; dd : udint;
end_var
Tr := get_time();
dlT := udint_to_time(Tmsek);
If Onn and S = 0 and not Q then
S := 1; Tx := Tr; d1 := Tur;
elsif S = 1 and (Tr - Tx) >= dlT then
S := 2; dd := Tur - d1;
elsif S = 2 and dd <= dObor then // Здесь авария если дельта меньше того, что должно быть, то авария!
Q := true;
elsif S = 2 and dd > dObor then
Q := false; S := 0;
end_if
if not Onn then
Q := false; S := 0;
end_if
end_function_block