⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 function.c

📁 基于Cortex-M3的全自动焊接机
💻 C
📖 第 1 页 / 共 5 页
字号:
#include  "function.h"
#include  "systemInit.h"
#include  "ZLG7290.h"
#include  "LM3S_I2CM.h"
#include  "24C16.h"
#include  "delay.h"
#include  "check.h"
#include  "LED.H"
#include  "LM3S_UART.H"
#include  "tmp101.h"
#include  "math.h"


unsigned  char Seg_Flag = 0;     // 设置数码管的位标志 
unsigned  char lowseg_num = 5;
unsigned char  Songsi_data = 0x80,Fuchuan_data = 0x02;

unsigned char cBuf[2]={0};//即便只写入一个数据也必须设置此数组为2元素,而不能只是设定一个指针变量

unsigned char FlagINT=0;        //7290中断标志位,有按键按下时为1,否则为0
unsigned char KeyValue[2]={0};           //7290键值数据暂存,具体键值存在KeyValue[0]中
unsigned char FnKeyValue[2]={0};

unsigned char read24C16_mode = 0;//四种模式标志位

unsigned char MOde_flag = 0;     //模式标识位
bool Set_flag=0;                 //设置状态标志
bool Look_flag = 0;               //参数查看标志
signed char Mode_Code = 0;   //用于参数查看中   显示的模式代码   当Mode_Code为0时为单道焊模式 Mode_Code为1时为横纹焊模式  Mode_Code为2时为横摆动焊  Mode_Code为3时为设备参数  Mode_Code为5时为报警和故障代码
signed char Mode_sequence = 0;//用于参数查看中  显示该种模式下的序列号  
unsigned char Function_Num = 0;  //每种模式下的行值 取值范围是 0 -140
signed char Error_Num = 0;

unsigned char Light_Led[2];     //点亮 LED 时的数组缓存,数组第一个有效

unsigned int circle_cnt=0,m=0;  //程序的 循环计数, 在扑捉 按键下降沿时使用
unsigned char Key_Value_Buff[16] = {0,0,0,0,0,0,0,0,    //上,下,左,右,正转,反转,送丝,退丝 按键键值缓存
                                    0,0,0,0,0,0,0,0};     //辅传,送丝,起狐,停弧,焊道 按键键值缓存
                                                        //升降零点,横移零点按键键值缓存    
unsigned char RepeatCnt[2]={0};          //7290 连续计数数据暂存,具体键值存在RepeatCnt[0]中

bool   Key_guzhang;          //面板故障 标志位
bool   Key_baojing;          //面板报警 标志位
bool   Key_shoucaoqi;        //面板手操器 标志位
bool   Key_kongzhixiang;     //面板手操器 标志位

bool   Key_shengjiang_zero;  //面板升降零点 标志位
bool   Key_Set;           //设置参数时开始设置 标志位
bool   Key_Confirm;       //设置参数完成后确认 标志位
bool   Key_Confirm_Up;
bool   Key_Confirm_Down;

bool   Key_Left;         //左 按键
bool   Key_Left_Up;      //左 按键 上升沿标志
bool   Key_Left_Down;    //左 按键 下降沿标志
bool   Key_Right;        //右 按键
bool   Key_Right_Up;     //右 按键 上升沿标志
bool   Key_Right_Down;   //右 按键 下降沿标志
bool   Key_Up;           //上 按键
bool   Key_Up_Up;        //上 按键 上升沿标志
bool   Key_Up_Down;      //上 按键 下降沿标志
bool   Key_Down;         //下 按键
bool   Key_Down_Up;      //下 按键 上升沿标志
bool   Key_Down_Down;    //下 按键 下降沿标志

bool   Key_Mode_hengwen;     //面板上横纹模式 标志位
bool   Key_Mode_dandao;      //面板上单道模式 标志位
bool   Key_Mode_baidong;     //面板上摆动模式 标志位
bool   Key_Mode_other;       //面板上其他模式 标志位
bool   Key_Parameter_show;     //参数显示 标志位
bool   Key_songsi_speed;       //送丝速度按键 标志位
bool   Key_hangqiang_place;    //焊枪位置按键 标志位
bool   Key_hengyi_speed;       //横移速度 标志位
bool   Key_fuchuan_speed;      //辅传速度 标志位
bool   Key_hanjie_wide;        //辅传速度 标志位

bool   Key_qihu;               //起弧按键 标志位
bool   Key_tinghu;             //停弧按键 标志位
bool   Key_fuchuan;           //辅传按键 标志位
bool   Key_songsi;            //送丝按键 标志位
bool   Key_zhengzhuan;        //正传按键 标志位
bool   Key_fanzhuang;         //反转按键 标志位
bool   Key_tuisi;            //退丝按键 标志位
bool   Key_songsi;           //送丝键   标志位
bool   Key_handao;           //面板焊道按键 标志位

