Показано с 1 по 4 из 4

Тема: Обычные выходы как выходы с ШИМ

  1. #1

    Lightbulb Обычные выходы как выходы с ШИМ

    Ранее была тема по поводу мерцаний самописного ШИМ сигнала для обычных DO ПЛК210-03. Проблема была решена после того, как замкнул быстрый вход и обычный выход в цепь. Но вот возникла другая проблема: частота. Частота получается около 15Гц, что мало для работы клапанов манипулятора. Нужно хотя бы 50Гц получить, это было бы уже приемлемо для их работы. Вот код ШИМ, который по итогу получился:

    Код:
    PROGRAM BLINKER
    VAR_INPUT
    	pwm_coef: UDINT;
    END_VAR
    VAR
    	flag1: BOOL; 
    	in: BOOL;
    	isPWM: BOOL;
    	B_TRIG: OSCAT_BUILDING.OSCAT_BASIC.B_TRIG;
    		
    	x: UINT := 0;
    	COEF17: 	ARRAY [0..5] OF BOOL := [1,0,0,0,0,0];
    	COEF34: 	ARRAY [0..5] OF BOOL := [1,1,0,0,0,0];
    	COEF50: 	ARRAY [0..5] OF BOOL := [1,1,1,0,0,0];
    	COEF67: 	ARRAY [0..5] OF BOOL := [1,1,1,1,0,0];
    	//COEF84: 	ARRAY [0..5] OF BOOL := [1,1,1,1,1,0];
    	
    	counter: INT := 0;
    	out_value: BOOL;
    END_VAR
    VAR_OUTPUT
    END_VAR
    Код:
    IF flag1 AND in THEN
    	isPWM := TRUE;
    	flag1 := FALSE;
    
    ELSIF NOT flag1 AND NOT in THEN
    	isPWM := TRUE;
    	flag1 := TRUE;
    END_IF
    
    IF isPWM THEN
    	CASE pwm_coef OF
    		0:
    			out_value := FALSE;
    		1:	
    			out_value := COEF17[x];
    		2:
    			out_value := COEF34[x];
    		3:
    			out_value := COEF50[x];
    		4:
    			out_value := COEF67[x];
    		5:
    			out_value := TRUE;
    	END_CASE
    	
    	x := x+1;
    	
    	isPWM := FALSE;
    	
    	IF x >= 5 THEN
    		x := 0;
    	END_IF
    END_IF

  2. #2

    По умолчанию

    Цитата Сообщение от Dmitry Dedkov Посмотреть сообщение
    Ранее была тема по поводу мерцаний самописного ШИМ сигнала для обычных DO ПЛК210-03. Проблема была решена после того, как замкнул быстрый вход и обычный выход в цепь. Но вот возникла другая проблема: частота. Частота получается около 15Гц, что мало для работы клапанов манипулятора. Нужно хотя бы 50Гц получить, это было бы уже приемлемо для их работы. Вот код ШИМ, который по итогу получился:

    Код:
    PROGRAM BLINKER
    VAR_INPUT
    	pwm_coef: UDINT;
    END_VAR
    VAR
    	flag1: BOOL; 
    	in: BOOL;
    	isPWM: BOOL;
    	B_TRIG: OSCAT_BUILDING.OSCAT_BASIC.B_TRIG;
    		
    	x: UINT := 0;
    	COEF17: 	ARRAY [0..5] OF BOOL := [1,0,0,0,0,0];
    	COEF34: 	ARRAY [0..5] OF BOOL := [1,1,0,0,0,0];
    	COEF50: 	ARRAY [0..5] OF BOOL := [1,1,1,0,0,0];
    	COEF67: 	ARRAY [0..5] OF BOOL := [1,1,1,1,0,0];
    	//COEF84: 	ARRAY [0..5] OF BOOL := [1,1,1,1,1,0];
    	
    	counter: INT := 0;
    	out_value: BOOL;
    END_VAR
    VAR_OUTPUT
    END_VAR
    Код:
    IF flag1 AND in THEN
    	isPWM := TRUE;
    	flag1 := FALSE;
    
    ELSIF NOT flag1 AND NOT in THEN
    	isPWM := TRUE;
    	flag1 := TRUE;
    END_IF
    
    IF isPWM THEN
    	CASE pwm_coef OF
    		0:
    			out_value := FALSE;
    		1:	
    			out_value := COEF17[x];
    		2:
    			out_value := COEF34[x];
    		3:
    			out_value := COEF50[x];
    		4:
    			out_value := COEF67[x];
    		5:
    			out_value := TRUE;
    	END_CASE
    	
    	x := x+1;
    	
    	isPWM := FALSE;
    	
    	IF x >= 5 THEN
    		x := 0;
    	END_IF
    END_IF

    Добрый день.

    По Вашему коду получается, что каждый из массивов COEFx проходится за 6 циклов ПЛК (обычно это 10 мс). 60 мс - это как раз около 15 Гц.
    Рассмотрите вместо этого использование блока PWM_PW из библиотеки OSCAT_BASIC. https://ftp.owen.ru/CoDeSys3/98_Book...asic333_ru.pdf
    Инженер по продукту ПЛК

    e-mail: a.pineko-skvortsov@owen.ru

  3. #3

    По умолчанию

    По Вашему коду получается, что каждый из массивов COEFx проходится за 6 циклов ПЛК (обычно это 10 мс). 60 мс - это как раз около 15 Гц.
    да, забыл сказать, что эта часть кода выведена как отдельная задача. Там цикл поставил 3 мс (ТЕ 6 циклов = 18 мс), но получается почему-то те самые 15 Гц

    Рассмотрите вместо этого использование блока PWM_PW из библиотеки OSCAT_BASIC. https://ftp.owen.ru/CoDeSys3/98_Book...asic333_ru.pdf
    Попробую

  4. #4

    По умолчанию

    Попробовал, но частота плавает, сигнал не постоянный. Есть варианты как можно сделать сигнал стабильным?

Похожие темы

  1. выходы ТРМ
    от murzik в разделе Трёп (Курилка)
    Ответов: 2
    Последнее сообщение: 18.04.2022, 09:36
  2. ПР-200 Выходы F1 и F2
    от Intal в разделе Программируемые реле
    Ответов: 3
    Последнее сообщение: 21.03.2019, 14:40
  3. ТРМ 151 выходы
    от serenkiy515 в разделе Эксплуатация
    Ответов: 2
    Последнее сообщение: 25.10.2013, 20:23
  4. выходы Р или К?
    от service в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 11.12.2012, 13:38
  5. Ответов: 20
    Последнее сообщение: 18.04.2012, 16:01

Ваши права

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