PDA

Просмотр полной версии : Контроль оборотов турбины на ST



CoollFox
24.04.2024, 17:03
Есть турбина с 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

МихаилГл
24.04.2024, 19:11
Думаю не хватает зоны нечувствительности. Не знаю, как стабилен цикл программы в пр205, но у вас даже любое отличие в меньшую сторону приводит в запуску аварии.

CoollFox
24.04.2024, 19:18
По факту запас больной. если 240 Гц турбина, то обороты должны упасть ниже 200, для выдачи аварии. Макрос не средство измерения, а больше как индикатор что что то не так с турбиной.
Блок на ST рабочий?

МихаилГл
24.04.2024, 19:34
Ну на первый взгляд вроде ничего криминального. Надо проверять.

kondor3000
24.04.2024, 20:55
По факту запас больной. если 240 Гц турбина, то обороты должны упасть ниже 200, для выдачи аварии. Макрос не средство измерения, а больше как индикатор что что то не так с турбиной.
Блок на ST рабочий?

Проверил на своём Тахометре, при снижении с 210 на 200 Об/сек, появляется авария на выходе вашего блока. 75400 75401
Блок без изменений, выложенный выше, в принципе работает норм.
Проверял в эмуляции.

CoollFox
25.04.2024, 20:15
СПАСИБО!!!