|
@@ -542,10 +542,10 @@ namespace MainForm
|
|
|
|
|
|
if (GlobalContext.IsUsePLC3 || GlobalContext.IsUsePLC7)
|
|
if (GlobalContext.IsUsePLC3 || GlobalContext.IsUsePLC7)
|
|
{
|
|
{
|
|
- state_l.Text = "设备状态(左):";
|
|
|
|
- state_r.Text = "设备状态(右):";
|
|
|
|
- state_r.Visible = true;
|
|
|
|
- lblDeviceStates2.Visible = true;
|
|
|
|
|
|
+ //state_l.Text = "设备状态(左):";
|
|
|
|
+ //state_r.Text = "设备状态(右):";
|
|
|
|
+ //state_r.Visible = true;
|
|
|
|
+ //lblDeviceStates2.Visible = true;
|
|
}
|
|
}
|
|
|
|
|
|
//上传操作记录
|
|
//上传操作记录
|
|
@@ -784,12 +784,14 @@ namespace MainForm
|
|
/// 采集到的设备状态
|
|
/// 采集到的设备状态
|
|
/// </summary>
|
|
/// </summary>
|
|
private string _DeviceStates = "未知状态";
|
|
private string _DeviceStates = "未知状态";
|
|
-
|
|
|
|
private string _DeviceStates_Old = "未知状态";
|
|
private string _DeviceStates_Old = "未知状态";
|
|
|
|
|
|
private string _DeviceStates2 = "未知状态";
|
|
private string _DeviceStates2 = "未知状态";
|
|
private string _DeviceStates_Old2 = "未知状态";
|
|
private string _DeviceStates_Old2 = "未知状态";
|
|
|
|
|
|
|
|
+ private static string AlarmStateCode=""; //记录出发故障时的其中一笔警报,上传设备状态用
|
|
|
|
+ private static string AlarmStateName = ""; //记录出发故障时的其中一笔警报,上传设备状态用
|
|
|
|
+
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 获取设备报警数据与获取设备运行信息
|
|
/// 获取设备报警数据与获取设备运行信息
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -903,56 +905,56 @@ namespace MainForm
|
|
|
|
|
|
#region 右工位
|
|
#region 右工位
|
|
|
|
|
|
- if (GlobalContext.IsUsePLC3 || GlobalContext.IsUsePLC7)
|
|
|
|
- {
|
|
|
|
- switch (xmDeviceStateData.right)
|
|
|
|
- {
|
|
|
|
- case XiaomiDeviceState.Uninitialized: // 未初始化状态(未初始状态,需先初始化装备才能运行)
|
|
|
|
- _DeviceStates2 = "未初始化状态";
|
|
|
|
- lblDeviceStates2.Text = _DeviceStates2;
|
|
|
|
- break;
|
|
|
|
- case XiaomiDeviceState.Initializing: // 初始化状态(初始化进行中)
|
|
|
|
- _DeviceStates2 = "初始化状态";
|
|
|
|
- lblDeviceStates2.Text = _DeviceStates2;
|
|
|
|
- break;
|
|
|
|
- case XiaomiDeviceState.Initialized: // 初始化完成状态(初始化完成)
|
|
|
|
- _DeviceStates2 = "初始化完成状态";
|
|
|
|
- lblDeviceStates2.Text = _DeviceStates2;
|
|
|
|
- break;
|
|
|
|
- case XiaomiDeviceState.Running: // 运行状态(正常运行中)
|
|
|
|
- _DeviceStates2 = "运行状态";
|
|
|
|
- lblDeviceStates2.Text = _DeviceStates2;
|
|
|
|
- break;
|
|
|
|
- case XiaomiDeviceState.Paused: // 暂停状态(设备运行中人工操作暂停,进入此状态)
|
|
|
|
- _DeviceStates2 = "暂停状态";
|
|
|
|
- lblDeviceStates2.Text = _DeviceStates2;
|
|
|
|
- break;
|
|
|
|
- case XiaomiDeviceState.Fault: // 故障状态(发生故障后进入此状态,同时停止运行)
|
|
|
|
- _DeviceStates2 = "故障状态";
|
|
|
|
- lblDeviceStates2.Text = _DeviceStates2;
|
|
|
|
- break;
|
|
|
|
- case XiaomiDeviceState.Alarm: // 警报状态(产生报警后进入此状态,同时停止运行)
|
|
|
|
- _DeviceStates2 = "警报状态";
|
|
|
|
- lblDeviceStates2.Text = _DeviceStates2;
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (!_DeviceStates2.Equals(_DeviceStates_Old2))
|
|
|
|
- {
|
|
|
|
- var iotResult = SaveDeviceStateData(stationNameStr, xmDeviceStateData.left,
|
|
|
|
- "right"); // 上传+保存
|
|
|
|
- if (iotResult.Item1 == 1)
|
|
|
|
- {
|
|
|
|
- _DeviceStates_Old2 = _DeviceStates2;
|
|
|
|
- AddMessage_Station(stationNameStr, LogType.Info,
|
|
|
|
- "【设备状态】" + stationNameStr + $"_上传Iot成功!");
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- AddMessage_Station(stationNameStr, LogType.Info,
|
|
|
|
- "【设备状态】" + stationNameStr +
|
|
|
|
- $"_上传Iot失败!报错信息:[{iotResult.Item1}]_{iotResult.Item2}");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ //if (GlobalContext.IsUsePLC3 || GlobalContext.IsUsePLC7)
|
|
|
|
+ //{
|
|
|
|
+ // switch (xmDeviceStateData.right)
|
|
|
|
+ // {
|
|
|
|
+ // case XiaomiDeviceState.Uninitialized: // 未初始化状态(未初始状态,需先初始化装备才能运行)
|
|
|
|
+ // _DeviceStates2 = "未初始化状态";
|
|
|
|
+ // lblDeviceStates2.Text = _DeviceStates2;
|
|
|
|
+ // break;
|
|
|
|
+ // case XiaomiDeviceState.Initializing: // 初始化状态(初始化进行中)
|
|
|
|
+ // _DeviceStates2 = "初始化状态";
|
|
|
|
+ // lblDeviceStates2.Text = _DeviceStates2;
|
|
|
|
+ // break;
|
|
|
|
+ // case XiaomiDeviceState.Initialized: // 初始化完成状态(初始化完成)
|
|
|
|
+ // _DeviceStates2 = "初始化完成状态";
|
|
|
|
+ // lblDeviceStates2.Text = _DeviceStates2;
|
|
|
|
+ // break;
|
|
|
|
+ // case XiaomiDeviceState.Running: // 运行状态(正常运行中)
|
|
|
|
+ // _DeviceStates2 = "运行状态";
|
|
|
|
+ // lblDeviceStates2.Text = _DeviceStates2;
|
|
|
|
+ // break;
|
|
|
|
+ // case XiaomiDeviceState.Paused: // 暂停状态(设备运行中人工操作暂停,进入此状态)
|
|
|
|
+ // _DeviceStates2 = "暂停状态";
|
|
|
|
+ // lblDeviceStates2.Text = _DeviceStates2;
|
|
|
|
+ // break;
|
|
|
|
+ // case XiaomiDeviceState.Fault: // 故障状态(发生故障后进入此状态,同时停止运行)
|
|
|
|
+ // _DeviceStates2 = "故障状态";
|
|
|
|
+ // lblDeviceStates2.Text = _DeviceStates2;
|
|
|
|
+ // break;
|
|
|
|
+ // case XiaomiDeviceState.Alarm: // 警报状态(产生报警后进入此状态,同时停止运行)
|
|
|
|
+ // _DeviceStates2 = "警报状态";
|
|
|
|
+ // lblDeviceStates2.Text = _DeviceStates2;
|
|
|
|
+ // break;
|
|
|
|
+ // }
|
|
|
|
+
|
|
|
|
+ // if (!_DeviceStates2.Equals(_DeviceStates_Old2))
|
|
|
|
+ // {
|
|
|
|
+ // var iotResult = SaveDeviceStateData(stationNameStr, xmDeviceStateData.left,
|
|
|
|
+ // "right"); // 上传+保存
|
|
|
|
+ // if (iotResult.Item1 == 1)
|
|
|
|
+ // {
|
|
|
|
+ // _DeviceStates_Old2 = _DeviceStates2;
|
|
|
|
+ // AddMessage_Station(stationNameStr, LogType.Info,
|
|
|
|
+ // "【设备状态】" + stationNameStr + $"_上传Iot成功!");
|
|
|
|
+ // }
|
|
|
|
+ // else
|
|
|
|
+ // AddMessage_Station(stationNameStr, LogType.Info,
|
|
|
|
+ // "【设备状态】" + stationNameStr +
|
|
|
|
+ // $"_上传Iot失败!报错信息:[{iotResult.Item1}]_{iotResult.Item2}");
|
|
|
|
+ // }
|
|
|
|
+ //}
|
|
|
|
|
|
#endregion 右工位
|
|
#endregion 右工位
|
|
}
|
|
}
|
|
@@ -961,286 +963,6 @@ namespace MainForm
|
|
|
|
|
|
#endregion
|
|
#endregion
|
|
|
|
|
|
-
|
|
|
|
- //if (plc1Alarm.IsConnected) // 检查PLC是否已连接上
|
|
|
|
- //{
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- // DateTime dtNow = DateTime.Now;
|
|
|
|
- // //#region 获取设备运行信息
|
|
|
|
- // //try
|
|
|
|
- // //{
|
|
|
|
- // // LineWorkingData_ThisTime lineWorkingData1 = new LineWorkingData_ThisTime();
|
|
|
|
- // // lineWorkingData1.GUID = Guid.NewGuid().ToString();
|
|
|
|
- // // lineWorkingData1.LineName = GlobalContext.LineCode;
|
|
|
|
-
|
|
|
|
- // // //
|
|
|
|
- // // lineWorkingData1.BootTimeLong = plc1Alarm.ReadHoldingRegisters<float>(5500); // 本次开机时间(整线)D5500 h
|
|
|
|
- // // lineWorkingData1.NormalTimeLong = plc1Alarm.ReadHoldingRegisters<float>(5502); // 本次开机运行时间(整线)D5502 h
|
|
|
|
- // // lineWorkingData1.StandbyTimeLong = plc1Alarm.ReadHoldingRegisters<float>(5504); // 本次开机待机时间(整线)D5504 h
|
|
|
|
- // // lineWorkingData1.FaultTimeLong = plc1Alarm.ReadHoldingRegisters<float>(5506); // 本次开机故障时间(整线)D5506 h
|
|
|
|
- // // lineWorkingData1.MaterialShortageTimeLong = plc1Alarm.ReadHoldingRegisters<float>(5508); // 本次开机缺料时间(整线)D5508 h
|
|
|
|
- // // lineWorkingData1.MaintenanceTimeLong = plc1Alarm.ReadHoldingRegisters<float>(5510); // 本次开机维修时间(整线)D5510 h
|
|
|
|
- // // lineWorkingData1.FaultNumber = plc1Alarm.ReadHoldingRegisters<short>(5514); // 本次开机故障停机次数(整线)D5514
|
|
|
|
- // // lineWorkingData1.OutputNumber = plc1Alarm.ReadHoldingRegisters<short>(5700); // 本次开机产量(整线) D5700
|
|
|
|
- // // lineWorkingData1.QualifiedNumber = plc1Alarm.ReadHoldingRegisters<short>(5704); // 本次开机合格数量(整线) D5704
|
|
|
|
- // // lineWorkingData1.QualifiedRate = plc1Alarm.ReadHoldingRegisters<float>(5710); // 本次开机合格率(整线) D5710
|
|
|
|
- // // lineWorkingData1.DesignRhythm = plc1Alarm.ReadHoldingRegisters<float>(5714); // 设计节拍(整线) D5714
|
|
|
|
- // // lineWorkingData1.RealityRhythm = plc1Alarm.ReadHoldingRegisters<float>(5716); // 本次开机实际节拍(整线) D5716
|
|
|
|
- // // lineWorkingData1.CreateTime = DateTime.Now;
|
|
|
|
-
|
|
|
|
- // // string lineWorkingData1_Str = JsonConvert.SerializeObject(lineWorkingData1);
|
|
|
|
-
|
|
|
|
- // // // UI展示-展示到设备状态页
|
|
|
|
- // // if (string.IsNullOrEmpty(lineWorkingData1_OldStr)) // 软件启动后第一次运行
|
|
|
|
- // // {
|
|
|
|
- // // // 查询数据库最新一条数据,确定是不是更新
|
|
|
|
- // // string qSql = @"SELECT top(1) [GUID]
|
|
|
|
- // // ,[LineName]
|
|
|
|
- // // ,[BootTimeLong]
|
|
|
|
- // // ,[NormalTimeLong]
|
|
|
|
- // // ,[StandbyTimeLong]
|
|
|
|
- // // ,[FaultTimeLong]
|
|
|
|
- // // ,[MaterialShortageTimeLong]
|
|
|
|
- // // ,[MaintenanceTimeLong]
|
|
|
|
- // // ,[FaultNumber]
|
|
|
|
- // // ,[OutputNumber]
|
|
|
|
- // // ,[QualifiedNumber]
|
|
|
|
- // // ,[QualifiedRate]
|
|
|
|
- // // ,[DesignRhythm]
|
|
|
|
- // // ,[RealityRhythm]
|
|
|
|
- // // ,[CreateTime]
|
|
|
|
- // // FROM [LineWorkingData]
|
|
|
|
- // // where [CreateTime] > '{0}'
|
|
|
|
- // // and [LineName]='{1}'
|
|
|
|
- // // order by [CreateTime] desc
|
|
|
|
- // // ";
|
|
|
|
- // // qSql = string.Format(qSql, DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00", lineWorkingData1.LineName);
|
|
|
|
-
|
|
|
|
- // // var ds = SQLHelper_New.Query(qSql, null);
|
|
|
|
- // // if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
|
|
|
|
- // // {
|
|
|
|
- // // var dataDBlast = new LineWorkingData_ThisTime();
|
|
|
|
- // // dataDBlast.GUID = ds.Tables[0].Rows[0][0].ToString(); // 主键
|
|
|
|
- // // dataDBlast.LineName = ds.Tables[0].Rows[0][1].ToString(); // 线体名称
|
|
|
|
- // // dataDBlast.BootTimeLong = Convert.ToSingle(ds.Tables[0].Rows[0][2].ToString()); // 本次开机时间(整线)
|
|
|
|
- // // dataDBlast.CreateTime = Convert.ToDateTime(ds.Tables[0].Rows[0][14].ToString()); // 创建时间
|
|
|
|
-
|
|
|
|
- // // if (lineWorkingData1.BootTimeLong > dataDBlast.BootTimeLong) // 需要更新的情况;不需要更新的走后面的插入
|
|
|
|
- // // {
|
|
|
|
- // // dataDBlast.BootTimeLong = lineWorkingData1.BootTimeLong; // 本次开机时间(整线)
|
|
|
|
- // // dataDBlast.NormalTimeLong = lineWorkingData1.NormalTimeLong; // 本次开机运行时间(整线)
|
|
|
|
- // // dataDBlast.StandbyTimeLong = lineWorkingData1.StandbyTimeLong; // 本次开机待机时间(整线)
|
|
|
|
- // // dataDBlast.FaultTimeLong = lineWorkingData1.FaultTimeLong; // 本次开机故障时间(整线)
|
|
|
|
- // // dataDBlast.MaterialShortageTimeLong = lineWorkingData1.MaterialShortageTimeLong; // 本次开机缺料时间(整线)
|
|
|
|
- // // dataDBlast.MaintenanceTimeLong = lineWorkingData1.MaintenanceTimeLong; // 本次开机维修时间(整线)
|
|
|
|
- // // dataDBlast.FaultNumber = lineWorkingData1.FaultNumber; // 本次开机故障停机次数(整线)
|
|
|
|
- // // dataDBlast.OutputNumber = lineWorkingData1.OutputNumber; // 本次开机产量(整线)
|
|
|
|
- // // dataDBlast.QualifiedNumber = lineWorkingData1.QualifiedNumber; // 本次开机合格数量(整线)
|
|
|
|
- // // dataDBlast.QualifiedRate = lineWorkingData1.QualifiedRate; // 本次开机合格率(整线)
|
|
|
|
- // // dataDBlast.DesignRhythm = lineWorkingData1.DesignRhythm; // 设计节拍(整线)
|
|
|
|
- // // dataDBlast.RealityRhythm = lineWorkingData1.RealityRhythm; // 本次开机实际节拍(整线)
|
|
|
|
-
|
|
|
|
- // // string usql = dataDBlast.ToStringUpdate();
|
|
|
|
- // // SQLHelper_New.ExecuteSQL(usql, null);
|
|
|
|
- // // lineWorkingData1_OldStr = JsonConvert.SerializeObject(dataDBlast);
|
|
|
|
-
|
|
|
|
- // // AddMessage_Station(stationNameStr, LogType.Info, $"更新{BodyRun}完毕![{lineWorkingData1_OldStr}]");
|
|
|
|
- // // //AddMessage_Station(stationNameStr, LogType.Info, $"更新{BodyRun}完毕!");
|
|
|
|
- // // }
|
|
|
|
- // // }
|
|
|
|
- // // else
|
|
|
|
- // // {
|
|
|
|
- // // // 插入
|
|
|
|
- // // SQLHelper_New.ExecuteSQL(lineWorkingData1.ToStringInsert(), null);
|
|
|
|
- // // lineWorkingData1_OldStr = String.Copy(lineWorkingData1_Str);
|
|
|
|
- // // AddMessage_Station(stationNameStr, LogType.Info, $"保存{BodyRun}完毕![{lineWorkingData1_OldStr}]");
|
|
|
|
- // // //AddMessage_Station(stationNameStr, LogType.Info, $"保存{BodyRun}完毕!");
|
|
|
|
- // // }
|
|
|
|
- // // }
|
|
|
|
- // // else if (!lineWorkingData1_Str.Equals(lineWorkingData1_OldStr)) // 非“软件启动后第一次运行”
|
|
|
|
- // // {
|
|
|
|
- // // LineWorkingData_ThisTime lineWorkingData1_Old = string.IsNullOrEmpty(lineWorkingData1_OldStr) ? lineWorkingData1 : JsonConvert.DeserializeObject<LineWorkingData_ThisTime>(lineWorkingData1_OldStr); // 上次的状态信息
|
|
|
|
-
|
|
|
|
- // // //// 本次开机设备运行情况
|
|
|
|
- // // //LineWorkingData1_ThisTime lineWorkingData_UI = JsonConvert.DeserializeObject<LineWorkingData1_ThisTime>(lineWorkingData1_OldStr);
|
|
|
|
- // // //Task.Run(() =>
|
|
|
|
- // // //{
|
|
|
|
- // // // if (Form_Main.formDevAlarm != null && !Form_Main.formDevAlarm.IsDisposed && Form_Main.formDevAlarm.Visible)
|
|
|
|
- // // // {
|
|
|
|
- // // // Form_Main.formDevAlarm.UpdDeviceStatus_ThisTime(lineWorkingData_UI); // UI更新
|
|
|
|
- // // // }
|
|
|
|
- // // //});
|
|
|
|
-
|
|
|
|
- // // // 本日设备运行情况
|
|
|
|
- // // // 存数据库(开机时间>上次的开机时间,则更新上次记录;<则作为新数据插入)
|
|
|
|
- // // if (lineWorkingData1.BootTimeLong > lineWorkingData1_Old.BootTimeLong)
|
|
|
|
- // // {
|
|
|
|
- // // // 更新
|
|
|
|
- // // lineWorkingData1_Old.BootTimeLong = lineWorkingData1.BootTimeLong; // 本次开机时间(整线)
|
|
|
|
- // // lineWorkingData1_Old.NormalTimeLong = lineWorkingData1.NormalTimeLong; // 本次开机运行时间(整线)
|
|
|
|
- // // lineWorkingData1_Old.StandbyTimeLong = lineWorkingData1.StandbyTimeLong; // 本次开机待机时间(整线)
|
|
|
|
- // // lineWorkingData1_Old.FaultTimeLong = lineWorkingData1.FaultTimeLong; // 本次开机故障时间(整线)
|
|
|
|
- // // lineWorkingData1_Old.MaterialShortageTimeLong = lineWorkingData1.MaterialShortageTimeLong; // 本次开机缺料时间(整线)
|
|
|
|
- // // lineWorkingData1_Old.MaintenanceTimeLong = lineWorkingData1.MaintenanceTimeLong; // 本次开机维修时间(整线)
|
|
|
|
- // // lineWorkingData1_Old.FaultNumber = lineWorkingData1.FaultNumber; // 本次开机故障停机次数(整线)
|
|
|
|
- // // lineWorkingData1_Old.OutputNumber = lineWorkingData1.OutputNumber; // 本次开机产量(整线)
|
|
|
|
- // // lineWorkingData1_Old.QualifiedNumber = lineWorkingData1.QualifiedNumber; // 本次开机合格数量(整线)
|
|
|
|
- // // lineWorkingData1_Old.QualifiedRate = lineWorkingData1.QualifiedRate; // 本次开机合格率(整线)
|
|
|
|
- // // lineWorkingData1_Old.DesignRhythm = lineWorkingData1.DesignRhythm; // 设计节拍(整线)
|
|
|
|
- // // lineWorkingData1_Old.RealityRhythm = lineWorkingData1.RealityRhythm; // 本次开机实际节拍(整线)
|
|
|
|
-
|
|
|
|
- // // SQLHelper_New.ExecuteSQL(lineWorkingData1_Old.ToStringUpdate(), null);
|
|
|
|
- // // lineWorkingData1_OldStr = JsonConvert.SerializeObject(lineWorkingData1_Old);
|
|
|
|
- // // AddMessage_Station(stationNameStr, LogType.Info, $"更新{BodyRun}完毕![{lineWorkingData1_OldStr}]");
|
|
|
|
- // // //AddMessage_Station(stationNameStr, LogType.Info, $"更新{BodyRun}完毕!");
|
|
|
|
- // // }
|
|
|
|
- // // else if (lineWorkingData1.BootTimeLong < lineWorkingData1_Old.BootTimeLong)
|
|
|
|
- // // {
|
|
|
|
- // // // 插入
|
|
|
|
- // // SQLHelper_New.ExecuteSQL(lineWorkingData1.ToStringInsert(), null);
|
|
|
|
- // // lineWorkingData1_OldStr = String.Copy(lineWorkingData1_Str);
|
|
|
|
- // // AddMessage_Station(stationNameStr, LogType.Info, $"保存{BodyRun}完毕![{lineWorkingData1_OldStr}]");
|
|
|
|
- // // //AddMessage_Station(stationNameStr, LogType.Info, $"保存{BodyRun}完毕!");
|
|
|
|
- // // }
|
|
|
|
-
|
|
|
|
- // // await Task.Run(() =>
|
|
|
|
- // // {
|
|
|
|
- // // try
|
|
|
|
- // // {
|
|
|
|
- // // if (Form_Main.formDevAlarm != null && !Form_Main.formDevAlarm.IsDisposed && Form_Main.formDevAlarm.Visible)
|
|
|
|
- // // {
|
|
|
|
- // // Form_Main.formDevAlarm.UpdDeviceStatus_Today(); // UI更新
|
|
|
|
- // // }
|
|
|
|
- // // }
|
|
|
|
- // // catch { }
|
|
|
|
- // // });
|
|
|
|
- // // }
|
|
|
|
- // //}
|
|
|
|
- // //catch (Exception ex)
|
|
|
|
- // //{
|
|
|
|
- // // string str = ex.StackTrace;
|
|
|
|
- // // AddMessage_Station(stationNameStr, LogType.Error, $"PLC1_{stationNameStr}_获取设备运行信息出错!错误信息:" + ex.Message.ToString() + "异常位置:" + str.Substring(str.LastIndexOf("\\") + 1, str.Length - str.LastIndexOf("\\") - 1));
|
|
|
|
- // //}
|
|
|
|
- // //#endregion 获取设备运行信息
|
|
|
|
-
|
|
|
|
- // #region 报警数据
|
|
|
|
- // try
|
|
|
|
- // {
|
|
|
|
- // List<DeviceAlarm_Cur> deviceAlarm_Curs = new List<DeviceAlarm_Cur>(); // 同步到报警页面用传输载体
|
|
|
|
- // bool isNeedUpdUI = false; // 是否需要更新历史报警UI
|
|
|
|
-
|
|
|
|
- // // 同步“设备报警信息”到“设备报警临时字典DicAlarms_Cur”
|
|
|
|
- // var dicAlarms_Cur_PLC1 = DicAlarms_Cur[GlobalContext.LineCode];
|
|
|
|
- // for (int i = 0; i < dicAlarms_Cur_PLC1.Count; i++) // 读取
|
|
|
|
- // {
|
|
|
|
- // short shortBuf = plc1Alarm.ReadHoldingRegisters<short>(dicAlarms_Cur_PLC1[i].关联的PLC地址);
|
|
|
|
-
|
|
|
|
- // dicAlarms_Cur_PLC1[i].是否报警 = shortBuf != 0;
|
|
|
|
- // if (dicAlarms_Cur_PLC1[i].上次的运行状态 != dicAlarms_Cur_PLC1[i].是否报警)
|
|
|
|
- // {
|
|
|
|
- // isNeedUpdUI = true; // 需要更新历史报警UI信息
|
|
|
|
- // // 记录
|
|
|
|
- // dicAlarms_Cur_PLC1[i].上次的运行状态 = dicAlarms_Cur_PLC1[i].是否报警;
|
|
|
|
-
|
|
|
|
- // switch (dicAlarms_Cur_PLC1[i].是否报警)
|
|
|
|
- // {
|
|
|
|
- // case true: // 报警
|
|
|
|
- // dicAlarms_Cur_PLC1[i].报警数据 = new AlarmData()
|
|
|
|
- // {
|
|
|
|
- // GUID = Guid.NewGuid().ToString(),
|
|
|
|
- // LineName = GlobalContext.LineCode, // 线体
|
|
|
|
- // AlarmType = dicAlarms_Cur_PLC1[i].报警类型, // 报警类型
|
|
|
|
- // AlarmDesc = dicAlarms_Cur_PLC1[i].报警详情, // 报警内容
|
|
|
|
- // StartTime = dtNow // 开始时间
|
|
|
|
- // };
|
|
|
|
-
|
|
|
|
- // // 传输到页面
|
|
|
|
- // deviceAlarm_Curs.Add(new DeviceAlarm_Cur()
|
|
|
|
- // {
|
|
|
|
- // 线体名称 = dicAlarms_Cur_PLC1[i].报警数据.LineName,
|
|
|
|
- // 报警类型 = dicAlarms_Cur_PLC1[i].报警数据.AlarmType,
|
|
|
|
- // 报警内容 = dicAlarms_Cur_PLC1[i].报警数据.AlarmDesc,
|
|
|
|
- // 开始时间 = dtNow
|
|
|
|
- // });
|
|
|
|
-
|
|
|
|
- // // 新增到数据库
|
|
|
|
- // var data1 = dicAlarms_Cur_PLC1[i].报警数据;
|
|
|
|
- // SaveAlarmDataByDB(stationNameStr, data1, false);
|
|
|
|
- // AddMessage_Station(stationNameStr, LogType.Info, $"更新{BodyAlarm}完毕!");
|
|
|
|
- // break;
|
|
|
|
- // case false: // 消除报警
|
|
|
|
- // if (dicAlarms_Cur_PLC1[i].报警数据 == null || string.IsNullOrEmpty(dicAlarms_Cur_PLC1[i].报警数据.GUID))
|
|
|
|
- // {
|
|
|
|
- // dicAlarms_Cur_PLC1[i].报警数据 = new AlarmData()
|
|
|
|
- // {
|
|
|
|
- // GUID = Guid.NewGuid().ToString(),
|
|
|
|
- // LineName = GlobalContext.LineCode, // 线体
|
|
|
|
- // AlarmType = dicAlarms_Cur_PLC1[i].报警类型, // 报警类型
|
|
|
|
- // AlarmDesc = dicAlarms_Cur_PLC1[i].报警详情, // 报警内容
|
|
|
|
- // StartTime = dtNow, // 开始时间
|
|
|
|
- // EndTime = dtNow, // 开始时间
|
|
|
|
- // PersistTime = 1, // 耗时1s
|
|
|
|
- // };
|
|
|
|
-
|
|
|
|
- // // 新增
|
|
|
|
- // var data2 = dicAlarms_Cur_PLC1[i].报警数据;
|
|
|
|
- // SaveAlarmDataByDB(stationNameStr, data2, false);
|
|
|
|
- // AddMessage_Station(stationNameStr, LogType.Info, $"更新{BodyAlarm}完毕!");
|
|
|
|
- // }
|
|
|
|
- // else
|
|
|
|
- // {
|
|
|
|
- // dicAlarms_Cur_PLC1[i].报警数据.EndTime = dtNow; // 开始时间
|
|
|
|
- // dicAlarms_Cur_PLC1[i].报警数据.PersistTime = Convert.ToInt32((dicAlarms_Cur_PLC1[i].报警数据.EndTime
|
|
|
|
- // - dicAlarms_Cur_PLC1[i].报警数据.StartTime).TotalSeconds); // 耗时s
|
|
|
|
-
|
|
|
|
- // // 修改
|
|
|
|
- // var data3 = dicAlarms_Cur_PLC1[i].报警数据;
|
|
|
|
- // SaveAlarmDataByDB(stationNameStr, data3, true);
|
|
|
|
- // AddMessage_Station(stationNameStr, LogType.Info, $"更新{BodyAlarm}完毕!");
|
|
|
|
- // }
|
|
|
|
- // break;
|
|
|
|
- // default:
|
|
|
|
- // break;
|
|
|
|
- // }
|
|
|
|
- // }
|
|
|
|
- // }
|
|
|
|
- // DicAlarms_Cur[GlobalContext.LineCode] = dicAlarms_Cur_PLC1;
|
|
|
|
-
|
|
|
|
- // // 有新报警则更新
|
|
|
|
- // if (isNeedUpdUI)
|
|
|
|
- // {
|
|
|
|
- // // UI展示 - 展示到设备状态页
|
|
|
|
- // await Task.Run(() =>
|
|
|
|
- // {
|
|
|
|
- // try
|
|
|
|
- // {
|
|
|
|
- // if (Form_Main.formDevAlarm != null && !Form_Main.formDevAlarm.IsDisposed)
|
|
|
|
- // {
|
|
|
|
- // Form_Main.formDevAlarm.UpdDeviceAlarm_Cur(deviceAlarm_Curs); // 报警UI 更新
|
|
|
|
- // if (Form_Main.formDevAlarm.Visible)
|
|
|
|
- // {
|
|
|
|
- // Form_Main.formDevAlarm.UpdDeviceAlarm_History_48H(); // 历史报警UI 更新
|
|
|
|
- // }
|
|
|
|
- // }
|
|
|
|
- // }
|
|
|
|
- // catch { }
|
|
|
|
- // });
|
|
|
|
- // }
|
|
|
|
- // }
|
|
|
|
- // catch (Exception ex)
|
|
|
|
- // {
|
|
|
|
- // string str = ex.StackTrace;
|
|
|
|
- // AddMessage_Station(stationNameStr, LogType.Error, $"PLC1_{stationNameStr}_获取报警数据出错!错误信息:" + ex.Message.ToString() + "异常位置:" + str.Substring(str.LastIndexOf("\\") + 1, str.Length - str.LastIndexOf("\\") - 1));
|
|
|
|
- // }
|
|
|
|
- // #endregion 报警数据
|
|
|
|
-
|
|
|
|
- // UpdatePLCMonitor(1, -2, 1);
|
|
|
|
- //}
|
|
|
|
- //else
|
|
|
|
- //{
|
|
|
|
- // UpdatePLCMonitor(1, -2, 0);
|
|
|
|
- //}
|
|
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
catch (Exception ex)
|
|
{
|
|
{
|
|
@@ -3118,7 +2840,7 @@ namespace MainForm
|
|
iotData.machineState = iot_data.machineState;
|
|
iotData.machineState = iot_data.machineState;
|
|
iotData.work_type = iot_data.work_type;
|
|
iotData.work_type = iot_data.work_type;
|
|
iotData.testStatus = iot_data.testStatus;
|
|
iotData.testStatus = iot_data.testStatus;
|
|
- iotData.beatAction = iot_data.beatAction;
|
|
|
|
|
|
+ iotData.beatAction = 0;
|
|
iotData.beatReturn = 1; //OK
|
|
iotData.beatReturn = 1; //OK
|
|
iotData.fault_codes = iot_data.fault_codes;
|
|
iotData.fault_codes = iot_data.fault_codes;
|
|
(int, string) PLCresult = WriteResultToPlc(plcNo, stationNameStr, tagMesCommName, 1, iotData);
|
|
(int, string) PLCresult = WriteResultToPlc(plcNo, stationNameStr, tagMesCommName, 1, iotData);
|
|
@@ -3141,7 +2863,7 @@ namespace MainForm
|
|
iotData.machineState = iot_data.machineState;
|
|
iotData.machineState = iot_data.machineState;
|
|
iotData.work_type = iot_data.work_type;
|
|
iotData.work_type = iot_data.work_type;
|
|
iotData.testStatus = iot_data.testStatus;
|
|
iotData.testStatus = iot_data.testStatus;
|
|
- iotData.beatAction = iot_data.beatAction;
|
|
|
|
|
|
+ iotData.beatAction = 0;
|
|
iotData.beatReturn = 2; //NG
|
|
iotData.beatReturn = 2; //NG
|
|
iotData.fault_codes = iot_data.fault_codes;
|
|
iotData.fault_codes = iot_data.fault_codes;
|
|
(int, string) PLCresult = WriteResultToPlc(plcNo, stationNameStr, tagMesCommName, 1, iotData);
|
|
(int, string) PLCresult = WriteResultToPlc(plcNo, stationNameStr, tagMesCommName, 1, iotData);
|
|
@@ -3159,7 +2881,7 @@ namespace MainForm
|
|
iotData.machineState = iot_data.machineState;
|
|
iotData.machineState = iot_data.machineState;
|
|
iotData.work_type = iot_data.work_type;
|
|
iotData.work_type = iot_data.work_type;
|
|
iotData.testStatus = iot_data.testStatus;
|
|
iotData.testStatus = iot_data.testStatus;
|
|
- iotData.beatAction = iot_data.beatAction;
|
|
|
|
|
|
+ iotData.beatAction = 0;
|
|
iotData.beatReturn = 2; //NG
|
|
iotData.beatReturn = 2; //NG
|
|
iotData.fault_codes = iot_data.fault_codes;
|
|
iotData.fault_codes = iot_data.fault_codes;
|
|
(int, string) PLCresult = WriteResultToPlc(plcNo, stationNameStr, tagMesCommName, 1, iotData);
|
|
(int, string) PLCresult = WriteResultToPlc(plcNo, stationNameStr, tagMesCommName, 1, iotData);
|