Sei sulla pagina 1di 8

Instrucciones La representacin de los valores de entrada y salida analgicos en los mdulos de ampliacin EM 231, EM 232 y EM 235, as como en la CPU

224XP, se realiza de forma digital con el formato de tipo palabra INTEGER. Para la interpretacin correcta y consiguiente elaboracin de los datos, es necesaria una conversin. Con ayuda del Download abajo indicado, se aclaran estas conversiones. El Download contiene tanto la librera "Scale" con las funciones de conversin, como el programa ejemplo "Tip038" para una mejor comprensin. 1. Escalado El escalado de los valores de entrada y salida se puede tomar de los siguientes diagramas. Aqu se explican los conceptos "unipolar", "bipolar" y "20% de desviacin". Especialmente importante para el STEP 7-Micro/Win - Asistente de operaciones PID (Herramientas -> Asistente de operaciones -> Regulador PID). El escalado unipolar slo se desarrolla en el rango de valores positivos o negativos (la figura 01 muestra un ejemplo para valores de entradas analgicas de 0 a 32000).

Figura 01 Con un escalado unipolar con una desviacin del 20%, el lmite inferior del rango de valores est al 20% del valor superior (la figura 02 muestra un ejemplo de un valor de entrada analgica que va de 6400 a 32000).

Figura 02 El escalado bipolar se desarrolla en el rango de valores positivo y negativo (la figura 03 muestra un ejemplo de un valor de entrada analgica que va de -32000 a 32000).

Figura 03 La siguiente tabla da informacin sobre las abreviaturas utilizadas: Parmetro Descripcin Ov Iv Osh Osl Ish Isl Tabla 01 2. Frmula La siguiente frmula se deduce del diagrama para el clculo del valor escalado: Ov = (Osh - Osl) / (Ish - Isl) * (Iv - Isl) + Osl 3. Librera 3.1 Descripcin de la librera "Scale" La librera "scale.mwl" contiene mdulos de funcin para convertir el escalado de tipo INTEGER a REAL (S_ITR), de tipo REAL a REAL (S_RTR) y de tipo REAL a INTEGER (S_RTI). Valor de salida escalado (Output value) Valor de entrada analgico (Input value) Valor lmite superior de la escala para el valor de salida escalado (Output scale high) Valor lmite inferior de la escala para el valor de salida escalado (Output scale low) Valor lmite superior de la escala para el valor de entrada analgico (Input scale high) Valor lmite inferior de la escala para el valor de entrada analgico (Input scale low)

Figura 04 3.2 Escalado de la entrada analgica al formato de datos de salida REAL (S_ITR) Las funciones S_ITR ofrecen la posibilidad de convertir seales de entradas analgicas en valores normalizados entre 0.0 y 1.0 (tipo REAL).

Figura 05 3.3 Modificacin del escalado al formato de tipo de datos REAL (S_RTR) Las funciones S_RTR ofrecen la posibilidad de convertir rangos de valores enteros de formato REAL (por ejemplo, los valores de entrada entre 0.0 y 1.0 a la zona de salida en porcentaje).

Figura 06 3.4 Conversin al formato de escalado de salidas analgicas INTEGER (S_RTI) Las funciones S_RTI convierten un nmero real en el tipo de datos de salida analgica INTEGER.

Figura 07 4. Programa ejemplo 4.1 Descripcin del programa ejemplo "Tip038" Se tiene un fluido determinado dentro de un contenedor cerrado. El conversor de medida de diferencia de presin suministra una intensidad (4 - 20 mA) a la entrada del mdulo de entradas analgicas. La intensidad es proporcional al nivel de llenado del contenedor. El mdulo analgico EM 235 se tiene que calibrar de tal manera que el valor analgico de 20 mA, con un nivel de llenado de 10 m, se convierta al valor digital 32.000. Con un nivel de llenado de 0 m, el valor analgico de 4 mA se convierte al valor digital 6.400. El programa realiza la escala de los valores digitales convertidos en altura en metros. La tensin para el sealizador del nivel de llenado se tiene que crear a travs del mdulo de salidas analgicas. Esta tensin se crea escribiendo el valor digital correspondiente en una palabra de salidas analgicas (AAW). El mdulo de salidas analgicas suministra la altura del nivel de llenado (entre 0 y 10 metros) al equipo de medida en forma de una tensin entre 0 V y 10 V. La sealizacin analgica del equipo

