CANdftab()

<< 点击显示目录 >>

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

CANdftab()

这个功能块为用户定义的变量列表(变量表)提供关于CAN总线的数据。

这些数据既可以被读也可以被写。用户可以通过一个事件变量(事件PV)来检查发送或读取操作。

 

当发送(WRITE)时,只有当事件变量被设置为1时才会发送变量数据。在发送之前,事件变量暂时被设置为40美元。当CAN报文发送完毕后,事件变量再次被设置为0。同样地,当一个给定的CAN标识符的数据被读取(READ)时,事件变量的值被设置为1。

 

为了避免循环时间问题,CANdftab()函数在软件对象的INIT-SP(初始化子程序)中只被调用一次。数据的循环发送或读取是由 CANrwtab() 函数处理 的 。

 

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

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

 

手柄必须被初始化

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

隐藏指针的使用

 

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

参数

输入/输出

参数

数据类型

说明

IN

enable

BOOL

启用的含义 。

位置边缘(0->1)。

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

负边(1->0)。

删除COB。

IN

us_ident

UDINT

用户识别号,用于函数 CANopen()

IN

table_addr

UDINT

(given as a pointer)

变量表的地址。变量表也可以采取结构数组或数据对象的形式。

IN

tab_num

UINT

变量表中的条目数。

OUT

tab_id

UDINT

CANrwtab()的表标识符 。

OUT

status

UINT

错误编号 (0=无错误)。

调用语法(自动化基础)

CANdftab(enable,us_ident,adr(table_adr), tab_num,tab_ident, status)

参数table_adr

table_addr 参数向CANdftab()函数发送变量表的地址。

变量表可以被定义在一个 结构数组 或一个 数据对象中 。这意味着 table_adr 是结构数组的地址(每个过程变量有一个数组元素)或数据对象的起始地址(每个过程变量有一个数据对象条目)。数据对象的起始地址可以用DA_Objinfo()函数确定(见 DataObj库)。

变量表的格式。

元素

数据类型

描述

can_id

UDINT

CAN标识符

pv_name

STRING[31]

过程变量的名称(PV)

参见 "过程变量的名称"。

请注意使用应用模块的注意事项

event_pv

STRING[31]

要触发的事件PV的名称(事件PV的数据类型:USINT)

参见 "过程变量的名称"。

请注意应用模块的使用说明

info

UDINT

Bit 0 = 0: READ (读数据)

Bit 0 = 1: WRITE (发送数据)

数据对象格式(用于变量表):

;   | ------------------------------------------------------------------------------> 1
;   |       | ----------------------------------------------------------------------> 2
;   |       |                                  | -----------------------------------> 3
;   |       |                                  |                               | ---> 4
$00000100,"<taskname:>var_1               ","<taskname:>ev_var_1            ",$0000001
$00000101,"<taskname:>var_2               ","<taskname:>ev_var_2            ",$0000001
$00000102,"<taskname:>var_3               ","<taskname:>ev_var_3            ",$0000000
$00000103,"<taskname:>var_4               ","<taskname:>ev_var_4            ",$0000000

 

1.CAN标识符。

此条目的数据类型。UDINT

2.过程变量的名称(零结尾的字符串,31个字符+空字节)

3.要触发的事件PV的名称(零结尾的字符串,31个字符+空字节)

4.读取数据(位0=0)/发送数据(位0=1)。

该条目的数据类型。UDINT

在变量表中,每个变量最多可以读取或发送8个字节的数据。  通过CAN中断处理来 保证循环资源 Cyclic #X的数据一致性  。当在定时器资源 Timer #X中 使用时,事件变量(event PV)可以用来设置一致性锁 。该事件变量必须被设置为$FE值。在复制了CAN数据后,事件变量被设置为$FF,不能再接受任何CAN数据。在接受了应用程序中的数据后,应用程序的事件变量必须重置为$FE。在应用程序RAM中需要22个字节的内存来管理变量表中的每个变量。

 

注意

如果CAN功能块在C函数中被本地调用(并且FB结构在该函数中被本地声明,而不是用_LOCAL/_GLOBAL),那么静态FB内存必须被初始化为0。

 

用READ定义的变量在接收帧时被CAN驱动覆盖(中断控制的),除非事件PV被设置为$FF。必须至少定义一个CAN标识符,以便在CAN网络中有一个节点处于活动状态。

样本

Automation Basic

ANSI C

Structured Text