Пример #1
0
        /// <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);
        }
Пример #2
0
 /// <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;
     }
 }
Пример #3
0
        /// <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);//延时
                    }
                }
            }
        }
Пример #4
0
        /// <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);//延时
                        }
                    }
                }
            }
        }