285 lines
32 KiB
C#
285 lines
32 KiB
C#
using Aurora.Api;
|
|
using CoreUnit.Scanner.UserControl.ScannerCanvas;
|
|
using System;
|
|
using WeldingCommon.Devices;
|
|
using WeldingCommon;
|
|
using Aurora;
|
|
using static ILSOS_CCW_H52A.Device.PLCControllerCCWH52A;
|
|
using Aurora.Api.Manager;
|
|
using ILSOS_CCW_H52A.Device;
|
|
using WeldingCommon.Recipes;
|
|
|
|
namespace ILSOS_CCW_H52A.Recipes
|
|
{
|
|
// Recipe 의 상태 변경(EVENT_RECIPE_CHANGE_REQUEST <-> EVENT_AUTO_RUN_START_REQUEST) 등 장비별로 다르게 처리해야 하는 Recipe 관련 Event 처리
|
|
// 추가로 SYS_RECIPE_ACTIVATED 에서 처리가 다르게 이루어져야 할 수도 있음. 확장 가능하도록 사용성 열어둠
|
|
internal class RecipeEventHelper
|
|
{
|
|
internal static void ExternalRecipeUpdate(Logger Log, IAuroraEnvironment aurora)
|
|
{
|
|
var plc = aurora.DeviceManager[CommonDeviceIds.PLCDevice] as PLCController;
|
|
var activatedRecipeId = aurora.RecipeManager.ActivatedRecipe().Id;
|
|
|
|
#region 기존 RMS 방식
|
|
//Line _Line = null;
|
|
//var layerObjectList = WeldingRecipeManager.GetWeldingLayerObjects(0);
|
|
//if (layerObjectList.ElementAt(0) is Line) {
|
|
// _Line = (Line)layerObjectList.ElementAt(0);
|
|
//}
|
|
|
|
//if (_Line != null) {
|
|
// #region 확인 필요 항목
|
|
// //plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_LASER_OFF_DELAY, (int)(_LineParam.LaserOffDelay * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_WELDING_LASER_OFF_DELAY.ToString())));
|
|
// //plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_MARK_DELAY, (int)(_LineParam.MarkDelay * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_WELDING_MARK_DELAY.ToString())));
|
|
// //plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_POLYGON_DELAY, (int)(_LineParam.PolygonDelay * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_WELDING_POLYGON_DELAY.ToString())));
|
|
// #endregion
|
|
|
|
// plc.WriteDWord((int)eWordOutput.PC_RECIPE_NO, (int)(activatedRecipeId * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_RECIPE_NO.ToString())));
|
|
// plc.WriteDWord((int)eWordOutput.PC_WELDING_RECIPE_NO, (int)(activatedRecipeId * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_RECIPE_NO.ToString())));
|
|
|
|
// plc.WriteDWord((int)eWordOutput.PC_WELDING_FOCAL_LENGTH, (int)(plc.ReadDWord((int)eWordInput.PLC_WELDING_FOCAL_LENGTH).data)); // PLC에서 받은 데이터를 그대로 넘겨주니 변환이 필요 없다
|
|
// plc.WriteDWord((int)eWordOutput.PC_SCANNER_X_AXIS, (int)(plc.ReadDWord((int)eWordInput.PLC_SCANNER_X_AXIS).data)); // PLC에서 받은 데이터를 그대로 넘겨주니 변환이 필요 없다
|
|
|
|
// ScannerParam _LineParam = ScannerCanvasUserCtrl.ScannerParams[_Line.ScannerParamNo];
|
|
// plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_LASER_POWER, (int)(_LineParam.LaserPower1 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_LASER_POWER.ToString())));
|
|
// plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_DRAW_SPEED, (int)(_LineParam.MarkSpeed * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_DRAW_SPEED.ToString())));
|
|
// plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_JUMP_SPEED, (int)(_LineParam.JumpSpeed * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_JUMP_SPEED.ToString())));
|
|
// plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_LASER_ON_DELAY, (int)(_LineParam.LaserOnDelay * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_LASER_ON_DELAY.ToString())));
|
|
// plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_JUMP_DELAY, (int)(_LineParam.JumpDelay * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_JUMP_DELAY.ToString())));
|
|
// plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_RAMPING_START_A_POWER_1, (int)(_LineParam.RampingStartAPower1 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_RAMPING_START_A_POWER_1.ToString())));
|
|
// plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_RAMPING_START_A_POWER_2, (int)(_LineParam.RampingStartAPower2 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_RAMPING_START_A_POWER_2.ToString())));
|
|
// plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_RAMPING_START_A_DISTANCE, (int)(_LineParam.RampingStartADist * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_RAMPING_START_A_DISTANCE.ToString())));
|
|
// plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_RAMPING_START_B_POWER_1, (int)(_LineParam.RampingStartPower1 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_RAMPING_START_B_POWER_1.ToString())));
|
|
// plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_RAMPING_START_B_POWER_2, (int)(_LineParam.RampingStartPower3 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_RAMPING_START_B_POWER_2.ToString())));
|
|
// plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_RAMPING_START_B_DISTANCE, (int)(_LineParam.RampingStartDist * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_RAMPING_START_B_DISTANCE.ToString())));
|
|
// plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_RAMPING_END_POWER_1, (int)(_LineParam.RampingEndPower1 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_RAMPING_END_POWER_1.ToString())));
|
|
// plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_RAMPING_END_POWER_2, (int)(_LineParam.RampingEndPower3 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_RAMPING_END_POWER_2.ToString())));
|
|
// plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_RAMPING_END_DISTANCE, (int)(_LineParam.RampingEndDist * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_RAMPING_END_DISTANCE.ToString())));
|
|
|
|
// plc.WriteDWord((int)eWordOutput.PC_EQUIPMENT_SPEED, (int)(plc.ReadDWord((int)eWordInput.PLC_EQUIPMENT_SPEED).data)); // PLC에서 받은 데이터를 그대로 넘겨주니 변환이 필요 없다. Equipment Speed는 Rotary Speed로 PC에서는 사용하지 않고 그냥 표기만 해준다.
|
|
|
|
// Log.I(string.Format($"SET PC_RECIPE_PARAM_UPLOAD_COMPLETE True"));
|
|
// plc.WriteBit((int)eBitOutput.PC_RECIPE_PARAM_UPLOAD_COMPLETE, true);
|
|
|
|
//} else {
|
|
// Log.W("Check Whether there is Line in the Activated Recipe Object!");
|
|
//}
|
|
#endregion
|
|
#region 확인 필요 항목
|
|
//plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_LASER_OFF_DELAY, (int)(_LineParam.LaserOffDelay * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_WELDING_LASER_OFF_DELAY.ToString())));
|
|
//plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_MARK_DELAY, (int)(_LineParam.MarkDelay * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_WELDING_MARK_DELAY.ToString())));
|
|
//plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_POLYGON_DELAY, (int)(_LineParam.PolygonDelay * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_WELDING_POLYGON_DELAY.ToString())));
|
|
#endregion
|
|
|
|
plc.WriteDWord((int)eWordOutput.PC_RECIPE_NO, (int)(activatedRecipeId * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_RECIPE_NO.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_WELDING_RECIPE_NO, (int)(activatedRecipeId * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_RECIPE_NO.ToString())));
|
|
|
|
plc.WriteDWord((int)eWordOutput.PC_WELDING_FOCAL_LENGTH, (int)(plc.ReadDWord((int)eWordInput.PLC_WELDING_FOCAL_LENGTH).data)); // PLC에서 받은 데이터를 그대로 넘겨주니 변환이 필요 없다
|
|
plc.WriteDWord((int)eWordOutput.PC_SCANNER_X_AXIS, (int)(plc.ReadDWord((int)eWordInput.PLC_SCANNER_X_AXIS).data)); // PLC에서 받은 데이터를 그대로 넘겨주니 변환이 필요 없다
|
|
plc.WriteDWord((int)eWordOutput.PC_EQUIPMENT_SPEED, (int)(plc.ReadDWord((int)eWordInput.PLC_EQUIPMENT_SPEED).data)); // PLC에서 받은 데이터를 그대로 넘겨주니 변환이 필요 없다. Equipment Speed는 Rotary Speed로 PC에서는 사용하지 않고 그냥 표기만 해준다.
|
|
|
|
#region PLC Upload Parameter 1
|
|
ScannerParam _LineParam_1 = ScannerCanvasUserCtrl.ScannerParams[0];
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_LASER_POWER, (int)(_LineParam_1.LaserPower1 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_LASER_POWER.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_DRAW_SPEED, (int)(_LineParam_1.MarkSpeed * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_DRAW_SPEED.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_JUMP_SPEED, (int)(_LineParam_1.JumpSpeed * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_JUMP_SPEED.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_LASER_ON_DELAY, (int)(_LineParam_1.LaserOnDelay * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_LASER_ON_DELAY.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_JUMP_DELAY, (int)(_LineParam_1.JumpDelay * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_JUMP_DELAY.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_RAMPING_START_A_POWER_1, (int)(_LineParam_1.RampingStartAPower1 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_RAMPING_START_A_POWER_1.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_RAMPING_START_A_POWER_2, (int)(_LineParam_1.RampingStartAPower2 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_RAMPING_START_A_POWER_2.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_RAMPING_START_A_DISTANCE, (int)(_LineParam_1.RampingStartADist * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_RAMPING_START_A_DISTANCE.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_RAMPING_START_B_POWER_1, (int)(_LineParam_1.RampingStartPower1 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_RAMPING_START_B_POWER_1.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_RAMPING_START_B_POWER_2, (int)(_LineParam_1.RampingStartPower3 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_RAMPING_START_B_POWER_2.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_RAMPING_START_B_DISTANCE, (int)(_LineParam_1.RampingStartDist * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_RAMPING_START_B_DISTANCE.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_RAMPING_END_POWER_1, (int)(_LineParam_1.RampingEndPower1 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_RAMPING_END_POWER_1.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_RAMPING_END_POWER_2, (int)(_LineParam_1.RampingEndPower3 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_RAMPING_END_POWER_2.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_1_WELDING_RAMPING_END_DISTANCE, (int)(_LineParam_1.RampingEndDist * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_1_WELDING_RAMPING_END_DISTANCE.ToString())));
|
|
#endregion
|
|
#region PLC Upload Parameter 2
|
|
ScannerParam _LineParam_2 = ScannerCanvasUserCtrl.ScannerParams[1];
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_2_WELDING_LASER_POWER, (int)(_LineParam_2.LaserPower1 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_2_WELDING_LASER_POWER.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_2_WELDING_DRAW_SPEED, (int)(_LineParam_2.MarkSpeed * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_2_WELDING_DRAW_SPEED.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_2_WELDING_JUMP_SPEED, (int)(_LineParam_2.JumpSpeed * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_2_WELDING_JUMP_SPEED.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_2_WELDING_LASER_ON_DELAY, (int)(_LineParam_2.LaserOnDelay * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_2_WELDING_LASER_ON_DELAY.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_2_WELDING_JUMP_DELAY, (int)(_LineParam_2.JumpDelay * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_2_WELDING_JUMP_DELAY.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_2_WELDING_RAMPING_START_A_POWER_1, (int)(_LineParam_2.RampingStartAPower1 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_2_WELDING_RAMPING_START_A_POWER_1.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_2_WELDING_RAMPING_START_A_POWER_2, (int)(_LineParam_2.RampingStartAPower2 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_2_WELDING_RAMPING_START_A_POWER_2.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_2_WELDING_RAMPING_START_A_DISTANCE, (int)(_LineParam_2.RampingStartADist * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_2_WELDING_RAMPING_START_A_DISTANCE.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_2_WELDING_RAMPING_START_B_POWER_1, (int)(_LineParam_2.RampingStartPower1 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_2_WELDING_RAMPING_START_B_POWER_1.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_2_WELDING_RAMPING_START_B_POWER_2, (int)(_LineParam_2.RampingStartPower3 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_2_WELDING_RAMPING_START_B_POWER_2.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_2_WELDING_RAMPING_START_B_DISTANCE, (int)(_LineParam_2.RampingStartDist * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_2_WELDING_RAMPING_START_B_DISTANCE.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_2_WELDING_RAMPING_END_POWER_1, (int)(_LineParam_2.RampingEndPower1 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_2_WELDING_RAMPING_END_POWER_1.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_2_WELDING_RAMPING_END_POWER_2, (int)(_LineParam_2.RampingEndPower3 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_2_WELDING_RAMPING_END_POWER_2.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_2_WELDING_RAMPING_END_DISTANCE, (int)(_LineParam_2.RampingEndDist * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_2_WELDING_RAMPING_END_DISTANCE.ToString())));
|
|
#endregion
|
|
#region PLC Upload Parameter 3
|
|
ScannerParam _LineParam_3 = ScannerCanvasUserCtrl.ScannerParams[2];
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_3_WELDING_LASER_POWER, (int)(_LineParam_3.LaserPower1 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_3_WELDING_LASER_POWER.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_3_WELDING_DRAW_SPEED, (int)(_LineParam_3.MarkSpeed * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_3_WELDING_DRAW_SPEED.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_3_WELDING_JUMP_SPEED, (int)(_LineParam_3.JumpSpeed * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_3_WELDING_JUMP_SPEED.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_3_WELDING_LASER_ON_DELAY, (int)(_LineParam_3.LaserOnDelay * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_3_WELDING_LASER_ON_DELAY.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_3_WELDING_JUMP_DELAY, (int)(_LineParam_3.JumpDelay * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_3_WELDING_JUMP_DELAY.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_3_WELDING_RAMPING_START_A_POWER_1, (int)(_LineParam_3.RampingStartAPower1 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_3_WELDING_RAMPING_START_A_POWER_1.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_3_WELDING_RAMPING_START_A_POWER_2, (int)(_LineParam_3.RampingStartAPower2 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_3_WELDING_RAMPING_START_A_POWER_2.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_3_WELDING_RAMPING_START_A_DISTANCE, (int)(_LineParam_3.RampingStartADist * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_3_WELDING_RAMPING_START_A_DISTANCE.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_3_WELDING_RAMPING_START_B_POWER_1, (int)(_LineParam_3.RampingStartPower1 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_3_WELDING_RAMPING_START_B_POWER_1.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_3_WELDING_RAMPING_START_B_POWER_2, (int)(_LineParam_3.RampingStartPower3 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_3_WELDING_RAMPING_START_B_POWER_2.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_3_WELDING_RAMPING_START_B_DISTANCE, (int)(_LineParam_3.RampingStartDist * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_3_WELDING_RAMPING_START_B_DISTANCE.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_3_WELDING_RAMPING_END_POWER_1, (int)(_LineParam_3.RampingEndPower1 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_3_WELDING_RAMPING_END_POWER_1.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_3_WELDING_RAMPING_END_POWER_2, (int)(_LineParam_3.RampingEndPower3 * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_3_WELDING_RAMPING_END_POWER_2.ToString())));
|
|
plc.WriteDWord((int)eWordOutput.PC_PARAM_3_WELDING_RAMPING_END_DISTANCE, (int)(_LineParam_3.RampingEndDist * (plc as PLCControllerCCWH52A).ConvertTo2WordDivisionIndex(eWordOutput.PC_PARAM_3_WELDING_RAMPING_END_DISTANCE.ToString())));
|
|
#endregion
|
|
|
|
Log.I(string.Format($"SET PC_RECIPE_PARAM_UPLOAD_COMPLETE True"));
|
|
plc.WriteBit((int)eBitOutput.PC_RECIPE_PARAM_UPLOAD_COMPLETE, true);
|
|
}
|
|
|
|
internal static bool ExternalRecipeChangeRequest(Logger Log, IAuroraEnvironment aurora)
|
|
{
|
|
var plc = aurora.DeviceManager[CommonDeviceIds.PLCDevice] as PLCController;
|
|
int recipeRequestId = (int)plc.ReadDWord((int)eWordInput.PLC_WELDING_RECIPE_NO).data;
|
|
|
|
var recipeName = WeldingRecipeManager.SearchRecipeItem(recipeRequestId);
|
|
if (recipeName != "") {
|
|
WeldingRecipeManager.OnActiveRecipe(recipeRequestId, recipeName);
|
|
WeldingRecipeManager.OnActiveReloaded();
|
|
} else {
|
|
//MessageDialog.Show(Application.Current.MainWindow, "Recipe", "Recipe List에 해당 Recipe No.가 없습니다.");
|
|
Log.E($"The requested Recipe No.{recipeRequestId} is not in the Recipe List.");
|
|
return false;
|
|
}
|
|
|
|
#region 기존 RMS 방식
|
|
//Line _Line = null;
|
|
//var layerObjectList = WeldingRecipeManager.GetWeldingLayerObjects(0);
|
|
//if (layerObjectList.ElementAt(0) is Line) {
|
|
// _Line = (Line)layerObjectList.ElementAt(0);
|
|
//}
|
|
|
|
//if (_Line != null) {
|
|
// ScannerParam _LineParam = ScannerCanvasUserCtrl.ScannerParams[_Line.ScannerParamNo];
|
|
// _LineParam.LaserPower1 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_WELDING_LASER_POWER);
|
|
// _LineParam.MarkSpeed = (double)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_WELDING_DRAW_SPEED);
|
|
// _LineParam.JumpSpeed = (double)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_WELDING_JUMP_SPEED);
|
|
|
|
// // 레이저 포커스 Z축 포지션영역, 해당 파라미터를 어떻게 받아 어떻게 전달할지에 대해서 논의 필요
|
|
// //ZPosition?? = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_WELDING_FOCAL_LENGTH);
|
|
|
|
// _LineParam.LaserOnDelay = (int)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_WELDING_LASER_ON_DELAY);
|
|
// _LineParam.LaserOffDelay = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_WELDING_LASER_OFF_DELAY);
|
|
// _LineParam.JumpDelay = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_WELDING_JUMP_DELAY);
|
|
// _LineParam.MarkDelay = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_WELDING_MARK_DELAY);
|
|
// _LineParam.PolygonDelay = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_WELDING_POLYGON_DELAY);
|
|
// _LineParam.RampingStartAPower1 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_WELDING_RAMPING_START_A_POWER_1);
|
|
// _LineParam.RampingStartAPower2 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_WELDING_RAMPING_START_A_POWER_2);
|
|
// _LineParam.RampingStartADist = (double)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_WELDING_RAMPING_START_A_DISTANCE);
|
|
// _LineParam.RampingStartPower1 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_WELDING_RAMPING_START_B_POWER_1);
|
|
// _LineParam.RampingStartPower3 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_WELDING_RAMPING_START_B_POWER_2);
|
|
// _LineParam.RampingStartDist = (double)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_WELDING_RAMPING_START_B_DISTANCE);
|
|
// _LineParam.RampingEndPower1 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_WELDING_RAMPING_END_POWER_1);
|
|
// _LineParam.RampingEndPower3 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_WELDING_RAMPING_END_POWER_2);
|
|
// _LineParam.RampingEndDist = (double)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_WELDING_RAMPING_END_DISTANCE);
|
|
|
|
//} else {
|
|
// Log.W("Check Whether there is Line in the Activated Recipe Object!");
|
|
//}
|
|
#endregion
|
|
#region 확인 필요 항목
|
|
//_LineParam.LaserOffDelay = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_1_WELDING_LASER_OFF_DELAY);
|
|
//_LineParam.MarkDelay = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_1_WELDING_MARK_DELAY);
|
|
//_LineParam.PolygonDelay = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_1_WELDING_POLYGON_DELAY);
|
|
#endregion
|
|
|
|
#region Scanner Upload Parameter 1
|
|
ScannerParam _LineParam_1 = ScannerCanvasUserCtrl.ScannerParams[0];
|
|
_LineParam_1.LaserPower1 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_1_WELDING_LASER_POWER);
|
|
_LineParam_1.MarkSpeed = (double)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_1_WELDING_DRAW_SPEED);
|
|
_LineParam_1.JumpSpeed = (double)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_1_WELDING_JUMP_SPEED);
|
|
_LineParam_1.LaserOnDelay = (int)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_1_WELDING_LASER_ON_DELAY);
|
|
_LineParam_1.JumpDelay = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_1_WELDING_JUMP_DELAY);
|
|
_LineParam_1.RampingStartAPower1 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_1_WELDING_RAMPING_START_A_POWER_1);
|
|
_LineParam_1.RampingStartAPower2 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_1_WELDING_RAMPING_START_A_POWER_2);
|
|
_LineParam_1.RampingStartADist = (double)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_1_WELDING_RAMPING_START_A_DISTANCE);
|
|
_LineParam_1.RampingStartPower1 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_1_WELDING_RAMPING_START_B_POWER_1);
|
|
_LineParam_1.RampingStartPower3 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_1_WELDING_RAMPING_START_B_POWER_2);
|
|
_LineParam_1.RampingStartDist = (double)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_1_WELDING_RAMPING_START_B_DISTANCE);
|
|
_LineParam_1.RampingEndPower1 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_1_WELDING_RAMPING_END_POWER_1);
|
|
_LineParam_1.RampingEndPower3 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_1_WELDING_RAMPING_END_POWER_2);
|
|
_LineParam_1.RampingEndDist = (double)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_1_WELDING_RAMPING_END_DISTANCE);
|
|
#endregion
|
|
#region Scanner Upload Parameter 2
|
|
ScannerParam _LineParam_2 = ScannerCanvasUserCtrl.ScannerParams[1];
|
|
_LineParam_2.LaserPower1 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_2_WELDING_LASER_POWER);
|
|
_LineParam_2.MarkSpeed = (double)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_2_WELDING_DRAW_SPEED);
|
|
_LineParam_2.JumpSpeed = (double)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_2_WELDING_JUMP_SPEED);
|
|
_LineParam_2.LaserOnDelay = (int)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_2_WELDING_LASER_ON_DELAY);
|
|
_LineParam_2.JumpDelay = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_2_WELDING_JUMP_DELAY);
|
|
_LineParam_2.RampingStartAPower1 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_2_WELDING_RAMPING_START_A_POWER_1);
|
|
_LineParam_2.RampingStartAPower2 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_2_WELDING_RAMPING_START_A_POWER_2);
|
|
_LineParam_2.RampingStartADist = (double)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_2_WELDING_RAMPING_START_A_DISTANCE);
|
|
_LineParam_2.RampingStartPower1 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_2_WELDING_RAMPING_START_B_POWER_1);
|
|
_LineParam_2.RampingStartPower3 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_2_WELDING_RAMPING_START_B_POWER_2);
|
|
_LineParam_2.RampingStartDist = (double)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_2_WELDING_RAMPING_START_B_DISTANCE);
|
|
_LineParam_2.RampingEndPower1 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_2_WELDING_RAMPING_END_POWER_1);
|
|
_LineParam_2.RampingEndPower3 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_2_WELDING_RAMPING_END_POWER_2);
|
|
_LineParam_2.RampingEndDist = (double)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_2_WELDING_RAMPING_END_DISTANCE);
|
|
#endregion
|
|
#region Scanner Upload Parameter 3
|
|
ScannerParam _LineParam_3 = ScannerCanvasUserCtrl.ScannerParams[2];
|
|
_LineParam_3.LaserPower1 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_3_WELDING_LASER_POWER);
|
|
_LineParam_3.MarkSpeed = (double)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_3_WELDING_DRAW_SPEED);
|
|
_LineParam_3.JumpSpeed = (double)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_3_WELDING_JUMP_SPEED);
|
|
_LineParam_3.LaserOnDelay = (int)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_3_WELDING_LASER_ON_DELAY);
|
|
_LineParam_3.JumpDelay = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_3_WELDING_JUMP_DELAY);
|
|
_LineParam_3.RampingStartAPower1 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_3_WELDING_RAMPING_START_A_POWER_1);
|
|
_LineParam_3.RampingStartAPower2 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_3_WELDING_RAMPING_START_A_POWER_2);
|
|
_LineParam_3.RampingStartADist = (double)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_3_WELDING_RAMPING_START_A_DISTANCE);
|
|
_LineParam_3.RampingStartPower1 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_3_WELDING_RAMPING_START_B_POWER_1);
|
|
_LineParam_3.RampingStartPower3 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_3_WELDING_RAMPING_START_B_POWER_2);
|
|
_LineParam_3.RampingStartDist = (double)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_3_WELDING_RAMPING_START_B_DISTANCE);
|
|
_LineParam_3.RampingEndPower1 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_3_WELDING_RAMPING_END_POWER_1);
|
|
_LineParam_3.RampingEndPower3 = (uint)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_3_WELDING_RAMPING_END_POWER_2);
|
|
_LineParam_3.RampingEndDist = (double)(plc as PLCControllerCCWH52A).ReadDWordByDivision(eWordInput.PLC_PARAM_3_WELDING_RAMPING_END_DISTANCE);
|
|
#endregion
|
|
|
|
//TODO: Recipe 저장 되어지면 안될꺼 같은데, 확인 필요함.
|
|
IRecipeManager recipeManager = aurora.RecipeManager;
|
|
var activeRecipe = recipeManager.ActivatedRecipe();
|
|
WeldingRecipeManager.SaveWeldingRecipe(activeRecipe.Name);
|
|
|
|
ExternalRecipeUpdate(Log, aurora);
|
|
|
|
return true;
|
|
}
|
|
|
|
// 완료시 PLC bit 처리 위해 추가
|
|
internal static void ExternalRecipeChangeComplete(Logger Log, IAuroraEnvironment aurora)
|
|
{
|
|
// TODO: [장비구현필요] RecipeChangeComplete 설정 구현
|
|
|
|
Log.D("RecipeEventHelper ExternalRecipeChangeComplete");
|
|
var plc = aurora.DeviceManager[CommonDeviceIds.PLCDevice] as PLCController;
|
|
|
|
plc.WriteBit((int)eBitOutput.PC_RECIPE_CHANGE_COMPLETE, true);
|
|
|
|
TimeSpan spanTime;
|
|
DateTime startTime = DateTime.Now;
|
|
int timeOut = 10;
|
|
|
|
while (true) {
|
|
spanTime = DateTime.Now.Subtract(startTime);
|
|
|
|
if (!plc.ReadBit((int)eBitInput.PLC_RECIPE_CHANGE_REQ).data) {
|
|
break;
|
|
}
|
|
|
|
if (spanTime.TotalMilliseconds > (timeOut * 1000)) {
|
|
break;
|
|
}
|
|
}
|
|
|
|
plc.WriteBit((int)eBitOutput.PC_RECIPE_CHANGE_COMPLETE, false);
|
|
}
|
|
}
|
|
}
|