Beispiel #1
0
        /// <summary>
        /// 读取数据块集合的值
        /// </summary>
        /// <param name="ItemNames">数据块集合</param>
        /// <returns></returns>
        public List <object> ReadValueSerial(List <string> ItemNames)
        {
            ArrayOfString itemNames = new ArrayOfString();

            ItemNames.AddRange(itemNames);
            try
            {
                using (ASRS_ServiceSoapClient srv = new ASRS_ServiceSoapClient())
                {
                    return(srv.OPC_Read(itemNames));
                }
            }
            catch (Exception ex)
            {
                return(new List <object>());
            }
        }
Beispiel #2
0
        private void readTask()
        {
            CheckForIllegalCrossThreadCalls = false;
            string        fromPai, fromLie, fromCeng, toPai, toLie, toCeng, taskId, newTask;
            ArrayOfString items = new ArrayOfString();

            items.Add(LOCALSERVER + StackerWrite + "W42"); //frompai 0
            items.Add(LOCALSERVER + StackerWrite + "W38"); //fromlie 1
            items.Add(LOCALSERVER + StackerWrite + "W40"); //fromceng 2
            items.Add(LOCALSERVER + StackerWrite + "W48"); //topai 3
            items.Add(LOCALSERVER + StackerWrite + "W44"); //tolie 4
            items.Add(LOCALSERVER + StackerWrite + "W46"); //toceng 5
            items.Add(LOCALSERVER + StackerWrite + "W50"); //taskid 6
            items.Add(LOCALSERVER + StackerWrite + "W52"); //newtask 7
            while (true)
            {
                wait(1000);
                try
                {
                    using (ASRS_ServiceSoapClient srv = new ASRS_ServiceSoapClient())
                    {
                        ArrayOfAnyType rsts = srv.OPC_Read(items);
                        if (rsts[7].ToString() == "1")
                        {
                            lbfromPai.Text   = rsts[0].ToString();
                            lbFromLie.Text   = rsts[1].ToString();
                            lbFromCeng.Text  = rsts[2].ToString();
                            lbToPai.Text     = rsts[3].ToString();
                            lbToLie.Text     = rsts[4].ToString();
                            lbToCeng.Text    = rsts[5].ToString();
                            lbTaskId.Text    = "任务号:" + rsts[6].ToString();
                            IsNewTask        = "是";
                            lbIsNewTask.Text = "是否下发:" + "是";
                        }
                        else
                        {
                            lbIsNewTask.Text = "是否下发:" + "否";
                            IsNewTask        = "否";
                        }
                    }
                }
                catch (Exception)
                {
                }
            }
        }