bool   Key_fuchuan_Up;        //辅传键 上升沿标志位
bool   Key_fuchuan_Down;        //辅传键 下降沿标志位

bool   Key_songsi_ATorMA_Up;  //送丝按键 上升沿标志位
bool   Key_songsi_ATorMA_Down;  //送丝按键 下降沿标志位

bool   Key_qihu_Up;           //起弧按键 上升沿标志位
bool   Key_qihu_Down;           //起弧按键 下降沿标志位

bool   Key_tinghu_Up;         //停弧按键 上升沿标志位
bool   Key_tinghu_Down;         //停弧按键 下降沿标志位

bool   Key_handao_Up;         //面板焊道按键 上升沿标志位
bool   Key_handao_Down;         //面板焊道按键 下降沿标志位

bool   Key_zhengzhuan_Up;     //正传按键 上升沿标志位
bool   Key_zhengzhuan_Down;   //正传按键 下升沿标志位
bool   Key_fanzhuang_Up;      //反转按键 上升沿标志位
bool   Key_fanzhuang_Down;    //反转按键 下升沿标志位
bool   Key_tuisi_Up;         //退丝按键 上升沿标志位
bool   Key_tuisi_Down;       //退丝按键 下升沿标志位
bool   Key_songsi_Up;        //送丝键   上升沿标志位
bool   Key_songsi_Down;     //送丝键   下升沿标志位


bool   Key_shengjiang_zero_Three;//两秒内按三次标志
bool   Key_shengjiang_zero;    //升降零点 按键 标志位    按两秒不放标志位
bool   Key_shengjiang_zero_Up;    //升降零点 上升沿 标志位
bool   Key_shengjiang_zero_Down;    //升降零点 下升沿 标志位
bool   Key_hengyi_zero_Three;  //两秒内按三次标志   
bool   Key_hengyi_zero;        //横移零点 按键 标志位    按两秒不放标志位
bool   Key_hengyi_zero_Up;    //横移零点 上升沿 标志位
bool   Key_hengyi_zero_Down;  //横移零点 下升沿 标志位

bool   Qihu_LED_Flag = 0;
bool   Tinghu_LED_Flag = 0;


unsigned int Timer0_Num = 0,Timer3_Num = 0,Timer2_Num =0,Timer1_Num =0;//定时器0和定时器3中的数值标志
unsigned char Time_Cnt = 0;
unsigned char TMp101_buf[2]={0,0};   //读取温度值存放数组  


//焊机工艺变量--START
bool   Mode_dandao,Mode_baidong,Mode_hengwen,Mode_other;//各焊接模式
bool   Arc_drv;               //焊机启弧驱动
bool   Arc_drv_Down;          //启弧输出下降沿   Arc_drv从高变低置位
bool   Arc_drv_Up;            //启弧输出上升沿   Arc_drv从低变高

signed int Hengyi_distance_return,Shengjiang_distance_return,Lasi_distance_return;
unsigned char Hengyi_speed_return,Shengjiang_speed_return,Lasi_speed_return;
bool  Hengyi_motor_direct,Shengjiang_motor_direct,Lasi_motor_direct;
bool   Hengyi_motor_run,Shengjiang_motor_run,Lasi_motor_run;
char   Hengyi_motor_zero_direct,Shengjiang_motor_zero_direct;//横移、升降电机系统上电或清零后第一次启动方向,用于回零时决定回零方向

bool   Roll_zero_swtich_up;   //辊面零点接近开关上升沿
bool   Roll_zero_swtich;      //辊面零点接近开关
bool   Estop_switch;          //急停开关
bool   Limit_switch;          //模组限位开关
bool   Alarm_enable;          //报警使能
bool   Gun_position_normal;   //焊枪位置在设定范围内
bool   Handao_position_normal;//焊道位置到达
bool   Roll_speed_normal;     //辊面速度正常
bool   Hanji_current_fault;   //焊机电流故障
bool   Lasi_speed_low_fault;  //拉丝机拒动故障
unsigned int Hanji_current;   //焊机电流

bool   Shengjiang_backto_zero;    //升降位置处于零点,非清零

bool   Hengyi_motor_run;       //横移电机运行
bool   Hengyi_motor_run_Up;       //横移电机运行上升沿
bool   Hengyi_motor_run_Down;       //横移电机运行下升沿
bool   Hengyi_Backzero_delay_ok;//横移提枪回零等待完毕
bool   Hengyi_zero_confirm;     //横移零点确认
bool   Hengyi_backto_zero_up;  //横移位置处于零点,非清零
bool   Hengwenend_stoparc_Up;   //横移结束停弧驱动上升沿
bool   Hengwenend_stoparc;     //横纹结束停弧驱动

