CANMulOpen()

<< 点击显示目录 >>

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

CANMulOpen()

这个FBK被用来初始化众多的CAN控制器,并分配适当的资源。

我们建议在Init-Sp中使用这个FBK,因为资源分配和初始化需要时间。CANMulOpen在每个PLC任务中只能被调用一次。一个来自库的 "DevParam "结构被转移到FBK中。这个结构必须为每条要打开的CAN线填写(每个字段)。

 

dev_nr 参数通知FBK有多少个CAN控制器应该被打开。 us_ident 参数被用作其余CAN FBK的标识符。如果你想改变CAN控制器的参数,  在用新的参数再次初始化CAN线之前, 必须先调用FBK, 使之变为0

请注意。

并非所有库中的CAN FBKs都能在CANMulOpen后工作。如果一个功能块不能与us_ident标识符一起工作,该功能块会报出状态 8805 (无效的us_ident)。

只有以下FBKs在CANMulOpen后能工作。

CANwrite

CANquwr

CANread

CANqueue

CANMulQueue

拒绝接受

提示。

如果在多个任务中使用CAN fbks ,则 必须为每个任务配备CANopen()/CANMulOpen()!

 

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

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

 

手柄必须被初始化

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

隐藏指针的使用

 

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

参数

输入/输出

参数

数据类型

说明

IN

enable

BOOL

该功能块只有在 enable <>0的情况下才会执行 。

0->1 ? 为CAN控制器创建管理。

1->0 ...移除对CAN控制器的管理

IN

pDevParam

UDINT

(given as a pointer)

指向DeviceParameter结构的指针

IN

dev_nr

USINT

要打开的CAN控制器的数量

OUT

us_ident

UDINT

所有附加CAN功能块的标识符

OUT

status

UINT

状态反馈。

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

调用语法(自动化基础)

CANMulOpen(enable, adr(DevParam), dev_nr, us_ident, status)

 

注意事项

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

 

例子

Automation Basic

ANSI C

Structured Text