名称:CanOpen写SDO功能

符号:CANOPEN_SDO_WRITE

说明:

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

图片:

参数:

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

示例:

LD:

ST:

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

解释:

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