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

Clique aqui para baixar a tabela de variáveis

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;
(* ... *)