refactor: Use SetRunStepError within RunStep sequences

- Refactored _SM_RUN_ENTER, _EXIT, _BUFFER_IN, _BUFFER_OUT, and _Util to use SetRunStepError helper.

- Corrected AGV_RUN_FAIL and MESSAGE_ERROR codes in _SM_RUN_ENTER, _EXIT, and _CHARGE_GO.

- Added new error codes AGV_SPEED_SET_FAIL and AGV_RUN_FAIL to EnumData.cs.
This commit is contained in:
backuppc
2026-01-28 15:58:42 +09:00
parent 5b4fdd33cf
commit 16d51a2712
11 changed files with 99 additions and 1213 deletions

View File

@@ -322,7 +322,7 @@
<Compile Include="StateMachine\Step\_SM_RUN_RESET.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StateMachine\Step\_SM_RUN_GOHOME.cs">
<Compile Include="StateMachine\Step\_SM_RUN_GOTO_HOME.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StateMachine\Step\_SM_RUN_SYNC.cs">

View File

@@ -173,53 +173,6 @@ namespace Project
#endregion
#region "TAGS"
[Browsable(false)]
public int TAGPOT { get; set; }
[Browsable(false)]
public int TAGNOT { get; set; }
[Browsable(false)]
public int TAG_F2_F3 { get; set; }
[Browsable(false)]
public int TAG_QC_F1 { get; set; }
[Browsable(false)]
public int TAG_F1_F2 { get; set; }
[Browsable(false)]
public int TAG_F3_F4 { get; set; }
[Browsable(false)]
public int TAG_F4_F5 { get; set; }
[Browsable(false)]
public int TAG_QA_QC { get; set; }
[Browsable(false)]
public int TAGQAB { get; set; }
[Browsable(false)]
public int TAGQAA { get; set; }
[Browsable(false)]
public int TAGQCB { get; set; }
[Browsable(false)]
public int TAGQCA { get; set; }
[Browsable(false)]
public int TAGF1A { get; set; }
[Browsable(false)]
public int TAGF2A { get; set; }
[Browsable(false)]
public int TAGF3A { get; set; }
[Browsable(false)]
public int TAGF4A { get; set; }
[Browsable(false)]
public int TAGF5A { get; set; }
[Browsable(false)]
public int TAGF1B { get; set; }
[Browsable(false)]
public int TAGF2B { get; set; }
[Browsable(false)]
public int TAGF3B { get; set; }
[Browsable(false)]
public int TAGF4B { get; set; }
[Browsable(false)]
public int TAGF5B { get; set; }
#endregion
#region "Charge"
[Browsable(false)]
public int ChargetWaitSec { get; set; }
@@ -378,43 +331,6 @@ namespace Project
if (XBE_ID < 1) XBE_ID = 0xFF; //0은 acs 이므로 쓰지못하게한다.
if (SAD == 0) SAD = 999;
if (GDSValue == 0) GDSValue = 1000;
if (TAGF1A == 0)
{
TAGNOT = 9000;
TAGQAB = 9200;
TAGQCB = 9300;
TAGF1B = 9400;
TAGF2B = 9500;
TAGF3B = 9600;
TAGF4B = 9700;
TAGF5B = 9800;
TAGQAA = 9201;
TAGQCA = 9301;
TAGF1A = 9401;
TAGF2A = 9501;
TAGF3A = 9601;
TAGF4A = 9701;
TAGF5A = 9801;
TAGPOT = 9900;
TAG_QA_QC = 9250;
TAG_QC_F1 = 9350;
TAG_F1_F2 = 9450;
TAG_F2_F3 = 9550;
TAG_F3_F4 = 9650;
TAG_F4_F5 = 9750;
}
if (TAG_F4_F5 == 0)
{
TAG_F4_F5 = 9750;
TAGF5B = 9800;
TAGF5A = 9801;
}
if (SCK == 0) SCK = 10;
if (SSK == 0) SSK = 10;
if (STT == 0) STT = 30;

View File

@@ -71,7 +71,8 @@ namespace Project
MARK_TIMEOUT,
MARK_SENSOR_FAIL,
LIFT_ERROR,
AGV_SPEED_FAIL,
AGV_SPEED_SET_FAIL,
AGV_RUN_FAIL,
AGV_STOP_FAIL,
PATH_INTEGRITY_FAIL,
TURN_FAIL,

