?? 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 + -