Controlling CMS Objects with Event Variables

<< 点击显示目录 >>

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

Controlling CMS Objects with Event Variables

事件变量(事件PV)要么由应用程序设置,以便通过 CMSmain() 功能块发送某些CAN报文  ,要么在CAN2000中断中接收到来自CAN2000驱动程序的CAN报文时,它们被再次重置。

在下面的表格中,给出了所述CMS对象的事件变量的状态变化。

控制客户端的事件变量

客户端

事件变量状态

事件

服务

对象类型

应用

CMSmain

CAN2000

只读

B.变量

0 -> 1

 

 

发送RTR请求

只读

B.变量

 

1 -> 0x40

 

正在发送RTR请求

只读

B.变量

 

 

0x40 -> 0

已收到确认信息

只写

B.变量

0 -> 1

 

 

发送请求

只写

B.变量

 

1 -> 0x40

 

正在发送请求

只写

B.变量

 

 

0x40 -> 0

请求已被发送到CAN总线上

只读

M.变量

0 -> 1

 

 

发送请求

只读

M.变量

 

1 -> 0x40

 

正在发送的请求

只读

M.变量

 

 

xx -> 0xFF

收到故障 帧

只读

M.变量

 

 

0x80 -> 0

已收到确认信息

只写

M.变量

0 -> 1

 

 

发送请求

只写

M.变量

 

1 -> 0x40

 

正在发送请求

只写

M.变量

 

 

0x40 -> 0

请求已被发送到CAN总线上

读取

R/W 变量

0 -> 1

 

 

发送读取请求

读取

R/W 可变的

 

1 -> 0x40

 

正在发送读取请求

读取

R/W 变量

 

 

0x40 -> 0x80

读取请求已被发送

读取

R/W 变量

 

 

xx -> 0xFF

收到故障帧

读取

R/W 变量

 

 

0x80 -> 0

已收到读取确认

写入

R/W 变量

0 -> 2

 

 

发送写入请求

写入

R/W 变量

 

2 -> 0x40

 

正在发送写请求

写入

R/W 变量

 

 

0x40 -> 0x80

写入请求已被发送

写入

R/W变量

 

 

xx -> 0xFF

收到故障帧

写入

R/W 变量

 

 

0x80 -> 0

已收到写入确认

通知事件

U. 事件

 

 

xx -> 1

事件已被收到

控制服务器上的事件变量

服务器

事件变量状态

事件

服务

对象类型

应用

CMSmain

CAN2000

只读

B.变量

0 -> 1

 

 

将CMSmain中的数据复制到控制器

只读

B.变量

 

1 -> 0

 

数据已被复制到控制器中

只写

B.变量

 

 

xx -> 1

已收到写入指示

只读

M.变量

 

 

xx -> 1

已收到读指示

只读

M.变量

 

1 -> 0x40

 

读取响应正在发送中

只读

M.变量

 

 

0x40 -> 0

读取响应已被发送

只写

M.变量

 

 

xx -> 1

已收到写指示

读取

R/W 变量

 

 

xx -> 1

已收到读指示

读取

R/W 变量

 

1 -> 0x40

 

读取响应正在发送中

读取

R/W 变量

 

 

0x40 -> 0

读取响应已被发送

写入

R/W 变量

 

 

xx -> 2

已收到写指示

写入

R/W 变量

 

2 -> 0x40

 

正在发送写响应

写入

R/W 变量

 

 

0x40 -> 0

写入响应已被发送

通知事件

U. 事件

0 -> 1

 

 

发送事件

通知事件

U. 事件

 

1 -> 0x40

 

事件正在发送中

通知事件

U. 事件

 

 

0x40 -> 0

事件已被发送到CAN总线上


键。 表中使用了以下缩写。



B.变量


基本变量


M.变量


复用变量


R/W变量


读/写变量


U. 事件


不受控制的事件

备注

重置事件变量(事件PV)在CAN中断中以异步方式发生在循环软件对象上,也就是说,在两次CMSmain()调用之间,很可能有多个CAN报文被发送到同一个CMS对象上,因此只有最后的数据被缓冲在分配的变量中。因此,应用程序必须保证在CAN总线上遵守抑制时间,这样数据就不会丢失。