SPWM
Este bloco implementa um PWM em software.
A partir de um tempo de ciclo (CYC) definido pelo usuário, o bloco controla o valor de uma saída boleana (OUT) variando o tempo ativo da saída de 0 a 100% do tempo de ciclo especificado.
Bloco
SPWM
+--------------+
BOOL ----|START OUT|---- BOOL
| |
TIME ----|CYC CYC_EV|---- BOOL
| |
REAL ----|IN |
+--------------+
Dica
Para conhecer melhor o recurso e suas funcionalidades acesse o vídeo tutorial: Bloco de Função SPWM.
Diagrama de Tempo
!- - Tcyc - -|- - Tcyc- -|- - Tcyc - -|- - Tcyc - -|
+------------+-----------+------------+------------+
t0 t1 t2 t3 t4
+---+ +-----+ +--------+ +------------+
OUT | | | | | | | |
--+ +--------+ +-----+ +---+ +
! 25% ! 50% ! 75% ! 100% !
Nota
Como o tempo do PWM é dependente do ciclo de scan do programa de aplicação pode existir um erro max. de 1 ciclo de scan no cálculo do pulso de saída. Para minimizar este erro, o tempo de ciclo (CYC) é limitado em no mínimo 100 ms.
A resolução da largura de pulso da saída é função do tempo de ciclo. Com o tempo de ciclo mínimo (100 ms) a saída possuirá resolução de aproximadamente 7 bits (~1 a 2% do sinal de entrada). Já com um tempo de ciclo de 1000 ms a resolução da saída será da ordem de 10 bits.
Importante
Alterações no valor do tempo de ciclo devem ser realizadas com o bloco inativo (START = FALSE). Se o valor for alterado com o bloco ativado não será processado o novo valor até que ocorra uma nova transição do sinal de START.
Alterações no valor da entrada IN só serão refletidas na saída OUT* após o termino do ciclo corrente.
Parâmetros
Nome |
Classe |
Tipo |
Dim. |
V. Ini. |
Descrição |
START |
Entrada |
BOOL |
TRUE |
Ativação do bloco |
|
CYC |
Entrada |
TIME |
T#0ms |
Tempo ciclo do PWM (Min = 100 ms) |
|
IN |
Entrada |
REAL |
0.0 |
Valor da largura do pulso de saida (0..100) |
|
OUT |
Saída |
BOOL |
FALSE |
Valor da saída PWM do bloco |
|
CYC_EV |
Saída |
BOOL |
FALSE |
Gera um pulso a cada ciclo do PWM |
Exemplo
Declaração de Variáveis
Nome |
Tipo |
Valor Inicial |
Descrição |
|---|---|---|---|
inp_IN |
REAL |
15.0 |
Entrada do PWM |
pwm_inst |
HILS.SPWM |
Instancia do bloco SPWM |
Código ST
(* Exemplo de ativação do bloco SPWM dentro da POU *)
(* ... *)
(* Ativação da instancia do bloco SPWM *)
pwm_inst(
IN := inp_IN, // valor da saida do PWM
CYC := T#1000ms // Tempo de ciclo
);
// Direciona a saida do PWM para a saída digital 0 do equipamento
DO00 := pwm_inst.OUT;
(* ... *)