Presentación de la instrucción CAN_CMD Para cada programa de usuario, la instrucción CAN_CMD permite al usuario programar su red y obtener el diagnóstico de los esclavos. Los parámetros de la instrucción se transmiten por medio de palabras internas (palabras de memoria) %MWx. La sintaxis de la instrucción es la siguiente: CAN_CMDn %MWx:l Leyenda: Símbolo Descripción n Dirección de ampliación del módulo maestro CANopen en el bus Twido (de 1 a 7). x Número de la primera palabra interna (memoria) transmitida en parámetro. l Longitud de la instrucción en número de palabras (2 o 6). Uso de la instrucción CAN_CMD La instrucción CAN_CMD le permite programar y gestionar la red CANopen y realizar comprobaciones de diagnóstico en dispositivos esclavos individuales. Los parámetros de comando se transmiten a través de palabras de memoria %MWx. En la tabla siguiente se describe la acción de la instrucción CAN_CMD en función del valor de los parámetros %MW(x) hasta %MW(x+5), según corresponda: %MWx %MWx+1 %MWx+2 %MWx+3 %MWx+4 %MWx+5 Acción Bit Bit Bit Bit Bit Bit Bit Bit Bit Bit [15-8] [7-0] [15-8] [7-0] [15-8] [7-0] [15-8] [7-0] [15-8] [7-0] Restablecer la comunicación 1 0 CANopen. Restablecer los nodos 1 1 CANopen. – Pasar del modo operativo al 2 0 modo preoperativo. Pasar al modo de 2 1 funcionamiento. 3 => iniciar la lectura del comando SDO. 3o4 4 => iniciar la escritura del comando SDO. Nodo = 1-16 => dirección de Nodo nodo Índice Índice del objeto PDO. Sub = 0-255 => subíndice del Sub Len objeto Len = longitud de datos en bytes Carga útil de acuerdo con el Dato 1 valor que aparece en el campo de longitud (Len) Carga útil de acuerdo con el Dato 2 valor que aparece en el campo de longitud (Len) 5 Nodo Restablecer la comunicación CANopen para un nodo. 1) 6( Nodo Restablecer los nodos CANopen para un nodo. (1) 7 Nodo Pasar del modo operativo al modo preoperativo para un nodo. (1) 8 Nodo Pasar al modo de funcionamiento para un nodo. (1) CAN_CMD solamente disponible para: Twido Extreme con la versión de firmware 4.0 o posterior y para la versión de firmware 2.0 o posterior del módulo maestro CANopen TWDNCO1M. (1) Nota: El estado del bus se actualiza con cada ciclo del PLC. Sin embargo, el resultado de la instrucción CAN_CMD de lectura del bus sólo está disponible en el ciclo siguiente del PLC. Ejemplos de programación de la instrucción CAN_CMD Ejemplo 1: Para forzar al maestro de CANopen TWDNCO1M (que se ubica en la dirección 1 del bus de ampliación Twido) o al maestro integrado de CANopen de Twido Extreme a cambiar al modo Inic: LD 1 [%MW0 := 16#0001] [%MW1 := 16#0001] LD %SW81:X3 (* Si no hay ninguna instrucción CAN_CMD en *) (* Progreso, continuar *) [CAN_CMD1 %MW0:2] (* Para forzar al bus maestro de CANopen a *) (* pasar a modo Inic *) ---LDN %SW81:X4 (* (opcional) para saber si la instrucción CAN_CMD *) (* se ha completado correctamente, antes de que se *) (* emita una nueva. *) Ejemplo 2: Para leer la siguiente variable: SDO_Slave:1_index:24576_sub-index:1_length:4 LD 1 [%MW6 := %MW4] (* Almacenar el resultado del último *) (* comando SDO *) [%MW7 := %MW5] (* SDO*) (* Almacenar el resultado del último comando *) ---LD %SW81:X3 (* Si no hay ninguna instrucción CAN_CMD *) (* en curso, continúe*) [%MW0 := 16#0003] [%MW1 := 16#0001] (* Iniciar la lectura del comando SDO hasta el nodo de dirección 1*) [%MW2 := 16#6000] (* Acceder al número de índice 24576*) [%MW3 := 16#0104] (* Acceder al número de subíndice 1 *) (* y valor de longitud 4 *) [CAN_CMD1 %MW0:6] (* Iniciar el comando SDO*) Ejemplo 3: para escribir la siguiente variable: SDO_Slave:1_index:24576_sub-index:1_length:4 LD 1 [%MW0 := 16#0004] [%MW1 := 16#0001] (* Iniciar la escritura del comando SDO hasta el nodo de dirección 1*) [%MW2 := 16#6000] (*Acceder al número de índice 24576*) [%MW3 := 16#0104] (* Acceder al número de subíndice1 * ) (* y valor de longitud 4 *) [%MW4 := 16#1234] (* Valor del dato 1*) [%MW5 := 16#1234] (* Valor del dato 2*) ---LD %SW81:X3 (* Si no hay ninguna instrucción CAN_CMD *) (* en curso, continúe *) [CAN_CMD1 %MW0:6] (* Iniciar el comando SDO*) Ejemplo 4: Para forzar al bus maestro CANopen integrado del Twido Extreme a pasar a modo Inic: LD 1 [%MW0 := 16#0005] (*Tipo de comando de 5 a 8*) [%MW1 := 16#0001] (* Dirección del nodo*) ---LD %SW81:X3 (*Si no hay ninguna instrucción CAN_CMD en*) (* en curso, continúe *) [CAN_CMD1 %MW0:2] (* Para forzar al bus maestro Twido Extreme *) (* CANopen integrado a cambiar al modo Inic*)