private bool Execute1s() { //Console.WriteLine("1s"); DT = new DateTime(); if (clientStan.GetPlcDateTime(ref DT) == 0) { //Console.WriteLine("Текущее время PLC -> " + DT.ToLongDateString() + " - " + DT.ToLongTimeString()); //Console.WriteLine("Текущее время PLC -> " + DT.ToShortDateString() + " - " + DT.ToLongTimeString()); Console.WriteLine("Текущее время PLC -> " + DT.ToString("yyyy-MM-dd HH:mm:ss.fff")); } #region DB100 var buffer = new byte[20]; int readDB100 = clientStan.DBRead(100, 82, buffer.Length, buffer); if (readDB100 == 0) { //Console.WriteLine("readDB100 read ok"); float db100dbb82_s4 = S7.GetRealAt(buffer, 0); float db100dbb86_s5 = S7.GetRealAt(buffer, 4); float db100dbb90_s3 = S7.GetRealAt(buffer, 8); float db100dbb94_s2 = S7.GetRealAt(buffer, 12); speed4kl = db100dbb82_s4; float db100dbb98_s1 = S7.GetRealAt(buffer, 16); //Console.WriteLine("1 = " + db100dbb98_s1.ToString("F")); //Console.WriteLine("2 = " + db100dbb94_s2.ToString("F")); //Console.WriteLine("3 = " + db100dbb90_s3.ToString("F")); //Console.WriteLine("4 = " + db100dbb82_s4.ToString("F")); //Console.WriteLine("5 = " + db100dbb86_s5.ToString("F")); //System.Diagnostics.Trace.WriteLine("4 кл = " + speed4kl.ToString("F")); } else { Console.WriteLine("readDB100 read error"); System.Diagnostics.Trace.WriteLine(DateTime.Now.ToString() + " -- DB100 read error"); return(false); } #endregion #region DB101 var bufferDB101 = new byte[4]; int readDB101 = clientStan.DBRead(101, 4, bufferDB101.Length, bufferDB101); if (readDB101 == 0) { //Console.WriteLine("readDB101 read ok"); float db101dbd4_h5Work = S7.GetRealAt(bufferDB101, 0); h5w = db101dbd4_h5Work; // Console.WriteLine("H5 work = " + db101dbd4_h5Work.ToString("F")); //System.Diagnostics.Trace.WriteLine("H5 work = " + H5_work.ToString("F")); } else { Console.WriteLine("readDB101 read error"); System.Diagnostics.Trace.WriteLine(DateTime.Now.ToString() + " -- DB101 read error"); return(false); } #endregion #region MD316 var bufferMD316 = new byte[4]; int readMD316 = clientStan.MBRead(316, bufferMD316.Length, bufferMD316); if (readMD316 == 0) { //Console.WriteLine("readMD316 read ok"); float md316_D_tek_mot = S7.GetRealAt(bufferMD316, 0); D_tek_mot = md316_D_tek_mot; //Console.WriteLine("H5 work = " + md316_D_tek_mot.ToString("F")); //System.Diagnostics.Trace.WriteLine("D_tek_mot= " + D_tek_mot.ToString("F")); } else { Console.WriteLine("readMD316 read error"); System.Diagnostics.Trace.WriteLine(DateTime.Now.ToString() + " -- MD316 read error"); return(false); } #endregion #region DB105 var bufferDB105 = new byte[4]; int readDB105 = clientStan.DBRead(105, 20, bufferDB105.Length, bufferDB105); if (readDB105 == 0) { //Console.WriteLine("readDB105 read ok"); float db105dbd20_B_Work = S7.GetRealAt(bufferDB105, 0); Bw = db105dbd20_B_Work; //Console.WriteLine("H5 work = " + db105dbd20_B_Work.ToString("F")); //System.Diagnostics.Trace.WriteLine("B work = " + B_Work.ToString("F")); } else { Console.WriteLine("readDB105 read error"); System.Diagnostics.Trace.WriteLine(DateTime.Now.ToString() + " -- DB105 read error"); return(false); } #endregion #region асчет параметров прокатанного рулона после окончания прокатки if (D_tek_mot > D_pred_mot) { if (D_pred_mot < 0.615) { Time_Start = DT; } } if ((Time_Start != new DateTime()) && (H5_work == 0) && (D_tek_mot > 0.7) && (speed4kl > 2)) { H5_work = h5w; B_Work = Bw; } //Console.WriteLine("Time_Start="+ Time_Start.ToString()); //Console.WriteLine("Time_Stop=" + Time_Stop.ToString()); //Console.WriteLine("D_tek_mot=" + D_tek_mot); //Console.WriteLine("Speed 4kl=" + speed4kl); //Console.WriteLine("H5_work=" + H5_work); //Console.WriteLine("B_Work=" + B_Work); if ((Time_Start != new DateTime()) && (H5_work != 0) && (D_tek_mot < 0.610) && (D_tek_mot < D_pred_mot)) { Ves_Work = (((((D_pred_mot * D_pred_mot) - 0.36F) * 3.141593F) / 4) * (B_Work / 1000)) * 7.85F; Time_Stop = DT; Dlina_Work = ((Ves_Work / 7.85F) / (B_Work / 1000)) / (H5_work / 1000); //System.Diagnostics.Trace.WriteLine("Начало прокатки рулона = " + Time_Start.ToString()); //System.Diagnostics.Trace.WriteLine("Окончание прокатки рулона = " + Time_Stop.ToString()); //System.Diagnostics.Trace.WriteLine("Bес рулона = " + Ves_Work.ToString("F")); //System.Diagnostics.Trace.WriteLine("Длинна рулона = " + Dlina_Work.ToString("F")); #region Передаем в Базу Данных //yyyy - MM - dd HH: mm: ss.fff string strTimeStart = Time_Start.ToString("yyyy-MM-dd HH:mm:ss.fff"); string strTimeStop = Time_Stop.ToString("yyyy-MM-dd HH:mm:ss.fff"); string sql_1secQuery = "INSERT INTO stanm_proiz (dtcontrollerstart, dtcontrollerstop, ves, dlinna, h5, b, speed4kl) VALUES ('" + strTimeStart + "', '" + strTimeStop + "', " + Ves_Work + ", " + Dlina_Work + ", " + H5_work + ", " + B_Work + ", " + speed4kl + ")"; Console.WriteLine(sql_1secQuery); SQLCom = new SqlCommand(sql_1secQuery, SQLCon); int number = SQLCom.ExecuteNonQuery(); Console.WriteLine("Добавлено объектов {0}", number); #endregion H5_work = 0; B_Work = 0; Ves_Work = 0; Dlina_Work = 0; Time_Start = new DateTime(); Time_Stop = new DateTime(); } D_pred_mot = D_tek_mot; #endregion return(true); }
private void TicTimerSQL(object state) { //??????вопрос с dispatcher???????? string numberTable; try { //Console.WriteLine(string.Format("\t\t {0} ({1}) {2}", "SQL 101mc", DateTime.Now - dtSQL, Thread.CurrentThread.ManagedThreadId)); dtSQL = DateTime.Now; //Из критичной секции получаем значения из PLC Thread tSQL = new Thread(BufferSQLToBufferPLC); tSQL.Start(); if (bufferSQL == null) { Console.WriteLine("Кол-во элементтов - 0 "); } else { if (blRulonSaveData101ms) { //Формируем строку для таблицы и ее записываем при условии что начата прокатка рулона DataRow dr101ms = dt101ms.NewRow(); dr101ms["dtStan"] = DateTime.Now; foreach (var item in dic101ms) { if (item.Value.floatdata) { //Console.WriteLine(item.Key + " = " + item.Value.startbit + " - " + item.Value.coefficient); float a = (float)(BitConverter.ToInt16(bufferSQL, item.Value.startbit)) / item.Value.coefficient; //Console.WriteLine(a); dr101ms[item.Key] = a; } else { //Console.WriteLine(item.Key + " = " + item.Value.startbit + " - " + item.Value.coefficient); dr101ms[item.Key] = (BitConverter.ToInt16(bufferSQL, item.Value.startbit)) / item.Value.coefficient; } } dt101ms.Rows.Add(dr101ms); // Console.WriteLine(" Кол-во строк в таблице=" + dt101ms.Rows.Count); } //Console.WriteLine("В массиве строчек "+dt101ms.Rows.Count); if (PasportRulona) { D_tek_mot = (float)(BitConverter.ToInt16(bufferSQL, 20)) / 1000; h5w = (float)(BitConverter.ToInt16(bufferSQL, 12)) / 1000; speed4kl = (float)(BitConverter.ToInt16(bufferSQL, 6)) / 100; Bw = BitConverter.ToInt16(bufferSQL, 14); #region Формирование признака окончания прокатки рулона if (D_tek_mot > D_pred_mot) { if (D_tek_mot < 0.615) { Time_Start = DateTime.Now; blRulonSaveData101ms = true; //включаем сбор данных по прокатке рулона } } //Console.WriteLine("Time_Start=" + Time_Start + " H5_work=" + H5_work + " D_tek_mot=" + D_tek_mot + " D_pred_mot=" + D_pred_mot + " speed4kl=" + speed4kl); if ((Time_Start != new DateTime()) && (H5_work == 0) && (D_tek_mot > 0.7) && (speed4kl > 2)) { H5_work = h5w; B_Work = Bw; } #endregion #region Окончание прокатки рулона //Console.WriteLine("Time_Start="+ Time_Start+ " H5_work="+ H5_work+ " D_tek_mot=" + D_tek_mot+ " D_pred_mot=" + D_pred_mot); if ((Time_Start != new DateTime()) && (H5_work != 0) && (D_tek_mot < 0.610) && (D_tek_mot < D_pred_mot)) { #region Формируем шифр таблицы (yyyyMMddсмена) if (Convert.ToInt32(DateTime.Now.ToString("HH")) >= 7 && Convert.ToInt32(DateTime.Now.ToString("HH")) < 19) { numberTable = DateTime.Now.ToString("yyyyMMdd") + "2"; } else if (Convert.ToInt32(DateTime.Now.ToString("HH")) < 7) { numberTable = DateTime.Now.ToString("yyyyMMdd") + "1"; } else if (Convert.ToInt32(DateTime.Now.ToString("HH")) >= 19) { numberTable = DateTime.Now.AddDays(1).ToString("yyyyMMdd") + "1"; } #endregion //Time_Stop = DateTime.Now; Console.BackgroundColor = ConsoleColor.Blue; Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("Время начала записи SQL=" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")); Ves_Work = (((((D_pred_mot * D_pred_mot) - 0.36F) * 3.141593F) / 4) * (B_Work / 1000)) * 7.85F; Time_Stop = DateTime.Now; Dlina_Work = ((Ves_Work / 7.85F) / (B_Work / 1000)) / (H5_work / 1000); //Ellipse101ms.Fill = onOK; #region Формируем данные для передачи в Базу Данных //yyyy - MM - dd HH: mm: ss.fff string strTimeStart = Time_Start.ToString("yyyy-MM-dd HH:mm:ss.fff"); string strTimeStop = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); TimeSpan tp = Time_Stop.Subtract(Time_Start); double dbltp = tp.TotalMilliseconds; Console.BackgroundColor = ConsoleColor.Blue; Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("Время сбора информации (ms):" + dbltp.ToString()); Console.WriteLine("Кол-во строк полученных в системе:" + dt101ms.Rows.Count.ToString()); Console.WriteLine("Среднее время цикла обновления данных:" + (dbltp / (dt101ms.Rows.Count)).ToString()); Console.ResetColor(); string strNumberRulon = DateTime.Now.ToString("yyyyMMdd") + Time_Start.ToString("HHmm") + DateTime.Now.ToString("HHmm"); #endregion //TODO после записи удаляем таблицу и заново создаем dt101ms.Clear(); Console.WriteLine("Очистка таблицы"); //CreateTable(); Console.WriteLine("Кол-во строк в таблице после очистки - " + dt101ms.Rows.Count.ToString()); } D_pred_mot = D_tek_mot; #endregion } } } catch (NullReferenceException e) { Console.WriteLine("ytne"); } catch (Exception ex) { LogSystem.Write("Stan(101ms)-" + ex.Source, Direction.ERROR, "Stan(101ms) Error-" + ex.Message); } }