Sic10/Modules/SicPM2/PMModuleInterlock.cs

50 lines
1.3 KiB
C#
Raw Permalink Normal View History

2023-05-10 10:26:01 +08:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using Aitex.Core.Common.DeviceData;
using Aitex.Core.RT.Device;
using Aitex.Core.RT.Device.Unit;
using Aitex.Core.RT.Event;
using Aitex.Core.RT.OperationCenter;
using Aitex.Core.Utilities;
using MECF.Framework.Common.Equipment;
using MECF.Framework.Common.Event;
using MECF.Framework.Common.OperationCenter;
using MECF.Framework.Common.Schedulers;
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.PMs;
namespace SicPM2
{
public partial class PM2Module
{
private void InitInterlock()
{
OP.AddCheck($"{Module}.{Name}.Disconnect", new CheckPlcConnect(this));
}
private class CheckPlcConnect : IInterlockChecker
{
private PM2Module _pm;
public CheckPlcConnect(PM2Module pm)
{
_pm = pm;
}
public bool CanDo(out string reason, object[] args)
{
if (_pm.IsBusy)
{
reason = $"{_pm.Module} is in {_pm.StringFsmStatus} status, can not disconnect, should be idle";
return false;
}
reason = string.Empty;
return true;
}
}
}
}