bool   Dandao_stoparc;         //单道焊停弧驱动

unsigned int Baidong_right_cnt;//摆动焊右按钮按动次数
unsigned int Baidong_left_cnt; //摆动焊左按钮按动次数
unsigned int Baidong_cross_cnt;//摆动焊跨越次数
unsigned int Baidong_cross_total;//摆动焊跨越总数


bool   Baidong_right_to_left_up;  //摆动焊右到左摆动
bool   Baidong_right_to_left;
bool   Baidong_left_to_right_up;  //摆动焊左到右摆动
bool   Baidong_left_to_right;
bool   Baidong_cross_enable;      //摆动焊跨越使能
bool   Baidong_right_to_left_cross;      //摆动焊左跨越
bool   Baidong_left_to_right_cross;      //摆动焊右跨越
bool   Baidong_right_delay;    //摆动焊右侧停留
bool   Baidong_left_delay;     //摆动焊左侧停留
bool   Baidong_stoparc;     //摆动焊结束停弧驱动

bool   Hengwen_direct_temp;
bool   Baidong_direct_temp;
bool   Dandao_direct_temp;

//临时变量
bool   Temp_bool_1;
bool   Temp_bool_2;
bool   Temp_bool_3;
bool   Temp_bool_4;
bool   Temp_bool_5;
bool   Temp_bool_6;
bool   Temp_bool_7;//启弧后电机启动标志位

//定时器变量
unsigned char   Timer_1;                //横移提枪回零停留时间
unsigned char   Timer_2;                //横纹焊、单道焊、摆动焊结束填弧坑停留时间(共用)
unsigned char   Timer_3;                //启弧后延时判断焊机电流是否正常
unsigned char   Timer_4;                //摆动焊左停留时间
unsigned char   Timer_5;                //摆动焊右停留时间
unsigned char   Timer_6;                //停弧回丝时间
unsigned char   Timer_7;                //拉丝机送丝拒动时间
unsigned char   Timer_8;                //拉丝机加速时间定时器
unsigned char   Timer_9;                //按键上升、下降沿判断延时


//焊机工艺变量--END


//系统显示用的变量
//unsigned char Function_temp = 0;
//unsigned char Mode_temp = 0;
signed int  Confirm_Data = 9999;
unsigned char Place_flag = 0;
unsigned char Songsi_Num = 0,Fuchuan_Num = 0;//辅传和送丝中用到的切换变量
bool  Songsi_flag = 0, Fuchuan_flag = 0;
unsigned char Shengjiang_Zero_Num = 0,Hengyi_Zero_Num = 0;
bool Zero_Flag = 0;//送丝标志位 


bool  Timer0AFlag  =  false;//定时器0A中断完成标志
bool  Timer3AFlag  =  false;
bool  Timer2AFlag  =  false;
unsigned char Timer3_Seg = 0;
unsigned char Timer3_Seg_1 = 0;

bool Re_Flag = 0;

unsigned char   Uart1Buf[16];   //定义UART1缓冲区的长度
bool  Command = 0;        //用于标志是获取数据还是正常工作命令  为0时是获取数据  1时是工作命令
bool Getdata_Flag = 0,Work_Flag = 0;//获取数据和工作命令是否接收标志
unsigned char LED_Data = 0x80;

unsigned char Hengyi_User = 0x0b,Shengjiang_User = 0x0b,Lasi_User = 0x0b;
bool  Hengyi_Direct = 0,Shengjiang_Direct = 0,Lasi_Direct = 0;
bool  Hengyi_Driver = 0,Shengjiang_Driver = 0,Lasi_Driver = 0;
bool  Hengyi_Enable = 0,Shengjiang_Enable = 0,Lasi_Enable = 0;
unsigned char Hengyi_Speed = 0,Shengjiang_Speed = 0,Lasi_Speed = 0;
unsigned int Hengyi_Distance = 0,Shengjiang_Distance = 0,Lasi_Distance = 0;

unsigned char Error_Flag = 0;//获取数据错误标志位
bool  USART_Flag = 0;//执行了一次串口中断标志位
unsigned char Error_Code = 0;//错误代码
bool Open_Receive485 =0;//485接收数据标志位
unsigned char Check_Error_Flag = 0;
unsigned char Error_Table[10]={0,0,0,0,0,0,0,0,0,0};//储存错误信息代码

bool FnKeyDoubleIntFlag=0;  //功能键两次中断标志位

