/// <summary> /// 根据刀具参数设置激光功率值和频率值 /// </summary> /// <param name="tech_Parameter"></param> /// <returns></returns> private bool Laser_PEC_PEF_Write(Tech_Parameter tech_Parameter) { decimal PEC = 0, PRF = 0; //读取PEC功率值 Program.SystemContainer.Laser_Operation_00.Read("00", "55"); if (!(Program.SystemContainer.Laser_Operation_00.Resolve_Rec.Rec_Byte == null) && (Program.SystemContainer.Laser_Operation_00.Resolve_Rec.Rec_Byte.Length == 2)) { PEC = ((decimal)BitConverter.ToUInt16(Program.SystemContainer.Laser_Operation_00.Resolve_Rec.Rec_Byte, 0) / 10m); } //读取PRF频率值 Program.SystemContainer.Laser_Operation_00.Read("00", "21"); if (!(Program.SystemContainer.Laser_Operation_00.Resolve_Rec.Rec_Byte == null) && (Program.SystemContainer.Laser_Operation_00.Resolve_Rec.Rec_Byte.Length == 3)) { PRF = ((decimal)BitConverter.ToUInt32(new byte[] { Program.SystemContainer.Laser_Operation_00.Resolve_Rec.Rec_Byte[0], Program.SystemContainer.Laser_Operation_00.Resolve_Rec.Rec_Byte[1], Program.SystemContainer.Laser_Operation_00.Resolve_Rec.Rec_Byte[2], 0x00 }, 0) / 1000m); } //设置PEC功率值 if (PEC != tech_Parameter.PEC) { Program.SystemContainer.Laser_Operation_00.Change_Pec(tech_Parameter.PEC); } //设置PRF频率值 if (PRF != tech_Parameter.PRF) { Program.SystemContainer.Laser_Operation_00.Write("00", "21", Program.SystemContainer.Laser_Operation_00.PRF_To_Str((UInt32)(tech_Parameter.PRF * 1000))); } return(true); }
/// <summary> /// 刀具切换 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ScissorListBox_SelectedIndexChanged(object sender, EventArgs e) { if (ScissorListBox.SelectedIndex != -1) { ScissorParaShow = new Tech_Parameter(Program.SystemContainer.ScissorList[Program.SystemContainer.ScissorList.FindIndex(o => o.Scissors_Name == ScissorListBox.SelectedItem.ToString())]); ScissorWriteFlag = true; ScissorShowRefresh(); ScissorWriteFlag = false; } }
/// <summary> /// 振镜桶形畸变图形加工 /// </summary> private void Rtc_Barrel_Distortion_Figure_Sculpture() { if (((Int16)(Program.SystemContainer.SysPara.Rtc_Distortion_Data_Limit / Program.SystemContainer.SysPara.Rtc_Distortion_Data_Interval) % 2) != 0) { appendInfo(string.Format("振镜矫正范围除以打标间距:{0}不为偶数,禁止加工!!!", Program.SystemContainer.SysPara.Rtc_Distortion_Data_Limit / Program.SystemContainer.SysPara.Rtc_Distortion_Data_Interval)); return; } else { int ScissorIndex = 0; Tech_Parameter ScissorPara = new Tech_Parameter(); //刀具参数 //待加工数据 List <Section_Entity_Data> Mark_Datas = new List <Section_Entity_Data>(Calibration.Create_Rtc_Calibrate_Data(0, Program.SystemContainer.SysPara.Rtc_Distortion_Data_Radius, Program.SystemContainer.SysPara.Rtc_Distortion_Data_Interval, Program.SystemContainer.SysPara.Rtc_Distortion_Data_Limit)); //十个一组 //启用刀具参数 ScissorIndex = Program.SystemContainer.ScissorList.FindIndex(t => t.Scissors_Name == Program.SystemContainer.SysPara.Calibrate_Mark_Scissor); //获取刀具索引 if (ScissorIndex == -1) //不含此刀具 { MessageBox.Show(string.Format("刀具:{0},不存在加工终止!!", Program.SystemContainer.SysPara.Calibrate_Mark_Scissor)); return; //未指定刀具 } ScissorPara = new Tech_Parameter(Program.SystemContainer.ScissorList[ScissorIndex]); //提取刀具参数 //按照刀具参数进行加工 for (int i = 1; i < ScissorPara.RepeatTime + 1; i++) //加工次数 { /*********************************************/ //加工前动作 //Z轴动作 if (i == 1)//初始Z轴高度 { //定位到Z轴高度 } //循序步进Z轴高度 if ((ScissorPara.FocusCompensationTimes > 0) && ((i % ScissorPara.FocusCompensationTimes) == 0)) { //Z轴步进值 } /*********************************************/ //加工中 foreach (var p in Mark_Datas) { //关闭激光 Program.SystemContainer.RTC_Fun.Close_Laser(); //平台定位 Program.SystemContainer.GTS_Fun.Gts_Ready_Correct(p.Centre); //运行和暂停切换 if (on_off) { ma = new ManualResetEvent(false); ma.WaitOne(); } //退出循环 if (stop) { return; } //振镜加工轨迹推入 Program.SystemContainer.RTC_Fun.Draw_Mark(p, 1, 1); //关闭激光 Program.SystemContainer.RTC_Fun.Close_Laser(); } /*********************************************/ //加工结束 //延时操作 if ((ScissorPara.DelayCompensationTimes > 0) && ((i % ScissorPara.DelayCompensationTimes) == 0)) { Thread.Sleep(ScissorPara.DelayCompensation);//延时 } } } }
/// <summary> /// 推入数据进入控制器,并加工 /// </summary> /// <param name="File_Entity_Datas"></param> /// <returns></returns> public void PushDataToController(File_Entity_Data File_Entity_Datas) { int ScissorIndex = 0; List <string> ScissorList = new List <string>(); //刀具列表 Tech_Parameter ScissorPara = new Tech_Parameter(); //刀具参数 foreach (var o in File_Entity_Datas.LayerSectionDatas) { //启用刀具参数 ScissorList = GetScissorList(File_Entity_Datas.FileName, o.LayerName);//获取当前图层刀具列表 if (ScissorList.Count <= 0) { MessageBox.Show(string.Format("图层:{0},未指定刀具,该图层加工终止!!", o.LayerName)); return;//未指定刀具 } //循环调用刀具参数 foreach (var s in ScissorList) { ScissorIndex = Program.SystemContainer.ScissorList.FindIndex(t => t.Scissors_Name == s); //获取刀具索引 if (ScissorIndex == -1) //不含此刀具 { MessageBox.Show(string.Format("刀具:{0},不存在加工终止!!", s)); return; //未指定刀具 } ScissorPara = new Tech_Parameter(Program.SystemContainer.ScissorList[ScissorIndex]); //提取刀具参数 //按照刀具参数进行加工 for (int i = 1; i < ScissorPara.RepeatTime + 1; i++) //加工次数 { /*********************************************/ //加工前动作 //Z轴动作 if (i == 1)//初始Z轴高度 { //定位到Z轴高度 } //循序步进Z轴高度 if ((ScissorPara.FocusCompensationTimes > 0) && ((i % ScissorPara.FocusCompensationTimes) == 0)) { //Z轴步进值 } /*********************************************/ //加工中 foreach (var p in o.SectionEntityDatas) { //关闭激光 Program.SystemContainer.RTC_Fun.Close_Laser(); //平台定位 Program.SystemContainer.GTS_Fun.Gts_Ready_Correct(p.Centre); //运行和暂停切换 if (on_off) { ma = new ManualResetEvent(false); ma.WaitOne(); } //退出循环 if (stop) { return; } //振镜加工轨迹推入 Program.SystemContainer.RTC_Fun.Draw_Mark(p, 1, 0); //关闭激光 Program.SystemContainer.RTC_Fun.Close_Laser(); } /*********************************************/ //加工结束 //延时操作 if ((ScissorPara.DelayCompensationTimes > 0) && ((i % ScissorPara.DelayCompensationTimes) == 0)) { Thread.Sleep(ScissorPara.DelayCompensation);//延时 } } } } }