View File

@@ -80,11 +80,7 @@ namespace Project
else if (turnState == arDev.eNarumiTurn.Right || turnState == arDev.eNarumiTurn.RightIng)
{
//비정상 상태 (우회전 중?)
PUB.AGV.AGVMoveStop(funcname);
PUB.log.AddE($"[{funcname}] 턴 방향 불일치(Current:{turnState}). 우회전 상태에서 좌회전을 시도할 수 없습니다.");
PUB._mapCanvas.SetAlertMessage("Turn 방향 오류");
PUB.Result.RunStepErrorCode = eECode.TURN_FAIL;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError($"[{funcname}] 턴 방향 불일치(Current:{turnState}). 우회전 상태에서 좌회전을 시도할 수 없습니다.", eECode.TURN_FAIL);
}
else
{
@@ -118,11 +114,7 @@ namespace Project
if (PUB.AGV.TurnInformation.Runtime.TotalSeconds > overtime)
{
//30초동안 AGV까 움직이지 않았다면 오류 처리한다.
PUB.AGV.AGVMoveStop($"[bufferin] {overtime}초이내 턴 감지 안됨");
PUB.log.AddE($"[{funcname}] {overtime}초이내 턴 감지 안됨");
PUB._mapCanvas.SetAlertMessage($"턴 완료 확인 불가(최대:{overtime}초)");
PUB.Result.RunStepErrorCode = eECode.TURN_FAIL;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError($"[{funcname}] {overtime}초이내 턴 감지 안됨", eECode.TURN_FAIL);
return false;
}
else PUB._mapCanvas.SetAlertMessage($"턴 진행 중({PUB.AGV.TurnInformation.Runtime.TotalSeconds:N0}/{overtime})");
@@ -170,11 +162,7 @@ namespace Project
{
if (seqtime.TotalSeconds > 20)
{
PUB.log.AddE($"[{funcname}] 리프트가 내려가지 않습니다");
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.STP);
PUB._mapCanvas.SetAlertMessage("리프트가 내려가지 않음");
PUB.Result.RunStepErrorCode = eECode.LIFT_ERROR;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError($"[{funcname}] 리프트가 내려가지 않습니다", eECode.LIFT_ERROR);
}
else PUB._mapCanvas.SetAlertMessage($"리프트 하강 확인 중({seqtime.TotalSeconds:N0}/20)");
return false;
@@ -209,11 +197,7 @@ namespace Project
{
if (ret >= arDev.eNarumiCommandResult.Error)
{
PUB.AGV.AGVMoveStop(funcname);
PUB.log.AddE($"[{funcname}] AGV속도설정이 완료되지 않았습니다");
PUB._mapCanvas.SetAlertMessage("agv속도설정 실패");
PUB.Result.RunStepErrorCode = eECode.AGV_SPEED_FAIL;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError($"[{funcname}] AGV속도설정이 완료되지 않았습니다", eECode.AGV_SPEED_SET_FAIL);
}
return false;
}
@@ -231,11 +215,7 @@ namespace Project
{
if(seqtime.TotalSeconds > 3)
{
PUB.AGV.AGVMoveStop(funcname);
PUB.log.AddE($"[{funcname}] AGV이동이 확인되지 않습니다");
PUB._mapCanvas.SetAlertMessage($"[{funcname}] AGV이동이 확인되지 않습니다");
PUB.Result.RunStepErrorCode = eECode.AGV_SPEED_FAIL;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError($"[{funcname}] AGV이동이 확인되지 않습니다", eECode.AGV_RUN_FAIL);
}
return false;
}
@@ -257,11 +237,7 @@ namespace Project
{
if (seqtime.TotalSeconds > 3)
{
PUB.AGV.AGVMoveStop(funcname);
PUB.log.AddE($"[{funcname}] MARK STOP신호가 확인되지 않습니다");
PUB._mapCanvas.SetAlertMessage("mark stop 신호 확인 안됨");
PUB.Result.RunStepErrorCode = eECode.MARK_TIMEOUT;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError($"[{funcname}] MARK STOP신호가 확인되지 않습니다", eECode.MARK_TIMEOUT);
return false;
}
}
@@ -277,11 +253,7 @@ namespace Project
var ts = VAR.TIME.RUN(eVarTime.LastTurnCommandTime);
if (ts.TotalSeconds > 10)
{
PUB.AGV.AGVMoveStop(funcname);
PUB.log.AddE($"[{funcname}] AGV가 멈추지 않아 강제종료 합니다");
PUB._mapCanvas.SetAlertMessage("agv가 멈추지 않아 강제 종료");
PUB.Result.RunStepErrorCode = eECode.AGV_STOP_FAIL;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError($"[{funcname}] AGV가 멈추지 않아 강제종료 합니다", eECode.AGV_STOP_FAIL);
return false;
}
return false;

View File

@@ -70,11 +70,7 @@ namespace Project
{
if (seqtime.TotalSeconds > 20)
{
PUB.log.AddE($"[{funcname}] 리프트가 동작하지 않습니다");
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.STP);
PUB._mapCanvas.SetAlertMessage("LIft 동작오류");
PUB.Result.RunStepErrorCode = eECode.LIFT_ERROR;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError($"[{funcname}] 리프트가 동작하지 않습니다", eECode.LIFT_ERROR);
}
return false;
}
@@ -96,11 +92,7 @@ namespace Project
{
if (ret >= arDev.eNarumiCommandResult.Error)
{
PUB.AGV.AGVMoveStop(funcname);
PUB.log.AddE($"[{funcname}] AGV속도설정이 완료되지 않았습니다");
PUB._mapCanvas.SetAlertMessage("agv 속도설정실패");
PUB.Result.RunStepErrorCode = eECode.AGV_SPEED_FAIL;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError($"[{funcname}] AGV속도설정이 완료되지 않았습니다", eECode.AGV_SPEED_SET_FAIL);
}
return false;
}
@@ -124,11 +116,7 @@ namespace Project
if (seqtime.TotalSeconds > 3)
{
//구동이확인되지 않으면 오류처리를 한다.
PUB.AGV.AGVMoveStop(funcname);
PUB.log.AddE($"[{funcname}] AGV 전진 구동이 확인되지 않습니다");
PUB._mapCanvas.SetAlertMessage("agv 전진실패");
PUB.Result.RunStepErrorCode = eECode.AGV_SPEED_FAIL;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError($"[{funcname}] AGV 전진 구동이 확인되지 않습니다", eECode.AGV_RUN_FAIL);
}
return false;
}
@@ -144,11 +132,7 @@ namespace Project
{
if (seqtime.TotalSeconds > 3)
{
PUB.AGV.AGVMoveStop(funcname);
PUB.log.AddE($"[{funcname}] MARK STOP신호가 확인되지 않습니다");
PUB._mapCanvas.SetAlertMessage("mark stop 신호 확인 안됨");
PUB.Result.RunStepErrorCode = eECode.MARK_TIMEOUT;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError($"[{funcname}] MARK STOP신호가 확인되지 않습니다", eECode.MARK_TIMEOUT);
}
return false;
}
@@ -162,11 +146,7 @@ namespace Project
{
if (seqtime.TotalSeconds > 15)
{
PUB.AGV.AGVMoveStop(funcname);
PUB.log.AddE($"[{funcname}] AGV가 멈추지 않아 강제종료 합니다");
PUB._mapCanvas.SetAlertMessage("agv가 멈추지 않아 강제 종료");
PUB.Result.RunStepErrorCode = eECode.AGV_STOP_FAIL;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError($"[{funcname}] AGV가 멈추지 않아 강제종료 합니다", eECode.AGV_STOP_FAIL);
}
return false;
}
@@ -196,11 +176,7 @@ namespace Project
else if (turnState == arDev.eNarumiTurn.Left || turnState == arDev.eNarumiTurn.LeftIng)
{
//비정상 상태 (좌회전 중?)
PUB.AGV.AGVMoveStop(funcname);
PUB.log.AddE($"[{funcname}] 턴 방향 불일치(Current:{turnState}). 좌회전 상태에서 우회전을 시도할 수 없습니다.");
PUB._mapCanvas.SetAlertMessage("Turn 방향 오류");
PUB.Result.RunStepErrorCode = eECode.TURN_FAIL;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError($"[{funcname}] 턴 방향 불일치(Current:{turnState}). 좌회전 상태에서 우회전을 시도할 수 없습니다.", eECode.TURN_FAIL);
}
else
{
@@ -232,11 +208,7 @@ namespace Project
return false;
}
PUB.AGV.AGVMoveStop(funcname);
PUB.log.AddE($"[{funcname}] Turn 구동 실패");
PUB._mapCanvas.SetAlertMessage("Turn 구동 실패");
PUB.Result.RunStepErrorCode = eECode.TURN_FAIL;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError($"[{funcname}] Turn 구동 실패", eECode.TURN_FAIL);
}
return false;
}
@@ -250,11 +222,7 @@ namespace Project
{
if (seqtime.TotalSeconds > 25)
{
PUB.AGV.AGVMoveStop(funcname);
PUB.log.AddE($"[{funcname}] Turn 완료 실패 (Timeout)");
PUB._mapCanvas.SetAlertMessage("Turn 완료 실패");
PUB.Result.RunStepErrorCode = eECode.TURN_FAIL;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError($"[{funcname}] Turn 완료 실패 (Timeout)", eECode.TURN_FAIL);
}
return false;
}

