示例#1
0
 /// <summary>
 /// 根据变量ID获取变量的值
 /// </summary>
 /// <param name="id"></param>
 /// <returns></returns>
 public string getVal(int id)
 {
     try
     {
         L1tag curitem = listTag.Find(o => o.id == id);
         //根据扫描周期、数据类型,返回变量的值
         if (curitem.scanrate >= 1)
         {
             if (curitem.datatype == 1)
             {
                 return((Math.Round(Convert.ToDouble(KepGroup.OPCItems.GetOPCItem(curitem.itmHandleServer).Value), 2)).ToString());
             }
             else if (curitem.datatype == 0)
             {
                 return((Convert.ToInt32(KepGroup.OPCItems.GetOPCItem(curitem.itmHandleServer).Value)).ToString());
             }
             else
             {
                 return(KepGroup.OPCItems.GetOPCItem(curitem.itmHandleServer).Value.ToString());
             }
         }
         else
         {
             if (curitem.datatype == 1)
             {
                 return((Math.Round(Convert.ToDouble(KepEventGroup.OPCItems.GetOPCItem(curitem.itmHandleServer).Value), 2)).ToString().ToString());
             }
             else if (curitem.datatype == 0)
             {
                 return((Convert.ToInt32(KepEventGroup.OPCItems.GetOPCItem(curitem.itmHandleServer).Value)).ToString());
             }
             else
             {
                 return(KepEventGroup.OPCItems.GetOPCItem(curitem.itmHandleServer).Value.ToString());
             }
         }
     }
     catch (Exception ex)
     {
         SysLog.Log(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "--变量:" + id + ";getVal方法获取值时出错" + ex.ToString());
         return("获取值时出错:" + ex.ToString());
     }
 }
示例#2
0
        /// <summary>
        /// 大包缝,可以理解为各流开浇时刻,将流的下一炉号赋给当前炉号
        /// </summary>
        /// <param name="status"></param>
        public void acceptLadlefeng(int status)
        {
            //保存到数据库
            double    L1T     = ccmCutStrand_1.getTrack();
            double    L2T     = ccmCutStrand_2.getTrack();
            double    L3T     = ccmCutStrand_3.getTrack();
            double    L4T     = ccmCutStrand_4.getTrack();
            oraDbHelp service = new oraDbHelp();

            service.connectionString = "Data Source = 192.168.48.117/XGMES; User Id = XGMES; Password =XGMES;";
            string exeSql = " insert into CUT_LADLEFENG_DATA(CCMID,LADLEFENG,TRACK_1ST,TRACK_2ST,TRACK_3ST,TRACK_4ST) ";

            exeSql += " values('" + CCMID + "'," + status + "," + L1T + "," + L2T + "," + L3T + "," + L4T + ") ";
            service.Update(exeSql);

            #region 流炉号变更

            if (ccmCutStrand_1.heatid == "" || ccmCutStrand_1.heatid == null)
            {
                oraDbHelp service1       = new oraDbHelp();
                string    selectSql      = " select heatid from(select heatid, PRODUCTIONDATE from cccm_base_data  where ccmid = '" + CCMID + "' order by PRODUCTIONDATE desc)  where rownum <= 2";
                var       steelGradeInfo = service1.Query(selectSql);
                if (steelGradeInfo != null && steelGradeInfo.Tables.Count > 0 && steelGradeInfo.Tables[0].Rows.Count > 0)
                {
                    ccmCutStrand_1.heatid = steelGradeInfo.Tables[0].Rows[1]["heatid"].ToString();
                    ccmCutStrand_2.heatid = steelGradeInfo.Tables[0].Rows[1]["heatid"].ToString();
                    ccmCutStrand_3.heatid = steelGradeInfo.Tables[0].Rows[1]["heatid"].ToString();
                    ccmCutStrand_4.heatid = steelGradeInfo.Tables[0].Rows[1]["heatid"].ToString();
                }
            }


            #region 记录大包缝数据
            // insert into cut_ladlefenginfo(ccmid,strandid,heatid,endtrack)
            //values('S63', 1, '99', 33.3)
            try
            {
                var    db  = new sqlDbHelp();
                string sql = "";

                if (ccmCutStrand_1.strandstatus == 1)
                {
                    ladleFeng s1ladlefeng = new ladleFeng();
                    s1ladlefeng.heatid     = ccmCutStrand_1.heatid;
                    s1ladlefeng.startTrack = L1T;
                    ccmCutStrand_1.listLadleFeng.Add(s1ladlefeng);
                    try
                    {
                        sql  = " insert into cut_ladlefenginfo(ccmid,strandid,heatid,endtrack) ";
                        sql += " values('" + CCMID + "', 1, '" + s1ladlefeng.heatid + "', " + s1ladlefeng.startTrack + ") ";
                        db.ExeSql(sql);
                    }
                    catch (Exception ex)
                    {
                        SysLog.Log(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "-- 铸机:" + CCMID + ";insert into cut_ladlefenginfo方法出错1" + ex.ToString());
                    }
                }

                if (ccmCutStrand_2.strandstatus == 1)
                {
                    ladleFeng s2ladlefeng = new ladleFeng();
                    s2ladlefeng.heatid     = ccmCutStrand_2.heatid;
                    s2ladlefeng.startTrack = L2T;
                    ccmCutStrand_2.listLadleFeng.Add(s2ladlefeng);

                    try
                    {
                        sql  = " insert into cut_ladlefenginfo(ccmid,strandid,heatid,endtrack) ";
                        sql += " values('" + CCMID + "', 2, '" + s2ladlefeng.heatid + "', " + s2ladlefeng.startTrack + ") ";
                        db.ExeSql(sql);
                    }
                    catch (Exception ex)
                    {
                        SysLog.Log(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "-- 铸机:" + CCMID + ";insert into cut_ladlefenginfo方法出错2" + ex.ToString());
                    }
                }

                if (ccmCutStrand_3.strandstatus == 1)
                {
                    ladleFeng s3ladlefeng = new ladleFeng();
                    s3ladlefeng.heatid     = ccmCutStrand_3.heatid;
                    s3ladlefeng.startTrack = L3T;
                    ccmCutStrand_3.listLadleFeng.Add(s3ladlefeng);
                    try
                    {
                        sql  = " insert into cut_ladlefenginfo(ccmid,strandid,heatid,endtrack) ";
                        sql += " values('" + CCMID + "', 3, '" + s3ladlefeng.heatid + "', " + s3ladlefeng.startTrack + ") ";
                        db.ExeSql(sql);
                    }
                    catch (Exception ex)
                    {
                        SysLog.Log(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "-- 铸机:" + CCMID + ";insert into cut_ladlefenginfo方法出错3" + ex.ToString());
                    }
                }

                if (ccmCutStrand_4.strandstatus == 1)
                {
                    ladleFeng s4ladlefeng = new ladleFeng();
                    s4ladlefeng.heatid     = ccmCutStrand_4.heatid;
                    s4ladlefeng.startTrack = L4T;
                    ccmCutStrand_4.listLadleFeng.Add(s4ladlefeng);
                    try
                    {
                        sql  = " insert into cut_ladlefenginfo(ccmid,strandid,heatid,endtrack) ";
                        sql += " values('" + CCMID + "', 4, '" + s4ladlefeng.heatid + "', " + s4ladlefeng.startTrack + ") ";
                        db.ExeSql(sql);
                    }
                    catch (Exception ex)
                    {
                        SysLog.Log(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "-- 铸机:" + CCMID + ";insert into cut_ladlefenginfo方法出错4" + ex.ToString());
                    }
                }
            }
            catch (Exception ex)
            {
                SysLog.Log(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "-- 铸机:" + CCMID + ";insert into cut_ladlefenginfo方法出错5" + ex.ToString());
            }
            #endregion

            if (heatid == "" || heatid == null)
            {
                oraDbHelp service1       = new oraDbHelp();
                string    selectSql      = " select heatid from(select heatid, PRODUCTIONDATE from cccm_base_data  where ccmid = '" + CCMID + "' order by PRODUCTIONDATE desc)  where rownum = 1";
                var       steelGradeInfo = service1.Query(selectSql);
                if (steelGradeInfo != null && steelGradeInfo.Tables.Count > 0 && steelGradeInfo.Tables[0].Rows.Count > 0)
                {
                    heatid = steelGradeInfo.Tables[0].Rows[0]["heatid"].ToString();
                }
            }

            ccmCutStrand_1.heatid = heatid;
            ccmCutStrand_2.heatid = heatid;
            ccmCutStrand_3.heatid = heatid;
            ccmCutStrand_4.heatid = heatid;

            #endregion
        }
