263 lines
19 KiB
C#
263 lines
19 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Threading.Tasks;
|
|||
|
|
|||
|
namespace ShowTrend3.Libs
|
|||
|
{
|
|||
|
public class AnalogSignals
|
|||
|
{
|
|||
|
public int VDP = -1;
|
|||
|
public List<Analog> analogs = new List<Analog>();
|
|||
|
public int[] retAnalogs = new int[0];
|
|||
|
public AnalogSignals(int VDP)
|
|||
|
{
|
|||
|
this.VDP = VDP;
|
|||
|
if (VDP == 49)
|
|||
|
{
|
|||
|
analogs.Add(new Analog() { id = new int[] { 92, 93 }, v = false, n = "Энергия плавильного пролёта", sn = "Эн.пролёта, МВт", s = "МВт", m = 0.1 });
|
|||
|
}
|
|||
|
if (VDP >= 1 && VDP <= 47)
|
|||
|
{
|
|||
|
analogs.Add(new Analog() { id = new int[] { 0, 1 }, v = true, s = "кА", m = 0.1, n = "Ток дуги", sn = "I д" });
|
|||
|
analogs.Add(new Analog() { id = new int[] { 2, 3 }, v = true, s = "В", m = 0.1, n = "Напряжение дуги", sn = "U д" });
|
|||
|
analogs.Add(new Analog() { id = new int[] { 4, 5 }, v = false, s = "А", m = 0.1, n = "Ток рабочего двигателя", sn = "I рд"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 6, 7 }, v = false, s = "В", m = 0.1, n = "U рабочего двигателя", sn = "U рд"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 8, 9 }, v = false, s = "А", m = 0.1, n = "Ток соленоида", sn = "I сол"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 10, 1 }, v = false, s = "В", m = 0.1, n = "U соленоида", sn = "U сол"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 12, 13 }, v = false, s = "кА", m = 0.1, n = "Ток задания", sn = "I рз"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 14, 15 }, v = false, s = "гр.С", m = 1, n = "t кристаллизатора на входе", sn = "t кр.вых"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 16, 17 }, v = false, s = "гр.С", m = 1, n = "t кристаллизатора на выходе", sn = "t кр.вх"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 18, 19 }, v = false, s = "гр.С", m = 1, n = "t вакуум-камеры", sn = "t вак-кам"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 20, 21 }, v = false, s = "гр.С", m = 1, n = "t штока", sn = "t шт"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 22, 23 }, v = false, s = "В", m = 0.1, n = "U контроля", sn = "U конт"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 24, 25 }, v = true, s = "мм", m = 1, n = "Перемещение", sn = "S шт"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 26, 27 }, v = true, s = "мкм.рт.с", m = 0.1, n = "Вакуум", sn = "Вакуум"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 28, 29 }, v = false, s = "В", m = 0.1, n = "Изоляция шток-крышка", sn = "R шт-кр"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 30, 31 }, v = false, s = "В", m = 0.1, n = "Изоляция крышка-камера", sn = "R кр-кам"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 32, 33 }, v = false, s = "м^3/ч", m = 1, n = "Расход воды", sn = "Q в.кр"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 34, 35 }, v = true, s = "", m = 1, n = "Капельные замыкания", sn = "Кап.зам."});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 36, 37 }, v = false, s = "", m = 1, n = "Усреднённая ширина импульсов КЗ", sn = "Кап.зым."});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 38, 39 }, v = false, s = "м^3/ч", m = 0.1, n = "Проток воды фланца", sn = "Qв. фл."});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 40, 41 }, v = false, s = "м^3/ч", m = 0.1, n = "Проток воды штока", sn = "Qв. шт."});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 42, 43 }, v = false, s = "кгс/см^2", m = 0.01, n = "Давление воды крист.+1,5", sn = "P в.кр"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 44, 45 }, v = false, s = "м^3/ч", m = 0.1, n = "Проток воды камеры", sn = "Qв. кам."});
|
|||
|
|
|||
|
analogs.Add(new Analog() { id = new int[] { 58, 59 }, v = false, s = "кА", m = 0.1, n = "Ток задания источника(САУ)", sn = "I з.ист САУ"});
|
|||
|
|
|||
|
analogs.Add(new Analog() { id = new int[] { 62, 63 }, v = false, s = "В", m = 0.1, n = "ПИД-рег. основная уставка", sn = "ПИД-осн"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 64, 65 }, v = false, s = "В", m = 0.1, n = "ПИД-рег. макс. скорость", sn = "ПИД-макс"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 66, 67 }, v = false, s = "гр.С", m = 1, n = "t фланца вакуум-камеры", sn = "t фл."});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 68, 69 }, v = false, s = "гр.С", m = 1, n = "t подставки", sn = "t под."});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 70, 71 }, v = false, s = "м^3/ч", m = 1, n = "Проток воды подставки", sn = "Qв. под."});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 72, 73 }, v = false, s = "А", m = 0.1, n = "Задание соленоида", sn = "Зад. сол."});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 74, 75 }, v = false, s = "кА", m = 1, n = "Ток задания источника(преобраз.)", sn = "I з.ист. преоб."});
|
|||
|
|
|||
|
analogs.Add(new Analog() { id = new int[] { 78, 79 }, v = false, s = "мм.рт.ст", m = 0.1, n = "Вакуум по МЕТРАН-1200", sn = "МЕТРАН-1200"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 80, 81 }, v = false, s = "мм.рт.ст", m = 0.001, n = "Вакуум по МЕТРАН-18,75", sn = "МЕТРАН-18,25"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 82, 83 }, v = false, s = "кгс/см^2", m = 0.1, n = "Давление газа в баллоне", sn = "P г.балл."});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 84, 85 }, v = false, s = "кгс/см^2", m = 0.1, n = "Давление воды поддона", sn = "P в.подд."});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 86, 87 }, v = false, s = "кА", m = 0.1, n = "Задание тока дуги (ЦАП)", sn = "Зад.I, ЦАП"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 88, 89 }, v = false, s = "В", m = 0.1, n = "Задкние скорости рабочего двигателя", sn = "Зад.ск.раб.дв"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 90, 91 }, v = false, s = "А", m = 0.01, n = "Ток двигателя насоса ARPW", sn = "I дв. ARPW"});
|
|||
|
|
|||
|
analogs.Add(new Analog() { id = new int[] { 94, 95 }, v = false, s = "В", m = 1, n = "Среднее напряжение плавления", sn = "U средн, В"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 90, 91 }, v = false, s = "А", m = 1, n = "ГМП: ток катушки 1", sn = "I кат1 ГМП"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 90, 91 }, v = false, s = "А", m = 1, n = "ГМП: ток катушки 2", sn = "I кат2 ГМП"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 90, 91 }, v = false, s = "А", m = 1, n = "ГМП: ток катушки 3", sn = "I кат3 ГМП"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 90, 91 }, v = false, s = "Гц", m = 1, n = "ГМП: частота", sn = "Част. ГМП"});
|
|||
|
}
|
|||
|
if (VDP == 1)
|
|||
|
{
|
|||
|
analogs.Add(new Analog() { id = new int[] { 99, 100 }, v = false, s = "кг", m = 0.1, n = "Масса стружки оставшаяся", sn = "Масс. стр. ост." });
|
|||
|
}
|
|||
|
|
|||
|
if (VDP >= 91 && VDP <= 92)
|
|||
|
{
|
|||
|
analogs.Add(new Analog() { id = new int[] { 80, 81 }, v = false, s = "В", m = 0.1, n = "Дельта U", sn = "dU" });
|
|||
|
for (int i = 0; i < 3; i++) analogs.Add(new Analog() { id = new int[] { i * 2 + 82, i * 2 + 83 }, v = false, s = "кА", m = 0.1, n = "Ток ДБТ" + (i + 1), sn = "I ДБТ" + (i + 1) });
|
|||
|
analogs.Add(new Analog() { id = new int[] { 104, 105 }, v = false, s = "гр.С", m = 0.1, n = "Температура в точке №41", sn = "t41" });
|
|||
|
analogs.Add(new Analog() { id = new int[] { 106, 107 }, v = false, s = "кПа", m = 0.1, n = "Давление водооборота", sn = "p водооб" });
|
|||
|
analogs.Add(new Analog() { id = new int[] { 112, 113 }, v = false, s = "кгс/см^2", m = 0.1, n = "Давление масла над поршнем", sn = "P мнп" });
|
|||
|
analogs.Add(new Analog() { id = new int[] { 114, 115 }, v = false, s = "кгс/см^2", m = 0.1, n = "Давление масла под поршнем", sn = "P мпп" });
|
|||
|
}
|
|||
|
if (VDP >= 93 && VDP <= 94)
|
|||
|
{
|
|||
|
for (int i = 0; i < 2; i++) analogs.Add(new Analog() { id = new int[] { i * 2 + 76, i * 2 + 77 }, v = false, s = "кА", m = 0.1, n = "Ток нижних подводов шина " + (i + 1), sn = "I шина" + i });
|
|||
|
for (int i = 0; i < 4; i++) analogs.Add(new Analog() { id = new int[] { i * 2 + 80, i * 2 + 81 }, v = false, s = "кА", m = 0.1, n = "Ток нижних подводов шина " + (i + 3), sn = "I шина" + (i + 3) });
|
|||
|
for (int i = 0; i < 2; i++) analogs.Add(new Analog() { id = new int[] { i * 2 + 104, i * 2 + 105 }, v = false, s = "кА", m = 0.1, n = "Ток нижних подводов шина " + (i + 7), sn = "I шина" + (i + 7) });
|
|||
|
analogs.Add(new Analog() { id = new int[] { 112, 113 }, v = false, s = "кгс/см^2", m = 0.1, n = "Давление в верх. цилиндре прижима", sn = "P в.цил." });
|
|||
|
analogs.Add(new Analog() { id = new int[] { 114, 115 }, v = false, s = "кгс/см^2", m = 0.1, n = "Давление в нижн. цилиндре прижима", sn = "P в.цил." });
|
|||
|
}
|
|||
|
if (VDP >= 91 && VDP <= 94)
|
|||
|
{
|
|||
|
for (int i = 0; i < 9; i++) analogs.Add(new Analog() { id = new int[] { i * 2, i * 2 + 1 }, v = false, s = "гр.С", m = 0.1, n = "Температура в точке №" + (i + 1), sn = "t" + (i + 1)});
|
|||
|
for (int i = 9; i < 18; i++) analogs.Add(new Analog() { id = new int[] { i * 2, i * 2 + 1 }, v = false, s = "гр.С", m = 0.1, n = "Температура в точке №" + (i + 2), sn = "t" + (i + 2)});
|
|||
|
for (int i = 18; i < 38; i++) analogs.Add(new Analog() { id = new int[] { i * 2, i * 2 + 1 }, v = false, s = "гр.С", m = 0.1, n = "Температура в точке №" + (i + 3), sn = "t" + (i + 3)});
|
|||
|
|
|||
|
analogs.Add(new Analog() { id = new int[] { 88, 89}, v = false, s = "А", m = 1, n = "Ток рабочего двигателя", sn = "I рд"});///??? mnoj
|
|||
|
analogs.Add(new Analog() { id = new int[] { 90, 91 }, v = false, s = "В", m = 0.1, n = "Напряжение рабоч. двигателя", sn = "U рд"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 92, 93 }, v = false, s = "В", m = 0.1, n = "Сопротивление изол. на плавке", sn = "U шт-кр"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 94, 95 }, v = false, s = "кОм", m = 0.1, n = "Сопротивление изол. шток-крышка", sn = "R изол"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 96, 97 }, v = false, s = "В", m = 0.1, n = "Уставка по напряжению дуги", sn = "U уст"});
|
|||
|
|
|||
|
analogs.Add(new Analog() { id = new int[] { 100, 101 }, v = false, s = "мкм.рт.с", m = 0.1, n = "Вакуум по Ceravac", sn = "Ceravac"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 102, 103 }, v = false, s = "кПа", m = 0.1, n = "Вакуум по МЕТРАН-2.5", sn = "МЕТРАН 2.5"});
|
|||
|
|
|||
|
analogs.Add(new Analog() { id = new int[] { 108, 109 }, v = false, s = "гр", m = 0.1, n = "Угол поворота тигля", sn = "П.тиг"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 110, 111 }, v = false, s = "кПа", m = 0.1, n = "Вакуум по МЕТРАН-1200", sn = "МЕТРАН 1200"});
|
|||
|
|
|||
|
analogs.Add(new Analog() { id = new int[] { 116, 117 }, v = true, s = "мм", m = 0.1, n = "Перемещение штока", sn = "S шт"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 118, 119 }, v = false, s = "кВт*ч", m = 1, n = "Затраченная электр. энергия", sn = "Энергия"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 120, 121 }, v = true, s = "кА", m = 0.1, n = "Ток дуги", sn = "I д"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 122, 123 }, v = true, s = "В", m = 0.1, n = "Напряжение дуги", sn = "U д"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 124, 125 }, v = true, s = "мм^3/ч", m = 0.2, n = "Расход воды", sn = "Q в"}); ///???
|
|||
|
analogs.Add(new Analog() { id = new int[] { 126, 127 }, v = true, s = "мкм.рт.с", m = 0.1, n = "Вакуум", sn = "Вакуум"});
|
|||
|
analogs.Add(new Analog() { id = new int[] { 128, 129 }, v = false, s = "кг", m = 1, n = "Вес слитого металла", sn = "Вес"});
|
|||
|
}
|
|||
|
analogs.Sort(SortDelegate);
|
|||
|
}
|
|||
|
public void AddSignals(DateTime d, List<byte?> b)
|
|||
|
{
|
|||
|
for (int e = 0; e < analogs.Count; e++)
|
|||
|
{
|
|||
|
bool flag = false;
|
|||
|
for (int i = 0; i < retAnalogs.Length; i++)
|
|||
|
flag |= (e == retAnalogs[i]);
|
|||
|
if (!flag)
|
|||
|
continue;
|
|||
|
byte?[] temp = new byte?[analogs[e].id.Length];
|
|||
|
for (int i = 0; i < temp.Length; i++)
|
|||
|
temp[i] = b[analogs[e].id[i]];
|
|||
|
analogs[e].AddSignal(d, temp);
|
|||
|
}
|
|||
|
}
|
|||
|
public StringBuilder ReturnListJson()
|
|||
|
{
|
|||
|
StringBuilder a = new StringBuilder();
|
|||
|
a.Append("[");
|
|||
|
foreach (var e in analogs)
|
|||
|
{
|
|||
|
a.Append("{");
|
|||
|
a.Append("\"fn\":\"" + e.n + "\",");
|
|||
|
a.Append("\"sn\":\"" + e.sn + "\",");
|
|||
|
a.Append("\"s\":\"" + e.s + "\",");
|
|||
|
a.Append("\"v\":");
|
|||
|
if (e.v)
|
|||
|
a.Append("true");
|
|||
|
else
|
|||
|
a.Append("false");
|
|||
|
a.Append("},");
|
|||
|
}
|
|||
|
if(a.Length > 1)
|
|||
|
a.Remove(a.Length - 1, 1);
|
|||
|
a.Append("]");
|
|||
|
return a;
|
|||
|
}
|
|||
|
public StringBuilder ReturnResultJson()
|
|||
|
{
|
|||
|
StringBuilder a = new StringBuilder();
|
|||
|
a.Append("[");
|
|||
|
for (int e = 0; e < analogs.Count; e++)
|
|||
|
{
|
|||
|
bool flag = false;
|
|||
|
for (int i = 0; i < retAnalogs.Length; i++)
|
|||
|
flag |= (e == retAnalogs[i]);
|
|||
|
if (!flag)
|
|||
|
continue;
|
|||
|
a.Append("[2,\"x\",\"y\"");
|
|||
|
if (analogs[e].answer.Length > 0)
|
|||
|
a.Append("," + analogs[e].answer);
|
|||
|
a.Append("],");
|
|||
|
}
|
|||
|
if(a.Length > 1)
|
|||
|
a.Remove(a.Length - 1, 1);
|
|||
|
a.Append("]");
|
|||
|
return a;
|
|||
|
}
|
|||
|
|
|||
|
private static int SortDelegate(Analog x, Analog y)
|
|||
|
{
|
|||
|
if (x.id == null || x.id.Length < 1)
|
|||
|
if (y.id == null || y.id.Length < 1) return 0;
|
|||
|
else return 1;
|
|||
|
else
|
|||
|
if (y.id == null || y.id.Length < 1) return -1;
|
|||
|
else return x.id[0].CompareTo(y.id[0]);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
public class Analog
|
|||
|
{
|
|||
|
public int[] id = new int[0];
|
|||
|
public string n = "";
|
|||
|
public string sn = "";
|
|||
|
public string s = "";
|
|||
|
public double m = 1;
|
|||
|
public bool v = true;
|
|||
|
public StringBuilder answer = new StringBuilder();
|
|||
|
public List<(long x, double? y)> Signals = new List<(long, double?)>();
|
|||
|
public DateTime lastDate;
|
|||
|
public void AddSignal(DateTime d, byte?[] lh)
|
|||
|
{
|
|||
|
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
|
|||
|
long x = CustomConverters.JStDateConv(d);
|
|||
|
double? y = lh[0].HasValue && lh[1].HasValue ? n == "Вакуум" ?
|
|||
|
BitConverter.ToUInt16(new byte[] { (byte)lh[0], (byte)lh[1] }, 0) * m :
|
|||
|
BitConverter.ToInt16(new byte[] { (byte)lh[0], (byte)lh[1] }, 0) * m :
|
|||
|
(double?)null;
|
|||
|
try
|
|||
|
{
|
|||
|
if (Signals.Count == 0)
|
|||
|
{
|
|||
|
Signals.Add((x, y));
|
|||
|
return;
|
|||
|
}
|
|||
|
if (y == null)
|
|||
|
{
|
|||
|
Signals.Add((Signals.Last().x, y));
|
|||
|
Signals.Add((x, y));
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
if (Signals.Count < 2 || y != Signals.Last().y ||
|
|||
|
y != Signals[Signals.Count - 2].y ||
|
|||
|
d < lastDate)
|
|||
|
{
|
|||
|
Signals.Add((x, y));
|
|||
|
return;
|
|||
|
}
|
|||
|
Signals.Add((x, y));
|
|||
|
Signals.RemoveAt(Signals.Count - 2);
|
|||
|
}
|
|||
|
finally
|
|||
|
{
|
|||
|
lastDate = d;
|
|||
|
while (Signals.Count > 3)
|
|||
|
{
|
|||
|
string yy = Signals[0].y.HasValue ? Signals[0].y.ToString() : "null";
|
|||
|
if (answer.Length != 0)
|
|||
|
answer.Append(",");
|
|||
|
answer.Append(Signals[0].x + "," + yy);
|
|||
|
Signals.RemoveAt(0);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
public void Finish()
|
|||
|
{
|
|||
|
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
|
|||
|
while (Signals.Count > 0)
|
|||
|
{
|
|||
|
string yy = Signals[0].y.HasValue ? Signals[0].y.ToString() : "null";
|
|||
|
if (answer.Length != 0)
|
|||
|
answer.Append(",");
|
|||
|
answer.Append(Signals[0].x + "," + yy);
|
|||
|
Signals.RemoveAt(0);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|