using Aurora.Api; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WeldingCommon.Alarm; using WeldingCommon.Settings; using WeldingCommon; using ILSOS_CCW_H52A.Sequences; using static ILSOS_CCW_H52A.Device.IOController_CCW_H52A; namespace ILSOS_CCW_H52A.Alarm { internal class AlarmHelper { internal static void ExternalDeviceActivatedCheckWithIO(SequenceContext context) { var sequenceSetting = context.GetSetting(CommonSettingIds.Sequence); var _io = context.GetIOUnit(); // TODO : AlarmHelper는 공통부 AlarmMonitoring 사용 시 각 프로젝트별 따로 구현할 필요 있을 때 사용함. 필요 시 사용하도록 하자 // 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))) { // WeldingCommon.Alarm.AlarmManager.Alarm(AlarmCode.ALARM_DEVICE_IO_LASER_DISCONNECT); // } // if (_io._iOUnit.ReadDiBit(Convert.ToInt32(eADIAddress.LaserError))) { // WeldingCommon.Alarm.AlarmManager.Alarm(AlarmCode.ALARM_DEVICE_IO_LASER_ERROR); // } // if (_io._iOUnit.ReadDiBit(Convert.ToInt32(eADIAddress.Warning))) { // WeldingCommon.Alarm.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))) { // WeldingCommon.Alarm.AlarmManager.Alarm(AlarmCode.ALARM_DEVICE_IO_LASER_EMO); // } //} //// 3. LBAD //if (sequenceSetting.LbadActivatedWithIO) { // if (!_io._iOUnit.ReadDiBit(Convert.ToInt32(eADIAddress.LBADReadyStatus))) { // WeldingCommon.Alarm.AlarmManager.Alarm(AlarmCode.ALARM_DEVICE_IO_LBAD_ERROR); // } //} //// 4. OCT //if (sequenceSetting.OctActivatedWithIO) { // if (!_io._iOUnit.ReadDiBit(Convert.ToInt32(eADIAddress.LDDError))) { // WeldingCommon.Alarm.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))) { // WeldingCommon.Alarm.AlarmManager.Alarm(AlarmCode.ALARM_DEVICE_IO_LEAK_SENSOR_DETECT_SCANNER); // } // if (_io._iOUnit.ReadDiBit(Convert.ToInt32(eADIAddress.LeakSensorChiller))) { // WeldingCommon.Alarm.AlarmManager.Alarm(AlarmCode.ALARM_DEVICE_IO_LEAK_SENSOR_DETECT_CHILLER); // } //} #endregion #region PAIX IO enum Sample // Sample 없음. 위와 같이 활용 #endregion } } }