Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
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);
        }
Esempio n. 5
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);
        }
Esempio n. 6
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);
        }
Esempio n. 7
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);
        }
Esempio n. 8
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);
        }
Esempio n. 9
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);
            }
        }