private void btnDeleteSelect_Click(object sender, EventArgs e) { if (Main == null) { return; } CGlassDataProperties oGlass = null; if (ShowCheckConfirm("Glass Data 삭제", "정말 삭제하시겠습니까?")) { foreach (DataGridViewRow oRow in dgvStagetInfo.SelectedRows) { // 작업중인 글라스를 지울수도 있다. // 어떻게 방어 해야 하는지... int GlassCode = int.Parse(oRow.Cells["GlassCode"].Value.ToString()); oGlass = Main.GlassDatas[GlassCode]; oGlass.Delete(); Main.GlassDatas.Remove(GlassCode); } // 화면 리플래쉬 SetDataGridView(_main); } }
protected override int InnerExecute() { string action = ""; CGlassDataProperties glassData = null; if (_values.ContainsKey("ACTION")) { action = _values["ACTION"]; switch (action) { case "READ_RECEIVED_GLASSDATA": ushort[] jobDataRaw = null; ushort[] jobDataSubRaw = null; jobDataRaw = _main.MelsecNetMultiWordRead(IW_JOB_DATA_FOR_UPSTREAM_BLOCK1); jobDataSubRaw = _main.MelsecNetMultiWordRead(IW_RECEIVED_JOB_DATA_SUB_BLOCK1); glassData = new CGlassDataProperties(jobDataRaw); break; case "READ_PROCESSING_GLASSDATA": if (_main.ProcessingGlassDatas.ContainsKey(_component.ControlName)) { glassData = _main.ProcessingGlassDatas[_component.ControlName]; } break; case "READ_SENTOUT_GLASSDATA": //jobDataRaw = _main.MelsecNetMultiWordRead(OW_JOB_DATA_FOR_UPSTREAM_BLOCK1, 64); //jobDataSubRaw = _main.MelsecNetMultiWordRead(OW_SENT_OUT_JOB_DATA_SUB_BLOCK1, 64); //glassData = new CGlassDataProperties(jobDataRaw); //break; //20161018 <TODO> 영역 데이타 확인 필요함. jobDataRaw = _main.MelsecNetMultiWordRead(OW_RECEIVED_JOB_DATA_BLOCK1, 64); jobDataSubRaw = _main.MelsecNetMultiWordRead(OW_RECEIVED_JOB_DATA_UPSTREAM_PATH_NO, 1); //<TODO> Int 1Word로 수정해야함. glassData = new CGlassDataProperties(jobDataRaw); break; default: break; } } if (glassData != null) { CSubject subject = CUIManager.Inst.GetData("frmGlassData"); Dictionary <string, string> data = CGlassDataProperties.GetGuiData(glassData); subject.SetValue("Data", data); subject.Notify(); } return(0); }
public override int ExecuteManual(Dictionary <string, string> values) { _values = values; userNewGlassData = new CGlassDataProperties(CGlassDataProperties.GetGuiDataToPLC(values)); _userRequest = true; InnerExecute(); return(0); }
public override int Execute(Dictionary <string, string> temp) { List <ushort> plcData = new List <ushort>(); userNewGlassData = new CGlassDataProperties(CGlassDataProperties.GetGuiDataToPLC(temp)); _userRequest = true; InnerExecute(); return(0); }
public override int Execute() { if (_main.ReceivedGlassDatas.ContainsKey(_component.ControlName) == false) { return(-1); } CGlassDataProperties glassData = _main.ReceivedGlassDatas[_component.ControlName]; List <int> receiveJobData = CGlassDataProperties.ConvertPLCData(glassData); List <int> receiveJobDataSub = new List <int>(); receiveJobDataSub.Add(1); //upstream path no receiveJobDataSub.Add(1); //total glass count _main.MelsecNetMultiWordWrite(OW_JOB_DATA_FOR_UPSTREAM_BLOCK1, receiveJobData); _main.MelsecNetMultiWordWrite(OW_RECEIVED_JOB_DATA_SUB_BLOCK1, receiveJobDataSub); CTimeout timeout = CTimeoutManager.GetTimeout(_component.ControlName, 2000); timeout.Begin(OB_RECEIVED_JOB_REPORT_UPSTREAMPATH1, _main.CONTROLATTRIBUTES.GetProperty(IB_RECEIVED_JOB_REPORT_REPLY_UPSTREAM_PATH1.ScanControlName, IB_RECEIVED_JOB_REPORT_REPLY_UPSTREAM_PATH1.ScanAttribute) as ITimeoutResource); _main.MelsecNetBitOnOff(OB_RECEIVED_JOB_REPORT_UPSTREAMPATH1, true); //if (CTimeout.WaitSync(timeout, 10)) //{ //if (returnCode == CIM_MODE_ACCEPT) //{ // _main.MelsecNetBitOnOff(OB_CIM_MODE, cimMode == CIM_MODE_CIM_ON); // CSubject subject = CUIManager.Inst.GetData("ucCimStatus"); // subject.SetValue("CIMMode", cimMode); // subject.Notify(); //} //} //else //{ // //에러:응답이 없다.. //} //딜레이 추가 _main.MelsecNetBitOnOff(OB_RECEIVED_JOB_REPORT_UPSTREAMPATH1, false); if (glassData != null) { CSubject subject = CUIManager.Inst.GetData("GlassInfoDisplay"); Dictionary <string, string> data = CGlassDataProperties.GetGuiData(glassData); subject.SetValue("Data", data); subject.Notify(); } return(0); }
private int InnerExecute() { //양전자 데이터 제공 bool glassExit1 = false; bool glassExit2 = false; int glassExit = _component.GlassExist1 ? 1:0; int resonCode1 = 0; int resonCode2 = 0; if (_component.GlassExist1) { CGlassDataProperties glassData = null; if (_main.ReceivedGlassDatas.ContainsKey(_component.ControlName)) { glassData = _main.ReceivedGlassDatas[_component.ControlName]; if (glassData != null) { resonCode1 = glassData.GlassCodeXXYYYY; resonCode2 = glassData.GlassCodeZZZ; } } else if (_main.ProcessingGlassDatas.ContainsKey(_component.ControlName)) { glassData = _main.ProcessingGlassDatas[_component.ControlName]; if (glassData != null) { resonCode1 = glassData.GlassCodeXXYYYY; resonCode2 = glassData.GlassCodeZZZ; } } } else { resonCode1 = 0; resonCode2 = 0; } _main.MelsecNetWordWrite(OW_POSITION_GLASS_EXIST, glassExit); _main.MelsecNetWordWrite(OW_POSITION001_GLASS_CODE, resonCode1); _main.MelsecNetWordWrite(OW_POSITION002_GLASS_CODE, resonCode2); return(0); }
protected override int InnerExecute() { List <int> changedJobData = new List <int>(); if (_userRequest) { _userRequest = false; if (userNewGlassData != null) { changedJobData = CGlassDataProperties.ConvertPLCData(userNewGlassData); } } _main.MelsecNetMultiWordWrite(OW_GLASS_DATA_CHANGE_REPORT, changedJobData); CTimeout timeout = CTimeoutManager.GetTimeout(_component.ControlName, 2000);//시뮬레이션 테스트로 10000 설정함); timeout.Begin(OB_GLASS_DATA_CHANGE_REPORT, _main.CONTROLATTRIBUTES.GetProperty(IB_GLASS_DATA_CHANGE_REPORT_REPLY.ScanControlName, IB_GLASS_DATA_CHANGE_REPORT_REPLY.ScanAttribute) as ITimeoutResource); _main.MelsecNetBitOnOff(OB_GLASS_DATA_CHANGE_REPORT, true); if (CTimeout.WaitSync(timeout, 10)) { //if (returnCode == CIM_MODE_ACCEPT) //{ // _main.MelsecNetBitOnOff(OB_CIM_MODE, cimMode == CIM_MODE_CIM_ON); // CSubject subject = CUIManager.Inst.GetData("ucCimStatus"); // subject.SetValue("CIMMode", cimMode); // subject.Notify(); //} } else { //에러:응답이 없다.. } _main.MelsecNetBitOnOff(OB_GLASS_DATA_CHANGE_REPORT, false); return(0); }
protected override int InnerExecute() { int requestOption = 0; string glassID = ""; string glassCode = ""; if (_values.ContainsKey("REQ_OPTION") == false || _values.ContainsKey("GLS_CODE") == false || _values.ContainsKey("GLS_ID") == false) { return(-1); } int.TryParse(_values["REQ_OPTION"], out requestOption); glassCode = _values["GLS_CODE"]; glassID = _values["GLS_ID"]; List <int> requestID = new List <int>(); List <int> requestCode = new List <int>(); char[] temp = glassID.ToCharArray(); string hex = ""; for (int i = 0; i < temp.Length; i = i + 2) { if (temp.Length > i + 1) { hex += SmartDevice.UTILS.PLCUtils.DecToHex(((int)temp[i + 1]).ToString()).Substring(2, 2); } if (temp.Length > i) { hex += SmartDevice.UTILS.PLCUtils.DecToHex(((int)temp[i]).ToString()).Substring(2, 2); requestID.Add(int.Parse(SmartDevice.UTILS.PLCUtils.HexToDec(hex))); } hex = ""; } string glassCode1 = ""; string glassCode2 = ""; if (string.IsNullOrEmpty(glassCode) || glassCode == "0") { requestCode.Add(0); requestCode.Add(0); } else if (glassCode.Length <= 3) { requestCode.Add(0); requestCode.Add(int.Parse(glassCode)); } else { glassCode1 = glassCode.Substring(0, glassCode.Length - 3); glassCode2 = glassCode.Substring(glassCode.Length - 3, 3); requestCode.Add(int.Parse(glassCode1)); requestCode.Add(int.Parse(glassCode2)); } _main.MelsecNetWordWrite(OW_GLS_DATA_REQ_OPTION, requestOption); _main.MelsecNetMultiWordWrite(OW_GLS_DATA_REQ_GLASS_ID, requestID); _main.MelsecNetMultiWordWrite(OW_GLS_DATA_REQ_GLASS_CODE, requestCode); CTimeout timeout = CTimeoutManager.GetTimeout(_component.ControlName, 2000); timeout.Begin(OB_GLASS_DATA_REQUEST, _main.CONTROLATTRIBUTES.GetProperty(IB_GLASS_DATA_REQUEST_CONFIRM.ScanControlName, IB_GLASS_DATA_REQUEST_CONFIRM.ScanAttribute) as ITimeoutResource); _main.MelsecNetBitOnOff(OB_GLASS_DATA_REQUEST, true); if (CTimeout.WaitSync(timeout, 10)) { ushort[] receviedGlassData = _main.MelsecNetMultiWordRead(IW_GLASS_DATA_SEND); string requestAck = _main.MelsecNetWordRead(IW_GLASS_DATA_REQUEST_ACK); CGlassDataProperties glassData = new CGlassDataProperties(receviedGlassData); CSubject subject = CUIManager.Inst.GetData("GlassInfoDisplay"); subject.SetValue("Data", CGlassDataProperties.GetGuiData(glassData)); subject.Notify(); } else { //에러:응답이 없다.. } _main.MelsecNetBitOnOff(OB_GLASS_DATA_REQUEST, false); return(0); }
protected override int InnerExecute() { try { string recipeId = ""; //10 int CCODE = 0; // 1 string account = ""; //5 string mYear = ""; string mMonth = ""; string mDay = ""; string mHour = ""; string mMin = ""; string mSec = ""; string mYear1 = ""; string mMonth1 = ""; string mDay1 = ""; string mHour1 = ""; string mMin1 = ""; string mSec1 = ""; int index = -1; index = int.Parse(_values["GLS_INDEX"]); if (index == -1) { return(-1); } string filePath = ""; filePath = _values["FILE_PATH"]; if (filePath == "") { return(-1); } //string mValue = VI_GLASS_DATA_VALUE_FILE_REPORT.Value; //string[] tempdata = mValue.Split('|'); ////string filePath = ""; //if (tempdata != null && tempdata.Length == 3) //{ // filePath = tempdata[1];// Glass Unloading시 측정 데이터 파일이 있는 Path 전송 ( 협의 후 수정 예정 ) //} //if (filePath != "") //{ //} //받아서 처리하는 부분 //양전자 RECIPE 가져오는 곳 List <int> jobDataB = new List <int>(); List <int> startTime = new List <int>(); List <int> processingTime = new List <int>(); List <int> endTime = new List <int>(); List <int> variableDataItems = new List <int>(); AMaterialData materialData = null; List <int> DV_List_Data1 = new List <int>(); List <int> DV_List_Data2 = new List <int>(); List <int> DV_List_Data3 = new List <int>(); List <int> DV_List_Data4 = new List <int>(); List <int> DV_List_Data5 = new List <int>(); List <int> DV_List_Data6 = new List <int>(); List <int> DV_List_Data7 = new List <int>(); List <int> DV_List_Data8 = new List <int>(); List <int> DV_List_Data9 = new List <int>(); List <int> DV_List_Data10 = new List <int>(); List <int> DV_List_Data11 = new List <int>(); List <int> DV_List_Data12 = new List <int>(); List <int> DV_List_Data13 = new List <int>(); List <int> DV_List_Data14 = new List <int>(); List <int> DV_List_Data15 = new List <int>(); List <int> DV_List_Data16 = new List <int>(); List <int> DV_List_Data17 = new List <int>(); List <int> DV_List_Data18 = new List <int>(); List <int> DV_List_Data19 = new List <int>(); List <int> DV_List_Data20 = new List <int>(); //20191202 List <int> DV_List_Data21 = new List <int>(); List <int> DV_List_Data22 = new List <int>(); List <int> DV_List_Data23 = new List <int>(); List <int> DV_List_Data24 = new List <int>(); List <int> DV_List_Data25 = new List <int>(); List <int> DV_List_Data26 = new List <int>(); List <int> DV_List_Data27 = new List <int>(); if (_isManualMode) { CGlassDataPropertiesWHTM jobData = new CGlassDataPropertiesWHTM(); jobData.CassetteIndex = 1; jobData.GlassIndex = 2; jobData.LotID = "A1"; jobData.GlassID = "G1"; jobData.UnitPathNo = 1; jobData.SlotNo = 0; jobData.JobJudge = "G";//GPR; jobData.JobGrade = "G"; jobDataB = CGlassDataPropertiesWHTM.ConvertPLCDataB(jobData); processingTime = _main.ConvertDecTo2WordList(2); startTime = _main.ConvertDecToBCD3WordList(16, 11, 7, 22, 14, 30); endTime = _main.ConvertDecToBCD3WordList(16, 11, 7, 22, 14, 30); variableDataItems = _main.GetDVValueToIntList(); recipeId = "ABCDEFG12345"; } else { CGlassDataPropertiesWHTM jobData = new CGlassDataPropertiesWHTM(); materialData = _main.GetSentOutGlassDataByLoc(_component.ControlName, index); jobData = materialData as CGlassDataPropertiesWHTM; jobData.UnitPathNo = 301; jobData.SlotNo = 0; jobDataB = CGlassDataPropertiesWHTM.ConvertPLCDataB(jobData); TimeSpan elapsedSpan = new TimeSpan(_main.Get_Process_End_Time(index).Ticks - _main.Get_Process_Start_Time(index).Ticks); processingTime.AddRange(ByteArrayToIntArray(PLCDataConverter.SystemFloatToPLC4Byte((float)elapsedSpan.TotalSeconds), 0, 2));// _main.ConvertDecTo2WordList((ushort)elapsedSpan.TotalSeconds); //processingTime =SmartDevice.UTILS.PLCUtils.(_main.MelsecNetWordRead(IW_PPID_RECIPE_ID_MAP_PPID_PPCINFO)).Trim(); if (_main.Get_Process_Start_Time(index) != null) { //DateTime yearTemp = DateTime.Parse(glassData.ProcessedStartTime);// DateTime.Now.Year.ToString(); string temp = _main.Get_Process_Start_Time(index).Year.ToString(); mYear = ushort.Parse(temp.Substring(temp.Length - 2, 2)).ToString("00"); mMonth = _main.Get_Process_Start_Time(index).Month.ToString("00"); mDay = _main.Get_Process_Start_Time(index).Day.ToString("00"); mHour = _main.Get_Process_Start_Time(index).Hour.ToString("00"); mMin = _main.Get_Process_Start_Time(index).Minute.ToString("00"); mSec = _main.Get_Process_Start_Time(index).Second.ToString("00"); } else { mYear = "00"; mMonth = "00"; mDay = "00"; mHour = "00"; mMin = "00"; mSec = "00"; } if (_main.Get_Process_End_Time(index) != null) { //DateTime yearTemp = DateTime.Parse(glassData.ProcessedStartTime);// DateTime.Now.Year.ToString(); string temp = _main.Get_Process_End_Time(index).Year.ToString(); mYear1 = ushort.Parse(temp.Substring(temp.Length - 2, 2)).ToString("00"); mMonth1 = _main.Get_Process_End_Time(index).Month.ToString("00"); mDay1 = _main.Get_Process_End_Time(index).Day.ToString("00"); mHour1 = _main.Get_Process_End_Time(index).Hour.ToString("00"); mMin1 = _main.Get_Process_End_Time(index).Minute.ToString("00"); mSec1 = _main.Get_Process_End_Time(index).Second.ToString("00"); } else { mYear1 = "00"; mMonth1 = "00"; mDay1 = "00"; mHour1 = "00"; mMin1 = "00"; mSec1 = "00"; } startTime.Add(ushort.Parse(mMonth.Substring(0, 1)) << 12 | ushort.Parse(mMonth.Substring(1, 1)) << 8 | ushort.Parse(mYear.Substring(0, 1)) << 4 | ushort.Parse(mYear.Substring(1, 1))); startTime.Add(ushort.Parse(mHour.Substring(0, 1)) << 12 | ushort.Parse(mHour.Substring(1, 1)) << 8 | ushort.Parse(mDay.Substring(0, 1)) << 4 | ushort.Parse(mDay.Substring(1, 1))); startTime.Add(ushort.Parse(mSec.Substring(0, 1)) << 12 | ushort.Parse(mSec.Substring(1, 1)) << 8 | ushort.Parse(mMin.Substring(0, 1)) << 4 | ushort.Parse(mMin.Substring(1, 1))); endTime.Add(ushort.Parse(mMonth1.Substring(0, 1)) << 12 | ushort.Parse(mMonth1.Substring(1, 1)) << 8 | ushort.Parse(mYear1.Substring(0, 1)) << 4 | ushort.Parse(mYear1.Substring(1, 1))); endTime.Add(ushort.Parse(mHour1.Substring(0, 1)) << 12 | ushort.Parse(mHour1.Substring(1, 1)) << 8 | ushort.Parse(mDay1.Substring(0, 1)) << 4 | ushort.Parse(mDay1.Substring(1, 1))); endTime.Add(ushort.Parse(mSec1.Substring(0, 1)) << 12 | ushort.Parse(mSec1.Substring(1, 1)) << 8 | ushort.Parse(mMin1.Substring(0, 1)) << 4 | ushort.Parse(mMin1.Substring(1, 1))); recipeId = _main.getRecipeId(jobData.PPID); variableDataItems = _main.GetDVValueToIntList(); //임시 데이터 string tempValue; //DateTime mTime = DateTime.Now; //Console.WriteLine(mTime.Second.ToString() + "." + mTime.Millisecond.ToString()); List <string> DvWords = new List <string>(); if (System.IO.File.Exists(@filePath)) { string[] lines = System.IO.File.ReadAllLines(@filePath); foreach (string line in lines) { if (line != "") { tempValue = line.Substring(40).Trim(); if (tempValue == "***") { tempValue = ""; } DvWords.Add(tempValue); } } } //if (DvWords.Count != 920) // return -1; List <string> DvData1 = new List <string>(); List <string> DvData2 = new List <string>(); List <string> DvData3 = new List <string>(); List <string> DvData4 = new List <string>(); List <string> DvData5 = new List <string>(); List <string> DvData6 = new List <string>(); List <string> DvData7 = new List <string>(); List <string> DvData8 = new List <string>(); List <string> DvData9 = new List <string>(); List <string> DvData10 = new List <string>(); List <string> DvData11 = new List <string>(); List <string> DvData12 = new List <string>(); List <string> DvData13 = new List <string>(); List <string> DvData14 = new List <string>(); List <string> DvData15 = new List <string>(); List <string> DvData16 = new List <string>(); List <string> DvData17 = new List <string>(); List <string> DvData18 = new List <string>(); List <string> DvData19 = new List <string>(); List <string> DvData20 = new List <string>(); //20191202 List <string> DvData21 = new List <string>(); List <string> DvData22 = new List <string>(); List <string> DvData23 = new List <string>(); List <string> DvData24 = new List <string>(); List <string> DvData25 = new List <string>(); List <string> DvData26 = new List <string>(); List <string> DvData27 = new List <string>(); //for (int i = 0; i < DvWords.Count; i++) //{ // if (i >= 0 && i < 236) // { // DvData1.Add(DvWords[i]); // } // else if (i >= 236 && i < 464) // { // DvData2.Add(DvWords[i]); // } // else if (i >= 464 && i < 730) // { // DvData3.Add(DvWords[i]); // } // else if (i >= 730 && i < 996) // { // DvData4.Add(DvWords[i]); // } // else if (i >= 996 && i < 1224) // { // DvData5.Add(DvWords[i]); // } // else if (i >= 1224 && i < 1490) // { // DvData6.Add(DvWords[i]); // } // else if (i >= 1490 && i < 1680) // { // DvData7.Add(DvWords[i]); // } // else if (i >= 1680 && i < 1946) // { // DvData8.Add(DvWords[i]); // } // else if (i >= 1946 && i < 2174) // { // DvData9.Add(DvWords[i]); // } // else if (i >= 2174 && i < 2402) // { // DvData10.Add(DvWords[i]); // } // else if (i >= 2402 && i <= 2592) // { // DvData11.Add(DvWords[i]); // } //} for (int i = 0; i < DvWords.Count; i++) //20191202 { if (i >= 0 && i < 238) { DvData1.Add(DvWords[i]); } else if (i >= 238 && i < 488) { DvData2.Add(DvWords[i]); } else if (i >= 488 && i < 738) { DvData3.Add(DvWords[i]); } else if (i >= 738 && i < 988) { DvData4.Add(DvWords[i]); } else if (i >= 998 && i < 1238) { DvData5.Add(DvWords[i]); } else if (i >= 1238 && i < 1488) { DvData6.Add(DvWords[i]); } else if (i >= 1488 && i < 1738) { DvData7.Add(DvWords[i]); } else if (i >= 1738 && i < 1988) { DvData8.Add(DvWords[i]); } else if (i >= 1988 && i < 2238) { DvData9.Add(DvWords[i]); } else if (i >= 2238 && i < 2488) { DvData10.Add(DvWords[i]); } else if (i >= 2488 && i < 2738) { DvData11.Add(DvWords[i]); } else if (i >= 2488 && i < 2988) { DvData12.Add(DvWords[i]); } else if (i >= 2488 && i < 3238) { DvData13.Add(DvWords[i]); } else if (i >= 2488 && i < 3488) { DvData14.Add(DvWords[i]); } else if (i >= 2488 && i < 3738) { DvData15.Add(DvWords[i]); } else if (i >= 2488 && i < 3988) { DvData16.Add(DvWords[i]); } else if (i >= 2488 && i < 4238) { DvData17.Add(DvWords[i]); } else if (i >= 2488 && i < 4488) { DvData18.Add(DvWords[i]); } else if (i >= 2488 && i < 4738) { DvData19.Add(DvWords[i]); } else if (i >= 2488 && i < 4988) { DvData20.Add(DvWords[i]); } else if (i >= 2488 && i < 5238) { DvData21.Add(DvWords[i]); } else if (i >= 2488 && i < 5488) { DvData22.Add(DvWords[i]); } else if (i >= 2488 && i < 5738) { DvData23.Add(DvWords[i]); } else if (i >= 2488 && i < 5988) { DvData24.Add(DvWords[i]); } else if (i >= 2488 && i < 6238) { DvData25.Add(DvWords[i]); } else if (i >= 2488 && i < 6488) { DvData26.Add(DvWords[i]); } else if (i >= 2488 && i < 6594) { DvData27.Add(DvWords[i]); } } DV_List_Data1 = CGlassDataProperties.ConvertPLC_DV_Data(DvData1, 10, true); DV_List_Data2 = CGlassDataProperties.ConvertPLC_DV_Data(DvData2, 10, false); DV_List_Data3 = CGlassDataProperties.ConvertPLC_DV_Data(DvData3, 10, false); DV_List_Data4 = CGlassDataProperties.ConvertPLC_DV_Data(DvData4, 10, false); DV_List_Data5 = CGlassDataProperties.ConvertPLC_DV_Data(DvData5, 10, false); DV_List_Data6 = CGlassDataProperties.ConvertPLC_DV_Data(DvData6, 10, false); DV_List_Data7 = CGlassDataProperties.ConvertPLC_DV_Data(DvData7, 10, false); DV_List_Data8 = CGlassDataProperties.ConvertPLC_DV_Data(DvData8, 10, false); DV_List_Data9 = CGlassDataProperties.ConvertPLC_DV_Data(DvData9, 10, false); DV_List_Data10 = CGlassDataProperties.ConvertPLC_DV_Data(DvData10, 10, false); DV_List_Data11 = CGlassDataProperties.ConvertPLC_DV_Data(DvData11, 10, false); DV_List_Data12 = CGlassDataProperties.ConvertPLC_DV_Data(DvData12, 10, false); DV_List_Data13 = CGlassDataProperties.ConvertPLC_DV_Data(DvData13, 10, false); DV_List_Data14 = CGlassDataProperties.ConvertPLC_DV_Data(DvData14, 10, false); DV_List_Data15 = CGlassDataProperties.ConvertPLC_DV_Data(DvData15, 10, false); DV_List_Data16 = CGlassDataProperties.ConvertPLC_DV_Data(DvData16, 10, false); DV_List_Data17 = CGlassDataProperties.ConvertPLC_DV_Data(DvData17, 10, false); DV_List_Data18 = CGlassDataProperties.ConvertPLC_DV_Data(DvData18, 10, false); DV_List_Data19 = CGlassDataProperties.ConvertPLC_DV_Data(DvData19, 10, false); DV_List_Data20 = CGlassDataProperties.ConvertPLC_DV_Data(DvData20, 10, false); //20191202 DV_List_Data21 = CGlassDataProperties.ConvertPLC_DV_Data(DvData21, 10, false); DV_List_Data22 = CGlassDataProperties.ConvertPLC_DV_Data(DvData22, 10, false); DV_List_Data23 = CGlassDataProperties.ConvertPLC_DV_Data(DvData23, 10, false); DV_List_Data24 = CGlassDataProperties.ConvertPLC_DV_Data(DvData24, 10, false); DV_List_Data25 = CGlassDataProperties.ConvertPLC_DV_Data(DvData25, 10, false); DV_List_Data26 = CGlassDataProperties.ConvertPLC_DV_Data(DvData26, 10, false); DV_List_Data27 = CGlassDataProperties.ConvertPLC_DV_Data(DvData27, 10, false); } //if (DV_List_Data6.Count < 1000) //{ // while (DV_List_Data6.Count == 1000) // { // DV_List_Data6.Add(0); // } //} _main.MelsecNetMultiWordWrite(OW_PROCESS_DATA_REPORT_JOBDATAB, jobDataB); _main.MelsecNetMultiWordWrite(OW_PROCESS_DATA_REPORT_LOCAL_PROCESSING_TIME, processingTime); //2word _main.MelsecNetMultiWordWrite(OW_PROCESS_DATA_REPORT_LOCAL_PROCESSING_START_TIME, startTime); //3word _main.MelsecNetMultiWordWrite(OW_PROCESS_DATA_REPORT_LOCAL_PROCESSING_END_TIME, endTime); //3word _main.MelsecNetMultiWordWriteByString(OW_PROCESS_DATA_REPORT_RECIPEID, recipeId, 10, ' '); //10word _main.MelsecNetMultiWordWrite(OW_DV_DATA_1, DV_List_Data1); _main.MelsecNetMultiWordWrite(OW_DV_DATA_2, DV_List_Data2); _main.MelsecNetMultiWordWrite(OW_DV_DATA_3, DV_List_Data3); _main.MelsecNetMultiWordWrite(OW_DV_DATA_4, DV_List_Data4); _main.MelsecNetMultiWordWrite(OW_DV_DATA_5, DV_List_Data5); _main.MelsecNetMultiWordWrite(OW_DV_DATA_6, DV_List_Data6); _main.MelsecNetMultiWordWrite(OW_DV_DATA_7, DV_List_Data7); _main.MelsecNetMultiWordWrite(OW_DV_DATA_8, DV_List_Data8); _main.MelsecNetMultiWordWrite(OW_DV_DATA_9, DV_List_Data9); _main.MelsecNetMultiWordWrite(OW_DV_DATA_10, DV_List_Data10); _main.MelsecNetMultiWordWrite(OW_DV_DATA_11, DV_List_Data11); _main.MelsecNetMultiWordWrite(OW_DV_DATA_12, DV_List_Data12); _main.MelsecNetMultiWordWrite(OW_DV_DATA_13, DV_List_Data13); _main.MelsecNetMultiWordWrite(OW_DV_DATA_14, DV_List_Data14); _main.MelsecNetMultiWordWrite(OW_DV_DATA_15, DV_List_Data15); _main.MelsecNetMultiWordWrite(OW_DV_DATA_16, DV_List_Data16); _main.MelsecNetMultiWordWrite(OW_DV_DATA_17, DV_List_Data17); _main.MelsecNetMultiWordWrite(OW_DV_DATA_18, DV_List_Data18); _main.MelsecNetMultiWordWrite(OW_DV_DATA_19, DV_List_Data19); _main.MelsecNetMultiWordWrite(OW_DV_DATA_20, DV_List_Data20); _main.MelsecNetMultiWordWrite(OW_DV_DATA_21, DV_List_Data21); _main.MelsecNetMultiWordWrite(OW_DV_DATA_22, DV_List_Data22); _main.MelsecNetMultiWordWrite(OW_DV_DATA_23, DV_List_Data23); _main.MelsecNetMultiWordWrite(OW_DV_DATA_24, DV_List_Data24); _main.MelsecNetMultiWordWrite(OW_DV_DATA_25, DV_List_Data25); _main.MelsecNetMultiWordWrite(OW_DV_DATA_26, DV_List_Data26); _main.MelsecNetMultiWordWrite(OW_DV_DATA_27, DV_List_Data27); //DateTime mTime1 = DateTime.Now; //Console.WriteLine(mTime1.Second.ToString() + "." + mTime1.Millisecond.ToString()); //main.MelsecNetBitOnOff(OB_PROCESS_DATA_REPORT, true); Log(string.Format("{0}\t{1}", _component.ControlName, string.Format("PGM DATA SEND - RECIPEID={0} CCODE={1} ACCOUNT={2}", recipeId, CCODE, account))); //CSubject subject = CUIManager.Inst.GetData("ucCimStatus"); //subject.SetValue("EQPSTATUS", _component.MachineAutoMode); //subject.Notify(); //Thread.Sleep(1000); //_main.MelsecNetBitOnOff(OB_PROCESS_DATA_REPORT, false); CTimeout timeout = CTimeoutManager.GetTimeout(_controlName, T1); timeout.TargetOffValueCheck = true; timeout.Begin(OB_PROCESS_DATA_REPORT, _main.CONTROLATTRIBUTES.GetProperty(IB_PROCESS_DATA_REPORT.ControlName, IB_PROCESS_DATA_REPORT.AttributeName) as ITimeoutResource); _main.MelsecNetBitOnOff(OB_PROCESS_DATA_REPORT, true); //Thread.Sleep(1000); //IB_PROCESS_DATA_REPORT.Value = true.ToString(); string tempMsg = ""; bool error = false; if (CTimeout.WaitSync(timeout, 10)) { } else { //error = true; _main.MelsecNetBitOnOff(OB_PROCESS_DATA_REPORT, false); //tempMsg = string.Format("PGM DATA TIMEOUT No response [timeout T1={0} sec]", T1 / 1000); //Log(string.Format("{0}\t{1}", _component.ControlName, tempMsg)); } if (!error) { return(0); } Log(string.Format("{0}\t{1}", _component.ControlName, "PGM DATA DISPLAY")); CSubject subject = null; #region 메시지 창 표시 string receivedTime = DateTime.Now.ToString("yyyyMMdd HH:mm:ss"); string msgId = "0"; string message = string.Format("[{0}] {1}", this.Name, tempMsg); string panelNo = "1"; subject = CUIManager.Inst.GetData("CIMMessage"); subject.SetValue("List", new List <string>() { "MESSAGE_SET", msgId, receivedTime, message, panelNo }); subject.Notify(); #endregion return(0); } catch (Exception ex) { Log(string.Format("{0}\t{1}", _component.ControlName, ex.ToString())); return(0); } }