📄 epos.h
字号:
/**************************************************************************
EPOS标准驱动V1.1
Edit by:李诚
注意:使用前请仔细阅读下面的操作说明!!!!!!
**************************************************************************/
/**************************************************************************
Epos操作说明:
(1).调用Epos_Init()函数初始化;
(2).调用Epos_Run()函数开始运行;
(3).若要使电机停止转动,可以调用Epos_Stop()函数;
(4).若要关闭epos对电机的控制作用,可调用函数Epos_ShutDown();关闭后可以直接调用Epos_Run()
函数重新启动epos对电机的控制作用!
说明:(1).可以调用Epos_SetAcc()、Epos_SetDec()函数设置加速度和减速度,但是需要注意改动后
不会立即生效,会在下一次运行Epos_Run函数后才生效!
(2).若要从epos中读取数据,可以调用函数Epos_Read(),其参数请参考函数原型及EposManul!
注意:只能使用Epos_Run()函数操作各种模式,大家不要调用各个子函数如Epos_RunPPM()等去操作
epos,否则可能不能得到预期的效果!!!!
函数详解:
Epos_Init(Epos* epos1,Epos* epos2,INT8U CAN_ID,INT8U NODE_ID1,INT8U NODE_ID2);
参数:epos1:第一个epos(通常为左轮)
epos2:第二个epos(通常为右轮)
CAN_ID:CAN通道号,可为CAN_CH1或者CAN_CH2
NODE_ID1:epos1节点号
NODE_ID2:epos2节点号
Epos_Run(Epos* epos,INT32S speed,INT32S position,INT8U mode,INT32S opt);
参数:epos: 要设置的epos
speed: 设置速度,仅在PPMODE,PVMODE,VMODE三种模式下有用,PMODE下置0即可;
position:设置运行到的位置,仅在PPMODE,PMODE模式下有用,其他模式置0即可
mode : 设置运行模式,可为PPMODE(平滑位置模式)、PMODE(位置模式)、
PVMODE(平滑速度模式)、VMODE(速度模式),各种模式的特点请参考
我写的epos研究报告,也可阅读epos UserManul
opt : 平滑位置模式下的特殊参数,用于定义平滑位置模式的运行方式,仅对平滑位置模式
起作用,其他模式下置0即可,
定义如下:
0x001f-完成当前操作(即走到前一次设定的位置)后再走到绝对位置position;
0x003f-停止当前操作(即不走到前一次设定的位置),立即走到绝对位置position;
0x005f-完成当前操作后,走到与当前位置相差position的位置;
0x007f-停止当前操作,立即走到与当前位置相差position的位置;
另外,epos可以运行与电流模式,请调用函数Epos_RunCM(),参数如下:
Epos_RunCM(Epos* epos,INT32S Current,INT32S MAX_Speed)
Current: 设置运行电流,单位为mA
MAX_Speed:设置在设置的电流下电机的最大转速,单位为rpm,如果转速搭到最大转速,而电流还
没有达到最大值,电流将不再增大,如此可以在电流模式下做到限速!若要保持电流恒
定,可以将MAX_Speed设得较大,
操作示例:
比如现有epos1,初始化后epos处于位置0,
如果要以平滑位置模式以2000的速度走到位置1000000,
则代码为:Epos_Run(&epos1,2000,1000000,PPMODE,0x001f);
如果要工作与平滑速度模式,速度为3000,
则代码为:Epos_Run(&epos1,2000,0,PVMODE,0);
***************************************************************************/
#ifndef _EPOS_H
#define _EPOS_H
#include "typedef.h"
#include "can.h"
#define MAX_F_ERR 80000 //最大允许误差
#define MAX_P_V 20000 //最大运行速度
#define QDEC 15000 //出错停止减速度
#define MAX_ACC 800
typedef struct __Epos
{
stcCAN* CAN_Handles;
stcCANFrame buf;
BOOL isInit;
INT8U NODE_ID;
INT8U CurMode;
INT32S opt; //用于保存PPMODE下的opt参数
INT32S Acc;
INT32S Dec;
}Epos;
//运行模式定义
#define PPMODE 0x01
#define PMODE 0xFF
#define PVMODE 0x03
#define VMODE 0xFE
#define CMODE 0xFD
extern void Epos_Delay(INT8U time);
extern void Epos_Write(Epos* epos,INT16U Index,INT8U SubIndex,INT32S param);
extern BOOL Epos_Read(Epos* epos,INT16U Index,INT8U SubIndex,INT32S* param);
extern void Epos_SInit(Epos* epos1,INT8U CAN_ID,INT8U NODE_ID1);
extern void Epos_Init(Epos* epos1,Epos* epos2,INT8U CAN_ID,INT8U NODE_ID1,INT8U NODE_ID2);
extern void Epos_ParamInit(Epos* epos);
extern void Epos_Run(Epos* epos,INT32S speed,INT32S position,INT8U mode,INT32S opt);
extern void Epos_RunPPM(Epos* epos,INT32S speed,INT32S posi,INT8U opt);
extern void Epos_RunPM(Epos* epos,INT32S position,INT8U opt);
extern void Epos_RunPVM(Epos* epos,INT32S speed,INT8U opt);
extern void Epos_RunVM(Epos* epos,INT32S speed,INT8U opt);
extern void Epos_RunCM(Epos* epos,INT32S Current,INT32S MAX_Speed);
extern void Epos_SetAcc(Epos* epos,INT32S Acc);
extern void Epos_SetDec(Epos* epos,INT32S Dec);
extern void Epos_Stop(Epos* epos);
extern void Epos_ShutDown(Epos* epos);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -