Entradas analógicas 4-20mA en S7

Recientemente he recibido una consulta acerca de cómo leer y gestionar las entradas analógicas 4-20mA en S7.  Me pareció que podía ser interesante el compartir la duda y la posible solución con el resto de los lectores del blog, por lo que aquí tienes un resumen de la consulta:

Hola que tal,

(..) Es un transductor Danfoss de 4 a 20 mA 2 hilos. La idea es hacer que se dispare una alarma si la presión del aire disminuye a menos de 100 psi y si sube a mas de 120 psi, es decir la presión siempre debe estar entre 100 y 120 psi. (..) y también me gustaría que la podamos visualizar en WIN CC…

Entradas analógicas 4-20mA en S7

Aprovechando la duda en esta entrada vamos a ver los siguientes conceptos:

  • Elegir y configurar la tarjeta de entradas analógicas
  • Programar la alarma pertinente de alta y baja
  • Graficar la presión en nuestro HMI usando WinCC

 Entradas analógicas 4-20mA en S7

Hay diversos modelos de entradas analógicas. La que yo he elegido para este caso es 6ES7-331-7KF02-0AB0, o lo que viene siendo una tarjeta de entradas analógicas con aislamiento galvánico de 9/12/14bits.

Lo primero que vamos a hacer es configurar la tarjeta. Para ello, vamos a elegir como muestra en la figura: TM2H ya que es entrada en corriente 4..20mA a dos hilos, que son los requerimientos planteados.

configuracion-tarjeta-entradas

Por otro lado, como bien indica la imagen adjunta, habrá que cambiar la posición del adaptador trasero de la tarjeta de tal forma que esté configurado en su posición D.

Por otro lado debemos saber, que la lectura de 4-20mA será una lectura que en el programa la vamos a ver como un valor entre 0 y 27648. Pero podría ser cualquier otro valor en función de la tarjeta que insertemos y el tipo de lectura.

Finalmente, el transductor nos dará 4mA cuando la señal esté al 0% de la escala y 20mA cuando esté al 100% de la escala (como supongo ya imaginabas). Por cómo plantea la consulta, vamos a elegir el modelo que da de 0 a 200psi.

En general, la fórmula que usaremos será: (Preal – Pmin) /(Pmax-Pmin) = (Señal_mA – 4mA) /(20mA – 4mA) que es la ecuación de una recta que pasa por dos puntos conocidos (Pmin, 4mA) y (Pmax, 20mA).

Esto es para que desempolves tus conocimientos de geometría de hace unos cuantos lustros ( ¿o no tanto?)

Por tanto, tendremos que nuestra recta vendrá dada:  (Preal – 0psi)/(200psi – 0psi) = (Señal_mA – 4mA)/(20mA-4mA), o lo que es lo mismo:

Presión_Real (psi) = (Señal_mA-4mA)*(200psi)/(20mA – 0mA)

Es decir, en el PLC veremos:

Presion = (señal – 0) * 200psi /(27648-0) = Señal * 200/ 27648

Editado:

También se puede usar la función de escalado FC105 Scale Convert, que lo podéis encontrar en Standard Library->TI S7 Converting Blocks. La info que aporta la ayuda de siemens dice lo siguiente

Descripción

La función “Escalar valores” (SCALE) toma un valor entero en la entrada IN y lo convierte en un valor real, convirtiéndolo a escala en un rango comprendido entre un límite inferior y un límite superior (LO_LIM y HI_LIM). El resultado se escribe en la salida OUT. La función SCALE aplica la fórmula siguiente:

OUT = [ ((FLOAT (IN) – K1)/(K2–K1)) * (HI_LIM–LO_LIM)] + LO_LIM
Las constantes K1 y K2 se aplican de forma diferente, dependiendo de si el valor de entrada es BIPOLAR o UNIPOLAR.

· BIPOLAR: Se supone que el valor entero de entrada debe estar entre -27648 y 27648, por lo tanto, K1 = -27648.0 y K2 = +27648.0

· UNIPOLAR: Se supone que el valor entero de entrada debe estar entre 0 y 27648, por lo tanto, K1 = 0.0 y K2 = +27648.0

Si el valor entero de entrada es mayor que K2, la salida (OUT) se une a HI_LIM y se indica un error. Si el valor entero de entrada es menor que K1, la salida se une a LO_LIM y se indica un error.
Se puede efectuar la conversión escalar inversa programando los límites de tal forma que el límite inferior sea mayor que el límite superior (LO_LIM > HI_LIM). En la conversión escalar inversa el valor de la salida disminuye cuando aumenta el valor de la entrada. 

 Programación de la alarma

