2 votos

Error de matriz singular LTspice al cambiar los parámetros del modelo

Estoy intentando crear un modelo de un IGBT con el modelo Z de LTspice.

Iniciado con los valores por defecto funciona. Cuando cambio los parámetros más y más me sale el "error de matriz singular" para ciertas combinaciones.

Hago un DOE, es decir, cambio cada valor más/menos un 10% y simulo todas las combinaciones posibles; 1024 combinaciones con 10 parámetros. Con el método fraccionario lo reduje a 64 combinaciones, la mayoría pasan 60-63 y 1-4 cometen el error, es decir, valores similares funcionan.

Ya he añadido Rs y Cs que no tienen sentido eléctricamente, pero he reducido la tasa de error del 25% inicial a dichos 1-4 errores.

¿Alguien tiene idea de qué más se puede hacer?

enter image description here

Si elimino el esquema del recuadro rojo, el circuito del recuadro verde funcionará; si el circuito del recuadro rojo está presente, también obtengo resultados erróneos para el circuito del recuadro verde.

Sé que LTspice compila un circuito en una matriz, y si algo va mal en la matriz también afectará a cosas eléctricamente independientes.

Es importante calcular la característica de salida Ic vs Uce y Uce max en el mismo esquema, porque el optimizador sólo maneja un esquema a la vez.

¿Alguna idea de opciones o piezas adicionales para solucionarlo? .options noopiter o gmin=0 no tienen ningún resultado a las direcciones correctas.

\===============================================

APÉNDICE:

Para permitir una mejor comprensión de cuál es el problema, aquí está mi proyecto completo con la simulación y el error de matriz singular:

Definí los parámetros del IGBT como variables y cambié esto por una herramienta para simular una tabla DOE fraccionada. La herramienta escribirá un netlist e iniciará LTspice en modo batch, pero con un único inicio manual de LTspice con los mismos parámetros IGBT tengo el mismo error; es independiente de la herramienta: el netlist es el mismo, los errores son los mismos.

Cuando simulo el circuito del recuadro rojo y el circuito del recuadro verde por separado no obtengo ningún error.

enter image description here

Por lo tanto, he borrado una vez el cicuit en rojo y otra vez el circuito en verde, por lo que estoy seguro de que no hay diferencia entre los circuitos.

Esta es la tabla con los resultados de la caja verde, está completa:

enter image description here

Y este es el resultado para la caja roja, también está completa:

enter image description here

Si simulo los dos juntos, caja roja y verde en un esquema, la caja verde tiene los errores marcados en amarillo, si simulo estos puntos manualmente obtengo un error de matriz singular la mayoría de las veces; a veces LTspice chasquea.

enter image description here

Necesito los dos juntos porque el optimizador que se ejecuta detrás de la tabla DOE tiene que encontrar la característica de salida y el máximo voltaje Uce para los valores dados en la hoja de datos. No puede ejecutar dos archivos separados.

Para encontrar el maximo voltaje Uce es posible cambiar la corriente para I1, tambien cambiarlo a una fuente de voltaje, pero todo lo que intente tiene el error en algunos casos.

Los resultados de la tabla DOE deben estar completos para crear una función de transferencia válida para el optimizador.

He cambiado veces en una fuente de tensión, han limitado la tensión máxima de lo contrario hay aún más problemas

Y aunque el barrido DC no cambia nada a la hora de determinar la tensión máxima hay diferentes resultados

Y también aquí, aunque eléctricamente no es relevante con el Barrido CC, los condensadores influyen en los resultados. enter image description here

El procedimiento con las 65 configuraciones está automatizado, es un optimizador que crea una función de transferencia a partir de las 65 configuraciones para variables de salida previamente definidas, que se simulan con LTspice, a partir de los resultados y las variables de entrada. A continuación, las variables de entrada se definen con el fin de alcanzar los valores objetivo para las variables de salida lo mejor posible a través de la función de transferencia. Con estas nuevas variables se crea de nuevo una tabla DOE y se repite todo, el número de iteraciones lo defino yo, entre 10 y 25, eso significa de 650 a 1625 simulaciones y la solución debe entonces funcionar para todas, sin C's la tasa de error es >20% con C's es ~3%, pero eso entonces tampoco es solución, debe ser 0%.

