Simulación en PLECS del siguiente circuito.
La idea principal es abrir / cerrar ambos IGBT con la misma señal de puerta para rastrear una referencia (forma triangular) cargando y descargando el capacitor. La única condición es que antes de abrir ambos dispositivos, el voltaje a través del capacitor debe ser de cero voltios. Para lograr esto, he escrito el siguiente código dentro del bloque C-Script.
int track(double ref, double isb, double vcs) {
int out;
if(isb > ref){
if (vcs < 1){
out = 0;
}
else{
out = 1;
}
}
else{
out = 1;
}
return out;
}
Sin embargo, como puede ver en el siguiente gráfico, después del segundo 4.5932, el voltaje a través del capacitor no pasará de 900 aprox. y aunque la corriente de salida ya no está cruzando la referencia, esto es ISB < REF, el circuito sigue cambiando.
Contexto.Comoestesoftwaregestionalasseñaleseléctricas(vectores),nohaynecesidaddeusararitméticosdepunterosydeclarardelasiguientemaneraloharíaeltruco,dondetrack.ccontieneelcódigoescritoarribayInput()esunamacroC-Scriptparadeclararentradas.Además,entiendoqueestebloquefuncionacomoun'buclefor'yaqueseejecutacadatiempodemuestra(establecidopormí:1e-4).Solveresunpasofijodiscreto(1e-5).
#include<float.h>#include<math.h>#include<stdio.h>#include"track.h"
#include "track.c"
#define REF Input(0) // Reference Current
#define ISB Input(1) // Snubber Output Current
#define VCS Input(2) // Capacitor Voltage
#define IGBT Output(0) // IGBT Firing