using Aurora; using Aurora.Api.Manager; using Aurora.Api; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WeldingCommon; using WeldingCommon.Devices; namespace ILSOS_SampleWeldEquipment.Device { internal partial class IOController_SampleWeldEquipment : IOController { public IOController_SampleWeldEquipment(IAuroraEnvironment auroraEnv, string deviceId) : base(auroraEnv, deviceId) { } public override void MonitorIOInterfaceMap() { // IO Interlock 구현 // TODO: [장비구현필요] 아래는 참고, 아래는 IO Check 하는 sample 임 (PRIBAT 에서 사용한 Paix, SMW 에서 사용한 Ajin), 없으면 비워두면 됨 // TODO: Sample Paix if (_iOUnit.ReadDiBit((Convert.ToInt32(ePDIAddress.EMOSwitchFront))) || _iOUnit.ReadDiBit((Convert.ToInt32(ePDIAddress.EMOSwitchBack))) || _iOUnit.ReadDiBit((Convert.ToInt32(ePDIAddress.MainCDAAlarm))) || _iOUnit.ReadDiBit((Convert.ToInt32(ePDIAddress.MainN2Alarm)))) { _iOUnit.WriteDoBit((Convert.ToInt32(ePDOAddress.BuzzerOn)), true); _iOUnit.WriteDoBit((Convert.ToInt32(ePDOAddress.TowerLampREDOn)), true); _iOUnit.WriteDoBit((Convert.ToInt32(ePDOAddress.TowerLampGREENOn)), false); _AuroraEnv.ViewManager.SetTowerLamp(eTowerLamp.RED); } else { _iOUnit.WriteDoBit((Convert.ToInt32(ePDOAddress.BuzzerOn)), false); _iOUnit.WriteDoBit((Convert.ToInt32(ePDOAddress.TowerLampREDOn)), false); } //Door Open Check, Panel Temp Alarm, Fan Alarmm, Motor MC Check => Warning if (_iOUnit.ReadDiBit((Convert.ToInt32(ePDIAddress.DoorLockOpen1))) || _iOUnit.ReadDiBit((Convert.ToInt32(ePDIAddress.DoorLockOpen2))) || _iOUnit.ReadDiBit((Convert.ToInt32(ePDIAddress.DoorLockOpen3))) || _iOUnit.ReadDiBit((Convert.ToInt32(ePDIAddress.DoorLockOpen4))) || _iOUnit.ReadDiBit((Convert.ToInt32(ePDIAddress.PanelTempAlarm))) || _iOUnit.ReadDiBit((Convert.ToInt32(ePDIAddress.FanAlarm5))) || _iOUnit.ReadDiBit((Convert.ToInt32(ePDIAddress.FanAlarm6))) || _iOUnit.ReadDiBit((Convert.ToInt32(ePDIAddress.FanAlarm7))) || _iOUnit.ReadDiBit((Convert.ToInt32(ePDIAddress.FanAlarm8))) || !_iOUnit.ReadDiBit((Convert.ToInt32(ePDIAddress.L2MotorMCOn))) ) { _iOUnit.WriteDoBit((Convert.ToInt32(ePDOAddress.TowerLampYELLOWOn)), true); _iOUnit.WriteDoBit((Convert.ToInt32(ePDOAddress.TowerLampGREENOn)), false); _AuroraEnv.ViewManager.SetTowerLamp(eTowerLamp.ORANGE); } else { _iOUnit.WriteDoBit((Convert.ToInt32(ePDOAddress.TowerLampYELLOWOn)), false); _iOUnit.WriteDoBit((Convert.ToInt32(ePDOAddress.TowerLampGREENOn)), true); _AuroraEnv.ViewManager.SetTowerLamp(eTowerLamp.GREEN); } //Door Lock Check if (_iOUnit.ReadDiBit((Convert.ToInt32(ePDIAddress.DoorLockCloseMonitoring)))) { _AuroraEnv.ViewManager.DoorLock(true); } else { _AuroraEnv.ViewManager.DoorLock(false); } //Door Open PM bool DoorOpen = _iOUnit.ReadDiBit((Convert.ToInt32(ePDIAddress.DoorLockOpen1))) || _iOUnit.ReadDiBit((Convert.ToInt32(ePDIAddress.DoorLockOpen2))) || _iOUnit.ReadDiBit((Convert.ToInt32(ePDIAddress.DoorLockOpen3))) || _iOUnit.ReadDiBit((Convert.ToInt32(ePDIAddress.DoorLockOpen4))); if (ChangeChecker.IsChangedBool("Door", DoorOpen)) { //EventID Class를 ILSOS에서 받아올수 없을듯.. IODef에 EventID를 선언해주고 ILSOS에 넘겨주자.. EventPublisher.Publish(new EventMessage("DoorInterlock", CommonEventIds.EVENT_DOOR_INTERLOCK, DoorOpen)); } } } }