Todos los PLC de la gama CompactLogix vienen con un puerto serie incorporado. Para controlarlo existen instrucciones específicas Logix5000 que simplifican mucho el trabajo y que vienen detalladas en el documento de Rockwell "Instrucciones generales de los controladores Logix5000" (en español, en formato PDF), en el capítulo 17. Para hacer la configuración del puerto, el documento de referencia es "Cadenas ASCII de controladores Logix5000" (también en español y en PDF).
![]() |
| Controlador CompactLogix L35E con puerto serie incorporado |
Mis pruebas las he realizado con un CompactLogix L35E y también con un SoftLogix en una máquina virtual asignándole el puerto serie de mi portátil.
Para configurar el puerto serie del PLC vamos a las propiedades del controlador en mi proyecto de Logix5000, a la pestaña Serial Port:
En Mode selecciono User, e introduzco los valores de velocidad (Baud Rate), número de bits (Data Bits), Paridad y bits de parada. Ahora vamos a la pestaña User Protocol:
Especifico el protocolo ASCII, fijo el tamaño del buffer de lectura / escritura en 256 caracteres (bytes) y especifico como carácter de terminación '$r'.
Aplicamos y aceptamos, y con esto ya está toda la configuración necesaria para el puerto serie terminada.
Por comodidad a la hora de manejar los datos recibidos por el puerto serie voy a declarar un tipo de datos STRING de 256 caracteres. Para ello voy al árbol de proyecto, en Data Types -> Strings, y creo el nuevo formato STRING256:
También voy a crear dos tipos de datos en Data Types -> User-Defined para agrupar las variables necesarias para acceder al puerto serie, para escritura y lectura respectivamente:
Y finalmente declaro dos tags con estos tipos de dato:
Ahora voy a la programación. Para el envío de datos por el puerto serie voy a usar la instrucción AWA, que es la adecuada para enviar mensajes que siempre tienen el mismo carácter de terminación, en mi caso '$r'. La rutina Serie_RECEPCION se compone de dos renglones:
Para recibir datos voy a usar dos instrucciones, ABL para comprobar si en el buffer de recepción hay datos que contengan el carácter de terminación y ARL, que es adecuada para leer datos desde un dispositivo que envía una trama de longitud indeterminada. La rutina Serie_ENVIO se compone de cuatro renglones:
Transfiero el proyecto a mi PLC y lo paso modo Run, me aseguro que el lector de código de barras está encendido y conectado, y ya estoy listo para hacer pruebas. Para ello me pongo on-line y monitorizo los tags que he creado:
Para probar el envío de datos introduzco un comando que reconozca el lector de código de barras en la cadena SERIE_E.ESCRITURA (con su correspondiente carácter de terminación) y pongo a uno el bit SERIE_E.ORDEN_ESCRITURA. En cuanto la transmisión finalice este bit se pondrá a cero.
Para realizar una recepción simplemente tengo que activar el bit SERIE_L.ORDEN_LECTURA y en cuanto se ponga a cero sabré que en la cadena SERIE_L_LECTURA tendré una trama recibida por el puerto serie.
Si hubiese algún error de configuración o comunicación, en los datos de control del tipo SERIAL_PORT_CONTROL, en la variable ERROR tenemos un código que nos será muy útil para depurar por qué falla nuestra comunicación. El significado de los códigos de error se pueden consultar en la página 568 del documento Instrucciones generales de los controladores Logix5000.
El código de este proyecto para RSLogix5000 lo tienes aquí.
Hasta aquí este sencillo programa de prueba. Como conclusión puedo decir que trabajar con el puerto serie de los controladores CompactLogix es muy sencillo, con un funcionamiento impecable y siguiendo los manuales disponibles en la web de Rockwell no he tenido la más mínima complicación.
Como siempre, cualquier comentario será bienvenido.


























Hola, me encanta tu blog, muy útil. Solo comentarte una cosa: cuando muestras el código de SERIE_RECEPCIÓN, en el texto has escrito serie_envío. Si lo corriges quedará niquelado.
ResponderSuprimirMuchas gracias por la corrección.
ResponderSuprimirtienes algunadireccion de mailo facebook? lamia es rangelangel@starmedia.com
SuprimirPuedes escribirme a notasdeautomatizacion@gmail.com
SuprimirUn saludo.
Como siempre Mr.GR muy buena explicacion y muy buen aporte
ResponderSuprimirMuchas Gracias por compartirlo.
Saludos
J.Manuel