CANqueue()

<< 点击显示目录 >>

主页  贝加莱CAN通讯使用例程说明 > 通过编程实现CAN通讯 > 功能块与函数说明 > CAN_Lib > CAN_Lib - CAN Function Blocks and Functions >

CANqueue()

CANqueue()函数用于在读取方向上为一个CAN标识符安装一个队列。

如果  定义的 size 大于0,那么就会为指定的CAN标识符建立一个接收队列。该队列和相关的COB可以通过进一步调用 enable =  0  的函数来删除  。

 

CANqueue()FBK也可以在一个 "循环 "语句中被调用,只要CAN标识符 can_id 在 "循环 "语句中被改变。

如果试图在同一设备上为一个特定的CAN标识符创建一个队列超过一次,那么  在输出状态下会输出错误号 ERR_CAN_COBUSED

如果队列已满,则不再记录电报。在这种情况下,  在输出状态下输出编号 ERR_CAN_QFULL

队列中的每个电报需要14个字节的内存(关于电报的数量,请参见 尺寸 参数)。

 

这个功能块只能有条件地 用于冗余

适用的限制在下面的章节中描述。

 

手柄必须被初始化

不活动的CPU上的特殊错误代码

 

其他信息可以在 "冗余 " 部分找到

参数

输入/输出

参数

数据类型

说明

IN

enable

BOOL

enable的含义 。

enable = 1, size <> 0。

为CAN标识符定义队列和COB(COB=通信对象)。

Neg. edge (1->0):

删除队列和COB。

enable = 1, size = 0。

删除队列内容。

IN

us_ident

UDINT

来自 CANopen()的用户标识

IN

can_id

UDINT

该队列的CAN标识符。

所有收到的CAN数据包都被存储在队列中,其CAN标识符为0xFFFFFFFF。在这种情况下,所有的CAN标识符都被占用了。正因为如此,没有更多的CAN数据包可以被发送,也没有新的CAN标识符可以被注册用于接收。

IN

size

UINT

队列中的电报数量。队列内容被删除, 大小=0

OUT

q_ident

UDINT

CANrd() FBK的队列标识符  。

OUT

status

UINT

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

调用语法(自动化基础)

CANqueue(enable,us_ident,can_id,size,q_ident,status)

注意事项

如果CAN功能块在C函数中被本地调用(并且FBK结构在该函数中被本地声明,而不是用_LOCAL/_GLOBAL),那么静态FBK内存必须被初始化为0。

 

例子

Automation Basic

ANSI C

Structured Text