<< 点击显示目录 >> 主页 贝加莱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)