Axis_action.h 4.75 KB
#ifndef __AXIS_ACTION_H
#define __AXIS_ACTION_H
#include "hardware.h"
#include "all_value.h"

void CanMc_W4_Message(u8 id,unsigned int Index,unsigned int Va);	
void CanMc_W2_Message(u8 id,unsigned int Index,unsigned short Va);
void CanMc_W1_Message(u8 id,unsigned int Index,unsigned char Va);
void CanMc_R_Message(u8 id,unsigned int Index);

void MC_Mode_Set(unsigned short id,unsigned char Mode );//设置驱动工作模式函数

void MC_ControlWord(unsigned short id,unsigned short ControlWord);		//驱动控制字配置函数
void MC_Pos_Set(unsigned short id,signed long PosVa);		//驱动位置参数配置函数(适用于位置模式+插补模式)
void MC_PosSpeed_set(unsigned short id,signed long PosSpeed);// 驱动梯形速度参数配置函数(适用于位置模式时的速度)单位RPM
void MC_TargetSpeed_set(unsigned short id,signed long TargetSpeed);//标速度参数配置函数(适用于速度模式下)单位RPM
void MC_Accelerated_speed_set(unsigned short id,unsigned long acc);//驱动加速度配置函数rps/s
void MC_Decelerated_speed_set(unsigned short id,unsigned long dec);//驱动减速度配置函数rps/s
void MC_Read_State(unsigned short id,u8 Enable);//读取轴状态
void MC_Read_ServoDin(unsigned short id,u8 Enable);//读取轴Din
void MC_Read_ServoDout(unsigned short id,u8 Enable);//读取轴Dout
void MC_Read_ActualVelocity(unsigned short id,u8 Enable);//读取当前速度
void MC_Read_ActualPosition(unsigned short id,u8 Enable);//读取当前位置
void MC_Read_ActualCurrent(unsigned short id,u8 Enable);//读取轴电流
void MC_Read_ErrCode(u8 id,u8 Enable);//读取驱动错误码
void MC_Power(u8 id,u8 Enable);//轴使能函数
void MC_Reset(u8 id,u8 Execute);//轴复位函数
void Fc_MC_Stop(u8 id,u8 Execute);//轴急停函数
void MC_Jog(u8 id,u8 JogEn ,signed long Speed,signed long Acceleration,signed long Deceleration );//轴速度模式JOG
void MC_MoveAbsolute(u8 id);//轴绝对距离运动函数
void MC_MoveHoldAbsolute(u8 id);//轴持续绝对位置距离运动函数
void MC_MoveRelative(u8 id);//轴相对距离行走函数
void MC_FindHome(u8 id);//轴找原点函数


void Fc_MC(void);//轴函数总和
void FC_PDOMess_Send(void);
u8 AxisNo_NodeIdChange(u8 AxisNo);		//轴号节点比对
/******
下找原点参数在驱动器里是断电保存的,可以在驱动器里设置,程序不设置
*******/
#define PZero_Mode_Index   0x609800   //索引:int8,原点回零具体模式
#define PZero_Delta_Index  0x607c00		//索引:int32,原点偏移
#define PZero_Speed1_Index 0x609901		//索引:uint32,找原点第一次速度。找原点开关、限位开关速度
#define PZero_Speed2_Index 0x609902		//索引:uint32,找原点第2次速度。找原点速度
#define PZero_Mode   35    //35当前位置为原点,17负限位为原点
#define PZero_PcReferEn   0    //35当前位置为原点,17负限位为原点

#define MC_Status_Index   0x604100		//索引:uint16,轴实际位置
#define MC_ActualPos_Index   0x606400		//索引:int32,轴实际位置,注意Kinco此处是606300  
#define MC_ActualSpeed_Index   0x606C00		//索引:int32,轴实际速度
#define MC_ActualCurrent_Index   0x607800		//索引:int16,轴当前电流

#define MC_ErrCode_Index   0x603F00		//索引:uint16,警告错误码
#define MC_WorkMode_Index   0x606000		//索引:int8,工作模式
#define MC_ConWord_Index   0x604000		//索引:uint16,控制字
#define MC_TargetPos_Index   0x607A00		//索引:int32,目标位置
#define MC_SpeedPos_Index   0x608100		//索引:uint32,梯形速度
#define MC_Accelaration_Index   0x608300		//索引:uint32,梯形加速度
#define MC_Deceleration_Index   0x608400		//索引:uint32,梯形减速度
#define MC_Speed_Index   0x60FF00		//索引:int32,目标速度

#define MC_Din_Index   0x600001		//索引:int8,驱动器Din口  Kinco此处是0x20100B
#define MC_Dout_Index   0x201014		//索引:int8,驱动器Dout口 Kinco此处是0x201014
#define MC_SetZero_Index   0x609800		//索引:int8,0x23时驱动器位置置零

#define MC_TimeGuard_Index   0x100C00		//索引:int16,0x64节点保护监督时间单位ms
#define MC_TimeFactor_Index   0x100D00		//索引:int16,0x14节点保护时间系数。总时间2s=监督时间100ms*时间系数20

#define TimeGuard_Node   100u		//节点保护监督时间ms
#define TimeFactor_Node   25u		//节点保护时间系数20
#define Time_NodeProtSend   50u		//节点保护询问时间间隔10ms
#define Time_AxisPowerDelay   100u		//各轴延时使能时间间隔10ms
/*********************驱动SDO数据报文第一个字节代表后面数据的有效数值长度***************************************/
#define L_1byte   0x2f  //1个字节
#define L_2byte   0x2b  //2个字节
#define L_4byte   0x23  //4个字节
#define LR_byte   0x40  //1-4个字节(读取报文时第一字节内容,不知对应索引地址对应变量长度,长度由对方发送来确定)

#define RPDO_dT    40//控制器发送RPDO信息的间隔时间ms

#define NodeProEn   1u  //1表示节点保护下发成功后才可以操作各轴,0表示即便未下发节点保护也可操控轴
//#define DeltaAngPerm_Helmzhuan   0.05f  //舵轮转向角度误差允许范围
#define DeltaAngPerm_HelmGo   0.4f  //舵轮转向角度误差允许范围
#define Speed_HelmZhuan 1200u
#define Speed_HelmGo 400u
extern u8 TIM5_ElectrifyNums;
extern u8 TIM4_CanSend1Nums;
extern u8 TIM3_CanSend1Nums;
#define DeltaAngPerm_Helmzhuan 0.15f
extern u8 Electrify_Step;
#endif