nxcomGetDiag()

<< 点击显示目录 >>

主页  贝加莱CANopen通信使用助手 > 通过编程实现CANopen通讯 > 功能块与函数说明  > AsNxCoM - FBs >

nxcomGetDiag()

这个FB可以用来读取指定节点的诊断信息。CANopen堆栈总是保存最后5个电报。读取的电报会被缓冲器删除。

 

这个函数块可以取代 nxcomGetState()nxcomRecvEmcyDev()

 

 

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

 

参数

输入/输出

参数

数据类型

说明

IN

enable

BOOL

该功能块仅在enable为<>0时执行。

IN

pDevice

UDINT

(given as a pointer to STRING)

接口的名称。

例如。"SS1.IF1"

IN

node

USINT

所需从属设备的节点号(1...127)。

IN

flags

UDINT

标志。

nxcomFLAG_PEEK - 不要从诊断列表中删除节点。

IN

pEmcyData

UDINT

(given as a pointer to STRUCT nxcomEmcyTelegrams_t)

指针指向一个由5个紧急电报组成的数组,每个8字节。

OUT

status

UINT

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

OUT

coStatus

UDINT

该输出包含 CANopen堆栈的状态

OUT

nodeFlags

UDINT

节点标志

状态

说明

nxcomNODE_FLAG_DEACTIVATED

0x80000000

节点被禁用,不被主站处理。这个位不会在诊断列表中产生一个条目。

nxcomNODE_FLAG_STATE_NOT_HANDLED

0x40000000

在初始化过程中,至少有一个状态被读取。这个位不会在诊断程序列表中产生一个条目.

nxcomNODE_FLAG_INVALID_PARAMETER

0x00001000

无效的节点参数。

nxcomNODE_FLAG_UNEXPECTED_BOOTUP

0x00000800

节点收到意外的启动信息。

nxcomNODE_FLAG_BOOTUP

0x00000400

节点收到的预期开机信息。

nxcomNODE_FLAG_EMCY_BUFF_OVER

0x00000200

紧急缓冲区溢出。

nxcomNODE_FLAG_EMCY_RECEIVED

0x00000100

收到紧急电报.

nxcomNODE_FLAG_UNEXPECTED_STATE

0x00000080

节点处于一个意外的NMT状态.

nxcomNODE_FLAG_HEARTBEAT_ERROR

0x00000040

在心跳协议中出错。

nxcomNODE_FLAG_CON_LOST

0x00000020

在NodeGarding监控中出错.

nxcomNODE_FLAG_GUARD_ERROR

0x00000010

一个NodeGuarding电报被丢失。这个位不在诊断列表中产生一个条目。

nxcomNODE_FLAG_HEARTBEAT_STARTED

0x00000008

心跳协议开始。该位在诊断列表中不产生条目。

nxcomNODE_FLAG_CFG_FAULT

0x00000004

配置有问题。

nxcomNODE_FLAG_SDO_ERROR

0x00000002

SDO通信错误.

nxcomNODE_FLAG_SDO_TIMEOUT

0x00000001

SDO通信超时。

OUT

lastDiagInfo

UDINT

从机的最后诊断信息(见CANopen堆栈状态)。

OUT

devTypeValid

BOOL

表示devType参数中的设备类型是否有效的标志。

OUT

devType

UDINT

设备类型

例如

设备类型

I/O模块的设备配置文件

401

驱动器和运动控制的设备配置文件

402

编码器的设备简介

406

OUT

nmtState

UDINT

所需从属设备的当前NMT状态

状态

描述

nxcomNMT_STATE_UNKNOWN

0

未知

nxcomNMT_STATE_INITIALISING

1

初始化

nxcomNMT_STATE_STOPPED

2

已停止运行

nxcomNMT_STATE_OPERATIONAL

3

运行中

nxcomNMT_STATE_PRE_OPERATIONAL

4

运行前

nxcomNMT_STATE_RESET_APPL

5

复位应用

nxcomNMT_STATE_RESET_COMM

6

复位通信

OUT

emcyCount

UDINT

实际读取的紧急电报的数量。

OUT

addInfo

UDINT

其他信息

 

调用语法

nxcomGetDiag(enable, pDevice, node, flags, pEmcyData, status, coStatus, nodeFlags, lastDiagInfo, devTypeValid, devType, nmtState, emcyCount, addInfo)

 

pDevice

该参数指定了接口名称(STRING)的地址。接口名称(语法:SL<x>.SS<y>.IF<z>)描述应该被访问的CAN接口(例如 "SS1.IF1")。

 

pEmcyData

