Просмотр полной версии : Разработка программы
НУЖНА ПОМОЩ. я студент, пишу дипломную работу и не могу разобраться в составлении программы, у меня система аво газа, на выходе стоит датчик температуры, вентиляторы аво газа управляются двигателем через ПЧ, суть схемы в том, что при повышении температуры, ПЧ должен повышать частоту и тем самым увеличивать скорость вращения вентилятора, например меньше 25гр=0 Гц, 30гр=25Гц, 35гр=30Гц, 40гр=35Гц, 45гр=40Гц, 50гр=45Гц, 55гр=50Гц, больше 55 градусов= двигатель выключается и включается второй, который работает без частотника, на максимальной мощности.
krollcbas
05.02.2026, 22:16
Недавно для студента написал программу для ПЛК150, по стоимости договорились (2000р), результат я показал, что работает.
Начал попытки усилить требования, типа нарисуйте элементы так-то и так-то...
Заказчик подрастает, подумал я. Не стал я выполнять требования, есть дела более важные.
Есть ощущение что у студентов нет ни денег, ни совести))
МихаилГл
05.02.2026, 22:22
Недавно для студента написал программу для ПЛК150, по стоимости договорились (2000р), результат я показал, что работает.
Начал попытки усилить требования, типа нарисуйте элементы так-то и так-то...
Заказчик подрастает, подумал я. Не стал я выполнять требования, есть дела более важные.
Есть ощущение что у студентов нет ни денег, ни совести))
Не, у нынешних деньги есть... Но совесть не позволяет их отдать)
Николай Суриков
05.02.2026, 23:10
_Exported on 2/5/2026 at 23:02:13 GMT+3 from Cursor (2.3.15)_
**User**
пишу дипломную работу и не могу разобраться в составлении программы на st, у меня система аво газа, на выходе стоит датчик температуры, вентиляторы аво газа управляются двигателем через ПЧ, суть схемы в том, что при повышении температуры, ПЧ должен повышать частоту и тем самым увеличивать скорость вращения вентилятора, например меньше 25гр=0 Гц, 30гр=25Гц, 35гр=30Гц, 40гр=35Гц, 45гр=40Гц, 50гр=45Гц, 55гр=50Гц, больше 55 градусов= двигатель выключается и включается второй, который работает без частотника, на максимальной мощности.
---
VAR
(* Входные переменные *)
Temperature : REAL; (* Температура с датчика, °C *)
(* Выходные переменные *)
Frequency : REAL; (* Частота для ПЧ, Гц *)
Motor1_Enable : BOOL; (* Включение первого двигателя (с ПЧ) *)
Motor2_Enable : BOOL; (* Включение второго двигателя (без ПЧ) *)
(* Внутренние переменные *)
Temp_Low : REAL := 25.0; (* Нижний порог температуры *)
Temp_High : REAL := 55.0; (* Верхний порог температуры *)
END_VAR
(* Основная логика управления *)
IF Temperature < Temp_Low THEN
(* Температура меньше 25°C - двигатель выключен *)
Frequency := 0.0;
Motor1_Enable := FALSE;
Motor2_Enable := FALSE;
ELSIF Temperature >= Temp_Low AND Temperature < 30.0 THEN
(* Интервал 25-30°C: линейная интерполяция от 0 до 25 Гц *)
Frequency := ((Temperature - Temp_Low) / (30.0 - Temp_Low)) * 25.0;
Motor1_Enable := TRUE;
Motor2_Enable := FALSE;
ELSIF Temperature >= 30.0 AND Temperature < 35.0 THEN
(* Интервал 30-35°C: линейная интерполяция от 25 до 30 Гц *)
Frequency := 25.0 + ((Temperature - 30.0) / (35.0 - 30.0)) * (30.0 - 25.0);
Motor1_Enable := TRUE;
Motor2_Enable := FALSE;
ELSIF Temperature >= 35.0 AND Temperature < 40.0 THEN
(* Интервал 35-40°C: линейная интерполяция от 30 до 35 Гц *)
Frequency := 30.0 + ((Temperature - 35.0) / (40.0 - 35.0)) * (35.0 - 30.0);
Motor1_Enable := TRUE;
Motor2_Enable := FALSE;
ELSIF Temperature >= 40.0 AND Temperature < 45.0 THEN
(* Интервал 40-45°C: линейная интерполяция от 35 до 40 Гц *)
Frequency := 35.0 + ((Temperature - 40.0) / (45.0 - 40.0)) * (40.0 - 35.0);
Motor1_Enable := TRUE;
Motor2_Enable := FALSE;
ELSIF Temperature >= 45.0 AND Temperature < 50.0 THEN
(* Интервал 45-50°C: линейная интерполяция от 40 до 45 Гц *)
Frequency := 40.0 + ((Temperature - 45.0) / (50.0 - 45.0)) * (45.0 - 40.0);
Motor1_Enable := TRUE;
Motor2_Enable := FALSE;
ELSIF Temperature >= 50.0 AND Temperature < 55.0 THEN
(* Интервал 50-55°C: линейная интерполяция от 45 до 50 Гц *)
Frequency := 45.0 + ((Temperature - 50.0) / (55.0 - 50.0)) * (50.0 - 45.0);
Motor1_Enable := TRUE;
Motor2_Enable := FALSE;
ELSIF Temperature >= 55.0 AND Temperature <= Temp_High THEN
(* Температура 55°C - максимальная частота *)
Frequency := 50.0;
Motor1_Enable := TRUE;
Motor2_Enable := FALSE;
ELSE
(* Температура больше 55°C - переключение на второй двигатель *)
Frequency := 0.0;
Motor1_Enable := FALSE;
Motor2_Enable := TRUE;
END_IF
END_PROGRAM
VAR
(* Входные переменные *)
Temperature : REAL; (* Температура с датчика, °C *)
(* Выходные переменные *)
Frequency : REAL; (* Частота для ПЧ, Гц *)
Motor1_Enable : BOOL; (* Включение первого двигателя (с ПЧ) *)
Motor2_Enable : BOOL; (* Включение второго двигателя (без ПЧ) *)
(* Таблица соответствия температура-частота *)
TempPoints : ARRAY[0..6] OF REAL := [25.0, 30.0, 35.0, 40.0, 45.0, 50.0, 55.0];
FreqPoints : ARRAY[0..6] OF REAL := [0.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0];
(* Вспомогательные переменные *)
i : INT;
Temp_Low : REAL := 25.0;
Temp_High : REAL := 55.0;
END_VAR
(* Основная логика управления *)
IF Temperature < Temp_Low THEN
(* Температура меньше 25°C - двигатель выключен *)
Frequency := 0.0;
Motor1_Enable := FALSE;
Motor2_Enable := FALSE;
ELSIF Temperature > Temp_High THEN
(* Температура больше 55°C - переключение на второй двигатель *)
Frequency := 0.0;
Motor1_Enable := FALSE;
Motor2_Enable := TRUE;
ELSE
(* Температура в рабочем диапазоне - линейная интерполяция *)
Motor1_Enable := TRUE;
Motor2_Enable := FALSE;
(* Поиск интервала для интерполяции *)
FOR i := 0 TO 5 DO
IF Temperature >= TempPoints[i] AND Temperature < TempPoints[i+1] THEN
(* Линейная интерполяция между точками *)
Frequency := FreqPoints[i] +
((Temperature - TempPoints[i]) / (TempPoints[i+1] - TempPoints[i])) *
(FreqPoints[i+1] - FreqPoints[i]);
EXIT; (* Выход из цикла после нахождения интервала *)
END_IF
END_FOR
(* Если температура точно равна 55°C *)
IF Temperature >= Temp_High THEN
Frequency := 50.0;
END_IF
END_IF
END_PROGRAM
VAR
(* Входные переменные *)
Temperature : REAL; (* Температура с датчика, °C *)
(* Выходные переменные *)
Frequency : REAL; (* Частота для ПЧ, Гц *)
Motor1_Enable : BOOL; (* Включение первого двигателя (с ПЧ) *)
Motor2_Enable : BOOL; (* Включение второго двигателя (без ПЧ) *)
END_VAR
(* Основная логика управления АВО газа *)
(* При повышении температуры увеличивается частота ПЧ *)
IF Temperature < 25.0 THEN
(* Меньше 25°C - двигатель выключен *)
Frequency := 0.0;
Motor1_Enable := FALSE;
Motor2_Enable := FALSE;
ELSIF Temperature >= 25.0 AND Temperature < 30.0 THEN
(* Интервал 25-30°C: плавное увеличение от 0 до 25 Гц *)
Frequency := ((Temperature - 25.0) / 5.0) * 25.0;
Motor1_Enable := TRUE;
Motor2_Enable := FALSE;
ELSIF Temperature >= 30.0 AND Temperature < 35.0 THEN
(* Интервал 30-35°C: плавное увеличение от 25 до 30 Гц *)
Frequency := 25.0 + ((Temperature - 30.0) / 5.0) * 5.0;
Motor1_Enable := TRUE;
Motor2_Enable := FALSE;
ELSIF Temperature >= 35.0 AND Temperature < 40.0 THEN
(* Интервал 35-40°C: плавное увеличение от 30 до 35 Гц *)
Frequency := 30.0 + ((Temperature - 35.0) / 5.0) * 5.0;
Motor1_Enable := TRUE;
Motor2_Enable := FALSE;
ELSIF Temperature >= 40.0 AND Temperature < 45.0 THEN
(* Интервал 40-45°C: плавное увеличение от 35 до 40 Гц *)
Frequency := 35.0 + ((Temperature - 40.0) / 5.0) * 5.0;
Motor1_Enable := TRUE;
Motor2_Enable := FALSE;
ELSIF Temperature >= 45.0 AND Temperature < 50.0 THEN
(* Интервал 45-50°C: плавное увеличение от 40 до 45 Гц *)
Frequency := 40.0 + ((Temperature - 45.0) / 5.0) * 5.0;
Motor1_Enable := TRUE;
Motor2_Enable := FALSE;
ELSIF Temperature >= 50.0 AND Temperature < 55.0 THEN
(* Интервал 50-55°C: плавное увеличение от 45 до 50 Гц *)
Frequency := 45.0 + ((Temperature - 50.0) / 5.0) * 5.0;
Motor1_Enable := TRUE;
Motor2_Enable := FALSE;
ELSIF Temperature >= 55.0 AND Temperature <= 55.0 THEN
(* Температура 55°C - максимальная частота 50 Гц *)
Frequency := 50.0;
Motor1_Enable := TRUE;
Motor2_Enable := FALSE;
ELSE
(* Температура больше 55°C - выключение первого двигателя *)
(* и включение второго двигателя на максимальной мощности *)
Frequency := 0.0;
Motor1_Enable := FALSE;
Motor2_Enable := TRUE;
END_IF
END_PROGRAM
Создал три варианта программы на Structured Text для управления АВО газа.
## Описание программ:
1. **AVO_GAS_CONTROL.st** — базовая версия с явными условиями для каждого диапазона
2. **AVO_GAS_CONTROL_OPTIMIZED.st** — оптимизированная версия с таблицей значений и циклом интерполяции
3. **AVO_GAS_CONTROL_SIMPLE.st** — упрощенная версия с линейной интерполяцией между точками
## Логика работы:
- **< 25°C**: частота = 0 Гц, оба двигателя выключены
- **25–30°C**: плавное увеличение от 0 до 25 Гц (первый двигатель с ПЧ)
- **30–35°C**: плавное увеличение от 25 до 30 Гц
- **35–40°C**: плавное увеличение от 30 до 35 Гц
- **40–45°C**: плавное увеличение от 35 до 40 Гц
- **45–50°C**: плавное увеличение от 40 до 45 Гц
- **50–55°C**: плавное увеличение от 45 до 50 Гц
- **= 55°C**: частота = 50 Гц (максимум для ПЧ)
- **> 55°C**: первый двигатель выключается, включается второй (без ПЧ, на максимальной мощности)
## Переменные:
- **Temperature** — входная переменная (температура с датчика)
- **Frequency** — выходная переменная (частота для ПЧ)
- **Motor1_Enable** — включение первого двигателя (с ПЧ)
- **Motor2_Enable** — включение второго двигателя (без ПЧ)
Для дипломной работы рекомендую использовать **AVO_GAS_CONTROL_SIMPLE.st** — он наиболее понятен и читаем.
Неужели все стали настолько ленивы?
Разбирайся.
НУЖНА ПОМОЩ. я студент, пишу дипломную работу и не могу разобраться в составлении программы, у меня система аво газа, на выходе стоит датчик температуры, вентиляторы аво газа управляются двигателем через ПЧ, суть схемы в том, что при повышении температуры, ПЧ должен повышать частоту и тем самым увеличивать скорость вращения вентилятора, например меньше 25гр=0 Гц, 30гр=25Гц, 35гр=30Гц, 40гр=35Гц, 45гр=40Гц, 50гр=45Гц, 55гр=50Гц, больше 55 градусов= двигатель выключается и включается второй, который работает без частотника, на максимальной мощности.
Вы должны определиться со способом подключения ПР к ПЧВ (физические сигналы или по цифровому интерфейсу Modbus), с набором сигналов к ПЧВ и обратно от него.
Дальше перечислить все возможные ошибки - неисправность датчика, ПЧВ, аналогового выхода, высокая или низкая температура газа, температура обмоток АВО - и реакцию системы на них.
При поломке датчика уже нечего регулировать, а при поломке одного ПЧВ можно работать вторым.
Если есть ошибки и защитные блокировки - должны быть способы информировать оператора (сигнальная лампа или операторская панель) и способы сброса блокировки (кнопка "сброс").
Раз есть параметры регулирования, условия включения и выключения каскада, защитных блокировок (значение переключения и задержка) - должны быть средства их ввода и отображения.
Сразу подумать, какие параметры будут передаваться в вышестоящую систему автоматики по Modbus.
И ещё, я бы применил ПИД регулятор вместо набора уставка-частота.
А так - в несколько иных формулировках это распространённая задача управления каскадом насосов, котлов.
При общем умении программировать, доступно "с нуля" освоить языки программирования из среды OwenLogic и сделать "боевую программу" примерно за 2 месяца. Но нужно каждый день работать над этим - разбить всю задачу на подзадачи и решать их. Карты Карно - незаменимый инструмент. Вчера с их помощью делал некоторые элементы программы.
In_Da_Cher_A
06.02.2026, 00:16
НУЖНА ПОМОЩ. помощЬ блин
а потом ну почему везде всё китайское
а сами примитив сделать не могут
и тут же добрые самаритяне набегут и за ленивого студента ещё и в рамочку по госту всё оформят
Добрый самаритянин никогда не предложит решать эту задачу через ПЛК или ПР, т.к. эта задача решается самим ПЧ!
In_Da_Cher_A
06.02.2026, 08:50
. эта задача решается самим ПЧ!для жертв ЕГЭ сегодня это уже уровень кандидатской, не меньше
Заказчик подрастает, подумал я.
матерый)))
Если есть опыт работы хоть с одним программируемым прибором, то в голове есть готовая последовательность действий по программированию. А если опыта нет и рядом никого - как научиться?
Вот я после института очень хотел научиться работать с ПЛК100, у меня даже собственный прибор был. А даже подключиться к нему не мог. И рядом никого, кто бы подсказал.
За несколько лет сделал три подхода - безрезультатно.
Прогресс пошёл после обучения работе с другим ПЛК другой фирмы и выхода обучающих роликов и пособий Кирилла Гайнутдинова (прошу прощения, если переврал фамилию).
FPavel так есть же документация на ПЛК, она подскажет :)
В том далёком году с интернетом было как-то не очень, если не сказать - совсем никак.
А сейчас, без опыта или подсказки - не знаешь что из водопада информации требуется.
А по теме - автор должен сформулировать чёткое ТЗ.
Потом определиться с исполнителем - сам или нанимает.
Дальше реализовывать по этому ТЗ, при возникновении вопросов - спрашивать на форуме или уточнять по документации.
Документации по техническому аспекту немного, но она охватывает все вопросы:
- справка по F1 в Owen Logic
- Руководство по программированию в Owen Logic
- руководство на конкретный ПР
Также есть программные компоненты и справка к ним.
По началу использования среды программирования - видеоуроки со странички прибора.
В общем, план на 2 месяца вперёд расписан плотно.
Николай Суриков
06.02.2026, 12:06
У него дипломная работа. Все время учебы он тусил и смотрел тик-токи. Учиться уже поздно. Теперь только плакать на форуме что он не понимает. Потом такой спец пойдет работу искать по специальности.
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot