<< 点击显示目录 >> 主页 贝加莱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参数提供所需的数据长度。
该功能块只能有条件地 用于冗余。
适用的限制在下面的章节中描述。
其他信息可以在 "冗余 " 部分找到 。
输入/输出 |
参数 |
数据类型 |
说明 |
||||||||
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 |
|
CANrtr(enable,request,us_ident,can_id,adr(data_adr),data_lng,status)
如果CAN功能块在C函数中被本地调用(并且FBK结构在此函数中被本地声明,而不是用_LOCAL/_GLOBAL),那么静态FBK内存必须被初始化为0。