CANopen()

<< 点击显示目录 >>

主页  贝加莱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时,都会应用波特率或比特计时值的配置。

 

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

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

 

手柄必须被初始化

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

隐藏指针的使用

 

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

参数

输入/输出

参数

数据类型

说明

IN

enable

BOOL                                                  

这个功能块只有在 enable 为0时才会执行  。

IN

baud_rate

USINT

CAN接口应以何种波特率运行。

SG4的注意事项。

如果在 "设备"字符串中传递参数/T0和/T1或/BD,则该参数被忽略

IN

cob_anz

UINT

最大允许的COB(通信对象)数量。

IN

error_adr

UINT

(transferred as a pointer)

指向错误变量的指针(UINT)。

第15位=1

CAN总线处于总线关闭状态

14位=1

控制器的接收缓冲区中的数据溢出。

用户必须在评估后和再次调用该函数前将错误变量重置为0。

IN

device

UDINT

(given as a pointer to STRING)

清楚描述CAN接口的字符串的地址。

SG4:设备参数的例子。"SS1.IF1 /BD=250000"

 

IN

info

UINT

启用/禁用CAN控制器的扩展模式(仅SG3)。

OUT

us_ident

UDINT

这个用户ID号对于CAN_Lib库的其他功能是必需的,以便清楚地识别一个CAN接口。

OUT

status

UINT

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

调用语法(Automation Basic)

CANopen(enable,baud_rate,cob_anz,adr(error_adr),device,info,us_ident,status)

注意

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

 

baud_rate参数

波特率是用 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_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)时才适用。

/T0

 

1

/T0=1

位定时寄存器0的值

注意。

这比/BD参数的处理优先级更高。

/T1

 

28

/T1=28

位定时寄存器1的值

注意。

这比/BD参数的处理优先级更高。

/EX

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与波特率之间的联系

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参数

/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通信也要在扩展模式下使用,则必须在系统配置的接口参数中进行设置。

例子

Automation Basic

ANSI C

Structured Text