Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 29

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

  1. #1

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

    Добрый день, необходимо написать программу для запуска подогревом, дизель генератором (ДГУ) и вентиляцией в зависимости от напряжения АКБ и температуры, большая проблема с счетчиками, не могу понять как задать цикл, и сброс.

    Задача такова, необходимо запускать ДГУ при падении напряжения на аккумуляторе ниже 50В.
    В зависимости от внешних условий.
    1) Если летом температура с датчика больше 40 градусов, то необходимо включить вентилятор за 5 минут до включения ДГУ.
    Выключение ДГУ произвести как напряжение на АКБ превысит 56В.

    2) В зимнем режиме.
    Перед формированием вкл.ДГУ необходимо вкл.обогрев на определенное время:
    - при температуре от -5 до +5, время обогрева 45 минут;
    - при температуре от -20 до -5, время обогрева 60 минут;
    - при температуре от -30 до -20, время обогрева 75 минут.
    После запуска обогрева проверить температуру через 15 минут, если она не увеличилась на 10 градусов (т.е. обогрев не включился), то сигнал обогрева выключить и включить заново, повторить 3 раза, если после 3х раз обогрев не включился, то ДГУ не включать, а сформировать сигнал тревоги.
    По окончании подогрева, включить ДГУ пока напряжение на АКБ не превысит 56В, но не более чем на 120 минут.

    Большая проблема с таймерами и их сбросом, если летнее условие выполняется я включаю вентиляцию, после завожу таймер на задержку включения для ДГУ, после 5 минут ДГУ включается, при заряде АКБ>56В выключаю вентиляцию и ДГУ, но при повторной просадке напряжения, включается вентиляция и одновременно с ней ДГУ, т.к. таймер не сбросился с прошлого раза.....

    Кто чем может, буду рад помощи..

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

    По умолчанию

    Ну а сам код то где?

  3. #3
    Пользователь Аватар для Василий Кашуба
    Регистрация
    20.11.2011
    Адрес
    Ставрополь
    Сообщений
    2,492

    По умолчанию

    Совершенно верно, где программа? На форуме экстрасенсов и ясновидящих нет.

  4. #4
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    1,126

    По умолчанию

    А что за таймеры используются - TOF, TP, TON?
    Просто в библиотеке OSCAT, вроде, были TOF и TP со сбросом

  5. #5

    По умолчанию

    Вот маленький кусочек, в котором если напряжение на АКБ падает меньше порога, то при температуре выше 40 летом включить вентилятор и через 10 сек, таймером с задержкой включения, запустить Генератор. При заряде АКБ выше порога заряда, отключить. Все выполняется, но при повторном разряде АКБ таймер не запускается, а включается вентилятор и Генератор одновременно т.к. выход таймера не сбрасывается,а находится все время в положении TRUE.

    PROGRAM PLC_PRG
    VAR
    U_in_1_conv: REAL; (*Напряжение канал 1*)
    U_porog_AKB: REAL := 50; (*Порог разряда АКБ*)
    U_porog_AKB_zrd: REAL := 55.9; (*Порог заряда АКБ*)
    Timer_letom: TON; (*Таймер_запуска_ДГУ_летом_через_5_мин_после_венти лятора*)
    Start: BOOL;
    Temp_1: REAL; (*температура*)
    T_porog_1: REAL := 40; (*Порог_температуры_летом_40_градусов*)
    U_out_1: BOOL; (*Вкл. Генератора*)
    U_out_2: BOOL; (*Вкл. вентилятора*)
    END_VAR

    Программа:

    IF U_in_1_conv <= U_porog_AKB THEN
    Start := 1;
    END_IF

    IF Start = 1 AND Temp_1 >= T_porog_1 THEN
    U_out_2 := 1;
    Timer_letom(IN:=U_out_2 , PT:=T#10s , Q=> , ET=> );
    U_out_1 := Timer_letom.Q;
    ELSE
    U_out_2 := 0;
    U_out_1 := 0;
    END_IF

    IF U_in_1_conv >= U_porog_AKB_zrd THEN
    Start := 0;
    END_IF
    Последний раз редактировалось Slait_gul; 04.07.2017 в 12:20.

  6. #6
    Пользователь Аватар для Василий Кашуба
    Регистрация
    20.11.2011
    Адрес
    Ставрополь
    Сообщений
    2,492

    По умолчанию

    Сделайте так.

    IF U_in_1_conv >= U_porog_AKB_zrd THEN
    Start := 0;
    U_out_2 := 0;
    END_IF

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

    По умолчанию

    Цитата Сообщение от Василий Кашуба Посмотреть сообщение
    Сделайте так.

    IF U_in_1_conv >= U_porog_AKB_zrd THEN
    Start := 0;
    U_out_2 := 0;
    END_IF
    ну и зачем? Разве не разглядели, что
    Код:
    U_out_2 := 1;
    Timer_letom(IN:=U_out_2 , PT:=T#10s , Q=> , ET=> );
    в любом случае небудет сброса таймера и включение чего то с задержкой
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  8. #8

    По умолчанию

    U_out_2 переходит в False , эту проблему решил, путем выноски таймера за цикл

    IF U_in_1_conv <= U_porog_AKB THEN
    Start := 1;
    END_IF

    Timer_letom(IN:=U_out_2 , PT:=T#10s , Q=> , ET=> );

    IF Start = 1 AND Temp_1 >= T_porog_1 THEN
    U_out_2 := 1;
    U_out_1 := Timer_letom.Q;
    ELSE
    U_out_2 := 0;
    U_out_1 := 0;
    END_IF

    IF U_in_1_conv >= U_porog_AKB_zrd THEN
    Start := 0;
    END_IF

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

    По умолчанию

    Код:
    U_out_2 := Start = 1 AND Temp_1 >= T_porog_1
    Timer_letom(IN:=U_out_2 , PT:=T#10s , Q=> U_out_1 );
    должно быть достаточно такого кода
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  10. #10

    По умолчанию

    Есть другой вопрос, как реализовать проверку работы вентилятора в течении часа, в момент подачи сигнала на вентилятор запомнить значение температуры, и после 15 минут снять новое значени и сравнить с прошлым, понизилась ли она на 10 градусов или нет, если да, то все хорошо,а если нет, то сформировать сигнал выключения и включения заново, если после трех раз он не включился, то выдать сигнал тревоги на какой либо датчик.....

Страница 1 из 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, 03:53
  4. Вызов POU на языке LD
    от ZPavel в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 28.02.2012, 00:55
  5. Несколько AND и OR в языке ST
    от Wanted в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 18.11.2008, 15:19

Ваши права

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