Autor: Miguel Angel Montejo Ráez radastan@swin.net
Indice
Es de obligado cumplimiento mandar una carta sellada en
el caso de emplear este documento en centros de enseñanza y
empresas, indicando el centro o empresa que emplea este tutorial. Este
requisito valida su empleo y la distribución gratuita en dichos lugares,
ya sea en formato electrónico o en papel impreso.
Cableado y
terminaciones
El cableado puede estar formado por uno o dos pares de cables trenzados
y apantallados, siendo el apantallamiento común para todos los cables.
Normalmente se emplea un par de cables para la línea de datos
semidúplex y el segundo par para una de las siguientes aplicaciones:
| Transmisión del reloj en modo síncrono.
| Conmutación de la línea en repetidores en modo autoreloj. | | La
impedancia característica de cada par de cables debe ser 120 ohmios. Las
terminaciones serán resistencias de 120 ohmios para evitar el efecto de
reflexión.
Conectores
El estándar especifica que los conectores deben ser del tipo sub-D9. El
patillaje es el mismo que para un conector RS-232, pero sólo se emplean
las señales RxD, TxD y masa.
Estructura
La estructura de la red BITBUS puede ser de varios tipos:
| Básica: estructura lógica del tipo maestro-esclavo.
| Arbol: se emplean repetidores para largas distancias, se considera
todo un único bus y se opera en modo autoreloj (debido a que los
repetidores no transmiten la señal de reloj).
| Arbol multinivel: se emplean uniones esclavo-maestro para formar
sub-buses en varios niveles. Cada nivel puede operar a una velocidad
propia y posee sus propias direcciones. | | | Ejemplo:
En la siguiente tabla se muestran las distintas posibilidades de nodos
y repetidores:
Modo |
Nº máx. de nodos |
Nº máx. de repetidores |
Velocidad (bits/s) |
Distancia máx. (m) |
Autoreloj |
28 |
Ninguno |
62,5 K |
1200 |
Autoreloj |
28 |
Ninguno |
375 K |
300 |
Autoreloj |
250 |
10 |
62,5 K |
1200 entre repetidores (4800 máx) |
Autoreloj |
250 |
2 |
375 K |
300 entre repetidores (900 máx) |
Síncrono |
28 |
Ninguno |
62,5 K o 375 K |
300 o 1200 (según velocidad) |
Tipos de
nodos
Todo bus BITBUS se compone de elementos básicos denominados nodos. Un
nodo es cualquier dispositivo que contenga al menos una interfaz con el
bus. Los nodos posibles son:
| Maestro: permite controlar el acceso a un bus de cualquier nivel
mediante un protocolo de comunicación del tipo pregunta-respuesta. En
cada nivel sólo existe un maestro, aunque es posible la existencia de un
maestro flotante (desaconsejado por el estándar).
| Esclavo: es un bloque controlado por el maestro, el cual sólo
transmite si el maestro lo indica. El esclavo puede estar conectado a su
vez con un maestro o un bloque de E/S..
| Repetidor: se encarga de regenerar la señal de datos del bus (no el
reloj). Se emplea para aumentar la longitud del bus.
| Expansión E/S: es cualquier dispositivo de E/S que se quiera
conectar al bus o a un esclavo. | | | | Modos de sincronización
Existen dos modos de sincronización de bits:
| Síncrono: en este modo los datos se transmiten por un par trenzado y
el reloj mediante otro par adicional. No se admiten repetidores y la
estructura del bus es completamente lineal (sólo hay un nivel).
| Autoreloj: en este modo cada nodo genera su propio reloj,
sincronizando con la línea de datos. Los datos se codifican en formato
NRZI. Se permiten repetidores (obligatorio para más de 28 nodos). Las
derivaciones a partir del repetidor requieren una línea de control
además de la línea de datos, por lo que se emplean dos pares trenzados.
| | Codificación
Nivel de bits:
| Modo síncrono: la codificación se realiza mediante el procedimiento
NRZ (0 es nivel bajo y 1 es nivel alto).
| Modo autoreloj: la codificación se realiza mediante el procedimiento
NRZI (0 es cambio de nivel y 1 es un NO cambio de nivel). | | A
nivel de byte se emplea un juego reducido del protocolo SDLC de IBM. Este
protocolo inserta un "0" después de cinco "1" consecutivos. Este sistema,
combinado con la codificación de bit por NRZI, permite sincronizar el
reloj en el receptor en modo autoreloj cada 6 bits como mínimo.
El controlador de Intel 8044 proporciona la inserción y eliminación de
ceros del protocolo SDLC de forma automática.
Trama del
mensaje
La comunicación entre nodos se realiza mediante mensajes. Dicha
comunicación siempre se efectúa a petición del maestro y consta siempre de
un mensaje de pregunta al esclavo y de un mensaje de respuesta del mismo.
La trama de mensaje se compone de entre 6 y 255 bytes, siendo su
estructura la siguiente:
Flag (7Eh) |
Dirección esclavo |
Control |
Información (funciones/datos) |
CRC (16 bits) |
Flag (7Eh) |
Flag
Longitud: 1 byte.
Todo mensaje debe estar delimitado mediante dos Flag al comienzo y al
final del mismo. Se denomina Flag a un caracter de valor fijo e igual a 7E
(hexadecimal).
Dirección esclavo
Longitud: 1 byte.
En todos los mensajes este campo indica la dirección del esclavo, entre
1 y 250. Las direcciones 0 y 251 a 255 están reservadas.
Control
Longitud: 1 byte
Este campo clasifica las tramas en tres tipos:
| Control.
| Supervisión.
| Información. | | | De los tres tipos sólo la trama de información
contiene un campo de información dentro del mensaje. En el resto todos los
mensajes se componen de 6 bytes (no incluyen el campo de información).
A continuación se muestra una tabla con todas la funciones:
Función |
Tipo de trama |
Código (campo de control) |
Descripción |
Modo de respuesta normal (SNRM) |
Control M > E |
93h |
Se ordena al esclavo pasar al estado de respuesta normal (NRM)
|
Desconexión (DISC) |
Control M > E |
53h |
Se ordena al esclavo pasar al estado de desconexión (NDM) |
Reconocimiento no numerado (UA) |
Control E > M |
53h |
Respuesta del esclavo indicando que ha recibido una orden válida
estando en estado de desconexión. |
Trama rechazada (FRMR) |
Control E > M |
97h |
Respuesta del esclavo indicando que ha recibido una orden
incorrecta estando en estado normal (NRM) |
Consulta o test (polling) |
Supervisión M > E |
RRR10001 (binario) |
RRR=nº de secuencias anteriores recibidas como correctas El
maestro indica que el esclavo debe contestar como consulta o test,
respondiendo con RR o RNR. |
Receptor dispuesto (RR) |
Supervisión E > M |
RRR10001 (binario) |
RRR=nº de secuencias anteriores recibidas como
correctas Respuesta del esclavo indicando que la consulta es
correcta y que no tiene datos que transmitir. |
Receptor no dispuesto (RNR) |
Supervisión E > M |
RRR10101 (binario) |
RRR=nº de secuencias anteriores recibidas como
correctas Respuesta del esclavo indicando que la consulta es
correcta pero que no puede aceptarla por tener el buffer lleno.
|
Información (I) |
Información M > E E > M |
RRR1EEE0 (binario) |
RRR=nº de secuencias anteriores recibidas como
correctas EEE=nº de secuencias enviadas Tramas normales de
intercambio de información. En cada trama se comprueba los
números de secuencia para evitar duplicidad de mensajes y detectar
la pérdida de tramas o errores de transmisión.
|
Información
Longitud: máximo 250 bytes
Este campo es de longitud variable y sólo existe en las tramas de
información. En el siguiente epígrafe se explica con profundidad esta
parte de la trama.
CRC
Longitud: 2 bytes
El CRC es un conjunto de 16 bits que sirven para detectar errores de
transmisión. Los dos bytes se obtienen mediante un polinomio H4 del tipo
(XE16 + XE12 + XE5 + 1).
Trama del campo
de información
El campo de información de la trama obedece a un formato que especifica
un mínimo de 7 bytes y un máximo de 250 (aunque se acepta como dispositivo
estándar aquel que permite entre 7 y 20 bytes de longitud). Los bytes se
corresponden con el siguiente formato:
Byte |
Descripción |
1 |
Longitud de información |
2 |
MT - SE - DE - TR - 4 bits de reserva |
3 |
Dirección esclavo |
4 |
Tarea fuente - Tarea destino |
5 |
Tareas usuario / Errores |
6 en adelante (hasta byte 250) |
Otros datos
(Mínimo 2 bytes) |
Longitud de información
Indica la longitud del campo de información (entre 7 y 250).
Tipo de mensaje (MT)
0 = orden 1 = respuesta
Fuente de la orden (SE)
Indica si la fuente de una orden o el destino de una respuesta es:
0 = bloque maestro 1 = bloque de expasión E/S de éste
Destino de la orden (DE)
Indica si el destino de una orden o la fuente de una respuesta es:
0 = bloque esclavo 1 = bloque de expasión E/S de éste
Pista (TR)
0 = mensaje de maestro a esclavo 1 = respuesta de esclavo a maestro
4 bits reservados
Se reservan para futuras ampliaciones, deben ser puestos a 0 al enviar
el mensaje.
Dirección esclavo
El valor debe estar comprendido entre 1 y 250 (como ya se ha comentado
anteriormente).
Codificación de tareas
Este byte se compone de dos grupos de 4 bits:
| tarea fuente (4 bits altos): las tareas 12 a 15 están libres y
pueden ser definidas por el usuario. La tarea 0 está reservada a los
servicios RAC (ver tabla adjunta) y las tareas 1 a 11 están reservadas
por Intel.
| tarea destino (4 bits altos): definibles por el usuario (salvo que
la tarea fuente sea la 0). | | La tarea 0 o RAC (Remote Acces and
Control) proporciona una serie de funciones que todo dispositivo BITBUS
debe soportar:
Código |
Tipo |
Tarea |
00h |
Control |
Reset esclavo |
01h |
Control |
Llamar tarea programada en un esclavo |
02h |
Control |
Finalizar tarea |
03h |
Control |
Obtener identificador/puntero de la función. |
04h |
Control |
Habilitar/deshabilitar el resto de tareas (excepto RAC) en un
esclavo. |
05h |
Acceso |
Leer 1 byte de E/S |
06h |
Acceso |
Escribir 1 byte de E/S |
07h |
Acceso |
Actualizar líneas de E/S |
08h |
Acceso |
Leer n bytes de la memoria del esclavo |
09h |
Acceso |
Grabar n bytes en la memoria del esclavo |
0Ah |
Acceso |
Operación O (OR) con byte de E/S |
0Bh |
Acceso |
Operación Y (AND) con byte de E/S |
0Ch |
Acceso |
Operación O-exclusiva (XOR) con byte de E/S |
0Dh |
Acceso |
Leer registro de estado |
0Eh |
Acceso |
Escribir registro de estado |
0Fh a BFh |
- |
Funciones reservadas por INTEL |
C0h a FFh |
- |
Funciones definibles por el usuario
|
Tareas usuario/Errores
Este byte, en los mensajes de órdenes de maestro a esclavo, contendrá
los datos necesarios para las subfunciones definidas por el usuario. En
los mensajes de respuesta contendrá los códigos de error.
La siguiente tabla muestra los códigos de error que contempla el
estándar y señala aquellos definibles por el usuario:
Código |
Error |
00h |
No hay error |
01h a 7Fh |
Errores definidos por el usuario |
80h |
No se encuantra la tarea destino |
81h |
Imposible iniciar tarea debido a que se está realizando otra
|
82h |
Imposible crear tarea por falta de banco de registros |
83h |
Solicitud de tarea ya activa |
84h |
Imposible iniciar tarea por falta de memoria |
85h a 90h |
Reservado por Intel |
91h |
Error de protocolo |
92h |
Reservado por Intel |
93h |
El nodo de destino no responde |
94h |
Reservado por Intel |
95h |
Tareas deshabilitadas por RAC |
96h |
Orden RAC desconocida |
97h a FFh |
Reservado por Intel |
Datos
Estos bytes están libres para uso general, pero al menos deben existir
los bytes 6 y 7 en cualquier trama que tenga campo de información.
Registros de
estado y contadores de secuencia
Todo esclavo posee un registro que indica su estado dentro de los dos
posibles:
| Modo de respuesta normal (NRM): en este modo el esclavo puede
intercambiar mensajes con el maestro normalmente.
| Modo de desconexión (NDM): en este modo el esclavo no puede
intercambiar mensajes con el maestro. Un esclavo pasa a este modo tras
un reset (inicio) del sistema o cuando detecta un error de
sincronización o una trama que no puede interpretar. Para pasar al modo
NRM se requiere una inicialización por parte del maestro. | | Cada
esclavo dispone, además, de un contador de intercambios que es comprobado
con cada intercambio (excepto en tramas de control) y permite detectar
errores de interpretación o pérdida de una trama.
El maestro mantiene una tabla con los registro de estado y los
contadores de intercambio de todos los esclavos.
Bibliografía
Bitbus European Users Group web pages
ELZET80: BITBUS overview
"Autómatas programables" Josep Balcells, José Luis Romeral Serie
Mundo Electrónico Ed. Marcombo, Boixareu editores, Barcelona.
Original de http://eya.swin.net/
|