Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 29

Тема: Программа на языке ST

  1. #11

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    Код:
    U_out_2 := Start = 1 AND Temp_1 >= T_porog_1
    Timer_letom(IN:=U_out_2 , PT:=T#10s , Q=> U_out_1 );
    должно быть достаточно такого кода
    Его достаточно будет, если одно условие, я так понимаю, но мне надо включить еще условия при различных температурах с включением подогрева и контролем температуры.(

  2. #12
    Пользователь
    Регистрация
    10.04.2010
    Адрес
    Алтайский край,г.Рубцовск
    Сообщений
    967

    По умолчанию

    Я обычно собираю все условия в одну переменную, а уже её управляю таймером, счетчиком и т.д

  3. #13
    Пользователь
    Регистрация
    24.12.2012
    Адрес
    Нижняя Куэнга
    Сообщений
    85

    По умолчанию

    Доброго дня, сделайте массив для записи. В ячейку записываете температуру по запуску вентилятора, далее таймер работы вентилятора и т.д.

  4. #14

    По умолчанию

    Набросал такой алгоритм, работа получается, только вот, если температура в пороге от -5 до 5 градусов включается (режим 2) обогрев и Вебасто, но в течении режима работы 2 происходит увеличение температуры, и цикл не дорабатывает до конца, а сразу переходит в режим работы 1, где при температуре выше +5 градусов сразу запускается дизель....

    код:
    VAR
    Start: BOOL;
    U_in_1_conv: REAL; (*напряжение канал_1*)
    U_in_2_conv: REAL; (*напряжение канал_2*)

    Timer_letom: TON; (*таймер запуска ДГУ летом через 5 минут после вентиляции*)
    Timer_TP23: TP;
    Obog: BOOL;
    Indikator0: BOOL;
    Indikator1: BOOL;
    Indikator2: BOOL;
    Timer_viklDGU: TOF;
    Timer_Webasto: TON;
    Timer_raboti_Webasto: TP;
    Timer_zad_vkl_DGU: TOF;
    F_TRIG1: F_TRIG;
    Timer_DGU: TP;
    END_VAR
    VAR RETAIN
    END_VAR
    VAR CONSTANT RETAIN
    T_porog_1: REAL := 40; (*порог температуры летом 40 градусов*)
    T_porog_2: REAL := +5; (*порог температуры_+5*)
    T_porog_3: REAL := -5; (*порог температуры_-5*)
    T_porog_4: REAL := -20; (*порог температуры_-20*)
    T_porog_5: REAL := -30; (*порог температуры_-30*)
    U_porog_AKB: REAL := 50; (*порог разряда АКБ*)
    U_porog_AKB_zrd: REAL := 55.9; (*порог заряда АКБ*)
    U_porog_AKB_start: REAL := 12 ; (*порог напряжения АКБ стартового*)
    END_VAR

    PLC_PRG

    U_in_1_conv := DWORD_TO_REAL(U_in_11)*4.768372E-006; (*напряжение канал_1*)
    U_in_2_conv := DWORD_TO_REAL(U_in_2)*4.768372E-006; (*напряжение канал_2*)

    IF U_in_1_conv <= U_porog_AKB THEN
    Start := 1; (*старт программы*)
    END_IF

    Timer_letom(IN:=U_out_2 , PT:=T#5m , Q=> , ET=> ); (*таймер на вкл.дгу после вентиляции*)
    Timer_TP23(IN:=Obog , PT:=T#45m , Q=> , ET=> ); (*таймер работы подогрева картера*)
    Timer_Webasto(IN:=U_out_3 , PT:=T#15s , Q=> , ET=> ); (*таймер задержки включения обогрева webasto*)
    Timer_raboti_Webasto(IN:=Timer_Webasto.Q , PT:=T#43m45s , Q=> , ET=> ); (*таймер работы обогрева*)
    Timer_zad_vkl_DGU(IN:=U_out_3 , PT:=T#10s , Q=> , ET=> ); (*таймер задержки вкл.ДГУ после обогрева через 10 сек*)
    F_TRIG1(CLK:=Timer_zad_vkl_DGU.Q , Q=> ); (*триггер активации таймера работы дгу*)
    Timer_DGU(IN:=F_TRIG1.Q , PT:=T#120m , Q=> , ET=> ); (*таймер работы ДГУ*)

    (*Если старт программы и температура от 5 до 40 то запустить ДГУ*)
    IF Start = 1 AND Temp_1 >= T_porog_2 AND Temp_1 <= T_porog_1 THEN (*режим_0*)
    Indikator0 := 1;
    U_out_1 := 1;
    U_out_3 := 0;
    U_out_4 := 0;
    Obog := 0;
    (*если старт программы и температура больше 40 то включить вентиляцию и ДГУ*)
    ELSIF Start = 1 AND Temp_1 >= T_porog_1 THEN (*режим_1*)
    Indikator1 := 1;
    U_out_2 := 1;
    U_out_1 := Timer_letom.Q;
    (*Если старт программы и температура от -5 до +5 то включить подогрев картера, обогрев и ДГУ*)
    ELSIF Start = 1 AND Temp_1 > T_porog_3 AND Temp_1 < T_porog_2 THEN (*режим_2*)
    Indikator2 := 1;
    Obog := 1;
    U_out_3 := Timer_TP23.Q;
    U_out_4 := Timer_raboti_Webasto.Q;
    U_out_1 := Timer_DGU.Q;
    ELSE
    Obog := 0;
    Indikator0 := 0;
    Indikator1 := 0;
    Indikator2 := 0;
    U_out_1 := 0;
    U_out_2 := 0;
    U_out_3 := 0;
    U_out_4 := 0;
    END_IF
    (*если АКБ зарядился то выключить все*)
    IF U_in_1_conv >= U_porog_AKB_zrd(* OR F = 0*) THEN
    Start := 0;
    (* U_out_2 := 0; Rele_2 := 0;
    U_out_1 := 0; Rele_1 := 0;
    U_out_3 := 0;*)
    END_IF
    Необходимо чтобы если запускался какой либо из режимов и начале работы программы, то дорабатывал до конца. Я новичок в этом деле, может необходимо пользоваться системными событиями и как можно это реализовать? желательно с примером...

    задача такова, как только напряжение на аккумуляторе падает ниже 50В то активируется программа:
    0 режим: если температура больше 40 градусов, то включается вентиляция и через 5 минут включается Дизель-генератор, и отрабатывает пока АКБ не зарядится до 55.9 В, но не более 120 минут.
    1 режим: если температура от +5 до 40 градусов, то сразу включается Дизель-генератор и отрабатывает пока АКБ не зарядится до 55.9 В, но не более 120 минут.
    2 режим: если температура от -5 до +5 градусов, то включается подогрев картера, через 15 секунд включается обогреватель на 45 минут, после выключаются и через 10 сек, после выключения обогревателя и подогрева картера запускается дизель-генератор и отрабатывает пока АКБ не зарядится до 55.9 В, но не более 120 минут.

    К этому необходимо проконтролировать запуск обогрева (после того как запускается второй режим, где температура -5 - +5, запоминаем температуру, после 10 минут работы обогрева нужно сравнить реальную и зафиксированную температуру, если она поднялась на 10 градусов, то продолжить отработку режима до конца, если не поднялась, то провести запуск режима еще раз с самого начала, при 3х неудачных попытках выдать сигнал тревоги)

  5. #15
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,591

    По умолчанию

    Цитата Сообщение от Slait_gul Посмотреть сообщение
    Необходимо чтобы если запускался какой либо из режимов и начале работы программы, то дорабатывал до конца.
    не используйте IF-ы, а перейдите на CASE

    и кто Вам предложил использовать такую запись VAR CONSTANT RETAIN
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  6. #16

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    не используйте IF-ы, а перейдите на CASE

    и кто Вам предложил использовать такую запись VAR CONSTANT RETAIN
    энергонезависимые константы чем-то отличаются от просто энергонезависимых переменных?

    не могли бы вы проиллюстрировать (хоть словами) как можно заменить на case?

  7. #17
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,591

    По умолчанию

    Цитата Сообщение от Slait_gul Посмотреть сообщение
    энергонезависимые константы чем-то отличаются от просто энергонезависимых переменных?
    Вы не там ищите разницу, константа и без энергонезависимости при включении останется с таким же значением, а сохранение при пропадании питания нужно только изменяемым переменным

    по поводу кейсов, в теле условия наступления старта, присвойте переменной номер режима, далее откройте кейс с этой переменной и пропишите все действия необходимые для данного режима
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  8. #18

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    по поводу кейсов, в теле условия наступления старта, присвойте переменной номер режима, далее откройте кейс с этой переменной и пропишите все действия необходимые для данного режима
    так если я через иф присваиваю номер режима, запускаю кейс, то при повышении температуры изменится номер режима, и кейс прекратит свою работу

  9. #19
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,591

    По умолчанию

    фронт события, так будет понятно когда задавать режимы
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  10. #20

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    фронт события, так будет понятно когда задавать режимы
    понял, попробую, спасибо) а по поводу контроля проверки, запустился или нет, как можно реализовать?

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Похожие темы

  1. Цикл на языке ST
    от servo в разделе ПЛК1хх
    Ответов: 17
    Последнее сообщение: 06.06.2019, 16:00
  2. Задержка на языке ST
    от burn в разделе ПЛК1хх
    Ответов: 14
    Последнее сообщение: 13.10.2017, 11:38
  3. Программа для ПЛК на языке SFC
    от corsar в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 07.05.2013, 02:53
  4. Вызов POU на языке LD
    от ZPavel в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 27.02.2012, 23:55
  5. Несколько AND и OR в языке ST
    от Wanted в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 18.11.2008, 15:19

Ваши права

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