CMSattach()

<< 点击显示目录 >>

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

CMSattach()

功能块CMSattach()和CMSdetach()保证了在应用CAN数据时,对于非模块化的数据类型如数组或结构,CMS数据模块中引用的变量的一致性。这使得从应用程序中控制对CMS数据对象的过程变量的访问成为可能。由于系统中的任务优先级,这些功能块只有在任务类Cyclic#2-Cyclic#8中使用时才有意义。对于任务类别Cyclic#1,数据的一致性可以通过CMS数据模块的参数 "info"(位1=1)来保证。

额外的 "CMSattach"/"CMSdetach "功能可以通过在功能块 "CMSinit "中设置参数queue_cnt为1来启用。如果这个模式没有被启用,那么在调用功能块 "CMSattach "或 "CMSdetach "时就会发生错误ERR_CAN_WRMODE(8824)。

在调用功能块CMSattach()后,CMS数据对象中所有被引用的过程变量的所有接收的CAN数据都被复制到一个单独的数据缓冲区。当再次收到相同的数据时,这个数据缓冲区会被覆盖。功能块 "CMSattach "和 "CMSdetach "可以在同一CMS数据对象(cms_ident)的不同任务类中多次使用。在一个CMS数据对象的最后一次 "CMSdetach"(attachCount = 0)中,所有临时保存的CAN数据被复制到相关的过程变量中。

功能块CMSattach()在Automation Runtime V4.41及以后版本中可用。

 

这个功能块只能  在某些情况用于 冗余!

适用的限制在以下章节中列出。

 

手柄必须被初始化

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

 

关于冗余的更多信息,请参见 冗余部分

参数

输入/输出

参数

数据类型

说明

IN

enable

BOOL

该功能块只有在 enable ≠ 0时才会被执行  。

IN

cms_ident

UDINT

来自 CMSinit()的CMS标识符

OUT

attachCount

UDINT

CMS对象的 "附加 "动作的数量

OUT

Status

UINT

错误编号 (0 = 无错误)

调用语法(自动化基础)

CMSattach(enable,cms_ident,attachCount,status)

例子。

CMSattach(cms_ident)

udintvar1 = candaten[0] + SHL(candaten [1]),8)+ SHL(candaten [2]),16) + SHL(candaten [3]),24)

CMSdetach(cms_ident)

功能块中所有接收到的CAN数据被暂时保存在CMS数据对象的所有CMS对象中。

CMS条目

CAN ID

PV名称

8字节的数据缓冲区,用于保存CAN数据

1

101

PV1

 

2

102

2.PV2

 

3

103

PV3

 

 

任务优先级


对象优先级

循环 #1

230

IFx_CanEventHandler

224

循环 #2

218

循环 #3

200

循环 #4

198

循环 #5

196

循环 #6

194

循环 #7

192

循环 #8

190

 

案例3: 当接收到CAN数据时,CanEventHandler在结构变量被访问时中断了任务类Cyclic #2中的用户任务。CanEventHandler将新数据复制到结构变量中。结构变量中的数据在Cyclic#2用户任务的上下文中可以是不一致的。

case3

 

案例4: 当接收到CAN数据时,CanEventHandler在访问结构变量时中断了任务类Cyclic#2中的一个用户任务。如果功能块 "CMSattach "在Cyclic#2用户任务的上下文中为CMS数据对象提前调用,那么接收到的CAN数据将被临时保存,而不是复制到一个变量中。只有在调用功能块 "CMSdetach "后,临时保存的CAN数据才被复制到变量中。因此,结构变量的数据在Cyclic#2用户任务的背景下保持一致。

case4

中断CAN

当接收CAN数据时,CAN中断处理程序会触发CanEventHandler。





IFx_CanEventHandler

CanEventHandler将接收到的CAN数据复制到CMS数据模块中指定的变量。



循环#2用户任务

使用CMS数据模块的变量的用户任务





 

有关与CMS对象工作的其他信息。

使用事件变量控制CMS对象

客户端和服务器的CMS数据对象

客户端和服务器的CMS对象的COB分配

例子

Automation Basic

ANSI C

Structured Text