CANopenSDOReadData()

<< 点击显示目录 >>

主页  贝加莱CANopen通信使用助手 > 通过编程实现CANopen通讯 > 功能块与函数说明  > AsCANopen - Function blocks >

CANopenSDOReadData()

当使用在后台持续运行的SDO传输时,这个功能块用于读取节点的对象条目。

读取的数据被写入地址 "pRxData",写入的最大数据量与 "maxlength "相对应。rxlength "输出指定读取的数据字节数。如果指定的缓冲区太小,会产生ERR_CANOPEN_INVALID_DATALENGTH错误,其中rxlength包含所需的缓冲区大小,pRxData包含初始最大长度的数据。网络层在任何时候都只支持PLC程序的一次SDO传输。通过设置 "enable = TRUE "来启动SDO传输,使这个SDO通道不能被其他功能块所使用。在SDO功能块返回ERR_FUB_BUSY以外的状态之前,它一直被锁定。在 "节点=0 "的情况下调用功能块可以访问PLC上的本地对象字典。这也允许从一个单独的OD中读取数值。

 

异步处理导致该功能块返回 ERR_FUB_BUSY ,直到该功能块成功完成或发生错误。

 

这个功能块 不能 用于 冗余!

 

参数

输入/输出

参数

数据类型

说明

IN

enable

BOOL

只有当 enable <> 0时,才会执行此功能块 。

IN

pDevice

UDINT

(given as a pointer to STRING)

设备名称(语法:SL<x>.SS<y>.IF<z>)

IN

node

USINT

要读取的节点的地址(1-127或0为本地OD)。

IN

index

UINT

要读取的索引条目的编号

IN

subindex

USINT

要读取的子索引项的编号

IN

transfer type

USINT

传输模式(见 SDO传输模式)

IN

pRxData

UDINT (given as a pointer to STRING)

用于读取数据的内存区域的地址

IN

maxlength

UDINT

读取数据的存储区域的大小

OUT

Status

UINT

错误编号 (0=无错误)

OUT

error

UINT

根据CIA405_CANopen_KERNEL_ERROR 数据类型的错误代码  。

OUT

errorinfo

UDINT

CIA405_SDO_ERROR "数据类型用于SDO功能块的ERRORINFO参数,返回通信伙伴的SDO中止代码。一般的中止代码在CiA标准草案301中定义;也可以根据需要进行扩展。

OUT

rxlength

UDINT

读取数据的长度

 

调用语法(Automation Basic)

CANopenSDOReadData (enable, adr(pDevice), node, index, subindex, transfertype, pRxData, maxlength, status, error, errorinfo, rxlength)