La comunicación se realiza a una velocidad de 38400 Baudios, sin paridad, y con 8 bits de datos y 1 bit de 'stop', o sea, '38400N81'. Se utiliza el siguiente protocolo:
La definición de los comandos es como sigue:
Inicialización
| PC -> Módulo | Módulo -> PC |
|
|
|
|
|
|
| Paquete de inicialización: <ch> es el código de identificación que el módulo tendrá que utilizar como el propio. | El módulo retransmite el paquete de datos, con el código de identificación incrementado en 1 (y la suma de control corregida). De esta forma, el próximo módulo lo interpretará como comando de identificación. |
Envio de comando (excitación)
| PC -> Módulo | Módulo -> PC |
|
|
|
|
|
|
| Paquete de 'comando': el valor de cm será utilizado para la entrada del sistema a controlar, por ejemplo la intensidad de la fuente de luz, o la velocidad del motor. | Paquete de confirmación: el mismo de entrada, sin el valor de comando. |
Pedido de medición
| PC -> Módulo | Módulo -> PC |
|
|
|
|
|
|
| Paquete de 'pedido': el módulo tiene que responder con el valor de salida del proceso, por ejemplo, la medición de la intensidad de la luz o medición de temperatura. | Paquete de resultado: el mismo de entrada, pero contiene el valor de la medición pedido. |
Algunas aclaraciones sobre los códigos usados:
| Código | Descripción |
| C0 | Código de inicio y terminación de paquete (Hex 0xC0) |
|
s1 s2 s3 |
Códigos de comando. La 's' indica el 'canal interno' en módulo:
cada módulo está previsto (aunque no implementado todavía) para
controlar varios procesos simúltaneamente. El número del canal
está codificado en los 4 bits superiores. (s=0, s=1, s=2: Entradas analógicas. s=4: medidor de velocidad para el motor) |
| ch | Número del módulo a controlar |
| cs | Suma de control. La suma de todos los bytes, excepto los 0xC0 iniciales y finales, tiene que dar 0xFF. Nota: Esto es sin los códigos de escape! |
| cm | Valor del comando (0 - 255) (excitación) |
| md | Valor de respuesta (0 - 255) (medición). |
Un obervador atento habrá detectado una falla en el diseño de este protocolo: Qué pasa cuando uno de los datos enviados es actualmente 0xC0? En este caso sería imposible de sincronizar correctamente. Para esta caso existe un sistema con secuencias de escape.
| (c) John Coppens ON6JC/LW3HAZ | correo |