名称:CanOpen读SDO功能

符号:CANOPEN_SDO_READ

说明:

        此功能块是CANOPEN主从站用来实现读SDO功能的。

图片:

参数:

参数 | 声明 | 类型 | 描述
--- | --- | --- | ---
NODEID | Input | USINT |
    读的SDO的目的站的NodeID
MAININDEX | Input | UINT |
    对象字典的主索引
SUBINDEX | Input | USINT |
    对象字典的子索引
MAXLENGTH | Input | USINT |
    可以读取的数的最大长度
EXECUTE | Input | BOOL |
    触发执行读SDO动作
TIMEOUT | Input | UDINT |
    超时时间
DATA | Input | REF_TO BYTE |
    读取到的数据存储数据指针
ACTUALLEN | Output | USINT |
    读取到的数据的长度
DONE | Output | BOOL |
    功能块是否执行完成
BUSY | Output | BOOL |
    功能块现在是否正在执行
ERROR | Output | BOOL |
    功能块是否执行错误
ERRORID | Output | DINT |
    功能块执行的错误码

示例:

LD:

ST:

CANOPEN_SDO_READ_inst1(NODEID := 1, MAININDEX := mainIndex, SUBINDEX := 1, MAXLENGTH ：= 4, EXECUTE := TRUE, TIMEOUT := 500, DATA ：= ucData, ACTUALLEN := ActualLenOut, DONE => DoneOut, BUSY => BusyOut, ERROR => ErrorOut, ERRORID => ErrorID);

解释:

         NODEID表示要读SDO到NodeID为1的CANopen设备；
         mainIndex为0x2000表示要读的数据字典的主索引为0x2000；
         SUBINDEX为1表示要读的数据字典的子索引为1；
         MAXLENGTH为4表示要读的数据的最大长度为4个字节；
         EXECUTE为TRUE，如果上一次调用此功能块对象时，EXECUTE为FALSE，则此次为上升沿，将触发写SDO；
         TIMEOUT为500表示写SDO的超时时间为500ms；
         DATA为ucData，表示读取到的数据存储在数组ucData中；
         ActualLenOut为实际读取到的数据长度；
         DoneOut如果为TRUE，则表示功能块执行完成；
         BusyOut如果为TRUE，则表示当前功能块正在执行；
         ErrorOu如果为TURE，则表示功能块存在错误，没有完成SOD的写操作，错误码为ErrorID。