📄 function.c
字号:
#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 + -