跳转至

DLLStatusGetItem

函数 DLLStatusGetItem 读取单个状态项的当前值。(常用状态项代码定义在头文件中:位置反馈、指令位置、速度反馈、电流反馈、轴状态字等。)

所属:C/C++ API 函数索引

C/C++

ErrorCode DLLStatusGetItem(INT_PTR hClientHandle, short axis, short itemCode, int extra, double* outValue);

C#

Controller.Commands[taskId].Status.AxisStatus(axis, AxisStatusSignal.XXX) — 读取轴状态信号;任务/系统状态用 TaskStatus / SystemStatus

参数

hClientHandle (INT_PTR)

客户端会话句柄,由 DLLSysConnect 获取。

axis (short)

轴编号(0-indexed)。

itemCode (short)

状态项代码。常用代码(定义于 OneSysC.h): - ONE_STATUS_POSITION_FEEDBACK (0):位置反馈(单位取决于控制器配置) - ONE_STATUS_POSITION_COMMAND (1):指令位置 - ONE_STATUS_VELOCITY_FEEDBACK (3):速度反馈 - ONE_STATUS_CURRENT_FEEDBACK (7):电流反馈(单位 A) - ONE_STATUS_DRIVE_STATUS (47):驱动状态字 - ONE_STATUS_AXIS_STATUS (48):轴状态字(bit ONE_AXIS_STATUS_MOVE_DONE = 0x00400000 表示运动完成) - ONE_STATUS_AXIS_FAULT (49):轴故障字

extra (int)

额外参数。大多数状态项传入 0。具体含义参见固件文档。

outValue (double*)

输出。接收状态项的当前值。

返回值

返回 ErrorCodeNoError (0) 表示成功,正值为错误码,详见 SDK 发布头 ErrorCode.h。

说明

ONE_STATUS_AXIS_STATUS 值中的 ONE_AXIS_STATUS_MOVE_DONE 位(0x00400000)可判断轴是否完成当前运动。典型轮询方式: c double status = 0; DLLStatusGetItem(handle, axis, ONE_STATUS_AXIS_STATUS, 0, &status); if ((unsigned int)status & ONE_AXIS_STATUS_MOVE_DONE) { /* 运动完成 */ }

示例

/* 轮询运动完成(ONE_AXIS_STATUS_MOVE_DONE 位) */
double status = 0;
do {
    DLLStatusGetItem(handle, 0, ONE_STATUS_AXIS_STATUS, 0, &status);
    Sleep(20);
} while (((unsigned int)status & ONE_AXIS_STATUS_MOVE_DONE) == 0);

相关函数