Example #1
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);
        }
Example #2
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);
        }