using Aurora; using Aurora.Api; using Aurora.Framework.Alarm; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WeldingCommon.Alarm; namespace ILSOS_PrismaticRD_PTOP.Alarm { public class AlarmManager_PTOP : AlarmManager { // [로그계측 2026-09-16] 기반 클래스의 AlarmLog 는 private 이라 파생 클래스에서 쓸 수 없어 별도로 둔다. // (원복: 아래 region 과 함께 이 필드도 삭제) private static readonly Logger AlarmLogPTOP = new Logger("ALARM"); public AlarmManager_PTOP(IAuroraEnvironment aurora) : base(aurora) { } public static void StopSequenceByAlarm(int code) { AlarmDescription alarm = _Instance._AlarmService.GetAlarmDescription(code); // High Alarm 은 Sequence 정지 if (alarm.Level == AlarmLevel.H) { #region [로그계측 2026-09-16] 정지 대상 ID 불일치 경고 (원복: 이 region 삭제) // 아래 StopSequence 의 대상은 SeqAutoRun(구 Prismatic)인데, 실제 운전 중인 것은 // SeqAutoRunPTOP 이다 (EquipmentSetup.cs:218 vs :225 / UCMainAutoRunViewModel.cs:101, 365). // → H 알람이 떠도 자동운전은 멈추지 않는다. // 식별자 1개 교체로 해결되지만, 지금까지 안 멈추던 것이 멈추기 시작하면 오정지로 라인이 설 수 // 있고 IO 알람이 무력화(ISSUE-260828-03)되어 실제 발생 H 알람 목록이 확인되지 않았다. // 그래서 동작은 그대로 두고, 어떤 H 알람이 실제로 뜨는지 목록만 먼저 확보한다. (ISSUE-260828-02) AlarmLogPTOP.W($"[로그계측][중알람] H 알람 발생 - Code:{code}, Name:{alarm.Name} → " + $"StopSequence 대상이 '{SequenceIds.SeqAutoRun}' 이라 " + $"실제 운전 중인 '{SequenceIds.SeqAutoRunPTOP}' 는 정지하지 않는다 " + $"(ISSUE-260828-02 / 현재 동작 무변경)"); #endregion StopSequence(SequenceIds.SeqAutoRun); } } } }