示例#3
0
        /// <summary>
        /// 各流切割状态的变化
        /// </summary>
        /// <param name="cutStatus"></param>
        public void acceptCutStatus(int cutStatus)
        {
            //将流号,切割状态、跟踪值保存到数据库
            double billet_length  = getValue(valid_billetLength);
            double track_value    = getValue(valid_trackvalue);
            double track          = getValue(valid_track);
            string curheatid      = heatid;
            double yuanPiTouTrack = pitouTrack;
            double yuanPiWeiTrack = 0;
            double dabaofeng      = 0;

            try
            {
                oraDbHelp service = new oraDbHelp();
                service.connectionString = "Data Source = 192.168.48.117/XGMES; User Id = XGMES; Password =XGMES;";
                string exeSql = " insert into CUT_STRAND_DATA(CCMID, STRANDID, STATUS, BILLETLENGTH, TRACKVALUE) ";
                exeSql += " values('" + CCMID + "', " + strandid + ", " + cutStatus + ", " + billet_length + ", " + track_value + ") ";
                service.Update(exeSql);


                if (cutStatus == 3)
                {
                    #region 切割时,铸坯位置的跟踪计算
                    if (strandstatus == 1)
                    {
                        //正常浇注模式,坯头跟踪值,为跟踪值-固定值
                        pitouTrack = track - zhupichangdu;
                        zhupiStart = zhupichangdu;
                    }
                    else
                    {
                        //拉尾坯时,坯头跟踪值,原坯头跟踪值+定尺
                        pitouTrack = pitouTrack + billet_length;
                        zhupiStart = zhupichangdu;
                        //坯尾的位置:固定长度--(实际红坯的长度)
                        zhupiEnd = zhupichangdu - (track - pitouTrack);
                    }
                    #endregion
                    yuanPiWeiTrack = pitouTrack;
                    #region 切割时,对大包缝的判断
                    #endregion
                    if (listLadleFeng.Count > 0)
                    {
                        dabaofeng = listLadleFeng[0].startTrack;
                        //如果小于大包缝的跟踪,则使用大包缝的炉号
                        if (yuanPiWeiTrack < listLadleFeng[0].startTrack)
                        {
                            curheatid = listLadleFeng[0].heatid;
                        }
                        //大包缝在中间时
                        else if (yuanPiWeiTrack >= listLadleFeng[0].startTrack && yuanPiTouTrack < listLadleFeng[0].startTrack)
                        {
                            double zhongdian = (yuanPiWeiTrack - yuanPiTouTrack) / 2 + yuanPiTouTrack;
                            if (zhongdian < listLadleFeng[0].startTrack)
                            {
                                curheatid = listLadleFeng[0].heatid;
                            }
                            else
                            {
                                //如果存在两个大包缝,则用第二个
                                if (listLadleFeng.Count > 1)
                                {
                                    curheatid = listLadleFeng[1].heatid;
                                }
                            }
                            #region 在数据库中将此状态置为1
                            //update cut_ladlefenginfo set status=1,u_ts='1' where heatid='' and strandid=1
                            try
                            {
                                var    db  = new sqlDbHelp();
                                string sql = "update cut_ladlefenginfo set status=1,u_ts='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "' where heatid='" + listLadleFeng[0].heatid + "' and strandid=" + strandid + "";
                                db.ExeSql(sql);
                            }
                            catch (Exception ex)
                            {
                                SysLog.Log(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "-- 铸机:" + CCMID + ";流号:" + strandid + ";acceptCutStatus-update cut_ladlefenginfo方法出错" + ex.ToString());
                            }
                            #endregion
                            //移除第一个大包缝
                            listLadleFeng.RemoveAt(0);
                            //如果有第二个大包缝,则继续移除
                            if (listLadleFeng.Count > 0)
                            {
                                if (yuanPiWeiTrack >= listLadleFeng[0].startTrack)
                                {
                                    listLadleFeng.RemoveAt(0);
                                }
                            }
                        }
                    }
                    try
                    {
                        var    dbhelp = new sqlDbHelp();
                        string inSql  = "insert into cut_info(ccmid,strandid,heatid,toutrack,weitrack,fengtrack) ";
                        inSql += "values('" + CCMID + "', " + strandid + ", '" + curheatid + "', " + yuanPiTouTrack + "," + yuanPiWeiTrack + ", " + dabaofeng + ")";
                        dbhelp.ExeSql(inSql);
                    }
                    catch (Exception ex)
                    {
                        SysLog.Log(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "-- 铸机:" + CCMID + ";流号:" + strandid + ";acceptCutStatus-insert into cut_info方法出错" + ex.ToString());
                    }
                }
            }
            catch (Exception ex)
            {
                SysLog.Log(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "-- 铸机:" + CCMID + ";流号:" + strandid + ";acceptCutStatus方法出错" + ex.ToString());
            }
        }
