Вход

Просмотр полной версии : Система управления судовым дизель-генератором(аварийным ) на спк207



Никита Широкий
18.01.2025, 13:54
Доброго времени суток ) Пишу диплом по теме Система управления АДГ. Нужно модернизировать схему управления путем :1)замены кулачкового механизма М4 на СПК207 с МУ110 и МВ110 .2)Визуализация схемы . 3) Диспетчеризация .
Хотелось бы узнать мнения более опытных : на каком языке легче будет написать данную схему ? Как можно реализовать в программе срабатывание определенных механизмов от набора оборотов генератора ?
В общем любые советы и идеи будут крайне полезны ) Заранее спасибо огромное .
Принцип работы с изначальной схемой и модернизированной в закрепе .

kondor3000
18.01.2025, 15:39
Писать программу надо на языке, который вы знаете лучше всего. Предпочтительней CFC и ST. Хотя по логике напрашивается LD.

На ST проще всего реализовать логику срабатывания от оборотов генератора, например

IF Gen>=100 THEN K12:=TRUE;
ELSE K12:=FALSE;
END_IF

IF Gen>350 THEN K14:=TRUE;
ELSE K14:=FALSE;
END_IF

K12:=(Gen>=100); // Тоже самое, ещё проще
K14:=(Gen>350);

Newcomer
18.01.2025, 17:37
Доброго времени суток ) Пишу диплом по теме Система управления АДГ. Нужно модернизировать схему управления путем :1)замены кулачкового механизма М4 на СПК207 с МУ110 и МВ110 .2)Визуализация схемы . 3) Диспетчеризация .
Хотелось бы узнать мнения более опытных : на каком языке легче будет написать данную схему ? Как можно реализовать в программе срабатывание

Релейку на LD, остальное на ST.

1exan
18.01.2025, 18:09
Доброго времени суток ) Пишу диплом по теме Система управления АДГ. Нужно модернизировать схему управления путем :1)замены кулачкового механизма М4 на СПК207 с МУ110 и МВ110 .2)Визуализация схемы . 3) Диспетчеризация .
Хотелось бы узнать мнения более опытных : на каком языке легче будет написать данную схему ? Как можно реализовать в программе срабатывание определенных механизмов от набора оборотов генератора ?
В общем любые советы и идеи будут крайне полезны ) Заранее спасибо огромное .
Принцип работы с изначальной схемой и модернизированной в закрепе .

Подавляющее большинство программ для управления оборудованием можно реализовать в качестве конечного автомата и , соответственно - написать программу на языке SFC. Внутри действий и переходов удобно использовать ST

1exan
18.01.2025, 18:15
Релейку на LD, остальное на ST.

Эту принципиальную электрическую схему "в лоб" не перевести на LD - стоит ли тогда вообще его использовать здесь?

Никита Широкий
18.01.2025, 20:06
Извините ,если вдруг вопрос будет через чур очевидным или глупым : тогда ,чем в программе мне представить сам Генератор (G1)?На стенде он будет как маленький вентилятор . На вентилятор поместить датчик оборотов . И уже при замыкании нужных контактов(при перемещении топливной рейки) будут увеличиваться обороты .И при достижении определенных оборотов будут происходить замыкания контактов и срабатывания реле . Какой программой ,функцией , элементом или ф.блоком представить этот компонент в программе ?
В обучающем ролике видел ,как на языке FBD в прог. среде ставили элемент , который действовал так : при некоторых условиях он срабатывает начинает набирать "обороты"(значения либо с отрицательного либо с положительного знака до заданной уставки ) например 100 и останавливает набор . Затем при исполнении еще некоторых условий вновь срабатывает и начинает набор до например 200. В нем можно менять уставки самой переменной ,и времени за которое он должен дойти до этой уставки . Но видео смотрел давно и не могу его найти ,может в среде Codesys такого элемента и нет ,но может есть что-то похожее ?

melky
18.01.2025, 20:08
Этот элемент - ваша программа. Создайте POU - Генератор и напишите в ней соответствующий код. Можно использовать счетчик и таймер например, чтобы значения менялись с определенной скоростью.

Сергей0308
18.01.2025, 23:48
Аварийный генератор на СПК, это нонсенс, мне так кажется!

In_Da_Cher_A
19.01.2025, 09:07
Но видео смотрел давно и не могу его найти ,может в среде Codesys такого элемента и нет ,но может есть что-то похожее ?вам нужно учиться самому, ваша студенческая привычка "списать" или "сделать также, только цифры поменять" - не сработает, в создании своей логики вам надо думать и работать самому

тогда ,чем в программе мне представить сам Генератор (G1)?На стенде он будет как маленький вентилятор . На вентилятор поместить датчик оборотов . И уже при замыкании нужных контактов(при перемещении топливной рейки) будут увеличиваться обороты .И при достижении определенных оборотов будут происходить замыкания контактов и срабатывания реле . Какой программой ,функцией , элементом или ф.блоком представить этот компонент в программе ?вы уже хотите, чтобы за вас сделали алгоритм управления, при этом, судя по вопросам, у вас отсутствуют даже базовые понятия об основах логических элементов и понимание как это применить в своей задаче
без этого я не понимаю, как вы это сделаете, да ещё с привязкой к СПК
открывайте интернет и начинайте изучать
Основы программирования ПЛК в среде CODESYS V3.5
бесплатный вариант
https://stepik.org/course/123987/syllabus
или за деньги
https://owen.ru/plk2xxbazovykurs
либо самостоятельно
https://www.youtube.com/results?search_query=%D0%BF%D1%80%D0%BE%D0%B3%D1%8 0%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0% D0%BD%D0%B8%D0%B5+%D0%B2+codesys+3.5