View File

@@ -32,8 +32,7 @@ namespace Project
if (VAR.BOOL[eVarBool.FLAG_CHARGEONA] == true || PUB.AGV.system1.Battery_charging == true ||
VAR.BOOL[eVarBool.FLAG_CHARGEONM] == true)
{
var ermsg = $"현재 충전중이므로 충전시퀀스를 시작할 수 없습니다";
SetRunStepError(ermsg, eECode.ALREADY_CHARGE);
SetRunStepError($"현재 충전중이므로 충전시퀀스를 시작할 수 없습니다", eECode.ALREADY_CHARGE);
return false;
}
@@ -61,17 +60,16 @@ namespace Project
var targetnode = PUB.FindByRFID(PUB.setting.NodeMAP_RFID_Charger);
if (targetnode == null)
{
var ermsg = ($"충전기 노드가 설정되지 않았습니다");
SetRunStepError(ermsg, eECode.NOTSET_CHARGEPOINT);
SetRunStepError($"충전기 노드가 설정되지 않았습니다", eECode.NOTSET_CHARGEPOINT);
return false;
}
//현재위치가 충전기위치이고 마크센서가 감지되었다면 충전기위치로 인지하고
//그렇지 못하면 충전위치가 아니라는 오류를 발생한다
if (PUB.AGV.signal1.mark_sensor == false || PUB._virtualAGV.CurrentNode.Id != targetnode.Id)
var curnode = PUB._virtualAGV.CurrentNode;
if (PUB.AGV.signal1.mark_sensor == false || curnode.Id != targetnode.Id)
{
var ermsg = $"충전기위치가 아니므로 충전을 시작할 수 없습니다(현재위치:{PUB._virtualAGV.CurrentNode.RfidId})";
SetRunStepError(ermsg, eECode.NO_CHARGEPOINT);
SetRunStepError($"충전기위치가 아니므로 충전을 시작할 수 없습니다(현재위치:{curnode.RfidId})", eECode.NO_CHARGEPOINT);
return false;
}
@@ -110,8 +108,7 @@ namespace Project
PUB.counter.Save();
VAR.BYTE[eVarByte.CHARGE_CMDCNT] = 0;
var ermsg = $"충전명령 재전송 횟수 초과";
SetRunStepError(ermsg, eECode.NO_CHARGEPOINT);
SetRunStepError($"충전명령 재전송 횟수 초과", eECode.MESSAGE_ERROR);
return false;
}
else

