Multiplicador de impulso (PMUL)

Esta información se aplica a los controladores
CompactLogix
5370,
ControlLogix
5570,
Compact GuardLogix
5370,
GuardLogix
5570,
CompactLogix
5380,
ControlLogix
5580 y ControlLogix 5590.
La instrucción PMUL proporciona una interfaz desde un módulo de entrada de posición (como un módulo de retroalimentación de codificador o solucionador) hasta el sistema digital. Para ello, se calcula el cambio en la entrada de un escaneado al siguiente. Si se selecciona un tamaño de palabra específico, se configura la instrucción PMUL para que diferencie mediante el límite de reinicio de manera continua y lineal.
Idiomas disponibles
Diagrama de lógica de escalera
Esta instrucción no está disponible en el diagrama de escalera.
Bloque de funciones
RSL5K_PMUL Function Block_v31
Texto estructurado
PMUL(PMUL_tag);
Operandos
Bloque de funciones
Operando
Tipo
Formato
Descripción
PMUL tag
PULSE_MULTIPLIER
Estructura
Estructura PMUL
Texto estructurado
Operando
Tipo
Formato
Descripción
PMUL tag
PULSE_MULTIPLIER
Estructura
Estructura PMUL
Consulte Sintaxis de texto estructurado para obtener más información sobre la sintaxis de las expresiones dentro de texto estructurado.
Estructura de PULSE_MULTIPLIER
Parámetro de entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilita la entrada. Si no está activada, la instrucción no se ejecuta y las salidas no se actualizan.
Está establecido de forma predeterminada.
In
DINT
La señal de entrada analógica para la instrucción.
Válido = cualquier DINT
Valor predeterminado = 0
Initialize
BOOL
La entrada Initialize. Cuando está establecido, Out se mantiene a 0,0 y todos los registros internos se establecen a 0. En una transición de establecido a borrado de Initialize, In
n-1
= InitialValue (no válido para el modo Asoluto). Cuando está borrado, la instrucción se ejecuta normalmente.
InitialValue
DINT
La entrada del valor inicial. En una transición de establecido a borrado de Initialize, In
n-1
= InitialValue
Válido = cualquier DINT
Valor predeterminado = 0.
Mode
BOOL
La entrada de modo. Debe establecerse para habilitar el modo Relativo. Bórrelo para habilitar el modo absoluto.
Está establecido de forma predeterminada.
WordSize
DINT
El tamaño de palabra en bits. Especifique el número de bits por utilizar al calcular (In
n
-In
n-1
) en el modo Relativo.
WordSize no se utiliza en el modo Absoluto.
Si el cambio de In es superior a 1/2 * 2
(Wordsize-1)
, Out cambia el signo.
Si WordSize no es válido, Out se retiene y la instrucción establece el bit apropiado en Status.
Válido = de 2 a 32
Valor predeterminado = 14
Multiplier
DINT
El multiplicador. Divide este valor por 100.000 para controlar la relación entre In y Out. Si no es válido, la instrucción limita el valor y establece el bit correspondiente en Status.
Válido = de -1.000.000 a 1.000.000
Valor predeterminado = 100.000
Parámetro de salida
Tipo de datos
Descripción
EnableOut
BOOL
Habilita la salida.
Out
REAL
Out de la instrucción. Si el cálculo Out se desborda, Out se fuerza a
+
/- Infinity sign y el bit apropiado se establece en Status. Se establecen marcas de estado matemático para esta salida.
Status
DINT
Estado del bloque de funciones.
InstructFault (Status.0)
BOOL
La instrucción detectó uno de los siguientes errores de ejecución. No se trata de un error mayor o menor del controlador. Se comprueban los bits de estado restantes para determinar lo que ha ocurrido.
WordSizeInv (Status.1)
BOOL
Valor de WordSize no válido.
OutOverflow (Status.2)
BOOL
El cálculo de salida interna desbordado.
LostPrecision (Status.3)
BOOL
Out < -2
24
u Out > 2
24
. Si la instrucción convierte Out de un entero a un valor real, los datos se pierden si el resultado es superior a |2
24
|, porque el tipo de datos REAL está limitado a 2
24
.
MultiplierInv (Status.4)
BOOL
Valor de Multiplier no válido.
Descripción
La instrucción PMUL funciona en modo Relativo o Absoluto.
En modo Relativo, la salida de la instrucción es la diferenciación de la entrada entre escaneados, multiplicada por el valor de (Multiplier/100.000). En modo Relativo, la instrucción guarda cualquier resto después de la operación de división en un escaneado y lo vuelve a sumar durante el siguiente escaneado. De esta manera, la información de la posición no se pierde durante el transcurso de la operación.
PMUL Description relative mode
En modo Absoluto, la instrucción puede escalar una entrada (por ejemplo, una posición) sin perder ninguna información de un escaneado al siguiente.
PMUL Description
Cálculo de la salida y el resto
La instrucción PMUL utiliza estas ecuaciones para calcular Out en modo relativo o absoluto:
Ans = ((DiffInput x Multiplier) + INT_Remainder)
INT_Out = Ans / 100.000
INT_Remainder= Ans - (INT_Out * 100.000)
Out = INT_Out
Afecta a las marcas de estado matemáticas
No
Condiciones de fallo
El fallo menor ocurre cuando
Tipo de fallo
Código de fallo
La función está habilitada y se detecta un desbordamiento.
4
4
Consulte Atributos comunes para ver los fallos relacionados con el operando.
Ejecución
Bloque de funciones
Condición
Acción de bloque de funciones
Pre-escaneado
Los bits EnableIn y EnableOut se establecen en falsos.
Tag.EnableIn es falso
Los bits EnableIn y EnableOut se establecen en falsos.
Tag.EnableIn es verdadero
Los bits EnableIn y EnableOut se establecen en verdaderos.
La instrucción se ejecuta.
Primera ejecución de instrucción
N/A
Primer escaneado de instrucción
In
n-1
= In. Out
n-1
=0. Resto = 0.
Post-escaneado
Los bits EnableIn y EnableOut se establecen en falsos.
Texto estructurado
Condición/estado
Acción realizada
Pre-escaneado
Consulte Pre-escaneado en la tabla Bloque de funciones.
Ejecución normal
Consultar Tag.EnableIn es verdadero en la tabla Bloque de funciones.
Post-escaneado
Consulte Post-escaneado en la tabla Bloque de funciones.
Ejemplos
Ejemplo 1
El uso más habitual de la instrucción PMUL es en el modo de funcionamiento relativo. En este modo, la instrucción PMUL tiene varios objetivos. En primer lugar, en el modo relativo, la instrucción PMUL diferencia la información que recibe en su entrada entre escaneados. A medida que se reciben datos, la instrucción emite la diferencia de la entrada de un escaneado al siguiente. Esto significa que si In = 500 en el escaneado "n" y, a continuación, In = 600 en el escaneado "n+1", Out = 100 en el escaneado "n+1."
En segundo lugar, en este modo de funcionamiento, la instrucción PMUL también compensa los valores de "reinicio" de los datos binarios que se originan en un módulo de retroalimentación. Por ejemplo, un módulo de retroalimentación de solucionador puede tener 12 bits de resolución, representados como un valor binario, con signo, que va de -2048 a 2047. En términos de datossin procesar procedentes del módulo de retroalimentación, la rotación del dispositivo de retroalimentación se puede representar como se muestra a continuación:
PMUL Example 1
En este ejemplo, cuando el valor de los datos de retroalimentación se mueve de 2047 a -2048, el cambio efectivo de posición es equivalente a un salto de 4095 conteos en posición. En realidad, sin embargo, este cambio de posición es solo 1 parte de 4096 en relación con la rotación del dispositivo de retroalimentación de solucionador. Al conocer el verdadero tamaño de palabra de los datos que se introducen desde el módulo de retroalimentación, la instrucción PMUL visualiza los datos de forma rotativa, tal y como se muestra en el siguiente diagrama:
PMUL Example 2
Al conocer el tamaño de palabra de los datos que se introducen en este bloque, la instrucción PMUL diferencia una salida de 1 conteo cuando la entrada al bloque se mueve de 2047 a -2048, en lugar de la calculada matemáticamente de 4095.
CONSEJO: Al aplicar este bloque, es importante tener en cuenta que los datos de retroalimentación no deben cambiar más de la mitad del tamaño de palabra de un escaneado al siguiente, para poder diferenciar correctamente el sentido de rotación.
En el ejemplo anterior, si el dispositivo de retroalimentación se mueve en el sentido de las agujas del reloj de modo que en el escaneado 'A' lea 0 y en el escaneado 'B' lea -2000, el cambio real en la posición equivale a +2096 conteos en el sentido de las agujas del reloj. Sin embargo, dado que estos dos valores son más de la mitad del tamaño de las palabras (o más de la mitad de la rotación del dispositivo físico), la instrucción PMUL calcula que el dispositivo de retroalimentación ha girado en la dirección opuesta y devuelve un valor de -2000 en lugar de +2096.
El tercer atributo del bloque multiplicador de impulsos es que retiene los componentes fraccionarios de un escaneado al siguiente de cualquier resto que existe como resultado del factor de escalado Multiplier/100.000. A medida que se completa cada ejecución del bloque, el resto del escaneado anterior se añade nuevamente al total del valor actual de modo que todos los conteos o "impulsos" se contabilicen en última instancia y no se pierdan datos en el sistema. La salida del bloque, Out, siempre produce un número entero en un tipo de datos de punto flotante.
Bloque de funciones
RSL5K_PMUL Function Block Example 1_v31
Si se asume que Initial_Position = 0 y Multiplier = 2500 => (25.000/100.000)
Escaneado
Position_Feedback
PMUL_02.Out
Total_Position
n
0
0
0
n + 1
1
0
0
n + 2
2
0
0
n + 3
3
0
0
n + 4
4
1
1
n + 5
5
0
1
Texto estructurado
MUL_02.In := Position_feedback;
PMUL_02.Initalize := Initialize_Position;
PMUL_02.WordSize := 12;
PMUL_02.Multiplier := 25000;
PMUL(PMUL_02);
UPDN_02.Initialize := Initialize_Position;
UPDN_02.InPlus := PMUL_02.Out;
UPDN(UPDN_02);
Total_Position := UPDN_02.Out;
Ejemplo 2
En esta aplicación de eje de línea electrónica, la retroalimentación del motor A actúa como una referencia maestra que el motor B debe seguir. La retroalimentación del motor A tiene el alias "Position_feedback". La retroalimentación del motor B tiene el alias "Follower_Position". Dado que los multiplicadores de ambas instrucciones son una relación de 1/4, el motor B debe rotar una vez por cada cuatro revoluciones del motor A para mantener un valor acumulado de cero en el acumulador UPDN. Cualquier valor distinto a cero en la salida de la instrucción UPDN se visualiza como Position_error y se puede regular y regresar al motor B para mantener un bloqueo de fase entre los dos motores.
Bloque de funciones
RSL5K_PMUL Function Block Example 2_v31
Texto estructurado
PMUL_02.In := Position_feedback;
PMUL_02.Initalize := Initialize_Position;
PMUL_02.WordSize := 12;
PMUL_02.Multiplier := 25000;
PMUL(PMUL_02);
PMUL_03.In := Follower_Position;
PMUL_03.Initalize := Initialize_Position;
PMUL_03.WordSize := 12;
PMUL_03.Multiplier := 100000;
PMUL(PMUL_03);
UPDN_02.Initialize := Initialize_Position;
UPDN_02.InPlus := PMUL_02.Out;
UPDN_02.InMinus := PMUL_03.Out;
UPDN(UPDN_02);
Position_error := UPDN_02.Out;
Entregue su opinión
¿Tiene dudas o comentarios acerca de esta documentación? Por favor deje su opinión aquí.
Normal