示例#4
0
文件: OPCSvr.cs 项目: rcw0125/opcSvr
        public void readval(string i, object val)
        {
            try
            {
                #region 5#机大包剩钢事件
                if (i == "78")
                {
                    if (Convert.ToInt32(val) == 1)
                    {
                        ccm5dabaoshenggang.GetInstance().calData(1);
                    }
                    return;
                }
                if (i == "79")
                {
                    if (Convert.ToInt32(val) == 1)
                    {
                        ccm5dabaoshenggang.GetInstance().calData(0);
                    }
                    return;
                }
                #endregion

                #region 精炼炉电耗事件
                if (i == "1")
                {
                    lf1dianhao.GetInstance().calDianhao(Convert.ToInt32(val));
                    SysLog.Log(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "----1#精炼炉电耗--变量:" + i + ";值:" + val.ToString());
                    return;
                }
                if (i == "3")
                {
                    lf2dianhao.GetInstance().calDianhao(Convert.ToInt32(val));
                    SysLog.Log(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "----2#精炼炉电耗--变量:" + i + ";值:" + val.ToString());
                    return;
                }
                if (i == "5")
                {
                    lf3dianhao.GetInstance().calDianhao(Convert.ToInt32(val));
                    SysLog.Log(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "----3#精炼炉电耗--变量:" + i + ";值:" + val.ToString());
                    return;
                }
                if (i == "7")
                {
                    lf4dianhao.GetInstance().calDianhao(Convert.ToInt32(val));
                    SysLog.Log(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "----4#精炼炉电耗--变量:" + i + ";值:" + val.ToString());
                    return;
                }

                if (i == "9")
                {
                    lf5dianhao.GetInstance().calDianhao(Convert.ToInt32(val));
                    SysLog.Log(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "----5#精炼炉电耗--变量:" + i + ";值:" + val.ToString());
                    return;
                }

                #endregion

                #region 废钢场称重事件
                if (i == "89")
                {
                    fg5weight.GetInstance().calWeight(Convert.ToDouble(val));
                    return;
                }

                #endregion

                #region 3#机切割优化状态采集事件 (已不再使用)
                //3#机大包到达
                //if (i == "88")
                //{
                //    if (Convert.ToInt32(val) == 1)
                //    {
                //        ccm3cut.GetInstance().acceptCasterStatus(1);
                //    }
                //    return;
                //}
                ////3#机大包开浇
                //if (i == "89")
                //{
                //    if (Convert.ToInt32(val) == 1)
                //    {
                //        ccm3cut.GetInstance().acceptCasterStatus(2);
                //    }
                //    return;
                //}
                ////3#机大包停浇
                //if (i == "90")
                //{
                //    if (Convert.ToInt32(val) == 1)
                //    {
                //        ccm3cut.GetInstance().acceptCasterStatus(3);
                //    }
                //    return;
                //}

                ////3#机大包接缝状态
                //if (i == "91")
                //{
                //    if (Convert.ToInt32(val) == 1)
                //    {
                //        ccm3cut.GetInstance().acceptLadlefeng(Convert.ToInt32(val));
                //    }
                //    return;
                //}

                ////3#机1流切割状态
                //if (i == "92")
                //{
                //    ccm3cut.GetInstance().ccmCutStrand_1.acceptCutStatus(Convert.ToInt32(val));
                //    return;
                //}
                ////3#机1流开浇状态
                //if (i == "93")
                //{
                //    ccm3cut.GetInstance().ccmCutStrand_1.acceptStrandStatus(Convert.ToInt32(val));
                //    return;
                //}

                ////3#机2流切割状态
                //if (i == "98")
                //{
                //    ccm3cut.GetInstance().ccmCutStrand_2.acceptCutStatus(Convert.ToInt32(val));
                //    return;
                //}
                ////3#机2流开浇状态
                //if (i == "99")
                //{
                //    ccm3cut.GetInstance().ccmCutStrand_2.acceptStrandStatus(Convert.ToInt32(val));
                //    return;
                //}

                ////3#机3流切割状态
                //if (i == "104")
                //{
                //    ccm3cut.GetInstance().ccmCutStrand_3.acceptCutStatus(Convert.ToInt32(val));
                //    return;
                //}
                ////3#机3流开浇状态
                //if (i == "105")
                //{
                //    ccm3cut.GetInstance().ccmCutStrand_3.acceptStrandStatus(Convert.ToInt32(val));
                //    return;
                //}

                ////3#机4流切割状态
                //if (i == "110")
                //{
                //    ccm3cut.GetInstance().ccmCutStrand_4.acceptCutStatus(Convert.ToInt32(val));
                //    return;
                //}
                ////3#机4流开浇状态
                //if (i == "111")
                //{
                //    ccm3cut.GetInstance().ccmCutStrand_4.acceptStrandStatus(Convert.ToInt32(val));
                //    return;
                //}
                #endregion

                if (val == null)
                {
                    return;
                }
                //L1tag curitem = listTag.Find(o => o.id == Convert.ToInt16(i));
                //if (curitem.datatype == 0)
                //{
                //    savedata(Convert.ToInt16(i), Convert.ToInt32(val));
                //}
                //else
                //{
                //    savedata(Convert.ToInt16(i), Math.Round(Convert.ToDouble(val), 3));
                //}
                ////如果扫描周期小于1,按事件采集的,则不向数据库插入数据
                //if (curitem.scanrate < 1)
                //{
                //    return;
                //}
                //if ((DateTime.Now - curitem.lasttime).TotalSeconds >= curitem.scanrate)
                //{
                //    curitem.lasttime = DateTime.Now;
                //    if (curitem.datatype == 0)
                //    {
                //        savedata(Convert.ToInt16(i), Convert.ToInt32(val));
                //    }
                //    else
                //    {
                //        savedata(Convert.ToInt16(i), Math.Round(Convert.ToDouble(val), 3));
                //    }

                //}
            }
            catch (Exception ex)
            {
                //throw new Exception("处理数据变化时出错:" + ex.ToString());
                SysLog.Log(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "--变量:" + i + ";值:" + val.ToString() + "readval方法处理数据变化时出错" + ex.ToString());
            }
        }
示例#5
0
 // Use this for initialization
 public void Initialize()
 {
     SysLog.Log("SysState.Initialize");
     stateCurrent = STATE.Title;
 }