View File

@@ -38,12 +38,7 @@ namespace Project
//마크센서가 감지된상태여야 완전한위치로 가정한다
if(PUB.AGV.signal1.mark_sensor == false)
{
var errmsg = $"[{funcname}] 마크센서가 감지되지 않습니다";
PUB.AGV.AGVMoveStop(errmsg);
PUB.log.AddE(errmsg);
PUB._mapCanvas.SetAlertMessage(errmsg);
PUB.Result.RunStepErrorCode = eECode.MARK_SENSOR_FAIL;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError($"[{funcname}] 마크센서가 감지되지 않습니다", eECode.MARK_SENSOR_FAIL);
}
PUB.sm.UpdateRunStepSeq();
return false;
@@ -56,12 +51,7 @@ namespace Project
//가지러가야하는 경우이므로 카트가 없어야한다.
if (PUB.AGV.signal2.cart_detect1 || PUB.AGV.signal2.cart_detect2)
{
var errmsg = $"[{funcname}] 카트가 존재하여 진입을 할 수 없습니다";
PUB.AGV.AGVMoveStop(errmsg);
PUB.log.AddE(errmsg);
PUB._mapCanvas.SetAlertMessage(errmsg);
PUB.Result.RunStepErrorCode = eECode.CART_EXIST;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError($"[{funcname}] 카트가 존재하여 진입을 할 수 없습니다", eECode.CART_EXIST);
return false;
}
}
@@ -71,22 +61,14 @@ namespace Project
if (PUB.AGV.signal2.cart_detect1 == false || PUB.AGV.signal2.cart_detect2 == false)
{
var errmsg = $"[{funcname}] 카트감지센서가 인식되지 않았습니다";
PUB.AGV.AGVMoveStop(errmsg);
PUB.log.AddE(errmsg);
PUB._mapCanvas.SetAlertMessage(errmsg);
PUB.Result.RunStepErrorCode = eECode.CART_EXIST;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError(errmsg, eECode.CART_EXIST);
return false;
}
}
else
{
var errmsg = $"[{funcname}] 알수없는 작업형태입니다({PUB.NextWorkCmd})";
PUB.AGV.AGVMoveStop(funcname);
PUB.log.AddE(errmsg);
PUB._mapCanvas.SetAlertMessage(errmsg);
PUB.Result.RunStepErrorCode = eECode.NOMODELV; // Unknown work command
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError(errmsg, eECode.NOMODELV);
return false;
}
@@ -111,11 +93,7 @@ namespace Project
if (ts.TotalSeconds > 10)
{
var errmsg = $"[{funcname}] 리프트다운이 확인되지 않습니다";
PUB.AGV.AGVMoveStop(funcname);
PUB.log.AddE(errmsg);
PUB._mapCanvas.SetAlertMessage(errmsg);
PUB.Result.RunStepErrorCode = eECode.LIFT_ERROR;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError(errmsg, eECode.LIFT_ERROR);
}
return false;
}
@@ -141,11 +119,7 @@ namespace Project
{
if (ret >= arDev.eNarumiCommandResult.Error)
{
PUB.AGV.AGVMoveStop(funcname);
PUB.log.AddE("AGV속도설정이 완료되지 않았습니다");
PUB._mapCanvas.SetAlertMessage("agv 속도 설정 실패");
PUB.Result.RunStepErrorCode = eECode.AGV_SPEED_FAIL;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError("AGV속도설정이 완료되지 않았습니다", eECode.AGV_SPEED_SET_FAIL);
}
return false;
}
@@ -169,11 +143,7 @@ namespace Project
if (seqTime.TotalMilliseconds > 1000)
{
//구동이확인되지 않으면 오류처리를 한다.
PUB.AGV.AGVMoveStop(funcname);
PUB.log.AddE("AGV속도설정이 완료되지 않았습니다");
PUB._mapCanvas.SetAlertMessage("agv 속도 설정 실패");
PUB.Result.RunStepErrorCode = eECode.AGV_SPEED_FAIL;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError("AGV 구동이 확인되지 않습니다", eECode.AGV_RUN_FAIL);
}
return false;
}
@@ -189,11 +159,7 @@ namespace Project
{
if (seqTime.TotalMilliseconds > 3000)
{
PUB.AGV.AGVMoveStop(funcname);
PUB.log.AddE("MARK STOP신호가 확인되지 않습니다");
PUB._mapCanvas.SetAlertMessage("mark stop 신호 확인 불가");
PUB.Result.RunStepErrorCode = eECode.MARK_TIMEOUT;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError("MARK STOP신호가 확인되지 않습니다", eECode.MARK_TIMEOUT);
}
return false;
}
@@ -207,11 +173,7 @@ namespace Project
{
if (seqTime.TotalSeconds > 10)
{
PUB.AGV.AGVMoveStop(funcname);
PUB.log.AddE("AGV가 멈추지 않아 강제종료 합니다");
PUB._mapCanvas.SetAlertMessage("agv 가 멈추지 않아 강제 종료");
PUB.Result.RunStepErrorCode = eECode.AGV_STOP_FAIL;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError("AGV가 멈추지 않아 강제종료 합니다", eECode.AGV_STOP_FAIL);
}
return false;
}
@@ -226,11 +188,7 @@ namespace Project
{
if (seqTime.TotalSeconds > 5)
{
PUB.AGV.AGVMoveStop(funcname);
PUB.log.AddE("마크센서가 감지되지 않았습니다");
PUB._mapCanvas.SetAlertMessage("마크센서가 감지되지 않았습니다");
PUB.Result.RunStepErrorCode = eECode.MARK_SENSOR_FAIL;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError("마크센서가 감지되지 않았습니다", eECode.MARK_SENSOR_FAIL);
}
return false;
}

View File

@@ -65,12 +65,7 @@ namespace Project
var ts = VAR.TIME.RUN(eVarTime.LastTurnCommandTime);
if (ts.TotalSeconds > 10)
{
var errmsg = $"[{funcname}] 리프트({liftCmd})이 확인되지 않습니다";
PUB.AGV.AGVMoveStop(funcname);
PUB.log.AddE(errmsg);
PUB._mapCanvas.SetAlertMessage(errmsg);
PUB.Result.RunStepErrorCode = eECode.LIFT_ERROR;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError($"[{funcname}] 리프트({liftCmd})이 확인되지 않습니다", eECode.LIFT_ERROR);
}
return false;
}
@@ -94,11 +89,7 @@ namespace Project
{
if (ret >= arDev.eNarumiCommandResult.Error)
{
PUB.AGV.AGVMoveStop(funcname);
PUB.log.AddE($"[{funcname}] AGV속도설정이 완료되지 않았습니다");
PUB._mapCanvas.SetAlertMessage("agv 속도 설정 실패");
PUB.Result.RunStepErrorCode = eECode.AGV_SPEED_FAIL;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError($"[{funcname}] AGV속도설정이 완료되지 않았습니다", eECode.AGV_SPEED_SET_FAIL);
}
return false;
}
@@ -121,11 +112,7 @@ namespace Project
if (seqTime.TotalMilliseconds > 1000)
{
//구동이확인되지 않으면 오류처리를 한다.
PUB.AGV.AGVMoveStop(funcname);
PUB.log.AddE("AGV속도설정이 완료되지 않았습니다");
PUB._mapCanvas.SetAlertMessage("agv 속도 설정 실패");
PUB.Result.RunStepErrorCode = eECode.AGV_SPEED_FAIL;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError("AGV 구동이 확인되지 않습니다", eECode.AGV_RUN_FAIL);
}
return false;
}
@@ -141,11 +128,7 @@ namespace Project
{
if (seqTime.TotalMilliseconds > 3000)
{
PUB.AGV.AGVMoveStop(funcname);
PUB.log.AddE("MARK STOP신호가 확인되지 않습니다");
PUB._mapCanvas.SetAlertMessage("mark stop 신호 확인 불가");
PUB.Result.RunStepErrorCode = eECode.MARK_TIMEOUT;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError("MARK STOP신호가 확인되지 않습니다", eECode.MARK_TIMEOUT);
}
return false;
}
@@ -159,11 +142,7 @@ namespace Project
{
if (seqTime.TotalSeconds > 10)
{
PUB.AGV.AGVMoveStop(funcname);
PUB.log.AddE("AGV가 멈추지 않아 강제종료 합니다");
PUB._mapCanvas.SetAlertMessage("agv 가 멈추지 않아 강제 종료");
PUB.Result.RunStepErrorCode = eECode.AGV_STOP_FAIL;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError("AGV가 멈추지 않아 강제종료 합니다", eECode.AGV_STOP_FAIL);
}
return false;
}
@@ -177,11 +156,7 @@ namespace Project
{
if (seqTime.TotalSeconds > 5)
{
PUB.AGV.AGVMoveStop(funcname);
PUB.log.AddE("마크센서가 감지되지 않았습니다");
PUB._mapCanvas.SetAlertMessage("마크센서가 감지되지 않았습니다");
PUB.Result.RunStepErrorCode = eECode.MARK_SENSOR_FAIL;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError("마크센서가 감지되지 않았습니다", eECode.MARK_SENSOR_FAIL);
}
return false;
}

View File

@@ -45,10 +45,11 @@ namespace Project
/// </summary>
/// <param name="ermsg"></param>
/// <param name="ecode"></param>
public void SetRunStepError(string ermsg, eECode ecode)
public void SetRunStepError(string errmsg, eECode ecode)
{
PUB.log.AddE(ermsg);
PUB._mapCanvas.SetAlertMessage(ermsg);
PUB.AGV.AGVMoveStop(errmsg);
PUB.log.AddE(errmsg);
PUB._mapCanvas.SetAlertMessage(errmsg);
PUB.Result.RunStepErrorCode = ecode;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
}
@@ -151,10 +152,7 @@ namespace Project
VAR.I32[eVarInt32.PathValidationError] += 1;
if (VAR.I32[eVarInt32.PathValidationError] > 50)
{
PUB.log.AddE($"연속 경로 무결성 오류로 인해 중지 합니다");
PUB._mapCanvas.SetAlertMessage($"연속 경로 무결성 오류로 인해 중지 합니다");
PUB.Result.RunStepErrorCode = eECode.PATH_INTEGRITY_FAIL;
PUB.sm.SetNewRunStep(ERunStep.ERROR);
SetRunStepError($"연속 경로 무결성 오류로 인해 중지 합니다", eECode.PATH_INTEGRITY_FAIL);
}
return false;
}

File diff suppressed because it is too large Load Diff

View File

@@ -131,35 +131,6 @@ namespace Project
vcChargeSearchTime.Value = PUB.setting.ChargeSearchTime;
vcChargeEmergencyLevel.Value = PUB.setting.ChargeEmergencyLevel;
vcChargeWaitSec.Value = PUB.setting.ChargetWaitSec;
// chkAutoCharge_CheckedChanged(chkAutoCharge, null);
//태그
vcTagPOT.Value = PUB.setting.TAGPOT;
vcTagNOT.Value = PUB.setting.TAGNOT;
vcTagQAQC.Value = PUB.setting.TAG_QA_QC;
vcTagQCF1.Value = PUB.setting.TAG_QC_F1;
vcTagF1F2.Value = PUB.setting.TAG_F1_F2;
vcTagF2F3.Value = PUB.setting.TAG_F2_F3;
vcTagF3F4.Value = PUB.setting.TAG_F3_F4;
vcTagF4F5.Value = PUB.setting.TAG_F4_F5;
vcTagQAA.Value = PUB.setting.TAGQAA;
vcTagQCA.Value = PUB.setting.TAGQCA;
vcTagF1A.Value = PUB.setting.TAGF1A;
vcTagF2A.Value = PUB.setting.TAGF2A;
vcTagF3A.Value = PUB.setting.TAGF3A;
vcTagF4A.Value = PUB.setting.TAGF4A;
vcTagF5A.Value = PUB.setting.TAGF5A;
vcTagQAB.Value = PUB.setting.TAGQAB;
vcTagQCB.Value = PUB.setting.TAGQCB;
vcTagF1B.Value = PUB.setting.TAGF1B;
vcTagF2B.Value = PUB.setting.TAGF2B;
vcTagF3B.Value = PUB.setting.TAGF3B;
vcTagF4B.Value = PUB.setting.TAGF4B;
vcTagF5B.Value = PUB.setting.TAGF5B;
tbMCID.Text = PUB.setting.MCID;
timer1.Start();
@@ -286,34 +257,6 @@ namespace Project
PUB.setting.datetime_Reset_1 = cleartime1.Value.ToString("HH:mm");
PUB.setting.datetime_Reset_2 = cleartime2.Value.ToString("HH:mm");
//태그
PUB.setting.TAGPOT = (int)vcTagPOT.Value;
PUB.setting.TAGNOT = (int)vcTagNOT.Value;
PUB.setting.TAG_QA_QC = (int)vcTagQAQC.Value;
PUB.setting.TAG_QC_F1 = (int)vcTagQCF1.Value;
PUB.setting.TAG_F1_F2 = (int)vcTagF1F2.Value;
PUB.setting.TAG_F2_F3 = (int)vcTagF2F3.Value;
PUB.setting.TAG_F3_F4 = (int)vcTagF3F4.Value;
PUB.setting.TAG_F4_F5 = (int)vcTagF4F5.Value;
PUB.setting.TAGQAA = (int)vcTagQAA.Value;
PUB.setting.TAGQCA = (int)vcTagQCA.Value;
PUB.setting.TAGF1A = (int)vcTagF1A.Value;
PUB.setting.TAGF2A = (int)vcTagF2A.Value;
PUB.setting.TAGF3A = (int)vcTagF3A.Value;
PUB.setting.TAGF4A = (int)vcTagF4A.Value;
PUB.setting.TAGF5A = (int)vcTagF5A.Value;
PUB.setting.TAGQAB = (int)vcTagQAB.Value;
PUB.setting.TAGQCB = (int)vcTagQCB.Value;
PUB.setting.TAGF1B = (int)vcTagF1B.Value;
PUB.setting.TAGF2B = (int)vcTagF2B.Value;
PUB.setting.TAGF3B = (int)vcTagF3B.Value;
PUB.setting.TAGF4B = (int)vcTagF4B.Value;
PUB.setting.TAGF5B = (int)vcTagF5B.Value;
//PLC옵션
//PUB.setting.musicvol = (int)nudMusicVol.Value;
PUB.SetVolume((int)nudMusicVol.Value);
@@ -322,34 +265,6 @@ namespace Project
PUB.setting.alarmSoundTerm = (int)nudDoorSoundTerm.Value;
if (PUB.setting.alarmSoundTerm < 1) PUB.setting.alarmSoundTerm = 15; //기본값 15초
////핀설정
//var baL = new System.Collections.BitArray(new byte[] { PUB.setting.PinReverse_DI_Low });
//var baH = new System.Collections.BitArray(new byte[] { PUB.setting.PInReverse_DI_High });
//baL[0] = chkdi0.Checked;
//baL[1] = chkdi1.Checked;
//baL[2] = chkdi2.Checked;
//baL[3] = chkdi3.Checked;
//baL[4] = chkdi4.Checked;
//baL[5] = chkdi5.Checked;
//baL[6] = chkdi6.Checked;
//baL[7] = chkdi7.Checked;
//baH[0] = chkdi8.Checked;
//baH[1] = chkdi9.Checked;
//baH[2] = chkdi10.Checked;
//baH[3] = chkdi11.Checked;
//baH[4] = chkdi12.Checked;
//baH[5] = chkdi13.Checked;
//baH[6] = chkdi14.Checked;
//baH[7] = chkdi15.Checked;
//byte[] dataL = new byte[] { 0 };
//byte[] dataH = new byte[] { 0 };
//baL.CopyTo(dataL, 0);
//baH.CopyTo(dataH, 0);
//PUB.setting.PinReverse_DI_Low = dataL[0];
//PUB.setting.PInReverse_DI_High = dataH[0];
PUB.setting.musicfile = tbMusic.Text.Trim();
PUB.setting.FullScreen = this.chkFullScreen.Checked;
PUB.setting.ChargeEmergencyLevel = (int)this.vcChargeEmergencyLevel.Value;
@@ -567,39 +482,9 @@ namespace Project
}
}
private void button4_Click(object sender, EventArgs e)
{
vcTagNOT.Value = 9000;
vcTagQAQC.Value = 9250;
vcTagQCF1.Value = 9350;
vcTagF1F2.Value = 9450;
vcTagF2F3.Value = 9550;
vcTagF3F4.Value = 9650;
vcTagF4F5.Value = 9750;
vcTagQAB.Value = 9200;
vcTagQCB.Value = 9300;
vcTagF1B.Value = 9400;
vcTagF2B.Value = 9500;
vcTagF3B.Value = 9600;
vcTagF4B.Value = 9700;
vcTagF5B.Value = 9800;
vcTagQAA.Value = 9201;
vcTagQCA.Value = 9301;
vcTagF1A.Value = 9401;
vcTagF2A.Value = 9501;
vcTagF3A.Value = 9601;
vcTagF4A.Value = 9701;
vcTagF5A.Value = 9801;
vcTagPOT.Value = 9900;
}
private void arLabel1_Click(object sender, EventArgs e)
{
var buts = new arCtl.arLabel[] { bt0, bt1, bt2, bt3, bt4, bt5 };
var buts = new arCtl.arLabel[] { bt0, bt1, bt2, bt3, bt5 };
foreach (var lb in buts)
{
lb.BackColor = Color.DimGray;