20260708
This commit is contained in:
@@ -14,6 +14,7 @@ using System.Collections.ObjectModel;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices.ComTypes;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
@@ -106,6 +107,7 @@ namespace JinYuan.ControlCenters
|
||||
{
|
||||
|
||||
GetAlarmData();
|
||||
GetSafeEqptData();
|
||||
InitFunc();
|
||||
IntiDevice();
|
||||
Timer_RefreshData = new System.Timers.Timer(1000);
|
||||
@@ -897,9 +899,11 @@ namespace JinYuan.ControlCenters
|
||||
{
|
||||
UploadEquEnergy();//电表
|
||||
//UPloadAnemograph();//风速仪
|
||||
ShowSafeEqptEven_Run(); //安全装置状态
|
||||
});
|
||||
Regular = 0;
|
||||
}
|
||||
|
||||
if (TotalNum > 4)
|
||||
{
|
||||
GetEnergyData();
|
||||
@@ -1500,6 +1504,22 @@ namespace JinYuan.ControlCenters
|
||||
|
||||
}
|
||||
|
||||
List<AlarmForm> listSafeEqptForm = null;
|
||||
public void GetSafeEqptData()
|
||||
{
|
||||
//加载PLC安全装置状态文件
|
||||
try
|
||||
{
|
||||
string strFileName = System.Environment.CurrentDirectory + "\\安全装置报警寄存器对应表.csv";
|
||||
listSafeEqptForm = CSVHelper<AlarmForm>.ReadCSV(strFileName);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show("加载安装装置报警文件失败!");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 报警信息读取
|
||||
/// </summary>
|
||||
@@ -1655,6 +1675,69 @@ namespace JinYuan.ControlCenters
|
||||
}
|
||||
}
|
||||
|
||||
List<AlarmData> safeEqptStatus = new List<AlarmData>();
|
||||
List<AlarmStatus> listSafeEqptStatus = null;
|
||||
private void ShowSafeEqptEven_Run()
|
||||
{
|
||||
if (CommonMethods.IsRun && CommonMethods.plcDevice.IsConnected)
|
||||
{
|
||||
string Date = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
|
||||
JYResult<byte[]> resByte = CommonMethods.PlcLink.ReadValue<JYResult<byte[]>>("D1000", Data_Type.ArrByte, 8);
|
||||
if (resByte.IsSuccess && resByte != null)
|
||||
{
|
||||
if (resByte == null) { return; }
|
||||
//如果未配置报警地址信息返回 TODO
|
||||
if (listSafeEqptForm == null) { return; }
|
||||
int startPlcAddr = 1000;
|
||||
|
||||
listSafeEqptStatus = PLCAlarmParseHelper.OmronFinsByte2Status(startPlcAddr, resByte.Content);
|
||||
//4.判定有不良后,关联AlarmStatus 和AlarmForm
|
||||
if (listSafeEqptStatus == null) { return; } //状态信息为空返回
|
||||
//如果有报警,获取报警信息
|
||||
var josnTxtMsg = $"{Date}:获取PLC安全设备运行状态:\r\n";
|
||||
for (int i = 0; i < listSafeEqptStatus.Count; i++)
|
||||
{
|
||||
josnTxtMsg += $"plc_addr={listSafeEqptStatus[i].PLCAdress},status={listSafeEqptStatus[i].Status}\r\n";
|
||||
}
|
||||
|
||||
TxtHelper.WriteTxt($@"{CommonMethods.strMesLogspath}\{DateTime.Now.ToString("yyyyMMdd")}\设备运行状态\{DateTime.Now.ToString("HH")}.txt", josnTxtMsg);
|
||||
//关联表单数据和报警记录,获取报警信息
|
||||
safeEqptStatus = listSafeEqptStatus
|
||||
.Join(listSafeEqptForm
|
||||
, s => s.PLCAdress
|
||||
, f => f.PLCAdress
|
||||
, (s, f) => new AlarmData()
|
||||
{
|
||||
PLCAdress = s.PLCAdress,
|
||||
AlarmCode = f.AlarmCode,
|
||||
AlarmContent = f.AlarmContent == "" ? s.PLCAdress : f.AlarmContent,
|
||||
AlarmDesc = f.AlarmContent == "" ? s.PLCAdress : f.AlarmContent,
|
||||
AlarmType = "安全装置",
|
||||
AlarmState = s.Status?"0":"1", //mes 要求0是异常,1是正常
|
||||
StartTime = Date,
|
||||
EndTime = Date,
|
||||
Flag = 0
|
||||
}).ToList();
|
||||
|
||||
if (safeEqptStatus.Count > 0)
|
||||
{
|
||||
List<SafeEqptCode> safeEqptCodeLists = new List<SafeEqptCode>();
|
||||
safeEqptStatus.ForEach(r =>
|
||||
{
|
||||
if (CommonMethods.sysConfig.MesModeSwitching)
|
||||
{
|
||||
var item = new SafeEqptCode();
|
||||
item.equipNum = r.AlarmCode;
|
||||
item.status = r.AlarmState;
|
||||
safeEqptCodeLists.Add(item);
|
||||
}
|
||||
});
|
||||
|
||||
MESDataCombin.SafeEqptAlarm(Date, safeEqptCodeLists);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 报警保存
|
||||
|
||||
Reference in New Issue
Block a user