Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 13

Тема: Разработка программы

  1. #1

    По умолчанию Разработка программы

    НУЖНА ПОМОЩ. я студент, пишу дипломную работу и не могу разобраться в составлении программы, у меня система аво газа, на выходе стоит датчик температуры, вентиляторы аво газа управляются двигателем через ПЧ, суть схемы в том, что при повышении температуры, ПЧ должен повышать частоту и тем самым увеличивать скорость вращения вентилятора, например меньше 25гр=0 Гц, 30гр=25Гц, 35гр=30Гц, 40гр=35Гц, 45гр=40Гц, 50гр=45Гц, 55гр=50Гц, больше 55 градусов= двигатель выключается и включается второй, который работает без частотника, на максимальной мощности.

  2. #2

    По умолчанию

    Недавно для студента написал программу для ПЛК150, по стоимости договорились (2000р), результат я показал, что работает.
    Начал попытки усилить требования, типа нарисуйте элементы так-то и так-то...
    Заказчик подрастает, подумал я. Не стал я выполнять требования, есть дела более важные.

    Есть ощущение что у студентов нет ни денег, ни совести))
    +79104444236
    С уважением,
    Лапшин Вячеслав

  3. #3

    По умолчанию

    Цитата Сообщение от krollcbas Посмотреть сообщение
    Недавно для студента написал программу для ПЛК150, по стоимости договорились (2000р), результат я показал, что работает.
    Начал попытки усилить требования, типа нарисуйте элементы так-то и так-то...
    Заказчик подрастает, подумал я. Не стал я выполнять требования, есть дела более важные.

    Есть ощущение что у студентов нет ни денег, ни совести))
    Не, у нынешних деньги есть... Но совесть не позволяет их отдать)

  4. #4

    По умолчанию

    _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 градусов= двигатель выключается и включается второй, который работает без частотника, на максимальной мощности.

    ---
    PROGRAM AVO_GAS_CONTROL:

    Код:
    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


    PROGRAM AVO_GAS_CONTROL_OPTIMIZED:

    Код:
    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


    PROGRAM AVO_GAS_CONTROL_SIMPLE:
    Код:
    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** — он наиболее понятен и читаем.
    Неужели все стали настолько ленивы?
    Разбирайся.

  5. #5

    По умолчанию

    Цитата Сообщение от Иван111 Посмотреть сообщение
    НУЖНА ПОМОЩ. я студент, пишу дипломную работу и не могу разобраться в составлении программы, у меня система аво газа, на выходе стоит датчик температуры, вентиляторы аво газа управляются двигателем через ПЧ, суть схемы в том, что при повышении температуры, ПЧ должен повышать частоту и тем самым увеличивать скорость вращения вентилятора, например меньше 25гр=0 Гц, 30гр=25Гц, 35гр=30Гц, 40гр=35Гц, 45гр=40Гц, 50гр=45Гц, 55гр=50Гц, больше 55 градусов= двигатель выключается и включается второй, который работает без частотника, на максимальной мощности.
    Вы должны определиться со способом подключения ПР к ПЧВ (физические сигналы или по цифровому интерфейсу Modbus), с набором сигналов к ПЧВ и обратно от него.

    Дальше перечислить все возможные ошибки - неисправность датчика, ПЧВ, аналогового выхода, высокая или низкая температура газа, температура обмоток АВО - и реакцию системы на них.
    При поломке датчика уже нечего регулировать, а при поломке одного ПЧВ можно работать вторым.

    Если есть ошибки и защитные блокировки - должны быть способы информировать оператора (сигнальная лампа или операторская панель) и способы сброса блокировки (кнопка "сброс").

    Раз есть параметры регулирования, условия включения и выключения каскада, защитных блокировок (значение переключения и задержка) - должны быть средства их ввода и отображения.

    Сразу подумать, какие параметры будут передаваться в вышестоящую систему автоматики по Modbus.

    И ещё, я бы применил ПИД регулятор вместо набора уставка-частота.

    А так - в несколько иных формулировках это распространённая задача управления каскадом насосов, котлов.

    При общем умении программировать, доступно "с нуля" освоить языки программирования из среды OwenLogic и сделать "боевую программу" примерно за 2 месяца. Но нужно каждый день работать над этим - разбить всю задачу на подзадачи и решать их. Карты Карно - незаменимый инструмент. Вчера с их помощью делал некоторые элементы программы.

  6. #6

    По умолчанию

    Цитата Сообщение от Иван111 Посмотреть сообщение
    НУЖНА ПОМОЩ.
    помощЬ блин
    а потом ну почему везде всё китайское
    а сами примитив сделать не могут
    и тут же добрые самаритяне набегут и за ленивого студента ещё и в рамочку по госту всё оформят
    Последний раз редактировалось In_Da_Cher_A; 06.02.2026 в 00:19.

  7. #7

    По умолчанию

    Добрый самаритянин никогда не предложит решать эту задачу через ПЛК или ПР, т.к. эта задача решается самим ПЧ!

  8. #8

    По умолчанию

    Цитата Сообщение от EFrol Посмотреть сообщение
    . эта задача решается самим ПЧ!
    для жертв ЕГЭ сегодня это уже уровень кандидатской, не меньше

  9. #9
    Пользователь
    Регистрация
    04.09.2012
    Адрес
    Омск
    Сообщений
    289

    По умолчанию

    Цитата Сообщение от krollcbas Посмотреть сообщение
    Заказчик подрастает, подумал я.
    матерый)))

  10. #10

    По умолчанию

    Если есть опыт работы хоть с одним программируемым прибором, то в голове есть готовая последовательность действий по программированию. А если опыта нет и рядом никого - как научиться?

    Вот я после института очень хотел научиться работать с ПЛК100, у меня даже собственный прибор был. А даже подключиться к нему не мог. И рядом никого, кто бы подсказал.
    За несколько лет сделал три подхода - безрезультатно.
    Прогресс пошёл после обучения работе с другим ПЛК другой фирмы и выхода обучающих роликов и пособий Кирилла Гайнутдинова (прошу прощения, если переврал фамилию).

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Разработка ФБ на C++
    от gregory9511 в разделе ПЛК (среда Полигон)
    Ответов: 4
    Последнее сообщение: 06.08.2025, 08:17
  2. Ответов: 9
    Последнее сообщение: 26.12.2024, 19:10
  3. Разработка ПО АСУ по ГОСТ
    от Павел В. в разделе Помощь Разработчикам
    Ответов: 35
    Последнее сообщение: 10.11.2016, 11:38
  4. Разработка оборудования
    от comm343 в разделе Подбор Оборудования
    Ответов: 4
    Последнее сообщение: 15.11.2013, 15:13
  5. Разработка собственного ПО для ПЛК150
    от DimaSik в разделе ПЛК1хх
    Ответов: 7
    Последнее сообщение: 28.07.2009, 12:36

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •