|
|
/*********************************************************************
|
|
|
*文件说明: 数据类型声明
|
|
|
*作者: logos
|
|
|
*日期: 2017/02/07
|
|
|
*修改日志: 2017/02/07 CW4945 创建
|
|
|
***********************************************************************/
|
|
|
#pragma once
|
|
|
#ifndef _INCLUDE_DTYPE_H_
|
|
|
#define _INCLUDE_DTYPE_H_
|
|
|
|
|
|
#ifndef EXPORT_C
|
|
|
#define EXPORT_C extern "C"
|
|
|
#endif
|
|
|
|
|
|
#ifndef WINAPI
|
|
|
#define WINAPI __stdcall
|
|
|
#endif
|
|
|
|
|
|
#ifndef ushort
|
|
|
#define ushort unsigned short
|
|
|
#endif
|
|
|
|
|
|
#ifndef MAX_ID_LEN
|
|
|
#define MAX_ID_LEN 16
|
|
|
#endif
|
|
|
|
|
|
#ifndef MAX_NAME_LEN
|
|
|
#define MAX_NAME_LEN 32
|
|
|
#endif
|
|
|
|
|
|
#ifndef MAX_BUF_LEN
|
|
|
#define MAX_BUF_LEN 256
|
|
|
#endif
|
|
|
|
|
|
#ifndef PARAM_CNT
|
|
|
#define PARAM_CNT 8
|
|
|
#endif
|
|
|
|
|
|
#ifndef RES_CNT
|
|
|
#define RES_CNT 16
|
|
|
#endif
|
|
|
|
|
|
struct TParam
|
|
|
{//参数结构体 -- 用于插件初始化
|
|
|
char data[PARAM_CNT][MAX_NAME_LEN]; //参数
|
|
|
};
|
|
|
|
|
|
enum EDevStatus
|
|
|
{//对象状态
|
|
|
EDev_NOINIT = 0, //未初始化
|
|
|
EDev_ERROR, //异常
|
|
|
EDev_IDLE, //就绪
|
|
|
};
|
|
|
|
|
|
enum EMoveStatus
|
|
|
{//运动状态
|
|
|
EMove_NOHOME = 3, //未回原
|
|
|
EMove_STOP, //停止状态 -- 异常停止,限位停止
|
|
|
EMove_ISMOVING, //运动中
|
|
|
EMove_ISHOME, //回原中
|
|
|
EMove_PAUSE, //暂停
|
|
|
EMove_PAUSING, //正在暂停
|
|
|
EMove_STOPING, //正在停止
|
|
|
};
|
|
|
|
|
|
enum EIOType
|
|
|
{//IO类型
|
|
|
IOT_COMIN = 0, //通用输入
|
|
|
IOT_COMOUT, //通用输出
|
|
|
IOT_LIMITP, //正限位
|
|
|
IOT_LIMITN, //负限位
|
|
|
IOT_ALARM, //报警
|
|
|
IOT_HOME, //原点
|
|
|
IOT_SEVON, //使能
|
|
|
IOT_CLEARALARM, //清除报警
|
|
|
};
|
|
|
|
|
|
enum EMPosType
|
|
|
{//轴位置类型
|
|
|
EMPos_Default = -1, //默认位置 伺服-编码器 步进-规划器
|
|
|
EMPos_Encoder, //编码器位置
|
|
|
EMPos_Profile, //规划器位置
|
|
|
};
|
|
|
|
|
|
struct TDevInfo
|
|
|
{//硬件信息
|
|
|
char id[MAX_ID_LEN]; //硬件id,不得超过16位
|
|
|
char desc[MAX_NAME_LEN]; //硬件描述
|
|
|
TParam homep; //回原方法描述
|
|
|
TParam param; //初始化参数描述
|
|
|
ushort paramCnt; //初始化参数个数
|
|
|
ushort homeCnt; //回原方式数量,homep 数组大小
|
|
|
ushort axisCnt; //轴数量 motor-轴/专用IO数量
|
|
|
ushort ioCnt; //io-通用IO位数
|
|
|
ushort adCnt; //ad-通道数量
|
|
|
ushort reserved[3]; //保证8位对齐
|
|
|
};
|
|
|
|
|
|
struct TSpeed
|
|
|
{//速度结构
|
|
|
double vel;
|
|
|
double acc;
|
|
|
double dec;
|
|
|
};
|
|
|
|
|
|
struct TVisionDevInfo
|
|
|
{//视觉插件信息
|
|
|
char id[MAX_ID_LEN]; //插件类型id -- 作为对象类型标识符,不能重复
|
|
|
char desc[MAX_NAME_LEN]; //硬件描述
|
|
|
TParam param; //初始化参数描述
|
|
|
ushort paramCnt; //参数个数
|
|
|
ushort reserved[3]; //保证8位对齐
|
|
|
};
|
|
|
|
|
|
struct TVisionResult
|
|
|
{//视觉结果结构体
|
|
|
int res; //结果 0 - ok
|
|
|
int resCnt; //结果个数
|
|
|
double val[RES_CNT]; //结果
|
|
|
};
|
|
|
|
|
|
struct TVisionImage
|
|
|
{//视觉图像
|
|
|
ushort width; //图像宽
|
|
|
ushort heigh; //图像高
|
|
|
ushort channel; //图像通道 1通道 3通道(彩色)
|
|
|
ushort rowbytes; //每行占多少字节
|
|
|
char* pdata; //数据缓冲区
|
|
|
};
|
|
|
|
|
|
#define DEFAULTPOS 10000 //默认位置 -- 正限位、负限位、原点搜索距离+方向
|
|
|
#define MAX_AXIS_CNT 6 //工站最大轴数量
|
|
|
#define MAX_TOOL_CNT 10 //Tool数量
|
|
|
#define MAX_PALLET_CNT 50 //料盘数量
|
|
|
#define MAX_POINT_CNT 200 //工站点位个数
|
|
|
#define PAGE_AD_CNT 8 //每页AD通道数
|
|
|
#define PAGE_IO_CNT 16 //每页IO点数
|
|
|
#define PAGE_AXIS_CNT 8 //每页Axis点数
|
|
|
#define NEWDEVCNT 10 //每个插件最多实例化多少个对象
|
|
|
|
|
|
enum EMIOVAL
|
|
|
{//IO操作
|
|
|
IOFF = 0, //关闭
|
|
|
ION, //打开
|
|
|
};
|
|
|
|
|
|
enum EMDir
|
|
|
{//运动方向
|
|
|
DirN = 0, //负方向
|
|
|
DirP, //正方向
|
|
|
};
|
|
|
|
|
|
enum EMIOSYSType
|
|
|
{//系统IO类型
|
|
|
IOS_Normal = 0, //普通IO
|
|
|
IOS_START, //启动
|
|
|
IOS_RESET, //复位
|
|
|
IOS_ESTOP, //急停
|
|
|
IOS_PAUSE, //暂停
|
|
|
IOS_STOP, //停止
|
|
|
IOS_BRAKE, //刹车
|
|
|
};
|
|
|
|
|
|
enum EMAxisType
|
|
|
{//轴类型
|
|
|
EAXIS_SERVO = 0, //伺服
|
|
|
EAXIS_STEPPER, //步进电机
|
|
|
EAXIS_FLOW, //旋转电机,每次运动清零位置 - 不需要回原
|
|
|
EAXIS_ABSSERVO, //绝对值编码器 - 可以不回原
|
|
|
};
|
|
|
|
|
|
enum EMAxisDir
|
|
|
{//轴方向
|
|
|
EAXIS_X = 0, //横向
|
|
|
EAXIS_Y, //纵向
|
|
|
EAXIS_Z, //上下
|
|
|
EAXIS_U, //平面旋转
|
|
|
EAXIS_V, //横向旋转
|
|
|
EAXIS_W, //纵向旋转
|
|
|
};
|
|
|
|
|
|
enum EMHomeType
|
|
|
{//回原方式
|
|
|
EHOME_LIMITN = 0, //先回负限位
|
|
|
EHOME_LIMITP, //先回正限位
|
|
|
EHOME_HOMEP, //找原点再精确回原
|
|
|
EHOME_IOHOME, //IO控制回原
|
|
|
EHOME_GOHOME, //直接精确回原
|
|
|
EHOME_NOHOME, //不回原,直接以当前位置为原点
|
|
|
};
|
|
|
|
|
|
struct TCard
|
|
|
{//控制卡
|
|
|
char name[MAX_NAME_LEN]; //名称
|
|
|
char dev[MAX_ID_LEN]; //硬件ID
|
|
|
TParam param; //初始化参数
|
|
|
int cid; //卡ID
|
|
|
ushort axisCnt; //轴数量 motor-轴/专用IO数量
|
|
|
ushort ioCnt; //io-通用IO位数
|
|
|
ushort adCnt; //ad-通道数量
|
|
|
ushort reserved[3]; //保留字符,8位对齐
|
|
|
};
|
|
|
|
|
|
struct TVision
|
|
|
{//视觉
|
|
|
char name[MAX_NAME_LEN]; //名称
|
|
|
char dev[MAX_ID_LEN]; //插件ID
|
|
|
TParam param; //初始化参数
|
|
|
int vid; //视觉ID
|
|
|
int reserved; //保留字符,8位对齐
|
|
|
};
|
|
|
|
|
|
struct TStation
|
|
|
{//工站
|
|
|
char name[MAX_NAME_LEN]; //名称
|
|
|
int axis[MAX_AXIS_CNT]; //轴ID
|
|
|
int tid; //工站ID
|
|
|
ushort axisCnt; //轴数量
|
|
|
ushort reserved;
|
|
|
};
|
|
|
|
|
|
struct TAxisParam
|
|
|
{//轴参数
|
|
|
char name[MAX_NAME_LEN]; //名称
|
|
|
char outIO[MAX_NAME_LEN]; //回原IO or 刹车IO
|
|
|
int axis; //轴ID
|
|
|
int cid; //卡ID
|
|
|
int index; //在当前卡的索引
|
|
|
int homeIndex; //回原方法序号 参考 插件返回的回原方式序列 -- 超过最大序号表示自定义回原
|
|
|
int bDirNeg; //方向取反 1取反 0不取反
|
|
|
EMAxisDir dir; //0==x 1==y 2==z 3==u 4==v 5==w
|
|
|
EMAxisType motorType; //参考 0伺服, 1步进 2流水线 3绝对值编码器
|
|
|
EMHomeType homeType; //回原方式 0负限位 1回正限位 2找原点 3IO控制回原 4直接回零 5直接回零 6不回零
|
|
|
|
|
|
int homePos; //原点位置+方向 单位:mm
|
|
|
int limitN; //负限位位置+方向 可设软限位 单位:mm
|
|
|
int limitP; //正限位位置+方向 可设软限位 单位:mm
|
|
|
int highHomePos; //高速回原位置 单位:mm 为0则禁用高速回原
|
|
|
int iAfterhomeOffset; //回原后偏移量 单位:mm
|
|
|
int arriveOffset; //到位误差 单位:um 0表示无效 步进无效,检查编码器与规划器误差,到位后才结束运动
|
|
|
|
|
|
double limitvel; //搜索限位速度 mm/s
|
|
|
double homeVel; //搜索原点速度 mm/s
|
|
|
double maxVel; //最大工作速度 mm/s
|
|
|
double maxAcc; //最大工作加速度 mm/s^2
|
|
|
double maxDec; //最大工作减速度 mm/s^2
|
|
|
double stepvalue; //1mm对应多少脉冲
|
|
|
};
|
|
|
|
|
|
struct TAdParam
|
|
|
{//ad参数 最终ad = readAD * ratio + offset
|
|
|
char name[MAX_NAME_LEN]; //名称
|
|
|
double ratio; //比例、系数
|
|
|
double offset; //补偿值
|
|
|
int aid; //ID
|
|
|
int cid; //卡ID
|
|
|
int index; //索引
|
|
|
int reserved; //保留字符,8位对齐
|
|
|
};
|
|
|
|
|
|
typedef struct IOConfig
|
|
|
{//io参数
|
|
|
char name[MAX_NAME_LEN]; //名称
|
|
|
int iid; //ID
|
|
|
int cid; //卡ID
|
|
|
int index; //索引
|
|
|
int sense; //是否取反 0取反 1不取反
|
|
|
EIOType type; //参考 EIOType 通用输入/输出 限位/原点等
|
|
|
EMIOSYSType ios; //参考 EMIOSYSType 系统类型,开始?停止?等等
|
|
|
} TIoParam;
|
|
|
|
|
|
struct TPallet
|
|
|
{//料盘
|
|
|
char name[MAX_NAME_LEN]; //名称
|
|
|
ushort index; //索引
|
|
|
ushort start; //起始点索引
|
|
|
ushort ptCol; //最大列点位索引
|
|
|
ushort ptRow; //最大行点位索引
|
|
|
ushort col; //最大列
|
|
|
ushort row; //最大行
|
|
|
};
|
|
|
|
|
|
struct TPoint
|
|
|
{//点位
|
|
|
int index; //点索引
|
|
|
int itool; //保存点位时使用的tool[0,10]
|
|
|
char name[MAX_NAME_LEN]; //点名称
|
|
|
double val[MAX_AXIS_CNT]; //分别为x,y,z,u,v,w的坐标值
|
|
|
};
|
|
|
|
|
|
struct TControlCfg
|
|
|
{//设置项
|
|
|
int bPrintLog; //是否打印日志
|
|
|
int bSendSysMsg; //是否向插件发送系统消息 如:reset / pause
|
|
|
int bHomeClearPos; //回原清零位置
|
|
|
int bChkPtChange; //监视点位数据变动 -- 总开关
|
|
|
int chkOffsetShow; //点位修改偏差大于多少弹框提示 0表示不弹框 单位mm [0,50]
|
|
|
int movePrecision; //运动精度,当前位置与目标位置低于这个值,将不会运动 单位um [1,1000]
|
|
|
int bRecordPos; //是否记录上次退出时的位置 1记录,0不记录 记录时,可以不用回原
|
|
|
int bSafeChk; //安全空间检测 -- 总开关 改变这个值时,会启动或停止安全监控
|
|
|
int safeSpdOffset; //间距检测时降速偏移[10,1000],比如最少100必须停,那么可以设置一个缓冲区用于降速,如50,则间距150时,开始降速
|
|
|
int bSaveTxt; //配置是否保存位文本格式 -- 重启生效
|
|
|
int bArcPause; //圆弧插补是否必须暂停 1必须暂停 0不暂停
|
|
|
int interval; //监听任务扫描间隔 单位:ms 可设置区间[0,100]
|
|
|
};
|
|
|
|
|
|
enum Control_ErrCode
|
|
|
{//错误代码
|
|
|
ERR_NO_SUPPORT = -900, //该功能不支持
|
|
|
ERR_NO_SERVICE, //服务未启动
|
|
|
ERR_NO_DEV, //未找到插件
|
|
|
ERR_NDEV_COUNT, //插件实例化数量超限
|
|
|
ERR_HOME_BREAK, //回原被中断
|
|
|
ERR_MOVE_BREAK, //运动被中断
|
|
|
ERR_NO_HOME, //未回原
|
|
|
ERR_LOAD_CFG, //加载配置文件失败
|
|
|
ERR_OCCUPY_AXIS, //轴被占用
|
|
|
ERR_IO_TYPE, //IO类型错误
|
|
|
ERR_AXIS_HOME, //轴回原失败
|
|
|
ERR_IS_MOVING, //正在运动中
|
|
|
ERR_NO_SERVO, //未使能
|
|
|
ERR_SET_CRD, //建立坐标系失败
|
|
|
ERR_SAFE_CHK, //安全空间限制
|
|
|
ERR_NO_HOMEP, //无原点信号
|
|
|
ERR_NO_LIMITN, //无负限位信号
|
|
|
ERR_NO_LIMITP, //无正限位信号
|
|
|
ERR_IN_LIMITN, //在负限位
|
|
|
ERR_IN_LIMITP, //在正限位
|
|
|
ERR_VISION_IMG, //拍照失败
|
|
|
ERR_VISION_GR, //视觉处理失败
|
|
|
};
|
|
|
|
|
|
/*模块提供简单的安全机制
|
|
|
1. 间距检测模式: 主要用于检测两个轴之间的间距,常见场景为直线电机上两个动子之间
|
|
|
由于两轴方向可能不一样,可能a+b<offset时触发,也可能a+b>offset(mm)时触发
|
|
|
暂时处理方式为:如果是>offset 则offset-50时开始减速到50%,>offset时触发暂停
|
|
|
2. 位置检测模式:此模式主要用于检测类似Z轴的这种模组结构,Z轴必须在安全高度,其它轴才能移动
|
|
|
当然也可以检测某个气缸的限位
|
|
|
a. 将pid2设置为某个气缸限位IO
|
|
|
b. 将judge设置为 ESafeJ_Equal
|
|
|
c. 将safeval设置为 1.0 -- 即=1
|
|
|
d. 将pid1设置为某个轴
|
|
|
e. 将type设置为ESafe_VALUE
|
|
|
f. 将dir1设置为2 -- 即为正负方向都限制
|
|
|
当value(pid2)==1时 轴(pid1)将无法运动.
|
|
|
3. 若要实现复杂的安全防呆机制,请注册回调函数 FunSafeCallBack
|
|
|
*/
|
|
|
enum ESafeChk
|
|
|
{//安全检测模式
|
|
|
ESafe_DISTANCE = 0, //间距检测 -- 两轴之间距离检测,通常为pos(1)+pos(2) < or > val(mm)触发减速or暂停
|
|
|
ESafe_VALUE, //位置检测 -- 用于轴或者IO, 目标值<= or >= val时触发
|
|
|
};
|
|
|
|
|
|
enum ESafeJudge
|
|
|
{//安全判断模式
|
|
|
ESafeJ_Equal = 0, //等于某个值
|
|
|
ESafeJ_Less, //小于某个值
|
|
|
ESafeJ_Greater, //大于某个值
|
|
|
};
|
|
|
|
|
|
struct TSafeCfg
|
|
|
{//运动安全限制
|
|
|
int sid; //规则ID
|
|
|
int pid; //轴ID或IO ESafe_VALUE时,此为被限制对象
|
|
|
int dir; //pid 被限制方向 DirN-0 负方向 DirP-1 正方向 2-两者都限制
|
|
|
int pid2; //轴ID或IO ESafe_VALUE时,此为触发对象;ESafe_DISTANCE时,pid和pid2都为触发和被限制对象
|
|
|
ESafeChk type; //检测模式 间距检测\位置检测
|
|
|
ESafeJudge judge; //判断模式
|
|
|
int safeval; //安全值 -- 整数
|
|
|
int bhomechk; //回原时是否检测 1检测 0不检测
|
|
|
char desc[MAX_NAME_LEN]; //描述、说明
|
|
|
};
|
|
|
|
|
|
struct TLicenseInfo
|
|
|
{//许可信息
|
|
|
int dyn; //8位动态机器码
|
|
|
int perdate; //有效期 20181212 0标识无效
|
|
|
char hd[MAX_NAME_LEN];
|
|
|
char cpu[MAX_NAME_LEN];
|
|
|
char mac[MAX_NAME_LEN];
|
|
|
char sn[MAX_BUF_LEN]; //机器码
|
|
|
};
|
|
|
|
|
|
struct TDevMap
|
|
|
{//映射数据
|
|
|
int pid; //pid 轴/IO/AD/卡对象/视觉对象
|
|
|
char var[MAX_NAME_LEN]; //变量 存储轴状态/IO值/AD值、卡状态、视觉状态
|
|
|
};
|
|
|
|
|
|
#pragma region callback
|
|
|
|
|
|
//安全类接口回调
|
|
|
//pid 轴ID或IO
|
|
|
//curval 当前位置 可标识axis/io位置
|
|
|
//val 目标位置 表示运动目标位置(mm) IO表示气缸控制目标信号
|
|
|
//bhome 轴ID时1表示回原,0表示不是回原,IO控制时此参数无意义
|
|
|
//返回值 返回1表示检测通过,可以运动 返回0表示检测不通过,则control会终止该轴/IO所有运动接口
|
|
|
typedef int (WINAPI *FunSafeCallBack)(int pid, int curval, int val, int bhome);
|
|
|
|
|
|
//插件(控制卡)类接口回调 -- 命令行模式 用于C#注册底层插件用
|
|
|
//fun 接口名称
|
|
|
//cid 卡序号 不需要此从参数时为0
|
|
|
/*---接口名称说明---
|
|
|
int get_command_desc(char* pszcmddesc) -- 获取插件支持的自定义指令描述
|
|
|
int init_devs(ushort index, const char* ctx) -- 初始化一张卡
|
|
|
int uninit_dev(ushort index) -- 反初始化一张卡
|
|
|
int get_status(ushort index) -- 获取卡状态
|
|
|
int send_custom_msg(ushort index, const char* msg, char* res) -- 发送自定义消息
|
|
|
int recv_custom_msg(ushort index, const char* msg, char* res, int timeout) -- 接收自定义消息
|
|
|
int axis_reset(ushort cindex, ushort axisIndex) -- 重置一个轴
|
|
|
int axis_zero_pos(ushort cindex, ushort axisIndex) -- 清零轴位置
|
|
|
... 参考motor.h
|
|
|
axis_home axis_is_moving axis_set_speed axis_set_pos axis_stop axis_move_jog
|
|
|
axis_move_pos axis_move_offset axis_read axis_write axis_get_pos
|
|
|
create_crd add_line_pos add_arc_pos add_line add_arc
|
|
|
crd_move crd_is_moving close_crd
|
|
|
read_in read_out write_out
|
|
|
read_ad write_ad
|
|
|
-----接口名称说明---*/
|
|
|
//pszparam 根据函数定义调用时的附加参数,多参数","隔开
|
|
|
//pszres 若有传出参数,在这里填充(无输出参数时,可能传空指针到应用层),多参数用","隔开
|
|
|
//返回值 成功返回0,失败返回错误代码 参考 dev.h motor.h
|
|
|
typedef int (WINAPI *DevCallBack)(const char* fun, ushort cid, const char* pszparam/* = 0*/, char* pszres/* = 0*/);
|
|
|
|
|
|
//插件底层类接口声明
|
|
|
typedef int (WINAPI *fun_init)(ushort index, const char* ctx);
|
|
|
typedef int (WINAPI *fun_deinit)(ushort index);
|
|
|
typedef int (WINAPI *fun_get_status)(ushort index);
|
|
|
typedef int (WINAPI *fun_get_cmd_info)(char* pszcmddesc);
|
|
|
typedef int (WINAPI *fun_send_msg)(ushort index, const char* msg, char* res);
|
|
|
typedef int (WINAPI *fun_recv_msg)(ushort index, const char* msg, char* res, int timeout);
|
|
|
|
|
|
//控制卡底层继承类接口声明 -- 轴接口
|
|
|
typedef int (WINAPI *fun_axis_reset)(ushort index, ushort axisIndex);
|
|
|
typedef int (WINAPI *fun_axis_home)(ushort index, ushort axisIndex, ushort homeType, double pos, double offset, double vel);
|
|
|
typedef int (WINAPI *fun_axis_zero_pos)(ushort index, ushort axisIndex);
|
|
|
typedef int (WINAPI *fun_axis_is_moving)(ushort index, ushort axisIndex);
|
|
|
typedef int (WINAPI *fun_axis_set_speed)(ushort index, ushort axisIndex, double vel, double acc, double dec);
|
|
|
typedef int (WINAPI *fun_axis_set_pos)(ushort index, ushort axisIndex, double pos);
|
|
|
typedef int (WINAPI *fun_axis_stop)(ushort index, ushort axisIndex, int type);
|
|
|
typedef int (WINAPI *fun_axis_move_pos)(ushort index, ushort axisIndex, double pos, double vel, double acc, double dec);
|
|
|
typedef int (WINAPI *fun_axis_move_offset)(ushort index, ushort axisIndex, double offset, double vel, double acc, double dec);
|
|
|
typedef int (WINAPI *fun_axis_move_jog)(ushort index, ushort axisIndex, int dir, double vel, double acc, double dec);
|
|
|
typedef int (WINAPI *fun_axis_read)(ushort index, ushort axisIndex, int dio_type);
|
|
|
typedef int (WINAPI *fun_axis_write)(ushort index, ushort axisIndex, ushort val, int do_type);
|
|
|
typedef int (WINAPI *fun_axis_get_pos)(ushort index, ushort axisIndex, int postype, double *pval);
|
|
|
typedef int (WINAPI *fun_create_crd)(ushort index, ushort *pAxisIndex, ushort nsize);
|
|
|
typedef int (WINAPI *fun_add_line_pos)(int crd, double *ppos, ushort nsize, double vel, double acc, double endvel);
|
|
|
typedef int (WINAPI *fun_add_arc_pos)(int crd, double *ppos1, double *ppos2, double *ppos3, ushort nsize, double vel, double acc, double endvel);
|
|
|
typedef int (WINAPI *fun_crd_move)(int crd);
|
|
|
typedef int (WINAPI *fun_crd_is_moving)(int crd, int *progress);
|
|
|
typedef int (WINAPI *fun_close_crd)(int crd);
|
|
|
|
|
|
//控制卡底层继承类接口声明 -- IO接口
|
|
|
typedef int (WINAPI *fun_read_in)(ushort index, ushort in_index);
|
|
|
typedef int (WINAPI *fun_read_out)(ushort index, ushort out_index);
|
|
|
typedef int (WINAPI *fun_write_out)(ushort index, ushort out_index, ushort val);
|
|
|
|
|
|
//控制卡底层继承类接口声明 -- AD接口
|
|
|
typedef int (WINAPI *fun_read_ad)(ushort index, ushort ad_index, double* pVal);
|
|
|
typedef int (WINAPI *fun_write_ad)(ushort index, ushort ad_index, double val);
|
|
|
|
|
|
struct MotorFun
|
|
|
{//回调函数列表
|
|
|
fun_init funinit;
|
|
|
fun_deinit fundeinit;
|
|
|
fun_get_status funstatus;
|
|
|
fun_send_msg funsend;
|
|
|
fun_recv_msg funrecv;
|
|
|
fun_get_cmd_info funcmd;
|
|
|
|
|
|
fun_axis_reset funreset;
|
|
|
fun_axis_home funhome;
|
|
|
fun_axis_zero_pos funzero;
|
|
|
fun_axis_is_moving funismoving;
|
|
|
fun_axis_set_speed funsetspeed;
|
|
|
fun_axis_set_pos funsetpos;
|
|
|
fun_axis_stop funstop;
|
|
|
fun_axis_move_pos funmovepos;
|
|
|
fun_axis_move_offset funmoveoffset;
|
|
|
fun_axis_move_jog funmovejog;
|
|
|
fun_axis_read funaxisread;
|
|
|
fun_axis_write funaxiswrite;
|
|
|
fun_axis_get_pos fungetpos;
|
|
|
fun_create_crd funcrd;
|
|
|
fun_add_line_pos funaddline;
|
|
|
fun_add_arc_pos funaddarc;
|
|
|
fun_crd_move funcrdmove;
|
|
|
fun_crd_is_moving funcrdmoving;
|
|
|
fun_close_crd funclosecrd;
|
|
|
|
|
|
fun_read_in funreadin;
|
|
|
fun_read_out funreadout;
|
|
|
fun_write_out funwriteout;
|
|
|
|
|
|
fun_read_ad funreadad;
|
|
|
fun_write_ad funwritead;
|
|
|
};
|
|
|
|
|
|
#pragma endregion
|
|
|
|
|
|
#endif //防止重复包含头文件
|