Protocolos

La necesidad de conectar equipos de control con redes de PC llevó a la industria a la estandarización, de facto o de jure, de tecnología que pudiese llevar a cabo esta tarea. La evolución de uno u otro segmento de esta comunicación lleva la necesidad permanente de actualización en la tecnologías de vinculación.

Sin embargo la utilización industrial se haya mas vinculada a aspectos de robustez y seguridad y que si no se comprende y convive con estas circunstancias, se pueden cometer errores tanto en la interpretación como en la elaboración de soluciones necesarias.

Por ejemplo desde el punto de vista de la seguridad una comunicación a nivel de equipos industriales posee características extendidas respecto de una red administrativa, la seguridad en la trasferencia de datos no está asociada solamente al acceso a la información o su preservación, sino que también esta vinculada a la disponibilidad de los datos en tiempos acotados y a la inmunidad del sistema a fallas o al menos a la interpretación de ellas.

 

El esquema de comunicación industrial ampliamente difundido para redes de integración de equipos de control es el denominado maestro-esclavo, este esquema es utilizado en comunicaciones entre PLC y sistemas SCADA’s y aún en DCS’s. Este modelo maestro-esclavo.

El sistema de comunicación maestro-esclavo consta esencialmente de un equipo que se lo denomina maestro y uno o varios equipos denominados esclavos; el maestro es quien gobierna los ciclos de comunicación, toda iniciativa de comunicación es llevada a cabo por este equipo, los esclavos solo responden a la petición del maestro, si les corresponde, el proceso de pregunta/respuesta de un equipo maestro a uno esclavo se lo conoce como transacción. Existen dos tipos de transacciones:

·         Consulta-Respuesta: el equipo maestro inicia una transacción con uno de sus esclavos, todos los esclavos escuchan la pregunta pero al ser dirigida a uno en particular, este asume su rol de encuestado devolviendo la consulta al maestro, esta transacción puede ser de lectura, escritura, consulta de estado, etc, todo lo que el entre ambos puedan entenderse. La transacción puede concretarse en uno o varios hilos de consulta entre el maestro y el esclavo.

·         Difusión sin respuesta: el equipo maestro comienza una transacción que va a tener como destino a todos los esclavos, los esclavos no responden tal petición y el maestro da por asumida la finalización de la misma. Puede darse el caso que uno o mas esclavos no hayan recibido correctamente la información, esto debe tenerse en cuenta cuando se utiliza este tipo de transacción.

 

Planteado el esquema maestro-esclavo se observa que la relación entre ellos es jerárquica, el maestro posee mayor jerarquía que los esclavos y es quien maneja y distribuye los tiempos, esto desde el punto de vista de las comunicaciones, pero puede contrastar, y generalmente se da, con la jerarquía dentro de la lógica de control.

 

En una transacción maestro-esclavo se definen ciertos parámetros que se utilizan para tratar de organizar y garantizar estas transacciones:

·         Protocolo: para que dos equipos que están intercambiando información puedan comprenderse es necesario que ambos se pongan de acuerdo en el contenido de la información intercambiada, al conjunto de reglas y convenciones que se utiliza se lo denomina protocolo.

·         Poleo: el equipo maestro interroga bajo un esquema programado la secuencia de equipos a disposición, mas aún, cada equipo puede recibir diferentes tipos de transacciones correspondientes a lectura/escrituras, diferentes tipos de variables, etc., el período de encuestamiento para cada esclavo o transacción se lo define como poleo.

·         TimeOut: cuando el maestro inicia la transacción con un determinado esclavo dentro del esquema consulta/respuesta, puede suceder que el esclavo no pueda responderle al maestro, este debe manejar un tiempo de espera para la respuesta del esclavo, caso contrario abortar esta transacción ya sea para reintentarla o para continuar con su esquema de poleo previsto, este tiempo se lo denomina TimeOut. El mismo concepto se aplica desde el punto de vista del esclavo para protocolos multiestados.

·         Reintentos: cuando un esclavo no responde y el maestro aborta la transacción, este debe decidir que hacer, si continuar con el diagrama de poleo o reintentar la transacción abortada, la cantidad de veces que va a reintentar llevar a cabo con éxito la transacción es lo que se denomina Reintentos o Retries.

 

Desde el punto de vista físico deben tenerse en cuenta varios aspectos para llevar a cabo la comunicación maestro-esclavo con el menor porcentaje de error posible.

El medio físico mas empleado en el ambiente industrial es sin lugar a dudas RS-232 / RS-485, las características de uno y otro difieren poco o mucho respecto de que punto de vista se evalúe, pero es necesario su correcta interpretación y evaluación para optimizar la secuencia de transferencia de información, conceptos tales como transmisión asimétrica, transmisión balanceada, comunicación punto a punto, comunicación multidrop, DCE, DTE, ancho de banda, velocidad de transmisión, bits de paradas, bits de inicio, bit de paridad, UTP, STP, fibra óptica, Full Duplex, Half Duplex, etc.

 

