CANopenPDORead8()

<< 点击显示目录 >>

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

CANopenPDORead8()

这个功能块用于从网络层接收缓冲区中读取PDO和CAN第二层的报文。

事先用 CANopenRegisterCOBID() 函数块注册的报文  只能被访问一次。如果在两个连续的AsCANopenPDORead8()调用之间收到了几个具有相同COB ID的报文,那么最后收到的报文会覆盖之前的报文。这样就可以在接收缓冲区中始终保持最新的信息。在用CANopenPDORead8()函数块读取后,消息会从网络层接收缓冲区中删除。这可以防止一个消息被PLC程序读取多次。

 

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

 

该功能块 不能 用于 冗余处理!

 

参数

输入/输出

参数

数据类型

说明

IN

enable

BOOL

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

IN

pDevice

UDINT

(transmitted as a pointer to STRING)

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

IN

cobid

UINT

正在读取的报文(PDO或CAN第二层)的COB ID(CAN标识符)。

OUT

status

UINT

错误编号 (0=无错误)。

OUT

error

UINT

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

OUT

errorinfo

UDINT

保留用于其他错误信息。

OUT

data0

USINT

收到的CAN报文的数据字节。

OUT

data1

USINT

OUT

data2

USINT

OUT

data3

USINT

OUT

data4

USINT

OUT

data5

USINT

OUT

data6

USINT

OUT

data7

USINT

OUT

datalen

USINT

收到的CAN报文的长度(从数据0开始)。

 

调用语法

CANopenPDORead8 (enable, adr(Device), cobid, status, error, errorinfo, data0, data1, data2, data3, data4, data5, data6, data7, datalen)