Para programar la alarma, simplemente vamos a leer la señal recibida y si es inferior al valor parametrizado dará alarma de baja y si se superior al valor superior establecido dará alarma de alta.
Además, configuraremos una tercera alarma que es que la lectura debe estar entre 4000 y 20000 ya que de no ser así es que algo pasa en la instalación.

A la hora de programar las alarmas de alta y de baja, y aunque no sea el caso, es conveniente filtrar dichas alarmas, esto es, temporizarlas de tal forma que un pico bien por arriba o por abajo, no de alarma ya que podemos considerarlo como un transitorio o un pequeño ruido en la señal que hay que tratar como tal y por tanto que no nos de una falsa alarma.

Este tiempo ya es para gustos y necesidades y puede variar desde tiempos muy cortitos hasta de varios minutos en función de qué estemos hablando.

 Graficar la señal

Una vez tengamos todo preparado, sólo nos quedará graficar dicha señal. Para ello vamos a usar la variable de la presión y dos constantes, que serán los límites superior e inferior.

No me voy a extender más en la explicación de cómo hacerlo ya que lo mejor es que lo veas en el siguiente vídeo.

 

 ¿Te ha sido útil esta entrada?

 

Si quieres más información, por ejemplo de cómo hacer esto en TIA Portal, puedes ver la entrada de cómo realizar un escalado en TIA Portal, con el que verás este método además de usando otras funciones.

Acerca de Iñigo Gútiez

Ingeniero industrial por la Escuela de Ingenieros Superiores de Bilbao. Trabajo como ingeniero de proyectos y automatización en Guardian Industries

Te puede interesar

NAV1TIT

Siemens 1217C: David contra Goliat

El pasado mes de marzo, ha empezado la comercialización de la CPU más musculada de …

