quanzhou
2025-08-29 bd125c728f48a21729fbc12122b5c340059a9d13
src/Bro.M141.Process/M141Process.cs
@@ -198,6 +198,7 @@
            Dictionary<string, List<int>> StateDIC = new Dictionary<string, List<int>>();
            List<string> AlarmTypeList = new List<string>();
            int numplc = 0;
            while (true)
@@ -297,9 +298,7 @@
                                var alrams = item1.AlarmDetails;
                                var plcdev = DeviceCollection.FirstOrDefault(u => u.Id == item1.plcname) as PLCBase;
                                foreach (var item in alrams.GroupBy(u => u.address))
                                {
                                    int add = item.Key;
@@ -340,40 +339,32 @@
                                    }
                                    //if (!StateDIC.ContainsKey(plcdev.Name))
                                    //{
                                    //       StateDIC[plcdev.Name] = new List<int>();
                                    //}
                                }
                                List<int> list = new List<int>();
                                Dictionary<string, AlarmTypeData> AlarmType = new Dictionary<string, AlarmTypeData>();
                                List<int> list = new List<int>();
                                foreach (var item in alrams)
                                {
                                    if (!AlarmType.ContainsKey(item.alarmtype))
                                    string key = item.alarmtype;
                                    if (!AlarmType.TryGetValue(key, out var alarmData))
                                    {
                                        AlarmType.Add(item.alarmtype, new AlarmTypeData()
                                        // 不存在,创建新的
                                        alarmData = new AlarmTypeData()
                                        {
                                            CSVhead = csvhead,
                                            CSVdata = csvdata,
                                        });
                                        };
                                        AlarmType.Add(item.alarmtype, alarmData);
                                        LogAsync(DateTime.Now, EnumHelper.LogLevel.Detail, $"报警{item.alarmname}类别{key}作为key加入AlarmType字典");
                                    }
                                    if (AlarmType.ContainsKey(item.alarmtype))
                                    {
                                        AlarmType[item.alarmtype].CSVhead += $",{item.alarmname}";
                                    alarmData.CSVhead += $",{item.alarmname}";
                                    alarmData.CSVdata += $",{(item.value == 1 ? "1" : "")}";
                                    alarmData.AlarmTypeValue.Add(item.value);
                                        AlarmType[item.alarmtype].CSVdata += $",{(item.value == 1 ? "1" : "")}";
                                        AlarmType[item.alarmtype].AlarmTypeValue.Add(item.value);
                                        LogAsync(DateTime.Now, EnumHelper.LogLevel.Detail, $"报警类别{item.alarmtype};数值{item.value}加入字典:AlarmType");
                                    }
                                }
                                foreach(var item in AlarmType.Keys)
                                {
@@ -384,13 +375,13 @@
                                    if (!StateDIC[key].SequenceEqual(list))
                                    {
                                        LogAsync(DateTime.Now, EnumHelper.LogLevel.Detail, $"{plcdev.Name}报警类型:{item}的信号发生变化");
                                        LogAsync(DateTime.Now, EnumHelper.LogLevel.Detail, $"{plcdev.Name}报警类型:{item}的信号发生变化,保存的数据为{AlarmType[item].CSVdata}");
                                        StateDIC[key].Clear();
                                        StateDIC[key].AddRange(list);
                                        CSVRecordAsync($"PLCstate_{key}.csv", AlarmType[item].CSVhead, AlarmType[item].CSVdata);
                                        CSVRecordAsync($"PLCstate_{DateTime.Now.ToString("yyyyMMdd")}_{key}.csv", AlarmType[item].CSVdata, AlarmType[item].CSVhead);
                                        var showdata = alrams.Where(u => u.value == 1).Select(u => u.alarmname).ToList();
@@ -411,9 +402,9 @@
                                }                                
                            }
                            catch
                            catch(Exception EXC)
                            {
                                LogAsync(DateTime.Now, EnumHelper.LogLevel.Error, $"PLC报警存储记录发生异常 {EXC.ToString()}");
                            }
                        }
                    }
@@ -449,7 +440,7 @@
        public class AlarmTypeData
        {
            public List <int> AlarmTypeValue;
            public List <int> AlarmTypeValue = new List<int>();
            public string CSVhead;