signed int DispPresent_Data_Temp;  //用于实时刷新数码管显示用的暂存值
unsigned char Flash_Num_Temp;  //用于实时刷新数码管显示用的暂存值
unsigned char DisMode_Num_Temp;  //用于实时刷新数码管显示用的暂存值
unsigned char Error_Num_Temp = 0x40;  //用于实时刷新数码管显示用的暂存值

const unsigned int Disp_Char_Code[170] =//每行15个字符
{
  0x0A00, 0X0A01, 0x0A02, 0X0A03, 0x0A04, 0X0A05, 0x0A06, 0X0A07, 0x0A08, 0X0A09, 0x0A0A, 0X0A0B, 0x0A0C, 0X0A0D, 0x0A0E, //单道焊 模式下的数码管显示字符 编码
  0X0A0F, 0x0A10, 0x0A11, 0x0A12, 0x0A13, 0x0A14, 0x0A15, 0x0A16, 0x0A17, 0x0A18, 0x0A19, 0x0A1A, 0x0A1B, 0x0A1C, 0x0A1D, //单道焊 模式下的数码管显示字符 编码
  
  0x0B00, 0X0B01, 0x0B02, 0X0B03, 0x0B04, 0X0B05, 0x0B06, 0X0B07, 0x0B08, 0X0B09, 0x0B0A, 0X0B0B, 0x0B0C, 0X0B0D, 0x0B0E, //横纹焊 模式下的数码管显示字符 编码  
  0X0B0F, 0x0B10, 0x0B11, 0x0B12, 0x0B13, 0x0B14, 0x0B15, 0x0B16, 0x0B17, 0x0B18, 0x0B19, 0x0B1A, 0x0B1B, 0x0B1C, 0x0B1D, //横纹焊 模式下的数码管显示字符 编码  

  0x0C00, 0X0C01, 0x0C02, 0X0C03, 0x0C04, 0X0C05, 0x0C06, 0X0C07, 0x0C08, 0X0C09, 0x0C0A, 0X0C0B, 0x0C0C, 0X0C0D, 0x0C0E, //摆动焊 模式下的数码管显示字符 编码 
  0X0C0F, 0x0C10, 0x0C11, 0x0C12, 0x0C13, 0x0C14, 0x0C15, 0x0C16, 0x0C17, 0x0C18, 0x0C19, 0x0C1A, 0x0C1B, 0x0C1C, 0x0C1D, //摆动焊 模式下的数码管显示字符 编码 

  0x0D00, 0X0D01, 0x0D02, 0X0D03, 0x0D04, 0X0D05, 0x0D06, 0X0D07, 0x0D08, 0X0D09, 0x0D0A, 0X0D0B, 0x0D0C, 0X0D0D, 0x0D0E, //其他焊 模式下的数码管显示字符 编码
  0X0D0F, 0x0D10, 0x0D11, 0x0D12, 0x0D13, 0x0D14, 0x0D15, 0x0D16, 0x0D17, 0x0D18, 0x0D19, 0x0D1A, 0x0D1B, 0x0D1C, 0x0D1D, //其他焊 模式下的数码管显示字符 编码
  
  0x0E00, 0X0E01, 0x0E02, 0X0E03, 0x0E04, 0X0E05, 0x0E06, 0X0E07, 0x0E08, 0X0E09, 0x0E0A, 0X0E0B, 0x0E0C, 0X0E0D, 0x0E0E, //设备参数 模式下的数码管显示字符 编码 
  0x0E0F, 0x0E10, 0x0E11, 0x0E12, 0x0E13, 0x0E14, 0x0E15, 0x0E16, 0x0E17, 0x0E18, 0x0E19, 0x0E1A, 0x0E1B, 0x0E1C, 0x0E1D, //设备参数 模式下的数码管显示字符 编码 
  0x0E1E, 0x0E00, 0X0E01, 0x0E02, 0X0E03, 0x0E04, 0X0E05, 0x0E06, 0X0E07, 0x0E08,//设备参数 模式下的数码管显示字符 编码 
  

  0x0E, 0x18           //报警和故障代码 模式下的数码管显示字符 编码 
  /* 0x0E为数码管显示E    0x18为数码管显示R*/ 
};

signed int DispPresent_Data[170] =//用于存放要显示的所有数据 
{//每行40个
  0,0,0,0,400,0,0,80,20,2000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,//单道焊  30
  0,0,0,0,400,0,2000,300,0,20,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,//横纹焊  30
  0,0,0,0,400,0,0,80,30,30,1,500,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,//摆动焊  30
  0,0,0,0,2000,5,1,1,500,2000,200,10,10,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,//设备参数  40
  0,0,0,0,0,0,0,0,0,0
};   

unsigned char Disp_accuracy[170] =//用于存放数码管显示精度,取值范围为0--3
{
  0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,//单道焊  30

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -