From 99032bce9a5ea9d1f54f631cdc01a9cde010fb3e Mon Sep 17 00:00:00 2001 From: choieigun Date: Sun, 1 Mar 2026 14:44:13 +0900 Subject: [PATCH] =?UTF-8?q?=EC=8A=A4=EC=BA=90=EB=84=88=20=EB=8F=99?= =?UTF-8?q?=EC=9E=91=20=EC=8B=9C=EC=9E=91=EA=B3=BC=20=EC=A2=85=EB=A3=8C=20?= =?UTF-8?q?=EC=8B=9C=EC=A0=90=EC=97=90=20=ED=95=9C=EB=B2=88=EC=94=A9?= =?UTF-8?q?=EB=A7=8C=20=EB=A1=9C=EA=B7=B8=20=EC=B0=8D=EC=9D=84=20=EC=98=88?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AuroraDevices/AuroraLaserScanner/Scanner.cs | 9 +++++++ .../AuroraLaserScanner/ScannerObj.cs | 1 + .../AuroraLaserScanner/ScannerRTC5.cs | 9 +++++++ .../AuroraLaserScanner/ScannerRTC6.cs | 9 +++++++ .../AuroraLaserScanner/ScannerSimul.cs | 10 +++++++ .../Sequences/SeqAutoRunCCWH52A.cs | 26 ++++++++++++------- .../WeldingCommon/Utils/ChangeChecker.cs | 16 ++++++++++++ 7 files changed, 71 insertions(+), 9 deletions(-) diff --git a/AuroraDevices/AuroraLaserScanner/Scanner.cs b/AuroraDevices/AuroraLaserScanner/Scanner.cs index 0b8e0e2..2c64c7d 100644 --- a/AuroraDevices/AuroraLaserScanner/Scanner.cs +++ b/AuroraDevices/AuroraLaserScanner/Scanner.cs @@ -577,6 +577,15 @@ namespace AuroraLaserScanner } _scannerObj.SetConfigList(mem1, mem2); } + public void GetListPointer(out eListNo list_no, out uint list_pos) + { + if (!IsActivated) { + list_no = eListNo.NONE; + list_pos = 0; + return; + } + _scannerObj.GetListPointer(out list_no, out list_pos); + } public double GetCommandPosX() { return _scannerObj.CommandPosX; diff --git a/AuroraDevices/AuroraLaserScanner/ScannerObj.cs b/AuroraDevices/AuroraLaserScanner/ScannerObj.cs index da7e0cd..5852293 100644 --- a/AuroraDevices/AuroraLaserScanner/ScannerObj.cs +++ b/AuroraDevices/AuroraLaserScanner/ScannerObj.cs @@ -313,6 +313,7 @@ namespace AuroraLaserScanner #endregion public abstract uint GetListSpace(); public abstract void SetConfigList(uint mem1, uint mem2); + public abstract void GetListPointer(out eListNo list_no, out uint list_pos); public void WaitForListTaskCompleted(int timeOut, SequenceContext context = null) //단위는 초 { diff --git a/AuroraDevices/AuroraLaserScanner/ScannerRTC5.cs b/AuroraDevices/AuroraLaserScanner/ScannerRTC5.cs index 398d846..7325bfb 100644 --- a/AuroraDevices/AuroraLaserScanner/ScannerRTC5.cs +++ b/AuroraDevices/AuroraLaserScanner/ScannerRTC5.cs @@ -1111,5 +1111,14 @@ namespace AuroraLaserScanner { RTC5Wrap.config_list(mem1, mem2); } + public override void GetListPointer(out eListNo list_no, out uint list_pos) + { + list_no = eListNo.NONE; + + uint listNo = 0, listPos = 0; + RTC5Wrap.get_list_pointer(out listNo, out listPos); + list_no = (eListNo)listNo; + list_pos = listPos; + } } } diff --git a/AuroraDevices/AuroraLaserScanner/ScannerRTC6.cs b/AuroraDevices/AuroraLaserScanner/ScannerRTC6.cs index 151c759..768f9f6 100644 --- a/AuroraDevices/AuroraLaserScanner/ScannerRTC6.cs +++ b/AuroraDevices/AuroraLaserScanner/ScannerRTC6.cs @@ -1113,5 +1113,14 @@ namespace AuroraLaserScanner { RTC6Wrap.config_list(mem1, mem2); } + public override void GetListPointer(out eListNo list_no, out uint list_pos) + { + list_no = eListNo.NONE; + + uint listNo = 0, listPos = 0; + RTC6Wrap.get_list_pointer(out listNo, out listPos); + list_no = (eListNo)listNo; + list_pos = listPos; + } } } diff --git a/AuroraDevices/AuroraLaserScanner/ScannerSimul.cs b/AuroraDevices/AuroraLaserScanner/ScannerSimul.cs index 45cf1c2..2e95b2d 100644 --- a/AuroraDevices/AuroraLaserScanner/ScannerSimul.cs +++ b/AuroraDevices/AuroraLaserScanner/ScannerSimul.cs @@ -852,5 +852,15 @@ namespace AuroraLaserScanner { } + public override void GetListPointer(out eListNo list_no, out uint list_pos) + { + list_no = eListNo.NONE; + if (_list1Busy) + list_no = eListNo.LIST1; + else if (_list2Busy) + list_no = eListNo.LIST2; + + list_pos = 0; + } } } diff --git a/Machines/ILSOS_CCW_H52A/Sequences/SeqAutoRunCCWH52A.cs b/Machines/ILSOS_CCW_H52A/Sequences/SeqAutoRunCCWH52A.cs index 24ce908..65fb4b1 100644 --- a/Machines/ILSOS_CCW_H52A/Sequences/SeqAutoRunCCWH52A.cs +++ b/Machines/ILSOS_CCW_H52A/Sequences/SeqAutoRunCCWH52A.cs @@ -726,20 +726,22 @@ namespace ILSOS_CCW_H52A.Sequences Log.W($"[PendingRestore] Jig{_WeldingJigNo} canExist=false, 복원 데이터 폐기 >> CellId({rCell})"); } } - else if (ProcessManager.Instance.ReceivedCellInfoQueue.TryDequeue(out var cell)) { + else if (canExist && ProcessManager.Instance.ReceivedCellInfoQueue.TryDequeue(out var cell)) { _CellScheduler.Prefetch2.LotId = cell.LotId; _CellScheduler.Prefetch2.CellId = cell.CellId; Status.GetProcessingWeldingData().WorkLotId = cell.LotId; Status.GetProcessingWeldingData().WorkCellId = cell.CellId; } - //Log.I($"상태 시프트(Rotate) >> 용접 전전셀({_CellScheduler.Prefetch2.CellId}) [CanExist({_CellScheduler.Prefetch2.IsCanExist})] [JigNo({_CellScheduler.Prefetch2.JigNo})] " + - // $"[ListNo({_CellScheduler.Prefetch2.ListNo})] [WeldingCount({_CellScheduler.Prefetch2.WeldingCount})]" + - // $"[StartAngle(Y)({_CellScheduler.Prefetch2.StartAngle})]"); + if(_CellScheduler.Prefetch2 != null) + Log.I($"상태 시프트(Rotate) >> 용접 전전셀({_CellScheduler.Prefetch2.CellId}) [CanExist({_CellScheduler.Prefetch2.IsCanExist})] [JigNo({_CellScheduler.Prefetch2.JigNo})] " + + $"[ListNo({_CellScheduler.Prefetch2.ListNo})] [WeldingCount({_CellScheduler.Prefetch2.WeldingCount})]" + + $"[StartAngle(Y)({_CellScheduler.Prefetch2.StartAngle})]"); - //Log.I($"이번 용접대상 >> 용접 전셀({_CellScheduler.Prefetch1.CellId}) [CanExist({_CellScheduler.Prefetch1.IsCanExist})] [JigNo({_CellScheduler.Prefetch1.JigNo})] " + - // $"[ListNo({_CellScheduler.Prefetch1.ListNo})] [WeldingCount({_CellScheduler.Prefetch1.WeldingCount})]" + - // $"[StartAngle(Y)({_CellScheduler.Prefetch1.StartAngle})]"); + if(_CellScheduler.Prefetch1 != null) + Log.I($"이번 용접대상 >> 용접 전셀({_CellScheduler.Prefetch1.CellId}) [CanExist({_CellScheduler.Prefetch1.IsCanExist})] [JigNo({_CellScheduler.Prefetch1.JigNo})] " + + $"[ListNo({_CellScheduler.Prefetch1.ListNo})] [WeldingCount({_CellScheduler.Prefetch1.WeldingCount})]" + + $"[StartAngle(Y)({_CellScheduler.Prefetch1.StartAngle})]"); if (canExist) { #region 용접할 Objects 선택 @@ -982,8 +984,14 @@ namespace ILSOS_CCW_H52A.Sequences } } - var IsLaserToggle = ChangeChecker.IsChangedBool("LaserToggle", LaserIO); - if (IsLaserToggle) + // List의 실행의 토글을 확인함 + _Scanner.GetListPointer(out eListNo curList, out uint pos); + var isBusy = _Scanner.GetBusyStatus(); + if (!isBusy && (curList == eListNo.LIST1 || curList == eListNo.LIST2)) + curList = eListNo.NONE; + + var IsToggleListState = ChangeChecker.IsChangedInt("ListState", (int)curList); + if (IsToggleListState) Log.I($"Fork Laser On({LaserIO}) Encoder X : ({encoderX}), Encoder Y : ({currentAngle}), PLC Rotary : ({CurrentPosPLC}), List {executeTarget?.ListNo}, JigNo : ({executeTarget?.JigNo})"); for (int i = 0; i < _RotaryJigCount; i++) { diff --git a/WeldingComponents/WeldingCommon/Utils/ChangeChecker.cs b/WeldingComponents/WeldingCommon/Utils/ChangeChecker.cs index 0a4cf6a..e3366e8 100644 --- a/WeldingComponents/WeldingCommon/Utils/ChangeChecker.cs +++ b/WeldingComponents/WeldingCommon/Utils/ChangeChecker.cs @@ -41,5 +41,21 @@ namespace WeldingCommon.Utils return false; } + + private static Dictionary mappingInt = new Dictionary(); + public static bool IsChangedInt(string Resource, int value, int defaultVal = 0) + { + if (mappingInt.ContainsKey(Resource) == false) { + mappingInt[Resource] = defaultVal; + return false; + } + + if (mappingInt[Resource] == value) { + return false; + } + + mappingInt[Resource] = value; + return true; + } } }