test_acs 프로젝트 변경

This commit is contained in:
backuppc
2026-02-05 13:18:20 +09:00
parent ec2af6ac1f
commit ba542beaff
26 changed files with 416 additions and 533 deletions

View File

@@ -186,7 +186,7 @@ namespace Project
PUB.sm.ResetRunStepSeq();
PUB.log.Add("충전 명령 시작");
}
else if (_SM_RUN_CHARGE_GO(runStepisFirst, PUB.sm.GetRunSteptime))
else if (_SM_RUN_CHARGE_ON(runStepisFirst, PUB.sm.GetRunSteptime))
{
PUB.XBE.SendActionComplete(PUB.sm.RunStep);
PUB.Speak(Lang.);
@@ -219,7 +219,7 @@ namespace Project
else
{
//충전 상태가 OFF되어야 동작하게한다
if (_SM_RUN_CHARGE_GOFF(isFirst, stepTime) == true)
if (_SM_RUN_CHARGE_OFF(isFirst, stepTime) == true)
{
PUB.XBE.SendActionComplete(PUB.sm.RunStep);
//충전상태가 활성화되었으므로 대기상태로 전환한다

View File

@@ -8,6 +8,7 @@ using COMM;
using AR;
using System.Windows.Media.Animation;
using System.Net.Security;
using AGVNavigationCore.Models;
namespace Project
{
@@ -19,7 +20,7 @@ namespace Project
var idx = 1;
//충전 상태가 OFF되어야 동작하게한다
if (_SM_RUN_CHARGE_GOFF(isFirst, seqtime) == false) return false;
if (_SM_RUN_CHARGE_OFF(isFirst, seqtime) == false) return false;
//라이더멈춤이 설정되어있다면 음성으로 알려준다
if (CheckLiderStop() == false) return false;
@@ -137,7 +138,7 @@ namespace Project
if (PUB.AGV.signal1.lift_down == false)
{
VAR.I32[eVarInt32.RetryLift] += 1;
var rlt = PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.DN);
var rlt = PUB.AGV.LiftControl(LiftCommand.DN);
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 리프트 하강 실행:{rlt}");
}
PUB.sm.UpdateRunStepSeq();
@@ -175,7 +176,7 @@ namespace Project
if (PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOffEnter)
{
VAR.I32[eVarInt32.RetryManget] += 1;
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.ON);
PUB.AGV.LiftControl(LiftCommand.ON);
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 마그넷ON");
}
@@ -351,7 +352,7 @@ namespace Project
if (PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOffEnter)
{
VAR.I32[eVarInt32.RetryManget] += 1;
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.OFF);
PUB.AGV.LiftControl(LiftCommand.OFF);
}
PUB.sm.UpdateRunStepSeq();
return false;

View File

@@ -6,6 +6,7 @@ using System.Text;
using Project.StateMachine;
using COMM;
using AR;
using AGVNavigationCore.Models;
namespace Project
{
@@ -18,7 +19,7 @@ namespace Project
var idx = 1;
//충전 상태가 OFF되어야 동작하게한다
if (_SM_RUN_CHARGE_GOFF(isFirst, seqtime) == false) return false;
if (_SM_RUN_CHARGE_OFF(isFirst, seqtime) == false) return false;
//라이더멈춤이 설정되어있다면 음성으로 알려준다
if (CheckLiderStop() == false) return false;
@@ -53,7 +54,7 @@ namespace Project
}
else if (PUB.sm.RunStepSeq == idx++)
{
arDev.Narumi.LiftCommand lift = PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOnExit ? arDev.Narumi.LiftCommand.UP : arDev.Narumi.LiftCommand.DN;
LiftCommand lift = PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOnExit ? LiftCommand.UP : LiftCommand.DN;
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 리프트제어 {lift}");
VAR.I32[eVarInt32.RetryLift] += 1;
PUB.AGV.LiftControl(lift);

View File

@@ -18,7 +18,7 @@ namespace Project
/// <param name="isFirst"></param>
/// <param name="stepTime"></param>
/// <returns></returns>
public Boolean _SM_RUN_CHARGE_GOFF(bool isFirst, TimeSpan stepTime)
public Boolean _SM_RUN_CHARGE_OFF(bool isFirst, TimeSpan stepTime)
{
//충전중인지 확인한다.

View File

@@ -12,7 +12,7 @@ namespace Project
public partial class fMain
{
DateTime tm_gocharge_command = DateTime.Now;
public Boolean _SM_RUN_CHARGE_GO(bool isFirst, TimeSpan stepTime)
public Boolean _SM_RUN_CHARGE_ON(bool isFirst, TimeSpan stepTime)
{
var funcname = "GOCHARGE";
if (runStepisFirst)
@@ -29,7 +29,8 @@ namespace Project
}
//이미 충전중이라면 바로 완료 처리한다 (사용자 요청)
if (VAR.BOOL[eVarBool.FLAG_CHARGEONA] == true || PUB.AGV.system1.Battery_charging == true ||
if (VAR.BOOL[eVarBool.FLAG_CHARGEONA] == true ||
PUB.AGV.system1.Battery_charging == true ||
VAR.BOOL[eVarBool.FLAG_CHARGEONM] == true)
{
SetRunStepError(ENIGProtocol.AGVErrorCode.ALREADY_CHARGE);
@@ -37,7 +38,7 @@ namespace Project
}
//충전 상태가 OFF되어야 동작하게한다
if (_SM_RUN_CHARGE_GOFF(isFirst, stepTime) == false)
if (_SM_RUN_CHARGE_OFF(isFirst, stepTime) == false)
return false;
@@ -67,12 +68,19 @@ namespace Project
//현재위치가 충전기위치이고 마크센서가 감지되었다면 충전기위치로 인지하고
//그렇지 못하면 충전위치가 아니라는 오류를 발생한다
var curnode = PUB._virtualAGV.CurrentNode;
if (PUB.AGV.signal1.mark_sensor == false || curnode.Id != targetnode.Id)
if (curnode.Id != targetnode.Id)
{
SetRunStepError(ENIGProtocol.AGVErrorCode.NO_CHARGEPOINT, $"충전기위치가 아니므로 충전을 시작할 수 없습니다(현재위치:{curnode.RfidId})");
return false;
}
//마크센서가 들어와있어야한다
if (PUB.AGV.signal1.mark_sensor == false)
{
SetRunStepError(ENIGProtocol.AGVErrorCode.MARK_SENSOR_FAIL, $"충전기위치에서 마크센서가 확인되지 않습니다");
return false;
}
PUB.sm.UpdateRunStepSeq();
return false;
}

View File

@@ -6,6 +6,7 @@ using System.Text;
using Project.StateMachine;
using COMM;
using AR;
using AGVNavigationCore.Models;
namespace Project
{
@@ -20,7 +21,7 @@ namespace Project
var funcname = PUB.sm.RunStep.ToString();
//충전 상태가 OFF되어야 동작하게한다
if (_SM_RUN_CHARGE_GOFF(isFirst, seqTime) == false) return false;
if (_SM_RUN_CHARGE_OFF(isFirst, seqTime) == false) return false;
//라이더멈춤이 설정되어있다면 음성으로 알려준다
if (CheckLiderStop() == false) return false;
@@ -78,7 +79,7 @@ namespace Project
else if (PUB.sm.RunStepSeq == idx++)
{
//pick off/on 상관없이 리프트는 내려서 이동한다
var liftCmd = arDev.Narumi.LiftCommand.DN;
var liftCmd = LiftCommand.DN;
PUB.AGV.LiftControl(liftCmd);
VAR.TIME.Update(eVarTime.LastTurnCommandTime);
PUB.sm.UpdateRunStepSeq();
@@ -109,7 +110,7 @@ namespace Project
if (PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOffEnter)
{
VAR.I32[eVarInt32.RetryManget] += 1;
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.ON);
PUB.AGV.LiftControl(LiftCommand.ON);
}
PUB.sm.UpdateRunStepSeq();
return false;
@@ -249,7 +250,7 @@ namespace Project
if (PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOffEnter)
{
VAR.I32[eVarInt32.RetryManget] += 1;
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.OFF);
PUB.AGV.LiftControl(LiftCommand.OFF);
}
PUB.sm.UpdateRunStepSeq();
return false;

View File

@@ -6,6 +6,7 @@ using System.Text;
using Project.StateMachine;
using COMM;
using AR;
using AGVNavigationCore.Models;
namespace Project
{
@@ -20,7 +21,7 @@ namespace Project
var funcname = $"[EXIT-{PUB.sm.RunStep}]";
//충전 상태가 OFF되어야 동작하게한다
if (_SM_RUN_CHARGE_GOFF(isFirst, seqtime) == false) return false;
if (_SM_RUN_CHARGE_OFF(isFirst, seqtime) == false) return false;
//라이더멈춤이 설정되어있다면 음성으로 알려준다
if (CheckLiderStop() == false) return false;
@@ -37,8 +38,8 @@ namespace Project
else if (PUB.sm.RunStepSeq == idx++)
{
//작업형태에 따라서. 리프트를 제어한다.
var liftCmd = arDev.Narumi.LiftCommand.DN;
if (PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOnExit) liftCmd = arDev.Narumi.LiftCommand.UP;
var liftCmd = LiftCommand.DN;
if (PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOnExit) liftCmd = LiftCommand.UP;
VAR.I32[eVarInt32.RetryLift] += 1;
PUB.AGV.LiftControl(liftCmd);
PUB.sm.UpdateRunStepSeq();
@@ -46,18 +47,18 @@ namespace Project
}
else if (PUB.sm.RunStepSeq == idx++)
{
var liftCmd = arDev.Narumi.LiftCommand.DN;
if (PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOnExit) liftCmd = arDev.Narumi.LiftCommand.UP;
var liftCmd = LiftCommand.DN;
if (PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOnExit) liftCmd = LiftCommand.UP;
//리프트 센서 확인
var liftdnok = (PUB.AGV.signal1.lift_down == true && PUB.AGV.signal1.lift_up == false);
var liiftupok = (PUB.AGV.signal1.lift_up == true && PUB.AGV.signal1.lift_down == false);
if (liftCmd == arDev.Narumi.LiftCommand.DN && liftdnok)
if (liftCmd == LiftCommand.DN && liftdnok)
{
//정상조건
}
else if (liftCmd == arDev.Narumi.LiftCommand.UP && liftdnok)
else if (liftCmd == LiftCommand.UP && liftdnok)
{
//정상조건
}

View File

@@ -20,7 +20,7 @@ namespace Project
var funcname = "_SM_RUN_GOTO";
//충전 상태가 OFF되어야 동작하게한다
if (_SM_RUN_CHARGE_GOFF(isFirst, seqtime) == false)
if (_SM_RUN_CHARGE_OFF(isFirst, seqtime) == false)
return false;
//최초시작이라면 시간변수 초기화

View File

@@ -27,7 +27,7 @@ namespace Project
}
//충전 상태가 OFF되어야 동작하게한다
if (_SM_RUN_CHARGE_GOFF(isFirst, stepTime) == false)
if (_SM_RUN_CHARGE_OFF(isFirst, stepTime) == false)
return false;
//라이더멈춤이 설정되어있다면 음성으로 알려준다 200409