123 lines
5.0 KiB
C#
123 lines
5.0 KiB
C#
using Aurora;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using WeldingCommon.Devices;
|
|
using WeldingCommon;
|
|
using Aurora.Api;
|
|
using WeldingCommon.Sequences;
|
|
using WeldingCommon.Sequences;
|
|
using WeldingCommon.Sequences.SubSequence.StageA;
|
|
using System.Threading;
|
|
using System.Diagnostics; // Process.Start
|
|
|
|
namespace WeldingCommon.Process
|
|
{
|
|
// 비동기 시퀀스를 사용하기 때문에... 클래스 객체가 여러개 필요함
|
|
public class SequenceManagerForMainWelder
|
|
{
|
|
private static SequenceManagerForMainWelder _Instance;
|
|
public static SequenceManagerForMainWelder Instance {
|
|
get {
|
|
if (_Instance is null) {
|
|
_Instance = new SequenceManagerForMainWelder();
|
|
}
|
|
return _Instance;
|
|
}
|
|
}
|
|
|
|
private IAuroraEnvironment _env;
|
|
|
|
//public SeqTeachingPosMove TeachingPosSequenceA { get; private set; }
|
|
//public SeqTeachingPosMove TeachingPosSequenceB { get; private set; }
|
|
|
|
//public SeqAutoRunPrismaticGun MainSequence { get; private set; }
|
|
//public SeqLoadCell LoadCellSequence { get; private set; }
|
|
//public SeqLoadCell LoadCellSequenceB { get; private set; }
|
|
//public SeqWeldingCell WeldingCellSequenceA{ get; private set; }
|
|
//public SeqWeldingCell WeldingCellSequenceB{ get; private set; }
|
|
//public SeqUnloadCell UnloadingCellSequenceA { get; private set; }
|
|
//public SeqUnloadCell UnloadingCellSequenceB { get; private set; }
|
|
|
|
//public SeqAutoRunPrismaticGunType MainSequenceTest { get; private set; }
|
|
|
|
|
|
public void Init(IAuroraEnvironment env)
|
|
{
|
|
_env = env;
|
|
//TeachingPosSequenceA = new SeqTeachingPosMove();
|
|
//TeachingPosSequenceB = new SeqTeachingPosMove();
|
|
|
|
//MainSequence = new SeqAutoRunPrismaticGun();
|
|
//LoadCellSequence = new SeqLoadCell();
|
|
//LoadCellSequenceB = new SeqLoadCell();
|
|
//WeldingCellSequenceA = new SeqWeldingCell();
|
|
//WeldingCellSequenceB = new SeqWeldingCell();
|
|
//UnloadingCellSequenceA = new SeqUnloadCell();
|
|
//UnloadingCellSequenceB = new SeqUnloadCell();
|
|
|
|
//MainSequenceTest = new SeqAutoRunPrismaticGunType();
|
|
}
|
|
|
|
public void RegisterSequence(IAuroraEnvironment aurora, SequenceRegister register)
|
|
{
|
|
//register(SequenceIds.TargetMoveSequenceStageA, SeqTargetPosMoveStageA.Builder());
|
|
//register(SequenceIds.TargetMoveSequenceStageB, SeqTargetPosMoveStageB.Builder());
|
|
|
|
// Main Sequence는 하나만 사용
|
|
register(CommonSequenceIds.TeachingMoveSequenceStageA, SeqTeachingPosMoveStageA.Builder());
|
|
//register(SequenceIds.TeachingMoveSequenceStageB, SeqTeachingPosMoveStageB.Builder());
|
|
|
|
//Process Sequence
|
|
//register(SequenceIds.SeqAutoRunPrismaticGunStageA, SeqAutoRunPrismaticGunStageA.Builder());
|
|
//register(SequenceIds.SeqAutoRunPrismaticGunStageB, SeqAutoRunPrismaticGunStageB.Builder());
|
|
|
|
//register(SequenceIds.SeqLoadCellStageA, SeqLoadCellStageA.Builder());
|
|
//register(SequenceIds.SeqLoadCellStageB, SeqLoadCellStageB.Builder());
|
|
|
|
register(CommonSequenceIds.SeqWeldingCellStageA, SeqWeldingCellStageA.Builder());
|
|
//register(SequenceIds.SeqWeldingCellStageB, SeqWeldingCellStageB.Builder());
|
|
|
|
//register(SequenceIds.SeqUnloadCellStageA, SeqUnloadCellStageA.Builder());
|
|
//register(SequenceIds.SeqUnloadCellStageB, SeqUnloadCellStageB.Builder());
|
|
|
|
//register(SequenceIds.PLCRequest, SeqAutoStart.Builder());
|
|
|
|
|
|
//Monitoring
|
|
//register(CommonSequenceIds.AlarmMonitor, SeqAlarmMonitor.Builder());
|
|
//register(SequenceIds.StatusMonitor, SeqStatusMonitor.Builder());
|
|
//register(CommonSequenceIds.PLCMonitor, PLCMonitor.Builder());
|
|
|
|
// Manual or Maint
|
|
register(CommonSequenceIds.OneShot, SeqOneShot.Builder());
|
|
register(CommonSequenceIds.SplitLine, SeqSplitLine.Builder());
|
|
register(CommonSequenceIds.MotorInit, SeqMotorInit.Builder());
|
|
}
|
|
|
|
public bool CanExcuteLaserSequence()
|
|
{
|
|
if (_env.SequenceEntry[CommonSequenceIds.OneShot].RunState != SequenceRunState.Idle)
|
|
return false;
|
|
else if (_env.SequenceEntry[CommonSequenceIds.SplitLine].RunState != SequenceRunState.Idle)
|
|
return false;
|
|
else if (_env.SequenceEntry[CommonSequenceIds.SeqWeldingCellStageA].RunState != SequenceRunState.Idle)
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
public bool Terminate()
|
|
{
|
|
//_env.SequenceEntry[CommonSequenceIds.AlarmMonitor].Stop();
|
|
//_env.SequenceEntry[SequenceIds.StatusMonitor].Stop();
|
|
//_env.SequenceEntry[CommonSequenceIds.PLCMonitor].Stop();
|
|
|
|
Thread.Sleep(200);
|
|
return true;
|
|
}
|
|
}
|
|
}
|