5. Procedimiento de acceso
Cada mensaje que se envía al bus CAN contiene un tipo de dirección que permite
determinar a qué participante del bus está dirigido el mensaje. Dicho número se
denomina identificador. Cuanto más bajo sea el identificador mayor es la prioridad el
mensaje. Para los objetos de comunicación mencionados están definidos los
identificadores correspondientes. El siguiente esquema muestra la estructura básica de
un mensaje CANopen:
5.2
Acceso SDO
A través de los Service Data Objects (SDO) se puede acceder al directorio de objetos del
controlador de motor. Este acceso es especialmente sencillo y claro. Por eso se
recomienda crear la aplicación primero sólo con SDOs y posteriormente ajustar algunos
accesos de objetos a los Process Data Objects (PDOs), más rápidos pero también más
complicados.
El acceso a los SDOs se hace siempre desde un control de nivel superior (host). Éste envía
al controlador de motor una orden de escritura para modificar un parámetro del directorio
de objetos, o bien una orden de lectura para leer un parámetro. Para cada orden el host
recibe una respuesta que contiene el valor leído o bien, en caso de una orden de
escritura, sirve como validación.
Para que el controlador de motor reconozca que la orden va dirigida a él, el host debe
enviar la orden con un identificador determinado. Dicho identificador consta de la base
600
+ el número de nodo del controlador de motor correspondiente. El controlador de
h
motor responde con el identificador 580
La estructura de las órdenes y de las respuestas depende del tipo de datos del objeto a
leer o escribir, ya que deben enviarse o recibirse 1, 2 o 4 bytes de datos. Son compatibles
los siguientes tipos de datos:
UINT8
Valor de 8 bits sin signo
INT8
Valor de 8 bits con signo
UINT16
Valor de 16 bits sin signo
INT16
Valor de 16 bits con signo
UINT32
Valor de 32 bits sin signo
INT32
Valor de 32 bits con signo
Festo P.BE-CMMP-CO-SW-ES 0708NH
Número de bytes de datos (aquí 8)
Bytes de datos 0 ... 7
601
Len
D0 D1 D2 D3 D4 D5 D6 D7
h
Identificador
+ el número de nodo.
h
0
-128
0
-32768
0
-(2
...
255
...
127
...
65535
...
32767
32
...
(2
- 1)
31
31
)
...
(2
- 1)
27