CMSdlreq()

<< 点击显示目录 >>

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

CMSdlreq()

CMSdlreq()函数可以将任何数据大小的 "复用域 "对象从客户端传输到服务器。

根据CAL规范CiA/DS202-2(CMS多路域协议)将数据分割成独立的CAN帧。如果数据长度为5个字节,则以 "快速域下载 "协议进行传输。如果 启动 参数设置为1,则开始进行新的启动域传输,必要时中断任何活动的域下载。为了 传输数据,必须循环调用FBK,直到域传输完成(状态 =0)。

每调用一次FBK,就有一个段(域请求),最多有8个数据字节。8个数据字节的段(域请求)通过CAN BUS传输(注意:只有在收到最后一个段的确认后才会传输该段)。 dl_len 参数检查已经发送的数据的大小。在 enable (1->0)的 负边沿,  释放COB和FUB管理任务。

 

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

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

 

手柄必须被初始化

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

隐藏指针的使用

 

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

参数

输入/输出

参数

数据类型

说明

IN

enable

BOOL

启用的含义 。

位置边缘(0->1)。

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

负边(1->0)。

删除COB。

enable = 1。

继续下载。

IN

initiate

BOOL

Pos. edge (0->1)... 启动新域

IN

us_ident

UDINT

来自 CANopen()的用户ID

IN

client_id

UDINT

从客户到服务器发送COB的CAN标识符

IN

server_id

UDINT

从服务器到客户端发送COB的CAN标识符

IN

mult

UDINT

复用域的复用器。多路复用器包含特定的应用数据。 mux (UDINT)的字节1到3  被接受到启动域下载协议中。字节0被忽略。注意应用中改变的字节顺序(MOTOROLA <--> INTEL)。

IN

data_adr

UDINT

下载数据的地址

IN

data_len

UDINT

下载数据的长度

OUT

add_code

UINT

在异常终止情况下的附加错误信息

OUT

err_class

USINT

根据CANopen()的错误等级

OUT

err_code

USINT

根据CANopen()的错误

OUT

dl_len

UDINT

发送的下载数据的大小。

OUT

status

UINT

状态

描述

0

下载成功执行。

1

下载正在进行(dl_len <> data_len)。

xxxx

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

呼叫语法(自动化基础)

CMSdlreq(enable,initiate,us_ident,client_id,server_id,mult,data_adr,data_len,add_code,err_class,err_code,dl_len,status)

add_code 参数

在异常终止情况下的额外错误信息。

add_code

说明

16

切换位错误

18

服务器上的域的缓冲区太小

49

发送的域数据多于在域启动协议中输入的数据

err_class (错误类别) 参数

err_class

描述:5

5

服务错误

6

访问错误

err_code (错误代码) 参数

err_code

说明

3

参数不一致

7

类型冲突

例子

Automation Basic

ANSI C

Structured Text