This commit is contained in:
backuppc
2026-02-02 14:59:48 +09:00
parent 02105d49a3
commit 9bca8f67d1
15 changed files with 452 additions and 201 deletions

View File

@@ -36,7 +36,7 @@ namespace Project
else if (PUB.sm.RunStepSeq == idx++)
{
//마크센서가 감지된상태여야 완전한위치로 가정한다
if(PUB.AGV.signal1.mark_sensor == false)
if (PUB.AGV.signal1.mark_sensor == false)
{
SetRunStepError(ENIGProtocol.AGVErrorCode.MARK_SENSOR_FAIL, $"[{funcname}] 마크센서가 감지되지 않습니다");
}
@@ -95,15 +95,54 @@ namespace Project
var errmsg = $"[{funcname}] 리프트다운이 확인되지 않습니다";
SetRunStepError(ENIGProtocol.AGVErrorCode.LIFT_ERROR, errmsg);
}
return false;
}
else
{
PUB.log.Add("리프트 동작 확인 완료");
PUB.sm.UpdateRunStepSeq();
return false;
}
VAR.I32[eVarInt32.RetryManget] = 0;
PUB.log.Add("리프트 동작 확인 완료");
PUB.sm.UpdateRunStepSeq();
return false;
}
else if (PUB.sm.RunStepSeq == idx++)
{
//pick off 조건이라면. 마그넷을 on 한후에 민다.
if (PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOffEnter)
{
VAR.I32[eVarInt32.RetryManget] += 1;
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.ON);
}
PUB.sm.UpdateRunStepSeq();
return false;
}
else if (PUB.sm.RunStepSeq == idx++)
{
//pick off 조건이라면. 마그넷을 on 한후에 민다.
if (PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOffEnter)
{
//마그넷센서가 들어오는지 5초간 확인한다.
if (PUB.AGV.signal1.magnet_on == false)
{
if (seqTime.TotalSeconds > 5)
{
if(VAR.I32[eVarInt32.RetryManget] < 3)
{
PUB.sm.UpdateRunStepSeq(-1);
}
else
{
var errmsg = $"[{funcname}] 마그넷이 ON 되지 않았습니다";
SetRunStepError(ENIGProtocol.AGVErrorCode.MAGNET_ON_ERROR, errmsg);
VAR.I32[eVarInt32.RetryManget] = 0;
}
}
return false;
}
}
PUB.sm.UpdateRunStepSeq();
return false;
}
else if (PUB.sm.RunStepSeq == idx++)
{
//저속이동 (후진 진입)
@@ -114,6 +153,7 @@ namespace Project
PBSSensor = 0,
Speed = arDev.Narumi.eMoveSpd.Low,
});
//명령이 실패되었다면 재시도를 한다
if (ret != arDev.eNarumiCommandResult.Success)
{
@@ -198,10 +238,50 @@ namespace Project
else if (PUB.sm.RunStepSeq == idx++)
{
//완료되었다.
PUB.log.Add("진입 완료");
PUB.log.Add("진입 완료 마그넷을 off합니다");
VAR.I32[eVarInt32.RetryManget] = 0;
PUB.sm.UpdateRunStepSeq();
return false;
}
else if (PUB.sm.RunStepSeq == idx++)
{
//pick off 조건이라면. 마그넷을 on 한후에 민다.
if (PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOffEnter)
{
VAR.I32[eVarInt32.RetryManget] += 1;
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.OFF);
}
PUB.sm.UpdateRunStepSeq();
return false;
}
else if (PUB.sm.RunStepSeq == idx++)
{
//pick off 조건이라면. 마그넷을 on 한후에 민다.
if (PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOffEnter)
{
//마그넷센서가 들어오는지 5초간 확인한다.
if (PUB.AGV.signal1.magnet_on == true)
{
if (seqTime.TotalSeconds > 5)
{
if (VAR.I32[eVarInt32.RetryManget] < 3)
{
PUB.sm.UpdateRunStepSeq(-1);
}
else
{
VAR.I32[eVarInt32.RetryManget] = 0;
var errmsg = $"[{funcname}] 마그넷이 OFF 되지 않았습니다";
SetRunStepError(ENIGProtocol.AGVErrorCode.MAGNET_OF_ERROR, errmsg);
}
}
return false;
}
}
PUB.sm.UpdateRunStepSeq();
return false;
}
return true;
}