using Aurora; using Aurora.Api; using AuroraChiller; using AuroraIO; using ILSOS_KS.Sequences; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WeldingCommon; using WeldingCommon.Alarm; using WeldingCommon.Settings; using static ILSOS_KS.Device.IOController_KS; namespace ILSOS_KS.Alarm { internal class AlarmHelper { internal static void ExternalDeviceActivatedCheckWithIO(SequenceContext context) { var sequenceSetting = context.GetSetting(CommonSettingIds.Sequence); var _io = context.GetIOUnit(); // AlarmMonitoring 에서 Device 상태 check 를 IO 로 하는 로직 구현 // 1. Scanner if (sequenceSetting.ScannerActivatedWithIO) { } // 2. Laser if (sequenceSetting.LaserActivatedWithIO) { //Laser Disconnect Check 조건문 변경 필요 if (!_io._iOUnit.ReadDiBit(Convert.ToInt32(eADIAddress.LaserAssigned))) { AlarmManager.Alarm(AlarmCode.ALARM_DEVICE_IO_LASER_DISCONNECT); } if (_io._iOUnit.ReadDiBit(Convert.ToInt32(eADIAddress.LaserError))) { AlarmManager.Alarm(AlarmCode.ALARM_DEVICE_IO_LASER_ERROR); } if (_io._iOUnit.ReadDiBit(Convert.ToInt32(eADIAddress.Warning))) { AlarmManager.Alarm(AlarmCode.ALARM_DEVICE_IO_LASER_WARNING); } //Laser EMO IO Map 확인 필요 //if (!_io._iOUnit.ReadDiBit(Convert.ToInt32(eADIAddress.LaserEMO_1)) || !_io._iOUnit.ReadDiBit(Convert.ToInt32(eADIAddress.LaserEMO_2))) { // AlarmManager.Alarm(AlarmCode.ALARM_DEVICE_IO_LASER_EMO); //} } // 3. LBAD if (sequenceSetting.LbadActivatedWithIO) { if (!_io._iOUnit.ReadDiBit(Convert.ToInt32(eADIAddress.LBADReadyStatus))) { AlarmManager.Alarm(AlarmCode.ALARM_DEVICE_IO_LBAD_ERROR); } } // 4. OCT //if (sequenceSetting.OctActivatedWithIO) { // if (!_io._iOUnit.ReadDiBit(Convert.ToInt32(eADIAddress.LDDError))) { // AlarmManager.Alarm(AlarmCode.ALARM_DEVICE_IO_OCT_ERROR); // } //} // 5. Chiller if (sequenceSetting.ChillerActivatedWithIO) { var devManager = System.Windows.Application.Current.AuroraEnv().DeviceManager; ISmcChiller chiller = devManager["Chiller"] as ISmcChiller; if (chiller != null) { DateTime _CheckTime = DateTime.Now.AddSeconds(5); if (DateTime.Now < _CheckTime) { if (!chiller.GetConnected()) { try { var chillerDevice = chiller as AuroraChiller.SmcChiller_HRL; if (chillerDevice != null) { chillerDevice.Open(chillerDevice._Config); } } catch (Exception ex) { //Log.E($"Chiller reconnection failed: {ex.Message}"); } } } } } // 6. LeakSensor //Leak Sensor IO Map 추가 필요 //if (sequenceSetting.LeakSensorActivatedWithIO) { // if (_io._iOUnit.ReadDiBit(Convert.ToInt32(eADIAddress.LeakSensorHead))) { // AlarmManager.Alarm(AlarmCode.ALARM_DEVICE_IO_LEAK_SENSOR_DETECT_SCANNER); // } // if (_io._iOUnit.ReadDiBit(Convert.ToInt32(eADIAddress.LeakSensorChiller))) { // AlarmManager.Alarm(AlarmCode.ALARM_DEVICE_IO_LEAK_SENSOR_DETECT_CHILLER); // } //} } } }