74 lines
3.9 KiB
C#
74 lines
3.9 KiB
C#
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));
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|