Commit 3af05d87 张东亮

0129

1 个父辈 de58ddd2
...@@ -98,15 +98,6 @@ ...@@ -98,15 +98,6 @@
<DependentUpon>Resources.resx</DependentUpon> <DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime> <DesignTime>True</DesignTime>
</Compile> </Compile>
<None Include="Config\AgvMission.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Config\AgvName.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Config\AgvProductionLine.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="packages.config" /> <None Include="packages.config" />
<None Include="Properties\Settings.settings"> <None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator> <Generator>SettingsSingleFileGenerator</Generator>
......
...@@ -53,10 +53,10 @@ ...@@ -53,10 +53,10 @@
</root> </root>
</log4net> </log4net>
<appSettings> <appSettings>
<add key="http_server" value="http://10.85.199.25/myproject/"/> <add key="http_server" value="http://10.85.162.124/myproject/"/>
<add key="FLEET" value="10.85.199.3"/> <add key="FLEET" value="10.85.199.3"/>
<add key="LocalIP" value="10.85.199.20"/> <add key="LocalIP" value="10.85.162.40"/>
<add key="AutoCharge" value="True"/> <add key="Use_Fleet" value="False"/>
<add key="ChargeThreshold" value="20,90"/> <add key="ChargeThreshold" value="20,90"/>
<add key="LimitPoints" value="0,0;0,0;0,0;0,0"/> <add key="LimitPoints" value="0,0;0,0;0,0;0,0"/>
</appSettings> </appSettings>
......
任务别称,任务名称,任务GUID
移动到VMI出口,MoveA1,eec1eed4-2a04-11ea-9c84-94c691a734f1
移动到VMI入口,MoveA2,f68f18db-2f89-11ea-9ee4-94c691a734f1
移动到包装线入口,MoveA3,979d10eb-2f9d-11ea-9ee4-94c691a734f1
移动到包装线出口,MoveA4,df6d991a-2f9d-11ea-9ee4-94c691a734f1
移动到分盘线出口,MoveA7,71e01c6d-de10-11ea-a3e4-94c691a7387d
移动到分盘线入口,MoveA8,cd0544f8-de10-11ea-a3e4-94c691a7387d
移动到包装仓10-1,MoveB1,86a6ab06-261e-11ea-a30e-94c691a73861
移动到包装仓10-2,MoveB2,55fcfdc5-2623-11ea-a30e-94c691a73861
移动到包装仓11-1,MoveB3,905399c8-2623-11ea-a30e-94c691a73861
移动到包装仓11-2,MoveB4,aa33e13a-2623-11ea-a30e-94c691a73861
移动到包装仓12-2,MoveB5,2cd36cde-2624-11ea-a30e-94c691a73861
移动到包装仓12-1,MoveB6,3e713e8b-2624-11ea-a30e-94c691a73861
停靠到包装仓10-1,DockB1,339d1830-261f-11ea-a30e-94c691a73861
停靠到包装仓10-2,DockB2,a6d6f52a-2624-11ea-a30e-94c691a73861
停靠到包装仓11-1,DockB3,b66f0714-2624-11ea-a30e-94c691a73861
停靠到包装仓11-2,DockB4,d01443f2-2624-11ea-a30e-94c691a73861
停靠到包装仓12-2,DockB5,f50dd02b-2624-11ea-a30e-94c691a73861
停靠到包装仓12-1,DockB6,0e5503f2-2625-11ea-a30e-94c691a73861
移动到料串入口C1,MoveC1,a6e36b4c-2fa0-11ea-9ee4-94c691a734f1
移动到料串出口C2,MoveC2,6c6829de-2624-11ea-a30e-94c691a73861
移动到料串入口C3,MoveC3,3ffe309f-2ae6-11ea-a6cf-94c691a734f1
移动到料串出口C4,MoveC4,2ef71347-2ae7-11ea-a6cf-94c691a734f1
移动到料串入口C5,MoveC5,34ec2f1f-2ae8-11ea-a6cf-94c691a734f1
移动到料串出口C6,MoveC6,52f37677-2f96-11ea-9ee4-94c691a734f1
移动到紧急入料口,MoveC7,bcd0e389-2ab7-11ea-a6cf-94c691a734f1
移动到紧急出料口,MoveC8,8a48301d-2624-11ea-a30e-94c691a73861
移动到点料机D1口,MoveD1,931f7c6c-a97d-11ea-b91f-94c691a7387d
移动到点料机D2口,MoveD2,ae09ca1e-a97f-11ea-b91f-94c691a7387d
移动到点料机D3口,MoveD3,97b77df3-edfb-11ea-a03e-94c691a7387d
移动到点料机D4口,MoveD4,37961cd0-edfd-11ea-a03e-94c691a7387d
移动到退料线入口,MoveG23,5dc60886-ee00-11ea-a03e-94c691a7387d
移动到退料线出口,MoveG24,9a965176-ee00-11ea-a03e-94c691a7387d
移动到待机位,MoveStandby,4eb9641a-3439-11ea-984a-94c691a734f1
移动到充电位1,AutoCharge1,9e1b33c0-2886-11ea-a0d6-94c691a734f1
移动到充电位2,AutoCharge2,d756f63d-2886-11ea-a0d6-94c691a734f1
小车进料,Enter,2eadcb87-239a-11ea-8343-94c691a73861
小车出料,Leave,80943220-239a-11ea-8343-94c691a73861
小车初始化,Init,cd51e039-34eb-11ea-b4fe-94c691a734f1
Fleet ID,agv名称,IP,授权码,IOID
1,1号车,10.85.199.67,Basic ZGlzdHJpYnV0b3I6NjJmMmYwZjFlZmYxMGQzMTUyYzk1ZjZmMDU5NjU3NmU0ODJiYjhlNDQ4MDY0MzNmNGNmOTI5NzkyODM0YjAxNA==,007615a5-2220-11ea-99f2-94c691a73b53
2,2号车,10.85.199.68,Basic ZGlzdHJpYnV0b3I6NjJmMmYwZjFlZmYxMGQzMTUyYzk1ZjZmMDU5NjU3NmU0ODJiYjhlNDQ4MDY0MzNmNGNmOTI5NzkyODM0YjAxNA==,007615a5-2220-11ea-99f2-94c691a73b53
3,3号车,10.85.199.69,Basic ZGlzdHJpYnV0b3I6NjJmMmYwZjFlZmYxMGQzMTUyYzk1ZjZmMDU5NjU3NmU0ODJiYjhlNDQ4MDY0MzNmNGNmOTI5NzkyODM0YjAxNA==,007615a5-2220-11ea-99f2-94c691a73b53
4,4号车,10.85.199.70,Basic ZGlzdHJpYnV0b3I6NjJmMmYwZjFlZmYxMGQzMTUyYzk1ZjZmMDU5NjU3NmU0ODJiYjhlNDQ4MDY0MzNmNGNmOTI5NzkyODM0YjAxNA==,007615a5-2220-11ea-99f2-94c691a73b53
\ No newline at end of file \ No newline at end of file
...@@ -177,7 +177,7 @@ namespace AGVControl ...@@ -177,7 +177,7 @@ namespace AGVControl
Invoke(new Action(() => Invoke(new Action(() =>
{ {
lblCharge1.Text = "充电桩1:" + CommonVar.Charge.Station[Charge.AutoCharge1]; lblCharge1.Text = "充电桩1:" + CommonVar.Charge.Station[Charge.AutoCharge1];
lblCharge2.Text = "充电桩2:" + CommonVar.Charge.Station[Charge.AutoCharge2]; //lblCharge2.Text = "充电桩2:" + CommonVar.Charge.Station[Charge.AutoCharge2];
lblStandy1.Text = "待机位1:" + CommonVar.Standby.Station[0]; lblStandy1.Text = "待机位1:" + CommonVar.Standby.Station[0];
lblStandy2.Text = "待机位2:" + CommonVar.Standby.Station[1]; lblStandy2.Text = "待机位2:" + CommonVar.Standby.Station[1];
lblStandy3.Text = "待机位3:" + CommonVar.Standby.Station[2]; lblStandy3.Text = "待机位3:" + CommonVar.Standby.Station[2];
......
...@@ -51,8 +51,7 @@ namespace AGVControl ...@@ -51,8 +51,7 @@ namespace AGVControl
CommonVar.Standby.DelOccupyInfo(Agv.Name); CommonVar.Standby.DelOccupyInfo(Agv.Name);
CommonVar.Charge.DelOccupyInfo(Agv.Name); CommonVar.Charge.DelOccupyInfo(Agv.Name);
//添加Init任务 //添加Init任务
MiR_API.Add_Mission_Fleet(Agv, CommonVar.agvMission[SettingString.Init]); Agv.AssignTask(SettingString.Init);
MiR_API.State_Ready(Agv);
} }
else else
{ {
...@@ -61,7 +60,7 @@ namespace AGVControl ...@@ -61,7 +60,7 @@ namespace AGVControl
LogUtil.error(string.Format("{0} 车上有负载,无法开启自动模式,请先清空小车负载!", Agv.Name)); LogUtil.error(string.Format("{0} 车上有负载,无法开启自动模式,请先清空小车负载!", Agv.Name));
return; return;
} }
if (MessageBox.Show(this,"是否继续上一次的任务?\r\n" + Agv.Msg, "提示", MessageBoxButtons.YesNo).Equals(DialogResult.No)) if (MessageBox.Show(this, "是否继续上一次的任务?\r\n" + Agv.Msg, "提示", MessageBoxButtons.YesNo).Equals(DialogResult.No))
{ {
Agv.CurJob = null; Agv.CurJob = null;
if (Agv.Place.Equals(SettingString.Standby) || Agv.Place.Equals(SettingString.AutoCharge)) if (Agv.Place.Equals(SettingString.Standby) || Agv.Place.Equals(SettingString.AutoCharge))
...@@ -87,8 +86,14 @@ namespace AGVControl ...@@ -87,8 +86,14 @@ namespace AGVControl
{ {
if (MessageBox.Show("确定对小车重发任务?", Agv.Name, MessageBoxButtons.YesNo) == DialogResult.No) if (MessageBox.Show("确定对小车重发任务?", Agv.Name, MessageBoxButtons.YesNo) == DialogResult.No)
return; return;
Task.Factory.StartNew(new Action(()=> {
MiR_API.Clear_Error(Agv);
System.Threading.Thread.Sleep(1000);
MiR_API.State_Ready(Agv);
Agv.Resend(); Agv.Resend();
LogUtil.info(string.Format("{0} 手动重发任务", Agv.Name)); LogUtil.info(string.Format("{0} 手动重发任务", Agv.Name));
}));
} }
} }
...@@ -125,6 +130,9 @@ namespace AGVControl ...@@ -125,6 +130,9 @@ namespace AGVControl
{ {
if (Agv.IsCon) if (Agv.IsCon)
{ {
if (cmbBxMission.SelectedItem.ToString().Equals(SettingString.Enter) || cmbBxMission.SelectedItem.ToString().Equals(SettingString.Leave))
if (MessageBox.Show("确定对小车发送进/出任务?", Agv.Name, MessageBoxButtons.YesNo) == DialogResult.No)
return;
Agv.AssignTask(CommonVar.showNameMissionName[cmbBxMission.SelectedItem.ToString()]); Agv.AssignTask(CommonVar.showNameMissionName[cmbBxMission.SelectedItem.ToString()]);
LogUtil.info(string.Format("{0} 手动发任务 {1}", Agv.Name, cmbBxMission.SelectedItem.ToString())); LogUtil.info(string.Format("{0} 手动发任务 {1}", Agv.Name, cmbBxMission.SelectedItem.ToString()));
} }
......
...@@ -96,7 +96,7 @@ namespace AGVControl ...@@ -96,7 +96,7 @@ namespace AGVControl
temp = line[i].Split(','); temp = line[i].Split(',');
if (temp.Length != 3) continue; if (temp.Length != 3) continue;
CommonVar.agvMission.Add(temp[1], temp[2]); CommonVar.agvMission.Add(temp[1], temp[2]);
CommonVar.showNameMissionName.Add(temp[0], temp[1]); CommonVar.showNameMissionName.Add(temp[1], temp[0]);
} }
CommonVar.nodeInfo = new List<ClientNode>(); CommonVar.nodeInfo = new List<ClientNode>();
......
...@@ -22,7 +22,9 @@ namespace AGV_UI ...@@ -22,7 +22,9 @@ namespace AGV_UI
static string Ready = "Ready"; static string Ready = "Ready";
static string Pause = "Pause"; static string Pause = "Pause";
static string Executing = "Executing"; static string Executing = "Executing";
static string Done = "Done";
static string Aborted = "Aborted"; static string Aborted = "Aborted";
static string Invalid = "Invalid";
static string EmergencyStop = "EmergencyStop"; static string EmergencyStop = "EmergencyStop";
static string ManualControl = "ManualControl"; static string ManualControl = "ManualControl";
static string Error = "Error"; static string Error = "Error";
...@@ -50,12 +52,14 @@ namespace AGV_UI ...@@ -50,12 +52,14 @@ namespace AGV_UI
stateImageList.ImageSize = new System.Drawing.Size(48, 48); stateImageList.ImageSize = new System.Drawing.Size(48, 48);
stateImageList.Images.Add(UNKNOWN, Properties.Resources.Unknown); stateImageList.Images.Add(UNKNOWN, Properties.Resources.Unknown);
stateImageList.Images.Add(Ready, Properties.Resources.ready); stateImageList.Images.Add(Ready, Properties.Resources.ready);
stateImageList.Images.Add(Done, Properties.Resources.ready);
stateImageList.Images.Add(Pause, Properties.Resources.pause); stateImageList.Images.Add(Pause, Properties.Resources.pause);
stateImageList.Images.Add(ManualControl, Properties.Resources.manual); stateImageList.Images.Add(ManualControl, Properties.Resources.manual);
stateImageList.Images.Add(Executing, Properties.Resources.Executing); stateImageList.Images.Add(Executing, Properties.Resources.Executing);
stateImageList.Images.Add(Error, Properties.Resources.Error); stateImageList.Images.Add(Error, Properties.Resources.Error);
stateImageList.Images.Add(EmergencyStop, Properties.Resources.emergency); stateImageList.Images.Add(EmergencyStop, Properties.Resources.emergency);
stateImageList.Images.Add(Aborted, Properties.Resources.Aborted); stateImageList.Images.Add(Aborted, Properties.Resources.Aborted);
stateImageList.Images.Add(Invalid, Properties.Resources.Aborted);
} }
/// <summary> /// <summary>
/// 设置连接状态 /// 设置连接状态
......
...@@ -112,7 +112,7 @@ ...@@ -112,7 +112,7 @@
this.lblAGVState.Size = new System.Drawing.Size(127, 50); this.lblAGVState.Size = new System.Drawing.Size(127, 50);
this.lblAGVState.TabIndex = 1; this.lblAGVState.TabIndex = 1;
this.lblAGVState.Text = "None"; this.lblAGVState.Text = "None";
this.lblAGVState.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.lblAGVState.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
// //
// lblTask // lblTask
// //
......
...@@ -49,8 +49,8 @@ namespace Common ...@@ -49,8 +49,8 @@ namespace Common
/// <summary> /// <summary>
/// 退料线 /// 退料线
/// </summary> /// </summary>
public const string G23_In = "G23"; public const string D23_In = "D23";
public const string G24_Out = "G24"; public const string D24_Out = "D24";
/// <summary> /// <summary>
/// 上料区 /// 上料区
/// </summary> /// </summary>
...@@ -62,46 +62,76 @@ namespace Common ...@@ -62,46 +62,76 @@ namespace Common
public const string D4_Name_Prefix = "D"; public const string D4_Name_Prefix = "D";
public const string C4_Name_Prefix = "G"; public const string C4_Name_Prefix = "G";
public const string http_server = "http_server"; public const string http_server = "http_server";
/// <summary> /// <summary>
/// 包装仓出空料架位置 /// 分盘出空料串位
/// </summary> /// </summary>
public const string A7 = "A7"; public const string A7 = "A7";
/// <summary> /// <summary>
/// 分盘入料串
/// </summary>
public const string A8 = "A8";
/// <summary>
/// 分盘出满料串
/// </summary>
public const string A9 = "A9";
/// <summary>
/// 包装仓出空料架位置 /// 包装仓出空料架位置
/// </summary> /// </summary>
public const string A4 = "A4"; public const string A4 = "A4";
public const string A3 = "A3"; public const string A3 = "A3";
public const string Enter = "Enter"; public const string Enter = "Enter";
public const string Leave = "Leave"; public const string Leave = "Leave";
/// <summary>
/// 空料串接收位置
/// </summary>
public const string C7 = "C7";
public const string A2 = "A2"; public const string A2 = "A2";
public const string A8 = "A8";
/// <summary>
/// 出满料
/// </summary>
public const string C8 = "C8";
public const string A1 = "A1"; public const string A1 = "A1";
public const string InStore_Mark = "InStore"; public const string InStore_Mark = "InStore";
/// <summary> /// <summary>
/// 入料口1 /// 入料口1入口
/// </summary> /// </summary>
public const string C5 = "C5"; public const string T1_1 = "T1_1";
public const string C6 = "C6"; /// <summary>
/// 入料口1出口
/// </summary>
public const string T1_2 = "T1_2";
/// <summary>
/// 入料口2入口
/// </summary>
public const string T2_1 = "T2_1";
/// <summary>
/// 入料口2出口
/// </summary>
public const string T2_2 = "T2_2";
/// <summary>
/// 入料口3入口
/// </summary>
public const string T3_1 = "T3_1";
/// <summary>
/// 入料口3出口
/// </summary>
public const string T3_2 = "T3_2";
/// <summary>
/// 入料口5入口
/// </summary>
public const string T5_1 = "T5_1";
/// <summary>
/// 入料口5出口
/// </summary>
public const string T5_2 = "T5_2";
/// <summary> /// <summary>
/// 入料口2 /// 紧急料口T4(出满料)
/// </summary> /// </summary>
public const string C3 = "C3"; public const string T4_2 = "T4_2";
public const string C4 = "C4";
/// <summary> /// <summary>
/// 入料口3 /// 紧急料口T4(入空料串)
/// </summary> /// </summary>
public const string C1 = "C1"; public const string T4_1 = "T4_1";
public const string C2 = "C2";
/// <summary> /// <summary>
/// 点料机 /// 点料机
/// </summary> /// </summary>
...@@ -112,5 +142,6 @@ namespace Common ...@@ -112,5 +142,6 @@ namespace Common
public const string LimitPoints = "LimitPoints"; public const string LimitPoints = "LimitPoints";
public const string LocalIP = "LocalIP"; public const string LocalIP = "LocalIP";
public const string Use_Fleet = "Use_Fleet";
} }
} }
...@@ -24,33 +24,11 @@ namespace DeviceLibrary ...@@ -24,33 +24,11 @@ namespace DeviceLibrary
/// </summary> /// </summary>
public int BatteryMin { get; set; } = 20; public int BatteryMin { get; set; } = 20;
/// <summary>
/// 自动充电
/// </summary>
private bool _autoCharge = true;
/// <summary>
/// 自动充电
/// </summary>
public bool AutoCharge
{
set
{
_autoCharge = value;
AppConfigHelper.SaveValue(SettingString.AutoCharge, value);
}
get
{
return _autoCharge;
}
}
public Charge() public Charge()
{ {
Station = new Dictionary<string, string>(); Station = new Dictionary<string, string>();
Station.Add(AutoCharge1, ""); Station.Add(AutoCharge1, "");
Station.Add(AutoCharge2, ""); //Station.Add(AutoCharge2, "");
_autoCharge = AppConfigHelper.GetBoolValue(SettingString.AutoCharge);
string s = AppConfigHelper.GetValue(SettingString.ChargeThreshold); string s = AppConfigHelper.GetValue(SettingString.ChargeThreshold);
string[] arr = s.Split(','); string[] arr = s.Split(',');
BatteryMin = Convert.ToInt32(arr[0]); BatteryMin = Convert.ToInt32(arr[0]);
...@@ -135,26 +113,27 @@ namespace DeviceLibrary ...@@ -135,26 +113,27 @@ namespace DeviceLibrary
public bool HasEmptyChargeStation(Agv_Info agv) public bool HasEmptyChargeStation(Agv_Info agv)
{ {
lock(loc) //lock(loc)
{
if (SettingString.SingleMission_IP1.Equals(agv.IP))
return true;
else
{
if (Station[AutoCharge2].Equals(""))
{
return true;
}
}
//foreach (string item in Station.Keys)
//{ //{
// if (Station[item].Equals("")) // if (SettingString.SingleMission_IP1.Equals(agv.IP))
// return true;
// else
// {
// if (Station[AutoCharge2].Equals(""))
// { // {
// return true; // return true;
// } // }
// }
// //foreach (string item in Station.Keys)
// //{
// // if (Station[item].Equals(""))
// // {
// // return true;
// // }
// //}
//} //}
} //return false;
return false; return true;
} }
/// <summary> /// <summary>
/// 开始充电任务 /// 开始充电任务
...@@ -172,7 +151,7 @@ namespace DeviceLibrary ...@@ -172,7 +151,7 @@ namespace DeviceLibrary
{ {
if (Station[chargeStation].Equals("")) if (Station[chargeStation].Equals(""))
{ {
rtn = MiR_API.Add_Mission_Fleet(agv, CommonVar.agvMission[chargeStation]); rtn = agv.AssignTask(chargeStation);
if (rtn) if (rtn)
{ {
Station[chargeStation] = agv.Name; Station[chargeStation] = agv.Name;
......
...@@ -97,7 +97,7 @@ namespace DeviceLibrary ...@@ -97,7 +97,7 @@ namespace DeviceLibrary
agv.Place = ""; agv.Place = "";
//执行下一个任务 //执行下一个任务
int i = FindNode(nodeName); int i = FindNode(nodeName);
bool rtn = MiR_API.Add_Mission_Fleet(agv, agvMission[SettingString.Move + nodeName]); bool rtn = agv.AssignTask(SettingString.Move + nodeName);
if (rtn) if (rtn)
{ {
agv.Place = nodeName; agv.Place = nodeName;
...@@ -129,8 +129,7 @@ namespace DeviceLibrary ...@@ -129,8 +129,7 @@ namespace DeviceLibrary
//清除目的地 //清除目的地
agv.Place = ""; agv.Place = "";
//执行下一个任务 //执行下一个任务
bool rtn = agv.AssignTask(SettingString.Dock + nodeName);
bool rtn = MiR_API.Add_Mission_Fleet(agv, agvMission[SettingString.Dock + nodeName]);
if (rtn) if (rtn)
{ {
agv.Place = nodeName; agv.Place = nodeName;
...@@ -151,7 +150,7 @@ namespace DeviceLibrary ...@@ -151,7 +150,7 @@ namespace DeviceLibrary
public static bool DoorMission(Agv_Info agv, string doorName) public static bool DoorMission(Agv_Info agv, string doorName)
{ {
agv.Place = doorName; agv.Place = doorName;
return MiR_API.Add_Mission_Fleet(agv, agvMission[SettingString.Move + doorName]); return agv.AssignTask(SettingString.Move + doorName);
} }
/// <summary> /// <summary>
...@@ -227,9 +226,9 @@ namespace DeviceLibrary ...@@ -227,9 +226,9 @@ namespace DeviceLibrary
/// </summary> /// </summary>
/// <param name="CurTaskID"></param> /// <param name="CurTaskID"></param>
/// <returns></returns> /// <returns></returns>
public static string GetTakJobState(int CurTaskID) public static string GetTakJobState(Agv_Info agv)
{ {
if (!CurTaskID.Equals(-1) && MiR_API.Get_Task_State(CurTaskID, out string st)) if (!agv.CurTaskID.Equals(-1) && MiR_API.Get_Task_State(agv, out string st))
return st; return st;
return SettingString.Wait; return SettingString.Wait;
} }
......
任务别称,任务名称,任务GUID
小车初始化,Init,219cd91a-61da-11eb-96a9-0001297a1dca
VMI出口,MoveA1,a6416bc3-61f7-11eb-96a9-0001297a1dca
VMI入口,MoveA2,8c0a0fc6-61f7-11eb-96a9-0001297a1dca
分盘线入口,MoveA8,cd0544f8-de10-11ea-a3e4-94c691a7387d
分盘线空料串出口,MoveA7,71e01c6d-de10-11ea-a3e4-94c691a7387d
分盘线满料串出口,MoveA9,71e01c6d-de10-11ea-a3e4-94c691a7387d
云仓T1入口,MoveT1_1,632f434e-61f1-11eb-96a9-0001297a1dca
云仓T1出口,MoveT1_2,bff9d729-61f1-11eb-96a9-0001297a1dca
云仓T2入口,MoveT2_1,e6b1129f-61f1-11eb-96a9-0001297a1dca
云仓T2出口,MoveT2_2,0a721ff0-61f2-11eb-96a9-0001297a1dca
云仓T3入口,MoveT3_1,2f3ddde9-61f2-11eb-96a9-0001297a1dca
云仓T3出口,MoveT3_2,78996774-61f2-11eb-96a9-0001297a1dca
云仓T5入口,MoveT5_1,bdabf3f6-61f2-11eb-96a9-0001297a1dca
云仓T5出口,MoveT5_2,19f39838-61f4-11eb-96a9-0001297a1dca
紧急料T4入口,MoveT4_1,90aa9c04-61f2-11eb-96a9-0001297a1dca
紧急料T4出口,MoveT4_2,a8f9be71-61f2-11eb-96a9-0001297a1dca
点料机空料串入口[D1],MoveD1,219cd91a-61da-11eb-96a9-0001297a1dca
点料机满料串出口[D2],MoveD2,219cd91a-61da-11eb-96a9-0001297a1dca
点料机退料口[D3],MoveD3,219cd91a-61da-11eb-96a9-0001297a1dca
点料机退料口[D4],MoveD4,219cd91a-61da-11eb-96a9-0001297a1dca
退料线入口,MoveD23,5dc60886-ee00-11ea-a03e-94c691a7387d
退料线出口,MoveD24,9a965176-ee00-11ea-a03e-94c691a7387d
待机位,MoveStandby,615cef05-61f4-11eb-96a9-0001297a1dca
充电位1,AutoCharge1,d90853ec-5f06-11eb-9d80-0001297a1dca
小车进料,Enter,ce64c188-61da-11eb-96a9-0001297a1dca
小车出料,Leave,65c1203c-61e1-11eb-96a9-0001297a1dca
Fleet ID,agv名称,IP,授权码,IOID
1,14号车,10.85.199.18,Basic ZGlzdHJpYnV0b3I6NjJmMmYwZjFlZmYxMGQzMTUyYzk1ZjZmMDU5NjU3NmU0ODJiYjhlNDQ4MDY0MzNmNGNmOTI5NzkyODM0YjAxNA==,007615a5-2220-11ea-99f2-94c691a73b53
节点名,别名,佳世达线名 节点名,别名,佳世达线名
A1,A1,VMI-A1出口 A1,A1,VMI-A1出口
A2,A2,VMI-A2入口 A2,A2,VMI-A2入口
A7,A7,分盘线-A7出口
A8,A8,分盘线-A8入口 A8,A8,分盘线-A8入口
A7,A7,分盘线-A7空料串出口
A9,A9,分盘线-A9满料串出口
T1_1,T1_1,入料T1入口 T1_1,T1_1,入料T1入口
T1_2,T1_2,入料T1出口 T1_2,T1_2,入料T1出口
T2_1,T2_1,入料T2入口 T2_1,T2_1,入料T2入口
...@@ -13,7 +14,9 @@ T5_1,T5_1,入料T5入口 ...@@ -13,7 +14,9 @@ T5_1,T5_1,入料T5入口
T5_2,T5_2,入料T5出口 T5_2,T5_2,入料T5出口
T4_1,T4_1,紧急料T4入口 T4_1,T4_1,紧急料T4入口
T4_2,T4_2,紧急料T4出口 T4_2,T4_2,紧急料T4出口
D1,D1,点料机-D1入口
D2,D2,点料机-D2出口
D3,D3,点料机-D3口
D4,D4,点料机-D4口
\ No newline at end of file \ No newline at end of file
D23,D23,退料线入口
D24,D24,退料线出口
D1,D1,点料机D1-空料串入口
D2,D2,点料机D2-满料串出口
D3,D3,点料机D3-退料口1
D4,D4,点料机D4-退料口2
\ No newline at end of file \ No newline at end of file
...@@ -85,13 +85,13 @@ namespace DeviceLibrary ...@@ -85,13 +85,13 @@ namespace DeviceLibrary
{ {
if (!CheckOnline(i)) continue; if (!CheckOnline(i)) continue;
bool change = false; bool change = false;
MiR_API.Get_Task_State(CommonVar.agvInfo[i].CurTaskID, out string stateStr); MiR_API.Get_Task_State(CommonVar.agvInfo[i], out string stateStr);
Thread.Sleep(50); Thread.Sleep(50);
//获取AGV状态 //获取AGV状态
rtn = MiR_API.Get_State(CommonVar.agvInfo[i], out eAGVState stateID, out string stateText, out int battery, out string mission_text, out Agv_Info.AgvPosition position); rtn = MiR_API.Get_State(CommonVar.agvInfo[i], out eAGVState stateID, out string stateText, out int battery, out string mission_text, out Agv_Info.AgvPosition position);
Thread.Sleep(50); Thread.Sleep(50);
rtn = MiR_API.Get_IO_Status(CommonVar.agvInfo[i], out bool[] input, out bool[] output); //rtn = MiR_API.Get_IO_Status(CommonVar.agvInfo[i], out bool[] input, out bool[] output);
Thread.Sleep(50); //Thread.Sleep(50);
change = CommonVar.agvInfo[i].SetState(stateID, stateStr, battery, mission_text, position); change = CommonVar.agvInfo[i].SetState(stateID, stateStr, battery, mission_text, position);
//更新状态stateID.Equals(eAGVState.Executing) //更新状态stateID.Equals(eAGVState.Executing)
...@@ -161,7 +161,7 @@ namespace DeviceLibrary ...@@ -161,7 +161,7 @@ namespace DeviceLibrary
//Ready,Pause,Executing,Error //Ready,Pause,Executing,Error
if (!CommonVar.agvInfo[i].StateID.Equals(eAGVState.Ready) && !CommonVar.agvInfo[i].StateID.Equals(eAGVState.Pause) if (!CommonVar.agvInfo[i].StateID.Equals(eAGVState.Ready) && !CommonVar.agvInfo[i].StateID.Equals(eAGVState.Pause)
&& !CommonVar.agvInfo[i].StateID.Equals(eAGVState.Executing) && !CommonVar.agvInfo[i].StateID.Equals(eAGVState.Error)) && !CommonVar.agvInfo[i].StateID.Equals(eAGVState.Executing) && !CommonVar.agvInfo[i].StateID.Equals(eAGVState.None))
{ {
LogUtil.debug(CommonVar.agvInfo[i].Name + " 不可调用 StateID=" + CommonVar.agvInfo[i].StateID.ToString()); LogUtil.debug(CommonVar.agvInfo[i].Name + " 不可调用 StateID=" + CommonVar.agvInfo[i].StateID.ToString());
continue; continue;
......
...@@ -90,5 +90,16 @@ ...@@ -90,5 +90,16 @@
<Name>Common</Name> <Name>Common</Name>
</ProjectReference> </ProjectReference>
</ItemGroup> </ItemGroup>
<ItemGroup>
<None Include="Config\AgvMission.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Config\AgvName.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Config\AgvProductionLine.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project> </Project>
\ No newline at end of file \ No newline at end of file
...@@ -84,10 +84,6 @@ namespace DeviceLibrary ...@@ -84,10 +84,6 @@ namespace DeviceLibrary
public eAGVState StateID { private set; get; } public eAGVState StateID { private set; get; }
/// <summary> /// <summary>
/// 是否使用Fleet发任务
/// </summary>
public bool Use_Fleet { get; set; } = false;
/// <summary>
/// 负载 /// 负载
/// </summary> /// </summary>
public bool IsExistShelf { set; get; } = false; public bool IsExistShelf { set; get; } = false;
...@@ -174,6 +170,7 @@ namespace DeviceLibrary ...@@ -174,6 +170,7 @@ namespace DeviceLibrary
private bool offlineTimeOut = false; private bool offlineTimeOut = false;
public AGV_UI.Status StateKanban; public AGV_UI.Status StateKanban;
public bool Use_Fleet = AppConfigHelper.GetBoolValue(SettingString.Use_Fleet);
public Agv_Info(string id, string name, string ip, string authorization, string ioID, bool isUse, string rfid) public Agv_Info(string id, string name, string ip, string authorization, string ioID, bool isUse, string rfid)
{ {
Fleet_IP = id; Fleet_IP = id;
...@@ -305,7 +302,7 @@ namespace DeviceLibrary ...@@ -305,7 +302,7 @@ namespace DeviceLibrary
bool isAlarm = false; bool isAlarm = false;
try try
{ {
int nodeIdx = CommonVar.FindNode(SettingString.G24_Out); int nodeIdx = CommonVar.FindNode(SettingString.D24_Out);
if (nodeIdx > -1) if (nodeIdx > -1)
displayBoard.Add("退料线出口状态", "doubleLine.ReturnLine", CommonVar.nodeInfo[nodeIdx].GetState().ToString(), 1); displayBoard.Add("退料线出口状态", "doubleLine.ReturnLine", CommonVar.nodeInfo[nodeIdx].GetState().ToString(), 1);
if (offlineTimeOut) if (offlineTimeOut)
...@@ -366,7 +363,7 @@ namespace DeviceLibrary ...@@ -366,7 +363,7 @@ namespace DeviceLibrary
{ {
offlineTimeOut = false; offlineTimeOut = false;
if ((DateTime.Now - offlineStartTime).TotalSeconds > OfflineLastTimeSeconds) if ((DateTime.Now - offlineStartTime).TotalSeconds > OfflineLastTimeSeconds)
LogUtil.error(string.Format("{0} 在{1}离线{2}秒", Name, PlaceAliceName, (DateTime.Now - offlineStartTime).TotalSeconds.ToString("f2"))); //LogUtil.error(string.Format("{0} 在{1}离线{2}秒", Name, PlaceAliceName, (DateTime.Now - offlineStartTime).TotalSeconds.ToString("f2")));
offlineStartTime = DateTime.Now; offlineStartTime = DateTime.Now;
} }
} }
...@@ -442,9 +439,9 @@ namespace DeviceLibrary ...@@ -442,9 +439,9 @@ namespace DeviceLibrary
/// <summary> /// <summary>
/// 给小车分配任务 /// 给小车分配任务
/// </summary> /// </summary>
public void AssignTask(string taskName) public bool AssignTask(string taskName)
{ {
bool rtn; bool rtn=false;
if (Use_Fleet) if (Use_Fleet)
{ {
rtn = MiR_API.Add_Mission_Fleet(this, CommonVar.agvMission[taskName]); rtn = MiR_API.Add_Mission_Fleet(this, CommonVar.agvMission[taskName]);
...@@ -461,6 +458,9 @@ namespace DeviceLibrary ...@@ -461,6 +458,9 @@ namespace DeviceLibrary
{ {
LogUtil.info(string.Format("{0} 分配{1}任务失败", Name, taskName)); LogUtil.info(string.Format("{0} 分配{1}任务失败", Name, taskName));
} }
StateKanban.SetCurTask(CommonVar.showNameMissionName[taskName]);
MiR_API.State_Ready(this);
return rtn;
} }
/// <summary> /// <summary>
/// 删除当前小车所有任务/Fleet任务里的尽快任务 /// 删除当前小车所有任务/Fleet任务里的尽快任务
......
...@@ -33,12 +33,12 @@ namespace DeviceLibrary ...@@ -33,12 +33,12 @@ namespace DeviceLibrary
/// </summary> /// </summary>
/// <param name="curTaskName"></param> /// <param name="curTaskName"></param>
/// <param name="curTaskId"></param> /// <param name="curTaskId"></param>
protected void UpdateJobTaskInfo(string curTaskName, int curTaskId) protected void UpdateJobTaskInfo(Agv_Info agv)
{ {
CurTaskID = curTaskId; CurTaskID = agv.CurTaskID;
CurTaskName = curTaskName; CurTaskName = agv.CurTaskName;
//CurTaskState = SettingString.Wait; //CurTaskState = SettingString.Wait;
CurTaskState = CommonVar.GetTakJobState(CurTaskID); CurTaskState = CommonVar.GetTakJobState(agv);
} }
/// <summary> /// <summary>
/// 任务重发 /// 任务重发
...@@ -47,14 +47,14 @@ namespace DeviceLibrary ...@@ -47,14 +47,14 @@ namespace DeviceLibrary
public bool ResendTask(Agv_Info agv) public bool ResendTask(Agv_Info agv)
{ {
bool rtn = false; bool rtn = false;
if (!CurTaskID.Equals(-1) && MiR_API.Get_Task_State(CurTaskID, out string stateStr)) if (!CurTaskID.Equals(-1) && MiR_API.Get_Task_State(agv, out string stateStr))
{ {
if (stateStr.Equals(SettingString.Aborted) || stateStr.Equals(SettingString.Invalid)) if (stateStr.Equals(SettingString.Aborted) || stateStr.Equals(SettingString.Invalid))
{ {
rtn = MiR_API.Add_Mission_Fleet(agv, CommonVar.agvMission[CurTaskName]); rtn = agv.AssignTask(CurTaskName);
if (rtn) if (rtn)
{ {
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
return true; return true;
} }
...@@ -62,19 +62,19 @@ namespace DeviceLibrary ...@@ -62,19 +62,19 @@ namespace DeviceLibrary
} }
else if (!CurTaskName.Equals("") && !CommonVar.agvMission[CurTaskName].Equals(agv.CurTaskGUID))//Job的当前任务与agv最新任务不一致 else if (!CurTaskName.Equals("") && !CommonVar.agvMission[CurTaskName].Equals(agv.CurTaskGUID))//Job的当前任务与agv最新任务不一致
{ {
rtn = MiR_API.Add_Mission_Fleet(agv, CommonVar.agvMission[CurTaskName]); rtn = agv.AssignTask(CurTaskName);
if (rtn) if (rtn)
{ {
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
return true; return true;
} }
} }
else if (CurTaskID.Equals(-1))//任务发送失败,重新发送 else if (CurTaskID.Equals(-1))//任务发送失败,重新发送
{ {
rtn = MiR_API.Add_Mission_Fleet(agv, CommonVar.agvMission[CurTaskName]); rtn = agv.AssignTask(CurTaskName);
if (rtn) if (rtn)
{ {
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
return true; return true;
} }
} }
......
...@@ -187,8 +187,11 @@ namespace DeviceLibrary ...@@ -187,8 +187,11 @@ namespace DeviceLibrary
{ {
try try
{ {
log.Debug(string.Format("{0} Add_Mission [{1}]", info.Name, mission_id)); info.CurTaskID = -1;
info.CurTaskGUID = "";
info.CurTaskState = SettingString.Wait;
var key = CommonVar.agvMission.Where(qq => qq.Value == mission_id).Select(qq => qq.Key);
info.CurTaskName = key.ToList()[0];
//删除上一任务 //删除上一任务
Del_Mission(info); Del_Mission(info);
...@@ -213,14 +216,12 @@ namespace DeviceLibrary ...@@ -213,14 +216,12 @@ namespace DeviceLibrary
{ {
info.CurTaskID = Convert.ToInt32(id); info.CurTaskID = Convert.ToInt32(id);
info.CurTaskGUID = mission_id; info.CurTaskGUID = mission_id;
var key = CommonVar.agvMission.Where(qq => qq.Value == mission_id).Select(qq => qq.Key);
info.CurTaskName = key.ToList()[0]; log.Info(string.Format("{0} Add_Mission [{1}]", info.Name, key.ToList()[0]));
log.Debug(string.Format("{0} Add_Mission [{1}]", info.Name, key.ToList()[0]));
} }
catch catch
{ {
log.Error(string.Format("{0} Add_Mission [{1}]", info.Name, mission_id)); log.Error(string.Format("{0} Add_Mission [{1}]", info.Name, mission_id));
info.CurTaskName = "";
} }
return true; return true;
...@@ -236,7 +237,7 @@ namespace DeviceLibrary ...@@ -236,7 +237,7 @@ namespace DeviceLibrary
} }
/// <summary> /// <summary>
/// 添加任务到任务队列 /// 添加任务到FLEET任务队列
/// </summary> /// </summary>
/// <param name="info"></param> /// <param name="info"></param>
/// <param name="mission_id"></param> /// <param name="mission_id"></param>
...@@ -249,6 +250,8 @@ namespace DeviceLibrary ...@@ -249,6 +250,8 @@ namespace DeviceLibrary
info.CurTaskID = -1; info.CurTaskID = -1;
info.CurTaskGUID = ""; info.CurTaskGUID = "";
info.CurTaskState = SettingString.Wait; info.CurTaskState = SettingString.Wait;
var key = CommonVar.agvMission.Where(qq => qq.Value == mission_id).Select(qq => qq.Key);
info.CurTaskName = key.ToList()[0];
//防止上一个任务已执行但返回失败时,删除任务 //防止上一个任务已执行但返回失败时,删除任务
Del_Mission(info); Del_Mission(info);
...@@ -274,8 +277,6 @@ namespace DeviceLibrary ...@@ -274,8 +277,6 @@ namespace DeviceLibrary
{ {
info.CurTaskID = Convert.ToInt32(id); info.CurTaskID = Convert.ToInt32(id);
info.CurTaskGUID = mission_id; info.CurTaskGUID = mission_id;
var key = CommonVar.agvMission.Where(qq => qq.Value == mission_id).Select(qq => qq.Key);
info.CurTaskName = key.ToList()[0];
log.Info(string.Format("{0} Add_Mission_Fleet [{1}]", info.Name, key.ToList()[0])); log.Info(string.Format("{0} Add_Mission_Fleet [{1}]", info.Name, key.ToList()[0]));
} }
catch catch
...@@ -499,16 +500,18 @@ namespace DeviceLibrary ...@@ -499,16 +500,18 @@ namespace DeviceLibrary
} }
} }
public static bool Get_Task_State(int CurTaskID, out string stateStr) public static bool Get_Task_State(Agv_Info agv, out string stateStr)
{ {
stateStr = SettingString.Wait; stateStr = SettingString.Wait;
try try
{ {
if (CurTaskID == -1) if (agv.CurTaskID == -1)
return true; return true;
if(agv.Use_Fleet)
{
string ip = AppConfigHelper.GetValue(SettingString.FLEET); string ip = AppConfigHelper.GetValue(SettingString.FLEET);
//http://10.85.199.3/api/v2.0.0/mission_scheduler string url = "http://" + ip + "/api/v2.0.0/mission_scheduler/" + agv.CurTaskID;
string url = "http://" + ip + "/api/v2.0.0/mission_scheduler/" + CurTaskID;
string json = HttpGet(url, ip, CommonVar.agvInfo[0].Authorization); string json = HttpGet(url, ip, CommonVar.agvInfo[0].Authorization);
log.Debug("URL: " + url + "\n" + "Return: " + json); log.Debug("URL: " + url + "\n" + "Return: " + json);
if (string.IsNullOrWhiteSpace(json)) return false; if (string.IsNullOrWhiteSpace(json)) return false;
...@@ -521,11 +524,33 @@ namespace DeviceLibrary ...@@ -521,11 +524,33 @@ namespace DeviceLibrary
// "state": "Done" // "state": "Done"
string s = dic["id"].ToString(); string s = dic["id"].ToString();
if (s.Equals(CurTaskID.ToString())) if (s.Equals(agv.CurTaskID.ToString()))
{
stateStr = dic["state"].ToString();
return true;
}
}
else
{
string url = "http://"+agv.IP+"/api/v2.0.0/mission_queue/" + agv.CurTaskID;
string json = HttpGet(url, agv.IP, agv.Authorization);
log.Debug("URL: " + url + "\n" + "Return: " + json);
if (string.IsNullOrWhiteSpace(json)) return false;
JavaScriptSerializer serializer = new JavaScriptSerializer();
Dictionary<string, object> dic = (Dictionary<string, object>)serializer.DeserializeObject(json);
if (dic == null) return false;
// "mission_id": "2e433130-c045-11ea-9a66-94c691a7387d",
// "id": 7178,
// "state": "Done"
string s = dic["id"].ToString();
if (s.Equals(agv.CurTaskID.ToString()))
{ {
stateStr = dic["state"].ToString(); stateStr = dic["state"].ToString();
return true; return true;
} }
}
return false; return false;
} }
catch (Exception ex) catch (Exception ex)
......
...@@ -43,18 +43,18 @@ namespace DeviceLibrary ...@@ -43,18 +43,18 @@ namespace DeviceLibrary
bool rtn = false; bool rtn = false;
agv.Msg = ""; agv.Msg = "";
CurTaskState = CommonVar.GetTakJobState(CurTaskID); CurTaskState = CommonVar.GetTakJobState(agv);
if (ChargeStep.IsStep(CHARGE_STEP.NONE)) if (ChargeStep.IsStep(CHARGE_STEP.NONE))
{ {
if (agvPlace.StartsWith(SettingString.C4_Name_Prefix)) if (agvPlace.StartsWith(SettingString.C4_Name_Prefix))
{ {
ChargeStep.ToNextStep(CHARGE_STEP.WAIT_AGV_REACH_4D_DOOR); ChargeStep.ToNextStep(CHARGE_STEP.WAIT_AGV_REACH_3D_DOOR);
runInfo = "电量[" + agv.Battery + "%]小于最大电量[" + CommonVar.Charge.BatteryMax + "%],从当前位置" + agvPlace + "回到充电位,先到4D门"; runInfo = "电量[" + agv.Battery + "%]小于最大电量[" + CommonVar.Charge.BatteryMax + "%],从当前位置" + agvPlace + "回到充电位,先到3D门";
msg += runInfo; msg += runInfo;
ChargeStep.Msg = msg; ChargeStep.Msg = msg;
CommonVar.DoorMission(agv, SettingString.DoorCToD); CommonVar.DoorMission(agv, SettingString.DoorCToD);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
else else
{ {
...@@ -72,12 +72,12 @@ namespace DeviceLibrary ...@@ -72,12 +72,12 @@ namespace DeviceLibrary
runInfo = "电量[" + agv.Battery + "%]小于最大电量[" + CommonVar.Charge.BatteryMax + "%],从当前位置" + agvPlace + "去到充电位"; runInfo = "电量[" + agv.Battery + "%]小于最大电量[" + CommonVar.Charge.BatteryMax + "%],从当前位置" + agvPlace + "去到充电位";
msg += runInfo; msg += runInfo;
ChargeStep.Msg = msg; ChargeStep.Msg = msg;
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
} }
} }
else if (ChargeStep.IsStep(CHARGE_STEP.WAIT_AGV_REACH_4D_DOOR)) else if (ChargeStep.IsStep(CHARGE_STEP.WAIT_AGV_REACH_3D_DOOR))
{ {
if (CommonVar.CheckTaskMoveFinished(agv, SettingString.DoorCToD, CurTaskState)) if (CommonVar.CheckTaskMoveFinished(agv, SettingString.DoorCToD, CurTaskState))
{ {
...@@ -104,7 +104,7 @@ namespace DeviceLibrary ...@@ -104,7 +104,7 @@ namespace DeviceLibrary
runInfo = "电量[" + agv.Battery + "%]小于最大电量[" + CommonVar.Charge.BatteryMax + "%],从当前位置" + agvPlace + "去到充电位"; runInfo = "电量[" + agv.Battery + "%]小于最大电量[" + CommonVar.Charge.BatteryMax + "%],从当前位置" + agvPlace + "去到充电位";
msg += runInfo; msg += runInfo;
ChargeStep.Msg = msg; ChargeStep.Msg = msg;
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
} }
...@@ -163,7 +163,7 @@ namespace DeviceLibrary ...@@ -163,7 +163,7 @@ namespace DeviceLibrary
/// <summary> /// <summary>
/// 等待到达4D门 /// 等待到达4D门
/// </summary> /// </summary>
WAIT_AGV_REACH_4D_DOOR, WAIT_AGV_REACH_3D_DOOR,
/// <summary> /// <summary>
/// 等待AGV到达充电位 /// 等待AGV到达充电位
/// </summary> /// </summary>
......
...@@ -71,8 +71,8 @@ namespace DeviceLibrary ...@@ -71,8 +71,8 @@ namespace DeviceLibrary
runInfo += "小车链条运行"; runInfo += "小车链条运行";
msg += runInfo; msg += runInfo;
EnterLeaveShelfStep.Msg = msg; EnterLeaveShelfStep.Msg = msg;
rtn = MiR_API.Add_Mission_Fleet(agv, CommonVar.agvMission["Leave"]); rtn = agv.AssignTask(Common.SettingString.Leave);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
else if(ActionType.Equals(eEnterLeaveType.Enter)) else if(ActionType.Equals(eEnterLeaveType.Enter))
{ {
...@@ -80,13 +80,13 @@ namespace DeviceLibrary ...@@ -80,13 +80,13 @@ namespace DeviceLibrary
runInfo +="小车链条运行"; runInfo +="小车链条运行";
msg += runInfo; msg += runInfo;
EnterLeaveShelfStep.Msg = msg; EnterLeaveShelfStep.Msg = msg;
rtn = MiR_API.Add_Mission_Fleet(agv, CommonVar.agvMission["Enter"]); rtn = agv.AssignTask(Common.SettingString.Enter);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
} }
else if (EnterLeaveShelfStep.IsStep(ENTER_LEAVE_SHELF_STEP.WAIT__SHELF_IN_LINE)) else if (EnterLeaveShelfStep.IsStep(ENTER_LEAVE_SHELF_STEP.WAIT__SHELF_IN_LINE))
{ {
CurTaskState = CommonVar.GetTakJobState(CurTaskID); CurTaskState = CommonVar.GetTakJobState(agv);
if (CommonVar.CheckEnterOrLeaveFinished(agv, "Leave", CurTaskState)) if (CommonVar.CheckEnterOrLeaveFinished(agv, "Leave", CurTaskState))
{ {
...@@ -108,7 +108,7 @@ namespace DeviceLibrary ...@@ -108,7 +108,7 @@ namespace DeviceLibrary
} }
else if (EnterLeaveShelfStep.IsStep(ENTER_LEAVE_SHELF_STEP.WAIT__SHELF_OUT_LINE)) else if (EnterLeaveShelfStep.IsStep(ENTER_LEAVE_SHELF_STEP.WAIT__SHELF_OUT_LINE))
{ {
CurTaskState = CommonVar.GetTakJobState(CurTaskID); CurTaskState = CommonVar.GetTakJobState(agv);
if (CommonVar.CheckEnterOrLeaveFinished(agv, "Enter", CurTaskState)) if (CommonVar.CheckEnterOrLeaveFinished(agv, "Enter", CurTaskState))
{ {
......
...@@ -81,7 +81,7 @@ namespace DeviceLibrary ...@@ -81,7 +81,7 @@ namespace DeviceLibrary
bool rtn = false; bool rtn = false;
agv.Msg = runInfo; agv.Msg = runInfo;
CurTaskState = CommonVar.GetTakJobState(CurTaskID); CurTaskState = CommonVar.GetTakJobState(agv);
if (curJobStep.IsStep(EXECUTE_STEP.P1_NONE)) if (curJobStep.IsStep(EXECUTE_STEP.P1_NONE))
{ {
...@@ -92,7 +92,7 @@ namespace DeviceLibrary ...@@ -92,7 +92,7 @@ namespace DeviceLibrary
msg += runInfo; msg += runInfo;
curJobStep.Msg = msg; curJobStep.Msg = msg;
CommonVar.MoveToNode(agv, TargetPlace); CommonVar.MoveToNode(agv, TargetPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
else if (agvPlace.StartsWith(SettingString.C4_Name_Prefix)) else if (agvPlace.StartsWith(SettingString.C4_Name_Prefix))
{ {
...@@ -101,7 +101,7 @@ namespace DeviceLibrary ...@@ -101,7 +101,7 @@ namespace DeviceLibrary
msg += runInfo; msg += runInfo;
curJobStep.Msg = msg; curJobStep.Msg = msg;
CommonVar.DoorMission(agv, SettingString.DoorCToD); CommonVar.DoorMission(agv, SettingString.DoorCToD);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
else else
{ {
...@@ -111,7 +111,7 @@ namespace DeviceLibrary ...@@ -111,7 +111,7 @@ namespace DeviceLibrary
curJobStep.Msg = msg; curJobStep.Msg = msg;
CommonVar.MoveToNode(agv, TargetPlace); CommonVar.MoveToNode(agv, TargetPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
} }
else if (curJobStep.IsStep(EXECUTE_STEP.P1_1_WAIT_REACH_4D_DOOR)) else if (curJobStep.IsStep(EXECUTE_STEP.P1_1_WAIT_REACH_4D_DOOR))
...@@ -124,7 +124,7 @@ namespace DeviceLibrary ...@@ -124,7 +124,7 @@ namespace DeviceLibrary
curJobStep.Msg = msg; curJobStep.Msg = msg;
CommonVar.MoveToNode(agv, TargetPlace); CommonVar.MoveToNode(agv, TargetPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
} }
else if (curJobStep.IsStep(EXECUTE_STEP.P2_WAIT_REACH_PACKING_SHELF_PLACE)) else if (curJobStep.IsStep(EXECUTE_STEP.P2_WAIT_REACH_PACKING_SHELF_PLACE))
...@@ -196,8 +196,8 @@ namespace DeviceLibrary ...@@ -196,8 +196,8 @@ namespace DeviceLibrary
msg += runInfo; msg += runInfo;
curJobStep.Msg = msg; curJobStep.Msg = msg;
RFID = CommonVar.nodeInfo[i].RFID; RFID = CommonVar.nodeInfo[i].RFID;
rtn = MiR_API.Add_Mission_Fleet(agv, CommonVar.agvMission[SettingString.Enter]); rtn = agv.AssignTask(SettingString.Enter);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
} }
......
...@@ -81,7 +81,7 @@ namespace DeviceLibrary ...@@ -81,7 +81,7 @@ namespace DeviceLibrary
bool rtn = false; bool rtn = false;
agv.Msg = runInfo; agv.Msg = runInfo;
CurTaskState = CommonVar.GetTakJobState(CurTaskID); CurTaskState = CommonVar.GetTakJobState(agv);
if (curJobStep.IsStep(EXECUTE_STEP.P1_NONE)) if (curJobStep.IsStep(EXECUTE_STEP.P1_NONE))
{ {
...@@ -90,7 +90,7 @@ namespace DeviceLibrary ...@@ -90,7 +90,7 @@ namespace DeviceLibrary
msg += runInfo; msg += runInfo;
curJobStep.Msg = msg; curJobStep.Msg = msg;
CommonVar.MoveToNode(agv, TargetPlace); CommonVar.MoveToNode(agv, TargetPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
else if (curJobStep.IsStep(EXECUTE_STEP.P2_WAIT_REACH_PACKING_STATION)) else if (curJobStep.IsStep(EXECUTE_STEP.P2_WAIT_REACH_PACKING_STATION))
...@@ -155,7 +155,7 @@ namespace DeviceLibrary ...@@ -155,7 +155,7 @@ namespace DeviceLibrary
curJobStep.Msg = msg; curJobStep.Msg = msg;
CommonVar.DockToNode(agv, TargetPlace); CommonVar.DockToNode(agv, TargetPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
else if (curJobStep.IsTimeOut(6000, out double timeOutTime)) else if (curJobStep.IsTimeOut(6000, out double timeOutTime))
{ {
...@@ -174,9 +174,8 @@ namespace DeviceLibrary ...@@ -174,9 +174,8 @@ namespace DeviceLibrary
runInfo = "停靠包装仓完成,链条运行"; runInfo = "停靠包装仓完成,链条运行";
msg += runInfo; msg += runInfo;
curJobStep.Msg = msg; curJobStep.Msg = msg;
rtn = agv.AssignTask(SettingString.Leave);
rtn = MiR_API.Add_Mission_Fleet(agv, CommonVar.agvMission[SettingString.Leave]); UpdateJobTaskInfo(agv);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID);
} }
} }
else if (curJobStep.IsStep(EXECUTE_STEP.P6_WAIT_SHELF_IN_STATION)) else if (curJobStep.IsStep(EXECUTE_STEP.P6_WAIT_SHELF_IN_STATION))
......
...@@ -74,7 +74,7 @@ namespace DeviceLibrary ...@@ -74,7 +74,7 @@ namespace DeviceLibrary
bool rtn = false; bool rtn = false;
agv.Msg = runInfo; agv.Msg = runInfo;
CurTaskState = CommonVar.GetTakJobState(CurTaskID); CurTaskState = CommonVar.GetTakJobState(agv);
if (curJobStep.IsStep(EXECUTE_STEP.P1_NONE)) if (curJobStep.IsStep(EXECUTE_STEP.P1_NONE))
{ {
agv.RFID = RFID; agv.RFID = RFID;
...@@ -83,7 +83,7 @@ namespace DeviceLibrary ...@@ -83,7 +83,7 @@ namespace DeviceLibrary
msg += runInfo; msg += runInfo;
curJobStep.Msg = msg; curJobStep.Msg = msg;
CommonVar.MoveToNode(agv, TargetPlace); CommonVar.MoveToNode(agv, TargetPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
else if (curJobStep.IsStep(EXECUTE_STEP.P2_WAIT_REACH_PACKING_STATION)) else if (curJobStep.IsStep(EXECUTE_STEP.P2_WAIT_REACH_PACKING_STATION))
...@@ -136,7 +136,7 @@ namespace DeviceLibrary ...@@ -136,7 +136,7 @@ namespace DeviceLibrary
curJobStep.Msg = msg; curJobStep.Msg = msg;
CommonVar.DockToNode(agv, TargetPlace); CommonVar.DockToNode(agv, TargetPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
//else if (curJobStep.IsTimeOut(6000, out double timeOutTime)) //else if (curJobStep.IsTimeOut(6000, out double timeOutTime))
//{ //{
...@@ -154,9 +154,8 @@ namespace DeviceLibrary ...@@ -154,9 +154,8 @@ namespace DeviceLibrary
runInfo = "停靠包装仓完成,链条运行"; runInfo = "停靠包装仓完成,链条运行";
msg += runInfo; msg += runInfo;
curJobStep.Msg = msg; curJobStep.Msg = msg;
rtn = agv.AssignTask(SettingString.Enter);
rtn = MiR_API.Add_Mission_Fleet(agv, CommonVar.agvMission[SettingString.Enter]); UpdateJobTaskInfo(agv);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID);
} }
} }
else if (curJobStep.IsStep(EXECUTE_STEP.P6_WAIT_SHELF_IN_AGV)) else if (curJobStep.IsStep(EXECUTE_STEP.P6_WAIT_SHELF_IN_AGV))
...@@ -189,7 +188,7 @@ namespace DeviceLibrary ...@@ -189,7 +188,7 @@ namespace DeviceLibrary
agvPlace = agv.Place; agvPlace = agv.Place;
TargetPlace = SettingString.Standby; TargetPlace = SettingString.Standby;
CommonVar.MoveToNode(agv, TargetPlace); CommonVar.MoveToNode(agv, TargetPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
else//有锁定节点 else//有锁定节点
{ {
...@@ -200,7 +199,7 @@ namespace DeviceLibrary ...@@ -200,7 +199,7 @@ namespace DeviceLibrary
agvPlace = agv.Place; agvPlace = agv.Place;
TargetPlace = nodeName; TargetPlace = nodeName;
CommonVar.MoveToNode(agv, TargetPlace); CommonVar.MoveToNode(agv, TargetPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
} }
else//无锁定节点,去A2 else//无锁定节点,去A2
...@@ -213,7 +212,7 @@ namespace DeviceLibrary ...@@ -213,7 +212,7 @@ namespace DeviceLibrary
curJobStep.Msg = msg; curJobStep.Msg = msg;
PackingJobType.DelMark(mark); PackingJobType.DelMark(mark);
CommonVar.MoveToNode(agv, TargetPlace); CommonVar.MoveToNode(agv, TargetPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
} }
else else
...@@ -229,7 +228,7 @@ namespace DeviceLibrary ...@@ -229,7 +228,7 @@ namespace DeviceLibrary
agvPlace = agv.Place; agvPlace = agv.Place;
TargetPlace = CommonVar.nodeInfo[nodeIdx].Name; TargetPlace = CommonVar.nodeInfo[nodeIdx].Name;
CommonVar.MoveToNode(agv, TargetPlace); CommonVar.MoveToNode(agv, TargetPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
else //pack任务还有剩余,但目前包装仓还未生成任务,去待机位 else //pack任务还有剩余,但目前包装仓还未生成任务,去待机位
{ {
...@@ -240,7 +239,7 @@ namespace DeviceLibrary ...@@ -240,7 +239,7 @@ namespace DeviceLibrary
agvPlace = agv.Place; agvPlace = agv.Place;
TargetPlace = SettingString.Standby; TargetPlace = SettingString.Standby;
CommonVar.MoveToNode(agv, TargetPlace); CommonVar.MoveToNode(agv, TargetPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
} }
else//出库任务完成 else//出库任务完成
...@@ -262,7 +261,7 @@ namespace DeviceLibrary ...@@ -262,7 +261,7 @@ namespace DeviceLibrary
curJobStep.Msg = msg; curJobStep.Msg = msg;
PackingJobType.DelMark(mark); PackingJobType.DelMark(mark);
CommonVar.MoveToNode(agv, TargetPlace); CommonVar.MoveToNode(agv, TargetPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
} }
...@@ -290,7 +289,7 @@ namespace DeviceLibrary ...@@ -290,7 +289,7 @@ namespace DeviceLibrary
curJobStep.Msg = msg; curJobStep.Msg = msg;
CommonVar.DockToNode(agv, TargetPlace); CommonVar.DockToNode(agv, TargetPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
else if (curJobStep.IsTimeOut(6000, out double timeOutTime)) else if (curJobStep.IsTimeOut(6000, out double timeOutTime))
{ {
...@@ -308,9 +307,8 @@ namespace DeviceLibrary ...@@ -308,9 +307,8 @@ namespace DeviceLibrary
runInfo = "停靠包装仓完成,链条运行"; runInfo = "停靠包装仓完成,链条运行";
msg += runInfo; msg += runInfo;
curJobStep.Msg = msg; curJobStep.Msg = msg;
rtn = agv.AssignTask(SettingString.Leave);
rtn = MiR_API.Add_Mission_Fleet(agv, CommonVar.agvMission[SettingString.Leave]); UpdateJobTaskInfo(agv);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID);
} }
} }
else if (curJobStep.IsStep(EXECUTE_STEP.P11_WAIT_SHELF_IN_LINE)) else if (curJobStep.IsStep(EXECUTE_STEP.P11_WAIT_SHELF_IN_LINE))
...@@ -351,8 +349,8 @@ namespace DeviceLibrary ...@@ -351,8 +349,8 @@ namespace DeviceLibrary
msg += runInfo; msg += runInfo;
curJobStep.Msg = msg; curJobStep.Msg = msg;
rtn = MiR_API.Add_Mission_Fleet(agv, CommonVar.agvMission[SettingString.Leave]); rtn = agv.AssignTask(SettingString.Leave);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
//else if (curJobStep.IsTimeOut(6000, out double timeOutTime)) //else if (curJobStep.IsTimeOut(6000, out double timeOutTime))
//{ //{
...@@ -377,7 +375,7 @@ namespace DeviceLibrary ...@@ -377,7 +375,7 @@ namespace DeviceLibrary
TargetPlace = CommonVar.nodeInfo[nodeIdx].Name; TargetPlace = CommonVar.nodeInfo[nodeIdx].Name;
agvPlace = agv.Place; agvPlace = agv.Place;
CommonVar.MoveToNode(agv, TargetPlace); CommonVar.MoveToNode(agv, TargetPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
} }
} }
......
...@@ -89,7 +89,7 @@ namespace DeviceLibrary ...@@ -89,7 +89,7 @@ namespace DeviceLibrary
bool rtn = false; bool rtn = false;
agv.Msg = runInfo; agv.Msg = runInfo;
CurTaskState = CommonVar.GetTakJobState(CurTaskID); CurTaskState = CommonVar.GetTakJobState(agv);
if (curJobStep.IsStep(EXECUTE_STEP.R1_NONE)) if (curJobStep.IsStep(EXECUTE_STEP.R1_NONE))
{ {
if(hasLoad) if(hasLoad)
...@@ -101,7 +101,7 @@ namespace DeviceLibrary ...@@ -101,7 +101,7 @@ namespace DeviceLibrary
msg += runInfo; msg += runInfo;
curJobStep.Msg = msg; curJobStep.Msg = msg;
CommonVar.MoveToNode(agv, RecycleStation); CommonVar.MoveToNode(agv, RecycleStation);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
else else
{ {
...@@ -111,7 +111,7 @@ namespace DeviceLibrary ...@@ -111,7 +111,7 @@ namespace DeviceLibrary
curJobStep.Msg = msg; curJobStep.Msg = msg;
CommonVar.MoveToNode(agv, SettingString.Standby); CommonVar.MoveToNode(agv, SettingString.Standby);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
} }
else//车上无料 else//车上无料
...@@ -123,7 +123,7 @@ namespace DeviceLibrary ...@@ -123,7 +123,7 @@ namespace DeviceLibrary
msg += runInfo; msg += runInfo;
curJobStep.Msg = msg; curJobStep.Msg = msg;
CommonVar.MoveToNode(agv, TargetPlace); CommonVar.MoveToNode(agv, TargetPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
else else
{ {
...@@ -133,7 +133,7 @@ namespace DeviceLibrary ...@@ -133,7 +133,7 @@ namespace DeviceLibrary
curJobStep.Msg = msg; curJobStep.Msg = msg;
CommonVar.MoveToNode(agv, TargetPlace); CommonVar.MoveToNode(agv, TargetPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
} }
} }
...@@ -157,9 +157,8 @@ namespace DeviceLibrary ...@@ -157,9 +157,8 @@ namespace DeviceLibrary
runInfo = "线体"+TargetPlace+"允许出料,链条运行"; runInfo = "线体"+TargetPlace+"允许出料,链条运行";
msg += runInfo; msg += runInfo;
curJobStep.Msg = msg; curJobStep.Msg = msg;
rtn = agv.AssignTask(SettingString.Enter);
rtn = MiR_API.Add_Mission_Fleet(agv, CommonVar.agvMission[SettingString.Enter]); UpdateJobTaskInfo(agv);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID);
} }
//else if(curJobStep.IsTimeOut(6000,out double timeOutTime)) //else if(curJobStep.IsTimeOut(6000,out double timeOutTime))
//{ //{
...@@ -180,7 +179,7 @@ namespace DeviceLibrary ...@@ -180,7 +179,7 @@ namespace DeviceLibrary
msg += runInfo; msg += runInfo;
curJobStep.Msg = msg; curJobStep.Msg = msg;
CommonVar.MoveToNode(agv, RecycleStation); CommonVar.MoveToNode(agv, RecycleStation);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
else else
{ {
...@@ -190,7 +189,7 @@ namespace DeviceLibrary ...@@ -190,7 +189,7 @@ namespace DeviceLibrary
curJobStep.Msg = msg; curJobStep.Msg = msg;
CommonVar.MoveToNode(agv, SettingString.Standby); CommonVar.MoveToNode(agv, SettingString.Standby);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
} }
} }
...@@ -214,9 +213,8 @@ namespace DeviceLibrary ...@@ -214,9 +213,8 @@ namespace DeviceLibrary
runInfo = "收到线体入料请求,链条运行"; runInfo = "收到线体入料请求,链条运行";
msg += runInfo; msg += runInfo;
curJobStep.Msg = msg; curJobStep.Msg = msg;
rtn = agv.AssignTask(SettingString.Leave);
rtn = MiR_API.Add_Mission_Fleet(agv, CommonVar.agvMission[SettingString.Leave]); UpdateJobTaskInfo(agv);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID);
} }
//else if (curJobStep.IsTimeOut(6000, out double timeOutTime)) //else if (curJobStep.IsTimeOut(6000, out double timeOutTime))
//{ //{
...@@ -251,7 +249,7 @@ namespace DeviceLibrary ...@@ -251,7 +249,7 @@ namespace DeviceLibrary
msg += runInfo; msg += runInfo;
curJobStep.Msg = msg; curJobStep.Msg = msg;
CommonVar.MoveToNode(agv, RecycleStation); CommonVar.MoveToNode(agv, RecycleStation);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
} }
} }
...@@ -278,7 +276,7 @@ namespace DeviceLibrary ...@@ -278,7 +276,7 @@ namespace DeviceLibrary
{ {
if(shelfType.Equals(ShelfType.ReelString)) if(shelfType.Equals(ShelfType.ReelString))
{ {
int i = CommonVar.nodeInfo.FindIndex(s => s.Name.Equals(SettingString.C7) && s.StateEquals(eNodeStatus.NeedEnter)); int i = CommonVar.nodeInfo.FindIndex(s => s.Name.Equals(SettingString.T4_1) && s.StateEquals(eNodeStatus.NeedEnter));
if(i==-1) i = CommonVar.nodeInfo.FindIndex(s => s.Name.Equals(SettingString.D1) && s.StateEquals(eNodeStatus.NeedEnter)); if(i==-1) i = CommonVar.nodeInfo.FindIndex(s => s.Name.Equals(SettingString.D1) && s.StateEquals(eNodeStatus.NeedEnter));
if (i == -1) i = CommonVar.nodeInfo.FindIndex(s => s.Name.Equals(SettingString.A2) && s.StateEquals(eNodeStatus.NeedEnter)); if (i == -1) i = CommonVar.nodeInfo.FindIndex(s => s.Name.Equals(SettingString.A2) && s.StateEquals(eNodeStatus.NeedEnter));
if(i>-1) if(i>-1)
......
...@@ -82,26 +82,26 @@ namespace DeviceLibrary ...@@ -82,26 +82,26 @@ namespace DeviceLibrary
bool rtn = false; bool rtn = false;
agv.Msg = GetShowInfo(); agv.Msg = GetShowInfo();
CurTaskState = CommonVar.GetTakJobState(CurTaskID); CurTaskState = CommonVar.GetTakJobState(agv);
if (curJobStep.IsStep(EXECUTE_STEP.P1_NONE)) if (curJobStep.IsStep(EXECUTE_STEP.P1_NONE))
{ {
if (!agvPlace.StartsWith(SettingString.C4_Name_Prefix) && TargetPlace.StartsWith(SettingString.C4_Name_Prefix))//D C if (!agvPlace.StartsWith(SettingString.C4_Name_Prefix) && TargetPlace.StartsWith(SettingString.C4_Name_Prefix))//D C
{ {
curJobStep.ToNextStep(EXECUTE_STEP.P3_WAIT_REACH_4C_DOOR); curJobStep.ToNextStep(EXECUTE_STEP.P3_WAIT_REACH_4C_DOOR);
runInfo = "收到任务,在4D车间,向" + TargetPlace + "运行,先过门"; runInfo = "收到任务,在3D车间,向" + TargetPlace + "运行,先过门";
msg += runInfo; msg += runInfo;
curJobStep.Msg = msg; curJobStep.Msg = msg;
CommonVar.DoorMission(agv, SettingString.DoorDToC); CommonVar.DoorMission(agv, SettingString.DoorDToC);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
else if (agvPlace.StartsWith(SettingString.C4_Name_Prefix) && !TargetPlace.StartsWith(SettingString.C4_Name_Prefix))//C D else if (agvPlace.StartsWith(SettingString.C4_Name_Prefix) && !TargetPlace.StartsWith(SettingString.C4_Name_Prefix))//C D
{ {
curJobStep.ToNextStep(EXECUTE_STEP.P3_WAIT_REACH_4D_DOOR); curJobStep.ToNextStep(EXECUTE_STEP.P3_WAIT_REACH_4D_DOOR);
runInfo = "收到任务,在4C车间,向" + TargetPlace + "运行,先过门"; runInfo = "收到任务,在3C车间,向" + TargetPlace + "运行,先过门";
msg += runInfo; msg += runInfo;
curJobStep.Msg = msg; curJobStep.Msg = msg;
CommonVar.DoorMission(agv, SettingString.DoorCToD); CommonVar.DoorMission(agv, SettingString.DoorCToD);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
else//DD CC else//DD CC
{ {
...@@ -110,7 +110,7 @@ namespace DeviceLibrary ...@@ -110,7 +110,7 @@ namespace DeviceLibrary
msg += runInfo; msg += runInfo;
curJobStep.Msg = msg; curJobStep.Msg = msg;
CommonVar.MoveToNode(agv, TargetPlace); CommonVar.MoveToNode(agv, TargetPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
} }
...@@ -130,12 +130,12 @@ namespace DeviceLibrary ...@@ -130,12 +130,12 @@ namespace DeviceLibrary
if (CommonVar.CheckTaskMoveFinished(agv, SettingString.DoorCToD, CurTaskState)) if (CommonVar.CheckTaskMoveFinished(agv, SettingString.DoorCToD, CurTaskState))
{ {
curJobStep.ToNextStep(EXECUTE_STEP.P2_WAIT_REACH_STATION); curJobStep.ToNextStep(EXECUTE_STEP.P2_WAIT_REACH_STATION);
runInfo = "到达4D门,去料架处" + TargetPlace; runInfo = "到达3D门,去料架处" + TargetPlace;
msg += runInfo; msg += runInfo;
curJobStep.Msg = msg; curJobStep.Msg = msg;
CommonVar.MoveToNode(agv, TargetPlace); CommonVar.MoveToNode(agv, TargetPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
} }
else if (curJobStep.IsStep(EXECUTE_STEP.P3_WAIT_REACH_4C_DOOR)) else if (curJobStep.IsStep(EXECUTE_STEP.P3_WAIT_REACH_4C_DOOR))
...@@ -143,28 +143,27 @@ namespace DeviceLibrary ...@@ -143,28 +143,27 @@ namespace DeviceLibrary
if (CommonVar.CheckTaskMoveFinished(agv, SettingString.DoorDToC, CurTaskState)) if (CommonVar.CheckTaskMoveFinished(agv, SettingString.DoorDToC, CurTaskState))
{ {
curJobStep.ToNextStep(EXECUTE_STEP.P2_WAIT_REACH_STATION); curJobStep.ToNextStep(EXECUTE_STEP.P2_WAIT_REACH_STATION);
runInfo = "到达4C门,去料架处" + TargetPlace; runInfo = "到达3C门,去料架处" + TargetPlace;
msg += runInfo; msg += runInfo;
curJobStep.Msg = msg; curJobStep.Msg = msg;
CommonVar.MoveToNode(agv, TargetPlace); CommonVar.MoveToNode(agv, TargetPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
} }
else if (curJobStep.IsStep(EXECUTE_STEP.P4_WAIT_STATION_RESPONSE)) else if (curJobStep.IsStep(EXECUTE_STEP.P4_WAIT_STATION_RESPONSE))
{ {
int i = CommonVar.nodeInfo.FindIndex(s => s.Name.Equals(TargetPlace) && s.StateEquals(eNodeStatus.MayEnter)); // int i = CommonVar.nodeInfo.FindIndex(s => s.Name.Equals(TargetPlace) && s.StateEquals(eNodeStatus.MayEnter));
if (i > -1) // if (i > -1)
{ {
curJobStep.ToNextStep(EXECUTE_STEP.P5_WAIT_SHELF_IN_STATION); curJobStep.ToNextStep(EXECUTE_STEP.P5_WAIT_SHELF_IN_STATION);
runInfo = "收到线体允许进料信号,链条运行"; runInfo = "收到线体允许进料信号,链条运行";
msg += runInfo; msg += runInfo;
curJobStep.Msg = msg; curJobStep.Msg = msg;
rtn = agv.AssignTask(SettingString.Leave);
rtn = MiR_API.Add_Mission_Fleet(agv, CommonVar.agvMission[SettingString.Leave]); UpdateJobTaskInfo(agv);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID);
} }
else if (curJobStep.IsTimeOut(15000, out double timeOutTime)) if (curJobStep.IsTimeOut(15000, out double timeOutTime))
{ {
curJobStep.ToNextStep(EXECUTE_STEP.P2_WAIT_REACH_STATION); curJobStep.ToNextStep(EXECUTE_STEP.P2_WAIT_REACH_STATION);
runInfo = string.Format("线体[{0}]允许进料信号[{1}]超时{2}秒,重发进料请求", TargetPlace, eNodeStatus.MayEnter, timeOutTime.ToString("f2")); runInfo = string.Format("线体[{0}]允许进料信号[{1}]超时{2}秒,重发进料请求", TargetPlace, eNodeStatus.MayEnter, timeOutTime.ToString("f2"));
...@@ -177,12 +176,12 @@ namespace DeviceLibrary ...@@ -177,12 +176,12 @@ namespace DeviceLibrary
if (CommonVar.CheckEnterOrLeaveFinished(agv, SettingString.Leave, CurTaskState)) if (CommonVar.CheckEnterOrLeaveFinished(agv, SettingString.Leave, CurTaskState))
{ {
CommonVar.server.CloseDoor(TargetPlace); CommonVar.server.CloseDoor(TargetPlace);
if (IsPlace(SettingString.G23_In) && FindReturnShelf(agv)) if (IsPlace(SettingString.D23_In) && FindReturnShelf(agv))
{ {
runInfo = "料架进入" + TargetPlace + "完成,去退料线出口取一个料串回点料机"; runInfo = "料架进入" + TargetPlace + "完成,去退料线出口取一个料串回点料机";
msg += runInfo; msg += runInfo;
curJobStep.Msg = msg; curJobStep.Msg = msg;
return new GetShelfJob(TargetPlace, SettingString.G24_Out, "B#", true); return new GetShelfJob(TargetPlace, SettingString.D24_Out, "B#", true);
} }
else else
{ {
...@@ -233,19 +232,19 @@ namespace DeviceLibrary ...@@ -233,19 +232,19 @@ namespace DeviceLibrary
private bool FindReturnShelf(Agv_Info currentAgv) private bool FindReturnShelf(Agv_Info currentAgv)
{ {
string rfid = ""; string rfid = "";
if (ReelStringJobType.FindNeedLeaveMission(currentAgv, SettingString.G24_Out, out rfid)) if (ReelStringJobType.FindNeedLeaveMission(currentAgv, SettingString.D24_Out, out rfid))
{ {
if (ReelStringJobType.FindNeedEnterMission(currentAgv, SettingString.D3)) if (ReelStringJobType.FindNeedEnterMission(currentAgv, SettingString.D3))
{ {
LogUtil.info(string.Format("{0} 在退料线生成任务(D3需要满料串,G24出满料串):Place={1},rfid={2}", currentAgv.Name, SettingString.D3, rfid)); LogUtil.info(string.Format("{0} 在退料线生成任务(D3需要满料串,D24出满料串):Place={1},rfid={2}", currentAgv.Name, SettingString.D3, rfid));
return true; return true;
} }
} }
if (ReelStringJobType.FindNeedLeaveMission(currentAgv, SettingString.D4, out rfid)) if (ReelStringJobType.FindNeedLeaveMission(currentAgv, SettingString.D4, out rfid))
{ {
if (ReelStringJobType.FindNeedEnterMission(currentAgv, SettingString.G23_In)) if (ReelStringJobType.FindNeedEnterMission(currentAgv, SettingString.D23_In))
{ {
LogUtil.info(string.Format("{0} 在退料线生成任务(D4需要满料串,G24出满料串):Place={1},rfid={2}", currentAgv.Name, SettingString.D4, rfid)); LogUtil.info(string.Format("{0} 在退料线生成任务(D4需要满料串,D24出满料串):Place={1},rfid={2}", currentAgv.Name, SettingString.D4, rfid));
return true; return true;
} }
} }
......
...@@ -43,7 +43,7 @@ namespace DeviceLibrary ...@@ -43,7 +43,7 @@ namespace DeviceLibrary
bool rtn = false; bool rtn = false;
agv.Msg = ""; agv.Msg = "";
CurTaskState = CommonVar.GetTakJobState(CurTaskID); CurTaskState = CommonVar.GetTakJobState(agv);
if (curJobStep.IsStep(EXECUTE_STEP.NONE)) if (curJobStep.IsStep(EXECUTE_STEP.NONE))
{ {
if (agvPlace.Equals(SettingString.Standby))//在待机位不操作 if (agvPlace.Equals(SettingString.Standby))//在待机位不操作
...@@ -61,7 +61,7 @@ namespace DeviceLibrary ...@@ -61,7 +61,7 @@ namespace DeviceLibrary
msg += runInfo; msg += runInfo;
curJobStep.Msg = msg; curJobStep.Msg = msg;
CommonVar.DoorMission(agv, SettingString.DoorCToD); CommonVar.DoorMission(agv, SettingString.DoorCToD);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
else else
{ {
...@@ -71,7 +71,7 @@ namespace DeviceLibrary ...@@ -71,7 +71,7 @@ namespace DeviceLibrary
curJobStep.Msg = msg; curJobStep.Msg = msg;
CommonVar.MoveToNode(agv, SettingString.Standby); CommonVar.MoveToNode(agv, SettingString.Standby);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
} }
...@@ -86,7 +86,7 @@ namespace DeviceLibrary ...@@ -86,7 +86,7 @@ namespace DeviceLibrary
curJobStep.Msg = msg; curJobStep.Msg = msg;
CommonVar.MoveToNode(agv, SettingString.Standby); CommonVar.MoveToNode(agv, SettingString.Standby);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv);
} }
} }
else if (curJobStep.IsStep(EXECUTE_STEP.WAIT_REACH_STANDBY)) else if (curJobStep.IsStep(EXECUTE_STEP.WAIT_REACH_STANDBY))
......
...@@ -23,31 +23,31 @@ namespace DeviceLibrary ...@@ -23,31 +23,31 @@ namespace DeviceLibrary
return null; return null;
string rfid=""; string rfid="";
//查找退料线出满料架且点料机需要架子 //查找退料线出满料架且点料机需要架子
if (ReelStringJobType.FindNeedLeave(currentAgv, SettingString.G24_Out,out rfid)) if (ReelStringJobType.FindNeedLeave(currentAgv, SettingString.D24_Out,out rfid))
{ {
if (ReelStringJobType.FindNeedEnter(currentAgv, SettingString.D3) ) if (ReelStringJobType.FindNeedEnter(currentAgv, SettingString.D3) )
{ {
int idx = CommonVar.agvInfo.FindIndex(s => !s.IP.Equals(currentAgv.IP) && s.CurJob != null && s.CurJob is SendShelfJob && (((SendShelfJob)s.CurJob).TargetPlace.Equals(SettingString.G23_In))); int idx = CommonVar.agvInfo.FindIndex(s => !s.IP.Equals(currentAgv.IP) && s.CurJob != null && s.CurJob is SendShelfJob && (((SendShelfJob)s.CurJob).TargetPlace.Equals(SettingString.D23_In)));
if (idx == -1) idx = CommonVar.agvInfo.FindIndex(s => !s.IP.Equals(currentAgv.IP) && s.CurJob != null && s.CurJob is SendShelfJob && (((SendShelfJob)s.CurJob).TargetPlace.Equals(SettingString.D3))); if (idx == -1) idx = CommonVar.agvInfo.FindIndex(s => !s.IP.Equals(currentAgv.IP) && s.CurJob != null && s.CurJob is SendShelfJob && (((SendShelfJob)s.CurJob).TargetPlace.Equals(SettingString.D3)));
if (idx == -1) idx = CommonVar.agvInfo.FindIndex(s => !s.IP.Equals(currentAgv.IP) && s.CurJob != null && s.CurJob is GetShelfJob && (((GetShelfJob)s.CurJob).TargetPlace.Equals(SettingString.D3))); if (idx == -1) idx = CommonVar.agvInfo.FindIndex(s => !s.IP.Equals(currentAgv.IP) && s.CurJob != null && s.CurJob is GetShelfJob && (((GetShelfJob)s.CurJob).TargetPlace.Equals(SettingString.D3)));
if (idx==-1) idx = CommonVar.agvInfo.FindIndex(s => !s.IP.Equals(currentAgv.IP) && s.CurJob != null && s.CurJob is GetShelfJob && (((GetShelfJob)s.CurJob).TargetPlace.Equals(SettingString.G24_Out))); if (idx==-1) idx = CommonVar.agvInfo.FindIndex(s => !s.IP.Equals(currentAgv.IP) && s.CurJob != null && s.CurJob is GetShelfJob && (((GetShelfJob)s.CurJob).TargetPlace.Equals(SettingString.D24_Out)));
if (idx == -1) if (idx == -1)
{ {
LogUtil.info(string.Format("{0} 退料任务生成(D3需要满料串,G24出满料串):Place={1},rfid={2}", currentAgv.Name, SettingString.D3, rfid)); LogUtil.info(string.Format("{0} 退料任务生成(D3需要满料串,D24出满料串):Place={1},rfid={2}", currentAgv.Name, SettingString.D3, rfid));
return new GetShelfJob(currentAgv.Place, SettingString.G24_Out, "B#",true); return new GetShelfJob(currentAgv.Place, SettingString.D24_Out, "B#",true);
} }
} }
if (ReelStringJobType.FindNeedEnter(currentAgv, SettingString.D4)) if (ReelStringJobType.FindNeedEnter(currentAgv, SettingString.D4))
{ {
int idx = CommonVar.agvInfo.FindIndex(s => !s.IP.Equals(currentAgv.IP) && s.CurJob != null && s.CurJob is SendShelfJob && (((SendShelfJob)s.CurJob).TargetPlace.Equals(SettingString.G23_In))); int idx = CommonVar.agvInfo.FindIndex(s => !s.IP.Equals(currentAgv.IP) && s.CurJob != null && s.CurJob is SendShelfJob && (((SendShelfJob)s.CurJob).TargetPlace.Equals(SettingString.D23_In)));
if (idx == -1) idx = CommonVar.agvInfo.FindIndex(s => !s.IP.Equals(currentAgv.IP) && s.CurJob != null && s.CurJob is SendShelfJob && (((SendShelfJob)s.CurJob).TargetPlace.Equals(SettingString.D4))); if (idx == -1) idx = CommonVar.agvInfo.FindIndex(s => !s.IP.Equals(currentAgv.IP) && s.CurJob != null && s.CurJob is SendShelfJob && (((SendShelfJob)s.CurJob).TargetPlace.Equals(SettingString.D4)));
if (idx == -1) idx = CommonVar.agvInfo.FindIndex(s => !s.IP.Equals(currentAgv.IP) && s.CurJob != null && s.CurJob is GetShelfJob && (((GetShelfJob)s.CurJob).TargetPlace.Equals(SettingString.D4))); if (idx == -1) idx = CommonVar.agvInfo.FindIndex(s => !s.IP.Equals(currentAgv.IP) && s.CurJob != null && s.CurJob is GetShelfJob && (((GetShelfJob)s.CurJob).TargetPlace.Equals(SettingString.D4)));
if (idx == -1) idx = CommonVar.agvInfo.FindIndex(s => !s.IP.Equals(currentAgv.IP) && s.CurJob != null && s.CurJob is GetShelfJob && (((GetShelfJob)s.CurJob).TargetPlace.Equals(SettingString.G24_Out))); if (idx == -1) idx = CommonVar.agvInfo.FindIndex(s => !s.IP.Equals(currentAgv.IP) && s.CurJob != null && s.CurJob is GetShelfJob && (((GetShelfJob)s.CurJob).TargetPlace.Equals(SettingString.D24_Out)));
if (idx == -1) if (idx == -1)
{ {
LogUtil.info(string.Format("{0} 退料任务生成(D4需要满料串,G24出满料串):Place={1},rfid={2}", currentAgv.Name, SettingString.D3, rfid)); LogUtil.info(string.Format("{0} 退料任务生成(D4需要满料串,D24出满料串):Place={1},rfid={2}", currentAgv.Name, SettingString.D3, rfid));
return new GetShelfJob(currentAgv.Place, SettingString.G24_Out, "B#",true); return new GetShelfJob(currentAgv.Place, SettingString.D24_Out, "B#",true);
} }
} }
...@@ -56,17 +56,17 @@ namespace DeviceLibrary ...@@ -56,17 +56,17 @@ namespace DeviceLibrary
////点料机出空架子 ////点料机出空架子
if (ReelStringJobType.FindNeedLeaveMission(currentAgv, SettingString.D3, out rfid)) if (ReelStringJobType.FindNeedLeaveMission(currentAgv, SettingString.D3, out rfid))
{ {
if (ReelStringJobType.FindNeedEnterMission(currentAgv, SettingString.G23_In)) if (ReelStringJobType.FindNeedEnterMission(currentAgv, SettingString.D23_In))
{ {
LogUtil.info(string.Format("{0} 退料任务生成(D3出空料串,G23需要空料串):Place={1},rfid={2}", currentAgv.Name, SettingString.D3, rfid)); LogUtil.info(string.Format("{0} 退料任务生成(D3出空料串,D23需要空料串):Place={1},rfid={2}", currentAgv.Name, SettingString.D3, rfid));
return new GetShelfJob(currentAgv.Place, SettingString.D3, "B#"); return new GetShelfJob(currentAgv.Place, SettingString.D3, "B#");
} }
} }
if (ReelStringJobType.FindNeedLeaveMission(currentAgv, SettingString.D4, out rfid)) if (ReelStringJobType.FindNeedLeaveMission(currentAgv, SettingString.D4, out rfid))
{ {
if (ReelStringJobType.FindNeedEnterMission(currentAgv, SettingString.G23_In)) if (ReelStringJobType.FindNeedEnterMission(currentAgv, SettingString.D23_In))
{ {
LogUtil.info(string.Format("{0} 退料任务生成(D4出空料串,G23需要空料串):Place={1},rfid={2}", currentAgv.Name, SettingString.D4, rfid)); LogUtil.info(string.Format("{0} 退料任务生成(D4出空料串,D23需要空料串):Place={1},rfid={2}", currentAgv.Name, SettingString.D4, rfid));
return new GetShelfJob(currentAgv.Place, SettingString.D4, "B#"); return new GetShelfJob(currentAgv.Place, SettingString.D4, "B#");
} }
} }
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!