Código De Función; Sincronización De Los Mensajes - gefran SIEIDrive ADV80 Serie Manual De Instrucciones

Tabla de contenido

Publicidad

8.1.3.2 Código de función
El segundo carácter del mensaje identifica la función que debe ser ejecutada en el mensaje transmitido
por el maestro, que el esclavo responde a su vez con el mismo código para indicar que la función ya ha
sido ejecutada.
Se implementa un subíndice de las funciones MODBUS que comprende:
01 Read Coil Status
02 Read Input Status
03 Read Holding Registers
04 Read Input registers
05 Force Single Coil
06 Preset Single register
07 Read Status
15 Force multiple Coils
16 Preset Multiple Registers
Las funciones 01 y 02 son operativamente idénticas e intercambiables, así como las funciones 03 y 04.
Para una descripción completa y detallada de las funciones se remite al capítulo 3.
8.1.3.3 Il CRC16
Los últimos dos caracteres del mensaje contienen el código de redundancia cíclica (Cyclic Redundancy
Check) calculado según el algoritmo CRC16. Para el cálculo de estos dos caracteres el mensaje (dirección,
código función y datos descartando los bit de start, stop y la paridad eventual) se considera como un único
número binario continuo del cual el bit mas significativo (MSB) se transmite primero. En primer lugar, el
mensaje se multiplica por x16 (trasladado a la izquierda de 16 bits) y luego se divide por x16+x15+x2+1,
expresado como número binario (1100000000000101). El cociente entero se descarta y el resto a 16 bits (ini-
cializado a FFFFh al inicio para evitar el caso de un mensaje solamente de ceros) se adjunta a continuación
del mensaje transmitido. El mensaje resultante, cuando el esclavo receptor lo ha dividido por el mismo poli-
nomio (x16+x15+x2+1) debe dar cero como resultado si no ha habido errores (el esclavo recalcula el CRC).
De hecho, puesto que el dispositivo que serializa los datos a transmitir (UART) transmite primero el bit me-
nos significativo (LSB) y no el MSB como debería ser para el cálculo del CRC, esto se efectúa invirtiendo
el polinomio. Además, puesto que el MSB del polinomio influencia solamente el cociente y no el resto, éste
se elimina quedando 1010000000000001.
El procedimiento paso a paso para el cálculo del CRC16 es el siguiente:
1) Cargue un registro a 16 bits con FFFFh (todos los bits a 1).
2) Haga el OR exclusivo del primer carácter con el byte superior del registro, y ponga el resultado en el
registro.
3) Traslade el registro a la derecha de un bit.
4) Si el bit trasladado a la derecha del registro (flag) es un 1, haga el OR exclusivo del polinomio generador
1010000000000001 con el registro.
5) Repita 8 veces los pasos 3 y 4.
6) Haga el OR exclusivo del carácter sucesivo con el byte superior del registro, y ponga el resultado en el registro.
7) Repita los pasos del 3 al 6 para todos los caracteres del mensaje.
8) El contenido del registro a 16 bits es el código de redundancia CRC que tiene que adjuntarse al mensaje.
8.1.3.4 Sincronización de los mensajes
La sincronización del mensaje entre transmisor y receptor se obtiene interponiendo una pausa entre los
mensajes iguales de un mínimo de 3.5 veces el tiempo de un carácter. Si el receptor no recibe durante
un tiempo de 4 caracteres, retiene el mensaje precedente completado y considera que el sucesivo byte
recibido será el primero de un nuevo mensaje y consecuentemente de una dirección.
188
(No utilizado)
(No utilizado)
(No utilizado)
(No utilizado)
ADV80 • Manual de instrucciones

Publicidad

Tabla de contenido
loading

Tabla de contenido