<< 点击显示目录 >> 主页 贝加莱CAN通讯使用例程说明 > 通过编程实现CAN通讯 > 功能块与函数说明 > ArCan > ArCanRtr() |
该功能块提供一个RTR响应帧,一旦收到指定ID的RTR请求,就会自动传输。
如果 在该功能块中 输入 Enable 被设置为 TRUE ,就会提供一个具有配置的ID和配置的格式的响应帧。这些参数只有在输入 Enable 被从 FALSE 设置 为 TRUE 时才适用 (即边缘控制)。一旦收到具有配置的ID和格式的RTR请求,就会传送响应帧。如果响应帧被成功传输,输出 ResponseSent 被设置为 TRUE。
一旦输入参数 Enable 从 FALSE 变为 TRUE,输入参数 ID 和 Format 被读取,初始化被异步执行。这意味着 Busy 是 TRUE ,输出 Active 是 FALSE。
循环执行是同步的,在一个周期内可以多次调用该功能块。 这时 输出 Busy是TRUE ,输出 Active 是 TRUE。
如果输入参数 Enable 从 TRUE 变为 FALSE,非初始化将以异步方式执行。这意味着输出 "忙" 为 "true" ,输出 "活跃" 为 "false"。
一旦去初始化完成,输出 Busy 为 FALSE ,输出 Active 为 FALSE。然后该功能块可以再次被启用。
必须使用 输入 SetData 来改变要传输的数据。如果输入 SetData 被设置为 TRUE,要传输的数据将被复制到输入参数 Data的内部缓冲区 ,要传输的长度由输入 DataLength 配置 (SetData 是水平控制的)。只要 SetData 为 "真",输出 ResponseSent 就被设置为 "假"。
为了配置 Data 和 DataLength,Enable 必须为 TRUE。
这个功能块只能 在某些情况下用于 冗余 !这一点 在以下章节中有所描述。
适用的限制在以下章节中描述。
关于冗余的更多信息,请看 冗余部分 。
输入/输出 |
参数 |
数据类型 |
说明 |
IN |
Enable |
BOOL |
只要这个输入被设置,功能块就会被激活。 |
IN |
DeviceName |
STRING[127] |
CAN接口的名称,例如:SS1.IF1。 |
IN |
ID |
UDINT |
RTR请求的CAN标识符 |
IN |
Format |
UDINT |
arCAN_11BIT或arCAN_29BIT - RTR请求的CAN标识符的格式 |
IN |
DataLength |
UDINT |
参数数据的长度 |
IN |
Data |
ARRAY[0..63]OF BYTE |
在RTR请求期间应该传输的数据。 |
IN |
SetData |
BOOL |
应用要传输的数据和要传输的长度并重置参数 ResponseSent |
OUT |
Busy |
BOOL |
该功能块处于活动状态,必须继续被调用。 |
OUT |
Active |
BOOL |
该功能块处于活动状态,可以对RTR请求做出反应。 |
OUT |
Error |
BOOL |
在执行功能块时发生错误。 |
OUT |
StatusID |
DINT |
错误编号 |
OUT |
ResponseSent |
BOOL |
一旦RTR响应被成功传输给RTR请求者,则为TRUE;自上次用SetData调用功能块后,为TRUE。 |
这些错误号码可以被返回。
名称 |
价值 |
描写 |
arCAN_ERR_INVALID_PARAMETER |
-1070584147 |
检查参数。 |
arCAN_ERR_DEVICE_NAME |
-1070584148 |
检查设备名称。 |
arCAN_ERR_INVALID_DATALENGTH |
-1070584150 |
数据长度无效。 |
arCAN_ERR_INVALID_ID |
-1070584145 |
检查ID。 |