..
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user