本文主要是介绍用C语言设计轨道电机的驱动库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、设计目的
设计能驱动立体轨道电机的抽象驱动程序库。
二、设计要求
- 命名规范。
- 设计简单,方便使用。
- 体积小。
- 满足电机的移动、停止、初始化、恢复等控制,甚至通过网络控制。
三、设计内容
(一)属性封装
1、定义配置结构体
// 用于配置参数
typedef struct m1_config{char id[25] // 机器的唯一编号int speed; // 速度double init_x; // 初始x坐标double init_y; // 初始y坐标double init_z; // 初始z坐标
}m1_config;
2、定义会话结构体
typedef struct m1_session{int no; // 机器序号char name[20]; // 机器别名
}m1_session;
(二)初始化
初始设备的参数。
调用下列函数:
int m1_init(m1_config* config, m1_session* session)
传参: m1_config变量的指针,会话变量指针
返回值:为1代表成功,为0代表失败。
(三)移动工作头到指定位置
调用下列函数:
int m1_move(m1_session* session,double x, double y, double z)
传参:工作会话变量、目标的三维坐标值 (x, y, z)
返回值:为1代表成功,为0代表失败。
(四)暂停电机的运行
调用下列函数:
int m1_pause(m1_session* session)
传参:目标机器的连接工作会话变量。
返回值:为1代表成功,为0代表失败。
(五) 恢复电机的运行
调用下列函数:
int m1_resume(m1_session* session)
传参:目标机器的连接工作会话变量。
返回值:为1代表成功,为0代表失败。
(六)重置电机
将电机恢复到初始的状态。
调用下列函数:
int m1_reset(m1_session* session)
传参:目标设备的工作会话变量
返回值:为1代表成功,为0代表失败。
(七)获得运行状态
可以获得设备当前的运行状态
1、定义状态结构体
typedef struct m1_status{int status_no; // 状态编号double x; // 当前x坐标double y; // 当前y坐标double z; // 当前z坐标}m1_status;
2、定义下列函数
int m1_status(m1_session* session, m1_status* status)
传参:会话指针、m1_status的结构体变量的指针
返回值:如果为1代表成功,如果为0代表失败。
(八)设置监听函数
监听函数可以监听运行状态,作出一些指定的反应。
监听函数通过把函数名传递实现监听,监听函数内部可以调用m1_status结构体的值来获取实时状态。
有下列函数:
int m1_reg_listener(m1_session* session, int*p(m1_status* s_p, void* vp))
传参:会话指针、一个返回值为int,接收m1_status指针和任意指针作参数的函数。
返回值:如果为1代表成功,如果为0代表失败。
**
四、总结
本文只是介绍如何设计一个驱动程序的接口。
实际上接口是通用的,具体实现很复杂,需要硬件的支持,例如寄存器、处理器、总线的支持。
电机工作时需要供电,控制通断需要三极管和继电器。
感知状态需要传感器。
恢复和暂停需要外部用户的手动干预。
这篇关于用C语言设计轨道电机的驱动库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!