|
@@ -0,0 +1,2290 @@
|
|
|
+#include <p33FJ64MC204.h>
|
|
|
+#include <stdio.h>
|
|
|
+#include "main.h"
|
|
|
+#include "string.h"
|
|
|
+#include "EEPROM.h"
|
|
|
+#include "motor.h"
|
|
|
+#include "UART.h"
|
|
|
+#include "ADC.h"
|
|
|
+#include "PWM.h"
|
|
|
+#include "IO.h"
|
|
|
+#include "system.h"
|
|
|
+#include "Delay.h"
|
|
|
+#include "Timer.h"
|
|
|
+#include "Instrument_EEPROM_Param.h"
|
|
|
+#include "command.h"
|
|
|
+#include "PMT.h"
|
|
|
+#include "Temperature_Control.h"
|
|
|
+#define HELLO 0x01
|
|
|
+#define Reset_ID 0x02
|
|
|
+#define Command_Execution_Status 0x03
|
|
|
+#define MCU_RESET 0xAB
|
|
|
+#define SET_IO 0xAC
|
|
|
+#define GET_IO 0x06
|
|
|
+#define SET_Temperature 0x04
|
|
|
+#define READ_SET_Temperature 0x22
|
|
|
+#define GET_Actual_Temperature 0x05
|
|
|
+#define GET_TemperatureAD 0x21
|
|
|
+#define GET_MOTOR_POSITION 0x07
|
|
|
+#define GET_MOTOR_SPEED 0x08
|
|
|
+#define ENTERING_THE_WAREHOUSE 0x10
|
|
|
+#define OUT_THE_WAREHOUSE 0xc0
|
|
|
+#define move_to_well 0xd0
|
|
|
+#define magnetic_sleeve_on 0x13
|
|
|
+#define magnetic_sleeve_off 0x14
|
|
|
+#define magnetic_adsorption 0x15
|
|
|
+#define cleaning 0x16
|
|
|
+#define liang_gan 0x17
|
|
|
+#define qu_ci_zhu 0x30
|
|
|
+#define jie_he_qing_xi 0x31
|
|
|
+#define xi_tuo 0x32
|
|
|
+#define pause 0x3A
|
|
|
+#define run_after_pause 0x3B
|
|
|
+#define set_time 0x3C
|
|
|
+#define real_time 0x3D
|
|
|
+#define MT_RESET 0x09
|
|
|
+#define MT_FORWARD 0x0A
|
|
|
+#define MT_REVERSAL 0x0B
|
|
|
+#define MT_MOVE_TO 0x0C
|
|
|
+#define READ_EEPROM 0x11
|
|
|
+#define WRITE_EEPROM 0x12
|
|
|
+#define stop 0x18
|
|
|
+
|
|
|
+
|
|
|
+#define CI_xici 0x3E
|
|
|
+#define Z_dibu 0x3F
|
|
|
+#define Z_volume 0x40
|
|
|
+extern unsigned char Device_ID, Communication_Select;
|
|
|
+unsigned char EE_STATUS,Command_Status;
|
|
|
+unsigned int uiEE_address,Eeprom_Len,count_1=0,count_S=0,step=0,cleanning_times,adsorption_step,liang_gan_step,hunyun_times;
|
|
|
+unsigned long yemian_position,dibu_position,hunyun_position_start,hunyun_position_H,hunyun_position_L;
|
|
|
+
|
|
|
+unsigned int time[10],position[10];
|
|
|
+unsigned char ucEE_buffer[256];
|
|
|
+unsigned char Reset_flag;
|
|
|
+unsigned int i,c;
|
|
|
+unsigned char ucIOindex=0,ucIOstate=0,Get_IOstate;
|
|
|
+unsigned char ucDIR;
|
|
|
+unsigned char ucMOTOR_move_select,Motor_Status,kongwei;
|
|
|
+unsigned long ulPulse,ulPulse1;
|
|
|
+unsigned int u16_data1,u16_data2,ulspeed,ulspeed_cleaning;
|
|
|
+unsigned char u8_data1,u8_data2,u8_data3;
|
|
|
+unsigned int liquid_volume,xi_ci_time,xi_ci_spd,xi_ci_pulse,hunyun_time,hunyun_spd;
|
|
|
+unsigned char number_well;
|
|
|
+unsigned int pause_flag=0,m_Command_Status,m_step,m_position_X,m_position_Z,m_position_Z1;
|
|
|
+unsigned int m_count_S,m_liquid_volume,m_xi_ci_spd,m_hunyun_spd,m_hunyun_time,m_xi_ci_time;;
|
|
|
+unsigned int g_ulAD_Tempbuff[4],Actual_temp[4],Actual_temp_LAST;
|
|
|
+unsigned int Target_temp[4];
|
|
|
+extern unsigned int Z_chu_ye_mian_spd,Z_ru_ye_mian_spd,Z_normal_speed,Z_take_on_speed;
|
|
|
+extern unsigned int above_yemian_pulse;
|
|
|
+extern unsigned int Ci_take_off_speed1,Ci_take_off_speed2,Ci_normal_speed,X_normal_speed;
|
|
|
+/*************************position****************/
|
|
|
+extern unsigned int well_position1,well_position2,well_position3,well_position4,well_position5,well_position6;
|
|
|
+extern unsigned int Z_position1,adsorbtion_position,take_on_position1,getting_out_speedX,take_on_position2,take_off_position1,take_off_position2,take_off_position3;
|
|
|
+extern unsigned int adsorbtion_times,adsorbtion_time1,adsorbtion_time2,adsorbtion_time3,adsorbtion_juli;
|
|
|
+extern unsigned long getting_out_position1;
|
|
|
+void UART_Command(void)
|
|
|
+{
|
|
|
+ /******************************通信代码********************************/
|
|
|
+
|
|
|
+ if(g_ucUART1_flag == 1)
|
|
|
+ {
|
|
|
+ Delay1ms(50);
|
|
|
+ u16_data1=0;
|
|
|
+ Motor_Status = 0x00;
|
|
|
+ EE_STATUS=0;
|
|
|
+ if(g_ucCMD==Reset_ID)
|
|
|
+ {
|
|
|
+ ucEE_buffer[0]=g_ucUart1_Receive_Data[2];
|
|
|
+ ucEE_buffer[1]=0;
|
|
|
+ ucEE_buffer[2]=0;
|
|
|
+ ucEE_buffer[3]=0;
|
|
|
+ EE_StrWrite(0x0418,ucEE_buffer,4);
|
|
|
+ EE_StrRead(0x0418,(unsigned char*)&Device_ID,1); //设备ID
|
|
|
+ g_uiFrmLth = HELLO_ASK_LTH-3;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(Communication_Select>0)
|
|
|
+ {
|
|
|
+ switch(g_ucCMD)
|
|
|
+ {
|
|
|
+ case HELLO:
|
|
|
+ g_uiFrmLth = HELLO_ASK_LTH;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;//帧长高8位
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff; //帧长低8位
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = (SoftVersion & 0xff0000)>>16;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+2] = (SoftVersion & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+3] = SoftVersion & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /************************0x02*******/
|
|
|
+ case Reset_ID:
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[5];
|
|
|
+ ucEE_buffer[0]=g_ucUart1_Receive_Data[2];
|
|
|
+ ucEE_buffer[1]=0;
|
|
|
+ ucEE_buffer[2]=0;
|
|
|
+ ucEE_buffer[3]=0;
|
|
|
+ EE_StrWrite(0x00F4,ucEE_buffer,4);
|
|
|
+ EE_StrRead(0x00F4,(unsigned char*)&Device_ID,1); //设备ID
|
|
|
+ g_uiFrmLth = HELLO_ASK_LTH-3;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /*******************************************************/
|
|
|
+ case MCU_RESET:
|
|
|
+ Reset_flag=1;
|
|
|
+ g_uiFrmLth = HELLO_ASK_LTH-3;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ Delay1ms(5);
|
|
|
+ asm("Reset");
|
|
|
+ break;
|
|
|
+ /********************************************************/
|
|
|
+ case SET_IO:
|
|
|
+ ucIOindex=g_ucUart1_Receive_Data[FRAME_LTHL_INDEX+1];
|
|
|
+ ucIOstate =g_ucUart1_Receive_Data[FRAME_LTHL_INDEX+2];
|
|
|
+ SetIO(ucIOindex,ucIOstate);
|
|
|
+ g_uiFrmLth = SETIO_ASK_LTH;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = ucIOstate;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /***********************************************0x06**********/
|
|
|
+ case GET_IO:
|
|
|
+ ucIOindex = g_ucUart1_Receive_Data[5];
|
|
|
+ Get_IOstate = Get_IO(ucIOindex);
|
|
|
+ g_uiFrmLth = SETIO_ASK_LTH;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;//
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;//
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = Get_IOstate;//获取的IO状态
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;//状态位
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /**********************************************/
|
|
|
+ case SET_Temperature:
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[7];
|
|
|
+ u16_data1 = g_ucUart1_Receive_Data[5];
|
|
|
+ u16_data1 = (u16_data1<<8) + g_ucUart1_Receive_Data[6];
|
|
|
+ if(u8_data1<5)
|
|
|
+ {
|
|
|
+ set_Target_temp[u8_data1-1]=u16_data1;
|
|
|
+ }
|
|
|
+ g_uiFrmLth = PWM_ASK_LTH;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = u8_data1;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /*****************************************0x08***************/
|
|
|
+ case READ_SET_Temperature:
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[5];
|
|
|
+ if(u8_data1<5)
|
|
|
+ {
|
|
|
+ u16_data1=set_Target_temp[u8_data1-1];
|
|
|
+ }
|
|
|
+ g_uiFrmLth = (SETIO_ASK_LTH + 1);
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = ( u16_data1 & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+2] = u16_data1 & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /****************************0X09******************/
|
|
|
+ case GET_Actual_Temperature:
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[5];
|
|
|
+ if(u8_data1<5)
|
|
|
+ {
|
|
|
+ u16_data1=Actual_temp[u8_data1-1];
|
|
|
+ }
|
|
|
+ g_uiFrmLth = (SETIO_ASK_LTH + 1) ;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = (u16_data1 & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+2] = u16_data1 & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /***************************************0x10**************/
|
|
|
+ case GET_TemperatureAD:
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[5];
|
|
|
+ if(u8_data1<5)
|
|
|
+ {
|
|
|
+ u16_data1=g_ulAD_Tempbuff[u8_data1-1];
|
|
|
+ }
|
|
|
+ g_uiFrmLth = (SETIO_ASK_LTH + 1) ;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;//帧长
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = (u16_data1 & 0xff00)>>8;//温度
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+2] = u16_data1 & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;//状态位
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /*******************************************0xc0**************/
|
|
|
+ case READ_EEPROM:
|
|
|
+ uiEE_address = g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX];//7
|
|
|
+ uiEE_address = ((uiEE_address << 8) + g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX+1]);//8
|
|
|
+ Eeprom_Len = g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX+2];//9
|
|
|
+ Eeprom_Len = ((Eeprom_Len << 8) + g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX+3]);//10
|
|
|
+ if(Eeprom_Len>=50)
|
|
|
+ { Eeprom_Len=50;}
|
|
|
+ if((uiEE_address >= 0x00 )&&(uiEE_address <= 1048576))
|
|
|
+ {
|
|
|
+ EE_StrRead(uiEE_address,ucEE_buffer,Eeprom_Len);
|
|
|
+ EE_STATUS = 0x00;
|
|
|
+ for( i=0;i<Eeprom_Len;i++)
|
|
|
+ {
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1+i] = ucEE_buffer[i];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ g_uiFrmLth = (SETIO_ASK_LTH_EEPROM + Eeprom_Len);
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = EE_STATUS;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /*******************************************0xd0**************/
|
|
|
+ case WRITE_EEPROM:
|
|
|
+ Eeprom_Len=g_ucUart1_Receive_Data[FRAME_LTHH_INDEX];
|
|
|
+ Eeprom_Len=(Eeprom_Len<<8)+g_ucUart1_Receive_Data[FRAME_LTHL_INDEX];//接收到的帧长度-固有长度9得出需要写入的数据个数(字节)
|
|
|
+ Eeprom_Len=Eeprom_Len-9;
|
|
|
+ uiEE_address = g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX];//7
|
|
|
+ uiEE_address = ((uiEE_address << 8) + g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX+1]);//8
|
|
|
+ if(Eeprom_Len>=50)
|
|
|
+ { Eeprom_Len=50;}
|
|
|
+ if((uiEE_address >= 0x00 )&&(uiEE_address <= 0x1048576))
|
|
|
+ {
|
|
|
+ for(i=0;i<Eeprom_Len;i++)
|
|
|
+ {
|
|
|
+ ucEE_buffer[i]=g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX+2+i];
|
|
|
+ }
|
|
|
+ if(uiEE_address <= 1048576)
|
|
|
+ {
|
|
|
+ EE_StrWrite(uiEE_address,ucEE_buffer,Eeprom_Len);
|
|
|
+ EE_STATUS = 0x00;
|
|
|
+ }
|
|
|
+ Read_Sys_EE();
|
|
|
+ if(uiEE_address == 0X0500)
|
|
|
+ {
|
|
|
+ CalculateSModelLine(g_uiReagentMotorPeriod2, ACC_pulse2, REAGENT_MOTOR_FREQMAX2, REAGENT_MOTOR_FREQMIN2, REAGENT_MOTOR_XFLEXIBLE2);//计算加减速曲线
|
|
|
+ }
|
|
|
+ }
|
|
|
+ g_uiFrmLth = SETIO_ASK_LTH_EEPROM ;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth ;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = EE_STATUS;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /********************************************0x30**************/
|
|
|
+ case MT_RESET:
|
|
|
+ g_uiFrmLth = HELLO_ASK_LTH-3;
|
|
|
+ ucMOTOR_move_select = g_ucUart1_Receive_Data[5]; //电机号(1: 底板移动电机 2:升降电机3:磁棒电机 4:磁铁电机)
|
|
|
+ if(ucMOTOR_move_select == 1) Motor1Home(Motor1.Back_Pulse,Motor1.Reset_Speed,Motor1.Reset_Speed);
|
|
|
+ else if(ucMOTOR_move_select == 2) Motor2Home(Motor2.Back_Pulse,Motor2.Reset_Speed,Motor2.Reset_Speed);
|
|
|
+ else if(ucMOTOR_move_select == 3) Motor3Home(Motor3.Back_Pulse,Motor3.Reset_Speed,Motor3.Reset_Speed);
|
|
|
+ else if(ucMOTOR_move_select == 4) Motor4Home(Motor4.Back_Pulse,Motor4.Reset_Speed,Motor4.Reset_Speed);
|
|
|
+ else Motor_Status = 0x03;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = Motor_Status;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /************************************0x31**************/
|
|
|
+ case MT_FORWARD:
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ ucMOTOR_move_select = g_ucUart1_Receive_Data[10]; //电机号(1: 底板移动电机 2:升降电机3:磁棒电机)
|
|
|
+ ulPulse = g_ucUart1_Receive_Data[5];
|
|
|
+ ulPulse = (ulPulse<<8) + g_ucUart1_Receive_Data[6];
|
|
|
+ ulPulse = (ulPulse<<8) + g_ucUart1_Receive_Data[7];
|
|
|
+ u16_data1=g_ucUart1_Receive_Data[8];
|
|
|
+ u16_data1=(u16_data1<<8)+g_ucUart1_Receive_Data[9];
|
|
|
+ if (ucMOTOR_move_select == 1)
|
|
|
+ {
|
|
|
+ if ((ulPulse+g_tReagentMotorParam.ulXiPosition)<=Motor1.Limit_Pulse)
|
|
|
+ {
|
|
|
+ Motor1.Moving_Speed=u16_data1;
|
|
|
+ Motor1Move(ulPulse,!Motor1.Reset_Direction,Motor1.Moving_Speed);
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x01;
|
|
|
+ }
|
|
|
+ else if(ucMOTOR_move_select == 2)
|
|
|
+ {
|
|
|
+ if ( (ulPulse+g_tReagentMotorParam.ulZiPosition)<=Motor2.Limit_Pulse )
|
|
|
+ {
|
|
|
+ Motor2.Moving_Speed=u16_data1;
|
|
|
+ Motor2Move(ulPulse,!Motor2.Reset_Direction,Motor2.Moving_Speed);
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x01;
|
|
|
+ }
|
|
|
+ else if(ucMOTOR_move_select == 3)
|
|
|
+ {
|
|
|
+ if ( (ulPulse+g_tReagentMotorParam.ulZ1iPosition)<=Motor3.Limit_Pulse )
|
|
|
+ {
|
|
|
+ Motor3.Moving_Speed=u16_data1;
|
|
|
+ Motor3Move(ulPulse,!Motor3.Reset_Direction,Motor3.Moving_Speed);
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x01;
|
|
|
+ }
|
|
|
+ else if(ucMOTOR_move_select == 4)
|
|
|
+ {
|
|
|
+ if ( (ulPulse+g_tReagentMotorParam.ul4iPosition)<=Motor4.Limit_Pulse )
|
|
|
+ {
|
|
|
+ Motor4.Moving_Speed=u16_data1;
|
|
|
+ Motor4Move(ulPulse,!Motor4.Reset_Direction,Motor4.Moving_Speed);
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x01;
|
|
|
+ }
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = Motor_Status;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /*************************************0x32**************/
|
|
|
+ case MT_REVERSAL:
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ ucMOTOR_move_select = g_ucUart1_Receive_Data[10]; //电机号(1: 底板移动电机 2:升降电机3:磁棒电机)
|
|
|
+ ulPulse = g_ucUart1_Receive_Data[5];
|
|
|
+ ulPulse = (ulPulse<<8) + g_ucUart1_Receive_Data[6];
|
|
|
+ ulPulse = (ulPulse<<8) + g_ucUart1_Receive_Data[7];
|
|
|
+ u16_data1=g_ucUart1_Receive_Data[8];
|
|
|
+ u16_data1=(u16_data1<<8)+g_ucUart1_Receive_Data[9];
|
|
|
+ if (ucMOTOR_move_select == 1)
|
|
|
+ {
|
|
|
+ if (ulPulse<=g_tReagentMotorParam.ulXiPosition)
|
|
|
+ {
|
|
|
+ Motor1.Moving_Speed=u16_data1;
|
|
|
+ Motor1Move(ulPulse,Motor1.Reset_Direction,Motor1.Moving_Speed);
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x01;
|
|
|
+ }
|
|
|
+ else if(ucMOTOR_move_select == 2)
|
|
|
+ {
|
|
|
+ if ( ulPulse<=g_tReagentMotorParam.ulZiPosition )
|
|
|
+ {
|
|
|
+ Motor2.Moving_Speed=u16_data1;
|
|
|
+ Motor2Move(ulPulse,Motor2.Reset_Direction,Motor2.Moving_Speed);
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x01;
|
|
|
+ }
|
|
|
+ else if(ucMOTOR_move_select == 3)
|
|
|
+ {
|
|
|
+ if ( ulPulse<=g_tReagentMotorParam.ulZ1iPosition )
|
|
|
+ {
|
|
|
+ Motor3.Moving_Speed=u16_data1;
|
|
|
+ Motor3Move(ulPulse,Motor3.Reset_Direction,Motor3.Moving_Speed);
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x01;
|
|
|
+ }
|
|
|
+ else if(ucMOTOR_move_select == 4)
|
|
|
+ {
|
|
|
+ if ( ulPulse<=g_tReagentMotorParam.ul4iPosition )
|
|
|
+ {
|
|
|
+ Motor4.Moving_Speed=u16_data1;
|
|
|
+ Motor4Move(ulPulse,Motor4.Reset_Direction,Motor4.Moving_Speed);
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x01;
|
|
|
+ }
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /******************************************0x33**************/
|
|
|
+ case MT_MOVE_TO:
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ ucMOTOR_move_select = g_ucUart1_Receive_Data[10]; //电机号(1: 底板移动电机 2:升降电机3:磁棒电机)
|
|
|
+ ulPulse = g_ucUart1_Receive_Data[5];
|
|
|
+ ulPulse = (ulPulse<<8) + g_ucUart1_Receive_Data[6];
|
|
|
+ ulPulse = (ulPulse<<8) + g_ucUart1_Receive_Data[7];
|
|
|
+ u16_data1=g_ucUart1_Receive_Data[8];
|
|
|
+ u16_data1=(u16_data1<<8)+g_ucUart1_Receive_Data[9];
|
|
|
+
|
|
|
+ if (ucMOTOR_move_select == 1)
|
|
|
+ {
|
|
|
+ if(ulPulse<=Motor1.Limit_Pulse)
|
|
|
+ {
|
|
|
+ Motor1.Moving_Speed=u16_data1;
|
|
|
+// ulPulse=ulPulse*3.84;
|
|
|
+ Motor1MoveTo(ulPulse,Motor1.Moving_Speed);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Motor_Status = 0x01;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if(ucMOTOR_move_select == 2)
|
|
|
+ {
|
|
|
+ if(ulPulse<=Motor2.Limit_Pulse)
|
|
|
+ {
|
|
|
+ Motor2.Moving_Speed=u16_data1;
|
|
|
+// ulPulse=ulPulse*4;
|
|
|
+ Motor2MoveTo(ulPulse,Motor2.Moving_Speed);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Motor_Status = 0x01;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if(ucMOTOR_move_select == 3)
|
|
|
+ {
|
|
|
+ if(ulPulse<=Motor3.Limit_Pulse)//最大行程处
|
|
|
+ {
|
|
|
+ Motor3.Moving_Speed=u16_data1;
|
|
|
+// ulPulse=ulPulse*0.64;
|
|
|
+ Motor3MoveTo(ulPulse,Motor3.Moving_Speed);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Motor_Status = 0x01;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if(ucMOTOR_move_select == 4)
|
|
|
+ {
|
|
|
+ if(ulPulse<=Motor4.Limit_Pulse)//最大行程处
|
|
|
+ {
|
|
|
+ Motor4.Moving_Speed=u16_data1;
|
|
|
+// ulPulse=ulPulse*0.64;
|
|
|
+ Motor4MoveTo(ulPulse,Motor4.Moving_Speed);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Motor_Status = 0x01;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = Motor_Status;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case GET_MOTOR_POSITION :
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[5];
|
|
|
+ if(u8_data1<4)
|
|
|
+ {
|
|
|
+ switch(u8_data1)
|
|
|
+ {
|
|
|
+ case 1 : u16_data1= g_tReagentMotorParam.ulXiPosition; break;
|
|
|
+ case 2 : u16_data1= g_tReagentMotorParam.ulZiPosition; break;
|
|
|
+ case 3 : u16_data1=g_tReagentMotorParam.ulZ1iPosition; break;
|
|
|
+ case 4 : u16_data1=g_tReagentMotorParam.ul4iPosition; break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ g_uiFrmLth = (SETIO_ASK_LTH + 1);
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = (u16_data1 & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+2] = u16_data1 & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case GET_MOTOR_SPEED :
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[5];
|
|
|
+ switch(u8_data1)
|
|
|
+ {
|
|
|
+ case 1 : u16_data1=g_tReagentMotorParam.uiXSpeed; break;
|
|
|
+ case 2 : u16_data1=g_tReagentMotorParam.uiZSpeed; break;
|
|
|
+ case 3 : u16_data1=g_tReagentMotorParam.uiZ1Speed; break;
|
|
|
+ case 4 : u16_data1=g_tReagentMotorParam.ui4Speed; break;
|
|
|
+ }
|
|
|
+ g_uiFrmLth = (SETIO_ASK_LTH + 1);
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = (u16_data1 & 0xff00)>>8;//温度
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+2] = u16_data1 & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;//状态位
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case ENTERING_THE_WAREHOUSE :
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ Motor4Home(Motor4.Back_Pulse,Motor4.Reset_Speed,Motor4.Reset_Speed);
|
|
|
+ Motor2Home(Motor2.Back_Pulse,Motor2.Reset_Speed,Motor2.Reset_Speed);
|
|
|
+ Motor3Home(Motor3.Back_Pulse,Motor3.Reset_Speed,Motor3.Reset_Speed);
|
|
|
+ Motor1Home(Motor1.Back_Pulse,Motor1.Reset_Speed,Motor1.Reset_Speed);
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case OUT_THE_WAREHOUSE :
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ Motor4Home(Motor4.Back_Pulse,Motor4.Reset_Speed,Motor4.Reset_Speed);//磁铁电机复位
|
|
|
+ Motor3Home(Motor3.Back_Pulse,Motor3.Reset_Speed,Motor3.Reset_Speed);//磁棒电机复位
|
|
|
+ Motor2Home(Motor2.Back_Pulse,Motor2.Reset_Speed,Motor2.Reset_Speed);//升降电机复位
|
|
|
+ Motor1Home(Motor1.Back_Pulse,Motor1.Reset_Speed,Motor1.Reset_Speed);//底板组件复位
|
|
|
+// Motor1MoveTo(X_chucang_jiange,getting_out_speedX);
|
|
|
+
|
|
|
+ if(getting_out_position1<=Motor1.Limit_Pulse)
|
|
|
+ {
|
|
|
+ Motor1MoveTo(getting_out_position1,getting_out_speedX);
|
|
|
+ }
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = ucMOTOR_move_select;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case move_to_well :
|
|
|
+ break;
|
|
|
+ case magnetic_sleeve_on :
|
|
|
+
|
|
|
+ break;
|
|
|
+ case magnetic_sleeve_off :
|
|
|
+
|
|
|
+ break;
|
|
|
+ case magnetic_adsorption :
|
|
|
+
|
|
|
+ break;
|
|
|
+ case cleaning :
|
|
|
+
|
|
|
+ break;
|
|
|
+ case set_time:
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[5];
|
|
|
+ if(u8_data1<60)
|
|
|
+ {
|
|
|
+ u8_data2=u8_data1%10;
|
|
|
+ u8_data3=(unsigned char)(u8_data1/10);
|
|
|
+ u8_data1= (u8_data3<<4)+u8_data2;
|
|
|
+ real_time_write(0x02,u8_data1);//秒
|
|
|
+ }
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[6];
|
|
|
+ if(u8_data1<60)
|
|
|
+ {
|
|
|
+ u8_data2=u8_data1%10;
|
|
|
+ u8_data3=(unsigned char)(u8_data1/10);
|
|
|
+ u8_data1= (u8_data3<<4)+u8_data2;
|
|
|
+ real_time_write(0x03,u8_data1);//分
|
|
|
+ }
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[7];
|
|
|
+ if(u8_data1<24)
|
|
|
+ {
|
|
|
+ u8_data2=u8_data1%10;
|
|
|
+ u8_data3=(unsigned char)(u8_data1/10);
|
|
|
+ u8_data1= (u8_data3<<4)+u8_data2;
|
|
|
+ real_time_write(0x04,u8_data1);//时
|
|
|
+ }
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[8];
|
|
|
+ if(u8_data1<32&&u8_data1>0)
|
|
|
+ {
|
|
|
+ u8_data2=u8_data1%10;
|
|
|
+ u8_data3=(unsigned char)(u8_data1/10);
|
|
|
+ u8_data1= (u8_data3<<4)+u8_data2;
|
|
|
+ real_time_write(0x05,u8_data1);//日
|
|
|
+ }
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[9];
|
|
|
+ if(u8_data1<7)
|
|
|
+ {
|
|
|
+ real_time_write(0x06,u8_data1);//星期
|
|
|
+ }
|
|
|
+ else if(u8_data1==7)
|
|
|
+ {
|
|
|
+ u8_data1= 0;
|
|
|
+ real_time_write(0x06,u8_data1);//星期
|
|
|
+ }
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[10];
|
|
|
+ if(u8_data1<13&&u8_data1>0)
|
|
|
+ {
|
|
|
+ u8_data2=u8_data1%10;
|
|
|
+ u8_data3=(unsigned char)(u8_data1/10);
|
|
|
+ u8_data1= (u8_data3<<4)+u8_data2;
|
|
|
+ real_time_write(0x07,u8_data1);//月
|
|
|
+ }
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[11];
|
|
|
+ if(u8_data1<100&&u8_data1>0)
|
|
|
+ {
|
|
|
+ u8_data2=u8_data1%10;
|
|
|
+ u8_data3= (unsigned char)(u8_data1/10);
|
|
|
+ u8_data1= (u8_data3<<4)+u8_data2;
|
|
|
+ real_time_write(0x08,u8_data1);//年
|
|
|
+ }
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = 0;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case real_time:
|
|
|
+ u8_data1=real_time_read(0x02);
|
|
|
+ u8_data2=u8_data1>>7;
|
|
|
+ if(u8_data2==1)
|
|
|
+ {
|
|
|
+ u8_data3=((u8_data1-128)>>4)*10+(u8_data1& 0x0f);
|
|
|
+ }
|
|
|
+ else if(u8_data2==0)
|
|
|
+ {
|
|
|
+ u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);
|
|
|
+ }
|
|
|
+ g_ucUart1_Send_Data[6]=u8_data3;//sec
|
|
|
+ g_ucUart1_Send_Data[5]=u8_data2;
|
|
|
+
|
|
|
+ u8_data1=real_time_read(0x03);
|
|
|
+ u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);
|
|
|
+ g_ucUart1_Send_Data[7]=u8_data3;//min
|
|
|
+
|
|
|
+ u8_data1=real_time_read(0x04);
|
|
|
+ u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);
|
|
|
+ g_ucUart1_Send_Data[8]=u8_data3;//hour
|
|
|
+
|
|
|
+ u8_data1=real_time_read(0x05);
|
|
|
+ u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);
|
|
|
+ g_ucUart1_Send_Data[9]=u8_data3;//date
|
|
|
+
|
|
|
+ u8_data1=real_time_read(0x06);
|
|
|
+ if(u8_data1==0)
|
|
|
+ {
|
|
|
+ u8_data3=7;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ u8_data3=u8_data1;
|
|
|
+ }
|
|
|
+ g_ucUart1_Send_Data[10]=u8_data3;//week?
|
|
|
+
|
|
|
+ u8_data1=real_time_read(0x07);
|
|
|
+ u8_data2=u8_data1>>7;
|
|
|
+ if(u8_data2==1)
|
|
|
+ {
|
|
|
+ u8_data3=((u8_data1-128)>>4)*10+(u8_data1& 0x0f);
|
|
|
+ }
|
|
|
+ else if(u8_data2==0)
|
|
|
+ {
|
|
|
+ u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);
|
|
|
+ }
|
|
|
+ g_ucUart1_Send_Data[11]=u8_data3;//月
|
|
|
+
|
|
|
+ u8_data1=real_time_read(0x08);
|
|
|
+ if(u8_data2==1)
|
|
|
+ {
|
|
|
+ u16_data1=1900+(u8_data1>>4)*10+(u8_data1& 0x0f);
|
|
|
+ }
|
|
|
+ else if(u8_data2==0)
|
|
|
+ {
|
|
|
+ u16_data1=2000+(u8_data1>>4)*10+(u8_data1& 0x0f);
|
|
|
+ }
|
|
|
+ g_ucUart1_Send_Data[12] = (u16_data1 & 0xff00)>>8;//速度 0.01mm/s
|
|
|
+ g_ucUart1_Send_Data[13] = u16_data1 & 0xff;
|
|
|
+ g_uiFrmLth=16;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = 0;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case CI_xici:
|
|
|
+ Motor3MoveTo(adsorbtion_position,Ci_normal_speed);
|
|
|
+ g_uiFrmLth = 7;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case Z_dibu:
|
|
|
+ Motor2MoveTo(Z_di_bu_position,10000);
|
|
|
+ g_uiFrmLth = 7;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case Z_volume:
|
|
|
+ u16_data1 = g_ucUart1_Receive_Data[5];
|
|
|
+ u16_data1 = (u16_data1<<8) + g_ucUart1_Receive_Data[6];
|
|
|
+ Move_to_by_volume(u16_data1,10000);
|
|
|
+ g_uiFrmLth = 8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = 0x00;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if(g_ucUart1_Receive_Data[2]==Device_ID)
|
|
|
+ {
|
|
|
+ switch(g_ucCMD)
|
|
|
+ {
|
|
|
+ case HELLO:
|
|
|
+ g_uiFrmLth = HELLO_ASK_LTH;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = (SoftVersion & 0xff0000)>>16;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+2] = (SoftVersion & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+3] = SoftVersion & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /*************************************************/
|
|
|
+ case MCU_RESET:
|
|
|
+ Reset_flag=1;
|
|
|
+ g_uiFrmLth = HELLO_ASK_LTH-3;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ Delay1ms(5);
|
|
|
+ asm("Reset");
|
|
|
+ break;
|
|
|
+ /**********************************************************/
|
|
|
+ case SET_IO:
|
|
|
+ ucIOindex=g_ucUart1_Receive_Data[FRAME_LTHL_INDEX+1];
|
|
|
+ ucIOstate=g_ucUart1_Receive_Data[FRAME_LTHL_INDEX+2];
|
|
|
+ SetIO(ucIOindex,ucIOstate);
|
|
|
+ g_uiFrmLth = SETIO_ASK_LTH;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = ucIOstate;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /*******************************************************/
|
|
|
+ case GET_IO:
|
|
|
+ ucIOindex = g_ucUart1_Receive_Data[5];
|
|
|
+ Get_IOstate = Get_IO(ucIOindex);
|
|
|
+ g_uiFrmLth = SETIO_ASK_LTH;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;//
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;//
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = Get_IOstate;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /********************************************/
|
|
|
+ case SET_Temperature:
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[7];
|
|
|
+ u16_data1 = g_ucUart1_Receive_Data[5];
|
|
|
+ u16_data1 = (u16_data1<<8) + g_ucUart1_Receive_Data[6];
|
|
|
+ if(u8_data1<5)
|
|
|
+ {
|
|
|
+ set_Target_temp[u8_data1-1]=u16_data1;
|
|
|
+ }
|
|
|
+ g_uiFrmLth = PWM_ASK_LTH;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = u8_data1;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /************************************0x08***************/
|
|
|
+ case READ_SET_Temperature:
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[5];
|
|
|
+ if(u8_data1<5)
|
|
|
+ {
|
|
|
+ u16_data1=set_Target_temp[u8_data1-1];
|
|
|
+ }
|
|
|
+ g_uiFrmLth = (SETIO_ASK_LTH + 1);
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = ( u16_data1 & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+2] = u16_data1 & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /*******************************0X09******************/
|
|
|
+ case GET_Actual_Temperature:
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[5];
|
|
|
+ if(u8_data1<5)
|
|
|
+ {
|
|
|
+ u16_data1=Actual_temp[u8_data1-1];
|
|
|
+ }
|
|
|
+ g_uiFrmLth = (SETIO_ASK_LTH + 1) ;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = (u16_data1 & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+2] = u16_data1 & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /***********************************0x10**************/
|
|
|
+ case GET_TemperatureAD:
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[5];
|
|
|
+ if(u8_data1<5)
|
|
|
+ {
|
|
|
+ u16_data1=g_ulAD_Tempbuff[u8_data1-1];
|
|
|
+ }
|
|
|
+ g_uiFrmLth = (SETIO_ASK_LTH + 1) ;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = (u16_data1 & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+2] = u16_data1 & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /******************************************0xc0**************/
|
|
|
+ case READ_EEPROM:
|
|
|
+ uiEE_address = g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX];
|
|
|
+ uiEE_address = ((uiEE_address << 8) + g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX+1]);
|
|
|
+ Eeprom_Len = g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX+2];
|
|
|
+ Eeprom_Len = ((Eeprom_Len << 8) + g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX+3]);
|
|
|
+ if(Eeprom_Len>=50)
|
|
|
+ { Eeprom_Len=50;}
|
|
|
+ if((uiEE_address >= 0x00 )&&(uiEE_address <= 1048576))
|
|
|
+ {
|
|
|
+ EE_StrRead(uiEE_address,ucEE_buffer,Eeprom_Len);
|
|
|
+ EE_STATUS = 0x00;
|
|
|
+ for( i=0;i<Eeprom_Len;i++)
|
|
|
+ {
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1+i] = ucEE_buffer[i];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ g_uiFrmLth = (SETIO_ASK_LTH_EEPROM + Eeprom_Len);
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = EE_STATUS;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /*******************************************0xd0**************/
|
|
|
+ case WRITE_EEPROM:
|
|
|
+ Eeprom_Len=g_ucUart1_Receive_Data[FRAME_LTHH_INDEX];
|
|
|
+ Eeprom_Len=(Eeprom_Len<<8)+g_ucUart1_Receive_Data[FRAME_LTHL_INDEX];
|
|
|
+ Eeprom_Len=Eeprom_Len-9;
|
|
|
+ uiEE_address = g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX];
|
|
|
+ uiEE_address = ((uiEE_address << 8) + g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX+1]);
|
|
|
+ if(Eeprom_Len>=50)
|
|
|
+ { Eeprom_Len=50;}
|
|
|
+ if((uiEE_address >= 0x00 )&&(uiEE_address <= 0x1048576))
|
|
|
+ {
|
|
|
+ for(i=0;i<Eeprom_Len;i++)
|
|
|
+ {
|
|
|
+ ucEE_buffer[i]=g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX+2+i];
|
|
|
+ }
|
|
|
+ if(uiEE_address <= 1048576)
|
|
|
+ {
|
|
|
+ EE_StrWrite(uiEE_address,ucEE_buffer,Eeprom_Len);
|
|
|
+ EE_STATUS = 0x00;
|
|
|
+ }
|
|
|
+ Read_Sys_EE();
|
|
|
+ if(uiEE_address == 0X0500)
|
|
|
+ {
|
|
|
+ CalculateSModelLine(g_uiReagentMotorPeriod2, ACC_pulse2, REAGENT_MOTOR_FREQMAX2, REAGENT_MOTOR_FREQMIN2, REAGENT_MOTOR_XFLEXIBLE2);//计算加减速曲线
|
|
|
+ }
|
|
|
+ }
|
|
|
+ g_uiFrmLth = SETIO_ASK_LTH_EEPROM ;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth ;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = EE_STATUS;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /****************************************0x30**************/
|
|
|
+ case MT_RESET:
|
|
|
+ ucMOTOR_move_select = g_ucUart1_Receive_Data[5];
|
|
|
+ if(Command_Status >0)
|
|
|
+ {
|
|
|
+ Motor_Status=3;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Command_Status=MT_RESET;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ }
|
|
|
+ g_uiFrmLth = HELLO_ASK_LTH-3;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /****************************************************/
|
|
|
+ case MT_FORWARD:
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ if(Command_Status >0)
|
|
|
+ {
|
|
|
+ Motor_Status=3;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ucMOTOR_move_select = g_ucUart1_Receive_Data[10];
|
|
|
+ ulPulse = g_ucUart1_Receive_Data[5];
|
|
|
+ ulPulse = (ulPulse<<8) + g_ucUart1_Receive_Data[6];
|
|
|
+ ulPulse = (ulPulse<<8) + g_ucUart1_Receive_Data[7];
|
|
|
+ ulspeed=g_ucUart1_Receive_Data[8];
|
|
|
+ ulspeed=(ulspeed<<8)+g_ucUart1_Receive_Data[9] ;
|
|
|
+ Command_Status=MT_FORWARD;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ }
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /*******************************************0x32**************/
|
|
|
+ case MT_REVERSAL:
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ if(Command_Status >0)
|
|
|
+ {
|
|
|
+ Motor_Status=3;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ucMOTOR_move_select = g_ucUart1_Receive_Data[10];
|
|
|
+ ulPulse = g_ucUart1_Receive_Data[5];
|
|
|
+ ulPulse = (ulPulse<<8) + g_ucUart1_Receive_Data[6];
|
|
|
+ ulPulse = (ulPulse<<8) + g_ucUart1_Receive_Data[7];
|
|
|
+ ulspeed=g_ucUart1_Receive_Data[8];
|
|
|
+ ulspeed=(ulspeed<<8)+g_ucUart1_Receive_Data[9] ;
|
|
|
+ Command_Status=MT_REVERSAL;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ }
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /***********************************0x33**************/
|
|
|
+ case MT_MOVE_TO:
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ if(Command_Status >0)
|
|
|
+ {
|
|
|
+ Motor_Status=3;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Command_Status=MT_MOVE_TO;
|
|
|
+ ucMOTOR_move_select = g_ucUart1_Receive_Data[10];
|
|
|
+ ulPulse = g_ucUart1_Receive_Data[5];
|
|
|
+ ulPulse = (ulPulse<<8) + g_ucUart1_Receive_Data[6];
|
|
|
+ ulPulse = (ulPulse<<8) + g_ucUart1_Receive_Data[7];
|
|
|
+ ulspeed=g_ucUart1_Receive_Data[8];
|
|
|
+ ulspeed=(ulspeed<<8)+g_ucUart1_Receive_Data[9];
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ }
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case GET_MOTOR_POSITION :
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[5];
|
|
|
+ if(u8_data1<4)
|
|
|
+ {
|
|
|
+ switch(u8_data1)
|
|
|
+ {
|
|
|
+ case 1 : u16_data1= g_tReagentMotorParam.ulXiPosition; break;
|
|
|
+ case 2 : u16_data1= g_tReagentMotorParam.ulZiPosition; break;
|
|
|
+ case 3 : u16_data1=g_tReagentMotorParam.ulZ1iPosition; break;
|
|
|
+ case 4 : u16_data1=g_tReagentMotorParam.ul4iPosition; break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ g_uiFrmLth = (SETIO_ASK_LTH + 1);
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;//桢长
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = (u16_data1 & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+2] = u16_data1 & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case GET_MOTOR_SPEED :
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[5];
|
|
|
+ switch(u8_data1)
|
|
|
+ {
|
|
|
+
|
|
|
+ case 1 : u16_data1=g_tReagentMotorParam.uiXSpeed; break;
|
|
|
+ case 2 : u16_data1=g_tReagentMotorParam.uiZSpeed; break;
|
|
|
+ case 3 : u16_data1=g_tReagentMotorParam.uiZ1Speed; break;
|
|
|
+ case 4 : u16_data1=g_tReagentMotorParam.ui4Speed; break;
|
|
|
+ }
|
|
|
+ g_uiFrmLth = (SETIO_ASK_LTH + 1);
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = (u16_data1 & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX+2] = u16_data1 & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case ENTERING_THE_WAREHOUSE :
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ if(Command_Status >0)
|
|
|
+ {
|
|
|
+ Motor_Status=3;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Command_Status=ENTERING_THE_WAREHOUSE;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ }
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case OUT_THE_WAREHOUSE :
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ if(Command_Status >0)
|
|
|
+ {
|
|
|
+ Motor_Status=3;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Command_Status= OUT_THE_WAREHOUSE;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ }
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case move_to_well ://移动到深孔板对应位置
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ kongwei=g_ucUart1_Receive_Data[5];
|
|
|
+ if(Command_Status >0)
|
|
|
+ {
|
|
|
+ Motor_Status=3;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Command_Status= move_to_well;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ }
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case magnetic_sleeve_on :
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ if(Command_Status >0)
|
|
|
+ {
|
|
|
+ Motor_Status=3;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Command_Status= magnetic_sleeve_on;
|
|
|
+ step=1;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ }
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case magnetic_sleeve_off :
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ if(Command_Status >0)
|
|
|
+ {
|
|
|
+ Motor_Status=3;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Command_Status=magnetic_sleeve_off;
|
|
|
+ step=1;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ }
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case magnetic_adsorption :
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ if(Command_Status >0)
|
|
|
+ {
|
|
|
+ Motor_Status=3;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ yemian_position = g_ucUart1_Receive_Data[5];
|
|
|
+ yemian_position = (yemian_position <<8) + g_ucUart1_Receive_Data[6];
|
|
|
+ yemian_position = (yemian_position <<8) + g_ucUart1_Receive_Data[7];
|
|
|
+ dibu_position = g_ucUart1_Receive_Data[8];
|
|
|
+ dibu_position = (dibu_position <<8) + g_ucUart1_Receive_Data[9];
|
|
|
+ dibu_position = (dibu_position <<8) + g_ucUart1_Receive_Data[10];
|
|
|
+ ulspeed= g_ucUart1_Receive_Data[11];
|
|
|
+ ulspeed= (ulspeed<<8) + g_ucUart1_Receive_Data[12];
|
|
|
+ memset(time,0,10*sizeof(unsigned char));
|
|
|
+ memset(position,0,10*sizeof(unsigned int));
|
|
|
+ if(g_uiLth==55)
|
|
|
+ {
|
|
|
+ for(i=0;i<10;i++)
|
|
|
+ {
|
|
|
+ if(i==0)
|
|
|
+ {
|
|
|
+ time[i]= g_ucUart1_Receive_Data[4*i+13];
|
|
|
+ time[i]=(time[i]<<8)+ g_ucUart1_Receive_Data[4*i+14];
|
|
|
+ position[i]=g_ucUart1_Receive_Data[4*i+11];
|
|
|
+ position[i]=(position[i]<<8)+g_ucUart1_Receive_Data[4*i+12];
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ time[i]=g_ucUart1_Receive_Data[4*i+13];
|
|
|
+ time[i]=(time[i]<<8)+ g_ucUart1_Receive_Data[4*i+14];
|
|
|
+ time[i]=time[i]+time[i-1];
|
|
|
+ position[i]=g_ucUart1_Receive_Data[4*i+11];
|
|
|
+ position[i]=(position[i]<<8)+g_ucUart1_Receive_Data[4*i+12];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if(g_uiLth==14)
|
|
|
+ {
|
|
|
+ if((dibu_position-yemian_position)>adsorbtion_juli)
|
|
|
+ {
|
|
|
+ for(i=0;i<10;i++)
|
|
|
+ {
|
|
|
+ position[i]=yemian_position+(dibu_position-yemian_position)/9*i;
|
|
|
+ if(i==0)
|
|
|
+ {
|
|
|
+ time[i]=adsorbtion_time1+2;
|
|
|
+ }
|
|
|
+ else if(i<4)
|
|
|
+ {
|
|
|
+ time[i]=time[i-1]+adsorbtion_time1+2;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ time[i]=time[i-1]+adsorbtion_time1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if((dibu_position-yemian_position)>100)
|
|
|
+ {
|
|
|
+ for(i=0;i<10;i++)
|
|
|
+ {
|
|
|
+ if(i<2)
|
|
|
+ {
|
|
|
+ position[i]=yemian_position+(dibu_position-yemian_position)*i;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ position[i]=position[1];
|
|
|
+ }
|
|
|
+ if(i==0)
|
|
|
+ {
|
|
|
+ time[i]=adsorbtion_time2+1;
|
|
|
+ }
|
|
|
+ else if(i<2)
|
|
|
+ {
|
|
|
+ time[i]=time[i-1]+adsorbtion_time2;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ time[i]=time[1];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ for(i=0;i<10;i++)
|
|
|
+ {
|
|
|
+ position[i]=(dibu_position+yemian_position)/2;
|
|
|
+ time[i]=adsorbtion_time3;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Command_Status= magnetic_adsorption;
|
|
|
+ step=1;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ }
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case cleaning :
|
|
|
+ if(Command_Status >0)
|
|
|
+ {
|
|
|
+ Motor_Status=3;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] =1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ hunyun_position_start= g_ucUart1_Receive_Data[5];
|
|
|
+ hunyun_position_start = (hunyun_position_start<<8) + g_ucUart1_Receive_Data[6];
|
|
|
+ hunyun_position_start = (hunyun_position_start<<8) + g_ucUart1_Receive_Data[7];
|
|
|
+ hunyun_position_H = g_ucUart1_Receive_Data[8];
|
|
|
+ hunyun_position_H = (hunyun_position_H<<8) + g_ucUart1_Receive_Data[9];
|
|
|
+ hunyun_position_H = (hunyun_position_H<<8) + g_ucUart1_Receive_Data[10];
|
|
|
+ hunyun_position_L= g_ucUart1_Receive_Data[11];
|
|
|
+ hunyun_position_L= (hunyun_position_L<<8) + g_ucUart1_Receive_Data[12];
|
|
|
+ hunyun_position_L= (hunyun_position_L<<8) + g_ucUart1_Receive_Data[13];
|
|
|
+ hunyun_times=g_ucUart1_Receive_Data[16];
|
|
|
+ hunyun_times=(hunyun_times<<8) + g_ucUart1_Receive_Data[17];
|
|
|
+ ulspeed=g_ucUart1_Receive_Data[14];
|
|
|
+ ulspeed=( ulspeed<<8) + g_ucUart1_Receive_Data[15];
|
|
|
+ Command_Status= cleaning;
|
|
|
+ step=1;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ }
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case set_time:
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[5];
|
|
|
+ if(u8_data1<60)
|
|
|
+ {
|
|
|
+ u8_data2=u8_data1%10;
|
|
|
+ u8_data3=(unsigned char)(u8_data1/10);
|
|
|
+ u8_data1= (u8_data3<<4)+u8_data2;
|
|
|
+ real_time_write(0x02,u8_data1);
|
|
|
+ }
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[6];
|
|
|
+ if(u8_data1<60)
|
|
|
+ {
|
|
|
+ u8_data2=u8_data1%10;
|
|
|
+ u8_data3=(unsigned char)(u8_data1/10);
|
|
|
+ u8_data1= (u8_data3<<4)+u8_data2;
|
|
|
+ real_time_write(0x03,u8_data1);
|
|
|
+ }
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[7];
|
|
|
+ if(u8_data1<24)
|
|
|
+ {
|
|
|
+ u8_data2=u8_data1%10;
|
|
|
+ u8_data3=(unsigned char)(u8_data1/10);
|
|
|
+ u8_data1= (u8_data3<<4)+u8_data2;
|
|
|
+ real_time_write(0x04,u8_data1);
|
|
|
+ }
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[8];
|
|
|
+ if(u8_data1<32&&u8_data1>0)
|
|
|
+ {
|
|
|
+ u8_data2=u8_data1%10;
|
|
|
+ u8_data3=(unsigned char)(u8_data1/10);
|
|
|
+ u8_data1= (u8_data3<<4)+u8_data2;
|
|
|
+ real_time_write(0x05,u8_data1);
|
|
|
+ }
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[9];
|
|
|
+ if(u8_data1<7)
|
|
|
+ {
|
|
|
+ real_time_write(0x06,u8_data1);
|
|
|
+ }
|
|
|
+ else if(u8_data1==7)
|
|
|
+ {
|
|
|
+ u8_data1= 0;
|
|
|
+ real_time_write(0x06,u8_data1);
|
|
|
+ }
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[10];
|
|
|
+ if(u8_data1<13&&u8_data1>0)
|
|
|
+ {
|
|
|
+ u8_data2=u8_data1%10;
|
|
|
+ u8_data3=(unsigned char)(u8_data1/10);
|
|
|
+ u8_data1= (u8_data3<<4)+u8_data2;
|
|
|
+ real_time_write(0x07,u8_data1);
|
|
|
+ }
|
|
|
+ u8_data1=g_ucUart1_Receive_Data[11];
|
|
|
+ if(u8_data1<100&&u8_data1>0)
|
|
|
+ {
|
|
|
+ u8_data2=u8_data1%10;
|
|
|
+ u8_data3= (unsigned char)(u8_data1/10);
|
|
|
+ u8_data1= (u8_data3<<4)+u8_data2;
|
|
|
+ real_time_write(0x08,u8_data1);
|
|
|
+ }
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = 0;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case real_time:
|
|
|
+ u8_data1=real_time_read(0x02);
|
|
|
+ u8_data2=u8_data1>>7;
|
|
|
+ if(u8_data2==1)
|
|
|
+ {
|
|
|
+ u8_data3=((u8_data1-128)>>4)*10+(u8_data1& 0x0f);
|
|
|
+ }
|
|
|
+ else if(u8_data2==0)
|
|
|
+ {
|
|
|
+ u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);
|
|
|
+ }
|
|
|
+ g_ucUart1_Send_Data[6]=u8_data3;//sec
|
|
|
+ g_ucUart1_Send_Data[5]=u8_data2;
|
|
|
+
|
|
|
+ u8_data1=real_time_read(0x03);
|
|
|
+ u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);
|
|
|
+ g_ucUart1_Send_Data[7]=u8_data3;//min
|
|
|
+
|
|
|
+ u8_data1=real_time_read(0x04);
|
|
|
+ u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);
|
|
|
+ g_ucUart1_Send_Data[8]=u8_data3;//hour
|
|
|
+
|
|
|
+ u8_data1=real_time_read(0x05);
|
|
|
+ u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);
|
|
|
+ g_ucUart1_Send_Data[9]=u8_data3;//date
|
|
|
+
|
|
|
+ u8_data1=real_time_read(0x06);
|
|
|
+ if(u8_data1==0)
|
|
|
+ {
|
|
|
+ u8_data3=7;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ u8_data3=u8_data1;
|
|
|
+ }
|
|
|
+ g_ucUart1_Send_Data[10]=u8_data3;
|
|
|
+
|
|
|
+ u8_data1=real_time_read(0x07);
|
|
|
+ u8_data2=u8_data1>>7;
|
|
|
+ if(u8_data2==1)
|
|
|
+ {
|
|
|
+ u8_data3=((u8_data1-128)>>4)*10+(u8_data1& 0x0f);
|
|
|
+ }
|
|
|
+ else if(u8_data2==0)
|
|
|
+ {
|
|
|
+ u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);
|
|
|
+ }
|
|
|
+ g_ucUart1_Send_Data[11]=u8_data3;
|
|
|
+
|
|
|
+ u8_data1=real_time_read(0x08);
|
|
|
+ if(u8_data2==1)
|
|
|
+ {
|
|
|
+ u16_data1=1900+(u8_data1>>4)*10+(u8_data1& 0x0f);
|
|
|
+ }
|
|
|
+ else if(u8_data2==0)
|
|
|
+ {
|
|
|
+ u16_data1=2000+(u8_data1>>4)*10+(u8_data1& 0x0f);
|
|
|
+ }
|
|
|
+ g_ucUart1_Send_Data[12] = (u16_data1 & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[13] = u16_data1 & 0xff;
|
|
|
+ g_uiFrmLth=16;
|
|
|
+ g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart1_Send_Data[FRAME_NO_INDEX] = 0;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS1_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ g_ucUART1_flag = 0;
|
|
|
+ g_uiUart1_No = 0;
|
|
|
+ g_ucHeaderFlag1 = 0;
|
|
|
+ memset(g_ucUart1_Receive_Data,0,g_uiLth*sizeof(unsigned char));
|
|
|
+ g_BUSY = 0;
|
|
|
+ }
|
|
|
+ if(g_ucUART2_flag == 1)
|
|
|
+ {
|
|
|
+ u16_data1=0;
|
|
|
+ Motor_Status = 0x00;
|
|
|
+ EE_STATUS=0;
|
|
|
+ if(1)
|
|
|
+ {
|
|
|
+ switch(g_ucCMD)
|
|
|
+ {
|
|
|
+ case HELLO:
|
|
|
+ g_uiFrmLth = HELLO_ASK_LTH;
|
|
|
+ CalculateSModelLine(g_uiReagentMotorPeriod2, ACC_pulse2, REAGENT_MOTOR_FREQMAX2, REAGENT_MOTOR_FREQMIN2, REAGENT_MOTOR_XFLEXIBLE2);//计算加减速曲线
|
|
|
+ g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart2_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX+1] = (SoftVersion & 0xff0000)>>16;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX+2] = (SoftVersion & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX+3] = SoftVersion & 0xff;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart2_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS2_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /*******************************/
|
|
|
+
|
|
|
+ /****************************************************/
|
|
|
+ case MCU_RESET:
|
|
|
+ Reset_flag=1;
|
|
|
+ g_uiFrmLth = HELLO_ASK_LTH-3;
|
|
|
+ g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart2_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart2_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS2_Ack(g_uiFrmLth);
|
|
|
+ Delay1ms(5);
|
|
|
+ asm("Reset");
|
|
|
+ break;
|
|
|
+ /***************************************************/
|
|
|
+ case SET_IO:
|
|
|
+ ucIOindex = g_ucUart2_Receive_Data[FRAME_LTHL_INDEX+1];
|
|
|
+ ucIOstate =g_ucUart2_Receive_Data[FRAME_LTHL_INDEX+2];
|
|
|
+ SetIO(ucIOindex,ucIOstate);
|
|
|
+ g_uiFrmLth = SETIO_ASK_LTH;
|
|
|
+ g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart2_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX+1] = ucIOstate;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart2_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS2_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /********************************************0x05**********/
|
|
|
+ case GET_IO:
|
|
|
+ ucIOindex = g_ucUart2_Receive_Data[5];
|
|
|
+ Get_IOstate = Get_IO(ucIOindex);
|
|
|
+ g_uiFrmLth = SETIO_ASK_LTH;
|
|
|
+ g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart2_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;//
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;//
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX+1] = Get_IOstate;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart2_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS2_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /***************************************/
|
|
|
+ case SET_Temperature:
|
|
|
+ u8_data1=g_ucUart2_Receive_Data[7];
|
|
|
+ u16_data1 = g_ucUart2_Receive_Data[5];
|
|
|
+ u16_data1 = (u16_data1<<8) + g_ucUart2_Receive_Data[6];
|
|
|
+ if(u8_data1<5)
|
|
|
+ {
|
|
|
+ set_Target_temp[u8_data1-1]=u16_data1;
|
|
|
+ }
|
|
|
+ g_uiFrmLth = PWM_ASK_LTH;
|
|
|
+ g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart2_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX+1] = u8_data1;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart2_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS2_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /************************************0x08***************/
|
|
|
+ case READ_SET_Temperature:
|
|
|
+ u8_data1=g_ucUart2_Receive_Data[5];
|
|
|
+ if(u8_data1<5)
|
|
|
+ {
|
|
|
+ u16_data1=set_Target_temp[u8_data1-1];
|
|
|
+ }
|
|
|
+ g_uiFrmLth = (SETIO_ASK_LTH + 1);
|
|
|
+ g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart2_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX+1] = ( u16_data1 & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX+2] = u16_data1 & 0xff;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart2_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS2_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /*****************************0X09******************/
|
|
|
+ case GET_Actual_Temperature:
|
|
|
+ u8_data1=g_ucUart2_Receive_Data[5];
|
|
|
+ if(u8_data1<5)
|
|
|
+ {
|
|
|
+ u16_data1=Actual_temp[u8_data1-1];
|
|
|
+ }
|
|
|
+ g_uiFrmLth = 9 ;
|
|
|
+ g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart2_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX+1] = (u16_data1 & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX+2] = u16_data1 & 0xff;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart2_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS2_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /********************************0x10**************/
|
|
|
+ case GET_TemperatureAD:
|
|
|
+ u8_data1=g_ucUart2_Receive_Data[5];
|
|
|
+ if(u8_data1<5)
|
|
|
+ {
|
|
|
+ u16_data1=g_ulAD_Tempbuff[u8_data1-1];
|
|
|
+ }
|
|
|
+ g_uiFrmLth = (SETIO_ASK_LTH + 1) ;
|
|
|
+ g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart2_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX+1] = (u16_data1 & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX+2] = u16_data1 & 0xff;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart2_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS2_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /*********************************0xc0**************/
|
|
|
+ case READ_EEPROM:
|
|
|
+ uiEE_address = g_ucUart2_Receive_Data[FRAME_EEPROM_INDEX];//7
|
|
|
+ uiEE_address = ((uiEE_address << 8) + g_ucUart2_Receive_Data[FRAME_EEPROM_INDEX+1]);//8
|
|
|
+ Eeprom_Len = g_ucUart2_Receive_Data[FRAME_EEPROM_INDEX+2];//9
|
|
|
+ Eeprom_Len = ((Eeprom_Len << 8) + g_ucUart2_Receive_Data[FRAME_EEPROM_INDEX+3]);//10
|
|
|
+ if(Eeprom_Len>=50)
|
|
|
+ { Eeprom_Len=50;}
|
|
|
+ if((uiEE_address >= 0x00 )&&(uiEE_address <= 1048576))
|
|
|
+ {
|
|
|
+ EE_StrRead(uiEE_address,ucEE_buffer,Eeprom_Len);
|
|
|
+ EE_STATUS = 0x00;
|
|
|
+ for( i=0;i<Eeprom_Len;i++)
|
|
|
+ {
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX+1+i] = ucEE_buffer[i];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ g_uiFrmLth = (SETIO_ASK_LTH_EEPROM + Eeprom_Len);
|
|
|
+ g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart2_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = EE_STATUS;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS2_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /***************************写入EEPROM**********************0xd0**************/
|
|
|
+ case WRITE_EEPROM:
|
|
|
+ Eeprom_Len=g_ucUart2_Receive_Data[FRAME_LTHH_INDEX];
|
|
|
+ Eeprom_Len=(Eeprom_Len<<8)+g_ucUart2_Receive_Data[FRAME_LTHL_INDEX];
|
|
|
+ Eeprom_Len=Eeprom_Len-9;
|
|
|
+ uiEE_address = g_ucUart2_Receive_Data[FRAME_EEPROM_INDEX];
|
|
|
+ uiEE_address = ((uiEE_address << 8) + g_ucUart2_Receive_Data[FRAME_EEPROM_INDEX+1]);
|
|
|
+ if(Eeprom_Len>=50)
|
|
|
+ { Eeprom_Len=50;}
|
|
|
+ if((uiEE_address >= 0x00 )&&(uiEE_address <= 0x1048576))
|
|
|
+ {
|
|
|
+ for(i=0;i<Eeprom_Len;i++)
|
|
|
+ {
|
|
|
+ ucEE_buffer[i]=g_ucUart2_Receive_Data[FRAME_EEPROM_INDEX+2+i];
|
|
|
+ }
|
|
|
+ if(uiEE_address <= 1048576)
|
|
|
+ {
|
|
|
+ EE_StrWrite(uiEE_address,ucEE_buffer,Eeprom_Len);
|
|
|
+ EE_STATUS = 0x00;
|
|
|
+ }
|
|
|
+ Read_Sys_EE();
|
|
|
+ if(uiEE_address == 0X0500)
|
|
|
+ {
|
|
|
+ CalculateSModelLine(g_uiReagentMotorPeriod2, ACC_pulse2, REAGENT_MOTOR_FREQMAX2, REAGENT_MOTOR_FREQMIN2, REAGENT_MOTOR_XFLEXIBLE2);//计算加减速曲线
|
|
|
+ }
|
|
|
+ }
|
|
|
+ g_uiFrmLth = SETIO_ASK_LTH_EEPROM ;
|
|
|
+ g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart2_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth ;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = EE_STATUS;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS2_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /**************************************0x30**************/
|
|
|
+ case MT_RESET:
|
|
|
+ g_uiFrmLth = HELLO_ASK_LTH-3;
|
|
|
+ ucMOTOR_move_select = g_ucUart2_Receive_Data[5];
|
|
|
+ if(ucMOTOR_move_select == 1) Motor1Home(Motor1.Back_Pulse,Motor1.Reset_Speed,Motor1.Reset_Speed);
|
|
|
+ else if(ucMOTOR_move_select == 2) Motor2Home(Motor2.Back_Pulse,Motor2.Reset_Speed,Motor2.Reset_Speed);
|
|
|
+ else if(ucMOTOR_move_select == 3) Motor3Home(Motor3.Back_Pulse,Motor3.Reset_Speed,Motor3.Reset_Speed);
|
|
|
+ else if(ucMOTOR_move_select == 4) Motor4Home(Motor4.Back_Pulse,Motor4.Reset_Speed,Motor4.Reset_Speed);
|
|
|
+// else Motor_Status = 0x03;
|
|
|
+ g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart2_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = Motor_Status;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS2_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /*************************************0x31**************/
|
|
|
+ case MT_FORWARD:
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ ucMOTOR_move_select = g_ucUart2_Receive_Data[10];
|
|
|
+ ulPulse = g_ucUart2_Receive_Data[5];
|
|
|
+ ulPulse = (ulPulse<<8) + g_ucUart2_Receive_Data[6];
|
|
|
+ ulPulse = (ulPulse<<8) + g_ucUart2_Receive_Data[7];
|
|
|
+ u16_data1=g_ucUart2_Receive_Data[8];
|
|
|
+ u16_data1=(u16_data1<<8)+g_ucUart2_Receive_Data[9];
|
|
|
+ if (ucMOTOR_move_select == 1)
|
|
|
+ {
|
|
|
+
|
|
|
+ Motor1.Moving_Speed=u16_data1;
|
|
|
+ Motor1Move(ulPulse,!Motor1.Reset_Direction,Motor1.Moving_Speed);
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ }
|
|
|
+ else if(ucMOTOR_move_select == 2)
|
|
|
+ {
|
|
|
+
|
|
|
+ Motor2.Moving_Speed=u16_data1;
|
|
|
+ Motor2Move(ulPulse,!Motor2.Reset_Direction,Motor2.Moving_Speed);
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ }
|
|
|
+ else if(ucMOTOR_move_select == 3)
|
|
|
+ {
|
|
|
+
|
|
|
+ Motor3.Moving_Speed=u16_data1;
|
|
|
+ Motor3Move(ulPulse,!Motor3.Reset_Direction,Motor3.Moving_Speed);;
|
|
|
+ }
|
|
|
+ else if(ucMOTOR_move_select == 4)
|
|
|
+ {
|
|
|
+
|
|
|
+ Motor4.Moving_Speed=u16_data1;
|
|
|
+ Motor4Move(ulPulse,!Motor4.Reset_Direction,Motor4.Moving_Speed);;
|
|
|
+ }
|
|
|
+ g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart2_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = Motor_Status;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS2_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /*****************************************0x32**************/
|
|
|
+ case MT_REVERSAL:
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ ucMOTOR_move_select = g_ucUart2_Receive_Data[10];
|
|
|
+ ulPulse = g_ucUart2_Receive_Data[5];
|
|
|
+ ulPulse = (ulPulse<<8) + g_ucUart2_Receive_Data[6];
|
|
|
+ ulPulse = (ulPulse<<8) + g_ucUart2_Receive_Data[7];
|
|
|
+ u16_data1=g_ucUart2_Receive_Data[8];
|
|
|
+ u16_data1=(u16_data1<<8)+g_ucUart2_Receive_Data[9];
|
|
|
+ if (ucMOTOR_move_select == 1)
|
|
|
+ {
|
|
|
+ Motor1.Moving_Speed=u16_data1;
|
|
|
+ Motor1Move(ulPulse,Motor1.Reset_Direction,Motor1.Moving_Speed);
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ }
|
|
|
+ else if(ucMOTOR_move_select == 2)
|
|
|
+ {
|
|
|
+
|
|
|
+ Motor2.Moving_Speed=u16_data1;
|
|
|
+ Motor2Move(ulPulse,Motor2.Reset_Direction,Motor2.Moving_Speed);
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ }
|
|
|
+ else if(ucMOTOR_move_select == 3)
|
|
|
+ {
|
|
|
+
|
|
|
+ Motor3.Moving_Speed=u16_data1;
|
|
|
+ Motor3Move(ulPulse,Motor3.Reset_Direction,Motor3.Moving_Speed);
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ }
|
|
|
+ else if(ucMOTOR_move_select == 4)
|
|
|
+ {
|
|
|
+
|
|
|
+ Motor4.Moving_Speed=u16_data1;
|
|
|
+ Motor4Move(ulPulse,Motor4.Reset_Direction,Motor4.Moving_Speed);
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ }
|
|
|
+ g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart2_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = Motor_Status;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS2_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ /************************************0x33**************/
|
|
|
+ case MT_MOVE_TO:
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ ucMOTOR_move_select = g_ucUart2_Receive_Data[10];
|
|
|
+ ulPulse = g_ucUart2_Receive_Data[5];
|
|
|
+ ulPulse = (ulPulse<<8) + g_ucUart2_Receive_Data[6];
|
|
|
+ ulPulse = (ulPulse<<8) + g_ucUart2_Receive_Data[7];
|
|
|
+ u16_data1=g_ucUart2_Receive_Data[8];
|
|
|
+ u16_data1=(u16_data1<<8)+g_ucUart2_Receive_Data[9];
|
|
|
+ if (ucMOTOR_move_select == 1)
|
|
|
+ {
|
|
|
+ Motor1.Moving_Speed=u16_data1;
|
|
|
+ Motor1MoveTo(ulPulse,Motor1.Moving_Speed);
|
|
|
+ }
|
|
|
+ else if(ucMOTOR_move_select == 2)
|
|
|
+ {
|
|
|
+ Motor2.Moving_Speed=u16_data1;
|
|
|
+ Motor2MoveTo(ulPulse,Motor2.Moving_Speed);
|
|
|
+ }
|
|
|
+ else if(ucMOTOR_move_select == 3)
|
|
|
+ {
|
|
|
+ Motor3.Moving_Speed=u16_data1;
|
|
|
+ Motor3MoveTo(ulPulse,Motor3.Moving_Speed);
|
|
|
+ }
|
|
|
+ else if(ucMOTOR_move_select == 4)
|
|
|
+ {
|
|
|
+ Motor4.Moving_Speed=u16_data1;
|
|
|
+ Motor4MoveTo(ulPulse,Motor4.Moving_Speed);
|
|
|
+ }
|
|
|
+ g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart2_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = Motor_Status;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS2_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case GET_MOTOR_POSITION :
|
|
|
+ u8_data1=g_ucUart2_Receive_Data[5];
|
|
|
+ if(u8_data1<4)
|
|
|
+ {
|
|
|
+ switch(u8_data1)
|
|
|
+ {
|
|
|
+ case 1 : u16_data1= g_tReagentMotorParam.ulXiPosition; break;
|
|
|
+ case 2 : u16_data1= g_tReagentMotorParam.ulZiPosition; break;
|
|
|
+ case 3 : u16_data1=g_tReagentMotorParam.ulZ1iPosition; break;
|
|
|
+ case 4 : u16_data1=g_tReagentMotorParam.ul4iPosition; break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ g_uiFrmLth = (SETIO_ASK_LTH + 1);
|
|
|
+ g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart2_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX+1] = (u16_data1 & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX+2] = u16_data1 & 0xff;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart2_Send_Data,g_uiFrmLth-1);
|
|
|
+ RS2_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case GET_MOTOR_SPEED :
|
|
|
+ u8_data1=g_ucUart2_Receive_Data[5];
|
|
|
+ switch(u8_data1)
|
|
|
+ {
|
|
|
+ case 1 : u16_data1=g_tReagentMotorParam.uiXSpeed; break;
|
|
|
+ case 2 : u16_data1=g_tReagentMotorParam.uiZSpeed; break;
|
|
|
+ case 3 : u16_data1=g_tReagentMotorParam.uiZ1Speed; break;
|
|
|
+ case 4 : u16_data1=g_tReagentMotorParam.ui4Speed; break;
|
|
|
+ }
|
|
|
+ g_uiFrmLth = (SETIO_ASK_LTH + 1);
|
|
|
+ g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart2_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX+1] = (u16_data1 & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX+2] = u16_data1 & 0xff;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS2_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case ENTERING_THE_WAREHOUSE :
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ Motor4Home(Motor4.Back_Pulse,Motor4.Reset_Speed,Motor4.Reset_Speed);
|
|
|
+ Motor2Home(Motor2.Back_Pulse,Motor2.Reset_Speed,Motor2.Reset_Speed);
|
|
|
+ Motor3Home(Motor3.Back_Pulse,Motor3.Reset_Speed,Motor3.Reset_Speed);
|
|
|
+ Motor1Home(Motor1.Back_Pulse,Motor1.Reset_Speed,Motor1.Reset_Speed);
|
|
|
+ g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart2_Send_Data[FRAME_NO_INDEX] = Device_ID;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = Motor_Status;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS2_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case OUT_THE_WAREHOUSE :
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ Motor4MoveTo(0,Ci_normal_speed);
|
|
|
+ Motor3MoveTo(0,Ci_normal_speed);
|
|
|
+ Motor2MoveTo(0,Z_normal_speed);
|
|
|
+ Motor1MoveTo(getting_out_position1,getting_out_speedX);
|
|
|
+ g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart2_Send_Data[FRAME_NO_INDEX] = ucMOTOR_move_select;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = Motor_Status;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS2_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case move_to_well :
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ u8_data1=g_ucUart2_Receive_Data[5];
|
|
|
+ Motor2MoveTo(0,Z_normal_speed);
|
|
|
+ if(Motor_Status==0)
|
|
|
+ {
|
|
|
+ switch(u8_data1)
|
|
|
+ {
|
|
|
+ case 1 :
|
|
|
+ Motor1MoveTo(well_position1,X_normal_speed);
|
|
|
+ break;
|
|
|
+ case 2 :
|
|
|
+ Motor1MoveTo(well_position2,X_normal_speed);
|
|
|
+ break;
|
|
|
+ case 3 :
|
|
|
+ Motor1MoveTo(well_position3,X_normal_speed);
|
|
|
+ break;
|
|
|
+ case 4 :
|
|
|
+ Motor1MoveTo(well_position4,X_normal_speed);
|
|
|
+ break;
|
|
|
+ case 5 :
|
|
|
+ Motor1MoveTo(well_position5,X_normal_speed);
|
|
|
+ break;
|
|
|
+ case 6 :
|
|
|
+ Motor1MoveTo(well_position6,X_normal_speed);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart2_Send_Data[FRAME_NO_INDEX] = ucMOTOR_move_select;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = Motor_Status;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS2_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case magnetic_sleeve_on :
|
|
|
+
|
|
|
+ break;
|
|
|
+ case magnetic_sleeve_off :
|
|
|
+
|
|
|
+ break;
|
|
|
+ case magnetic_adsorption :
|
|
|
+
|
|
|
+ break;
|
|
|
+ case qu_ci_zhu :
|
|
|
+
|
|
|
+ break;
|
|
|
+ case jie_he_qing_xi:
|
|
|
+
|
|
|
+ break;
|
|
|
+ case xi_tuo:
|
|
|
+
|
|
|
+ break;
|
|
|
+ case pause:
|
|
|
+ if(Command_Status>0)
|
|
|
+ {
|
|
|
+ pause_flag=1;
|
|
|
+ m_Command_Status=Command_Status;
|
|
|
+ m_step=step;
|
|
|
+ m_position_X=g_tReagentMotorParam.ulXiPosition;
|
|
|
+ m_position_Z= g_tReagentMotorParam.ulZiPosition;
|
|
|
+ m_position_Z1= g_tReagentMotorParam.ulZ1iPosition;
|
|
|
+ m_count_S=count_S;
|
|
|
+ m_liquid_volume=liquid_volume;
|
|
|
+ m_xi_ci_spd=xi_ci_spd,
|
|
|
+ m_hunyun_spd=hunyun_spd;
|
|
|
+ m_hunyun_time=hunyun_time;
|
|
|
+ m_xi_ci_time=xi_ci_time;
|
|
|
+ Command_Status=0;
|
|
|
+ step=0;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart2_Send_Data[FRAME_NO_INDEX] = 0;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS2_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case run_after_pause:
|
|
|
+ if(Command_Status>0)
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if(pause_flag==1)
|
|
|
+ {
|
|
|
+ if(m_position_X==g_tReagentMotorParam.ulXiPosition)
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Motor2Home(Motor2.Back_Pulse,Motor2.Reset_Speed,Motor2.Reset_Speed);
|
|
|
+ Motor1MoveTo(m_position_X,X_normal_speed);
|
|
|
+ }
|
|
|
+ Motor2MoveTo(m_position_Z,Z_normal_speed);
|
|
|
+ Motor3MoveTo(m_position_Z1,Ci_normal_speed);
|
|
|
+ Command_Status=m_Command_Status;
|
|
|
+ step=m_step;
|
|
|
+ count_S=m_count_S;
|
|
|
+ liquid_volume=m_liquid_volume;
|
|
|
+ xi_ci_spd=m_xi_ci_spd,
|
|
|
+ hunyun_spd=m_hunyun_spd;
|
|
|
+ hunyun_time=m_hunyun_time;
|
|
|
+ xi_ci_time=m_xi_ci_time;
|
|
|
+ pause_flag=0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart2_Send_Data[FRAME_NO_INDEX] = 0;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS2_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case set_time:
|
|
|
+ u8_data1=g_ucUart2_Receive_Data[5];
|
|
|
+ if(u8_data1<60)
|
|
|
+ {
|
|
|
+ u8_data2=u8_data1%10;
|
|
|
+ u8_data3=(unsigned char)(u8_data1/10);
|
|
|
+ u8_data1= (u8_data3<<4)+u8_data2;
|
|
|
+ real_time_write(0x02,u8_data1);
|
|
|
+ }
|
|
|
+ u8_data1=g_ucUart2_Receive_Data[6];
|
|
|
+ if(u8_data1<60)
|
|
|
+ {
|
|
|
+ u8_data2=u8_data1%10;
|
|
|
+ u8_data3=(unsigned char)(u8_data1/10);
|
|
|
+ u8_data1= (u8_data3<<4)+u8_data2;
|
|
|
+ real_time_write(0x03,u8_data1);
|
|
|
+ }
|
|
|
+ u8_data1=g_ucUart2_Receive_Data[7];
|
|
|
+ if(u8_data1<24)
|
|
|
+ {
|
|
|
+ u8_data2=u8_data1%10;
|
|
|
+ u8_data3=(unsigned char)(u8_data1/10);
|
|
|
+ u8_data1= (u8_data3<<4)+u8_data2;
|
|
|
+ real_time_write(0x04,u8_data1);
|
|
|
+ }
|
|
|
+ u8_data1=g_ucUart2_Receive_Data[8];
|
|
|
+ if(u8_data1<32&&u8_data1>0)
|
|
|
+ {
|
|
|
+ u8_data2=u8_data1%10;
|
|
|
+ u8_data3=(unsigned char)(u8_data1/10);
|
|
|
+ u8_data1= (u8_data3<<4)+u8_data2;
|
|
|
+ real_time_write(0x05,u8_data1);
|
|
|
+ }
|
|
|
+ u8_data1=g_ucUart2_Receive_Data[9];
|
|
|
+ if(u8_data1<7)
|
|
|
+ {
|
|
|
+ real_time_write(0x06,u8_data1);
|
|
|
+ }
|
|
|
+ else if(u8_data1==7)
|
|
|
+ {
|
|
|
+ u8_data1= 0;
|
|
|
+ real_time_write(0x06,u8_data1);
|
|
|
+ }
|
|
|
+ u8_data1=g_ucUart2_Receive_Data[10];
|
|
|
+ if(u8_data1<13&&u8_data1>0)
|
|
|
+ {
|
|
|
+ u8_data2=u8_data1%10;
|
|
|
+ u8_data3=(unsigned char)(u8_data1/10);
|
|
|
+ u8_data1= (u8_data3<<4)+u8_data2;
|
|
|
+ real_time_write(0x07,u8_data1);
|
|
|
+ }
|
|
|
+ u8_data1=g_ucUart2_Receive_Data[11];
|
|
|
+ if(u8_data1<100&&u8_data1>0)
|
|
|
+ {
|
|
|
+ u8_data2=u8_data1%10;
|
|
|
+ u8_data3= (unsigned char)(u8_data1/10);
|
|
|
+ u8_data1= (u8_data3<<4)+u8_data2;
|
|
|
+ real_time_write(0x08,u8_data1);
|
|
|
+ }
|
|
|
+ g_uiFrmLth= HELLO_ASK_LTH-3;
|
|
|
+ g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart2_Send_Data[FRAME_NO_INDEX] = 0;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS2_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ case real_time:
|
|
|
+ u8_data1=real_time_read(0x02);
|
|
|
+ u8_data2=u8_data1>>7;
|
|
|
+ if(u8_data2==1)
|
|
|
+ {
|
|
|
+ u8_data3=((u8_data1-128)>>4)*10+(u8_data1& 0x0f);
|
|
|
+ }
|
|
|
+ else if(u8_data2==0)
|
|
|
+ {
|
|
|
+ u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);
|
|
|
+ }
|
|
|
+ g_ucUart2_Send_Data[6]=u8_data3;
|
|
|
+ g_ucUart2_Send_Data[5]=u8_data2;
|
|
|
+
|
|
|
+ u8_data1=real_time_read(0x03);
|
|
|
+ u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);
|
|
|
+ g_ucUart2_Send_Data[7]=u8_data3;
|
|
|
+
|
|
|
+ u8_data1=real_time_read(0x04);
|
|
|
+ u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);
|
|
|
+ g_ucUart2_Send_Data[8]=u8_data3;
|
|
|
+
|
|
|
+ u8_data1=real_time_read(0x05);
|
|
|
+ u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);
|
|
|
+ g_ucUart2_Send_Data[9]=u8_data3;
|
|
|
+
|
|
|
+ u8_data1=real_time_read(0x06);
|
|
|
+ if(u8_data1==0)
|
|
|
+ {
|
|
|
+ u8_data3=7;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ u8_data3=u8_data1;
|
|
|
+ }
|
|
|
+ g_ucUart2_Send_Data[10]=u8_data3;
|
|
|
+
|
|
|
+ u8_data1=real_time_read(0x07);
|
|
|
+ u8_data2=u8_data1>>7;
|
|
|
+ if(u8_data2==1)
|
|
|
+ {
|
|
|
+ u8_data3=((u8_data1-128)>>4)*10+(u8_data1& 0x0f);
|
|
|
+ }
|
|
|
+ else if(u8_data2==0)
|
|
|
+ {
|
|
|
+ u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);
|
|
|
+ }
|
|
|
+ g_ucUart2_Send_Data[11]=u8_data3;
|
|
|
+
|
|
|
+ u8_data1=real_time_read(0x08);
|
|
|
+ if(u8_data2==1)
|
|
|
+ {
|
|
|
+ u16_data1=1900+(u8_data1>>4)*10+(u8_data1& 0x0f);
|
|
|
+ }
|
|
|
+ else if(u8_data2==0)
|
|
|
+ {
|
|
|
+ u16_data1=2000+(u8_data1>>4)*10+(u8_data1& 0x0f);
|
|
|
+ }
|
|
|
+ g_ucUart2_Send_Data[12] = (u16_data1 & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[13] = u16_data1 & 0xff;
|
|
|
+ g_uiFrmLth=16;
|
|
|
+ g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
|
|
|
+ g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
|
|
|
+ g_ucUart2_Send_Data[FRAME_NO_INDEX] = 0;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
|
|
|
+ g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
|
|
|
+ g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1)&0xff;
|
|
|
+ RS2_Ack(g_uiFrmLth);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+ g_ucUART2_flag=0;
|
|
|
+ g_uiUart2_No = 0;
|
|
|
+ g_ucHeaderFlag2 = 0;
|
|
|
+ memset(g_ucUart2_Receive_Data,0,g_uiLth2*sizeof(unsigned char));
|
|
|
+ g_BUSY2 = 0;
|
|
|
+ }
|
|
|
+}
|