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.
·
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.
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.