/// <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>()); } }
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) { } } }
/// <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); } }
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); } }
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); } } }