/// <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()); } }
/// <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 }
/// <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()); } }
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()); } }
// Use this for initialization public void Initialize() { SysLog.Log("SysState.Initialize"); stateCurrent = STATE.Title; }