CANrtr()

<< 点击显示目录 >>

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

CANrtr()

一个RTR请求帧可以通过CANrtr()功能块在CAN总线上发送。

request "参数必须被设置为1以发送RTR请求。然后需要调用FBK(请求=0),直到收到数据(状态=0)。

通过从1->0切换,可以在内存中再次删除COB,这允许在系统中管理任何数量的RTR标识符。虽然请求电报(远程帧请求)可以由几个接收节点发送,但对于请求的消息(CANupd())只能存在一个发送节点。

 

RTR请求的数据长度(DLC=数据长度代码)在第一次调用时取自 "data_lng "参数。然后,下一个请求的数据长度是由响应数据的长度得出的。如果你想为每个RTR请求设置一个特定的数据长度,除了设置位7=1(例如$8x,x=length)外,还必须在FBK调用前用data_lng参数提供所需的数据长度。

 

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

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

 

手柄必须被初始化

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

隐藏指针的使用

 

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

参数

输入/输出

参数

数据类型

说明

IN

enable

BOOL

启用的含义 。

位置边缘(0->1)。

定义CAN标识符的COB(COB=通信对象)。

负边(1->0)。

删除COB。

enable = 1。

数据轮询。

IN

request

BOOL

0... 轮询数据缓冲区

1...发送RTR请求

IN

us_ident

UDINT

来自 CANopen()的用户标识

IN

can_id

UDINT

CAN标识符

IN

data_adr

UDINT

(given as a pointer)

存储所接收数据的数据区的地址。

OUT

data_lng

USINT

收到的数据的长度,以字节为单位。

OUT

status

UINT

状态

描述

0

数据已被接收。

1

功能仍然有效。没有收到答复。

xxxx

错误号码也会输出到 状态 输出。

调用语法(自动化基础)

CANrtr(enable,request,us_ident,can_id,adr(data_adr),data_lng,status)

 

注意事项

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

 

例子

Automation Basic

ANSI C

Structured Text