Axis_action.h
4.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#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