Release Current
This commit is contained in:
parent
7dd4648587
commit
027a1e3256
@ -350,6 +350,33 @@ namespace AuroraLaserScanner
|
||||
}
|
||||
_scannerObj.WaitForEncoderX(position);
|
||||
}
|
||||
public void WaitForEncoderY(double position)
|
||||
{
|
||||
if (!IsActivated)
|
||||
{
|
||||
return;
|
||||
}
|
||||
_scannerObj.WaitForEncoderY(position);
|
||||
}
|
||||
public void GetListPointer(out eListNo list_no, out uint list_pos)
|
||||
{
|
||||
list_no = eListNo.LIST1;
|
||||
list_pos = 0;
|
||||
if (!IsActivated)
|
||||
{
|
||||
return;
|
||||
}
|
||||
_scannerObj.GetListPointer(out list_no, out list_pos);
|
||||
}
|
||||
public void SetFlyY(double encoderResolution)
|
||||
{
|
||||
if (!IsActivated)
|
||||
{
|
||||
return;
|
||||
}
|
||||
_scannerObj.SetFlyY(encoderResolution);
|
||||
}
|
||||
|
||||
|
||||
public void WaitForEncoderRotateX(double angle)
|
||||
{
|
||||
|
||||
@ -315,6 +315,7 @@ namespace AuroraLaserScanner
|
||||
public abstract void SetConfigList(uint mem1, uint mem2);
|
||||
public abstract uint GetListSpace();
|
||||
#endregion
|
||||
public abstract void GetListPointer(out eListNo list_no, out uint list_pos);
|
||||
public void WaitForListTaskCompleted(int timeOut, SequenceContext context = null) //단위는 초
|
||||
{
|
||||
TimeSpan spanTime;
|
||||
|
||||
@ -1109,5 +1109,12 @@ namespace AuroraLaserScanner
|
||||
{
|
||||
return RTC5Wrap.get_last_error();
|
||||
}
|
||||
public override void GetListPointer(out eListNo list_no, out uint list_pos)
|
||||
{
|
||||
uint listNo = 0;
|
||||
RTC5Wrap.get_list_pointer(out listNo, out list_pos);
|
||||
list_no = (eListNo)listNo;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -1121,6 +1121,12 @@ namespace AuroraLaserScanner
|
||||
{
|
||||
return RTC6Wrap.get_last_error();
|
||||
}
|
||||
public override void GetListPointer(out eListNo list_no, out uint list_pos)
|
||||
{
|
||||
uint listNo = 0;
|
||||
RTC6Wrap.get_list_pointer(out listNo, out list_pos);
|
||||
list_no = (eListNo)listNo;
|
||||
}
|
||||
|
||||
#region 26.04.08 NDY - 오차 추적 메소드 OVERRIDE 추가 RTC6 (자식클래스 -실제 RTC6Wrap전달 지점)
|
||||
//public override void SetFlyLimit(uint portNo,int xMin, int xMax , int yMin,int yMax )
|
||||
@ -1133,7 +1139,7 @@ namespace AuroraLaserScanner
|
||||
//{
|
||||
// RTC6Wrap.n_set_fly_limits_z(portNo, zMin, zMax);
|
||||
//}
|
||||
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@ -569,5 +569,10 @@ namespace AuroraLaserScanner
|
||||
return 0;
|
||||
}
|
||||
|
||||
public override void GetListPointer(out eListNo list_no, out uint list_pos)
|
||||
{
|
||||
list_no = eListNo.LIST1;
|
||||
list_pos = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -181,7 +181,11 @@ namespace ILSOS_PrismaticScanner.Sequences
|
||||
Log.I("===== [SEQ_ENTER] Sequence entry =====");
|
||||
Log.I("SeqTeachingRun Start");
|
||||
|
||||
_InitParam = param.Param as SeqTeachingRun_InitParam;
|
||||
_InitParam = param.Param as SeqTeachingRun_InitParam; // 이곳에서 못 가져오는 이유
|
||||
if(_InitParam == null)
|
||||
{
|
||||
Log.D($"(확인용)InitParam이 ({_InitParam}) null 입니다.");
|
||||
}
|
||||
_SystemParameter = context.Settings[CommonSettingIds.SystemParameter] as SystemParameter;
|
||||
_SequenceSetting = context.Settings[CommonSettingIds.Sequence] as SequenceSetting;
|
||||
|
||||
@ -256,7 +260,7 @@ namespace ILSOS_PrismaticScanner.Sequences
|
||||
Log.I("[MoveStageToOrigin] Stage X -> 310 move start");
|
||||
|
||||
// 26.04.17 NDY - start from 310
|
||||
_AxisX.SetTargetPos(310, TargetPosType.ABS);
|
||||
_AxisX.SetTargetPos(0, TargetPosType.ABS);
|
||||
_AxisX.SetMoveVelocityImm(AuroraACS.Speed.M);
|
||||
_AxisX.AccelerationImm(AuroraACS.Speed.M);
|
||||
_AxisX.DecelerationImm(AuroraACS.Speed.M);
|
||||
@ -264,7 +268,7 @@ namespace ILSOS_PrismaticScanner.Sequences
|
||||
_AxisX.Move();
|
||||
Log.D("[MoveStageToOrigin] AxisX.Move() called (target=310)");
|
||||
|
||||
// Laser FocusPosition Move 22.8 <- Z axis material position
|
||||
// Laser FocusPosition Move 22.8 <- Z axis material position- 자재 위치 기준 하드 코딩 값
|
||||
_AxisZ.SetTargetPos(22.8, TargetPosType.ABS);
|
||||
_AxisZ.SetMoveVelocityImm(AuroraACS.Speed.M);
|
||||
_AxisZ.AccelerationImm(AuroraACS.Speed.M);
|
||||
@ -280,7 +284,7 @@ namespace ILSOS_PrismaticScanner.Sequences
|
||||
// () => _AxisX.IsReachedTargetPosition(0),
|
||||
// 30 * 1000, 20, true);
|
||||
var res = context.RetryUntilSuccess(
|
||||
() => _AxisX.IsReachedTargetPosition(310),
|
||||
() => _AxisX.IsReachedTargetPosition(0),
|
||||
30 * 1000, 20, true);
|
||||
|
||||
if (res == E2.TIMEOUT) { Log.E("[MoveStageToOrigin] TIMEOUT"); return null; }
|
||||
@ -293,6 +297,7 @@ namespace ILSOS_PrismaticScanner.Sequences
|
||||
// ==================== SEQ_STANDBY_SCANNER ====================
|
||||
private SequenceActionResult SetStandbyScanner(SequenceContext context, string id, SequenceActionResult param)
|
||||
{
|
||||
|
||||
var mainPage = CommonHelper.GetMainPage();
|
||||
_ScannerCanvasUserCtrl = mainPage.ScannerCanvasCtrlTeaching;
|
||||
_WeldingScannerListNo = eListNo.LIST1;
|
||||
@ -310,17 +315,18 @@ namespace ILSOS_PrismaticScanner.Sequences
|
||||
_Scanner.SetStartList(_WeldingScannerListNo);
|
||||
Log.D($"[EncoderReset] SetStartList({_WeldingScannerListNo}) done");
|
||||
|
||||
_Scanner.SetFlyX(_Scanner.Config.MarkingOnTheFlyEncoderResolutionX);
|
||||
Log.I($"[EncoderReset] SetFlyX: {_Scanner.Config.MarkingOnTheFlyEncoderResolutionX}");
|
||||
_Scanner.SetFlyY(_Scanner.Config.MarkingOnTheFlyEncoderResolutionX);
|
||||
// _Scanner.SetFlyX(_Scanner.Config.MarkingOnTheFlyEncoderResolutionX);
|
||||
Log.I($"[EncoderReset] SetFlyY: {_Scanner.Config.MarkingOnTheFlyEncoderResolutionX}");
|
||||
|
||||
//_Scanner.WaitForEncoderX(_Scanner.Config.MarkingStartEncoderPositionX);
|
||||
//Log.I($"[EncoderReset] WaitForEncoderX: {_Scanner.Config.MarkingStartEncoderPositionX}");
|
||||
|
||||
// 26.04.17 NDY - encoder reset at Stage X = 310
|
||||
_Scanner.StoreEncoder(0);
|
||||
_Scanner.SaveAndRestartTimer();
|
||||
//_Scanner.StoreEncoder(0);
|
||||
//_Scanner.SaveAndRestartTimer();
|
||||
|
||||
Log.I("[EncoderReset] Complete - Stage(310) = Scanner Encoder(0) synchronized");
|
||||
//Log.I("[EncoderReset] Complete - Stage(310) = Scanner Encoder(0) synchronized");
|
||||
return SequenceAction.Ok();
|
||||
}
|
||||
|
||||
@ -342,7 +348,7 @@ namespace ILSOS_PrismaticScanner.Sequences
|
||||
|
||||
var mainPage = CommonHelper.GetMainPage();
|
||||
_ScannerCanvasUserCtrl = mainPage.ScannerCanvasCtrlTeaching;
|
||||
|
||||
|
||||
int layerIdx = _PageNum - 1;
|
||||
Log.D($"[SetBeforeUpload] LayerIndex={layerIdx}, TotalLayers={_ScannerCanvasUserCtrl.Model.Layers.Count()}");
|
||||
|
||||
@ -369,7 +375,7 @@ namespace ILSOS_PrismaticScanner.Sequences
|
||||
// 기존 코드 유지 (if _PageNum==0 -> if _PageNum==2 수정)
|
||||
Log.I($"[SetBeforeUpload] PageNum=2 -> WaitForEncoderX({_Scanner.Config.MarkingStartX_1:F4})");
|
||||
Log.D($" MarkingStartX_1={_Scanner.Config.MarkingStartX_1} / XDiff_Page1and2={_Scanner.Config.XDiff_Page1and2}");
|
||||
_Scanner.WaitForEncoderX(_Scanner.Config.MarkingStartX_1);
|
||||
_Scanner.WaitForEncoderY(-_Scanner.Config.MarkingStartX_1);
|
||||
Log.I($"[EncoderReset] WaitForEncoderX: {_Scanner.Config.MarkingStartX_1}");
|
||||
|
||||
// 26.04.17 NDY - if need 360 boundary, replace with below
|
||||
@ -381,7 +387,7 @@ namespace ILSOS_PrismaticScanner.Sequences
|
||||
// 기존 코드 유지
|
||||
Log.I($"[SetBeforeUpload] PageNum=4 -> WaitForEncoderX({_Scanner.Config.MarkingStartX_2:F4})");
|
||||
Log.D($" MarkingStartX_2={_Scanner.Config.MarkingStartX_2} / XDiff_Page3and4={_Scanner.Config.XDiff_Page3and4}");
|
||||
_Scanner.WaitForEncoderX(_Scanner.Config.MarkingStartX_2);
|
||||
_Scanner.WaitForEncoderY(-_Scanner.Config.MarkingStartX_2);
|
||||
Log.I($"[EncoderReset] WaitForEncoderX: {_Scanner.Config.MarkingStartX_2}");
|
||||
|
||||
// 26.04.17 NDY - if need 590 boundary, replace with below
|
||||
@ -474,10 +480,12 @@ namespace ILSOS_PrismaticScanner.Sequences
|
||||
{
|
||||
// Close list buffer before execute - subsequence has no SetStartList/SetEndList
|
||||
//Log.I($"[DoComponentWelding] ListSpace (before SetEndList)={_Scanner.GetListSpace()}");
|
||||
//_Scanner.SetEndList();
|
||||
_Scanner.SetEndList();
|
||||
Log.I($"[DoComponentWelding] ListSpace (after SetEndList)={_Scanner.GetListSpace()}");
|
||||
|
||||
Log.I("ExecuteList Start");
|
||||
double x = 0.0, y = 0.0;
|
||||
_Scanner.GetEncoder(out x, out y);
|
||||
Log.I($"ExecuteList Start(Encoder x[{x}], y[{y}])");
|
||||
Log.I($"Welding List Space : {_Scanner.GetListSpace()}");
|
||||
DateTime weldingTime = DateTime.Now;
|
||||
_Scanner.ExecuteList(_WeldingScannerListNo);
|
||||
@ -520,6 +528,10 @@ namespace ILSOS_PrismaticScanner.Sequences
|
||||
_ACS.ResetMOTFComp();
|
||||
Log.I("[SetMotion] ResetMOTFComp done");
|
||||
|
||||
double x = 0.0, y = 0.0;
|
||||
_Scanner.GetEncoder(out x, out y);
|
||||
Log.I($"Motion Move End (Encoder x[{x}], y[{y}])");
|
||||
|
||||
// Forward direction param setting (310 -> 640)
|
||||
bool result = _ACS.SetMOTFParams(
|
||||
posX: _scannerConfig.MarkingStartX_1,
|
||||
@ -591,6 +603,7 @@ namespace ILSOS_PrismaticScanner.Sequences
|
||||
res = context.Wait(waitMs, 10);
|
||||
if (res == E2.CANCELLED) { Log.E("[StartMotion] Reverse 50mm wait CANCELLED"); return null; }
|
||||
|
||||
|
||||
Log.I("[StartMotion] Reverse CheckMOTFComp wait start");
|
||||
res = context.RetryUntilSuccess(() => _ACS.CheckMOTFComp(), 1000 * 30, 100, true);
|
||||
if (res == E2.TIMEOUT) { Log.E("[StartMotion] Reverse TIMEOUT"); return null; }
|
||||
@ -599,7 +612,7 @@ namespace ILSOS_PrismaticScanner.Sequences
|
||||
|
||||
#region Stage X return to 0 after welding complete
|
||||
// 26.04.16 NDY - Stage X return to origin(0) after welding
|
||||
_AxisX.SetTargetPos(0, TargetPosType.ABS);
|
||||
_AxisX.SetTargetPos(25, TargetPosType.ABS);
|
||||
_AxisX.SetMoveVelocityImm(AuroraACS.Speed.M);
|
||||
_AxisX.AccelerationImm(AuroraACS.Speed.M);
|
||||
_AxisX.DecelerationImm(AuroraACS.Speed.M);
|
||||
@ -607,8 +620,20 @@ namespace ILSOS_PrismaticScanner.Sequences
|
||||
_AxisX.Move();
|
||||
Log.D("[StartMotion] AxisX.Move() to 0 called");
|
||||
|
||||
|
||||
|
||||
Func<bool> plcResponse = () => {
|
||||
Debug.WriteLine($"Scanner Busy : {_Scanner.GetBusyStatus()}");
|
||||
eListNo list;
|
||||
uint point = 0;
|
||||
_Scanner.GetListPointer(out list, out point);
|
||||
Debug.WriteLine($"Scanner list Pointer : {point}");
|
||||
|
||||
return _AxisX.IsReachedTargetPosition(25);
|
||||
};
|
||||
|
||||
res = context.RetryUntilSuccess(
|
||||
() => _AxisX.IsReachedTargetPosition(0),
|
||||
plcResponse,
|
||||
30 * 1000, 20, true);
|
||||
|
||||
if (res == E2.TIMEOUT) { Log.E("[EndWelding] Stage X return TIMEOUT"); }
|
||||
@ -635,9 +660,9 @@ namespace ILSOS_PrismaticScanner.Sequences
|
||||
Log.D($"[TactTime] Complete All Component Weld : {_MeasurementSpanTime.TotalMilliseconds}");
|
||||
|
||||
// Analog output - COMMAND mode = direct (not list)
|
||||
_Scanner.WriteDA((uint)eAnalogPortOut.DA1, 5, eFunctionType.COMMAND);
|
||||
_Scanner.WriteDA((uint)eAnalogPortOut.DA2, 5, eFunctionType.COMMAND);
|
||||
Log.D("[EndWelding] WriteDA(DA1=5, DA2=5) done");
|
||||
_Scanner.WriteDA((uint)eAnalogPortOut.DA1, 0, eFunctionType.COMMAND);
|
||||
_Scanner.WriteDA((uint)eAnalogPortOut.DA2, 0, eFunctionType.COMMAND);
|
||||
Log.D("[EndWelding] WriteDA(DA1=0, DA2=0) done");
|
||||
|
||||
_Scanner.JumpAbs(0, 0, eFunctionType.COMMAND);
|
||||
Log.D("[EndWelding] JumpAbs(0,0) done");
|
||||
|
||||
@ -223,13 +223,6 @@ namespace ILSOS_PrismaticScanner.Views
|
||||
// //VisionRecipeNo = 0 // 해당 InitParam에는 없는 선언
|
||||
//};
|
||||
|
||||
// 26 04 17 수정
|
||||
//var param = new SeqAutoRunPrismaticScanner_InitParam()
|
||||
//{
|
||||
// NeedSetLaserTiming = true,
|
||||
// IsObjectSelectAll = true, // 전체 오브젝트 선택
|
||||
//};
|
||||
|
||||
var param = new SeqTeachingRun_InitParam()
|
||||
{
|
||||
IsObjectSelectAll = true,
|
||||
@ -292,15 +285,13 @@ namespace ILSOS_PrismaticScanner.Views
|
||||
public override void OnAutoRunStopRequest()
|
||||
{
|
||||
base.OnAutoRunStopRequest();
|
||||
//// Prewelding은 자동 운전 정지 와도 무시
|
||||
//StopSequenceAutoRun();
|
||||
}
|
||||
|
||||
private void OnStopSequenceAutoRun(object obj = null)
|
||||
{
|
||||
if (_SeqAutoRun.RunState == SequenceRunState.Idle) {
|
||||
return;
|
||||
}
|
||||
//if (_SeqAutoRun.RunState == SequenceRunState.Idle) {
|
||||
// return;
|
||||
//}
|
||||
|
||||
_SeqAutoRun.Stop();
|
||||
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
using Aurora.Api;
|
||||
using Aurora.Api.Devices;
|
||||
using Aurora.Util.HislogPlus;
|
||||
using AuroraLaser;
|
||||
using AuroraLaserScanner;
|
||||
using CoreUnit.Control.UserControl.Canvas;
|
||||
@ -117,7 +118,7 @@ namespace WeldingCommon.Sequences
|
||||
|
||||
private SequenceActionResult Sequence_Enter(SequenceContext context, string id, SequenceActionResult param)
|
||||
{
|
||||
Log.I("SeqUploadWeldingList Start");
|
||||
Log.I("[Sequence_Enter] SeqUploadWeldingList Start");
|
||||
|
||||
_InitParam = param.Param as SeqUploadWeldingList_InitParam;
|
||||
_LaserPowerCalParam = context.GetSetting<LaserPowerCalParam>(CommonSettingIds.LaserPowerCalParam);//우선 AuroraRecipe로 상속받아서 함수 사용하도록 함
|
||||
@ -129,7 +130,7 @@ namespace WeldingCommon.Sequences
|
||||
InitDev(context);
|
||||
if (!CheckDeviceReady(context)) { //Check Device
|
||||
AlarmManager.Alarm(AlarmCode.ALARM_SEQUENCE_UploadWeldingList_DeviceNotReady);
|
||||
Log.E("The devices are not active.");
|
||||
Log.E("[Sequence_Enter] The devices are not active.");
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -140,7 +141,7 @@ namespace WeldingCommon.Sequences
|
||||
|
||||
// ian0513, 이게 여기 있어야 할까??, 무엇을 측정 하기 위한건지 명확히 알고 실제 공정이면 다른 밑의 Node 로 변경
|
||||
_UploadstartTime = DateTime.Now;
|
||||
|
||||
isFirst = true;
|
||||
return SequenceAction.Ok();
|
||||
}
|
||||
|
||||
@ -152,11 +153,13 @@ namespace WeldingCommon.Sequences
|
||||
_FlyOffsetX = 0;
|
||||
|
||||
_FlyOffsetY = 0;
|
||||
if (_InitParam.PageNum == 1 || _InitParam.PageNum == 2)
|
||||
_FlyOffsetY += _Scanner.Config.XDiff_Page1and2;
|
||||
if (_Scanner.Config.UseMarkingOnTheFly) {
|
||||
if (_InitParam.PageNum == 1 || _InitParam.PageNum == 2)
|
||||
_FlyOffsetY += _Scanner.Config.XDiff_Page1and2;
|
||||
|
||||
else
|
||||
_FlyOffsetY += _Scanner.Config.XDiff_Page3and4;
|
||||
else
|
||||
_FlyOffsetY += _Scanner.Config.XDiff_Page3and4;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -219,7 +222,7 @@ namespace WeldingCommon.Sequences
|
||||
{
|
||||
if (!CheckCondition()) {
|
||||
AlarmManager.Alarm(AlarmCode.ALARM_SEQUENCE_UploadWeldingList_CheckInitCondition);
|
||||
Log.E("Condition is not in state to start sequence.");
|
||||
Log.E("[CheckInitCondition] Condition is not in state to start sequence.");
|
||||
context.PutValue(ContextKey.KEY_SEQUENCE_RESULT, false);
|
||||
return SEQ_COMPLETE;
|
||||
}
|
||||
@ -227,7 +230,7 @@ namespace WeldingCommon.Sequences
|
||||
var startTime = DateTime.Now;
|
||||
context.PutValue(ContextKey.KEY_SEQUENCE_START_TIME, startTime);
|
||||
|
||||
Log.D("UploadWeldingList Sequence CheckInitCondition");
|
||||
Log.D("[CheckInitCondition] UploadWeldingList Sequence CheckInitCondition");
|
||||
return SEQ_MARKING_ON_THE_FLY_ON;
|
||||
}
|
||||
|
||||
@ -235,45 +238,46 @@ namespace WeldingCommon.Sequences
|
||||
private SequenceActionResult MarkingOnTheFlyOn(SequenceContext context, string id, SequenceActionResult param)
|
||||
{
|
||||
#region 260416 복원 -지운 내용 복원함.
|
||||
if (_Scanner.Config.UseMarkingOnTheFly)
|
||||
{
|
||||
if (_Scanner.Config.OnTheFlyCoordinate == eOntheFlyCoordinate.XY)
|
||||
{
|
||||
// 1. Linear Track OTF 활성화 및 엔코더 초기화
|
||||
_Scanner.SetFlyX(_Scanner.Config.MarkingOnTheFlyEncoderResolutionX);
|
||||
//if (_Scanner.Config.UseMarkingOnTheFly)
|
||||
//{
|
||||
// if (_Scanner.Config.OnTheFlyCoordinate == eOntheFlyCoordinate.XY)
|
||||
// {
|
||||
// // 1. Linear Track OTF 활성화 및 엔코더 초기화
|
||||
// _Scanner.SetFlyX(_Scanner.Config.MarkingOnTheFlyEncoderResolutionX);
|
||||
|
||||
// 2. 엔코더 특정 위치갈 때까지 대기
|
||||
_Scanner.WaitForEncoderX(_Scanner.Config.MarkingStartEncoderPositionX);
|
||||
// // 2. 엔코더 특정 위치갈 때까지 대기
|
||||
// _Scanner.WaitForEncoderX(_Scanner.Config.MarkingStartEncoderPositionX);
|
||||
|
||||
_FlyOffsetX = _Scanner.Config.MarkingOntheFlyOffsetX;
|
||||
_FlyOffsetY = _Scanner.Config.MarkingOntheFlyOffsetY;
|
||||
// _FlyOffsetX = _Scanner.Config.MarkingOntheFlyOffsetX;
|
||||
// _FlyOffsetY = _Scanner.Config.MarkingOntheFlyOffsetY;
|
||||
|
||||
}
|
||||
else if (_Scanner.Config.OnTheFlyCoordinate == eOntheFlyCoordinate.Rotate)
|
||||
{
|
||||
Log.I(string.Format("MOTF 사용, Rotate 보상"));
|
||||
// 1. 엔코더 값이 들어오면 바로 X(Rotary) Encoder 리셋
|
||||
_Scanner.SetFlyRotate(_Scanner.Config.MarkingOnTheFlyEncoderResolutionRotate);
|
||||
// }
|
||||
// else if (_Scanner.Config.OnTheFlyCoordinate == eOntheFlyCoordinate.Rotate)
|
||||
// {
|
||||
// Log.I(string.Format("MOTF 사용, Rotate 보상"));
|
||||
// // 1. 엔코더 값이 들어오면 바로 X(Rotary) Encoder 리셋
|
||||
// _Scanner.SetFlyRotate(_Scanner.Config.MarkingOnTheFlyEncoderResolutionRotate);
|
||||
|
||||
// 2. 일괄 회전.(OTW 세팅시, Encoder가 0부터 시작하므로)
|
||||
foreach (IDrawObject obj in _InitParam.SelectedDrawObjectList)
|
||||
{
|
||||
obj.Rotate(ROTATION_DEGREE, new UnitPoint(_Scanner.Config.MarkingOnTheFlyRotateCenterX, _Scanner.Config.MarkingOnTheFlyRotateCenterY)); // +15도 회전
|
||||
}
|
||||
// // 2. 일괄 회전.(OTW 세팅시, Encoder가 0부터 시작하므로)
|
||||
// foreach (IDrawObject obj in _InitParam.SelectedDrawObjectList)
|
||||
// {
|
||||
// obj.Rotate(ROTATION_DEGREE, new UnitPoint(_Scanner.Config.MarkingOnTheFlyRotateCenterX, _Scanner.Config.MarkingOnTheFlyRotateCenterY)); // +15도 회전
|
||||
// }
|
||||
|
||||
// 3. 원하는 용접 시작 각도 올 때까지 기다리기.
|
||||
double weldingAngle = _Scanner.Config.MarkingRangeMinRotate + ROTATION_DEGREE;
|
||||
_Scanner.WaitForEncoderRotateX(weldingAngle); // -5도부터 용접시작하고 싶으면 10도 넣으면 됨
|
||||
// // 3. 원하는 용접 시작 각도 올 때까지 기다리기.
|
||||
// double weldingAngle = _Scanner.Config.MarkingRangeMinRotate + ROTATION_DEGREE;
|
||||
// _Scanner.WaitForEncoderRotateX(weldingAngle); // -5도부터 용접시작하고 싶으면 10도 넣으면 됨
|
||||
|
||||
// _FlyOffsetX, _FlyOffsetY 값 설정 불필요, 0-0 이면 됨.
|
||||
}
|
||||
// // _FlyOffsetX, _FlyOffsetY 값 설정 불필요, 0-0 이면 됨.
|
||||
// }
|
||||
|
||||
// 엔코더 기록(용접 시작)
|
||||
_Scanner.StoreEncoder(0);
|
||||
_Scanner.SaveAndRestartTimer(); // 이전 용접의 T/T을 가져가고 싶으면 여기서 Reset 하기 전에 GetTime으로 읽어가야 함
|
||||
}
|
||||
// // 엔코더 기록(용접 시작)
|
||||
// _Scanner.StoreEncoder(0);
|
||||
// _Scanner.SaveAndRestartTimer(); // 이전 용접의 T/T을 가져가고 싶으면 여기서 Reset 하기 전에 GetTime으로 읽어가야 함
|
||||
//}
|
||||
#endregion
|
||||
|
||||
Log.I($"[MarkingOnTheFlyOn] Comp");
|
||||
return SequenceAction.Ok();
|
||||
}
|
||||
|
||||
@ -284,6 +288,8 @@ namespace WeldingCommon.Sequences
|
||||
_Scanner.SetTrigger(_Scanner.Config.RecordPeriod,
|
||||
_Scanner.Config.RecordSignalType1, _Scanner.Config.RecordSignalType2,
|
||||
_Scanner.Config.RecordSignalType3, _Scanner.Config.RecordSignalType4);
|
||||
|
||||
Log.I($"[RecordSignalOn] Scanner SetTrigger 1 {_Scanner.Config.RecordSignalType1.ToString()} ,2 {_Scanner.Config.RecordSignalType2.ToString()}, 3 {_Scanner.Config.RecordSignalType3.ToString()} ,4 {_Scanner.Config.RecordSignalType4.ToString()}");
|
||||
}
|
||||
|
||||
return SequenceAction.Ok();
|
||||
@ -293,24 +299,28 @@ namespace WeldingCommon.Sequences
|
||||
{
|
||||
//객체에 대한 파라미터 Load 전 lastX,Y를 현재 스캐너 위치로 받아옴
|
||||
_Scanner.GetXYPos(out _LastX, out _LastY);
|
||||
Log.I($"[LoadDrawObjectScannerParam] 현재 스캐너 위치 Last X ({_LastX}) Last Y ({_LastY})");
|
||||
|
||||
_ExternalCommandOffset.X = (float)_InitParam.CellMeasureCenterOffsetX;
|
||||
_ExternalCommandOffset.Y = (float)_InitParam.CellMeasureCenterOffsetY;
|
||||
|
||||
Log.I($"[LoadDrawObjectScannerParam] _ExternalCommandOffset X ({_ExternalCommandOffset.X}) Y ({_ExternalCommandOffset.Y})");
|
||||
// 첫번째 Object의 파라미터만 넣어주자?
|
||||
var scanParam = getScannerParameter(_InitParam.SelectedDrawObjectList.First());
|
||||
if (scanParam != null) {
|
||||
result.SettingPower = scanParam.LaserPower1 + scanParam.LaserPower2;
|
||||
result.SettingVelocity = scanParam.MarkSpeed;
|
||||
}
|
||||
|
||||
//ScannerParam param = ScannerCanvasUserCtrl.ScannerParams[obj.ScannerParamNo];
|
||||
int drawObjectCount = FuncLoadDrawObjectScannerParam(_InitParam.SelectedDrawObjectList);
|
||||
|
||||
Log.I($"[LoadDrawObjectScannerParam] SeqUploadWeldingList_OutParam : SettingPower ({result.SettingPower}) SettingVelocity ({result.SettingVelocity}) " +
|
||||
$"drawObjectCount : ({drawObjectCount})");
|
||||
//var weldingData = Status.GetProcessingWeldingData();
|
||||
//weldingData.UploadDatas[eUploadData.LaserWeldingRecipeNo].Value = context.Recipes.ActivatedRecipe().Id;
|
||||
//weldingData.UploadDatas[eUploadData.PreWeldingPointCount].Value = drawObjectCount;
|
||||
|
||||
//if (_PageNo == 1) {
|
||||
//if (_PageNo == 1)
|
||||
//{
|
||||
// weldingData.UploadDatas[eUploadData.CommonLaserDrawSpeed].Value = _ScannerParam.MarkSpeed;
|
||||
// weldingData.UploadDatas[eUploadData.CommonLaserJumpSpeed].Value = _ScannerParam.JumpSpeed;
|
||||
// weldingData.UploadDatas[eUploadData.CommonLaserMainPowerCore].Value = _ScannerParam.LaserPower1;
|
||||
@ -319,8 +329,10 @@ namespace WeldingCommon.Sequences
|
||||
// weldingData.UploadDatas[eUploadData.CommonLaserRampingLength_Starting].Value = _ScannerParam.RampingStartDist;
|
||||
// weldingData.UploadDatas[eUploadData.CommonLaserRampingPower_OverPath].Value = _ScannerParam.RampingEndPower;
|
||||
// weldingData.UploadDatas[eUploadData.CommonLaserRampingLength_OverPath].Value = _ScannerParam.RampingEndDist;
|
||||
//} else {
|
||||
// weldingData.UploadDatas[eUploadData.CathodeLaserDrawSpeed].Value = _ScannerParam.MarkSpeed;
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// weldingData.UploadDatas[eUploadData.CathodeLaserDrawSpeed].Value = _ScannerParam.MarkSpeed;
|
||||
// weldingData.UploadDatas[eUploadData.CathodeLaserJumpSpeed].Value = _ScannerParam.JumpSpeed;
|
||||
// weldingData.UploadDatas[eUploadData.CathodeLaserMainPowerCore].Value = _ScannerParam.LaserPower1;
|
||||
// weldingData.UploadDatas[eUploadData.CathodeLaserMainPowerRing].Value = _ScannerParam.LaserPower2;
|
||||
@ -355,7 +367,7 @@ namespace WeldingCommon.Sequences
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
//
|
||||
private int FuncLoadDrawObjectScannerParamSelected(IDrawObject obj)
|
||||
{
|
||||
if (!obj.Enabled)
|
||||
@ -376,14 +388,14 @@ namespace WeldingCommon.Sequences
|
||||
}
|
||||
|
||||
if (obj is Line) {
|
||||
if (isFirst && (_InitParam.PageNum==2)) { // 이전 Point 정보가 있고 첫번째 Line인 경우 긴 Line 만들어 Upload
|
||||
if (isFirst && (_InitParam.PageNum == 3)) { // 이전 Point 정보가 있고 첫번째 Line인 경우 긴 Line 만들어 Upload
|
||||
Line LongLine = new Line();
|
||||
LongLine.PF1 = new PointF((float)_InitParam.LastX, (float)_InitParam.LastY - (float)(_Scanner.Config.XDiff_Page3and4 - _Scanner.Config.XDiff_Page1and2));
|
||||
LongLine.PF2 = obj.PF1;
|
||||
LoadLineScannerParam(LongLine);
|
||||
isFirst = false;
|
||||
}
|
||||
if (isFirst && (_InitParam.PageNum == 4)) { // 이전 Point 정보가 있고 첫번째 Line인 경우 긴 Line 만들어 Upload
|
||||
if (isFirst && (_InitParam.PageNum == 1)) { // 이전 Point 정보가 있고 첫번째 Line인 경우 긴 Line 만들어 Upload
|
||||
Line LongLine = new Line();
|
||||
LongLine.PF1 = new PointF((float)_InitParam.LastX, (float)_InitParam.LastY + (float)(_Scanner.Config.XDiff_Page3and4 - _Scanner.Config.XDiff_Page1and2));
|
||||
LongLine.PF2 = obj.PF1;
|
||||
@ -723,7 +735,8 @@ namespace WeldingCommon.Sequences
|
||||
}
|
||||
// END- 시작위치 점프 관련 설정
|
||||
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
// Wobble, PowerProfile, Ramping을 사용하지 않는 일반적인 경우 이쪽으로 들어옴
|
||||
|
||||
// START- Jump(Line Shot)
|
||||
@ -770,9 +783,10 @@ namespace WeldingCommon.Sequences
|
||||
|
||||
_Scanner.MarkAbs(obj.PF2.X + xOffset, obj.PF2.Y + yOffset);
|
||||
|
||||
Log.I(string.Format($"[RCC Subpath Line Weld] Mark(Ramping) ({obj.PF2.X},{obj.PF2.Y})"));
|
||||
Log.I(string.Format($"[RCC Subpath Line Weld] Mark(Ramping) ({obj.PF2.X + xOffset},{obj.PF2.Y + yOffset})"));
|
||||
|
||||
} else if ((param.RampingStartDist > 0 || param.RampingEndDist > 0) && (param.RampingEndDist + param.RampingStartDist <= obj.Distance)) {
|
||||
}
|
||||
else if ((param.RampingStartDist > 0 || param.RampingEndDist > 0) && (param.RampingEndDist + param.RampingStartDist <= obj.Distance)) {
|
||||
// RCC 가 아닌 경우
|
||||
_Scanner.SetVectorControl((uint)eAutoControlParameter.AnalogOut1, 0);
|
||||
_Scanner.SetScannerDelay(param.JumpDelay, param.MarkDelay, 0);
|
||||
@ -819,7 +833,8 @@ namespace WeldingCommon.Sequences
|
||||
|
||||
Log.I(string.Format($"[Line Weld] Mark(Ramping) ({obj.PF2.X},{obj.PF2.Y})"));
|
||||
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
// Ramping 이 없는 경우
|
||||
_Scanner.SetVectorControl((uint)eAutoControlParameter.AnalogOut1, 0);
|
||||
|
||||
@ -836,7 +851,7 @@ namespace WeldingCommon.Sequences
|
||||
|
||||
//_scanner._scannerObj.SetVectorControl((uint)eAutoControlParameter.NoUse, 0);
|
||||
|
||||
Log.I(string.Format($"[Line Weld] Mark(Ramping) ({obj.PF2.X},{obj.PF2.Y})"));
|
||||
Log.I(string.Format($"[Line Weld] Mark(Ramping) ({obj.PF2.X+ xOffset},{obj.PF2.Y+ yOffset})"));
|
||||
}
|
||||
// END- Mark
|
||||
|
||||
@ -1525,29 +1540,29 @@ namespace WeldingCommon.Sequences
|
||||
private SequenceActionResult MarkingOnTheFlyOff(SequenceContext context, string id, SequenceActionResult param)
|
||||
{
|
||||
#region 260416 주석 처리한 내용 복원함 . - 레시피 가공 자체가 안 됨
|
||||
if (_Scanner.Config.UseMarkingOnTheFly)
|
||||
{
|
||||
if (_Scanner.Config.OnTheFlyCoordinate == eOntheFlyCoordinate.XY)
|
||||
{
|
||||
// Linear OTW의 경우, 각 Draw Tool에서 좌표 오프셋을 해 주고 있음
|
||||
//if (_Scanner.Config.UseMarkingOnTheFly)
|
||||
//{
|
||||
// if (_Scanner.Config.OnTheFlyCoordinate == eOntheFlyCoordinate.XY)
|
||||
// {
|
||||
// // Linear OTW의 경우, 각 Draw Tool에서 좌표 오프셋을 해 주고 있음
|
||||
|
||||
}
|
||||
else if (_Scanner.Config.OnTheFlyCoordinate == eOntheFlyCoordinate.Rotate)
|
||||
{
|
||||
// 여기서 원래 레시피로 돌려주기
|
||||
foreach (IDrawObject obj in _InitParam.SelectedDrawObjectList)
|
||||
{
|
||||
obj.Rotate(ROTATION_DEGREE * -1, new UnitPoint(_Scanner.Config.MarkingOnTheFlyRotateCenterX, _Scanner.Config.MarkingOnTheFlyRotateCenterY)); // -15도 회전
|
||||
}
|
||||
}
|
||||
// }
|
||||
// else if (_Scanner.Config.OnTheFlyCoordinate == eOntheFlyCoordinate.Rotate)
|
||||
// {
|
||||
// // 여기서 원래 레시피로 돌려주기
|
||||
// foreach (IDrawObject obj in _InitParam.SelectedDrawObjectList)
|
||||
// {
|
||||
// obj.Rotate(ROTATION_DEGREE * -1, new UnitPoint(_Scanner.Config.MarkingOnTheFlyRotateCenterX, _Scanner.Config.MarkingOnTheFlyRotateCenterY)); // -15도 회전
|
||||
// }
|
||||
// }
|
||||
|
||||
// 추후, Parking Position 을 용접 시작 위치로 자동으로 계산되어 들어가게 개선 필요
|
||||
_Scanner.Fly_Return(_Scanner.Config.MarkingOntheFlyParkingPositionX, _Scanner.Config.MarkingOntheFlyParkingPositionY);
|
||||
// // 추후, Parking Position 을 용접 시작 위치로 자동으로 계산되어 들어가게 개선 필요
|
||||
// _Scanner.Fly_Return(_Scanner.Config.MarkingOntheFlyParkingPositionX, _Scanner.Config.MarkingOntheFlyParkingPositionY);
|
||||
|
||||
// 엔코더 기록(용접 완료)
|
||||
_Scanner.StoreEncoder(1);
|
||||
_Scanner.SaveAndRestartTimer();
|
||||
}
|
||||
// // 엔코더 기록(용접 완료)
|
||||
// _Scanner.StoreEncoder(1);
|
||||
// _Scanner.SaveAndRestartTimer();
|
||||
//}
|
||||
#endregion
|
||||
return SequenceAction.Ok();
|
||||
}
|
||||
@ -1559,6 +1574,8 @@ namespace WeldingCommon.Sequences
|
||||
_Scanner.SetTrigger(0,
|
||||
_Scanner.Config.RecordSignalType1, _Scanner.Config.RecordSignalType2,
|
||||
_Scanner.Config.RecordSignalType3, _Scanner.Config.RecordSignalType4);
|
||||
|
||||
Log.I($"[RecordSignalOff] 기록 종료 ");
|
||||
}
|
||||
|
||||
return SequenceAction.Ok();
|
||||
@ -1566,8 +1583,10 @@ namespace WeldingCommon.Sequences
|
||||
|
||||
private SequenceActionResult SaveResultData(SequenceContext context, string id, SequenceActionResult param)
|
||||
{
|
||||
|
||||
// 결과 Data 를 업데이트 함.
|
||||
context.PutValue(ContextKey.KEY_SEQUENCE_RESULT, true);
|
||||
Log.I($"[SaveResultData] KEY_SEQUENCE_RESULT : true ");
|
||||
return SequenceAction.Ok();
|
||||
}
|
||||
|
||||
@ -1575,14 +1594,14 @@ namespace WeldingCommon.Sequences
|
||||
{
|
||||
// 완료 비트 write 하는 Node 추가 필요. format 유지, SeqScoutNormal 없음
|
||||
|
||||
Log.D("UploadWeldingList Sequence WriteCompletionPLCBit");
|
||||
Log.D("[WriteCompletionPLCBit] UploadWeldingList Sequence WriteCompletionPLCBit");
|
||||
return SequenceAction.Ok();
|
||||
}
|
||||
|
||||
private SequenceActionResult Complete(SequenceContext context, string id, SequenceActionResult param)
|
||||
{
|
||||
RestoreDeviceStatus();
|
||||
Log.I("UploadWeldingList Complete");
|
||||
Log.I("[Complete] UploadWeldingList Complete");
|
||||
|
||||
_UploadSpanTime = DateTime.Now.Subtract(_UploadstartTime);
|
||||
Log.D(string.Format($"[SeqUploadWeldingList] UploadWeldingList Complete Time : {_UploadSpanTime.TotalMilliseconds}"));
|
||||
|
||||
@ -299,6 +299,11 @@ namespace WeldingCommon.Views
|
||||
|
||||
private void MoveJogHome()
|
||||
{
|
||||
_Scanner.GetBusyStatus();
|
||||
double xPos, yPos;
|
||||
_Scanner.GetXYPos(out xPos, out yPos);
|
||||
Log.W($"xPos[{xPos}] / yPos[{yPos}]");
|
||||
|
||||
double finalVelocity = _ScannerConfig.JumpSpeed * _VelocityRate;
|
||||
_Scanner.SetJumpSpeedCtrl(finalVelocity);
|
||||
_Scanner.JumpAbs(0, 0);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user