Camino:  Equipo (Dispositivos) > SCA06 > Ladder > Communication Network > CANopen >

CO_SDOWrite

Previous pageReturn to chapter overviewNext page

Bloque que ejecuta una escritura de datos vía SDO de un esclavo remoto en la red CANopen.

 

Representación Ladder

 

CO_SDOWRITE_block

 

Estructura del Bloque

 

Tipo de Variable

Nombre

Tipo de Dato

Descripción

VAR_INPUT

Execute

BOOL

Habilitación del bloque


NodeID#

BYTE

Dirección del esclavo


Index#

WORD

Indice del objeto a ser accedido en el esclavo


SubIndex#

BYTE

Subíndice del objeto


Size#

BYTE

Tamaño en bytes del dato accedido


Timeout#

WORD

Tiempo de espera máximo para llegada del dato, a partir del inicio de la solicitud [ms]


Value

BYTE USINT

Variable que tiene los datos a ser escritos

VAR_OUTPUT

Done

BOOL

Habilitación de salida


Active

BOOL

Señalizador de espera de respuesta


Busy

BOOL

Señalizador de que el cliente SDO está ocupado con otra solicitud


Error

BOOL

Señalizador de error en la ejecución


ErrorID

BYTE USINT

Identificador del error ocurrido

VAR

CO_SDOWRITE_INST_0

CO_SDOWRITE

Instancia de acceso a la estructura del bloque

 

Operación

 

Este bloque, cuando detecta un flanco de subida en Execute, verifica si el cliente SDO en la dirección especificado en NodeID# está libre para envío de datos (variable Busy en nivel FALSE). En caso de que lo esté, enviará la solicitud de escritura al objeto de tamaño Size# localizado en Index# y SubIndex# y ajustará la salida Active, reseteándola al recibir la respuesta del esclavo. En caso de que el esclavo no esté libre, el bloque aguardará que Busy pase a nivel FALSE para reenviar la solicitud.

 

wpshelp_common_fig_note

¡NOTA!

En caso de que Execute pase a nivel FALSE y Busy aún esté en nivel TRUE, la solicitud será cancelada.

 

wpshelp_common_fig_note

¡NOTA!

Value es un array de tamaño igual a Size#. Es importante verificar esta compatibilidad para no generar errores en el bloque.

 

wpshelp_common_fig_note

¡NOTA!

Solo es posible leer un objeto (BYTE, WORD, DWORD) por bloque. No es posible leer un array de objetos.

 

Cuando Execute tiene valor FALSE, Done permanece FALSE. La salida Done sólo es activada cuando el bloque termina la ejecución exitosamente, permaneciendo en nivel TRUE hasta que Execute reciba FALSE.

 

En caso de que haya algún error en la ejecución, la salida error será activada y ErrorID exhibirá el código del error según la tabla de abajo.

 

Código

Descripción

0

Ejecutado exitosamente

1

La tarjeta no puede ejecutar la función

2

Timeout en la respuesta del esclavo

3

El esclavo retornó error

 

Diagrama de Flujo del Bloque

 

CO_SDOWRITE_flowchart

 

Ejemplo en Ladder

 

CO_SDOWRITE_example01

 

El ejemplo de arriba solicita la escritura del dato contenido en VALUE, de tamaño SIZE, en el local INDEX - SUBINDEX del dispositivo NODEID. Finalizado exitosamente el bloque, será activada la salida Done.

 

Ejemplo en ST

 

 El siguiente ejemplo muestra las instrucciones para aplicar el ejemplo anterior en el lenguaje ST.

 

 

VAR

   ERROR : BOOL;

   INDEX, TIMEOUT : WORD;

   NODEID, SUBINDEX : BYTE;

   VALUE : UDINT;

   CO_SDOWRITE_INST_0 : FB_CO_SDOWrite;

END_VAR

 

CO_SDOWRITE_INST_0.Execute := DI1;

CO_SDOWRITE_INST_0(

NodeId:=NODEID,

   Index:=INDEX,

   SubIndex:=SUBINDEX,

   Size:=4,

   Timeout:=TIMEOUT,

   Value:=VALUE);

ERROR := CO_SDOWRITE_INST_0.Error;

DO1 := CO_SDOWRITE_INST_0.Done;