Ahora la razón por la cual no lo simule por separado, el optimizador hasta ahora solo trabaja con un solo netlist, de un solo "archivo LOG" se leen los resultados. Si lo simulo por separado, no puedo tener en cuenta la influencia mutua de la característica de salida y la tensión máxima al crear la función de transferencia.

Pero parece que la única solución es cambiar el optimizador para que tenga en cuenta los netlists múltiples.

ACTUALIZACIÓN: He cambiado el optimizador para que varios archivos ltspice pueden ser llamados para recoger los datos para una configuración. Esto significa que la determinación de la tensión máxima se puede hacer por separado del mapa de salida en una simulación separada. La simulación .op y .dc sólo para el voltaje máximo no trajo el 100% de éxito, hubo menos errores de simulación pero todavía demasiados. El cambio de R de 100n a 1m aumentó el número de errores, contrariamente a la teoría de que es más fácil cuando los números están más juntos. Las capacidades en la simulación .op o .dc en realidad no tienen influencia en el comportamiento de error del simulador, pero al final no son una solución cuando tiene que funcionar estable durante cientos de configuraciones.

La última idea entonces era hoy, hago un análisis .tran y medir la tensión de CC después de que el sistema se asienta, esto no es notablemente más lento y hasta ahora más de 400 simulaciones sin errores Importante la opción "iniciar la tensión de alimentación de CC externa a 0V", porque en el punto de funcionamiento hubo problemas di debe ser omitido

En cuanto a los errores de simulación que tengo para 400 simulaciones no hay diferencia si tengo el R = 100n o Rg = 1 y Rs = 1m, ambos se ejecuta bien

Parece que el modelo IGBT es más robusto para la simulación de transitorios.

Actualización de los resultados

2voto

user44635 Puntos 4308

Matriz singular significa muy pocas ecuaciones para el número de variables.

Normalmente, un nodo flotante (sólo condensadores o fuentes de corriente que se conectan a él), o un bucle de impedancias cero (fuentes de tensión o inductores ideales), es el culpable, aunque un rango dinámico enorme para los componentes también puede causar problemas. No veo ninguno de esos errores en el cuadro rojo.

Sin embargo, no veo ninguna definición de {R} y {C}. Esto no debería importar si como son finitos, y no demasiados órdenes de magnitud de distancia de los otros componentes. Tal vez actualizar su imagen para mostrar toda la entrada de simulación.

2voto

dumfries Puntos 1

Para tu información, he aquí cómo probé tu circuito:

no 100n res

Algunas cosas a tener en cuenta:

  • No he utilizado R ni C pero, si tuviera que hacerlo, recurriría a m, no a menos (al fin y al cabo, ya estás tratando con Amperios);
  • El resultado que ves ahí es el único de los 4 que necesitó el método pseudo-transitorio para converger pero, convergió (después de ~1 s más o menos) -- el resto fue suave, sin problemas pero, esos fueron los únicos parámetros que usé, no .STEP ;
  • Usted está utilizando una temperatura de 150 ° que puede empujar a los cálculos numéricos detrás de las escenas, por ejemplo, los parámetros que se ven son intermedios y establecen los valores de las cantidades internas, que son dependientes de la temperatura;

Sin embargo, hay algo que me desconcierta: dices que, por separado, el circuito rojo y el verde funcionan, pero que hay que simularlos juntos. ¿Por qué? A mi modo de ver, estás barriendo la fuente de tensión de alimentación para leer la corriente pero, el circuito rojo es muy "estático", no tiene variaciones. Ese se podría simular en un solo punto, externamente, y no importaría para nada el circuito verde. Y no puede ser que necesites alguna cantidad a leer del rojo para usarla en el verde, o viceversa, ya que los estás simulando en el mismo circuito. Si el rojo da alguna lectura para utilizarla en un futuro para el verde (o viceversa) entonces, de nuevo, puede ejecutar en paralelo igual de bien y considerar n+1 para rojo y n por verde (o viceversa) -- no debería haber diferencia. ¿A menos que haya algo más?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X