//private int OnJobNum = Convert.ToInt32(ConfigurationManager.AppSettings["OnJobNum"]); public CRLCRANEConnect(string ipadress, int port, string scno) { try { HsControlServer plcList = new HsControlServer(ipadress); if (!cPLCList.ContainsKey(scno)) { cPLCList.Add(scno, plcList); } else { //如果已存在,更新链接信息 cPLCList[scno] = new HsControlServer(ipadress); } coc.IpAddress = ipadress; coc.Port = port; coc.ScNo = scno; CraneStr crs = new CraneStr(); if (string.IsNullOrEmpty(scno)) { crs.Btid = scno; CraneStrList.Add(crs); } } catch (Exception ex) { NotifyShowEvent?.Invoke("C", $"堆垛机{scno}初始化异常,异常信息为{ex.Message}"); } }
/// <summary> /// 将读取到的数据绑定到堆垛机实体类 /// </summary> /// <param name="btid"></param> /// <param name="buffer"></param> public void BindCraneStr(string btid, byte[] buffer) { CraneStr cst = CraneStrList.Find(cs => cs.Btid == btid); if (cst != null) { cst.Btid = btid; //设备ID cst.Czfs = buffer[2].ToString(); //操作方式(0、未定义 1、维修 2、手动 3、单机自动 4、联机自动) cst.Jdbz = buffer[3].ToString(); //阶段标志(0、待机 1、取货中 2、取货完成 3、放货中 4、放货完成) //cst.Zxrwh = buffer[4] * 256 * 256 * 256 + buffer[4] * 256 * 256 + buffer[6] * 256 + buffer[7]; cst.Zxrwh = buffer[4] * 256 * 256 * 256 + buffer[5] * 256 * 256 + buffer[6] * 256 + buffer[7]; //任务号 cst.Alarm = buffer[8].ToString(); //记录故障报警 cst.Rkyh = "0"; cst.Ckwh = "0"; if (buffer[8].ToString() == "5") { cst.Rkyh = "1"; //入库目标有货 cst.Dqzt = "2"; } else if (buffer[8].ToString() == "6") { cst.Ckwh = "1"; //出库目标无货 cst.Dqzt = "1"; } else if (cst.Alarm != "0") { cst.Dqzt = "4"; } else { cst.Dqzt = "0"; } cst.Dqph = buffer[38].ToString(); //获取堆垛机当前排 cst.Dqlh = buffer[39].ToString(); //获取堆垛机当前列 cst.Dqch = buffer[40].ToString(); //获取堆垛机当前层 if (cst.Czfs == "4") { IssuedCraneTask(cst.Btid, buffer); } } }