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

@@ -67,6 +67,8 @@ namespace ENIGProtocol
NOTSET_CHARGEPOINT, NOTSET_CHARGEPOINT,
ALREADY_CHARGE, ALREADY_CHARGE,
CHARGE_RETRY_OVER, CHARGE_RETRY_OVER,
MAGNET_ON_ERROR,
MAGNET_OF_ERROR,
} }
public static class AGVUtility public static class AGVUtility

View File

@@ -162,7 +162,10 @@ namespace Project.Device
byte cmd = (byte)ENIGProtocol.AGVCommandEH.Arrived; byte cmd = (byte)ENIGProtocol.AGVCommandEH.Arrived;
var data = System.Text.Encoding.Default.GetBytes(tag); var data = System.Text.Encoding.Default.GetBytes(tag);
var packet = proto.CreatePacket(id, cmd, data); var packet = proto.CreatePacket(id, cmd, data);
Send(packet); if (Send(packet))
PUB.logxbee.AddI($"Send SendMoveComplete [O] : {packet.Length} {packet.HexString()}");
else
PUB.logxbee.AddE($"Send SendMoveComplete [X] : {packet.Length} {packet.HexString()} {PUB.XBE.ErrorMessage}");
} }
/// <summary> /// <summary>
@@ -174,7 +177,10 @@ namespace Project.Device
byte cmd = (byte)ENIGProtocol.AGVCommandEH.ReadRFID; byte cmd = (byte)ENIGProtocol.AGVCommandEH.ReadRFID;
var data = System.Text.Encoding.Default.GetBytes(tag); var data = System.Text.Encoding.Default.GetBytes(tag);
var packet = proto.CreatePacket(id, cmd, data); var packet = proto.CreatePacket(id, cmd, data);
Send(packet); if (Send(packet))
PUB.logxbee.AddI($"Send SendRFIDTag [O] : {packet.Length} {packet.HexString()}");
else
PUB.logxbee.AddE($"Send SendRFIDTag [X] : {packet.Length} {packet.HexString()} {PUB.XBE.ErrorMessage}");
} }
/// <summary> /// <summary>
@@ -189,15 +195,18 @@ namespace Project.Device
var id = PUB.setting.XBE_ID; var id = PUB.setting.XBE_ID;
byte cmd = (byte)ENIGProtocol.AGVCommandEH.Error; byte cmd = (byte)ENIGProtocol.AGVCommandEH.Error;
// if (errormessage.Length > 30) errormessage = errormessage.Substring(0, 29); // if (errormessage.Length > 30) errormessage = errormessage.Substring(0, 29);
var data = new List<byte>(); var data = new List<byte>();
data.Add((byte)errcode); data.Add((byte)errcode);
//var datamsg = System.Text.Encoding.Default.GetBytes(errormessage); //var datamsg = System.Text.Encoding.Default.GetBytes(errormessage);
// data.AddRange(datamsg); // data.AddRange(datamsg);
var packet = proto.CreatePacket(id, cmd, data.ToArray()); var packet = proto.CreatePacket(id, cmd, data.ToArray());
Send(packet); if (Send(packet))
PUB.logxbee.AddI($"Send SendError [O] : {packet.Length} {packet.HexString()}");
else
PUB.logxbee.AddE($"Send SendError [X] : {packet.Length} {packet.HexString()} {PUB.XBE.ErrorMessage}");
} }
public eDocStep StepMC { get; set; } = eDocStep.NotSet; public eDocStep StepMC { get; set; } = eDocStep.NotSet;
@@ -237,7 +246,7 @@ namespace Project.Device
data.Add(value); data.Add(value);
// RunSt // RunSt
if (PUB.AGV.error.Emergency) if (PUB.AGV.error.Value > 0)
value = 2; // error value = 2; // error
else if (PUB.AGV.system1.agv_run) else if (PUB.AGV.system1.agv_run)
value = 1; // run value = 1; // run
@@ -245,6 +254,11 @@ namespace Project.Device
value = 0; // stop value = 0; // stop
data.Add(value); data.Add(value);
//나르미오류코드전송필요 260202
//agv\structure\errorflag.cs 파일의 public enum eflag 에 내용있음
data.AddRange(BitConverter.GetBytes(PUB.AGV.error.Value));
//runstep //runstep
value = (byte)PUB.sm.RunStep; value = (byte)PUB.sm.RunStep;
data.Add(value); data.Add(value);
@@ -310,7 +324,7 @@ namespace Project.Device
if (Send(packet)) if (Send(packet))
PUB.logxbee.AddI($"Send status [O] : {packet.Length} {packet.HexString()}"); PUB.logxbee.AddI($"Send status [O] : {packet.Length} {packet.HexString()}");
else else
PUB.logxbee.AddE($"Send status [X] : {packet.Length} {packet.HexString()}"); PUB.logxbee.AddE($"Send status [X] : {packet.Length} {packet.HexString()} {PUB.XBE.ErrorMessage}");
LastStatusSendTime = DateTime.Now; LastStatusSendTime = DateTime.Now;
} }
catch (Exception ex) catch (Exception ex)

View File

@@ -28,6 +28,7 @@
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
this.components = new System.ComponentModel.Container();
this.rtsys = new arCtl.LogTextBox(); this.rtsys = new arCtl.LogTextBox();
this.rtTx = new arCtl.LogTextBox(); this.rtTx = new arCtl.LogTextBox();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
@@ -40,6 +41,7 @@
this.panel4 = new System.Windows.Forms.Panel(); this.panel4 = new System.Windows.Forms.Panel();
this.rtAGV = new arCtl.LogTextBox(); this.rtAGV = new arCtl.LogTextBox();
this.titleAGV = new System.Windows.Forms.Label(); this.titleAGV = new System.Windows.Forms.Label();
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.tableLayoutPanel1.SuspendLayout(); this.tableLayoutPanel1.SuspendLayout();
this.panel1.SuspendLayout(); this.panel1.SuspendLayout();
this.panel2.SuspendLayout(); this.panel2.SuspendLayout();
@@ -230,6 +232,11 @@
this.titleAGV.Text = "AGV"; this.titleAGV.Text = "AGV";
this.titleAGV.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.titleAGV.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
// //
// timer1
//
this.timer1.Interval = 1000;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// fLog // fLog
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
@@ -263,5 +270,6 @@
private System.Windows.Forms.Panel panel4; private System.Windows.Forms.Panel panel4;
private System.Windows.Forms.Label titleBMS; private System.Windows.Forms.Label titleBMS;
private System.Windows.Forms.Label titleAGV; private System.Windows.Forms.Label titleAGV;
private System.Windows.Forms.Timer timer1;
} }
} }

View File

@@ -20,12 +20,31 @@ namespace Project.Dialog
private void FLog_FormClosed(object sender, FormClosedEventArgs e) private void FLog_FormClosed(object sender, FormClosedEventArgs e)
{ {
timer1.Stop();
PUB.log.RaiseMsg -= Log_RaiseMsg; PUB.log.RaiseMsg -= Log_RaiseMsg;
PUB.logagv.RaiseMsg -= Log_RaiseMsgagv; PUB.logagv.RaiseMsg -= Log_RaiseMsgagv;
PUB.logplc.RaiseMsg -= Log_RaiseMsgplc; PUB.logplc.RaiseMsg -= Log_RaiseMsgplc;
PUB.logbms.RaiseMsg -= Log_RaiseMsgbms; PUB.logbms.RaiseMsg -= Log_RaiseMsgbms;
PUB.logxbee.RaiseMsg -= Log_RaiseMsgcal; PUB.logxbee.RaiseMsg -= Log_RaiseMsgcal;
} }
private void timer1_Tick(object sender, EventArgs e)
{
//포트열림상태표시 2600202
if (PUB.XBE.IsOpen)
titleXBEE.BackColor = Color.Lime;
else
titleXBEE.BackColor = Color.Tomato;
if (PUB.AGV.IsOpen)
titleAGV.BackColor = Color.Lime;
else
titleAGV.BackColor = Color.Tomato;
if (PUB.BMS.IsOpen)
titleBMS.BackColor = Color.Lime;
else
titleBMS.BackColor = Color.Tomato;
}
private void fLog_Load(object sender, EventArgs e) private void fLog_Load(object sender, EventArgs e)
{ {
@@ -52,6 +71,7 @@ namespace Project.Dialog
PUB.logplc.RaiseMsg += Log_RaiseMsgplc; PUB.logplc.RaiseMsg += Log_RaiseMsgplc;
PUB.logbms.RaiseMsg += Log_RaiseMsgbms; PUB.logbms.RaiseMsg += Log_RaiseMsgbms;
PUB.logxbee.RaiseMsg += Log_RaiseMsgcal; PUB.logxbee.RaiseMsg += Log_RaiseMsgcal;
timer1.Start();
} }
private void Log_RaiseMsg(DateTime LogTime, string TypeStr, string Message) private void Log_RaiseMsg(DateTime LogTime, string TypeStr, string Message)
@@ -81,5 +101,6 @@ namespace Project.Dialog
rtRx.AddMsg(LogTime, TypeStr, Message); rtRx.AddMsg(LogTime, TypeStr, Message);
} }
} }
} }
} }

View File

@@ -117,4 +117,7 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root> </root>

View File

@@ -733,6 +733,8 @@ namespace Project
SaveTime = DateTime.Now SaveTime = DateTime.Now
}; };
var fi = new System.IO.FileInfo(LastPosFilePath);
if (fi.Directory.Exists == false) fi.Directory.Create();
string json = JsonConvert.SerializeObject(data, Formatting.Indented); string json = JsonConvert.SerializeObject(data, Formatting.Indented);
File.WriteAllText(LastPosFilePath, json); File.WriteAllText(LastPosFilePath, json);
} }

View File

@@ -145,9 +145,8 @@ namespace Project
else if (PUB.sm.RunStepSeq == idx++) else if (PUB.sm.RunStepSeq == idx++)
{ {
//버퍼에들어갈때에는 가져다 놓을때도 가지러 갈때에도 리프트는 내려서 들어간다 //버퍼에들어갈때에는 가져다 놓을때도 가지러 갈때에도 리프트는 내려서 들어간다
var liftCmd = arDev.Narumi.LiftCommand.DN;
PUB.AGV.LiftControl(liftCmd);
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 리프트를 내립니다"); PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 리프트를 내립니다");
VAR.I32[eVarInt32.RetryLift] = 0;
PUB.sm.UpdateRunStepSeq(); PUB.sm.UpdateRunStepSeq();
return false; return false;
} }
@@ -156,17 +155,9 @@ namespace Project
//리프트 센서 확인 //리프트 센서 확인
if (PUB.AGV.signal1.lift_down == false) if (PUB.AGV.signal1.lift_down == false)
{ {
if (seqtime.TotalSeconds > 20) VAR.I32[eVarInt32.RetryLift] = 0;
{ var rlt = PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.DN);
PUB.log.AddAT($"[{funcname}-{PUB.sm.RunStepSeq}] 리프트가 내려가지 않아 1회 재시도 합니다"); PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 리프트 하강 실행:{rlt}");
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.DN);
//재시도를 했으니 다음으로 진행하게한다
}
else
{
PUB._mapCanvas.SetAlertMessage($"리프트 하강 확인 중({seqtime.TotalSeconds:N0}/20)");
return false;
}
} }
PUB.sm.UpdateRunStepSeq(); PUB.sm.UpdateRunStepSeq();
return false; return false;
@@ -178,16 +169,64 @@ namespace Project
{ {
if (seqtime.TotalSeconds > 20) if (seqtime.TotalSeconds > 20)
{ {
SetRunStepError(ENIGProtocol.AGVErrorCode.LIFT_ERROR, $"[{funcname}-{PUB.sm.RunStepSeq}] 리프트가 내려가지 않습니다"); if (VAR.I32[eVarInt32.RetryLift] < 3)
{
PUB.log.AddAT($"[{funcname}-{PUB.sm.RunStepSeq}] 리프트가 내려가지 않아 재시도 합니다");
PUB.sm.UpdateRunStepSeq(-1);
}
else
{
SetRunStepError(ENIGProtocol.AGVErrorCode.LIFT_ERROR,
$"[{funcname}-{PUB.sm.RunStepSeq}] 리프트가 내려가지 않습니다");
VAR.I32[eVarInt32.RetryLift] = 0;
}
} }
else PUB._mapCanvas.SetAlertMessage($"리프트 하강 확인 중({seqtime.TotalSeconds:N0}/20)"); else PUB._mapCanvas.SetAlertMessage($"리프트 하강 확인 중({seqtime.TotalSeconds:N0}/20)");
return false; return false;
} }
VAR.I32[eVarInt32.RetryManget] = 0;
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 리프트 하강 완료"); PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 리프트 하강 완료");
PUB.sm.UpdateRunStepSeq(); PUB.sm.UpdateRunStepSeq();
return false; return false;
} }
else if (PUB.sm.RunStepSeq == idx++)
{
if(PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOffEnter)
{
VAR.I32[eVarInt32.RetryManget] += 1;
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.ON);
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 마그넷ON");
}
PUB.sm.UpdateRunStepSeq();
return false;
}
else if (PUB.sm.RunStepSeq == idx++)
{
//마그넷센서가 들어오는지 5초간 확인한다.
if (PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOffEnter &&
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++) else if (PUB.sm.RunStepSeq == idx++)
{ {
//저속이동 (후진 진입) //저속이동 (후진 진입)
@@ -220,16 +259,17 @@ namespace Project
return false; return false;
} }
//후진이동을한다 PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 도킹을 위해 후진 이동 시작 (Dir:Backward, Spd:Low)");
PUB._mapCanvas.SetAlertMessage($"도킹을 위해 후진 이동 시작");
VAR.I32[eVarInt32.RetryMove] = 0;
PUB.sm.UpdateRunStepSeq(); PUB.sm.UpdateRunStepSeq();
return false; return false;
} }
else if (PUB.sm.RunStepSeq == idx++) else if (PUB.sm.RunStepSeq == idx++)
{ {
//이동확인을 한다. VAR.I32[eVarInt32.RetryMove] += 1;
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 도킹을 위해 후진 이동 시작 (Dir:Backward, Spd:Low)"); var rlt = PUB.AGV.AGVMoveRun(arDev.Narumi.eRunOpt.Backward);
PUB._mapCanvas.SetAlertMessage($"도킹을 위해 후진 이동 시작"); PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 이동명령 결과:{rlt}");
PUB.AGV.AGVMoveRun(arDev.Narumi.eRunOpt.Backward);
PUB.sm.UpdateRunStepSeq(); PUB.sm.UpdateRunStepSeq();
return false; return false;
} }
@@ -240,8 +280,18 @@ namespace Project
{ {
if (seqtime.TotalSeconds > 10) if (seqtime.TotalSeconds > 10)
{ {
SetRunStepError(ENIGProtocol.AGVErrorCode.AGV_RUN_FAIL); if (VAR.I32[eVarInt32.RetryMove] < 3)
{
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 이동명령 재전송");
PUB.sm.UpdateRunStepSeq(-1);
}
else
{
SetRunStepError(ENIGProtocol.AGVErrorCode.AGV_RUN_FAIL);
VAR.I32[eVarInt32.RetryMove] = 0;
}
} }
else PUB._mapCanvas.SetAlertMessage($"AGV이동 확인 중");
return false; return false;
} }
@@ -309,11 +359,50 @@ namespace Project
return false; return false;
} }
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 마크센서 확인완료"); PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 마크센서 확인완료");
VAR.I32[eVarInt32.RetryManget] = 0;
VAR.TIME.Update(eVarTime.LastTurnCommandTime); VAR.TIME.Update(eVarTime.LastTurnCommandTime);
PUB.sm.UpdateRunStepSeq(); PUB.sm.UpdateRunStepSeq();
return false; return false;
} }
else if (PUB.sm.RunStepSeq == idx++) 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;
}
else if (PUB.sm.RunStepSeq == idx++)
{ {
if (seqtime.TotalSeconds < 2) return false; if (seqtime.TotalSeconds < 2) return false;
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 작업({PUB.NextWorkCmd}) 완료. 대기 상태로 전환 (퇴출 명령 대기)"); PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 작업({PUB.NextWorkCmd}) 완료. 대기 상태로 전환 (퇴출 명령 대기)");

View File

@@ -37,12 +37,14 @@ namespace Project
PUB.Speak(Lang.); PUB.Speak(Lang.);
PUB.sm.UpdateRunStepSeq(); PUB.sm.UpdateRunStepSeq();
SpeedSetRetry = false; SpeedSetRetry = false;
VAR.I32[eVarInt32.RetryLift] = 0;
return false; return false;
} }
else if (PUB.sm.RunStepSeq == idx++) else if (PUB.sm.RunStepSeq == idx++)
{ {
arDev.Narumi.LiftCommand lift = PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOnExit ? arDev.Narumi.LiftCommand.UP : arDev.Narumi.LiftCommand.DN; arDev.Narumi.LiftCommand lift = PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOnExit ? arDev.Narumi.LiftCommand.UP : arDev.Narumi.LiftCommand.DN;
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 리프트제어 {lift}"); PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 리프트제어 {lift}");
VAR.I32[eVarInt32.RetryLift] += 1;
PUB.AGV.LiftControl(lift); PUB.AGV.LiftControl(lift);
PUB.sm.UpdateRunStepSeq(); PUB.sm.UpdateRunStepSeq();
return false; return false;
@@ -55,31 +57,23 @@ namespace Project
{ {
if (seqtime.TotalSeconds > 20) if (seqtime.TotalSeconds > 20)
{ {
PUB.log.AddAT($"[{funcname}-{PUB.sm.RunStepSeq}] 리프트가 완료되지 않아 1회 재시도 합니다"); if(VAR.I32[eVarInt32.RetryLift] < 3)
arDev.Narumi.LiftCommand lift = PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOnExit ? arDev.Narumi.LiftCommand.UP : arDev.Narumi.LiftCommand.DN; {
PUB.AGV.LiftControl(lift); PUB.log.AddAT($"[{funcname}-{PUB.sm.RunStepSeq}] 리프트가 완료되지 않아 재시도 합니다");
PUB.sm.UpdateRunStepSeq(-1);
}
else
{
VAR.I32[eVarInt32.RetryLift] = 0;
SetRunStepError(ENIGProtocol.AGVErrorCode.LIFT_ERROR, $"[{funcname}-{PUB.sm.RunStepSeq}] 리프트가 동작하지 않습니다");
}
} }
else return false; else return false;
} }
PUB.sm.UpdateRunStepSeq(); PUB.sm.UpdateRunStepSeq();
return false; return false;
} }
else if (PUB.sm.RunStepSeq == idx++)
{
//리프트 센서 확인
var checksensor = PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOnExit ? PUB.AGV.signal1.lift_up : PUB.AGV.signal1.lift_down;
if (checksensor == false)
{
if (seqtime.TotalSeconds > 20)
{
SetRunStepError(ENIGProtocol.AGVErrorCode.LIFT_ERROR, $"[{funcname}-{PUB.sm.RunStepSeq}] 리프트가 동작하지 않습니다");
}
return false;
}
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 리프트 확인 완료");
PUB.sm.UpdateRunStepSeq();
return false;
}
else if (PUB.sm.RunStepSeq == idx++) else if (PUB.sm.RunStepSeq == idx++)
{ {
if (PUB.AGV.signal1.mark_sensor == false) if (PUB.AGV.signal1.mark_sensor == false)
@@ -111,6 +105,7 @@ namespace Project
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] AGV 이동 설정 완료 (Dir:Forward, Spd:Low)"); PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] AGV 이동 설정 완료 (Dir:Forward, Spd:Low)");
} }
VAR.I32[eVarInt32.RetryMove] = 0;
PUB.sm.UpdateRunStepSeq(); PUB.sm.UpdateRunStepSeq();
return false; return false;
} }
@@ -119,10 +114,10 @@ namespace Project
//전진이동 //전진이동
if (PUB.AGV.signal1.mark_sensor == false) if (PUB.AGV.signal1.mark_sensor == false)
{ {
VAR.I32[eVarInt32.RetryMove] += 1;
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] AGV 전진 구동 시작"); PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] AGV 전진 구동 시작");
PUB.AGV.AGVMoveRun(arDev.Narumi.eRunOpt.Forward); PUB.AGV.AGVMoveRun(arDev.Narumi.eRunOpt.Forward);
} }
PUB.sm.UpdateRunStepSeq(); PUB.sm.UpdateRunStepSeq();
return false; return false;
} }
@@ -135,17 +130,32 @@ namespace Project
{ {
if (seqtime.TotalSeconds > 3) if (seqtime.TotalSeconds > 3)
{ {
//구동이확인되지 않으면 오류처리를 한다. if(VAR.I32[eVarInt32.RetryMove] < 3)
SetRunStepError(ENIGProtocol.AGVErrorCode.AGV_RUN_FAIL); {
//재시도를 하게한다.
PUB.sm.UpdateRunStepSeq(-1);
}
else
{
//구동이확인되지 않으면 오류처리를 한다.
SetRunStepError(ENIGProtocol.AGVErrorCode.AGV_RUN_FAIL);
VAR.I32[eVarInt32.RetryMove] = 0;
}
} }
return false; return false;
} }
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] AGV 구동 확인 완료"); PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] AGV 구동 확인 완료");
//마크스탑설정
PUB.AGV.AGVMoveStop(funcname, arDev.Narumi.eStopOpt.MarkStop);
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] MarkStop 명령 전송 (진출 정지 장소)");
} }
VAR.I32[eVarInt32.RetryMarkStop] = 0;
PUB.sm.UpdateRunStepSeq();
return false;
}
else if (PUB.sm.RunStepSeq == idx++)
{
VAR.I32[eVarInt32.RetryMarkStop] += 1;
PUB.AGV.AGVMoveStop(funcname, arDev.Narumi.eStopOpt.MarkStop);
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] MarkStop 명령 전송 (진출 정지 장소)");
PUB.sm.UpdateRunStepSeq(); PUB.sm.UpdateRunStepSeq();
return false; return false;
} }
@@ -158,7 +168,16 @@ namespace Project
{ {
if (seqtime.TotalSeconds > 3) if (seqtime.TotalSeconds > 3)
{ {
SetRunStepError(ENIGProtocol.AGVErrorCode.MARK_TIMEOUT); if(VAR.I32[eVarInt32.RetryMarkStop] < 3)
{
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] MarkStop 재시도");
PUB.sm.UpdateRunStepSeq(-1);
}
else
{
SetRunStepError(ENIGProtocol.AGVErrorCode.MARK_TIMEOUT);
VAR.I32[eVarInt32.RetryMarkStop] = 0;
}
return false; return false;
} }
return false; return false;

View File

@@ -36,7 +36,7 @@ namespace Project
else if (PUB.sm.RunStepSeq == idx++) 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}] 마크센서가 감지되지 않습니다"); SetRunStepError(ENIGProtocol.AGVErrorCode.MARK_SENSOR_FAIL, $"[{funcname}] 마크센서가 감지되지 않습니다");
} }
@@ -95,15 +95,54 @@ namespace Project
var errmsg = $"[{funcname}] 리프트다운이 확인되지 않습니다"; var errmsg = $"[{funcname}] 리프트다운이 확인되지 않습니다";
SetRunStepError(ENIGProtocol.AGVErrorCode.LIFT_ERROR, errmsg); SetRunStepError(ENIGProtocol.AGVErrorCode.LIFT_ERROR, errmsg);
} }
return false; return false;
}
else
{
PUB.log.Add("리프트 동작 확인 완료");
PUB.sm.UpdateRunStepSeq();
} }
VAR.I32[eVarInt32.RetryManget] = 0;
PUB.log.Add("리프트 동작 확인 완료");
PUB.sm.UpdateRunStepSeq();
return false; 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++) else if (PUB.sm.RunStepSeq == idx++)
{ {
//저속이동 (후진 진입) //저속이동 (후진 진입)
@@ -114,6 +153,7 @@ namespace Project
PBSSensor = 0, PBSSensor = 0,
Speed = arDev.Narumi.eMoveSpd.Low, Speed = arDev.Narumi.eMoveSpd.Low,
}); });
//명령이 실패되었다면 재시도를 한다 //명령이 실패되었다면 재시도를 한다
if (ret != arDev.eNarumiCommandResult.Success) if (ret != arDev.eNarumiCommandResult.Success)
{ {
@@ -198,10 +238,50 @@ namespace Project
else if (PUB.sm.RunStepSeq == idx++) else if (PUB.sm.RunStepSeq == idx++)
{ {
//완료되었다. //완료되었다.
PUB.log.Add("진입 완료"); PUB.log.Add("진입 완료 마그넷을 off합니다");
VAR.I32[eVarInt32.RetryManget] = 0;
PUB.sm.UpdateRunStepSeq(); PUB.sm.UpdateRunStepSeq();
return false; 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; return true;
} }

View File

@@ -109,6 +109,9 @@ namespace Project
PUB.log.Add($"[GOTO] Step {idx - 1}: Movement Finished. Waiting for full stop."); PUB.log.Add($"[GOTO] Step {idx - 1}: Movement Finished. Waiting for full stop.");
PUB.Speak(Lang., true); PUB.Speak(Lang., true);
PUB.AddEEDB($"이동완료({PUB._virtualAGV.TargetNode.ID2})"); PUB.AddEEDB($"이동완료({PUB._virtualAGV.TargetNode.ID2})");
//ㅇ목적지 완료신호를 ACS에전송한다.
PUB.XBE.SendMoveComplete(PUB._virtualAGV.TargetNode.RfidId.ToString("0000"));
PUB.sm.UpdateRunStepSeq(); PUB.sm.UpdateRunStepSeq();
return false; return false;
} }

View File

@@ -287,10 +287,19 @@ namespace Project
{ {
if (PUB.AGV.system1.agv_run == false) if (PUB.AGV.system1.agv_run == false)
{ {
//마크센서확인
if(PUB.AGV.signal1.mark_sensor==false)
{
PUB.log.AddI($"목표도착되었으나 마크센서가 감지되지 않아 경로를 삭제 합니다");
PUB._virtualAGV.SetPath(null);
return false;
}
// 경로가 존재한다면... // 경로가 존재한다면...
if (PUB._virtualAGV.CurrentPath != null && PUB._virtualAGV.CurrentPath.DetailedPath.Any()) if (PUB._virtualAGV.CurrentPath != null && PUB._virtualAGV.CurrentPath.DetailedPath.Any())
{ {
var lastInfo = PUB._virtualAGV.CurrentPath.DetailedPath.Last(); var lastInfo = PUB._virtualAGV.CurrentPath.DetailedPath.Last();
// 위치와 방향이 모두 일치해야 완료된 것으로 본다. // 위치와 방향이 모두 일치해야 완료된 것으로 본다.
if (PUB._virtualAGV.CurrentNode.Id == lastInfo.NodeId && if (PUB._virtualAGV.CurrentNode.Id == lastInfo.NodeId &&
PUB._virtualAGV.CurrentDirection == lastInfo.MotorDirection) PUB._virtualAGV.CurrentDirection == lastInfo.MotorDirection)

View File

@@ -119,6 +119,7 @@ namespace Project
this.demoListLotToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.demoListLotToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem5 = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItem5 = new System.Windows.Forms.ToolStripMenuItem();
this.refreshListToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.refreshListToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.xbeeSettingToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.debugtestToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.debugtestToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.pandBottomDIO = new System.Windows.Forms.Panel(); this.pandBottomDIO = new System.Windows.Forms.Panel();
this.panel9 = new System.Windows.Forms.Panel(); this.panel9 = new System.Windows.Forms.Panel();
@@ -127,7 +128,6 @@ namespace Project
this.panDlg = new System.Windows.Forms.Panel(); this.panDlg = new System.Windows.Forms.Panel();
this.arPanel2 = new arCtl.arPanel(); this.arPanel2 = new arCtl.arPanel();
this.arPanel1 = new arCtl.arPanel(); this.arPanel1 = new arCtl.arPanel();
this.xbeeSettingToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.panRight.SuspendLayout(); this.panRight.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout(); this.tableLayoutPanel1.SuspendLayout();
this.panel4.SuspendLayout(); this.panel4.SuspendLayout();
@@ -1676,7 +1676,7 @@ namespace Project
this.refreshListToolStripMenuItem, this.refreshListToolStripMenuItem,
this.xbeeSettingToolStripMenuItem}); this.xbeeSettingToolStripMenuItem});
this.cmDebug.Name = "cmVision"; this.cmDebug.Name = "cmVision";
this.cmDebug.Size = new System.Drawing.Size(229, 368); this.cmDebug.Size = new System.Drawing.Size(229, 346);
// //
// mapFileToolStripMenuItem // mapFileToolStripMenuItem
// //
@@ -1727,6 +1727,13 @@ namespace Project
this.refreshListToolStripMenuItem.Size = new System.Drawing.Size(228, 22); this.refreshListToolStripMenuItem.Size = new System.Drawing.Size(228, 22);
this.refreshListToolStripMenuItem.Text = "Refresh List"; this.refreshListToolStripMenuItem.Text = "Refresh List";
// //
// xbeeSettingToolStripMenuItem
//
this.xbeeSettingToolStripMenuItem.Name = "xbeeSettingToolStripMenuItem";
this.xbeeSettingToolStripMenuItem.Size = new System.Drawing.Size(228, 22);
this.xbeeSettingToolStripMenuItem.Text = "xbee setting";
this.xbeeSettingToolStripMenuItem.Click += new System.EventHandler(this.xbeeSettingToolStripMenuItem_Click);
//
// debugtestToolStripMenuItem // debugtestToolStripMenuItem
// //
this.debugtestToolStripMenuItem.Name = "debugtestToolStripMenuItem"; this.debugtestToolStripMenuItem.Name = "debugtestToolStripMenuItem";
@@ -1824,7 +1831,7 @@ namespace Project
this.IOState.Text = "gridView2"; this.IOState.Text = "gridView2";
this.IOState.TextAttachToImage = true; this.IOState.TextAttachToImage = true;
this.IOState.Titles = new string[] { this.IOState.Titles = new string[] {
"EMG|TAG|DIR|STS|SPD|SEN|CAL|RUN|MARK|CHG|ITM"}; "EMG|TAG|DIR|STS|SPD|SEN|CAL|RUN|MARK|CHG|CART"};
this.IOState.Values = new ushort[] { this.IOState.Values = new ushort[] {
((ushort)(0)), ((ushort)(0)),
((ushort)(1)), ((ushort)(1)),
@@ -1970,13 +1977,6 @@ namespace Project
this.arPanel1.TextShadow = false; this.arPanel1.TextShadow = false;
this.arPanel1.UseProgressBar = false; this.arPanel1.UseProgressBar = false;
// //
// xbeeSettingToolStripMenuItem
//
this.xbeeSettingToolStripMenuItem.Name = "xbeeSettingToolStripMenuItem";
this.xbeeSettingToolStripMenuItem.Size = new System.Drawing.Size(228, 22);
this.xbeeSettingToolStripMenuItem.Text = "xbee setting";
this.xbeeSettingToolStripMenuItem.Click += new System.EventHandler(this.xbeeSettingToolStripMenuItem_Click);
//
// fMain // fMain
// //
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;

View File

@@ -126,163 +126,160 @@
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="btDebug.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="btDebug.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
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 hk4AAAAASUVORK5CYII=
</value> </value>
</data> </data>
<data name="btOpenDir.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="btOpenDir.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAb9JREFUWEft iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAa9JREFUWEfl
lr8vBEEUxxchEST8ARIkOo1KqFwpUQgKdFRKKoVG+AtUSirFSkiuVCk2m9zt7e7dJtcIkVxFcK4QCYld ls8rhEEch/2IEoo/QKHcXJzEiaNyEA64cXLk5OAi/gInR04Or6IcnRy2t/b9fGbHbr0XkdoTYTlIUfbV
3517e9ZkHGLfRuEln8zsvLf7/e7M7A/tP8rlckehUFgCG03IUHnygYsfgeALfMuy5uiUZAMXf5bEPqOa +/a+b3aalux+N2XquWzPNE/T7Mzb1PTvh+/77SSXSG5UYdKcV7dB8ohk8A1lAHPm3LoMkm+WBW2Ustns
y+UG6bTkQiHUjCq4/CU2ZnOK5H9sICkedF1vUxnwgQuOgc6JYRg9soFbMBaOlUqlLs/z+jgJgqD1gwGs gDm/5mFZqBolktc1ogBM/TagXjw5jtNqCyiT1CSPSTqSZDKZbjPgnuRo+Fs+n+8sFAq9kgRB0FIRAGAR
yyIYQf8iGmOmBr2FyMCLaZqdaA/pOC1uIgMuzcYVHadFJTKw77puL9pwE8pFbGAJssKAbdtraDPxZErs wDDJK8uWSfAMYCEJeHddt4PkoUWU5C4J0PFu3FgkSYpJwL7Wuic+hKYkBoDTKEAptRZet6bQAHaiAAAT
CANwMgnWpSQ70JwPDfjhY4H2IJ5MAyz7sNh4tAGL8WQKPIp3ATon9En+7kcpETD9ZnjjGjpbYFRVxMye ANYtgigA5sOAcvi3IHlgCtJorYeigxcfwAtTEOYlugtInsRP8k8fpboAwI0uIgBbAEZMoQHsJTfhDIAV
MIDODAysSMk0WBUGsBEGcLArJdlxHGdcGMBGaMF74ExVxMgr9l13wwAGalIBN+dCPAys/5CigBud5DUN iyDNahSgte4nuWsRRMnlcmNRQBAEzUqpc1MQ5sP3/a40IHwYLJIkl9Hi8SEctAjSOGmAUmrWIogCYDMN
0z+rKGAFN71J8uIp2JYLuMFNT5O8WIKsqoiTfD7fT/JiBipyATP3JF0PDNxJBdycknQ9sB7LGHySiri4 ILltCtIopabTgPBFMgVpPM/r+7oDRVMQ5jFdPA54sEiSnFUEKKWWSb5aRAluPc8brwgIB8k286tVgvRL
xvRPkPR7INEu/7Vy0PgT/juhaW/ZS5SxdhC40QAAAABJRU5ErkJggg== +C+NT9lLlLEeyHt7AAAAAElFTkSuQmCC
</value> </value>
</data> </data>
<data name="btMReset.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="btMReset.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
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
eXSITOY/N4AkP6QQbUkAAAAASUVORK5CYII=
</value> </value>
</data> </data>
<data name="btCapture.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="btCapture.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAkNJREFUWEft iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAkVJREFUWEft
lU1LVFEYx6+F0KKXhRKR9QVSVxLoQqJoUdjCiAgl3CpKi/AjiGG0KVfRIiVoM34DC2Yzi7nz1sxiKkjQ ls+rjGEUxwcpCz8WJPnxD7j3rqRYSGRBLK4kkWyJLORPEJENdyULV8pm/Aeo2czined8zmtmMSiKxSBZ
xahEazVfp98znYnT47nTmRgHIg/8OM88/3PO87/n3HsmOG7/TIvH46cymcxsNptN0Ue1EJ5Bq5nWuMai +32vV+d6JzNnnhnvcEfJPfWpt/M9z3O+8z7v88xTKi3EvxKVSmUZMKWqgf5RA64CS/34Pw5gGsgKMuXH
c1D2ZNZM82+xWOxkOp3ugpsaFhxTBf7EHjv10LUWdEktU/Zny+VyfUxaUYscJcsY7K0UTyQSZ0isqQHN /zLK5fISERkXkT0e4FSkySBmVPW4nydn3Hp1NU/TdDvwMjLRqHihqtvmmler1RXA60jRqGk1m83lpfwV
oFQsFk8Hsi0OUThw5BqK1A7krBzCY/pWtDdaM+ybr+GtYOJ9o3kjtZ0GyPXI8WBkVGl78DyVSl0QPQzD e9H4FsnNK9a7ZGsVEc7Zl6yqd7yWM5vvhrtG/jwbqRuI9Y4aUNUttjwictJpM8C1EMI602u12mrDni0H
NkFiyaG9MGPsOZFEGoCP5J/Sf7NyG+Ru0Z+DJ7Bq8kIJs9PJZPIs/W1+b1haJLUMHIJxD3jKy8SftWbx XM9reprF6GsAeKyqV4B3Hbn3qroXWAVcAl51aC0RuZgkyUoR2We1kTl7GGSgB1U9EkLYBDz1WgdPkiTZ
CROX6IdV3kk9BhbL5fIJxspZu3SbpIxlJ947tN/wNsBi9wSX5oI179Lf13mNtwFoh3mViwSzrwuFwnmX CByLaD0MY+B+lmWL87X2miexWhF5GNG6KGxARA4ZPt8PVT0IHPZ5T2EDwBrgdiQfRURuNRqNtT7vKWrg
ZuNrYJctbfHZ0iqs+U7mEO9qzcZ7B+TGol/Q+RrEzA3r0n7hbYAx/fSPdD4Kxk/wxVxzaTb1GHgp3zjx a5Zli4q80jaq+sDG2FivubpCBjI7sYB7Pj+Acn7C+nwXhQ2o6g7grM/3Q1XPhBB2+rxnGAM3bI8Db70W
V605WDdP/0rlD+FtAHZ4ok7G3iDeUprNJlyHbtgxuUjqMSB84W/7Ikau8kKmHXrIWj0yhnhJaU7qNSCU 4U3+629GND9vMQPAlxDCmKruBj5G9DYfgF3AhI2J6F0MY8B4lqbp+hDCVhGRiF6zI9xqgOcRvYdhDRgt
YMDc/Z34GBIoekVyrHUH3b6ia/I3Bqp8gCmKjwgSQ95o3lQMEAxqoYkMBvl8voNgWwnN4Lu8L3J0cgwT YH9+9o+JyFEjTdPNllPVA+6IHsjvGGjzCLggIicMewbqkbqBzBkAJr3wF5ks1ev1DcDniDhqPtn3Mnct
JLz/xxuA3JDjleLVRkI+nUmYOWKkRrcpe9z++xYEPwDT4GdbjzYebAAAAABJRU5ErkJggg== s307zP/4PGAn5Omft9If127bOueByyPGekx0NV+I/zq+A9PgZ1seSUA0AAAAAElFTkSuQmCC
</value> </value>
</data> </data>
<data name="btShowManual.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="btShowManual.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAP5JREFUWEft iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAPJJREFUWEft
lj0KwkAQhVNY6n0Uj6BtagvxEFqJvYWnEL1EmiBKfrrcIK3gDfSNTDZk2WQj65IQ9sFHZObtzCMkQc/J lj0KwkAQhVNY6n0Uj6BtagvxEFqJvYWnEL1EmiDKvEmXG9gK3kDZsIZk3Jj4s7iEffBB2Pl5r9iEBIGX
qTdKkmQax/G1gQs4gVUYhhM+JkQ16rGHvKoZX2gXHyuFhg/eLXlFUbTmoxR+QzXJ04TPR0tRUTJpQYg9 lyti5j6A/Qt2ADYAJnEc9+S8OlM13aN65XyO8pLzAYAQwK0hVyKaPmaZeabODH1VhGX39wNkENESwEqe
rge53oL/BDDAeoAjoHl1M60HEAsUvUpfiIqSyYTOA+gYeAC8njdciw+PyjP8Z8AFcAG6DdCH11BHDwPg N+A3Ab7AeoC13le103qA3MBQK9VztS1AHS0PQESHwofnqW49gAt3wAfwAf4bwIXXsA4HAxDR0NBohSRJ
ts0VRiukaTrjtaWCIBih+ZDNFrjTLl5bVZZlY/y/24EzjMVDVMcTFEPpt8oj4Jlb2sHrzISBSwzMmQWX BtI/iKKoA+Akmy1wVF7SP1Oapl1mXjDzVv5IGrgUlqpnWS+hd86Vh/T9SMw8BnDWjGTdy6up7uxqphcq
nZx+lOd9AOxqphdZ7gKgAAAAAElFTkSuQmCC UCfvAAAAAElFTkSuQmCC
</value> </value>
</data> </data>
<data name="btTopMenu_Volume.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="btTopMenu_Volume.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
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
AABJRU5ErkJggg== QmCC
</value> </value>
</data> </data>
<data name="arLabel5.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="arLabel5.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAlxJREFUWEfV iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAjpJREFUWEfV
l81u00AUhcOrIMGqgg0sYEMFe1QE5QlQd63oug/QbstT0B2UVgEKgW1+7GxoWSAeghKJSgGF70bHlpnc V7tu1UAQDb+CBBUiTSigAZE+SsTjCxAdCGo+ANrkK6DjkYiEd3v3nNnbkFBEfESSKxHpgi4atGutx2Nj
cYbW5edIn6LcuefesT0e263/Ur1e7/pgMHiZZdmB0e/327Cg4fMXzTdhUoUJbGj4/MVRP3cm8FTDzYiC uA4RRzqN53HG9nh2vLDwPyKEcInktoi8VQJ4DeCC9TsxkHxMclYSwCPrd2IQkRdOAU+t31wAcJPkBxG5
DyjcodkVhUoR/1RtLg41XMq8xDvUuq9QmjA+xDhW4RP+P55MJhdsjOt/i9h3jVUZ53l+w3Isl/9r8K0Y aG0k920BJHetn8ZqDgA3rK0TInKb5DQlPhaRB7PZ7IzaQghXSX53CpjGGC+rj/qSvE/yW7aRvGV1XGi1
g2UbmyubrQxhg3fwIYh55NR448THSWeCpF3H3Ai2dtQmLiZwkeTj0NwAo263e1lt6sVMV5wCZ+WRys+X hXjJjyQ/O9ctI4B3zvVprycB4KUTPAi1d6xeAwDOkjy0wQNwMhqNzls9FyJy10kwL+9YnVZoE7W8x7+i
LaLIdTwV1GqrdJq0ij+GhQJM2yIDL2cKZ7Sn0mnidrrjFRJfOKK7Si1FfAmia8e2b6XOSnv7lu6Az/Cj Diqr0YnUxV9sIkPFeqI49ooiEqxGJ2KMyzZJwQMAKzaG5GpX7+j4tjEV0mx/kr6AryR/2ASZnniGiKxZ
MIZ4zQtxpPc8j7C9wzawZ7DJQV6TbTr7ffBMv0DzvixRkVd7OSrsyzK99dpOgse2LFGR8yTwuFhPWf6B /4I6O3SAPddRHmNcqgJJbjkBDQJATdHB715Hwa0qSJvEcfC4XlNzQHLDiWuw1pinXgDJTevQQqmpOSA5
CRDYCxMiZLJERc4w8MTYk2V6BhZgg+AOHIH3LChYkm1G1LDniOcxrOYh7Fgv6ynbrFjNtyvGkGNb7Uot duI8blZBukzoeU7yGcm9lrMgc7WmWCCdI9Y/U3PuqoZqdS4wInLdSZB5qN1uY5L4keP/i52foUXPQRTT
peZfg9yS2tswVOJGlINdb6P2tP/2RmQTwPTeK3ZKXltNlZ8vTue6U+SsrKp8vWxxkFy8yTTJCbvfVbWJ +1Z2PvY/HkRagIh8sonm4Ju8T/QCgIdOknl5z+q40OYoNpkheRxjXLR6DegO5wQPxfdWr4G2lUz3/74r
i8ROYGySt2oTl1bzzG3ImjjgN+mVDF4FMSPtlcxE8rIZZBzRfEVDNsFFYt7DasytdlNpxUvNqBiDtJfS Gckd53q/lUyhC2RRxEQXlGwDcK3lsJqGEK5kv7TUTLKt91KaodXq6Tgej89ZWzoxbQF71k9jNUfvO+8L
QjZb2B0Oh5cUKkUxe2KGEzjScCnzWo3kI08VzV4EzW1vb/bDpE403HIm8Oc+zfQC8/c+TptTq/UT/J7v kq9sAYP/mHRBdwengH/3a3bqP6dD4if8nu9RoGmrKgAAAABJRU5ErkJggg==
URSJG9cAAAAASUVORK5CYII=
</value> </value>
</data> </data>
<data name="btClose.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="btClose.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
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 w16WomAQAAAAAElFTkSuQmCC
gg==
</value> </value>
</data> </data>
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAA5hJREFUaEPt iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAA5JJREFUaEPt
mvtTElEUx/3v+lea6X9oppnGV5LV+EABUSRG8f3gvaZGagaakuIDFdPR0nykaZqv0/1eASmuAstursbX mn1TElEUxv12fZVm+g7NNNMokqQ1KouACBKjKIovwAJLaqRGgCkpooiYjpbmS5omyctpzjV2bK8Ku+7m
+fyye45zvnDv2XN3KMhLq3poefzgke2J/i6BmmPlXwk3rBNt1DHbeydArag5Vv6VcBEB3uW+OwFqzRvR UpyZ3z/sc5jz7N17OHeHhoZ6qDQe2h4/eOR4wtQSWLPQRwNesM+7YDg1XhNgrViz0AcxgoLARqgmwFrr
EnkjWiNvRA0axuxUM9x4I9aJVmGuZow4FjxU5jXS1Nr8jZR4aoT5mjFSNWSh8NoCpZPmjRS59HTB/qC1 RtRE3YjaqBtRAmvcCYaZ3luxzw9SeYhqjHjW/NASMMHi9uqtNPsNVC6iGiOd0zZIbq9BpVC9kSYfAyUo
3Q3htwE0beQ1Gy96Q/3cBMw8dVQJ9wfQ9B4p9dbSwfEhNxJanWUFW4VxN3HrRrrnXaQftHET0AupnpyL kWK3j3aplaiJFXk174LxxAQxgWaeejqpvVETe0Qb6ILT3BkxkthKgWHGTmkqce9GRld9wEw5+D3QxvWA
HmHsTdy6kQp/Ay1sfuYmdg/3SddnFMal41aNeJYlKnbXcBNQc8BB9qkuYWw6ZBkxjNqoTDKk8Ixhn868 N+OndJW4dyPtYSus7X0iJo7OTkAXMlGaarhXI/4NDjSsgV+N/qgHnIsjlK4aJBkxRhzQwhkpnnFGcC5V
EAt7APrCQ9zE2fk5M6UXxmWCLCNogSLtHx2wpWEQ5ogo9lTT0ckxzw1EQ2RiH5AoLhMUNQJV9lupJ+IW X4gt7oRgcpqYKBSLoGEZSlMtkoxgC7wuTs5PQRcyUvqb0Pj1cH6RI7nRbALMEQelqRZZjWB0TNhhLM1S
5iXTOesg07uWWBaRzmci15JPGJsJsowUsSXQNu5O0D7u4d8GNL8RpUq2gUV5ybwcMNPqzhees7G3ReVv OULcKQ+Y3w7webqgGXzrQUpXLZKMNLEMuOZYnqE5P1kNjNXdLHSErVSOkBeTFtg6/Exydo/3ofW1mdKI
TMK4TJFlpCfiovaZ3gT1Y83UEnTzoqASdy15o6l5cdxLEpV6DLFoosaRTmoL9whjM0WWERGFrmq2Yc94 QZKRsbQPhpbHeXri/TAQY/m728x2QSBL55Vh1znQ+o28vnfWDa7kGKUTgyQj19Ho00OhWCCFTaQiYI05
Yf2zo9QQtAvjQF2gifyRII89ZTnXjR3ZoJgRI9uoI4sfL4s7O2Wf+PXFFTPTJywG8kcCZA42CeOyQTEj KU2Z7mgfhNMxos0XCzeOHWKQzYgp4oDZzIfL4gp50N5SnManh4tCnmjD6ShYYn2URiyyGWGzQdAFTPzj
7qiPdGwMj8v6vpNaw90pcVhCFraU4sISQ+7fcdmimBGADbyyvc4L3PqxK9zAuPZ17xuPwZT7atCcEiMH Yn/nhsHkKKXDR8g26+Z1+IhhrlAnFtmMILiBNw92SIH734+u3cD42Zfjr0SDU+7LKQulkYKsRkZWvGAM
RY10zTnJ4LfzIqFyyfzH3ORm7fW5VBe7S7z9og0n/w+5KGoEYOMeHP/khYZW50ifNMliIvjAHnzQ8ekv O/m73cpZ/pib2PUgPOe6+evYfrENC79HCrIaQXDjnuZ+kEITWyvAXJlkcSJ4n02Qa7n8T2gO3LyPxCK7
KvHmvsnjKG4k+WwBYZbCTIV7ha6qRGeTZobZiNKSki8XxY0AtOKLi8vTnvPTID8MYQbDUBhXumdNtqhi katnCwycpXCmwmuNvk6+s3HLM2CLD1D5UpHdCIKtuFS6PO15P06RwxDOYDgUlqPSb41YFDGCJ7mFzWVS
BCe5yZUZXjBmKRycdJKRdg6/82uLmytU8Tb90z8bVDHiXPSyA5KZFw1hU+PAFJd+wManA1GuXFQxAtBm MM5SeHDScSY4PPtGPsvsbUL7m8q//mJQxIg3E4A2zsLffdzUeGAqBzPpINOBMO8uKGIEwTa7d3JACsc2
N/e3eeFoszjCQmgEpT62rAQ5uaCakcsHXwcvPlloBGgIopxcUM0IwEEJbTZZmJzjXUxJVDWCV6BS7AQI i0dYDGwE2mAXpb8rihm5/OEb5lehHNgIsCEI9XdFMSMIHpSwzV4NnJzLXUxOFDWCr0C53ydAjKWdNOin
Ta9HqHoo+zckmaCqEbTXIqc+8XJN5zXxV6PC2BxR1wjDNtmWeLmGb0gUowSqG/lX5I1ojbwRrfF/GLkX xb8hqQZFjWB7bfIy/Ms1XcBMXo1SOhlQ1shGCBwLLv7lGq6Q8LpcKG7kb1E3ojbqRtTG/2Hkn/gLxz/z
P+G4Nz+qyUsTKij4DaqNxnRXLBhpAAAAAElFTkSuQmCC p5p6qCR+AaqNxnTXLPGFAAAAAElFTkSuQmCC
</value> </value>
</data> </data>
<metadata name="cmDebug.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="cmDebug.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">

View File

@@ -14,6 +14,10 @@ namespace COMM
ChargeWaitSec, ChargeWaitSec,
SyncItemCount, SyncItemCount,
PathValidationError, PathValidationError,
RetryManget,
RetryLift,
RetryMove,
RetryMarkStop,
} }
public enum eVarUInt32 public enum eVarUInt32
{ {