de medida reacciona a la tensin con un movimiento de la aguja que es proporcional al nivel de llenado. La frmula escala cada valor que se encuentra entre un valor de escalado mximo y mnimo. Este programa recibe la palabra de entradas analgicas (AEW) y la escala para el mdulo de salidas analgicas. Primero, el programa lee la palabra AEW, es decir un valor entre 4 y 20 mA (6.400 y 32.000), y escala el valor a un nmero normalizado entre 0.0 y 1.0 (consulte la figura 05). Este valor se escala para el rango de 0.0 a 100.0 (consulte la figura 06) y de 0 a 32.000 (consulte la figura 07). 4.2 La librera de STEP 7-Micro/WIN como archivo ZIP Copie el archivo "scale.zip" en un directorio aparte y descomprmalo. A continuacin, la librera "scale_d.mwl" y el programa ejemplo "Tip038_D.mwp" ya se pueden integrar en el S7-200 a partir de la versin 4.0.7.10 del STEP 7-Micro/WIN. El archivo "scale.zip" contiene la librera y el programa ejemplo en alemn ("scale_d.mwl" und "Tip038_D.mwp") e ingls ("scale_e.mwl" und "Tip038_E.mwp").

Describo un poco lo que quiero hacer y con lo que cuento: Necesito tomar la lectura de una entrada analgica de un mdulo EM 231 de 4 entradas analgicas para PLC Siemens S7-200. La seal analgica proviene de un transductor de corriente de entre 0 y 20 A (dc), con una salida de 0 a 10 V. S que el mdulo de entradas analgicas tiene un formato de la palabra de datos (unipolar) de 0 a 32000, y ya he hecho los calculos para el escalado: (Y = 1600 X), donde Y es el valor de la palabra (entre 0 y 32000) y X es el valor de la medicin analgica (entre 0 y 20 A).

Para tratar la seal analogica, puedes hacerlo as : Transferir Byte ( Mov W ) en la entrada del bloque , pones la direccion de la entrada analogica In : aiw0 y en la salida , pones la palabra de memoria donde guardas el valor de la analogica Out : vw100 p.ej Ya tienes el valor en palabra de memoria . Como el valor que tu quieres usar ,Y, sera mayor de 32000, y puede ser igual a 1600 x32000, lo que puedes hacer es convertir el valor entero de vw100 en entero doble con : I_DI , donde in : vw100 y out : vd104, donde el valor maximo es mucho mayor y ahi puedes meter el escalado . Piensa pero que ese valor esta en formato entero . Si necesitas que ese valor sea real, puedes convertirlo con : DI_R , donde in : vd104 (entero)y out vd 110 ( real) ,todo dependera de las operaciones que quieras realizar .

No entiendo lo de que el valor de Y puede ser mayor a 32000, si [1600 * 20 (V) = 32000], para X=20A, Y=32000. Te cuento lo que he deducido, supongamos que la lectura analgica se guardara en VW1, lo que se guarda es una palabra (16 bits), pero segn he leido, cuando trabajamos con datos unipolares, el formato de la palabra es 0--- ---- ---- -000, donde los ceros que he puesto no se variaran y lo que modificamos en funcin del valor analgico son los otros 12 bits. Lo que no entiendo es que cuando escalo el valor analgico en funcin de esos 32000 que me da el rango unipolar y obtengo lo que indique en la pregunta Y=1600 X, qu hago con esa ecuacin, cmo interpreto el valor que aparezca en VW1 ? Te pongo un ejemplo: el sensor de corriente comunica que ha detectado 16.3 A, dando una seal de 8.15 V. Qu valor aparecera en VW1 ? Cmo hara para saber si el valor almacenado en VW1 es mayor o menor a 15 A ?

