This commit is contained in:
backuppc
2026-01-27 14:01:30 +09:00
parent a04a0505d0
commit 9ee8295489
18 changed files with 644 additions and 1073 deletions

View File

@@ -21,27 +21,27 @@ namespace Project.Device
/// <summary>
/// 투입준비됨
/// </summary>
InReady = 10,
ReadyForEnter = 10,
/// <summary>
/// 투입완료
/// </summary>
InComplete = 11,
EnterComplete = 11,
/// <summary>
/// 투입(진행중)
/// </summary>
InIng = 12,
EnterIng = 12,
/// <summary>
/// 진출완료
/// </summary>
OutComplete = 21,
ExitComplete = 21,
/// <summary>
/// 진출중
/// </summary>
OutIng = 22,
ExitIng = 22,
}
public class Xbee : SerialPort, arDev.ISerialComm
@@ -196,10 +196,7 @@ namespace Project.Device
Send(packet);
}
public eDocStep StepBuffer { get; set; } = eDocStep.NotSet;
public eDocStep StepUnloader { get; set; } = eDocStep.NotSet;
public eDocStep StepLoader { get; set; } = eDocStep.NotSet;
public eDocStep StepCleaner { get; set; } = eDocStep.NotSet;
public eDocStep StepMC { get; set; } = eDocStep.NotSet;
ManualResetEvent sendlock = new ManualResetEvent(true);
@@ -225,67 +222,80 @@ namespace Project.Device
*/
try
{
byte[] data = new byte[12]; // 총 12바이트 데이터
List<byte> data = new List<byte>();
byte value = 0;
// Autoron Mode
// Mode
data[0] = (byte)(VAR.BOOL[eVarBool.FLAG_AUTORUN] ? 1 : 0);
value = (byte)(VAR.BOOL[eVarBool.FLAG_AUTORUN] ? 1 : 0);
data.Add(value);
// RunSt
if (PUB.AGV.error.Emergency)
data[1] = 2; // error
value = 2; // error
else if (PUB.AGV.system1.agv_run)
data[1] = 1; // run
value = 1; // run
else
data[1] = 0; // stop
value = 0; // stop
data.Add(value);
//runstep
value = (byte)PUB.sm.RunStep;
data.Add(value);
//runstepseq
value = (byte)StepMC;
data.Add(value);
// Motor Direction
if (PUB.AGV.data.Direction == 'F')
data[2] = 0;
value = 0;
else if (PUB.AGV.data.Direction == 'B')
data[2] = 1;
value = 1;
else
data[2] = 0xff; //unknown
value = 0xff; //unknown
data.Add(value);
// Magnet Direction
if (PUB.AGV.data.Sts == 'L')
data[3] = 1; // left
value = 1; // left
else if (PUB.AGV.data.Sts == 'R')
data[3] = 2; // right
value = 2; // right
else if (PUB.AGV.data.Sts == 'S')
data[3] = 0; // straight
value = 0; // straight
else
data[3] = 0xFF; //unknown
// Inposition
data[4] = (byte)(PUB.AGV.system1.agv_stop ? 1 : 0);
value = 0xFF; //unknown
data.Add(value);
// ChargeSt
data[5] = (byte)((VAR.BOOL[eVarBool.FLAG_CHARGEONA] || VAR.BOOL[eVarBool.FLAG_CHARGEONM]) ? 1 : 0);
value = (byte)((VAR.BOOL[eVarBool.FLAG_CHARGEONA] || VAR.BOOL[eVarBool.FLAG_CHARGEONM]) ? 1 : 0);
data.Add(value);
// CartSt
if (PUB.AGV.signal2.cart_detect1 && PUB.AGV.signal2.cart_detect2)
data[6] = 1; // 센서두개가 모두 감지되는 경우
value = 1; // 센서두개가 모두 감지되는 경우
else if (PUB.AGV.signal2.cart_detect1 == false && PUB.AGV.signal2.cart_detect2 == false)
data[6] = 0; // 센서두개가 모두 감지되지 않는 경우
value = 0; // 센서두개가 모두 감지되지 않는 경우
else
data[6] = 2; // 센서하나만 감지되는 경우
value = 2; // 센서하나만 감지되는 경우
data.Add(value);
// LiftSt
if (PUB.AGV.signal1.lift_up)
data[7] = 1; // 위로 올라가는 경우
value = 1; // 위로 올라가는 경우
else if (PUB.AGV.signal1.lift_down)
data[7] = 0; // 아래로 내려가는 경우
value = 0; // 아래로 내려가는 경우
else
data[7] = 2; // unknown (기본값)
value = 2; // unknown (기본값)
data.Add(value);
// LastTag
string lastTag = PUB.AGV.data.TagNo.ToString("0000") ?? "0000";
byte[] tagBytes = Encoding.ASCII.GetBytes(lastTag.PadRight(4, '0'));
Array.Copy(tagBytes, 0, data, 8, lastTag.Length);
data.AddRange(tagBytes);
// 데이터 전송
var cmd = (byte)ENIGProtocol.AGVCommandEH.Status;
var packet = proto.CreatePacket(PUB.setting.XBE_ID, cmd, data);
var packet = proto.CreatePacket(PUB.setting.XBE_ID, cmd, data.ToArray());
if (Send(packet))
PUB.logxbee.AddI($"Send status [O] : {packet.Length} {packet.HexString()}");
else