25 Comentarios

  1. Muy buenas Iñigo, me llamo Jorge desde Santander. Sigo tu blog semanalmente ya que me parece explicado todo de un modo muy didactico y con sencillez.
    Si bien esta vez he encontrado que para la explicacion de señales 4-20 hubieras tenido que explicar el tema con las funciones Scale y Unscale (FC 105 y FC 106). Me gusto mucho el tema sobre los micromaster, yo actualmente estoy a tope con el servidor OPC scout haciendo intercambios con Visual basic 2010. En un futuro me gustaria poder profundizar en el tema de servos de siemens, pero tiempo al tiempo… Un saludo, y enhorabuena por tu pagina y tus videos, haber si tomo ejemplo y me animo a repartir mis conocimientos, Un saludo Jorge.

  2. Hola Jorge,

    Muchas gracias por el seguimiento del blog.
    Tienes razón que podía haber incluido las funciones de escalado de Step7. La verdad, es lo suyo. Pero así también se practica el uso de las funciones, pero no está de más decir que esas funciones existen.
    Corregiré la entrada añadiendo la posibilidad más directa de usar las funciones de escalado.
    Un saludo y gracias nuevamente.

  3. Como siempre lo felicito por su blog,

    Cual es la diferencia cuando damos de alta un modulo de entradas analógicas y al darle editar símbolos las direcciones aparecen como IW y en otras veces como PIW

    Saludos

  4. Hola Iñigo , sigo tu web y tus videos en youtube , aunque recien empiezo con lo de step7 , curso el segundo año de electrónica y automatización en la Universidad Politécnica de Madrid y verdaderamente viendo tus videos y otros colgados aprendo cada día más.

    Ante todo lo dicho no sé si me podrás ayudar con alguna ayuda de las funciones FC105 scale que la verdad no tengo idea de ello. Se trata de un laboratorio que tengo que entregarlo , no quiero resolución tan solo si me poders ayudar con lo de FC105. Gracias de antemano.

  5. Hola Ginno,
    Si seleccionas el FC105 en el editor y pulsas F1 accedes a la ayuda de la función. Ahí te explica su uso y te muestra un ejemplo.

    Es realmente simple así que no deberías tener problemas.
    Un saludo.

  6. El uso de la libreria bloques fc105 y fc106, es realmente sencillo y practico, sin embargo, esta orientado a trabajar con datos tipo real, esto es para obtener una mayor resolucion de numeros en coma.

    Ahora seria bueno en profundizar mas sobre el uso de datos tipo real.

  7. muy buena y sensillas tus explicaciones

  8. Jorge. Tengo dudas en cuanto a a la seleccion del Trasductor a usar, los rangos de operacion del sistema a controlar y los rangos de operacion del transductor a usar. Me explico, si tengo que controlar un Horno para que este a lrededor de los 120°C con una Histerisis de 10°C, es decir que el horno debe estar entre 115°C (prende Horno) hasta 125°C (Apaga Horno), pero dicho horno puede llegar a calentar a un maximo de 250 °C (Cosa que no deberia ocurrir).

    Mis preguntas son:
    1.- La temperatura minima del rango, tanto para la operacion del horno, como para el rango de operacion del transductor a usar, es la temperatura hambiente ??? Sabiendo que el horno apagado siempre esta entre los 20 y 30 °C.

    2.- Si el transductor emite una señal en corriente que va de 4 a 20mA, en que momento emitira los 4 mA que ingresan en la tarjeta de entrada Analogica del PLC ?, cuando esta a temperatura hambiente (20 a 30°C. Horno apagado) ? y cuando emitira los 20mA, al alcanzar los 120°C (Set point) o al alcanzar los 250°C maximos a los cuales el horno puede llegar ?

    Gracias pór tu ayuda y tu tiempo.

    Zeno Martorana.
    Venezuela.

    • Creo que tienes un error de concepto. El rango de temperatura no depende de tu proceso, ni del setpoint ni nada por el estilo. Depende del aparato y nada más. Imaginemos que es un pirómetro que lee entre 20 y 300ºC.
      Los 4mA los dará cuando la temperatura esté a 20ºC y los 20mA cuando llegues a los 300.
      Pero como digo, depende del aparato, no de lo que hagas con él.
      Otra cosa es que sea un sensor que te de una lectura directa multiplicada por 10 por ejemplo (décimas de ºC). Como digo, depende de lo que conectes.

      Un saludo

      • Gracias por tu pronta respuesta Jorge.

        Entonces quieres decir que en mi caso, no importa que el horno pueda llegar a 250°C, depende del transductor usado para hacer la medicion y del rango que este puede medir. Si se usa una termocupla tipo K que mide desde 0°C hasta 1250°C, el sensor emitira 4mA cuando haya una temperatura de 0°C y 20mA cuando haya una temperatura de 1250°C, si quiero detectar cuando el horno llega a los 120°C tendre a la entrada del PLC una corriente equivalente que estara entre los 4mA y los 20mA.

        Dime si estoy en lo correcto.

        Gracias de antemano por tu ayuda.

        Zeno Martorana.

  9. Buena tarde Ing. Iñigo.
    tengo una duda, con respecto a como dar de alta por ethernet un modulo de entradas y salidas remotas en un plc S7-400.

    si me puede orientar donde encuentro algún manual o esquema donde me pueda apoyar se lo agradecería.

    la aplicacion que hare es ingresar unas entradas y salidas por medio de un modulo I/O remoto por ethernet.

    saludos desde Mexico….

  10. Buenas,

    Muy interesante el Blog, felicitaciones.

    Queria consultarle en el caso de que la entrada analogica sea 1-5 Volts, se puede usar la FC105? pues observo que los valores ¨brutos¨ de entrada en la señal son de -32768 a 32768.

    muchas gracias por su ayuda.

    Saludos!

  11. muy buen blog muchas gracias por, la gran ayuda que nos estas dando en estos tems de PLC, un gran saludo desde mexico

  12. Buenas, Iñigo sigo siempre tu curso es muy interesante, tengo una pregunta acerca, de los 4 a 20mA, como haces para convertir de numero entero a real, por ejemplo de tu 2% de rango en minimo y maximo, ya que me parece que el 2% esta en real, Y si tengo otro tipo de entrada por ejemplo 0a10V hay que hacer todo de nuevo para calcular, desde ya muchas gracias.
    Un saludo

  13. como paso de una señal inversa 20-4mA a una señal directa 4-20mA en un PLC siemens S7400

    • Si entiendo bien, no de transforma. Se lee tal cual y luego en el programa la tratas como quieras.. Calculando matemáticamente el complementario de la señal leída.
      Saludos

  14. Hola Iñigo excelente blog, esta muy bien explicado y me ha sido de mucha ayuda, te mando un gran saludo desde México.

  15. Hola ! quería recoger una medida de corriente de entre 4-20 mA, esa medida la quiero mandar a un servidor mediante UDP,
    la pregunta es..¿en cuántos bits puedo meter la medida?

    He leído por ahí que se puede con 13 bits, pero no me salen las cuentas:
    1 1111 1111 1111 = 8191 dec
    ¿Puedes mandarme un enlace o aclararme un poco la resolución?

    Muchas gracias