using Aurora; using Aurora.Api; using Aurora.Api.Devices; using Aurora.Api.Manager; using Aurora.View; using Aurora.View.Alarm; using Aurora.View.AutoBackup; using AuroraCellTracker; using AuroraCellTracker.Views; using AuroraIO; using AuroraIO.View; using AuroraLaser; using AuroraLaserScanner; using AuroraLBAD; using AuroraLBAD.Services; using AuroraOCT; using AuroraOCT.Views; using AuroraPLC; using AuroraPLC.Views; using AuroraTriggerBoard.SJT; using CoreUnit.Scanner.UserControl.ScannerCanvas; using DB; using DB.Recipe; using GUI; using ILSOS_CCW_H52A.Alarm; using ILSOS_CCW_H52A.Device; using ILSOS_CCW_H52A.Models; using ILSOS_CCW_H52A.Recipes; using ILSOS_CCW_H52A.Sequences; using ILSOS_CCW_H52A.Views; using System.Windows.Controls; using System.Windows.Media; using WeldingCommon; using WeldingCommon.Alarm; using WeldingCommon.Recipes; using WeldingCommon.Sequences; using WeldingCommon.Utils; using WeldingCommon.Views; using WeldingCommon.Vision.Factory; using static WeldingCommon.Vision.Factory.VisionFactory; namespace ILSOS_CCW_H52A { internal class EquipmentSetup : CommonEquipmentSetup, IEquipmentSetup { private SequenceBuilder _SeqAutoRunCCWH52A_Builder; public override void BuildMainStatusView(MainStatusBuilder builder) { base.BuildMainStatusView(builder); builder.AddDeviceActiveStatus(CommonDeviceIds.CellTracker) .AddDeviceActiveStatus(CommonDeviceIds.Laser) .AddDeviceActiveStatus(CommonDeviceIds.LBAD); } public override string GetEquipmentName() { return "ILSOS CCWH52A"; } public void OnSetAlarm(int code, bool isHeavy) { base.OnSetAlarm(code, isHeavy); if (isHeavy) { AlarmManager_CCW_H52A.StopSequenceByAlarm(code); } } public override async void OnStartUp() { await ActivateDevices(); base.OnStartUp(); AuroraEnv.SequenceEntry[SequenceIds.AlarmMonitoring].Start(); } // For Selection LaserDevice public void RegisterLaserDevice(IDeviceRegistry registry, ILaserDevice laserDeviceWithIO) { // All registry.Register(CommonDeviceIds.Laser, () => new LaserDevice(CommonDeviceIds.Laser, laserDeviceWithIO), new LaserConfig(), device => new UCLaserDevice() { DataContext = new UCLaserDeviceViewModel(AuroraEnv, CommonDeviceIds.Laser) }); // Case: Amplitude_Satsuma_Laser (Modbus) //registry.Register(CommonDeviceIds.Laser, () => new LaserDeviceSatsumaDisplay(CommonDeviceIds.Laser), LaserSatsumaConfig.GetDefaultConfig()); // Case: Coherent_Arm_Laser (Socket) //registry.Register(CommonDeviceIds.Laser, () => new LaserDeviceArm(CommonDeviceIds.Laser), LaserArmConfig.GetDefaultConfig()); // Case: Coherent_Compact_Laser (Serial) //registry.Register(CommonDeviceIds.Laser, () => new LaserDeviceCompact(CommonDeviceIds.Laser), LaserCompactMiniConfig.GetDefaultConfig(), // device => new UCCoherentCompactDevice() { DataContext = new UCCoherentCompactDeviceViewModel(AuroraEnv, CommonDeviceIds.Laser) }); // Case: Coherent_HyperRapid_Laser (Serial) //registry.Register(CommonDeviceIds.Laser, () => new LaserDeviceHyperRapid(CommonDeviceIds.Laser, 0), LaserHyperRapidConfig.GetDefaultConfig(), // device => new UCCoherentHyperRapidLaserDevice() { DataContext = new UCCoherentHyperRapidLaserDeviceViewModel(AuroraEnv, device, null, null) }); // Case: Coherent_RapidLX_Laser (Socket) //registry.Register(CommonDeviceIds.Laser, () => new LaserDeviceRapidLX(CommonDeviceIds.Laser), LaserRapidLXConfig.GetDefaultConfig()); // Case: Ekspla_NL202_Laser (Serial) //registry.Register(CommonDeviceIds.Laser, () => new LaserDeviceEkspla(CommonDeviceIds.Laser, eLaserEksplaDeviceType.NL202), LaserEksplaConfig.GetDefaultConfig(eLaserEksplaDeviceType.NL202)); // Case: IPG_YLPN_Laser (Serial) //registry.Register(CommonDeviceIds.Laser, () => new LaserDeviceYLPN(CommonDeviceIds.Laser), LaserYLPNConfig.GetDefaultConfig()); // Case: IPG_YLS_Laser (Socket) //registry.Register(CommonDeviceIds.Laser, () => new LaserDeviceYLS(CommonDeviceIds.Laser), LaserYLSConfig.GetDefaultConfig()); // Case: Trumpf_TruDisk_Laser (Socket) //registry.Register(CommonDeviceIds.Laser, () => new LaserDeviceTruDisk(CommonDeviceIds.Laser), LaserTruDiskConfig.GetDefaultConfig()); // Case: Trumpf_TruPulseNano_Laser (Socket) //registry.Register(CommonDeviceIds.Laser, () => new LaserDeviceTruPulseNano(CommonDeviceIds.Laser), LaserTruPulseNanoConfig.GetDefaultConfig(), // device => new UCTruPulseNanoView() { DataContext = new UCTruPulseNanoViewModel(AuroraEnv, CommonDeviceIds.Laser) }); } public void RegisterViewsLaserDevice(IViewManager manager) { // 아래는 진행한 장비에서의 View 화면 목록 임. 구현에 참고. // 동일 장비가 아니므로, 그대로 사용하는 것은 권장하지 않음. //var laserDevice = new MainMenu(CommonViewIds.LaserDevice, MenuIcon.GetMenuIcon(eMenuIcon.DEVICE), PermissionLevel.LEVEL3, false); // Case: Amplitude_Satsuma_Laser (Modbus), For setting or monitoring //laserDevice.AddSubMenu(CommonViewIds.LaserDevice, new UCLaserController(AuroraEnv, CommonDeviceIds.Laser, string.Empty)); // Case: Coherent_Compact_Laser (Serial), For calibration //var laserIDList = new List() { CommonDeviceIds.Laser }; //laserDevice.AddSubMenu(CommonViewIds.LaserDevice, new UCLaserCompactCalibration() { DataContext = new UCLaserCompactCalibrationViewModel(AuroraEnv, laserIDList, DeviceIds.PowerMeter) }); // Case: Coherent_HyperRapid_Laser (Serial), For monitoring //var laser = AuroraEnv.DeviceManager[CommonDeviceIds.Laser] as LaserDeviceHyperRapid; //laserDevice.AddSubMenu(CommonViewIds.LaserDevice, new UCCoherentHyperRapidResourceMonitoring() { DataContext = new UCCoherentHyperRapidResourceMonitoringViewModel(AuroraEnv, laser) }); //manager.RegisterMainMenu(laserDevice); } public override void RegisterDevices(IDeviceRegistry registry) { base.RegisterDevices(registry); var isSimul = ApplicationExt.IsSimulation; //var _plc = new PLCControllerACWH52A(CommonDeviceIds.PLCDevice, ePLCNetType.MXComponent, PLCMMapFileType.CSV, AuroraEnv); //registry.Register(CommonDeviceIds.PLCDevice, // () => _plc, PLCMxComponentConfig.GetDefaultConfig(), // device => new UCPLCDevice() { DataContext = new UCPLCDeviceViewModel(AuroraEnv, _plc) }); var _plc = new PLCControllerCCWH52A(CommonDeviceIds.PLCDevice, ePLCNetType.MelsecNet, PLCMMapFileType.CSV, AuroraEnv); registry.Register(CommonDeviceIds.PLCDevice, () => _plc, PLCMelsecNetConfig.GetDefaultConfig(), device => new UCPLCDevice() { DataContext = new UCPLCDeviceViewModel(AuroraEnv, _plc) }); registry.Register(CommonDeviceIds.Scanner, () => new ScannerCCWH52A(CommonDeviceIds.Scanner), new ScannerConfig()); var ioController = new IOController_CCW_H52A(AuroraEnv, CommonDeviceIds.IODevice); registry.Register(CommonDeviceIds.IODevice, () => ioController, new IOUnitConfig()); var laserDeviceWithIO = new LaserCoherentArm_IO(CommonDeviceIds.LaserIO, isSimul, ioController); RegisterLaserDevice(registry, laserDeviceWithIO); //registry.Register(CommonDeviceIds.OCT, () => new OCT(CommonDeviceIds.OCT), new OCTConfig(), // device => new UCOCTDevice() { DataContext = new UCOCTDeviceViewModel(AuroraEnv, CommonDeviceIds.OCT) }); //registry.Register(CommonDeviceIds.LBAD, () => new LBAD(CommonDeviceIds.LBAD), new LBADConfig()); registry.Register(CommonDeviceIds.CellTracker, () => new CellTracker(CommonDeviceIds.CellTracker, eCellTrackerType.Daekhon), new CellTrackerConfig(), device => new UCCellTrackerDevice() { DataContext = new UCCellTrackerDeviceViewModel(AuroraEnv, CommonDeviceIds.CellTracker) }); registry.Register(DeviceIds.TriggerBoard, () => new AuroraTriggerBoard.Trigger(DeviceIds.TriggerBoard, AuroraTriggerBoard.Trigger.eTriggerType.SJT), AuroraTriggerBoard.TriggerConfig.GetDefaultConfig(), device => new UCTriggerBoard() { DataContext = new UCTriggerBoardViewModel(AuroraEnv, DeviceIds.TriggerBoard) }); AlarmManager.SetPlc(AuroraEnv); RegisterStreamServices(registry); } public void RegisterStreamServices(IDeviceRegistry registry) { //Stream 사용 시에만 등록하도록 하자 var equipSetting = AuroraEnv.SettingEntry[AuroraSettings.Equipment] as EquipmentInfo; if (equipSetting.UseStream) { //LBAD registry.Register(CommonServiceIds.StreamLightLBADClient, () => new StreamLightClient(CommonStreamServiceNames.LBADClient, CommonStreamLightPort.LBADClientPort), new StreamLightClientConfig()); registry.Register(CommonServiceIds.StreamLightLBADSub, () => new StreamLightSub(CommonStreamServiceNames.LBADSub, CommonStreamLightPort.LBADSubPort), new StreamLightSubConfig()); } } public override void RegisterRecipes(RecipeRegister register) { //register(CommonRecipeIds.ScannerObjectTeaching, new ScannerObjectTeachingRecipe(), // (id, item) => new UCScannerObjectTeaching(AuroraEnv, // RecipeEventHelper.ExternalRecipeChangeRequest, // RecipeEventHelper.ExternalRecipeChangeComplete)); register(CommonRecipeIds.ScannerObjectTeaching, new ScannerObjectTeachingRecipe(), (id, item) => new UCScannerObjectTeaching2(AuroraEnv, RecipeEventHelper.ExternalRecipeChangeRequest, RecipeEventHelper.ExternalRecipeChangeComplete)); base.RegisterRecipes(register); } public override void RegisterModels(ModelRegister register) { register(CommonModelIds.EquipmentSpecificModel, new EquipmentSpecificModel_CCW_H52A(), (id, item) => new UCModelEditor(new UCModelEditorViewModel(AuroraEnv), ModelExternalDelegate.ExternalCreateEquipmentSpecificEditor)); base.RegisterModels(register); } public override void RegisterSequences(SequenceRegister register) { // Common Sequences register base.RegisterSequences(register); //AlarmMonitoring.SetExternalDeviceActivatedCheckWithIO(AlarmHelper.ExternalDeviceActivatedCheckWithIO); var equipSetting = AuroraEnv.SettingEntry[AuroraSettings.Equipment] as EquipmentInfo; var seqAutoRunCCWH52A = new SeqAutoRunCCWH52A(); _SeqAutoRunCCWH52A_Builder = seqAutoRunCCWH52A.Builder(); register(SequenceIds.SeqAutoRunCCWH52A, _SeqAutoRunCCWH52A_Builder); var alarmMonitoring = new Sequences.Monitoring.AlarmMonitoring(); register(SequenceIds.AlarmMonitoring, alarmMonitoring.Builder()); // SequenceManager.RegisterSequence(AuroraEnv, register); } public override void RegisterSettings(SettingRegister register) { base.RegisterSettings(register); } // Views는 장비별로 별도로 등록하자. public override void RegisterViews(IViewManager manager) { base.RegisterViews(manager); //manager.RegisterTitleComponent(new UCInformationPanelView() { DataContext = new UCInformationPanelViewModel(AuroraEnv, CommonDeviceIds.IODevice) }); _UCRecipe = new UCRecipe(); // Auto Run var MainAutoRun = new MainMenu(CommonViewIds.AutoRun, MenuIcon.GetMenuIcon(eMenuIcon.HOME), PermissionLevel.LEVEL5, false); MainAutoRun.AddSubMenu(CommonViewIds.AutoRun, new UCMainAutoRun(new UCMainAutoRunViewModel(AuroraEnv, _UCRecipe, SequenceIds.SeqAutoRunCCWH52A, RecipeEventHelper.ExternalRecipeUpdate))); manager.RegisterMainMenu(MainAutoRun); // Recipe MainMenu recipe = new MainMenu(CommonViewIds.Recipe, MenuIcon.GetMenuIcon(eMenuIcon.RECIPE), PermissionLevel.LEVEL3, true); recipe.AddSubMenu(CommonViewIds.Recipe, _UCRecipe); recipe.AddSubMenu(CommonViewIds.ModelEditor, new UCModel()); manager.RegisterMainMenu(recipe); // Manual var manual = new MainMenu(CommonViewIds.Manual, (DrawingImage)IconDictionary["Maint"], PermissionLevel.LEVEL3, true); manual.AddSubMenu(CommonViewIds.ScannerOperation, new UCManualScannerOperation(new UCManualScannerOperationViewModel(AuroraEnv, CommonDeviceIds.Scanner, true))); //manual.AddSubMenu(CommonViewIds.OCT, new UCOCTManualMotion(AuroraEnv, CommonDeviceIds.OCT)); //manual.AddSubMenu(CommonViewIds.LBAD, new UCLBADDevice(AuroraEnv, CommonDeviceIds.LBAD, CommonDeviceIds.IODevice)); manual.AddSubMenu(CommonViewIds.RCCOperation, new UCManualRCCOperation(new UCManualRCCOperationViewModel(AuroraEnv))); // Manual - For Test //manual.AddSubMenu(CommonViewIds.TestDevice, new UCTestDevice(new UCTestDeviceViewModel(AuroraEnv))); //manual.AddSubMenu(CommonViewIds.TestSequence, new UCTestSequence(new UCTestSequenceViewModel(AuroraEnv))); manager.RegisterMainMenu(manual); //Calibration var calibration = new MainMenu(CommonViewIds.Calibration, MenuIcon.GetMenuIcon(eMenuIcon.SCANNER), PermissionLevel.LEVEL3, true); calibration.AddSubMenu(CommonViewIds.Scanner, new UCScannerCalibration(new UCScannerCalibrationViewModel(AuroraEnv))); //calibration.AddSubMenu(CommonViewIds.Power, new UCPowerCalibration(AuroraEnv)); // 불필요 //calibration.AddSubMenu(CommonViewIds.PowerCalProfile, new UCPowerProfile(AuroraEnv, CommonDeviceIds.Laser)); // 불필요 calibration.AddSubMenu(CommonViewIds.PixelResolution, new UCCameraPixelResolution(new UCCameraPixelResolutionViewModel(AuroraEnv))); manager.RegisterMainMenu(calibration); // Monitoring var monitoring = new MainMenu(CommonViewIds.Monitoring, (DrawingImage)IconDictionary["Monitoring"], PermissionLevel.LEVEL3, true); //manual.AddSubMenu(CommonViewIds.PLCInterfaceView, new UCPLCInterfaceView(AuroraEnv, CommonDeviceIds.PLCDevice)); monitoring.AddSubMenu(CommonViewIds.PLCBitMonitoring, new UCPLCBit() { DataContext = PLCStatic.GetInstanceBitVM(AuroraEnv, CommonDeviceIds.PLCDevice, ePLCNetType.MXComponent) }); monitoring.AddSubMenu(CommonViewIds.PLCWordMonitoring, new UCPLCWord() { DataContext = PLCStatic.GetInstanceWordVM(AuroraEnv, CommonDeviceIds.PLCDevice, ePLCNetType.MXComponent) }); monitoring.AddSubMenu(CommonViewIds.IOInterfaceView, new UCIOInterfaceView(AuroraEnv, CommonDeviceIds.IODevice)); //monitoring.AddSubMenu(CommonViewIds.OCT, new UCOCTManualMotion(AuroraEnv, CommonDeviceIds.OCT)); //monitoring.AddSubMenu(CommonViewIds.LBAD, new UCLBADDevice(AuroraEnv, CommonDeviceIds.LBAD, CommonDeviceIds.IODevice)); manager.RegisterMainMenu(monitoring); // Device var device = new MainMenu(CommonViewIds.Device, MenuIcon.GetMenuIcon(eMenuIcon.DEVICE), PermissionLevel.LEVEL3, false); device.AddSubMenu(CommonViewIds.Device, new DeviceSettingView()); // "CommonViewIds.Setting" 는 EquipDef.cs 에서 정의한 ViewId manager.RegisterMainMenu(device); //Setting var setting = new MainMenu(CommonViewIds.Setting, MenuIcon.GetMenuIcon(eMenuIcon.SETTING), PermissionLevel.LEVEL3, true); setting.AddSubMenu(CommonViewIds.Setting, new EquipSettingView()); setting.AddSubMenu(CommonViewIds.AutoBackupView, new AutoBackupView2() { DataContext = new AutoBackupViewModel() }); manager.RegisterMainMenu(setting); // Alarm MainMenu alarm = new MainMenu(CommonViewIds.Alarm, (DrawingImage)IconDictionary["AlarmBell"], PermissionLevel.LEVEL5, true) .AddSubMenu(CommonViewIds.History, new AlarmHistoryView()) .AddSubMenu(CommonViewIds.Description, new AlarmDescView()); manager.RegisterMainMenu(alarm); // For Laser Device View RegisterViewsLaserDevice(manager); // Vision (미사용) //VisionFactory.RegisterViews(manager); } } }