This commit is contained in:
Administrator
2026-07-08 10:58:42 +08:00
parent 053a90d34f
commit 7d7d6bc3bf
21 changed files with 1528 additions and 1283 deletions
+83
View File
@@ -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>
/// 报警保存