Buenas tardes Jose,
Te paso un proyecto en
StxLadder que toma un valor analógico de la entrada VIN1 de 10-bits (del
STX8081), en el rango de 0-1023 en decimal y lo convierte a un valor escalado entre 0-800 en decimal.
Para hacer el calculo se utilizó un poco de lenguaje
Pawn y se aplicó la formula:
y = (a*x / b) * cDonde:
- y = valor escalado
- x = muestra
- a = factor de ganacia o multiplicacion
- b = maximo valor posible de la muestra
- c = fondo de escala
En tu caso quedaría:
y = ((100 * x) / 1023) * 800Eso te daría valores entre 0-800 para un
x entre 0-1023.
El numero 100 pre-multiplica a
x en ese factor para no perder dos decimales con el numero entero al dividir, ya que no usamos Float en este caso.
Luego para obtener el valor final, eliminamos el factor de multiplicación:
y = y / 100En el proyecto que adjunto para Ladder, se declaran 2 variables globales llamadas:
- Sample: Almacena muestra, 0-1023
- SampleScaled: Muestra escalada 0-800
Ambas variables se muestran en el display LCD del PLC modelo
STX8081.
Como usamos
Pawn, esas variables se llaman
gi_Sample y
gi_SampleScaled dentro del componente
Pawn según documento
STXLADDER-PL.
El código Pawn que se utiliza, es:
// Aplicar ecuación de escala:
// y = (a*x / b) * c
// Se utiliza a = 100 (factor de multiplicación) para tener una resolución de dos
// decimales, ya que no usamos números flotantes.
// b = valor máximo de muestra.
// c = fondo de escala deseado.
gi_SampleScaled = ((gi_Sample*100)/1023) * 800
// Dividir el escaleo previo con a = 100.
gi_SampleScaled = gi_SampleScaled / 100
Proba el proyecto que adjunto y avisanos cualquier duda.