该参数指定紧急电报的地址(结构nxcomEmcyTelegrams_t)。结构 nxcomEmcyTelegrams_t 包含 5 个电报,每个有 8 个数据字节。当FB处理成功后,紧急电报会被保存在这里。

 

addInfo

该输出包含附加信息。

 

状况

描述

CANOPEN_MASTER_NODE_STATE_DEINIT

0x00

状态未被初始化。

CANOPEN_MASTER_NODE_STATE_INIT_SDO

0x01

初始化SDO通道请求。

CANOPEN_MASTER_NODE_STATE_ADD_NODE

0x02

将节点添加到NMT服务中。

CANOPEN_MASTER_NODE_SET_CONS_EMCY_COB_ID

0x03

将EMCY COB-ID分配给port-lib。

CANOPEN_MASTER_NODE_STATE_RESET_NODE

0x04

重置节点请求。

CANOPEN_MASTER_NODE_STATE_GET_1000_REQ

0x05

从节点读取对象1000。

CANOPEN_MASTER_NODE_STATE_GET_1000_CNF

0x06

等待SDO-CNF obj 1000。

CANOPEN_MASTER_NODE_STATE_SET_PREOPERATIONAL

0x07

将节点设置为运行前。

CANOPEN_MASTER_NODE_STATE_SET_GUARD_REQ

0x08

设置守护时间。

CANOPEN_MASTER_NODE_STATE_SET_GUARD_CNF

0x09

等待g-time的确认。

CANOPEN_MASTER_NODE_STATE_SET_LIFE_REQ

0x0A

设置寿命系数

CANOPEN_MASTER_NODE_STATE_SET_LIFE_CNF

0x0B

等待l-fact的确认。

CANOPEN_MASTER_NODE_STATE_SET_SYNC_REQ

0x0C

设置SYNC电报的COB ID。

CANOPEN_MASTER_NODE_STATE_SET_SYNC_CNF

0x0D

等待SYNC电报的确认。

CANOPEN_MASTER_NODE_STATE_SET_EMCY_INVAL_REQ

0x0E

重置EMCY电报的COB ID。

CANOPEN_MASTER_NODE_STATE_SET_EMCY_INVAL_CNF

0x0F

等待EMCY的确认。

CANOPEN_MASTER_NODE_STATE_SET_EMCY_REQ

0x10

设置SYNC电报的COB ID。

CANOPEN_MASTER_NODE_STATE_SET_EMCY_CNF

0x11

等待SYNC电报的确认。

CANOPEN_MASTER_NODE_STATE_SDO_PARAM_REQ

0x12

SDO下载数据集。

CANOPEN_MASTER_NODE_STATE_SDO_PARAM_CNF

0x13

等待数据集的确认。

CANOPEN_MASTER_NODE_STATE_START_NODE

0x14

发送节点启动请求。

CANOPEN_MASTER_NODE_STATE_INIT_TX_DATA

0x15

TPDO的第一次数据交换。

CANOPEN_MASTER_NODE_STATE_INIT_RX_DATA

0x16

RPDO的第一次数据交换。

CANOPEN_MASTER_NODE_STATE_ACTIVATE_GUARDING

0x17

配置防护(HBT或NDGD)。

CANOPEN_MASTER_NODE_STATE_OPERATE

0x18

节点激活。

CANOPEN_MASTER_NODE_STATE_STOPPED

0x19

节点处于STOP模式。

CANOPEN_MASTER_NODE_STATE_STOP_NODE

0x1A

在CAN-Stop节点之后停止。

 

Error numbers

误差数字

常数

错误描述

纠错

0

ERR_OK

无错误


65534

ERR_FUB_ENABLE_FALSE

FB "enable "参数不等于1。

启用FB。

65535

ERR_FUB_BUSY

任务仍在处理中,再次调用FB。

继续调用FB。

 

 

 


34500

nxcomERR_INVALID_DEVICE

为接口指定的名称无效。

检查接口的名称。

34501

nxcomERR_SEND_MESSAGE

发送到CANopen协议栈的消息失败。

这是一个内部AR错误,没有纠错建议。请联系B&R支持。

34502

nxcomERR_TIMEOUT

发送到CANopen协议栈的消息超时。

这是一个内部AR错误,没有纠正错误的建议。请联系B&R支持部门。

34503

nxcomERR_CANOPEN_STACK

发送到CANopen协议栈的消息因错误而终止。

检查CANopen堆栈状态(见参数coStatus - CANopen堆栈状态)。

34504

nxcomERR_DATALEN

指定的文件长度是无效的。

检查指定的数据长度。