Desde el punto de vista formal del modelo ISO/OSI, el esquema maestro esclavo para una comunicación industrial a través de un vínculo RS-232/485 queda:

·         Nivel Físico: está representada por las normas RS-232/485.

·         Nivel de Enlace: la subcapa de control de acceso al medio (MAC) está definida por el esquema maestro-esclavo, mientras que la subcapa de control lógico de línea (LAC) tiene dos modalidades: transacciones consulta/respuesta (tipo 3, sin conexión y con reconocimiento) y difusión sin respuesta (tipo 1 sin conexión y sin reconocimiento)

·         Nivel de Red: al ser de topología bus no es necesario manejar este nivel.

·         Nivel de Transporte: usualmente no se utiliza, ya que las tramas son pequeñas y no particionadas.

·         Nivel de Sesión: no es necesario al ser transacciones cortas.

·         Nivel de Presentación: no necesario el manejo.

·         Nivel de aplicación: dependiente del protocolo implementado.

 


 

      Modbus

 

Para que dos entes puedan comprenderse en el intercambio de información deben ponerse de acuerdo en algunos aspectos, tanto como ocurre en la vida diaria, para dos equipos puedan intercambiar información debe preestablecerse el protocolo a utilizar.

La transferencia de datos se puede dividir en dos niveles, en su nivel mas básico se trata de simples bits, la manipulación básica de tales bits está normalizada de acuerdo al medio físico que se utilice, por ejemplo RS-232. El concepto, aunque parezca trivial no lo es, solo vale pensar en el manejo de bits que realizan equipos con tecnología de microprocesador Intel o Motorola. Finalmente el agrupamiento de bits que la capa física entrega va a definir los caracteres transmitidos, que a su vez conforman la trama que da lugar a la transacción. Este agrupamiento de bits se encuentra codificado y normalizado, la variante mas difundida para el intercambio de datos a nivel industrial es la ASCII (American Standart Code for Information Interchange), la versión actual utiliza 8 bits para definir sus 256 caracteres que incluyen letras mayúsculas y minúsculas, números, caracteres de control y símbolos.

El segundo nivel de organización cosiste en el agrupamiento de caracteres que finalmente constituyen la trama de la transacción, el manejo, característica, operabilidad, van a definir el protocolo de comunicaciones y le va a dar a este todas las características operativas para el intercambio de información. Este nivel de organización de la información en general posee características que definen el forma, tipo de datos, identificación del esclavo, etc, finalmente contiene uno o varios bytes de información conocidos como chequeo que consiste en un resumen de la información contenida en la trama y que se utiliza como chequeo de los datos contenidos en la misma, en transacciones maestro-esclavo uno de los dos genera el chequeo que es transferido junto a la trama de datos y el otro equipo la verifica, existen diferentes métodos para producir este chequeo que cada protocolo define, los mas utilizados son:

·         CRC, chequeo de redundancia cíclico, utilizado en los protocolos mas robustos, consiste en la utilización de un polinomio generador que por sucesivas divisiones y manipulación de esos resultados, obtiene un par de bytes que entrega como chequeo. Posee una distancia de Hamming dependiente de la trama, pero que lo focaliza alrededor de un 99.7 % de eficiciencia.

·         LRC, chequeo de redundancia longitudinal, utilizados en protocolos de robustez media, consiste en el complemento a dos de la suma binaria de los bytes de la trama, generalmente tomados en dos bytes. Posee una distancia de Hamming de 4 con una eficiencia del 97 %.

·         BCC, chequeo de código de bloques, utilizado en protocolos de robustez media.

 

 

Básicamente existen una clasificación de protocolos dada por:

·         Protocolos sin delimitadores: los datos de la trama son transmitidos todos a la vez, se tiene en cuenta el tiempo de retardo entre cada byte ya que la normalización de este tipo de protocolos implica que la finalización de la trama estará dada por un determinado tiempo sin la recepción de datos. La codificación de datos es binaria, es decir los caracteres a transmitir pueden ser cualquiera dentro de la tabla de codificación ASCII, asi, un dato de 16 bits es representado por 2 bytes compuestos por la parte baja y alta del mismo.

El protocolo Modbus RTU es el mas conocido representante de este tipo de protocolos.

 

·         Protocolos de transmisión en formato ASCII, con delimitadores: este tipo de protocolos utiliza un identificador como comienzo y final de trama, se tratan de caracteres ASCII de control. Los datos contenidos entre estos delimitadores le dan la flexibilidad al protocolo, en este caso estos datos van a ser caracteres ASCIIs comprendidos entre del “0” al “9” y “A” a “F”.

Puesto que el final de la trama es es identificada por caracteres de final no es necesaria la transmisión contínua ni acotada de bytes, se permiten demoras entre la transmisión de cada bytes y esto es manejable por cada equipo. En detrimento de esta característica aparece que cada dato de 16 bits debe ser transmitido en 4 bytes, llevando asi el doble de tiempo en la transmisión de la trama que un protocolo con transmisión sin delimitadores.

