From af0c32215b7a4bd07c56fc1d867d51bddda7cf8d Mon Sep 17 00:00:00 2001 From: backuppc Date: Thu, 29 Jan 2026 15:13:41 +0900 Subject: [PATCH] =?UTF-8?q?=ED=84=B4=20=EC=A1=B0=EA=B1=B4=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20=EC=84=BC=EC=84=9C->=EB=A9=94=EC=84=B8=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HMI/Project/StateMachine/_AGV.cs | 4 +++- HMI/SubProject/AGV/Narumi.cs | 17 ++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/HMI/Project/StateMachine/_AGV.cs b/HMI/Project/StateMachine/_AGV.cs index b8f4c57..9672d06 100644 --- a/HMI/Project/StateMachine/_AGV.cs +++ b/HMI/Project/StateMachine/_AGV.cs @@ -219,6 +219,7 @@ namespace Project //이 후 상황을 예측한다 if (PUB._mapCanvas != null && PUB._virtualAGV != null) { + var nextAction = PUB._virtualAGV.Predict(); var message = $"[다음 행동 예측]\n\n"; @@ -262,7 +263,8 @@ namespace Project $"---\n" + $"현재 상태: {PUB._virtualAGV.CurrentState}\n" + $"현재 방향: {PUB._virtualAGV.CurrentDirection}\n" + - $"턴: {PUB._virtualAGV.Turn}\n" + + $"S/W 턴 상태: {PUB._virtualAGV.Turn}\n" + + $"H/W 턴 상태: {PUB.AGV.TurnInformation?.State}\n" + $"위치 확정: {PUB._virtualAGV.IsPositionConfirmed} (RFID {PUB._virtualAGV.DetectedRfidCount}개)\n" + $"대상 노드: {targetpos}\n" + diff --git a/HMI/SubProject/AGV/Narumi.cs b/HMI/SubProject/AGV/Narumi.cs index da258ad..6a61665 100644 --- a/HMI/SubProject/AGV/Narumi.cs +++ b/HMI/SubProject/AGV/Narumi.cs @@ -157,9 +157,19 @@ namespace arDev } else if (frame.DataString.StartsWith("$")) { + // [Turn Completion Check] + if (frame.DataString.Contains("LEFT-TURN OK")) + { + if (TurnInformation != null) { TurnInformation.State = eNarumiTurn.Left; TurnInformation.End = DateTime.Now; } + } + else if (frame.DataString.Contains("RIGHT-TURN OK")) + { + if (TurnInformation != null) { TurnInformation.State = eNarumiTurn.Right; TurnInformation.End = DateTime.Now; } + } // $로 시작되는 AGV 상태 표시 //var text_Sts_Etc = Encoding.Default.GetString(bRcvData, 3, bRcvData.Length - 2).TrimStart(' '); //20210311 김정만 - SmartX FrameWork 사용 안함으로 주석처리 //var sMessageOther = Encoding.Default.GetString(bRcvData, 3, bRcvData.Length - 2).TrimStart(' '); + //AGV RIGHT-TURN OK RaiseMessage(MessageType.Normal, "$메세지수신:" + frame.DataString); } else @@ -266,9 +276,10 @@ namespace arDev nDataTemp = Convert.ToByte(rcvdNow.Substring(idx, 2), 16); signal1.SetValue(nDataTemp); idx += 2; - //agv가 멈춰있고 마크센서가 들어온경우, 턴 작업이었다면 턴 셋팅을 한다 - if (system1.agv_run == false && system1.agv_stop == true && - TurnInformation != null && signal1.mark_sensor) + //agv가 멈춰있고 들어온경우, 턴 작업이었다면 턴 셋팅을 한다 + // [REMOVED] Logic replaced by message-based check ($AGV...TURN OK) + if (false && system1.agv_run == false && system1.agv_stop == true && + TurnInformation != null) { if (TurnInformation.Start.Year > 2000) {