using Aurora.Api; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using WeldingCommon.Sequences; namespace WeldingCommon.RMS { internal class EDC : IEDC { public static string LASER_CENTER_POWER = "strCenterPower"; public static string LASER_RING_POWER = "strRingPower"; public static string LASER_DISTANCE = "strDistance"; public static string StrCellData = ""; public string ReadCellResult(SequenceContext context) { var _oct = context.GetOCT(); string strLDDKHD_AVG = ""; string strLDDKHD_MIN = ""; string strLDDKHD_MAX = ""; string strLDDKHD_LowSum = ""; string strLDDKHD_HighSum = ""; string strLDD_Judge = ""; if (_oct.IsSimul && _oct.IsActivated) { strLDDKHD_AVG = _oct.GetKHD_AVG(); strLDDKHD_MIN = _oct.GetKHD_MIN(); strLDDKHD_MAX = _oct.GetKHD_MAX(); strLDDKHD_LowSum = _oct.GetKHD_LowSum(); strLDDKHD_HighSum = _oct.GetKHD_HighSum(); if (strLDD_Judge == "OK") { strLDD_Judge = "1"; } else if (strLDD_Judge == "NOK") { strLDD_Judge = "2"; } else if (strLDD_Judge == "NOQA") { strLDD_Judge = "3"; } else if (strLDD_Judge == "X") { strLDD_Judge = "4"; } else { strLDD_Judge = "4"; } } Status.GetProcessingWeldingData().LDD_Judge = strLDD_Judge; string strDate = DateTime.Now.Date.ToString("yyyyMMdd"); string strTime = DateTime.Now.ToString("HHmmss"); string strWeldStartTime = Status.GetProcessingWeldingData().WeldingStartTime.ToString(); ; string strCellID = Status.GetProcessingWeldingData().CellId; string strLotID = Status.GetProcessingWeldingData().LotId; string strWeldTIme = Status.GetProcessingWeldingData().TactTime_Welding.ToString(); string strTodayProduct = Status.GetProcessingWeldingData().TodayProduct.ToString(); string strTotalProduct = Status.GetProcessingWeldingData().TotalProduct.ToString(); string strLBADJudge = Status.GetProcessingWeldingData().LBAD_Judge; return string.Format("{0};{1};{2};{3};{4};{5};{6};{7};{8};{9};{10};{11};{12};{13};{14}", strDate, strTime, strLotID, strCellID, strWeldStartTime, strWeldTIme, strTodayProduct, strTotalProduct, strLDDKHD_AVG, strLDDKHD_MIN, strLDDKHD_LowSum, strLDDKHD_MAX, strLDDKHD_HighSum, strLDD_Judge, strLBADJudge); } // 불필요. 매 cell 마다 plc 보고가 없어짐 //public int ReportResultToPLC(SequenceContext context, int RecipeID, List SelectedDrawObjects) //{ // var _PLC = context.GetPLC(); // int nRet = 0; // ScannerParam Subparam = new ScannerParam(); // ScannerParam Mainparam = new ScannerParam(); // foreach (IDrawObject obj in SelectedDrawObjects) { // if (obj is Arc) { // Arc arc = (Arc)obj; // Mainparam = ScannerCanvasUserCtrl.ScannerParams[arc.ScannerParamNo]; // } else if (obj is Dot) { // Dot dot = (Dot)obj; // Subparam = ScannerCanvasUserCtrl.ScannerParams[dot.ScannerParamNo]; // } // } // _PLC.SetAO2WValueInt("PC_VER_WELDING_RECIPE_NUM1", RecipeID * _PLC.ConvertTo2WordDivisionIndex("PC_VER_WELDING_RECIPE_NUM1")); // _PLC.SetAO2WValueInt("PC_VER_WELDING_MAIN_POWER_CORE1", (int)Mainparam.LaserPower1 * _PLC.ConvertTo2WordDivisionIndex("PC_VER_WELDING_MAIN_POWER_CORE1")); // _PLC.SetAO2WValueInt("PC_VER_WELDING_MAIN_POWER_RING1", (int)Mainparam.LaserPower2 * _PLC.ConvertTo2WordDivisionIndex("PC_VER_WELDING_MAIN_POWER_RING1")); // //_PLC.SetAO2WValueFloat("PC_VER_WELDING_MAIN_JUMP_SPEED1", Mainparam.JumpSpeed); // //_PLC.SetAO2WValueFloat("PC_VER_WELDING_MAIN_DRAW_SPEED1", Mainparam.MarkSpeed); // _PLC.SetAO2WValueInt("PC_VER_WELDING_MAIN_RAMPING_START_POWER1", (int)Mainparam.RampingStartPower * _PLC.ConvertTo2WordDivisionIndex("PC_VER_WELDING_MAIN_RAMPING_START_POWER1")); // _PLC.SetAO2WValueInt("PC_VER_WELDING_MAIN_RAMPING_START_DIST1", (int)Mainparam.RampingStartDist * _PLC.ConvertTo2WordDivisionIndex("PC_VER_WELDING_MAIN_RAMPING_START_DIST1")); // _PLC.SetAO2WValueInt("PC_VER_WELDING_MAIN_RAMPING_END_POWER1", (int)Mainparam.RampingEndPower * _PLC.ConvertTo2WordDivisionIndex("PC_VER_WELDING_MAIN_RAMPING_END_POWER1")); // _PLC.SetAO2WValueInt("PC_VER_WELDING_MAIN_RAMPING_END_DIST2", (int)Mainparam.RampingEndDist * _PLC.ConvertTo2WordDivisionIndex("PC_VER_WELDING_MAIN_RAMPING_END_DIST2")); // _PLC.SetAO2WValueInt("PC_VER_WELDING_SUB_POWER_CORE1", (int)Subparam.LaserPower1 * _PLC.ConvertTo2WordDivisionIndex("PC_VER_WELDING_SUB_POWER_CORE1")); // _PLC.SetAO2WValueInt("PC_VER_WELDING_SUB_POWER_RING1", (int)Subparam.LaserPower2 * _PLC.ConvertTo2WordDivisionIndex("PC_VER_WELDING_SUB_POWER_RING1")); // //_PLC.SetAO2WValueFloat("PC_VER_WELDING_SUB_SPOT_SHOT_TIME1", Subparam.SpotShotTime); // // data update 하고 // // 끝나면 PLC 에 알려주기 // //_plc.SetDOStatus("SPC_DATA_UPDATED", true); // 이신호를 살리기 전에 word 에 upload 모두 해둔 상태여야한다. // // PLC 통해서 보고하지 않는다 // return nRet; //} public List SendData(SequenceContext context, string str, ref string strPath) { //var _CellTrackerObj = context.GetCellTracker()._CellTrackerObj; var cellTracker = context.GetCellTracker(); string strDate = null, strTime = null, strData = null; string strAddingData = ""; List SplitDatalist = new List(); SplitDatalist = SplitLogData(str, ref strPath, ref strDate, ref strTime, "SMW"); strData = string.Format("Date={0},Time={1},LotID={2},CellID={3},", //,WeldingStartTime={4},WeldingTime={5},TodayCount={6},TotalCount={7},LDD_AVG={8},LDD_MIN={9},LDD_Length_Under300={10},LDD_MAX={11},LDD_Length_Over900={12},LBAD_Judge={13}", SplitDatalist.ElementAt(0), SplitDatalist.ElementAt(1), SplitDatalist.ElementAt(2), SplitDatalist.ElementAt(3)); for (int i = 1; i + 3 < SplitDatalist.Count; i++) { strData += string.Format("SMWDATA{0:000}={1}", i, SplitDatalist.ElementAt(i + 3)); if (i + 3 != SplitDatalist.Count - 1) { strData += string.Format(","); } } cellTracker.SendEcsData(SplitDatalist.ElementAt(3), strPath, strData + strAddingData); return SplitDatalist; } public void GetSaveDataStr(out string strItem, out string strData, List SplitDataList) { var strTempItem = "//Date, Time, WeldingStartTime, CellID, LotID, WeldingTime, TodayCount, TotalCount, LDD_AVG, LDD_MIN, LDD_Length_Under300, LDD_MAX, LDD_Length_Over900, LBAD_Judge"; var strTempData = string.Format("{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}, {12}, {13}", SplitDataList.ElementAt(0), SplitDataList.ElementAt(1), SplitDataList.ElementAt(2), SplitDataList.ElementAt(3), SplitDataList.ElementAt(4), SplitDataList.ElementAt(5), SplitDataList.ElementAt(6), SplitDataList.ElementAt(7), SplitDataList.ElementAt(8), SplitDataList.ElementAt(9), SplitDataList.ElementAt(10), SplitDataList.ElementAt(11), SplitDataList.ElementAt(12), SplitDataList.ElementAt(13)); strItem = strTempItem; strData = strTempData; } private List SplitLogData(string str, ref string strPath, ref string strDate, ref string strTime, string strMachineName) { List data = new List(); string[] updateProductInfo = str.Split(';'); for (int i = 0; i < updateProductInfo.Length; i++) { data.Add(updateProductInfo[i]); } strDate = updateProductInfo[0]; strTime = updateProductInfo[1]; //string strMachine = DB.Dao.SystemRecipe.MachineType.ToString(); //StrPath 경로 수정 필요 string directory = string.Format("D:\\ILSOSConfig\\ILSOS_PrismaticRD_PTOP\\_device\\_cellTracker\\{0}", strDate); if (Directory.Exists(directory) == false) { Directory.CreateDirectory(directory); } strPath = string.Format("D:\\ILSOSConfig\\ILSOS_PrismaticRD_PTOP\\_device\\_cellTracker\\{0}\\{1}_{2}_{3}.csv", strDate, strDate, strMachineName, strTime.Substring(0, 2)); return data; } } }