El protocolo Modbus Ascii es el mas conocido representante de este tipo de protocolos.

 

·         Protocolos con delimitadores e inserción de carácter: este método de encapsulado de la información es una conjunción de los dos anteriores, por un lado presenta caracteres de inicio y final de trama y por otro envía los datos en forma binaria.

 

La estructura de datos para el protocolo Modbus Ascii desde un inicio de transacción del maestro sería:

 

Inicio Mensaje

ID

Comando

Datos

Chequeo

Final Mensaje

 

Inicio de mensaje: está dado por el carácter hexadecimal “3A” de la tabla ascii.

ID: identifica el esclavo al que se interroga.

Comando identifica el comando según normalización del protocolo, los mas utilizados son:

1: lectura de coils internos/salida.

2: lectura de entrada.

3: lectura de registros internos/salida.

4: lectura de registros de entrada.

5: escritura de un coil.

6: escritura de un registro.

15: escritura de múltiples coils.

16: escritura de múltiples registros.

Datos: contiene información correspondiente a cada comando, en el caso de lecturas se debe especificar la cantidad de registros o coils a leer y la dirección de comienzo de lectura (offset). En el caso de escritura contiene además de esta información (según corresponda, ya que los comandos 5 y 6 no necesitan), los datos a ser escritos, también se especifica la cantidad de bytes a transmitir como datos

Chequeo: compuesto por el LRC de todos los datos de la trama menos el carácter de inicio de mensaje.

Final de mensaje: está dado por los caracteres hexadecimales “0D” “0A” de la tabla ascii.

 

La respuesta del esclavo está dada por:

 

Inicio Mensaje

ID

Comando

Datos

Chequeo

Final Mensaje

 

Inicio Mensaje, ID, Comando, chequeo, Final Mensaje es igual al anterior.

Datos: se compone de los datos solicitados precedido por un contador de bytes a recibir para los comando de lectura de registros, en el caso de coils especifica la cantidad de coils que envía, en el caso de escritura devuelve la dirección de offset especificada y la cantidad de datos procesados.

 

Es así como se intercambian datos a través de este protocolo los equipos en cuestión, ambos equipos deben optimizar y robustecer esta transferencia de datos, para esto se debe verificar la consistencia de la trama recibida a través del chequeo, como también datos que devuelve el esclavo conforme lo solicitado, por ejemplo el ID que devuelve el esclavo debe coincidir con el ID solicitado, de la misma manera para el comando y para la cantidad de bytes a transferir.

 

El protocolo Modbus RTU no difiere demasiado estructuralmente respecto del armado de la trama de su par Ascii, no cuenta con los caracteres de inicio y final de trama y utiliza CRC como chequeo en vez de LRC. Las diferencias aparecen en el armado de los datos ya que en un caso es binario y en el otro no.

 

Los protocolos Modbus Ascii y Modbus RTU son utilizados en una gran variedad de equipos, llegando a estandarizarse de facto la utilización de los mismos en el ámbito industrial. La utilización de uno u otro protocolo cuando los equipos lo permiten, debe decidirse en función de la robustez, capacidad, características de los equipos involucrados, etc.

 

Algunas características operativas a destacar son:

·         para el protocolo Modbus Ascii los datos a ser transferidos van a estar dentro de los primeros 127 caracteres de la tabla Ascii, el manejo de un ancho de palabra para el puerto RS diferente de 7 decae el rendimiento de la transacción, para el protocolo Modbus RTU los caracteres de la tabla Ascii a transferir no posee cotas por lo que el ancho de palabra óptimo es 8.

·         el adicionar un byte de paridad puede ser conveniente o no, si se especifica la paridad como par o impar se podrá detectar a nivel de hardware un conmutación impar de bits, pero a su vez añade un bit mas a transferir, disminuyendo la eficiencia del mismo.

·         el bit de stop se debe tratar de utilizar en 1, existe hardware que manifiesta colisiones en tal circunstancia por un manejo inadecuado de buffers y no queda mas solución que elevar el tiempo de residencia para final de transmisión de cada dato.

·         los tiempos de transacción pueden diferir según el equipo de que se trate y la prioridad asignada al puerto de trabajo, pero podría tomarse en forma promedio para Modbus Ascii (para una configuración de 9600,N,7,1 del puerto) que por cada dato a transferir se demora alrededor de 1 ms.

·         Una trama completa, teniendo en cuenta retardo del equipo esclavo en verificar los datos recibidos, armar la respueta, recibirla por parte del maestro, verificarla y validarla, demora alrededor de 300 ms para una cantidad de registros de 30 en protocolo Modbus Ascii, para protocolo Modbus RTU la transacción demora alrededor de 250 ms.

·         El protocolo Modbus RTU involucra mayor capacidad de respuesta de los equipos involucrados en la comunicación y un procesamiento de datos similar a su par Ascii dado que existen rutinas muy optimizadas para el cálculo del CRC (que sería su cuello de botella en procesamiento) y la recuperación de datos es mas natural al estar en formato binario.