Hola , yo lo que haria , quizas ya lo haces , es saber entre que niveles te mueves de analogica, es decir , a nivel minimo de seal analogica , que valor visualizas en vw1 , y a continuacion , ver a nivel maximo de analogica, que valor visualizas en vw1. Si 16,3A te dan 8,5 V , el valor que muestra el automata sera p. ej. 16544.Es con ese valor con el que has de trabajar. si el valor minimo es por ejemplo 0 y el maximo 32000 y tu mides corriente entre 0 y 20A , cada Amperio seran un valor de 1600 guardado en vw1 Para comparar ese valor , en el apartado de comparacion , tienes las funciones comparar W : menor que, mayor que , igual que , mayor o menor que ..... si coges la funcion que mejor te convenga , en esa funcion p.ej mayor que , tiene dos datos , el

superior , donde pondrias la direccion vw1 y el inferior , donde puedes poner un valor numerico . Cuando se cumpla , esa funcion se comporta como un contacto . Si programas comp vw1 mayor que 16000 , y en es linea haces un set de una marca, podrias tener un alarma de limite de corriente , por ejemplo . A partir de ahi , pudes complicar el programa tanto como quieras .Es cuestion de pasar tiempo y probar . El dato a comparar tambien podria ser una direccion de memoria que podrias editar por pantalla

Con tu ayuda y con todas las "vueltas" que le he dado al asunto, creo que he resuelto mis dudas, dime si me equivoco. El rango del amperaje medido es 0-20 A, con lo que un valor en VW1 de 0 corresponde a 0 A, mientras que un valor de 32000 corresponde a 20 A. Como la resolucin en la entrada analgica para la configuracin 0-10 V es de 2.5 mV, resulta que tenemos 4000 pasos (de 2.5 mV) para llegar de 0 a 10 V, por lo que si divido 32000 entre 4000 pasos resulta que cada uno de esos pasos representa un incremento de 8 en el valor de VW1. Por otro lado si divido los 20 A entre 4000 resulta que cada paso representa 5 mA. Concluyendo, si tomo el valor almacenado en VW1, lo divido entre 8 (obtengo el nmero de pasos) y el resultado lo multiplico por 5 mA, obtengo el amperaje que se ha registrado.

Hola Jotatejada . Evidentemente , los calculos que haces son correctos . Ahora bien, nunca he trabajado con entrada 0-10v y supongo que la resolucion de la que partes es real. Realmente , lo que tienes, es que valor vw1 : 0 , 0v= 0 Amp. y valor vw1: 32000 , 10v = 20 A Si haces los calculos que tu dices , te funcionara bien siempre y cuando trabajes con numeros enteros.Te digo esto , porque si tu quieres dividir el valor de vw1 , solo puedes hacerlo en aritmetica fija No se si para incrementos pequeos de vw1 tendras la resolucion que necesitas , si segun tu , tendras 4000 pasos, el valor maximo de 32000 /4000 pasos, te dara incrementos teoricos de vw1 de 8 en 8 . Al tratar vw , solo puedes dividir enteros en aritmetica fija . Si luego quieres multiplicar es valor por 0,005, tampoco puedes hacerlo pues en aritmetica fija solo puedes multiplicar enteros. Si tienes un valor de 16000 /8 x 5/1000 = 10 A Si tienes un valor de 16056/8 x 5/1000 = 10.04 A

Lo que no se yo , es si el resultado de las operaciones te dara resultado en decimales , pues multiplicas enteros.Puedes probar poniendo tu valores en el 200 ,para probar . Para tener resultados en decimales , creo que tendrias que convertir el vw1 con I-DI de entero a entero doble y despues con DI-R de doble entero a real.Con los dator en real , podras sumar , dividir,multiplicar en aritmetica en coma flotante, y ahi si que tendras decimales . Piensa que si divides en real un numero entero , pondrias p.ej 8,0 Si quieres mover los dato en real , puedes hacerlo con mov_R .

Al ser datos en palabra doble , deberas guardarlos como VD - VD0 : Byte 0,1,2 y 3 -

Potrebbero piacerti anche