La mejor manera de modificar un pin de E / S único en CANOpen DS 401

0

Tengo un microcontrolador con CAN y necesito implementar un maestro CANOpen. Debe cambiar una E / S de pin en un dispositivo de terceros utilizando la especificación CANOpen DS 401.

¿Cuál es la mejor manera de lograrlo?

El problema es que no se puede acceder al bit de E / S individualmente, pero solo se pueden registrar 8bits completos o 16bits (CANOpen DS 401 - Dirección de registro 6200h).

Puedo ver dos opciones:

A)

  • A.1) Escriba en "Salida de máscara de filtro" (CANOpen DS 401 - Registrar dirección 6308h) con la máscara de bits que quiero modificar.
  • A.2) Escriba en "Write Outputs 16 Bits" (CANOpen DS 401 - Registre la dirección 6300H) con el valor deseado
  • A.3) Restablecer "Salida de máscara de filtro" (CANOpen DS 401 - Registrar dirección 6308h).

B) ("Salida de máscara de filtro" siempre está configurada)

  • B.1) Lea "Salidas de escritura 16 bits" (CANOpen DS 401 - Registro de dirección 6300H)
  • B.2) Escriba en "Write Outputs 16 Bits" (CANOpen DS 401 - Registre la dirección 6300H) con el valor modificado leído en el paso B.1

Ventajas de A)

  • Más seguro

Ventajas de B)

  • Menos mensajes

Mi entorno es una configuración maestra múltiple, con valores de "Write Outputs 16 Bits" que se emiten siempre como TPDO.

    
pregunta Jonaias

1 respuesta

0

No hay mucha información involucrada, por lo que en caso de que su nodo sea el único nodo en la red que accederá al nodo DS401 en particular, la solución definitiva es mantener un "mapa de bits del espejo de salida" en su propia RAM del microcontrolador, que corresponde directamente a todas las salidas que ha enviado al nodo DS401. De esa manera, ya sabrá de antemano el estado de los otros bits.

Con qué configuración también puede enviar los datos cíclicamente al nodo DS401 y, por lo tanto, actualizarlos continuamente (la forma industrial de facto de diseñar sistemas críticos).

En el caso de que varios nodos escriban en el nodo DS401, debe usar el método B), primero lea los datos, modifíquelos y vuelva a escribirlos.

El filtro & Las características de polaridad, etc. de DS401 son ligeramente útiles. Están destinados principalmente para ser utilizados con fines de calibración en el sitio, en un sistema donde el usuario final tiene acceso al diccionario de objetos DS401 pero, por lo demás, no puede configurar nada en el sistema. No tiene sentido usar esas funciones cuando está escribiendo software para microcontroladores, ya que hacer cosas como el enmascaramiento de bits es trivial desde dentro del programa C.

    
respondido por el Lundin

Lea otras preguntas en las etiquetas