|
|
- using Aborlen.Model;
- using FrameWork.Log;
- using Monitor.FrameWork.Cache;
- using SqlSugar;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
-
- namespace Aborlen.PlcCommunicationInit
- {
- public partial class WorkStation : StationBase
- {
-
- Dictionary<string, DateTime> AlarmStartTimeDic = new Dictionary<string, DateTime>();
- private void OpcTag_AlarmChanged(string tagId, int tagMarkCode, object tagValue, DateTime timeTrigger)
- {
- try
- {
- //结果为TRUE 直接保存报警记录
-
- if (Convert.ToBoolean(tagValue))
- {
-
- //判断当前报警是否存在
-
- StationAlarmStatus stationAlarmStatus = new StationAlarmStatus();
-
- //删除相同TagId数据
- StationAlarmStatus.Delete(p => p.TagId == tagId);
-
- //保存新的TagId数据
- stationAlarmStatus.TagId = tagId;
- stationAlarmStatus.StationId = thisStationInfo.StationId;
- stationAlarmStatus.AlarmText = StationAlarmTexts.Where(p => p.TagId == tagId).First().AlarmText;
- stationAlarmStatus.AlarmStatus = 1;
- stationAlarmStatus.StartTime = DateTime.Now;
-
- DictionaryHelper.DictionaryAddValue(AlarmStartTimeDic, tagId, stationAlarmStatus.StartTime);
- //保存报警状态
- StationAlarmStatus.InsertWithoutNullCol(stationAlarmStatus);
-
- //报警记录表增加数据
-
- StationAlarmRecord stationAlarmRecord = new StationAlarmRecord();
-
- stationAlarmRecord.TagId = tagId;
- stationAlarmRecord.StationId = thisStationInfo.StationId;
- stationAlarmRecord.AlarmText = stationAlarmStatus.AlarmText;
- stationAlarmRecord.AlarmStatus = stationAlarmStatus.AlarmStatus;
- stationAlarmRecord.StartTime = stationAlarmStatus.StartTime;
- StationAlarmRecord.Insert(stationAlarmRecord);
-
- }
- else
- {
-
- if (AlarmStartTimeDic.ContainsKey(tagId))
- {
-
- int timediff = Convert.ToInt32(ExecDateDiff(AlarmStartTimeDic[tagId], DateTime.Now));
-
-
-
- //修改数据 解除报警
- StationAlarmStatus.Update(p => new StationAlarmStatus() { AlarmStatus = 2, EndTime = DateTime.Now, TimeDiff = timediff }, p => p.TagId == tagId);
-
-
- //报警记录解除报警
- StationAlarmRecord.Update(p => new StationAlarmRecord() { AlarmStatus = 2, EndTime = DateTime.Now, TimeDiff = timediff }, q => q.TagId == tagId && q.AlarmStatus == 1);
- }
-
-
-
-
- }
- }
- catch(Exception ex)
- {
- LogHelper.WriteLog(LogHelper.GetMethodInfo(), ex);
- }
-
- }
- public static double ExecDateDiff(DateTime dateBegin, DateTime dateEnd)
- {
- TimeSpan ts1 = new TimeSpan(dateBegin.Ticks);
- TimeSpan ts2 = new TimeSpan(dateEnd.Ticks);
- TimeSpan ts3 = ts1.Subtract(ts2).Duration();
- //你想转的格式
- return ts3.TotalSeconds;
- }
-
- }
- }
|