Beispiel #3
0
        /// <summary>
        /// 读取一个数据块的值
        /// </summary>
        /// <param name="ItemName"></param>
        /// <returns></returns>
        public object ReadValuePoint(string ItemName)
        {
            ArrayOfString ItemNames = new ArrayOfString();

            ItemNames.Add(ItemName);
            try
            {
                using (ASRS_ServiceSoapClient srv = new ASRS_ServiceSoapClient())
                {
                    return(srv.OPC_Read(ItemNames)[0]);
                }
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
Beispiel #4
0
        private void SSJ_Alarm()
        {
            ArrayOfString ssjAlert = new ArrayOfString();

            ssjAlert.Add(stk.Read_Index[Stacker.Read_Index_SSJ_1_Alarm_Code]);
            ssjAlert.Add(stk.Read_Index[Stacker.Read_Index_SSJ_2_Alarm_Code]);
            ssjAlert.Add(stk.Read_Index[Stacker.Read_Index_SSJ_3_Alarm_Code]);
            while (true)
            {
                var reader = srv.OPC_Read(ssjAlert);
                if (reader[0].ToString() != "0")
                {
                    lb_SSJ1_Alert.Text      = TranslateSSJAlertCode(int.Parse(reader[0].ToString()));
                    lb_SSJ1_Alert.ForeColor = Color.Red;
                }
                else
                {
                    lb_SSJ1_Alert.Text      = "正常";
                    lb_SSJ1_Alert.ForeColor = Color.Lime;
                }
                if (reader[1].ToString() != "0")
                {
                    lb_SSJ2_Alert.Text      = TranslateSSJAlertCode(int.Parse(reader[1].ToString()));
                    lb_SSJ2_Alert.ForeColor = Color.Red;
                }
                else
                {
                    lb_SSJ2_Alert.Text      = "正常";
                    lb_SSJ2_Alert.ForeColor = Color.Lime;
                }
                if (reader[2].ToString() != "0")
                {
                    lb_SSJ3_Alert.Text      = TranslateSSJAlertCode(int.Parse(reader[2].ToString()));
                    lb_SSJ3_Alert.ForeColor = Color.Red;
                }
                else
                {
                    lb_SSJ3_Alert.Text      = "正常";
                    lb_SSJ3_Alert.ForeColor = Color.Lime;
                }
                wait(1000);
            }
        }
Beispiel #5
0
        private void SRMRun()
        {
            CheckForIllegalCrossThreadCalls = false;
            ASRS_ServiceSoapClient srv = new ASRS_ServiceSoapClient();
            ArrayOfString          tmp = new ArrayOfString();

            tmp.Add(LOCALSERVER + StackerRead + "D10");
            int YLocation = Int32.Parse(srv.OPC_Read(tmp)[0].ToString());//堆垛机水平距离

            while (true)
            {
                srv.OPC_WritePoint(LOCALSERVER + StackerRead + "W8", 0);//空闲
                if (IsNewTask == "是")
                {
                    srv.OPC_WritePoint(LOCALSERVER + StackerRead + "X1.2", false); //任务完成
                    srv.OPC_WritePoint(LOCALSERVER + StackerRead + "X0.3", false); //取货完毕
                    srv.OPC_WritePoint(LOCALSERVER + StackerRead + "X1.3", false); //载货台有货
                    srv.OPC_WritePoint(LOCALSERVER + StackerRead + "X1.4", true);  //货叉原点
                    srv.OPC_WritePoint(LOCALSERVER + StackerRead + "X0.4", false); //放货完毕

                    lsBRunning.Items.Add(DateTime.Now.ToString() + "堆垛机开始执行任务....");
                    wait(1000);
                    lsBRunning.Items.Add("开始定位准备取货");
                    srv.OPC_WritePoint(LOCALSERVER + StackerRead + "W8", 2);//定位
                    int lenth = int.Parse(lbFromLie.Text) * 100;
                    while (lenth != YLocation)
                    {
                        if (YLocation > lenth)
                        {
                            YLocation--;
                        }
                        else
                        {
                            YLocation++;
                        }
                        srv.OPC_WritePoint(LOCALSERVER + StackerRead + "D10", YLocation);//写入当前水平坐标
                    }
                    wait(300);
                    lsBRunning.Items.Add("定位完毕,开始取货");
                    srv.OPC_WritePoint(LOCALSERVER + StackerRead + "W8", 3);       //取货
                    srv.OPC_WritePoint(LOCALSERVER + StackerRead + "X1.4", false); //货叉原点

                    wait(300);
                    int zero = 1;
                    if (lbfromPai.Text.Trim() == "2")
                    {
                        zero = -1;
                    }
                    SetFork(zero);

                    wait(300);
                    lsBRunning.Items.Add("取货完毕,开始定位准备放货");
                    srv.OPC_WritePoint(LOCALSERVER + StackerRead + "X0.3", true); //取货完毕
                    srv.OPC_WritePoint(LOCALSERVER + StackerRead + "X1.3", true); //载货台有货
                    srv.OPC_WritePoint(LOCALSERVER + StackerRead + "X1.4", true); //货叉原点
                    srv.OPC_WritePoint(LOCALSERVER + StackerRead + "INT18", 0);   //伸叉位置 1排为正,二排为负
                    srv.OPC_WritePoint(LOCALSERVER + StackerRead + "W8", 2);      //定位
                    lenth = int.Parse(lbToLie.Text) * 100;
                    while (lenth != YLocation)
                    {
                        if (YLocation > lenth)
                        {
                            YLocation--;
                        }
                        else
                        {
                            YLocation++;
                        }
                        srv.OPC_WritePoint(LOCALSERVER + StackerRead + "D10", YLocation);//写入当前水平坐标
                    }
                    wait(500);
                    lsBRunning.Items.Add("定位完毕,开始放货");
                    srv.OPC_WritePoint(LOCALSERVER + StackerRead + "W8", 4);       //放货
                    srv.OPC_WritePoint(LOCALSERVER + StackerRead + "X1.4", false); //货叉原点
                    wait(800);
                    zero = 1;
                    if (lbToPai.Text.Trim() == "2")
                    {
                        zero = -1;
                    }
                    SetFork(zero);
                    wait(300);
                    lsBRunning.Items.Add("放货完毕,执行完成");
                    srv.OPC_WritePoint(LOCALSERVER + StackerRead + "X0.4", true);  //放货完毕
                    srv.OPC_WritePoint(LOCALSERVER + StackerRead + "X1.3", false); //载货台有货
                    srv.OPC_WritePoint(LOCALSERVER + StackerRead + "X1.4", true);  //货叉原点
                    srv.OPC_WritePoint(LOCALSERVER + StackerRead + "INT18", 0);
                    srv.OPC_WritePoint(LOCALSERVER + StackerRead + "W8", 0);       //空闲
                    wait(200);
                    srv.OPC_WritePoint(LOCALSERVER + StackerRead + "X1.2", true);  //任务完成
                    srv.OPC_WritePoint(LOCALSERVER + StackerWrite + "W52", 0);     //新任务下达
                    IsNewTask = "否";
                    wait(1000);
                }
            }
        }