using Aurora.Api; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using static ILSOS_SampleWeldEquipment.Device.IOController_SampleWeldEquipment; using WeldingCommon.Alarm; using WeldingCommon.Settings; using WeldingCommon; using ILSOS_SampleWeldEquipment.Sequences; namespace ILSOS_SampleWeldEquipment.Alarm { internal class AlarmHelper { internal static void ExternalDeviceActivatedCheckWithIO(SequenceContext context) { var sequenceSetting = context.GetSetting(CommonSettingIds.Sequence); var _io = context.GetIOUnit(); // TODO: [장비구현필요] 아래는 참고, IO 값을 지속적으로 읽어 alarm 발생하도록하는 sample code #region Ajin IO enum Sample // 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) { } // 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); } } #endregion #region PAIX IO enum Sample // Sample 없음. 위와 같이 활용 #endregion } } }