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