LTSpice: ¿cómo le paso a una función un nombre de componente como parámetro?

2

Buenos días a todos. Estoy implementando un subcircuito en LTspice, y también quiero modificar el plot.defs para calcular algunas cantidades con los voltajes / corrientes dentro del subcircuito. Así, tendré una función como:

  

.func A (x) V (x: Vo) / V (x: Vin)

donde la función "A" debe tomar el nombre de instancia del subcircuito como parámetro, para acceder a sus nodos (etiquetados como Vo y Vin en el subcircuito, usando una fuente de voltaje de comportamiento para hacer que el nombre del nodo sea siempre el mismo) .

La sintaxis escrita anteriormente no funciona, aparece el error:

  

símbolo indefinido en: "A (< >)"

Donde, por supuesto, "X1" es el nombre dado por spice a la instancia de mi subcircuito. ¿Cual podría ser el problema? Tenga en cuenta que al escribir explícitamente la expresión "A" en el panel de trazado, todo funciona bien, por lo que es una cuestión de cómo pasar el nombre de la instancia como parámetro.

¡Gracias a todos por adelantado!

    
pregunta Alessandro Russo

2 respuestas

0

Aquí hay dos problemas, no pude obtener una función definida por el usuario para trabajar en el gráfico. El otro es su intento de hacer una función que pase un parámetro, cuando solo puede usarlos para pasar información numérica.

La otra es que no puede hacer referencia a un pin actual en ningún lugar excepto en un gráfico, por lo que si usa los dos puntos, no funcionará. La forma de hacer referencia a una corriente de pines se describe en algunas respuestas como esta . La respuesta corta es si desea hacer referencia a una corriente de pin con una resistencia de cero ohmios o una fuente de voltaje de 0 V y luego medir la corriente (es decir, para una resistencia llamada R2, puede hacer esto I (R2), pero no esta I ( R2: 1))

No puede usar gráficamente las funciones definidas por el usuario, puede usarlas en las fuentes b y otras áreas del archivo spice. Si surge la necesidad de graficar una función, use una fuente b para convertir la función a datos que se puedan graficar. Inconveniente, pero así es, y es poco probable que cambie a la forma en que funciona la especia LT.

    
respondido por el laptop2d
0

Aparentemente, funciona tanto con voltajes como con corrientes, pero el formato de la definición es diferente, eso es lo que me he perdido:

.func Vx()=V(X1:Vo)/V(X1:Vin)

Y cuando desee trazarlo, simplemente llame a Vx() . En realidad, también funciona para corrientes de entrada / salida de pines, luego es Ix(X1,R1) , por ejemplo, pero observe que el designador también debe incluir el número, es decir, X1 , no simplemente X . Además, el nodo será el pin del símbolo, no la definición del subcircuito. P.ej. Si tiene .subckt xxx 1 2 , pero el símbolo tiene los pines llamados A y B , entonces la corriente debería ser Ix(U1:A) , no Ix(U1:1)

Para que esto funcione, debe haber marcado una o ambas opciones, en Control Panel > Save Defaults > Save subcircuit [...] .

La mala suposición (mea culpa) que hice en los comentarios fue sobre el análisis, pero eso ya no es relevante, ya que el trazado es después de la simulación, el archivo plot.defs solo se necesita después.

    
respondido por el a concerned citizen

Lea otras preguntas en las etiquetas