<< 点击显示目录 >> 主页 贝加莱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后能工作。
提示。
如果在多个任务中使用CAN fbks ,则 必须为每个任务配备CANopen()/CANMulOpen()!
这个功能块只能有条件地 用于冗余。
适用的限制将在以下章节中描述。
其他信息可以在 "冗余 " 部分找到 。
输入/输出 |
参数 |
数据类型 |
说明 |
IN |
enable |
BOOL |
该功能块只有在 enable <>0的情况下才会执行 。 0->1 ? 为CAN控制器创建管理。 1->0 ...移除对CAN控制器的管理 |
IN |
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。