81 lines
3.3 KiB
C#
81 lines
3.3 KiB
C#
using Aurora.Api;
|
|
using Aurora.Api.Devices;
|
|
using Aurora.Util.HislogPlus;
|
|
using AuroraCellTracker;
|
|
using AuroraChiller;
|
|
using AuroraIO;
|
|
using AuroraLaser;
|
|
using AuroraLaserScanner;
|
|
using AuroraLBAD;
|
|
using AuroraLBAD.Services;
|
|
using AuroraLight;
|
|
using AuroraOCT;
|
|
using AuroraPLC;
|
|
using Hermes;
|
|
using System;
|
|
using WeldingCommon.Devices;
|
|
|
|
namespace WeldingCommon.Sequences
|
|
{
|
|
public static class SequenceContextEx
|
|
{
|
|
public static Scanner GetLaserScanner(this SequenceContext context)
|
|
=> context.Devices[CommonDeviceIds.Scanner] as Scanner;
|
|
public static T GetRecipe<T>(this SequenceContext context, string subject)
|
|
=> (T)context.Recipes[subject];
|
|
|
|
public static T GetSetting<T>(this SequenceContext context, string subject)
|
|
=> (T)context.Settings[subject];
|
|
public static T GetModel<T>(this SequenceContext context, string modelName, string subject)
|
|
=> (T)context.Models.ModelItem(modelName, subject);
|
|
|
|
public static Laser GetLaser(this SequenceContext context)
|
|
=> context.Devices[CommonDeviceIds.Laser] as Laser;
|
|
|
|
public static OCT GetOCT(this SequenceContext context)
|
|
=> context.Devices[CommonDeviceIds.OCT] as OCT;
|
|
|
|
public static CellTracker GetCellTracker(this SequenceContext context)
|
|
=> context.Devices[CommonDeviceIds.CellTracker] as CellTracker;
|
|
public static PLCController GetPLC(this SequenceContext context)
|
|
=> context.Devices[CommonDeviceIds.PLCDevice] as PLCController;
|
|
public static IODevice GetIOUnit(this SequenceContext context)
|
|
=> context.Devices[CommonDeviceIds.IODevice] as IODevice;
|
|
public static LBAD GetLBAD(this SequenceContext context)
|
|
=> context.Devices[CommonDeviceIds.LBAD] as LBAD;
|
|
|
|
// 정지명
|
|
public static StreamLBADClient GetLBADClient(this SequenceContext context)
|
|
=> context.Services[CommonServiceIds.StreamLBADClient] as StreamLBADClient;
|
|
|
|
public static SmcChiller GetChiller(this SequenceContext context)
|
|
=> context.Devices[CommonDeviceIds.SmcChiller] as SmcChiller;
|
|
|
|
public static LightDevice GetLight(this SequenceContext context)
|
|
=> context.Devices[CommonDeviceIds.Light] as LightDevice;
|
|
|
|
public static string AlarmAccured(this SequenceContext context, int AlarmCode)
|
|
{
|
|
context.AlarmService.SetAlarm(AlarmCode);
|
|
return $"Alarm Occured >> {context.AlarmService.GetAlarmDescription(AlarmCode).Description} >>";
|
|
}
|
|
|
|
private const int TIMEOUT = 10 * 1000;
|
|
private const int INTERVAL = 20;
|
|
public static int RetryUntilFuncResult(this SequenceContext context, Logger log, Func<bool> task, int AlarmCode, int timeout = TIMEOUT, int interval = INTERVAL)
|
|
{
|
|
var res = context.RetryUntilSuccess(task, TIMEOUT, INTERVAL, false);
|
|
if (res == E2.TIMEOUT) {
|
|
log.FuncE($"Alarm Occured >> {context.AlarmService.GetAlarmDescription(AlarmCode).Description}");
|
|
context.PutValue<int>("AlarmCode", AlarmCode);
|
|
return E2.ABORTED;
|
|
} else if (res == E2.CANCELLED) {
|
|
log.FuncE("Func Canceled");
|
|
context.PutValue<int>("AlarmCode", 0);
|
|
return E2.ABORTED;
|
|
}
|
|
return res;
|
|
}
|
|
}
|
|
}
|