Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 14 из 14

Тема: Вопрос про ШИМ

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

    По умолчанию

    Цитата Сообщение от Dmitry Dedkov Посмотреть сообщение
    Так это частота, а не коэффициент заполнения
    Библиотека оскат блок tpx
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

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

    По умолчанию

    //50Гц
    клапан := заполнение >= time_to_dword(time()) mod 20;

    заполнение 0..20 (шаг 1), что есть 0.00..1.00 (шаг 0.05)

    Вопрос только в цикле ПЛК.
    Точней только железные
    Последний раз редактировалось Валенок; 25.06.2024 в 17:21.

  3. #13

    По умолчанию

    Только что узнал о существовании подобных устройств...
    Первый вопрос, который возник - увидел в брошюре, что эти клапаны могут дооснащаться преобразователями 4-20 мА -> ШИМ (2 А) - может быть дооснастить штатным устройством?

  4. #14

    По умолчанию

    Получилось реализовать ШИМ на основе двух таймеров, только вот мерцания все так же сохранились. Скорее всего это из-за того, что эти выходы работают с максимальной частотой 300 Гц в зависимости от цикла ПЛК
    Код:
    PROGRAM PWM
    VAR_INPUT
    	pwm_coef: UDINT := 0; //1%=10
    	pwm_freq: UDINT := 20; //в UW
    	time_set: TIME;
    END_VAR
    VAR_OUTPUT
    	out_value: BOOL;
    END_VAR
    VAR
    	freqTimer: OSCAT_BUILDING.OSCAT_BASIC.CLK_PRG; //таймер, выводящий сигнал с потоянной частотой
    	pwmTimer: OSCAT_BUILDING.OSCAT_BASIC.TP_X; //таймер ШИМ
    END_VAR
    Код:
    //time_set := REAL_TO_TIME(1000*REAL_TO_UDINT(1.0/TO_REAL(pwm_freq)));
    freqTimer(PT := time_set);
    //time_set := REAL_TO_TIME(REAL_TO_UDINT((1.0/TO_REAL(pwm_freq))*TO_REAL(pwm_coef)));
    time_set := TO_TIME(TO_REAL(T#20ms) * TO_REAL(pwm_coef)/1000); 
    pwmTimer(IN := freqTimer.Q, PT := time_set);
    
    out_value := pwmTimer.Q;

Страница 2 из 2 ПерваяПервая 12

Похожие темы

  1. Вопрос по САУ-М6
    от lokamber в разделе Эксплуатация
    Ответов: 2
    Последнее сообщение: 12.10.2016, 06:35
  2. Ответов: 0
    Последнее сообщение: 25.05.2016, 21:25
  3. Вопрос по ПЛК 110
    от myles в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 20.12.2011, 14:03
  4. вопрос по плк
    от Foxer в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 13.10.2009, 18:41
  5. Вопрос
    от Slipknot в разделе ПЛК1хх
    Ответов: 14
    Последнее сообщение: 07.10.2008, 09:44

Ваши права

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