📄 movement_control.h.bak
字号:
//***************************************************************************************************************
// FILE NAME : MovementControl.h
// FILE DESCRIPTION :
// TARGET DEVICE : C8051F021
// CREATED ON : 2007.12.29
// CREATED BY : yuanwq
// VERSION :
// MODIFY RECORD :
//****************************************************************************************************************
#define Q0_Address 0x9100
//****************************************************************************************************************
//SMBus
#define WRITE 0x00 //----------------------------------------------------------- SMBus WRITE command
#define READ 0x01 //------------------------------------------------------------ SMBus READ command
#define MovementRUN 1
#define MovementSTOP 2
#define MovementPOS 3
#define MovementNEG 4
#define MovementUP 5
#define MovementDOWN 6
#define MovementHEAD 7
#define MovementFOOT 8
#define MovementINSIDE 9
#define MovementOUTSIDE 10
// Macro Define
//****************************************************************************************************************
#define _Nop() _nop_() //----------------------------------------------------------定义空指令
#define SET_BIT(v,n) (v|=(0x01<<n)) //------------------------------------------- 置位变量v的第n位
#define CLR_BIT(v,n) (v&=(~(0x01<<n))) //------------------------------------------- 清位变量v的第n位
#define CHECK_BIT(v,n) (v&(0x01<<n)) //----------------------------------- 检测变量v的第n位为0还是1
#define SET_STATUS(v,n) ((v.Now_Flag)|=(0x01<<n)) //----------------------------- 置位STATUS v的第n位
#define CLR_STATUS(v,n) ((v.Now_Flag)&=(~(0x01<<n))) //----------------------------- 清位STATUS v的第n位
#define CHECK_STATUS(v,n) ((v.Now_Flag)&(0x01<<n)) //--------------------- 检测STATUS v的第n位为0还是1
#define UPDATE_EDGE(v,n) (v.Last_Flag = (v.Now_Flag &(0x01<<n)) | (v.Last_Flag&(~(0x01<<n))))
#define IS_POS_EDGE(v,n) ( (v.Now_Flag&(0x01<<n))&&(!(v.Last_Flag&(0x01<<n))) ?(UPDATE_EDGE(v,n),1):0)
#define IS_NEG_EDGE(v,n) ( !(v.Now_Flag&(0x01<<n))&&((v.Last_Flag&(0x01<<n))) ?(UPDATE_EDGE(v,n),1):0)
//I - 定时器ID S - 方式(TON,TOF) D - 延时时间
#define SOFT_TIMER_RUN(I,S,D) (SET_STATUS(Soft_Timer[I],Timer_RunOrStop),SET_STATUS(Soft_Timer[I],S),Soft_Timer[I].DelayTime=D)
#define SOFT_TIMER_STOP(I) (CLR_STATUS(Soft_Timer[I],Timer_RunOrStop))
#define TO_ASCII(h) ((h < 0x0A)?(h + 0x30):(h + 0x37))
#define TO_INT(h) ((h) = (h)-0x30)
#define START_TXtoPC() (SBUF0 = 0x01)
//Constant Define
//****************************************************************************************************************
#define BAUDRATE 19200 //---------------------------------------- Baud rate of UART in bps
#define SYSCLK 20000000 //------------------------------------------ SYSCLK frequency in Hz
#define SoftVerNumMaj 1 //------------------------------------------------- MCU软件主版本号
#define SoftVerNumMin 0 //------------------------------------------------- MCU软件副版本号
#define SoftVerNumRel 0 //--------------------------------------------------- MCU软件发行号
//定义软定时器使用的数目
#define MAX_SOFT_TIMER 4
//定义SMBus相关常量
// SMBus states:
// MT = Master Transmitter
// MR = Master Receiver
#define SMB_BUS_ERROR 0x00 //------------------------------------------------------ (all modes) BUS ERROR
#define SMB_START 0x08 //------------------------------------------------ (MT & MR) START transmitted
#define SMB_RP_START 0x10 //--------------------------------------------------- (MT & MR) repeated START
#define SMB_MTADDACK 0x18 //----------------------------------------- (MT) Slave address + W transmitted
//--------------------------------------------------------------- ACK received
#define SMB_MTADDNACK 0x20 //----------------------------------------- (MT) Slave address + W transmitted
//-------------------------------------------------------------- NACK received
#define SMB_MTDBACK 0x28 //------------------------------------- (MT) data byte transmitted; ACK rec'vd
#define SMB_MTDBNACK 0x30 //------------------------------------ (MT) data byte transmitted; NACK rec'vd
#define SMB_MTARBLOST 0x38 //------------------------------------------------------ (MT) arbitration lost
#define SMB_MRADDACK 0x40 //----------------------------------------- (MR) Slave address + R transmitted
//--------------------------------------------------------------- ACK received
#define SMB_MRADDNACK 0x48 //----------------------------------------- (MR) Slave address + R transmitted
//-------------------------------------------------------------- NACK received
#define SMB_MRDBACK 0x50 //------------------------------------- (MR) data byte rec'vd; ACK transmitted
#define SMB_MRDBNACK 0x58 //------------------------------------ (MR) data byte rec'vd; NACK transmitted
//定义运动控制协议相关常量
//帧格式定义
#define SOH 0x01
#define ENQ 0x05
#define SPC 0x20
#define ETX 0x03
#define ACK 0x06
#define NCK 0x15
#define NAK 0x15
//电机转速-频率常量
#define T_FRE_STEP02 2 //------------------------------------------------------------- 5.5度/秒 -- 50HZ
#define T_FRE_STEP10 9
#define L_FRE_STEP02 1 //------------------------------------------------------------ 100mm/s -- 33.7HZ
#define L_FRE_STEP10 3
#define L_FRE_STEP50 17
#define A_FRE_STEP02 1 //------------------------------------------------------------ 100mm/s -- 33.7HZ
#define A_FRE_STEP10 3
#define A_FRE_STEP50 17
#define T_SPEED_STEP02 2 //------------------------------------------------------------- 5.5度/秒 -- 50HZ
#define T_SPEED_STEP10 10
#define L_SPEED_STEP02 2 //------------------------------------------------------------ 100mm/s -- 33.7HZ
#define L_SPEED_STEP10 10
#define L_SPEED_STEP50 50
#define A_SPEED_STEP02 2 //------------------------------------------------------------ 100mm/s -- 33.7HZ
#define A_SPEED_STEP10 10
#define A_SPEED_STEP50 50
//定义通讯相关常值
//*****************************************************************************************************************
#define COM_BLOCK_NUM 15
#define COM_BLOCK_SIZE 12
//定义各限位、极保信号常值
//*****************************************************************************************************************
//P 代表极保开关,I 代表限位输入开关 ,A 代表对象区域标志 ,C 代表控制信号
//T - 床体 , L - 床纵 , La - 床横 , TL - 立柱 ,SC - 滑架 , SID - SID , CP - 压迫器
//Level - 水平 , NLevel - 非水平 ,Head - 头端 , Foot - 足端
//Up - 往上,Down - 往下
//Low - 高速,High - 低速,Stop - 停止
//-----------------------------床体运动状态标志------------------------------//
enum Table_Movement_SY{TT_P_L , TT_P_H , TT_N_L ,TT_N_H ,TT_Stop};
enum TL_Movement_SY{TL_Head_L , TL_Head_H , TL_Foot_L ,TL_Foot_H ,TL_Stop};
enum SC_Movement_SY{SC_Head_L , SC_Head_H , SC_Foot_L ,SC_Foot_H ,SC_Stop};
enum SID_Movement_SY{SID_Up , SID_Down , SID_Stop};
//-----------------------------床体运动状态标志------------------------------//
enum Table_Tiliting_Signal{ P_T_N90 , I_T_N90 , A_Table_NEG , I_T_0 ,
A_Table_ZERO , A_Table_POS , I_T_P90 , P_T_P90 };
enum TableTop_Lognitudinal_Signal{P_L_Head , I_L_LevelHead , V_L_Head , A_L_NLevelHead ,
P_L_NLevelHead , I_L_NLevelHead , A_L_LevelHead , I_L_Middle ,
A_L_Middle , A_L_LevelFoot , I_L_NLevelFoot , P_L_NLevelFoot ,
A_L_NLevelFoot , V_L_Foot , I_L_LevelFoot , P_L_Foot};
enum TableTop_Lateral_Signal{P_La_Outside , I_La_Outside , A_La_Outside , I_La_Middle ,
A_La_Middle , A_La_Inside , I_La_Inside , P_La_Inside};
enum Tube_Longitudinal_Signal{P_TL_Head , I_TL_Head , A_TL_Head , I_TL_Confirm ,
A_TL_Confirm , A_TL_Foot , I_TL_Foot , P_TL_Foot ,
V_TL_P40 , V_TL_N40 ,V_TL_ZERO ,V_TL_SC_LessThan6};
enum Scanning_Signal{P_SC_Head , I_SC_LevelHead , A_SC_NLevelHead , I_SC_NLevelHead ,
A_SC_LevelHead , I_SC_Confirm , A_SC_Confirm , A_SC_LevelFoot ,
I_SC_NLevelFoot , A_SC_NLevelFoot , I_SC_LevelFoot , P_SC_Foot};
enum SID_Signal{P_SID_Down , I_SID_1 , I_SID_2 , I_SID_3 ,
I_SID_4 , I_SID_5 , P_SID_Up};
enum Compressor_Signal{I_CP_Down , I_CP_PressLimit , I_CP_PressLarge , I_CP_PressMiddle ,
I_CP_PressSmall , I_CP_Orignal};
enum Other_Signal{I_EnMove ,I_EmergenceStop};
//定义控制信号
//RF - 旋转脚踏板 IL - 影像联动(ImageLinkage)
enum Control_Signal_1{C_T_TilitPOS , C_T_TilitNEG , C_TL_AngulationHead , C_TL_AngulationFoot ,
C_La_MoveOutside ,C_La_MoveInside , C_L_MoveHead , C_L_MoveFoot ,
C_SID_MoveUp , C_SID_MoveDown , C_CP_MoveUp ,C_CP_MoveDown ,
C_IL_MoveHead , C_IL_MoveFoot , C_RF_RoteClock , C_RF_RoteAngiClock};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -