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

@@ -311,7 +311,7 @@
<Compile Include="StateMachine\Step\_SM_RUN_BUFFER_OUT.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StateMachine\Step\_SM_RUN_CHARGE_GOFF.cs">
<Compile Include="StateMachine\Step\_SM_RUN_CHARGE_OFF.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StateMachine\Step\_SM_RUN_GOTO.cs">
@@ -320,7 +320,7 @@
<Compile Include="StateMachine\Step\_SM_RUN_CHARGE_CHECK.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StateMachine\Step\_SM_RUN_CHARGE_GO.cs">
<Compile Include="StateMachine\Step\_SM_RUN_CHARGE_ON.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StateMachine\Step\_SM_RUN_READY.cs">

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

View File

@@ -47,7 +47,7 @@ namespace Project
// if (VAR.BOOL[eVarBool.WAIT_COVER_UP])
// {
// PUB.log.Add($"버튼({diName}) 눌림");
// PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.UP);
// PUB.AGV.LiftControl(LiftCommand.UP);
// PUB.Result.NextPos = ePosition.QC;
// }
// else PUB.Speak(Lang.커버업대기상태가아닙니다);
@@ -93,7 +93,7 @@ namespace Project
// if (VAR.BOOL[eVarBool.WAIT_COVER_UP])
// {
// PUB.log.Add($"버튼({diName}) 눌림");
// PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.UP);
// PUB.AGV.LiftControl(LiftCommand.UP);
// PUB.Result.NextPos = ePosition.QA;
// }
// else PUB.Speak(Lang.커버업대기상태가아닙니다);
@@ -121,7 +121,7 @@ namespace Project
// {
// //Z-up기능으로 업데이트 230119
// PUB.log.Add($"버튼({diName}) 눌림");
// PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.UP);
// PUB.AGV.LiftControl(LiftCommand.UP);
// }
// }
// else if (diName == arDev.FakePLC.DIName.PINI_EMG)

View File

@@ -75,6 +75,7 @@ namespace Project
PUB._mapCanvas.SetAGVPosition(PUB.setting.MCID, node, PUB._virtualAGV.CurrentDirection);
PUB._virtualAGV.SetPosition(node, PUB._virtualAGV.CurrentDirection);
PUB.SaveLastPosition(); //위치저장 260205
}
else PUB.log.AddE($"[{logPrefix}-SetCurrent] TagString Value Errorr:{data}");
}
@@ -353,25 +354,25 @@ namespace Project
break;
case ENIGProtocol.AGVCommandHE.LiftControl: //Lift Control
var LiftCommand = data[1]; //0=stop, 1=up, 2=down
arDev.Narumi.LiftCommand LCmd = arDev.Narumi.LiftCommand.STP;
if (LiftCommand == 1) LCmd = arDev.Narumi.LiftCommand.UP;
else if (LiftCommand == 2) LCmd = arDev.Narumi.LiftCommand.DN;
PUB.log.Add($"[{logPrefix}-LiftControl] {LCmd}");
PUB.AGV.LiftControl(LCmd); //리프트제어
var LiftCommand = (LiftCommand)data[1];
PUB.log.Add($"[{logPrefix}-LiftControl] {LiftCommand}");
PUB.AGV.LiftControl(LiftCommand); //리프트제어
break;
case ENIGProtocol.AGVCommandHE.ChargeControl: //충전을 제어한다
var chargeAction = data[1] == 1; //0= off, 1=on
//충전시퀀스가 진행되지 않았다면 진행한다
if (PUB.sm.RunStep == StateMachine.ERunStep.GOCHARGE && PUB.sm.RunStepNew != StateMachine.ERunStep.GOCHARGE)
if(chargeAction==true)
{
PUB.sm.SetNewRunStep(StateMachine.ERunStep.GOCHARGE);
PUB.log.AddI($"충전을 시작합니다");
}
else
{
PUB.sm.SetNewRunStep(ERunStep.CHARGEOFF);
PUB.log.AddI($"충전을 해제 합니다");
}
break;
default:

View File

@@ -7,6 +7,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using AGVNavigationCore.Models;
using COMM;
namespace Project.ViewForm
@@ -170,27 +171,27 @@ namespace Project.ViewForm
private void button14_Click(object sender, EventArgs e)
{
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.ON);
PUB.AGV.LiftControl(LiftCommand.ON);
}
private void button15_Click(object sender, EventArgs e)
{
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.OFF);
PUB.AGV.LiftControl(LiftCommand.OFF);
}
private void button11_Click(object sender, EventArgs e)
{
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.UP);
PUB.AGV.LiftControl(LiftCommand.UP);
}
private void button13_Click(object sender, EventArgs e)
{
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.DN);
PUB.AGV.LiftControl(LiftCommand.DN);
}
private void button12_Click(object sender, EventArgs e)
{
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.STP);
PUB.AGV.LiftControl(LiftCommand.STP);
}
private void button17_Click(object sender, EventArgs e)

View File

@@ -1,4 +1,5 @@
using System;
using AGVNavigationCore.Models;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
@@ -135,28 +136,28 @@ namespace Project.ViewForm
private void button1_Click(object sender, EventArgs e)
{
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.UP);
PUB.AGV.LiftControl(LiftCommand.UP);
}
private void button2_Click(object sender, EventArgs e)
{
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.STP);
PUB.AGV.LiftControl(LiftCommand.STP);
}
private void button3_Click_1(object sender, EventArgs e)
{
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.DN);
PUB.AGV.LiftControl(LiftCommand.DN);
}
private void button4_Click(object sender, EventArgs e)
{
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.ON);
PUB.AGV.LiftControl(LiftCommand.ON);
}
private void button5_Click(object sender, EventArgs e)
{
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.OFF);
PUB.AGV.LiftControl(LiftCommand.OFF);
}
}
}

View File

@@ -7,6 +7,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using AGVNavigationCore.Models;
using AR;
using arDev;
using COMM;
@@ -399,12 +400,12 @@ namespace Project.ViewForm
private void btBack180_Click(object sender, EventArgs e)
{
//[STX] C T B 0 0 0 0 9 9 [ETX]
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.ON);// (;// (true);
PUB.AGV.LiftControl(LiftCommand.ON);// (;// (true);
}
private void button2_Click(object sender, EventArgs e)
{
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.OFF);
PUB.AGV.LiftControl(LiftCommand.OFF);
}
}
}