melky
19.01.2025, 11:32
Сергей0308 так это же дипломная работа, там наверняка в институте СПК-шки на стендах, почему и на них, хоть они и не предназначены для управления генераторами.
Вернее там все можно сделать, но выдержать частоту вращения генератора, чтобы получить 50Гц на выходе без плавания или скачков не получится.

In_Da_Cher_A
19.01.2025, 15:39
выдержать частоту вращения генератора, чтобы получить 50Гц на выходена схеме вроде нет ничего такого, текст я не читал, обычно за герцовку отвечает фирменный блок управления частотой вращения, а всю инфраструктуру вокруг вешают на обычный ПЛК. Если они хотят держать 50 гц, то там совсем другое железо нужно,а не модбас и ОВЕН 110 модули, тем более аналог

melky
19.01.2025, 17:00
так я и говорю - это учебный материал. Не более того. если бы не это

Как можно реализовать в программе срабатывание определенных механизмов от набора оборотов генератора ?

то есть для чего это нужно, если оборотами будут заведовать другие мозги?

Никита Широкий
19.01.2025, 17:30
Этот элемент - ваша программа. Создайте POU - Генератор и напишите в ней соответствующий код. Можно использовать счетчик и таймер например, чтобы значения менялись с определенной скоростью.

VAR
// Таймер для управления временем увеличения
tTimer : TON;

// Переменная A для запуска процесса
A : BOOL := FALSE;

// Переменная B, которую будем увеличивать
B : INT := 0;
maxTime : TIME := T#10S;
END_VAR
// Основная программа
IF A THEN
// Если A = TRUE, запускаем таймер
IF NOT tTimer.Q THEN
tTimer(IN := TRUE);
END_IF;
ELSE
// Если A = FALSE, сбрасываем таймер и обнуляем B
tTimer(IN := FALSE);
B := 0;
END_IF;

// Проверяем состояние таймера
IF tTimer.Q AND tTimer.ET <= maxTime THEN
// Увеличиваем B на 1 каждую миллисекунду
B := B + 1;

// Ограничиваем значение B максимум 100
IF B >= 100 THEN
B := 100;
END_IF;
END_IF;
Получилось на визуализации получить сл :1. Нажимаем кнопку ,за некоторое время на индикаторе идет увеличение с 0 до 100 . Благодарю за ваш совет )
Но не до конца понял зачем счетчик нужен в вашем варианте ?

melky
19.01.2025, 18:31
Счетчик универсальный может прибавлять и отнимать. Хотя и + или - тоже имеет место быть. Реализация уже на ваше усмотрение.

In_Da_Cher_A
19.01.2025, 18:39
так я и говорю - это учебный материал. Не более того. если бы не это

Как можно реализовать в программе срабатывание определенных механизмов от набора оборотов генератора ?
то есть для чего это нужно, если оборотами будут заведовать другие мозги?либо это "трудности перевода"
либо имелось в виду банальное срабатывание каких-либо уставок для включения чего-либо, что там на вспомогательных механизмах генератора стоит. Типа зажечь лампочку "работа", открыть жалюзи, включить насос и прочее, чего там у него шифруется под м1 2 3 4 и т.п.
но если они решили заменить регулятор оборотов, то либо сам препод не раздупляет, с чем имеет дело, когда ставит такую задачу студенту, либо студент не может догнать, что ему надо сделать и соответственно - объяснить

зайдите на ЦОДе где стоит ДГУ - скорее всего, там будет стоять одноплатный контроллер с кнопочным дисплеем, который и будет отвечать за запуск двигателя и его работус и защиту
что-то типа smartgen или datacom или lovato какое0нибудь, в которых крутится отработанная программа, с циклом 5 или 10 мс, и которые стоят дешевле ПЛК
8141881419

kondor3000
19.01.2025, 19:01
Получилось на визуализации получить сл :1. Нажимаем кнопку ,за некоторое время на индикаторе идет увеличение с 0 до 100 . Благодарю за ваш совет )
Но не до конца понял зачем счетчик нужен в вашем варианте ?

Потому что весь код уложится в 3 строки, да ещё и автоматически остановится и сбросится. При использовании CTUD будет считать в обе стороны.
Если сброс не нужен, уберите RESET:=CTU1.Q


CTU1:CTU; TON1:TON;
PV: WORD:=100;
_______________________________
A:=A AND B<=PV AND B<100;
TON1(IN:=A AND NOT TON1.Q, PT:=T#50ms);
CTU1(CU:=TON1.Q ,RESET:=CTU1.Q ,PV:=PV,CV=>B);


И 1мс лучше не ставить, в ПЛК до 100 досчитает за 0,1 секунду. В эмуляции цикл около 64 мс.

Никита Широкий
19.01.2025, 22:05
Потому что весь код уложится в 3 строки, да ещё и автоматически остановится и сбросится. При использовании CTUD будет считать в обе стороны.
Если сброс не нужен, уберите RESET:=CTU1.Q


CTU1:CTU; TON1:TON;
PV: WORD:=100;
_______________________________
A:=A AND B<=PV AND B<100;
TON1(IN:=A AND NOT TON1.Q, PT:=T#50ms);
CTU1(CU:=TON1.Q ,RESET:=CTU1.Q ,PV:=PV,CV=>B);


И 1мс лучше не ставить, в ПЛК до 100 досчитает за 0,1 секунду. В эмуляции цикл около 64 мс.

Спасибо огромное ) В программе ,которую я скидывал выше на самом деле увеличение "B" происходило вне зависимости от уставки времени , да и вообще B увеличивалось после срабатывания таймера . Не пойму в чем ошибка .
А в вашей программе все работает исправно )