2026-06-05 13:44:39 +09:00

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;
}
}
}