<< 点击显示目录 >> 主页 贝加莱CAN通讯使用例程说明 > 通过编程实现CAN通讯 > 功能块与函数说明 > CAN_Lib > CAN_Lib - CAN Function Blocks and Functions > CANopen() |
CANopen()功能块用于初始化CAN控制器和请求必要的资源(如内存)。
由于资源的分配和初始化都很耗时,CANopen()函数必须在软件对象的INIT-SP(初始化子程序)中调用。在INIT-SP中,每个CAN接口只允许调用一个CANopen()。
注意。
如果在多个任务中使用CAN FBK,则需要为每个任务执行一次CANopen或CANMulOpen调用(重载)!
请注意。
SG3:
如果在Automation Studio中配置了一个CAN接口,那么无论CAN_open FBK中的参数如何,都会应用这一设置。
只有当CAN设备没有在Automation Studio中配置时(没有CANIO,没有INACAN),CAN_open FBK中给出的参数才会被应用。如果波特率与Automation Studio的配置不同,在CAN_open调用中也不会设置错误代码。
sg4(ar > a2.87)。
每次为AR目标上的CAN设备调用CANopen()FBK时,都会应用波特率或比特计时值的配置。
这个功能块只能有条件 地用于冗余。
适用的限制在下面的章节中描述。
其他信息可以在 "冗余 " 部分找到 。
输入/输出 |
参数 |
数据类型 |
说明 |
IN |
enable |
BOOL |
这个功能块只有在 enable 为0时才会执行 。 |
IN |
USINT |
CAN接口应以何种波特率运行。 SG4的注意事项。 如果在 "设备"字符串中传递参数/T0和/T1或/BD,则该参数被忽略。 |
|
IN |
UINT |
最大允许的COB(通信对象)数量。 |
|
IN |
error_adr |
UINT (transferred as a pointer) |
指向错误变量的指针(UINT)。 •第15位=1。 CAN总线处于总线关闭状态 •第14位=1。 控制器的接收缓冲区中的数据溢出。 用户必须在评估后和再次调用该函数前将错误变量重置为0。 |
IN |
UDINT (given as a pointer to STRING) |
清楚描述CAN接口的字符串的地址。 SG4:设备参数的例子。"SS1.IF1 /BD=250000"
|
|
IN |
UINT |
启用/禁用CAN控制器的扩展模式(仅SG3)。 |
|
OUT |
us_ident |
UDINT |
这个用户ID号对于CAN_Lib库的其他功能是必需的,以便清楚地识别一个CAN接口。 |
OUT |
status |
UINT |
错误编号 (0=无错误)。 |
CANopen(enable,baud_rate,cob_anz,adr(error_adr),device,info,us_ident,status)
如果CAN功能块在C函数中被本地调用(并且FBK结构在此函数中被本地声明,而不是用_LOCAL/_GLOBAL),那么静态FBK存储器必须被初始化为0。
波特率是用 baud_rate 参数设置的 。波特率的分配方式如下表所示。
•1... 10 kBit/s
•2... 20 kBit/s
•5... 50 kBit/s
•10... 100 kBit/s
•12... 125 kBit/s
•25... 250 kBit/s (B&R默认)
•50... 500 kBit/s
•100... 1000 kBit/s
cob_anz 参数设置最大可能的COB数量(COB = 通信对象)。
可能的COB数量必须大于或等于所有使用的CAN标识符的总和( 通过变量表 提供给 CANdftab() 函数的CAN标识符+ CANwrite() 和 CANread() 函数 暂时需要的CAN标识符 )。
所使用的CAN标识符的总和被限制在2047个。这意味着,必须为 cob_anz 参数输入一个小于或等于2047的值 。COB管理需要每个COB有56字节的内存。
一个明确描述所使用的CAN接口的字符串的地址被传送到这个输入端。
SG3的字符串的格式。
[SL<x>]。[SS<x>]。[IF<x>] 。
1.设备 字符串的各个参数的描述 。
oSL... 槽位编号<x>。可能的插槽号范围从0(CPU插槽)到15(最后一个系统总线插槽)。
oSS... 如果接口模块被插入一个插入槽或子槽,必须给出子槽号(<x>=1、2或3)。例如,当在IF060中插入一个接口模块(IF621、IF671等)时,必须始终给出SS1作为子槽号,因为IF060只有一个子槽。
oIF... 接口号 <x>。
2.句号". "被用作参数 分隔符。
3.条目不 区分大小写。
4. 有效设备描述的例子 。
"IF2"
"SL5.IF3"
"SS1.IF1"
"SL0.SS1.IF2"
设备名称(INA设备名称)可以在各个通信模块的配置对话框中找到。
SG4的字符串的格式。
1.设备 字符串的各个参数的描述 。
在CAN_open FBK中应用以下参数来配置一个CAN设备的CAN接口。
标签 |
值,值范围 |
默认值 |
例子 |
说明 |
/BD |
1000000, 800000, 500000, 250000, 125000, 100000, 50000, 20000, 10000 |
250000 |
/BD=250000 |
波特率[比特/秒] 注意。 只有在没有定义定时参数(/T0和/T1)时才适用。 |
|
1 |
/T0=1 |
位定时寄存器0的值 注意。 这比/BD参数的处理优先级更高。 |
|
|
28 |
/T1=28 |
位定时寄存器1的值 注意。 这比/BD参数的处理优先级更高。 |
|
0-1 |
0 |
/EX=0 |
/EX=0 标准CAN标识符,11位 /EX=1 扩展CAN标识符,29位 从Automation Runtime B2.90, E2.87版本开始 如果没有指定参数,模式默认取自Automation Studio的CAN设备配置(CAN标识符 "长度")。 |
T0 |
T1 |
波特率[bit/s] |
0 |
35 |
1000000 |
0 |
22 |
800000 |
0 |
28 |
500000 |
1 |
28 |
250000 |
3 |
28 |
125000 |
4 |
28 |
100000 |
9 |
28 |
50000 |
24 |
28 |
20000 |
50 |
28 |
10000 |
/EX=0设置11位标准CAN模式。
/EX=1设置29位的扩展CAN模式。
CAN标识符模式应该总是在Automation Studio中进行默认配置。
如果该模式应该用CANopen FBK来指定,那么CAN设备就不能在Automation Studio中配置。/EX模式只在 第一次 调用CANopen FBK时应用 。如果没有指定/EX参数(默认),那么扩展模式或标准模式将来自于Automation Studio对CAN设备的配置。一个CAN设备的/EX模式在运行时不能改变,因为驱动程序中的CAN标识符管理器是不同的。
例子。
一个空格("")被用作参数 的分隔符。
参数要 大写。
有效模式描述的例子 。
"ss1.if1 /bd=125000"
"SS1.IF1 /T0=3 /T1=28"
"ss1.if1 /bd=50000"
"ss1.if1 /bd=500000 /ex=1"
SG3:
CAN控制器的 扩展模式 可以通过 info=0x80 启用 。在这种模式下使用29位ID。必须满足以下条件。
•目标系统中的操作系统必须是2.20或更高版本。
•如果该CAN接口的INA2000通信也要在扩展模式下使用,则必须在系统配置的接口参数中进行设置。