Commit afe4d84f 张东亮

1222

1 个父辈 3fbe1f2e
...@@ -8,10 +8,11 @@ ...@@ -8,10 +8,11 @@
<OutputType>WinExe</OutputType> <OutputType>WinExe</OutputType>
<RootNamespace>AGV_3D_Line</RootNamespace> <RootNamespace>AGV_3D_Line</RootNamespace>
<AssemblyName>AGV-3D-Line</AssemblyName> <AssemblyName>AGV-3D-Line</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic> <Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>AnyCPU</PlatformTarget>
...@@ -75,11 +76,20 @@ ...@@ -75,11 +76,20 @@
<Compile Include="FrmMain.Designer.cs"> <Compile Include="FrmMain.Designer.cs">
<DependentUpon>FrmMain.cs</DependentUpon> <DependentUpon>FrmMain.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Manual.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Manual.designer.cs">
<DependentUpon>Manual.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" /> <Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="FrmMain.resx"> <EmbeddedResource Include="FrmMain.resx">
<DependentUpon>FrmMain.cs</DependentUpon> <DependentUpon>FrmMain.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Manual.resx">
<DependentUpon>Manual.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx"> <EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator> <Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput> <LastGenOutput>Resources.Designer.cs</LastGenOutput>
...@@ -107,6 +117,19 @@ ...@@ -107,6 +117,19 @@
<ItemGroup> <ItemGroup>
<Content Include="line.ico" /> <Content Include="line.ico" />
</ItemGroup> </ItemGroup>
<ItemGroup /> <ItemGroup>
<ProjectReference Include="..\AGV_UI\AGV_UI.csproj">
<Project>{c6d2fc09-46f7-4ec5-a877-15ea06342e4f}</Project>
<Name>AGV_UI</Name>
</ProjectReference>
<ProjectReference Include="..\Common\Common.csproj">
<Project>{bafeafe6-04e2-48ee-8845-bfc7ea3e3c21}</Project>
<Name>Common</Name>
</ProjectReference>
<ProjectReference Include="..\DeviceLibrary\DeviceLibrary.csproj">
<Project>{f9619f07-15f1-4e59-a383-3871952bbb79}</Project>
<Name>DeviceLibrary</Name>
</ProjectReference>
</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
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8"?>
<configuration> <configuration>
<configSections> <configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections> </configSections>
<startup> <startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/>
</startup> </startup>
<log4net> <log4net>
<appender name="AgvServer" type="log4net.Appender.RollingFileAppender"> <appender name="AgvServer" type="log4net.Appender.RollingFileAppender">
...@@ -21,17 +21,17 @@ ...@@ -21,17 +21,17 @@
<file value="logs/UnlockInfo.log"/> <file value="logs/UnlockInfo.log"/>
<param name="Encoding" value="UTF-8"/> <param name="Encoding" value="UTF-8"/>
<appendToFile value="true"/> <appendToFile value="true"/>
<param name="MaxSizeRollBackups" value="10" /> <param name="MaxSizeRollBackups" value="10"/>
<!-- 切割最多文件数 --> <!-- 切割最多文件数 -->
<param name="MaximumFileSize" value="100MB" /> <param name="MaximumFileSize" value="100MB"/>
<!-- 每个文件的大小 --> <!-- 每个文件的大小 -->
<param name="RollingStyle" value="Size" /> <param name="RollingStyle" value="Size"/>
<param name="StaticLogFileName" value="true" /> <param name="StaticLogFileName" value="true"/>
<layout type="log4net.Layout.PatternLayout"> <layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%date]%-5p %m%n"/> <conversionPattern value="[%date]%-5p %m%n"/>
</layout> </layout>
</appender> </appender>
<logger name ="LineWebService"> <logger name="LineWebService">
<level value="Info"/> <level value="Info"/>
<appender-ref ref="LineWebService"/> <appender-ref ref="LineWebService"/>
</logger> </logger>
...@@ -41,14 +41,14 @@ ...@@ -41,14 +41,14 @@
</root> </root>
</log4net> </log4net>
<appSettings> <appSettings>
<add key="ITS" value="http://10.85.17.233/ESMTCommonInterface/CommonService.asmx/VMIGetBoxDestInfo?boxRFID=" /> <add key="ITS" value="http://10.85.17.233/ESMTCommonInterface/CommonService.asmx/VMIGetBoxDestInfo?boxRFID="/>
<add key="WebService" value="http://127.0.0.1/BenQMIR/Webservice/AGVService.asmx/" /> <add key="WebService" value="http://127.0.0.1/BenQMIR/Webservice/AGVService.asmx/"/>
<add key="http.server" value="http://10.85.199.25/myproject/" /> <add key="http.server" value="http://10.85.199.25/myproject/"/>
<add key="FLEET" value="10.85.199.3" /> <add key="FLEET" value="10.85.199.3"/>
<add key="AutoCharge" value="True" /> <add key="AutoCharge" value="True"/>
<add key="ChargeWait" value="1" /> <add key="ChargeWait" value="1"/>
<add key="ChargeThreshold" value="20,90" /> <add key="ChargeThreshold" value="20,90"/>
<add key="IP_4D_Light" value="10.85.196.40:8088" /> <add key="IP_4D_Light" value="10.85.196.40:8088"/>
<add key="IP_4C_Light" value="10.85.197.40:8088" /> <add key="IP_4C_Light" value="10.85.197.40:8088"/>
</appSettings> </appSettings>
</configuration> </configuration>
...@@ -117,39 +117,6 @@ ...@@ -117,39 +117,6 @@
<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="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column4.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column14.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column21.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column3.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column18.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column23.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column13.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column19.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column11.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column6.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="Column6.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
...@@ -174,6 +141,22 @@ ...@@ -174,6 +141,22 @@
<metadata name="Column16.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="Column16.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<data name="label12.Text" xml:space="preserve">
<value>说明:
·小车/任务状态:
Wait=已发送任务,还未获取到最新状态
Executing=正在执行任务
None=空闲状态
Done=任务完成
Aborted=任务中止
Unknown=软件获取小车状态失败
·获取接驳台RFID:获取指定产线上的料架RFID信息
·物料状态上报:上报料车的产线信息
·清除接驳台RFID:清理指定产线的RFID信息
·清理料架的缓存信息:输入RFID,清除RFID的缓存信息,使料架可以复用
</value>
</data>
<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="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
......
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using DeviceLibrary;
using Common;
namespace AGVControl
{
public partial class Manual : Form
{
public Manual(Agv_Info agv)
{
InitializeComponent();
Agv = agv;
chkBxAuto.Checked = agv.IsUse;
btnReSendTask.Enabled = agv.IsUse;
btnAssignTask.Enabled = !agv.IsUse;
}
Agv_Info Agv;
private bool isIni = false;
private void Manual_Load(object sender, EventArgs e)
{
lblInfo.Text = string.Format("[{0}]", Agv.IP);
foreach (Mission mission in MissionSys.Missions)
{
cmbBxMission.Items.Add(mission.AliceName);
}
cmbBxMission.SelectedIndex = 0;
isIni = true;
}
private void chkBxAuto_CheckedChanged(object sender, EventArgs e)
{
if (!isIni) return;
this.Invoke(new Action(() =>
{
btnReSendTask.Enabled = chkBxAuto.Checked;
btnAssignTask.Enabled = !chkBxAuto.Checked;
Agv.IsUse = chkBxAuto.Checked;
if (!chkBxAuto.Checked)
{
Agv.CurJob = null;
//AGVManager.Standby.DelOccupyInfo(Agv);
AGVManager.Charge.DelOccupyInfo(Agv);
//添加Init任务
MissionSys.AssignMission(Agv, SettingString.Init);
if (Agv.Place.Equals(SettingString.Standby) || Agv.Place.Equals(SettingString.AutoCharge))
Agv.Place = "";
}
else
{
if (Agv.IsExistShelf)
{
LogUtil.error(string.Format("{0} 车上有负载,无法开启自动模式,请先清空小车负载!", Agv.Name));
return;
}
Agv.CurJob = null;
MiR_API.Del_Mission_Fleet(Agv, Agv.CurTaskID.ToString());
MiR_API.Del_Mission(Agv);
Agv.RFID = "";
}
}));
}
private void btnReSendTask_Click(object sender, EventArgs e)
{
if (Agv.IsCon)
{
if (MessageBox.Show("确定对小车重发任务?", Agv.Name, MessageBoxButtons.YesNo) == DialogResult.No)
return;
Agv.Resend();
LogUtil.info(string.Format("{0} 手动重发任务", Agv.Name));
}
}
private void btnReady_Click(object sender, EventArgs e)
{
if (Agv.IsCon)
{
MiR_API.State_Ready(Agv);
LogUtil.info(string.Format("{0} 手动点击运行", Agv.Name));
}
}
private void btnPause_Click(object sender, EventArgs e)
{
if (Agv.IsCon)
{
MiR_API.State_Pause(Agv);
LogUtil.info(string.Format("{0} 手动点击暂停", Agv.Name));
}
}
private void btnClearErr_Click(object sender, EventArgs e)
{
if (Agv.IsCon)
{
MiR_API.Clear_Error(Agv);
LogUtil.info(string.Format("{0} 手动点击清除按钮", Agv.Name));
}
}
private void btnAssignTask_Click(object sender, EventArgs e)
{
if (Agv.IsCon)
{
//Agv.AssignTask(CommonVar.showNameMissionName[cmbBxMission.SelectedItem.ToString()]);
LogUtil.info(string.Format("{0} 手动发任务 {1}", Agv.Name, cmbBxMission.SelectedItem.ToString()));
}
}
private void btnExit_Click(object sender, EventArgs e)
{
Close();
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAMAQAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAD/J75P/ye9d/8nvXf/J713/ye9d/8nvXf/J713/ye9d/8nvXf/J713/ye9d/8n
vXf/J713/ye+TgAAAAD/LKwu/yyuaAAAAAAAAAAAAAAAAAAAAAD/LK1d/y2ud/8trnf/LK9cAAAAAAAA
AAAAAAAAAAAAAP8ur2n/LbAt/y2lEf8zn6D/M6Cm/zOfiP8zn4j/M5+I/zWiPwAAAAAAAAAA/zWiP/8z
n4j/M5+I/zOfiP8zoKb/M5+g/y2lEQAAAAD/OJNA/zeUcP85kqb/OJKI/ziSiP84koj/OJKI/ziSiP84
koj/OJKI/ziSiP85kqb/N5Rw/ziTQAAAAAAAAAAA/0CDQP9AhHD/QINAAAAAAAAAAAD/P4FB/0CDkP9A
grT/QINn/0OFFwAAAAD/QINA/0CEcP9Ag0AAAAAAAAAAAP9IdED/R3Rw/0h0QAAAAAAAAAAA/0Z2kf9F
dTD/QnAy/0V1Vf9FdHIAAAAA/0h0QP9HdHD/SHRAAAAAAAAAAAD/TGhA/0tmcP9MaEAAAAAA/01nav9N
aEz/Y3qx/3mM6f9LZDP/TGe1AAAAAP9MaED/S2Zw/0xoQAAAAAAAAAAA/1RYQP9UV3D/VFhAAAAAAP9R
Vy//Ulif/2lfa/9rYbX/UFUw/1NakQAAAAD/VFhA/1RXcP9UWEAAAAAAAAAAAP9YTED/V0tw/1hMQAAA
AAD/gIAC/1lJp/9YS53/V0lJ/1dKlf9XSUYAAAAA/1hMQP9XS3D/WExAAAAAAAAAAAD/YDxA/106bv9d
PkIAAAAAAAAAAAAAAAD/Xj4x/188bgAAAAAAAAAAAAAAAP9dPkL/XTpu/2A8QAAAAAAAAAAA/2IrL/9l
LXL/ZC94/2MviP9jL4j/Yy+I/2MviP9jL4j/Yy+I/2MviP9jL4j/ZS13/2Utcv9kLC4AAAAAAAAAAAAA
AAD/bCFc/2sgiP9rIIj/ayCI/2sgiP9rIIj/ayCI/2sgiP9rIIj/ayCI/2sgiP9sH1oAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA//8AAP//AAD//wAA//8AAIPBAADgBwAA/n8AAP3/AAD+XwAA/V8AAPy/AAD//wAA8A8AAOAH
AAD//wAA//8AAA==
</value>
</data>
</root>
\ No newline at end of file \ No newline at end of file
using BLL; using log4net.Config;
using log4net.Config;
using log4net.Util.TypeConverters; using log4net.Util.TypeConverters;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using Common;
using System.Windows.Forms; using System.Windows.Forms;
using DeviceLibrary;
namespace AGVControl namespace AGVControl
{ {
static class Program static class Program
...@@ -35,107 +34,42 @@ namespace AGVControl ...@@ -35,107 +34,42 @@ namespace AGVControl
if (process.MainModule.FileName == current.MainModule.FileName) if (process.MainModule.FileName == current.MainModule.FileName)
{ {
//显示已打开的程序 //显示已打开的程序
API.ShowWindow(process.MainWindowHandle, API.SW_RESTORE); Window_API.ShowWindow(process.MainWindowHandle, Window_API.SW_RESTORE);
API.SwitchToThisWindow(process.MainWindowHandle, true); Window_API.SwitchToThisWindow(process.MainWindowHandle, true);
return; return;
} }
} }
//Common.logTextBox = new TextBox();
//Common.missionView = new DataGridView();
Common.log = log4net.LogManager.GetLogger("AgvServer");
Common.log.Info("=====程序开始=====");
ReadConfig();
//Common.ReadUnlockLineInfo();
Common.mir = new MiR_API(); LogUtil.info("=====程序开始=====");
Common.control = new BLL.Control(); AGVManager.Init();
AGVManager.control = new DeviceLibrary.Control();
//获取节点位置 //获取节点位置
Common.GetNodesPosition(); AGVManager.GetNodesPosition();
Common.control.Start(); AGVManager.control.Start();
Common.server = new AgvServer(); AGVManager.server = new AgvServer();
Common.server.Start(); AGVManager.server.Start();
Common.web = new WebService(); AGVManager.web = new WebService();
Common.web.Open(Common.appConfig.AppSettings.Settings["WebService"].Value); AGVManager.web.Open(AppConfigHelper.GetValue("WebService"));
Application.Run(new FrmMain()); Application.Run(new FrmMain());
Common.control.Stop(); AGVManager.control.Stop();
Common.server.Stop(); AGVManager.server.Stop();
Common.web.Close(); AGVManager.web.Close();
Common.log.Info("=====程序结束=====\r\n"); LogUtil.info("=====程序结束=====\r\n");
}
private static void ReadConfig()
{
string path;
string[] line;
string[] temp;
bool isuse;
string rfid = "";
Common.appConfig = System.Configuration.ConfigurationManager.OpenExeConfiguration(System.Configuration.ConfigurationUserLevel.None);
Common.agvInfo = new List<Agv_Info>();
path = Common.CONFIG_PATH + SettingString.FileName_AGV;
line = System.IO.File.ReadAllLines(path, Encoding.UTF8);
for (int i = 1; i < line.Length; i++)
{
temp = line[i].Split(',');
if (temp.Length != 5) continue;
//string val = Common.appConfig.AppSettings.Settings[temp[1]].Value;
bool.TryParse(Common.ReadIni(temp[1], SettingString.IsUse), out isuse); //Convert.ToBoolean(val.Split(',')[0]);
rfid = Common.ReadIni(temp[1], SettingString.RFID); //val.Split(',')[1];
Common.agvInfo.Add(new Agv_Info(temp[0], temp[1], temp[2], temp[3], temp[4], isuse, rfid));
}
Common.agvMission = new Dictionary<string, string>();
Common.showNameMissionName = new Dictionary<string, string>();
path = Common.CONFIG_PATH + SettingString.FileName_AgvMission;
line = System.IO.File.ReadAllLines(path, Encoding.UTF8);
for (int i = 1; i < line.Length; i++)
{
temp = line[i].Split(',');
if (temp.Length != 3) continue;
Common.agvMission.Add(temp[1], temp[2]);
Common.showNameMissionName.Add(temp[0], temp[1]);
} }
Common.nodeInfo = new List<ClientNode>();
path = Common.CONFIG_PATH + SettingString.FileName_AgvProductionLine;
line = System.IO.File.ReadAllLines(path, Encoding.GetEncoding("gb2312"));
for (int i = 1; i < line.Length; i++)
{
temp = line[i].Split(',');
if (temp.Length != 6) continue;
Boolean.TryParse(Common.ReadIni(temp[1], SettingString.IsUse), out bool isUse);
Int32.TryParse(Common.ReadIni(temp[1], SettingString.EmptyShelfCnt), out int emptyShelfCnt);
if (temp[1].Equals("A5"))
{
Common.nodeInfo.Add(new DoubleLineNodeFor4C(temp[1], temp[2], temp[3], temp[0], temp[4], temp[5], isUse, emptyShelfCnt));
}
else if (temp[1].Equals("A6"))
{
Common.nodeInfo.Add(new DoubleLineNodeFor4D(temp[1], temp[2], temp[3], temp[0], temp[4], temp[5], isUse, emptyShelfCnt));
}
else
Common.nodeInfo.Add(new ClientNode(temp[1], temp[2], temp[3], temp[0], temp[4], temp[5], isUse, emptyShelfCnt));
}
Common.chargeStatus = new ChargeStatus();
Common.itsHttp = Common.appConfig.AppSettings.Settings["ITS"].Value;
}
private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{ {
Common.log.Error("CurrentDomain_UnhandledException", (Exception)e.ExceptionObject); LogUtil.error("CurrentDomain_UnhandledException", (Exception)e.ExceptionObject);
} }
private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{ {
Common.log.Error("Application_ThreadException", e.Exception); LogUtil.error("Application_ThreadException", e.Exception);
} }
} }
......
...@@ -38,7 +38,7 @@ namespace AGV_UI ...@@ -38,7 +38,7 @@ namespace AGV_UI
{ {
foreach (string item in missionShow.Keys) foreach (string item in missionShow.Keys)
{ {
ShowInfo(item, item); ShowInfo(item, "");
} }
SetTitle(); SetTitle();
} }
......
...@@ -20,6 +20,7 @@ namespace Common ...@@ -20,6 +20,7 @@ namespace Common
public const string AutoCharge = "AutoCharge"; public const string AutoCharge = "AutoCharge";
public const string Leave = "Leave"; public const string Leave = "Leave";
public const string Enter = "Enter"; public const string Enter = "Enter";
public const string Init = "Init";
//任务状态 //任务状态
public const string Wait = "Wait"; public const string Wait = "Wait";
public const string Done = "Done"; public const string Done = "Done";
......
...@@ -24,33 +24,12 @@ namespace DeviceLibrary ...@@ -24,33 +24,12 @@ 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 ChargeManager() public ChargeManager()
{ {
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]);
...@@ -75,35 +54,11 @@ namespace DeviceLibrary ...@@ -75,35 +54,11 @@ namespace DeviceLibrary
private static object loc = new object(); private static object loc = new object();
/// <summary> /// <summary>
/// 清除占用信息
/// </summary>
/// <param name="chargeName"></param>
/// <returns></returns>
public bool DelOccupyInfo(string agvName)
{
lock(loc)
{
if (Station.Values.Contains(agvName))
{
foreach (string item in Station.Keys)
{
if (Station[item].Equals(agvName))
{
Station[item] = "";
return true;
}
}
}
}
return false;
}
/// <summary>
/// 清除agv占用信息 /// 清除agv占用信息
/// </summary> /// </summary>
/// <param name="chargeName"></param> /// <param name="chargeName"></param>
/// <returns></returns> /// <returns></returns>
public void DelOccupyInfoByAGV(Agv_Info agv) public void DelOccupyInfo(Agv_Info agv)
{ {
lock(loc) lock(loc)
{ {
...@@ -112,6 +67,7 @@ namespace DeviceLibrary ...@@ -112,6 +67,7 @@ namespace DeviceLibrary
if (Station[item].Equals(agv.Name)) if (Station[item].Equals(agv.Name))
{ {
Station[item] = ""; Station[item] = "";
agv.IsInCharge = false;
break; break;
} }
} }
...@@ -132,7 +88,11 @@ namespace DeviceLibrary ...@@ -132,7 +88,11 @@ namespace DeviceLibrary
} }
} }
/// <summary>
/// 检查充电桩是否有小车占用
/// </summary>
/// <param name="agv"></param>
/// <returns></returns>
public bool HasEmptyChargeStation(Agv_Info agv) public bool HasEmptyChargeStation(Agv_Info agv)
{ {
lock(loc) lock(loc)
...@@ -146,13 +106,6 @@ namespace DeviceLibrary ...@@ -146,13 +106,6 @@ namespace DeviceLibrary
return true; return true;
} }
} }
//foreach (string item in Station.Keys)
//{
// if (Station[item].Equals(""))
// {
// return true;
// }
//}
} }
return false; return false;
} }
...@@ -180,6 +133,8 @@ namespace DeviceLibrary ...@@ -180,6 +133,8 @@ namespace DeviceLibrary
log = string.Format("{0} {1}", agv.Name, chargeStation); log = string.Format("{0} {1}", agv.Name, chargeStation);
LogUtil.info(log); LogUtil.info(log);
MiR_API.State_Ready(agv); MiR_API.State_Ready(agv);
agv.IsInCharge = true;
return true;
} }
else else
{ {
...@@ -187,7 +142,7 @@ namespace DeviceLibrary ...@@ -187,7 +142,7 @@ namespace DeviceLibrary
log = string.Format("{0} {1}失败", agv.Name, chargeStation); log = string.Format("{0} {1}失败", agv.Name, chargeStation);
LogUtil.info(log); LogUtil.info(log);
} }
return true; return false;
} }
} }
......
任务别称,任务名称,任务GUID 任务名称,任务别名,目的地,目的地别名,任务GUID
移动到VMI出口,MoveA1,eec1eed4-2a04-11ea-9c84-94c691a734f1 MoveA5,移动到双层线入口,A5,双层线入口,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 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
1,5号车,10.85.199.67,Basic ZGlzdHJpYnV0b3I6NjJmMmYwZjFlZmYxMGQzMTUyYzk1ZjZmMDU5NjU3NmU0ODJiYjhlNDQ4MDY0MzNmNGNmOTI5NzkyODM0YjAxNA==,007615a5-2220-11ea-99f2-94c691a73b53
2,6号车,10.85.199.68,Basic ZGlzdHJpYnV0b3I6NjJmMmYwZjFlZmYxMGQzMTUyYzk1ZjZmMDU5NjU3NmU0ODJiYjhlNDQ4MDY0MzNmNGNmOTI5NzkyODM0YjAxNA==,007615a5-2220-11ea-99f2-94c691a73b53
3,7号车,10.85.199.69,Basic ZGlzdHJpYnV0b3I6NjJmMmYwZjFlZmYxMGQzMTUyYzk1ZjZmMDU5NjU3NmU0ODJiYjhlNDQ4MDY0MzNmNGNmOTI5NzkyODM0YjAxNA==,007615a5-2220-11ea-99f2-94c691a73b53
\ No newline at end of file \ No newline at end of file
节点名,别名,佳世达线名
A1,A1,VMI-A1出口
A2,A2,VMI-A2入口
A7,A7,分盘线-A7出口
A8,A8,分盘线-A8入口
T1_1,T1_1,入料T1入口
T1_2,T1_2,入料T1出口
T2_1,T2_1,入料T2入口
T2_2,T2_2,入料T2出口
T3_1,T3_1,入料T3入口
T3_2,T3_2,入料T3出口
T5_1,T5_1,入料T5入口
T5_2,T5_2,入料T5出口
T4_1,T4_1,紧急料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
产线名,节点名,IP,产线别名,位置名称,位置guid
A5,A5,10.85.162.40,双层线入口(A5),PA5,7ed952c3-b520-11ea-b6ad-00012998f5a0
A6,A6,10.85.162.40,双层线出(A6),PA6,929eb1c2-b520-11ea-b6ad-00012998f5a0
D3,D3,10.85.199.12,3D-S3线,DL3,43855a9b-b365-11ea-a1a5-00012999830e
D4,D4,10.85.199.15,3D-S4线,DL4,73c8b98c-b368-11ea-a1a5-00012999830e
D5,D5,10.85.199.31,3D-S5线,DL5,5436efd7-b432-11ea-a1a5-00012999830e
D6,D6,10.85.199.32,3D-S6线,DL6,6b7710c1-b432-11ea-a1a5-00012999830e
D7,D7,10.85.199.36,3D-S7线,DL6,6b7710c1-b432-11ea-a1a5-00012999830e
D8,D8,10.85.199.37,3D-S8线,DL8,8f039d2e-b432-11ea-a1a5-00012999830e
D9,D9,10.85.199.43,3D-S9线,DL9,9e0b64ab-b432-11ea-a1a5-00012999830e
D10,D10,10.85.199.44,3D-S10线,DL10,aec7da80-b432-11ea-a1a5-00012999830e
D11,D11,10.85.199.14,3D-S11线,DL11,c10984c9-b432-11ea-a1a5-00012999830e
D12,D12,10.85.199.13,3D-S12线,DL12,d6e0b92a-b432-11ea-a1a5-00012999830e
FeederIn,D21,10.85.199.1,3D-备料区入口,FI,1e546c3a-8abe-11ea-ab63-000129922ca6
FeederOut,D22,10.85.199.1,3D-备料区出口,FO,431649a4-8abe-11ea-ab63-000129922ca6
...@@ -140,8 +140,6 @@ namespace DeviceLibrary ...@@ -140,8 +140,6 @@ namespace DeviceLibrary
{ {
//上报异常 //上报异常
bool isAlarm = false; bool isAlarm = false;
//if (msglist.Count > 0)
// msglist.Clear();
try try
{ {
if (!CheckOnline(i)) continue; if (!CheckOnline(i)) continue;
...@@ -149,7 +147,7 @@ namespace DeviceLibrary ...@@ -149,7 +147,7 @@ namespace DeviceLibrary
MiR_API.Get_Task_State(AGVManager.agvInfo[i].CurTaskID, out string stateStr); MiR_API.Get_Task_State(AGVManager.agvInfo[i].CurTaskID, out string stateStr);
Thread.Sleep(50); Thread.Sleep(50);
//获取AGV状态 //获取AGV状态
rtn = MiR_API.Get_State(AGVManager.agvInfo[i], out eAGVState stateID, out string stateText, out int battery, out string mission_text, out Agv_Info.clsPosition position); rtn = MiR_API.Get_State(AGVManager.agvInfo[i], out eAGVState stateID, out string stateText, out int battery, out string mission_text, out Agv_Info.MirPosition position);
Thread.Sleep(50); Thread.Sleep(50);
if (rtn) change = AGVManager.agvInfo[i].SetState(stateID, stateStr, battery, mission_text, position); if (rtn) change = AGVManager.agvInfo[i].SetState(stateID, stateStr, battery, mission_text, position);
......
...@@ -39,6 +39,7 @@ ...@@ -39,6 +39,7 @@
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Runtime.Serialization" /> <Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" /> <Reference Include="System.ServiceModel" />
<Reference Include="System.ServiceModel.Activation" /> <Reference Include="System.ServiceModel.Activation" />
...@@ -64,6 +65,7 @@ ...@@ -64,6 +65,7 @@
<Compile Include="bean\job\jobType\JobForRoomC.cs" /> <Compile Include="bean\job\jobType\JobForRoomC.cs" />
<Compile Include="bean\job\jobType\JobForRoomD.cs" /> <Compile Include="bean\job\jobType\JobForRoomD.cs" />
<Compile Include="bean\job\SendFullShelfToLineJob.cs" /> <Compile Include="bean\job\SendFullShelfToLineJob.cs" />
<Compile Include="bean\job\StandyJob.cs" />
<Compile Include="bean\Mission.cs" /> <Compile Include="bean\Mission.cs" />
<Compile Include="bean\node\ClientNode.cs" /> <Compile Include="bean\node\ClientNode.cs" />
<Compile Include="bean\Node.cs" /> <Compile Include="bean\Node.cs" />
...@@ -83,6 +85,7 @@ ...@@ -83,6 +85,7 @@
<Compile Include="ScopeLimit.cs" /> <Compile Include="ScopeLimit.cs" />
<Compile Include="Shelf.cs" /> <Compile Include="Shelf.cs" />
<Compile Include="Standby.cs" /> <Compile Include="Standby.cs" />
<Compile Include="TCPServer.cs" />
<Compile Include="unlock\LineWebService.cs" /> <Compile Include="unlock\LineWebService.cs" />
<Compile Include="unlock\UnlockedShelf.cs" /> <Compile Include="unlock\UnlockedShelf.cs" />
<Compile Include="unlock\UnlockMissionManager.cs" /> <Compile Include="unlock\UnlockMissionManager.cs" />
......
...@@ -16,22 +16,65 @@ namespace DeviceLibrary ...@@ -16,22 +16,65 @@ namespace DeviceLibrary
/// 任务列表 /// 任务列表
/// </summary> /// </summary>
public static List<Mission> Missions; public static List<Mission> Missions;
/// <summary>
/// 加载任务列表
/// </summary>
public static void Init()
{
try
{
Missions = new List<Mission>();
string path = AGVManager.CONFIG_PATH + SettingString.FileName_AgvMission;
string[] line = System.IO.File.ReadAllLines(path, Encoding.UTF8);
string[] temp;
for (int i = 1; i < line.Length; i++)
{
temp = line[i].Split(',');
if (temp.Length != 5) continue;
Missions.Add(new Mission(temp[0], temp[1], temp[2], temp[3], temp[4]));
}
LogUtil.info("加载任务成功");
}
catch (Exception ex)
{
LogUtil.error("加载任务失败", ex);
}
}
/// <summary>
/// 根据目的地名获取guid号
/// </summary>
/// <param name="taskName"></param>
/// <returns></returns>
public static string GetMissionGuidByName(string name)
{
Mission mission = Missions.Find(s => s.TargetName.Equals(name));
if (mission != null)
return mission.Guid;
else
LogUtil.error(string.Format("任务目的地{0}不存在,请检查!", name));
return "";
}
/// <summary> /// <summary>
/// 根据任务名获取guid号 /// 根据任务名获取guid号
/// </summary> /// </summary>
/// <param name="taskName"></param> /// <param name="taskName"></param>
/// <returns></returns> /// <returns></returns>
public static string GetMissionGuidByName(string taskName) public static string GetMissionGuidByTaskName(string taskName)
{ {
Mission mission = Missions.Find(s => s.Name.Equals(taskName)); Mission mission = Missions.Find(s => s.Name.Equals(taskName));
if (mission != null)
return mission.Guid; return mission.Guid;
else
LogUtil.error(string.Format("任务{0}不存在,请检查!", taskName));
return "";
} }
/// <summary> /// <summary>
/// 向小车发送任务 /// 向小车发送任务
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public static bool AssignMission(Agv_Info agv,string missionName) public static bool AssignMission(Agv_Info agv, string missionName)
{ {
bool rtn = false; bool rtn = false;
string guid = GetMissionGuidByName(missionName); string guid = GetMissionGuidByName(missionName);
...@@ -81,7 +124,7 @@ namespace DeviceLibrary ...@@ -81,7 +124,7 @@ namespace DeviceLibrary
{ {
MiR_API.Del_Mission(agv); MiR_API.Del_Mission(agv);
} }
LogUtil.info(string.Format("{0} DelMission [{1}] OK", agv.Name, agv.CurTaskName)); LogUtil.info(string.Format("{0} DelMission [{1}] OK", agv.Name, agv.CurTarName));
} }
/// <summary> /// <summary>
...@@ -90,7 +133,7 @@ namespace DeviceLibrary ...@@ -90,7 +133,7 @@ namespace DeviceLibrary
/// <param name="taskName">任务名称</param> /// <param name="taskName">任务名称</param>
/// <param name="taskGUID">任务GUID</param> /// <param name="taskGUID">任务GUID</param>
/// <returns></returns> /// <returns></returns>
public static bool CheckTaskFinished(Agv_Info agv,string taskName, string curTaskState) public static bool CheckTaskFinished(Agv_Info agv, string taskName, string curTaskState)
{ {
LogUtil.debug(agv.Name + " 检查当前任务是否结束: " + taskName + " " + curTaskState); LogUtil.debug(agv.Name + " 检查当前任务是否结束: " + taskName + " " + curTaskState);
return GetMissionGuidByName(taskName).Equals(agv.CurTaskGUID) && curTaskState.Equals(SettingString.Done); return GetMissionGuidByName(taskName).Equals(agv.CurTaskGUID) && curTaskState.Equals(SettingString.Done);
......
...@@ -6,15 +6,15 @@ using System.Threading.Tasks; ...@@ -6,15 +6,15 @@ using System.Threading.Tasks;
namespace DeviceLibrary namespace DeviceLibrary
{ {
public class Standby public class StandbyManager
{ {
/// <summary> /// <summary>
/// 待机位 /// 待机位
/// </summary> /// </summary>
public List<string> Station; public List<string> Station;
private const int Station_CNT = 4; private const int Station_CNT = 3;
public Standby() public StandbyManager()
{ {
Station = new List<string>(); Station = new List<string>();
Station.AddRange(new string[Station_CNT]); Station.AddRange(new string[Station_CNT]);
......
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
...@@ -41,6 +42,8 @@ namespace DeviceLibrary ...@@ -41,6 +42,8 @@ namespace DeviceLibrary
/// 是否在线 /// 是否在线
/// </summary> /// </summary>
public bool IsCon { set; get; } public bool IsCon { set; get; }
public bool IsInCharge { get; set; }
/// <summary> /// <summary>
/// 是否可用 /// 是否可用
/// </summary> /// </summary>
...@@ -52,6 +55,7 @@ namespace DeviceLibrary ...@@ -52,6 +55,7 @@ namespace DeviceLibrary
if (!value.Equals(_IsUse)) if (!value.Equals(_IsUse))
{ {
_IsUse = value; _IsUse = value;
AGVManager.WriteIni(Name,SettingString.IsUse,_IsUse.ToString());
} }
} }
get { return _IsUse; } get { return _IsUse; }
...@@ -86,16 +90,16 @@ namespace DeviceLibrary ...@@ -86,16 +90,16 @@ namespace DeviceLibrary
public string MissionText { set; get; } public string MissionText { set; get; }
public class clsPosition public class MirPosition
{ {
public double orientation { get; set; } public float orientation { get; set; }
public double x { get; set; } public PointF Point;
public double y { get; set; }
} }
/// <summary> /// <summary>
/// 当前位置 /// 当前位置
/// </summary> /// </summary>
public clsPosition Position; public MirPosition Position;
/// <summary> /// <summary>
/// 任务内容 /// 任务内容
...@@ -112,7 +116,7 @@ namespace DeviceLibrary ...@@ -112,7 +116,7 @@ namespace DeviceLibrary
/// <summary> /// <summary>
/// 使用Fleet发任务 /// 使用Fleet发任务
/// </summary> /// </summary>
public bool UseFleet { get; set; } = true; public bool UseFleet { get; set; } = false;
/// <summary> /// <summary>
/// 当前任务的ID号 /// 当前任务的ID号
/// </summary> /// </summary>
...@@ -120,9 +124,9 @@ namespace DeviceLibrary ...@@ -120,9 +124,9 @@ namespace DeviceLibrary
public string CurTaskState { get; set; } = ""; public string CurTaskState { get; set; } = "";
/// <summary> /// <summary>
/// 当前任务名称 /// 当前任务目的地名
/// </summary> /// </summary>
public string CurTaskName { get; set; } public string CurTarName { get; set; }
/// <summary> /// <summary>
/// 当前任务的GUID /// 当前任务的GUID
...@@ -133,36 +137,6 @@ namespace DeviceLibrary ...@@ -133,36 +137,6 @@ namespace DeviceLibrary
/// </summary> /// </summary>
public string BoxDestInfo { get; set; } = ""; public string BoxDestInfo { get; set; } = "";
public string RunInfo()
{
string curJobTaskName = "";
string curJobTaskState = "";
int curJobTaskID = -1;
if (CurJob != null)
{
curJobTaskName = CurJob.CurTaskName;
curJobTaskState = CurJob.CurTaskState;
curJobTaskID = CurJob.CurTaskID;
if (RFID.StartsWith("C"))
{
return string.Format("设备:{1}{0}RFID:{2}{0}任务信息:[任务名称={3}][任务状态:{4}]{0}当前步骤:{5}{0}执行信息:{6}",
"\r\n", Name, RFID, curJobTaskName, curJobTaskState, Msg, MissionText);
}
else if (RFID.StartsWith("D"))
{
return string.Format("设备:{1}{0}RFID:{2}{0}任务信息:[任务名称={3}][任务状态={4}]{0}当前步骤:{5}{0}执行信息:{6}",
"\r\n", Name, RFID, curJobTaskName, curJobTaskState, Msg, MissionText);
}
else
return string.Format("设备:{1}{0}RFID:{2}{0}任务信息:[任务名称={3}][任务状态={4}]{0}当前步骤:{5}{0}执行信息:{6}",
"\r\n", Name, RFID, curJobTaskName, curJobTaskState, Msg, MissionText);
}
else
return string.Format("设备:{1}{0}RFID:{2}{0}任务信息:[任务名称={3}][任务状态={4}]{0}执行信息:{5}",
"\r\n", Name, RFID, curJobTaskName, curJobTaskState, MissionText);
}
/// <summary> /// <summary>
/// 任务重发 /// 任务重发
/// </summary> /// </summary>
...@@ -178,6 +152,7 @@ namespace DeviceLibrary ...@@ -178,6 +152,7 @@ namespace DeviceLibrary
/// 停在同一处超时 /// 停在同一处超时
/// </summary> /// </summary>
public bool StandTimeOut { get; set; } = false; public bool StandTimeOut { get; set; } = false;
public AGV_UI.Status StateKanban;
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)
{ {
ID = id; ID = id;
...@@ -190,21 +165,24 @@ namespace DeviceLibrary ...@@ -190,21 +165,24 @@ namespace DeviceLibrary
_IsUse = isUse; _IsUse = isUse;
Place = ""; Place = "";
Msg = ""; Msg = "";
Position = new Agv_Info.clsPosition(); Position = new MirPosition();
RunInfos = new List<string>() { "目的地", "RFID", "负载", "运行模式", "任务信息", "AGV运行信息" };
StateKanban = new AGV_UI.Status(name, RunInfos);
} }
public List<string> RunInfos;
DateTime IoStartTime = DateTime.MaxValue; DateTime IoStartTime = DateTime.MaxValue;
int IoLastTime = 5000; int IoLastTime = 5000;
int StandLastTimeMinute = 5; int StandLastTimeMinute = 5;
public DateTime StandStartTime = DateTime.MaxValue; public DateTime StandStartTime = DateTime.MaxValue;
public bool SetState(eAGVState stateID, string stateText, int battery, string missionText, clsPosition position) public bool SetState(eAGVState stateID, string stateText, int battery, string missionText, MirPosition position)
{ {
bool isChange = false; bool isChange = false;
bool preShelfState = IsExistShelf; bool preShelfState = IsExistShelf;
MiR_API.Get_IO_Status(this, out bool[] input, out bool[] output); MiR_API.Get_IO_Status(this, out bool[] input, out bool[] output);
if (input != null && input.Length == 4) if (input != null && input.Length == 4)
{ {
bool reachIoValue = input[3].Equals(true);//input[2] && bool reachIoValue = input[3].Equals(true);
if (reachIoValue) if (reachIoValue)
{ {
//满足给定的IO值,计算持续时间 //满足给定的IO值,计算持续时间
...@@ -222,23 +200,55 @@ namespace DeviceLibrary ...@@ -222,23 +200,55 @@ namespace DeviceLibrary
} }
else else
{ {
IsExistShelf = true; IsExistShelf = false;
} }
} }
else else
{ {
//重新计时 //重新计时
IoStartTime = DateTime.MinValue; IoStartTime = DateTime.MinValue;
IsExistShelf = input[3]; IsExistShelf = false;
} }
} }
if (!StateID.Equals(stateID) || !CurTaskState.Equals(stateText) || !Battery.Equals(battery) if (!StateID.Equals(stateID) || !CurTaskState.Equals(stateText) || !Battery.Equals(battery)
|| !MissionText.Equals(missionText) || !IsExistShelf.Equals(preShelfState)) || !MissionText.Equals(missionText) || !IsExistShelf.Equals(preShelfState))
isChange = true; isChange = true;
StateID = stateID; StateID = stateID;
if (!CurTaskState.Equals(stateText))
{
CurTaskState = stateText; CurTaskState = stateText;
StateKanban.SetCurState(stateText);
}
if (!Battery.Equals(battery))
{
Battery = battery; Battery = battery;
StateKanban.SetBattery(battery,IsInCharge);
}
//"目的地", "RFID", "负载", "运行模式","任务信息", "AGV运行信息"
if (AGVManager.nodeInfo != null && AGVManager.nodeInfo.Count != 0)
{
ClientNode node = AGVManager.nodeInfo.Find(ss => ss.Name == Place);
if (node != null)
PlaceAliceName = node.AliceName;
else
PlaceAliceName = Place;
}
StateKanban.ShowInfo("目的地", PlaceAliceName);
StateKanban.ShowInfo("RFID", RFID);
if (!IsExistShelf.Equals(preShelfState))
{
StateKanban.ShowInfo("负载", IsExistShelf ? "满载" : "空载");
}
StateKanban.ShowInfo("运行模式", IsUse ? "自动" : "手动");
StateKanban.ShowInfo("任务信息", this.CurJob.RunInfo);
if (!MissionText.Equals(missionText))
{
MissionText = missionText; MissionText = missionText;
StateKanban.ShowInfo("AGV运行信息", missionText);
}
CheckStandTimeOut(position); CheckStandTimeOut(position);
return isChange; return isChange;
} }
...@@ -247,12 +257,12 @@ namespace DeviceLibrary ...@@ -247,12 +257,12 @@ namespace DeviceLibrary
/// 检查小车是否在原地停留超时 /// 检查小车是否在原地停留超时
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
private void CheckStandTimeOut(clsPosition position) private void CheckStandTimeOut(MirPosition position)
{ {
if (IsUse && CurJob != null && !(CurJob is ChargeJob) && if (IsUse && CurJob != null && !(CurJob is ChargeJob) &&
(!CurTaskName.Contains(SettingString.Standby)))//!CurTaskName.Contains(SettingString.AutoCharge) || (!CurTarName.Contains(SettingString.Standby)))//!CurTaskName.Contains(SettingString.AutoCharge) ||
{ {
if (Math.Abs(position.x - Position.x) < 1 && Math.Abs(position.y - Position.y) < 1) if (Math.Abs(position.Point.X - Position.Point.X) < 1 && Math.Abs(position.Point.Y- Position.Point.Y) < 1)
{ {
//满足条件,计算持续时间 //满足条件,计算持续时间
if (StandStartTime == DateTime.MaxValue) if (StandStartTime == DateTime.MaxValue)
......
...@@ -20,9 +20,9 @@ namespace DeviceLibrary ...@@ -20,9 +20,9 @@ namespace DeviceLibrary
public int CurTaskID { get; set; } = -1; public int CurTaskID { get; set; } = -1;
/// <summary> /// <summary>
/// 当前的任务名称(与任务GUID对应) /// 当前的任务目的地(与任务GUID对应)
/// </summary> /// </summary>
public string CurTaskName { get; set; } = ""; public string CurTarName { get; set; } = "";
/// <summary> /// <summary>
/// 当前任务的执行状态 /// 当前任务的执行状态
/// </summary> /// </summary>
...@@ -36,7 +36,7 @@ namespace DeviceLibrary ...@@ -36,7 +36,7 @@ namespace DeviceLibrary
protected void UpdateJobTaskInfo(string curTaskName, int curTaskId) protected void UpdateJobTaskInfo(string curTaskName, int curTaskId)
{ {
CurTaskID = curTaskId; CurTaskID = curTaskId;
CurTaskName = curTaskName; CurTarName = curTaskName;
CurTaskState = MissionSys.GetTakJobState(CurTaskID); CurTaskState = MissionSys.GetTakJobState(CurTaskID);
} }
/// <summary> /// <summary>
...@@ -50,30 +50,30 @@ namespace DeviceLibrary ...@@ -50,30 +50,30 @@ namespace DeviceLibrary
{ {
if (stateStr.Equals(SettingString.Aborted) || stateStr.Equals(SettingString.Invalid)) if (stateStr.Equals(SettingString.Aborted) || stateStr.Equals(SettingString.Invalid))
{ {
rtn = MissionSys.AssignMission(agv, CurTaskName); rtn = MissionSys.AssignMission(agv, CurTarName);
if (rtn) if (rtn)
{ {
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
return true; return true;
} }
} }
} }
else if (!CurTaskName.Equals("") && !MissionSys.GetMissionGuidByName(CurTaskName).Equals(agv.CurTaskGUID))//Job的当前任务与agv最新任务不一致 else if (!CurTarName.Equals("") && !MissionSys.GetMissionGuidByName(CurTarName).Equals(agv.CurTaskGUID))//Job的当前任务与agv最新任务不一致
{ {
rtn = MissionSys.AssignMission(agv, CurTaskName); rtn = MissionSys.AssignMission(agv, CurTarName);
if (rtn) if (rtn)
{ {
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
return true; return true;
} }
} }
else if (CurTaskID.Equals(-1))//任务发送失败,重新发送 else if (CurTaskID.Equals(-1))//任务发送失败,重新发送
{ {
rtn = MissionSys.AssignMission(agv, CurTaskName); rtn = MissionSys.AssignMission(agv, CurTarName);
if (rtn) if (rtn)
{ {
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
return true; return true;
} }
} }
......
...@@ -5,6 +5,7 @@ using System.Web.Script.Serialization; ...@@ -5,6 +5,7 @@ using System.Web.Script.Serialization;
using Common; using Common;
using Microsoft.SqlServer.Server; using Microsoft.SqlServer.Server;
using RestSharp; using RestSharp;
using static DeviceLibrary.Agv_Info;
namespace DeviceLibrary namespace DeviceLibrary
{ {
...@@ -86,7 +87,7 @@ namespace DeviceLibrary ...@@ -86,7 +87,7 @@ namespace DeviceLibrary
} }
catch (Exception ex) catch (Exception ex)
{ {
Common.log.Error("Get_Node_Pos", ex); log.Error("Get_Node_Pos", ex);
mirPosition = null; mirPosition = null;
return false; return false;
} }
...@@ -224,6 +225,9 @@ namespace DeviceLibrary ...@@ -224,6 +225,9 @@ namespace DeviceLibrary
{ {
try try
{ {
info.CurTaskID = -1;
info.CurTaskGUID = "";
info.CurTaskState = SettingString.Wait;
log.Debug(string.Format("{0} Add_Mission [{1}]", info.Name, mission_id)); log.Debug(string.Format("{0} Add_Mission [{1}]", info.Name, mission_id));
//删除上一任务 //删除上一任务
...@@ -254,7 +258,7 @@ namespace DeviceLibrary ...@@ -254,7 +258,7 @@ namespace DeviceLibrary
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 = ""; info.CurTarName = "";
} }
return true; return true;
...@@ -312,7 +316,7 @@ namespace DeviceLibrary ...@@ -312,7 +316,7 @@ namespace DeviceLibrary
catch catch
{ {
log.Info(string.Format("{0} Add_Mission_Fleet [{1}]", info.Name, mission_id)); log.Info(string.Format("{0} Add_Mission_Fleet [{1}]", info.Name, mission_id));
info.CurTaskName = ""; info.CurTarName = "";
} }
return true; return true;
} }
...@@ -493,13 +497,13 @@ namespace DeviceLibrary ...@@ -493,13 +497,13 @@ namespace DeviceLibrary
/// <param name="battery"></param> /// <param name="battery"></param>
/// <param name="mission_text"></param> /// <param name="mission_text"></param>
/// <returns></returns> /// <returns></returns>
public static bool Get_State(Agv_Info info, out eAGVState stateID, out string stateText, out int battery, out string mission_text, out Agv_Info.clsPosition position) public static bool Get_State(Agv_Info info, out eAGVState stateID, out string stateText, out int battery, out string mission_text, out MirPosition position)
{ {
stateID = eAGVState.UNKNOWN; stateID = eAGVState.UNKNOWN;
stateText = ""; stateText = "";
battery = 0; battery = 0;
mission_text = ""; mission_text = "";
position = new Agv_Info.clsPosition(); position = new MirPosition();
try try
{ {
string url = "http://" + info.IP + "/api/v2.0.0/status?whitelist=state_id,state_text,battery_percentage,mission_text,position"; string url = "http://" + info.IP + "/api/v2.0.0/status?whitelist=state_id,state_text,battery_percentage,mission_text,position";
...@@ -528,9 +532,9 @@ namespace DeviceLibrary ...@@ -528,9 +532,9 @@ namespace DeviceLibrary
battery = Convert.ToInt32(f); battery = Convert.ToInt32(f);
Dictionary<string, object> posDic = (Dictionary<string, object>)dic["position"]; Dictionary<string, object> posDic = (Dictionary<string, object>)dic["position"];
if (posDic == null) return false; if (posDic == null) return false;
position.orientation = Convert.ToDouble(posDic["orientation"].ToString()); position.orientation = Convert.ToSingle(posDic["orientation"].ToString());
position.x = Convert.ToDouble(posDic["x"]); position.Point.X = Convert.ToSingle(posDic["x"]);
position.y = Convert.ToDouble(posDic["y"]); position.Point.Y = Convert.ToSingle(posDic["y"]);
return true; return true;
} }
catch (Exception ex) catch (Exception ex)
......
...@@ -22,15 +22,28 @@ namespace DeviceLibrary ...@@ -22,15 +22,28 @@ namespace DeviceLibrary
/// </summary> /// </summary>
public string TargetName { private set; get; } public string TargetName { private set; get; }
/// <summary> /// <summary>
/// 目的地别名(与节点名对应)
/// </summary>
public string TargetAliceName { private set; get; }
/// <summary>
/// 任务guid /// 任务guid
/// </summary> /// </summary>
public string Guid { private set; get; } public string Guid { private set; get; }
/// <summary>
public Mission(string name,string aliceName,string targetName,string guid) /// 任务
/// </summary>
/// <param name="name">任务名称</param>
/// <param name="aliceName">任务别名</param>
/// <param name="targetName">目的地名</param>
/// <param name="targetAliceName">目的地别名</param>
/// <param name="guid">任务guid</param>
public Mission(string name,string aliceName,string targetName,string targetAliceName,string guid)
{ {
Name = name; Name = name;
AliceName = aliceName; AliceName = aliceName;
TargetName = targetName; TargetName = targetName;
TargetAliceName = targetAliceName;
Guid = guid; Guid = guid;
} }
} }
......
...@@ -28,7 +28,7 @@ namespace DeviceLibrary ...@@ -28,7 +28,7 @@ namespace DeviceLibrary
/// </summary> /// </summary>
public override string RunInfo public override string RunInfo
{ {
get { return string.Format("充电任务:{0} ", runInfo);} get { return string.Format("充电任务[{0}][{1}]:{2} ", CurTaskID, CurTaskState, runInfo);}
} }
private JobStep<CHARGE_STEP> jobStep = new JobStep<CHARGE_STEP>(CHARGE_STEP.NONE); private JobStep<CHARGE_STEP> jobStep = new JobStep<CHARGE_STEP>(CHARGE_STEP.NONE);
...@@ -53,7 +53,7 @@ namespace DeviceLibrary ...@@ -53,7 +53,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv,SettingString.Standby); MissionSys.AssignMission(agv,SettingString.Standby);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else if (agvPlace.StartsWith(SettingString.RoomC_Name_Prefix) && AGVManager.CheckIsInAirDoor(agvPlace)) else if (agvPlace.StartsWith(SettingString.RoomC_Name_Prefix) && AGVManager.CheckIsInAirDoor(agvPlace))
{ {
...@@ -62,7 +62,7 @@ namespace DeviceLibrary ...@@ -62,7 +62,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv,SettingString.DoorAirOut); MissionSys.AssignMission(agv,SettingString.DoorAirOut);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else if (agvPlace.StartsWith(SettingString.RoomC_Name_Prefix)) else if (agvPlace.StartsWith(SettingString.RoomC_Name_Prefix))
{ {
...@@ -71,7 +71,7 @@ namespace DeviceLibrary ...@@ -71,7 +71,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv,SettingString.DoorCToD); MissionSys.AssignMission(agv,SettingString.DoorCToD);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else else
{ {
...@@ -81,7 +81,7 @@ namespace DeviceLibrary ...@@ -81,7 +81,7 @@ namespace DeviceLibrary
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv,SettingString.Standby); MissionSys.AssignMission(agv,SettingString.Standby);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
else else
...@@ -94,7 +94,7 @@ namespace DeviceLibrary ...@@ -94,7 +94,7 @@ namespace DeviceLibrary
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv,SettingString.DoorAirOut); MissionSys.AssignMission(agv,SettingString.DoorAirOut);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else if (agvPlace.StartsWith(SettingString.RoomC_Name_Prefix)) else if (agvPlace.StartsWith(SettingString.RoomC_Name_Prefix))
{ {
...@@ -104,7 +104,7 @@ namespace DeviceLibrary ...@@ -104,7 +104,7 @@ namespace DeviceLibrary
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv,SettingString.DoorCToD); MissionSys.AssignMission(agv,SettingString.DoorCToD);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else else
{ {
...@@ -116,7 +116,7 @@ namespace DeviceLibrary ...@@ -116,7 +116,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv,SettingString.Standby); MissionSys.AssignMission(agv,SettingString.Standby);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else else
{ {
...@@ -124,7 +124,7 @@ namespace DeviceLibrary ...@@ -124,7 +124,7 @@ namespace DeviceLibrary
runInfo = "电量" + agv.Battery + "%小于最大电量" + AGVManager.Charge.BatteryMax + "%,从当前位置" + agvPlace + "去充电位"; runInfo = "电量" + agv.Battery + "%小于最大电量" + AGVManager.Charge.BatteryMax + "%,从当前位置" + agvPlace + "去充电位";
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
} }
...@@ -139,7 +139,7 @@ namespace DeviceLibrary ...@@ -139,7 +139,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.DoorCToD); MissionSys.AssignMission(agv, SettingString.DoorCToD);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
else if (jobStep.IsStep(CHARGE_STEP.WAIT_AGV_REACH_ROOMD_DOOR)) else if (jobStep.IsStep(CHARGE_STEP.WAIT_AGV_REACH_ROOMD_DOOR))
...@@ -153,7 +153,7 @@ namespace DeviceLibrary ...@@ -153,7 +153,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.Standby); MissionSys.AssignMission(agv, SettingString.Standby);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else else
{ {
...@@ -165,7 +165,7 @@ namespace DeviceLibrary ...@@ -165,7 +165,7 @@ namespace DeviceLibrary
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.Standby); MissionSys.AssignMission(agv, SettingString.Standby);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else else
{ {
...@@ -173,7 +173,7 @@ namespace DeviceLibrary ...@@ -173,7 +173,7 @@ namespace DeviceLibrary
runInfo = "电量" + agv.Battery + "%小于最大电量" + AGVManager.Charge.BatteryMax + "%,从当前位置" + agvPlace + "回到充电位"; runInfo = "电量" + agv.Battery + "%小于最大电量" + AGVManager.Charge.BatteryMax + "%,从当前位置" + agvPlace + "回到充电位";
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
...@@ -181,7 +181,7 @@ namespace DeviceLibrary ...@@ -181,7 +181,7 @@ namespace DeviceLibrary
} }
else if (jobStep.IsStep(CHARGE_STEP.WAIT_REACH_CHARGE_STATION)) else if (jobStep.IsStep(CHARGE_STEP.WAIT_REACH_CHARGE_STATION))
{ {
if (MissionSys.CheckTaskIsOK(agv, CurTaskName,CurTaskState)) if (MissionSys.CheckTaskIsOK(agv, CurTarName,CurTaskState))
{ {
jobStep.ToNextStep(CHARGE_STEP.WAIT_REACH_CHARGE_OK); jobStep.ToNextStep(CHARGE_STEP.WAIT_REACH_CHARGE_OK);
runInfo = "开始充电任务"; runInfo = "开始充电任务";
...@@ -199,16 +199,16 @@ namespace DeviceLibrary ...@@ -199,16 +199,16 @@ namespace DeviceLibrary
runInfo = "电量充足,回待机位"; runInfo = "电量充足,回待机位";
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
AGVManager.Charge.DelOccupyInfoByAGV(agv); AGVManager.Charge.DelOccupyInfo(agv);
MissionSys.AssignMission(agv, SettingString.Standby); MissionSys.AssignMission(agv, SettingString.Standby);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else if (agv.Battery >= AGVManager.Charge.BatteryMin) else if (agv.Battery >= AGVManager.Charge.BatteryMin)
{ {
Job job = AGVManager.control.GetJob(agv); Job job = AGVManager.control.GetJob(agv);
if (job != null && !(job is ChargeJob)) if (job != null && !(job is ChargeJob))
{ {
AGVManager.Charge.DelOccupyInfoByAGV(agv); AGVManager.Charge.DelOccupyInfo(agv);
runInfo = "充电过程检测到任务,电量" + agv.Battery + "%大于最小电量" + AGVManager.Charge.BatteryMin + "%,中断充电执行任务"; runInfo = "充电过程检测到任务,电量" + agv.Battery + "%大于最小电量" + AGVManager.Charge.BatteryMin + "%,中断充电执行任务";
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
...@@ -234,7 +234,7 @@ namespace DeviceLibrary ...@@ -234,7 +234,7 @@ namespace DeviceLibrary
runInfo = "充电过程中检测到任务,电量" + agv.Battery + "%大于最小电量" + AGVManager.Charge.BatteryMin + "%,中断充电执行任务"; runInfo = "充电过程中检测到任务,电量" + agv.Battery + "%大于最小电量" + AGVManager.Charge.BatteryMin + "%,中断充电执行任务";
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
AGVManager.Charge.DelOccupyInfoByAGV(agv); AGVManager.Charge.DelOccupyInfo(agv);
return job; return job;
} }
} }
...@@ -261,7 +261,7 @@ namespace DeviceLibrary ...@@ -261,7 +261,7 @@ namespace DeviceLibrary
runInfo = "在待机位检测到任务,执行任务"; runInfo = "在待机位检测到任务,执行任务";
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
AGVManager.Charge.DelOccupyInfoByAGV(agv); AGVManager.Charge.DelOccupyInfo(agv);
return job; return job;
} }
else if (job == null && agv.Battery < AGVManager.Charge.BatteryMax / 2) else if (job == null && agv.Battery < AGVManager.Charge.BatteryMax / 2)
...@@ -270,7 +270,7 @@ namespace DeviceLibrary ...@@ -270,7 +270,7 @@ namespace DeviceLibrary
runInfo = "在待机位暂无任务,且当前电量小于" + AGVManager.Charge.BatteryMax / 2 + "%,去充电位"; runInfo = "在待机位暂无任务,且当前电量小于" + AGVManager.Charge.BatteryMax / 2 + "%,去充电位";
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
AGVManager.Charge.DelOccupyInfoByAGV(agv); AGVManager.Charge.DelOccupyInfo(agv);
} }
} }
return this; return this;
......
...@@ -36,7 +36,7 @@ namespace DeviceLibrary ...@@ -36,7 +36,7 @@ namespace DeviceLibrary
/// </summary> /// </summary>
public override string RunInfo public override string RunInfo
{ {
get { return string.Format("返回任务:{0}", runInfo); } get { return string.Format("返回任务[{0}][{1}]:{2}", CurTaskID,CurTaskState,runInfo); }
} }
...@@ -75,7 +75,7 @@ namespace DeviceLibrary ...@@ -75,7 +75,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.DoorAirOut); MissionSys.AssignMission(agv, SettingString.DoorAirOut);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else if (agvPlace.StartsWith(SettingString.RoomC_Name_Prefix)) else if (agvPlace.StartsWith(SettingString.RoomC_Name_Prefix))
{ {
...@@ -84,7 +84,7 @@ namespace DeviceLibrary ...@@ -84,7 +84,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.DoorCToD); MissionSys.AssignMission(agv, SettingString.DoorCToD);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else else
{ {
...@@ -93,7 +93,7 @@ namespace DeviceLibrary ...@@ -93,7 +93,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.Standby); MissionSys.AssignMission(agv, SettingString.Standby);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
} }
...@@ -106,7 +106,7 @@ namespace DeviceLibrary ...@@ -106,7 +106,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.DoorAirOut); MissionSys.AssignMission(agv, SettingString.DoorAirOut);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else if (agvPlace.StartsWith(SettingString.RoomC_Name_Prefix)) else if (agvPlace.StartsWith(SettingString.RoomC_Name_Prefix))
{ {
...@@ -115,7 +115,7 @@ namespace DeviceLibrary ...@@ -115,7 +115,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.DoorCToD); MissionSys.AssignMission(agv, SettingString.DoorCToD);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else else
{ {
...@@ -124,7 +124,7 @@ namespace DeviceLibrary ...@@ -124,7 +124,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.Standby); MissionSys.AssignMission(agv, SettingString.Standby);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
...@@ -138,7 +138,7 @@ namespace DeviceLibrary ...@@ -138,7 +138,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.DoorAirOut); MissionSys.AssignMission(agv, SettingString.DoorAirOut);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else if (agvPlace.StartsWith(SettingString.RoomC_Name_Prefix)) else if (agvPlace.StartsWith(SettingString.RoomC_Name_Prefix))
{ {
...@@ -147,7 +147,7 @@ namespace DeviceLibrary ...@@ -147,7 +147,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.DoorCToD); MissionSys.AssignMission(agv, SettingString.DoorCToD);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else else
{ {
...@@ -156,7 +156,7 @@ namespace DeviceLibrary ...@@ -156,7 +156,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.Standby); MissionSys.AssignMission(agv, SettingString.Standby);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
} }
...@@ -204,7 +204,7 @@ namespace DeviceLibrary ...@@ -204,7 +204,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.DoorCToD); MissionSys.AssignMission(agv, SettingString.DoorCToD);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
else if (jobStep.IsStep(EMPTY_AGV_BACK_STEP.WAIT_AGV_REACH_RoomD_DOOR)) else if (jobStep.IsStep(EMPTY_AGV_BACK_STEP.WAIT_AGV_REACH_RoomD_DOOR))
......
...@@ -42,7 +42,7 @@ namespace DeviceLibrary ...@@ -42,7 +42,7 @@ namespace DeviceLibrary
/// </summary> /// </summary>
public override string RunInfo public override string RunInfo
{ {
get { return string.Format("空料架[{0}]返回:{1} ",shelfType.ToString(),runInfo); } get { return string.Format("空料架[{0}][{1}][{2}]返回:{3} ",shelfType.ToString(), CurTaskID, CurTaskState, runInfo); }
} }
...@@ -66,7 +66,7 @@ namespace DeviceLibrary ...@@ -66,7 +66,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.DoorAirOut); MissionSys.AssignMission(agv, SettingString.DoorAirOut);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else if (EmptyShelfPlace.StartsWith(SettingString.RoomC_Name_Prefix))//C车间 else if (EmptyShelfPlace.StartsWith(SettingString.RoomC_Name_Prefix))//C车间
{ {
...@@ -75,7 +75,7 @@ namespace DeviceLibrary ...@@ -75,7 +75,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.DoorCToD); MissionSys.AssignMission(agv, SettingString.DoorCToD);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else else
{ {
...@@ -89,7 +89,7 @@ namespace DeviceLibrary ...@@ -89,7 +89,7 @@ namespace DeviceLibrary
if (!EmptyShelfTargetPlace.Equals("")) if (!EmptyShelfTargetPlace.Equals(""))
{ {
MissionSys.AssignMission(agv, EmptyShelfTargetPlace); MissionSys.AssignMission(agv, EmptyShelfTargetPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
...@@ -100,7 +100,7 @@ namespace DeviceLibrary ...@@ -100,7 +100,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.Standby); MissionSys.AssignMission(agv, SettingString.Standby);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
} }
...@@ -114,7 +114,7 @@ namespace DeviceLibrary ...@@ -114,7 +114,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.DoorCToD); MissionSys.AssignMission(agv, SettingString.DoorCToD);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
else if (jobStep.IsStep(EMPTY_SHELF_BACK_STEP.WAIT_AGV_REACH_DOOR)) else if (jobStep.IsStep(EMPTY_SHELF_BACK_STEP.WAIT_AGV_REACH_DOOR))
...@@ -130,7 +130,7 @@ namespace DeviceLibrary ...@@ -130,7 +130,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, EmptyShelfTargetPlace); MissionSys.AssignMission(agv, EmptyShelfTargetPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else else
{ {
...@@ -140,7 +140,7 @@ namespace DeviceLibrary ...@@ -140,7 +140,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.Standby); MissionSys.AssignMission(agv, SettingString.Standby);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
} }
...@@ -155,7 +155,7 @@ namespace DeviceLibrary ...@@ -155,7 +155,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, EmptyShelfTargetPlace); MissionSys.AssignMission(agv, EmptyShelfTargetPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
else if (jobStep.IsStep(EMPTY_SHELF_BACK_STEP.WAIT_AGV_REACH_A5A6)) else if (jobStep.IsStep(EMPTY_SHELF_BACK_STEP.WAIT_AGV_REACH_A5A6))
...@@ -176,14 +176,14 @@ namespace DeviceLibrary ...@@ -176,14 +176,14 @@ namespace DeviceLibrary
ClientNode node = AGVManager.nodeInfo[id]; ClientNode node = AGVManager.nodeInfo[id];
if (node.StateEquals(eNodeStatus.MayEnter)) if (node.StateEquals(eNodeStatus.MayEnter))
{ {
if (!agv.CurTaskName.Equals(SettingString.Leave)) if (!agv.CurTarName.Equals(SettingString.Leave))
{ {
jobStep.ToNextStep(EMPTY_SHELF_BACK_STEP.WAIT__EMPTY_SHELF_IN_DOUBLE_LINE); jobStep.ToNextStep(EMPTY_SHELF_BACK_STEP.WAIT__EMPTY_SHELF_IN_DOUBLE_LINE);
runInfo = "收到双层线入料架请求[ReadyEnter]的响应 " + EmptyShelfTargetPlace + "入料架,小车链条运行"; runInfo = "收到双层线入料架请求[ReadyEnter]的响应 " + EmptyShelfTargetPlace + "入料架,小车链条运行";
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.Leave); MissionSys.AssignMission(agv, SettingString.Leave);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
...@@ -198,7 +198,7 @@ namespace DeviceLibrary ...@@ -198,7 +198,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.Standby); MissionSys.AssignMission(agv, SettingString.Standby);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
else if (jobStep.IsStep(EMPTY_SHELF_BACK_STEP.WAIT__EMPTY_SHELF_IN_DOUBLE_LINE)) else if (jobStep.IsStep(EMPTY_SHELF_BACK_STEP.WAIT__EMPTY_SHELF_IN_DOUBLE_LINE))
......
...@@ -75,7 +75,7 @@ namespace DeviceLibrary ...@@ -75,7 +75,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.Leave); MissionSys.AssignMission(agv, SettingString.Leave);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else if(ActionType.Equals(eEnterLeaveType.Enter)) else if(ActionType.Equals(eEnterLeaveType.Enter))
{ {
...@@ -88,7 +88,7 @@ namespace DeviceLibrary ...@@ -88,7 +88,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.Enter); MissionSys.AssignMission(agv, SettingString.Enter);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
else if (jobStep.IsStep(ENTER_LEAVE_SHELF_STEP.WAIT_LINE_ReadyEnter_RESPONSE)) else if (jobStep.IsStep(ENTER_LEAVE_SHELF_STEP.WAIT_LINE_ReadyEnter_RESPONSE))
...@@ -102,7 +102,7 @@ namespace DeviceLibrary ...@@ -102,7 +102,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.Leave); MissionSys.AssignMission(agv, SettingString.Leave);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else if (jobStep.IsTimeOut(15000, out double timeOutValue)) else if (jobStep.IsTimeOut(15000, out double timeOutValue))
{ {
...@@ -123,7 +123,7 @@ namespace DeviceLibrary ...@@ -123,7 +123,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.Enter); MissionSys.AssignMission(agv, SettingString.Enter);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else if (jobStep.IsTimeOut(15000, out double timeOutValue)) else if (jobStep.IsTimeOut(15000, out double timeOutValue))
{ {
......
...@@ -36,7 +36,7 @@ namespace DeviceLibrary ...@@ -36,7 +36,7 @@ namespace DeviceLibrary
/// </summary> /// </summary>
public override string RunInfo public override string RunInfo
{ {
get { return string.Format("回收空料架[RFID={0}]:{1}",RFID,runInfo); } get { return string.Format("回收空料架[RFID={0}][{1}][{2}]:{3}",RFID, CurTaskID, CurTaskState, runInfo); }
} }
...@@ -60,7 +60,7 @@ namespace DeviceLibrary ...@@ -60,7 +60,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.DoorAirOut); MissionSys.AssignMission(agv, SettingString.DoorAirOut);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else if (!AGVManager.CheckIsInAirDoor(agvPlae) && AGVManager.CheckIsInAirDoor(EmptyShelfPlace))//4C风淋门外->风淋门内 else if (!AGVManager.CheckIsInAirDoor(agvPlae) && AGVManager.CheckIsInAirDoor(EmptyShelfPlace))//4C风淋门外->风淋门内
{ {
...@@ -73,7 +73,7 @@ namespace DeviceLibrary ...@@ -73,7 +73,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
AGVManager.MoveToRoomCStandy(agv); AGVManager.MoveToRoomCStandy(agv);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else else
{ {
...@@ -82,7 +82,7 @@ namespace DeviceLibrary ...@@ -82,7 +82,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.DoorAirIn); MissionSys.AssignMission(agv, SettingString.DoorAirIn);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
else if ((agvPlae.StartsWith(SettingString.RoomD_Name_Prefix) || agvPlae.StartsWith(SettingString.DoubleLine_Name_Prefix) || agvPlae.Equals(SettingString.Standby) || else if ((agvPlae.StartsWith(SettingString.RoomD_Name_Prefix) || agvPlae.StartsWith(SettingString.DoubleLine_Name_Prefix) || agvPlae.Equals(SettingString.Standby) ||
...@@ -94,7 +94,7 @@ namespace DeviceLibrary ...@@ -94,7 +94,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.DoorDToC); MissionSys.AssignMission(agv, SettingString.DoorDToC);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
else//起始与目的地在风淋门同一侧 else//起始与目的地在风淋门同一侧
...@@ -108,7 +108,7 @@ namespace DeviceLibrary ...@@ -108,7 +108,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.DoorAirOut); MissionSys.AssignMission(agv, SettingString.DoorAirOut);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else else
{ {
...@@ -129,7 +129,7 @@ namespace DeviceLibrary ...@@ -129,7 +129,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
AGVManager.MoveToRoomCStandy(agv); AGVManager.MoveToRoomCStandy(agv);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else else
{ {
...@@ -146,7 +146,7 @@ namespace DeviceLibrary ...@@ -146,7 +146,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.DoorCToD); MissionSys.AssignMission(agv, SettingString.DoorCToD);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else if ((agvPlae.StartsWith(SettingString.RoomD_Name_Prefix) || agvPlae.StartsWith(SettingString.DoubleLine_Name_Prefix) || agvPlae.Equals(SettingString.Standby) || else if ((agvPlae.StartsWith(SettingString.RoomD_Name_Prefix) || agvPlae.StartsWith(SettingString.DoubleLine_Name_Prefix) || agvPlae.Equals(SettingString.Standby) ||
agvPlae.Equals(SettingString.AutoCharge)) agvPlae.Equals(SettingString.AutoCharge))
...@@ -157,7 +157,7 @@ namespace DeviceLibrary ...@@ -157,7 +157,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.DoorDToC); MissionSys.AssignMission(agv, SettingString.DoorDToC);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else//4D->4D else//4D->4D
...@@ -187,7 +187,7 @@ namespace DeviceLibrary ...@@ -187,7 +187,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
AGVManager.MoveToRoomCStandy(agv); AGVManager.MoveToRoomCStandy(agv);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else else
{ {
...@@ -204,7 +204,7 @@ namespace DeviceLibrary ...@@ -204,7 +204,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.DoorCToD); MissionSys.AssignMission(agv, SettingString.DoorCToD);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
//都在风淋门内,到达风淋门外 //都在风淋门内,到达风淋门外
else else
...@@ -214,7 +214,7 @@ namespace DeviceLibrary ...@@ -214,7 +214,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
AGVManager.MoveToRoomCStandy(agv); AGVManager.MoveToRoomCStandy(agv);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
} }
...@@ -242,7 +242,7 @@ namespace DeviceLibrary ...@@ -242,7 +242,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
AGVManager.MoveToRoomCStandy(agv); AGVManager.MoveToRoomCStandy(agv);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else else
{ {
...@@ -253,7 +253,7 @@ namespace DeviceLibrary ...@@ -253,7 +253,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.DoorAirIn); MissionSys.AssignMission(agv, SettingString.DoorAirIn);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else else
{ {
...@@ -301,7 +301,7 @@ namespace DeviceLibrary ...@@ -301,7 +301,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, EmptyShelfPlace); MissionSys.AssignMission(agv, EmptyShelfPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else else
{ {
...@@ -366,7 +366,7 @@ namespace DeviceLibrary ...@@ -366,7 +366,7 @@ namespace DeviceLibrary
agv.RFID = node.RFID; agv.RFID = node.RFID;
if (node.StateEquals(eNodeStatus.MayLeave)) if (node.StateEquals(eNodeStatus.MayLeave))
{ {
if (!agv.CurTaskName.Equals("Enter")) if (!agv.CurTarName.Equals("Enter"))
{ {
jobStep.ToNextStep(TAKE_EMPTY_STEP.WAIT_TAKE_EMPTY_SHELF); jobStep.ToNextStep(TAKE_EMPTY_STEP.WAIT_TAKE_EMPTY_SHELF);
runInfo = "收到产线出料请求[ReadyLeave]的响应 " + EmptyShelfPlace + "出料架,小车链条运行" + "[RFID=" + RFID + "]"; runInfo = "收到产线出料请求[ReadyLeave]的响应 " + EmptyShelfPlace + "出料架,小车链条运行" + "[RFID=" + RFID + "]";
...@@ -374,7 +374,7 @@ namespace DeviceLibrary ...@@ -374,7 +374,7 @@ namespace DeviceLibrary
jobStep.Msg = msg; jobStep.Msg = msg;
//agv.RFID = node.RFID; //agv.RFID = node.RFID;
MissionSys.AssignMission(agv, SettingString.Enter); MissionSys.AssignMission(agv, SettingString.Enter);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
......
...@@ -32,7 +32,7 @@ namespace DeviceLibrary ...@@ -32,7 +32,7 @@ namespace DeviceLibrary
/// </summary> /// </summary>
public override string RunInfo public override string RunInfo
{ {
get { return string.Format("接满料任务:{0}", runInfo); } get { return string.Format("接满料任务[{0}][{1}]:{2}", CurTaskID, CurTaskState, runInfo); }
} }
/// <summary> /// <summary>
...@@ -55,7 +55,7 @@ namespace DeviceLibrary ...@@ -55,7 +55,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.CheckShelf); MissionSys.AssignMission(agv, SettingString.CheckShelf);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else if (jobStep.IsStep(GO_FULL_SHELF_STATION_STEP.WAIT_CHECK_RESULT)) else if (jobStep.IsStep(GO_FULL_SHELF_STATION_STEP.WAIT_CHECK_RESULT))
{ {
...@@ -79,7 +79,7 @@ namespace DeviceLibrary ...@@ -79,7 +79,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, FullShelfStationPlace); MissionSys.AssignMission(agv, FullShelfStationPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else if (AGVManager.CheckIsInAirDoor(agvPlace)) else if (AGVManager.CheckIsInAirDoor(agvPlace))
{ {
...@@ -88,7 +88,7 @@ namespace DeviceLibrary ...@@ -88,7 +88,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.DoorAirOut); MissionSys.AssignMission(agv, SettingString.DoorAirOut);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else if (agvPlace.StartsWith(SettingString.RoomC_Name_Prefix))//4C车间 else if (agvPlace.StartsWith(SettingString.RoomC_Name_Prefix))//4C车间
{ {
...@@ -97,7 +97,7 @@ namespace DeviceLibrary ...@@ -97,7 +97,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.DoorCToD); MissionSys.AssignMission(agv, SettingString.DoorCToD);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else else
{ {
...@@ -106,7 +106,7 @@ namespace DeviceLibrary ...@@ -106,7 +106,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, FullShelfStationPlace); MissionSys.AssignMission(agv, FullShelfStationPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
...@@ -123,7 +123,7 @@ namespace DeviceLibrary ...@@ -123,7 +123,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.DoorCToD); MissionSys.AssignMission(agv, SettingString.DoorCToD);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
...@@ -137,7 +137,7 @@ namespace DeviceLibrary ...@@ -137,7 +137,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, FullShelfStationPlace); MissionSys.AssignMission(agv, FullShelfStationPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
...@@ -180,7 +180,7 @@ namespace DeviceLibrary ...@@ -180,7 +180,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.Standby); MissionSys.AssignMission(agv, SettingString.Standby);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
} }
...@@ -212,14 +212,14 @@ namespace DeviceLibrary ...@@ -212,14 +212,14 @@ namespace DeviceLibrary
ClientNode node = AGVManager.nodeInfo[id]; ClientNode node = AGVManager.nodeInfo[id];
if (node.StateEquals(eNodeStatus.MayLeave)) if (node.StateEquals(eNodeStatus.MayLeave))
{ {
if (!agv.CurTaskName.Equals("Enter")) if (!agv.CurTarName.Equals("Enter"))
{ {
jobStep.ToNextStep(GO_FULL_SHELF_STATION_STEP.WAIT__FULL_SHELF_IN_AGV); jobStep.ToNextStep(GO_FULL_SHELF_STATION_STEP.WAIT__FULL_SHELF_IN_AGV);
runInfo = "收到双层线出料架请求[ReadyLeave]的响应 " + FullShelfStationPlace + "出料架,小车链条运行"; runInfo = "收到双层线出料架请求[ReadyLeave]的响应 " + FullShelfStationPlace + "出料架,小车链条运行";
msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(), runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv,SettingString.Enter); MissionSys.AssignMission(agv,SettingString.Enter);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
......
...@@ -40,7 +40,7 @@ namespace DeviceLibrary ...@@ -40,7 +40,7 @@ namespace DeviceLibrary
/// </summary> /// </summary>
public override string RunInfo public override string RunInfo
{ {
get { return string.Format("送满料任务[RFID={0}]:{1}",RFID,runInfo); } get { return string.Format("送满料任务[RFID={0}][{1}][{2}]:{3}",RFID, CurTaskID, CurTaskState, runInfo); }
} }
...@@ -61,7 +61,7 @@ namespace DeviceLibrary ...@@ -61,7 +61,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.DoorDToC); MissionSys.AssignMission(agv, SettingString.DoorDToC);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else else
{ {
...@@ -70,7 +70,7 @@ namespace DeviceLibrary ...@@ -70,7 +70,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, FullShelfPlace); MissionSys.AssignMission(agv, FullShelfPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
...@@ -86,7 +86,7 @@ namespace DeviceLibrary ...@@ -86,7 +86,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
AGVManager.MoveToRoomCStandy(agv); AGVManager.MoveToRoomCStandy(agv);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else else
{ {
...@@ -97,7 +97,7 @@ namespace DeviceLibrary ...@@ -97,7 +97,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.DoorAirIn); MissionSys.AssignMission(agv, SettingString.DoorAirIn);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else else
{ {
...@@ -106,7 +106,7 @@ namespace DeviceLibrary ...@@ -106,7 +106,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, FullShelfPlace); MissionSys.AssignMission(agv, FullShelfPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
...@@ -122,7 +122,7 @@ namespace DeviceLibrary ...@@ -122,7 +122,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, FullShelfPlace); MissionSys.AssignMission(agv, FullShelfPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
else if (jobStep.IsStep(SEND_FULL_SHELF_STEP.WAIT_REACH_TEMP_PLACE)) else if (jobStep.IsStep(SEND_FULL_SHELF_STEP.WAIT_REACH_TEMP_PLACE))
...@@ -139,7 +139,7 @@ namespace DeviceLibrary ...@@ -139,7 +139,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.DoorAirIn); MissionSys.AssignMission(agv, SettingString.DoorAirIn);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
else else
{ {
...@@ -148,7 +148,7 @@ namespace DeviceLibrary ...@@ -148,7 +148,7 @@ namespace DeviceLibrary
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv, FullShelfPlace); MissionSys.AssignMission(agv, FullShelfPlace);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
} }
...@@ -215,14 +215,14 @@ namespace DeviceLibrary ...@@ -215,14 +215,14 @@ namespace DeviceLibrary
System.Threading.Thread.Sleep(50); System.Threading.Thread.Sleep(50);
if (node.StateEquals(eNodeStatus.MayEnter)) if (node.StateEquals(eNodeStatus.MayEnter))
{ {
if (!agv.CurTaskName.Equals(SettingString.Leave)) if (!agv.CurTarName.Equals(SettingString.Leave))
{ {
jobStep.ToNextStep(SEND_FULL_SHELF_STEP.WAIT__SHELF_IN_LINE); jobStep.ToNextStep(SEND_FULL_SHELF_STEP.WAIT__SHELF_IN_LINE);
runInfo = "收到产线入料架请求[ReadyEnter]的响应 " + FullShelfPlace + "入料架,小车链条运行"; runInfo = "收到产线入料架请求[ReadyEnter]的响应 " + FullShelfPlace + "入料架,小车链条运行";
msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo); msg += string.Format("[{0}] {1}", jobStep.CurStep(),runInfo);
jobStep.Msg = msg; jobStep.Msg = msg;
MissionSys.AssignMission(agv,SettingString.Leave); MissionSys.AssignMission(agv,SettingString.Leave);
UpdateJobTaskInfo(agv.CurTaskName, agv.CurTaskID); UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
} }
} }
......
using Common;
namespace DeviceLibrary
{
/// <summary>
/// 待机任务
/// </summary>
public class StandyJob : Job
{
/// <summary>
/// 出完满料后-空车返回任务
/// </summary>
/// <param name="agvPlae">小车当前位置,空表示在待机位</param>
public StandyJob(string agvPlae)
{
this.agvPlace = agvPlae;
}
/// <summary>
/// 接收任务时,agv的位置
/// </summary>
private string agvPlace = "";
private string runInfo = "";
/// <summary>
/// 运行信息
/// </summary>
public override string RunInfo
{
get { return string.Format("待机任务[{0}][{1}]:{2}", CurTaskID, CurTaskState, runInfo); }
}
private JobStep<EXECUTE_STEP> curJobStep = new JobStep<EXECUTE_STEP>(EXECUTE_STEP.NONE);
/// <summary>
/// 空车返回执行
/// </summary>
/// <param name="agv"></param>
public override Job Execute(Agv_Info agv)
{
string msg = agv.Name + " ";
bool rtn = false;
agv.Msg = "";
CurTaskState = MissionSys.GetTakJobState(CurTaskID);
if (curJobStep.IsStep(EXECUTE_STEP.NONE))
{
if (agvPlace.Equals(SettingString.Standby))//在待机位不操作
{
curJobStep.ToNextStep(EXECUTE_STEP.END);
runInfo = "在待机位,不执行操作";
msg += runInfo;
curJobStep.Msg = msg;
}
else if (agvPlace.StartsWith(SettingString.RoomC_Name_Prefix))
{
curJobStep.ToNextStep(EXECUTE_STEP.WAIT_AGV_REACH_4D_DOOR);
runInfo = "从当前位置" + agvPlace + "回到待机位,先到"+SettingString.RoomD_Name+"门";
msg += runInfo;
curJobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.DoorCToD);
UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
}
else
{
curJobStep.ToNextStep(EXECUTE_STEP.WAIT_REACH_STANDBY);
runInfo = "从当前位置" + agvPlace + "回到待机位";
msg += runInfo;
curJobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.Standby);
UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
}
}
else if (curJobStep.IsStep(EXECUTE_STEP.WAIT_AGV_REACH_4D_DOOR))
{
if (MissionSys.CheckTaskFinished(agv, SettingString.DoorCToD, CurTaskState))
{
curJobStep.ToNextStep(EXECUTE_STEP.WAIT_REACH_STANDBY);
runInfo = "从"+SettingString.RoomD_Name+"门回到待机位";
msg += runInfo;
curJobStep.Msg = msg;
MissionSys.AssignMission(agv, SettingString.Standby);
UpdateJobTaskInfo(agv.CurTarName, agv.CurTaskID);
}
}
else if (curJobStep.IsStep(EXECUTE_STEP.WAIT_REACH_STANDBY))
{
if (MissionSys.CheckTaskFinished(agv, SettingString.Standby, CurTaskState))
{
curJobStep.ToNextStep(EXECUTE_STEP.END);
runInfo = "到达待机位";
msg += runInfo;
curJobStep.Msg = msg;
}
}
else if (curJobStep.IsStep(EXECUTE_STEP.END))
{
Job job = AGVManager.control.GetJob(agv);
if (job != null && !(job is StandyJob))
{
runInfo = "在待机位检测到任务,执行任务";
msg += runInfo;
curJobStep.Msg = msg;
return job;
}
}
return this;
}
/// <summary>
/// 执行流程
/// </summary>
private enum EXECUTE_STEP
{
/// <summary>
///
/// </summary>
NONE,
/// <summary>
/// 等待到达4D门
/// </summary>
WAIT_AGV_REACH_4D_DOOR,
/// <summary>
/// 等待到达待机位
/// </summary>
WAIT_REACH_STANDBY,
/// <summary>
///
/// </summary>
END
}
}
}
using System; using System.Drawing;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DeviceLibrary namespace DeviceLibrary
{ {
...@@ -48,7 +44,7 @@ namespace DeviceLibrary ...@@ -48,7 +44,7 @@ namespace DeviceLibrary
/// <summary> /// <summary>
/// 节点位置坐标 /// 节点位置坐标
/// </summary> /// </summary>
public PositionStru position; public PointF Position;
/// <summary> /// <summary>
/// 料架数量信息 /// 料架数量信息
/// </summary> /// </summary>
...@@ -56,9 +52,9 @@ namespace DeviceLibrary ...@@ -56,9 +52,9 @@ namespace DeviceLibrary
{ {
get get
{ {
if(Common.missionManager !=null && Common.missionManager.GetUnlockInfo(Name) !=null) if(AGVManager.unlockManager !=null && AGVManager.unlockManager.GetUnlockInfo(Name) !=null)
{ {
return Common.missionManager.GetUnlockCnt(Name); return AGVManager.unlockManager.GetUnlockCnt(Name);
} }
return 0; return 0;
} }
...@@ -136,7 +132,7 @@ namespace DeviceLibrary ...@@ -136,7 +132,7 @@ namespace DeviceLibrary
Online = false; Online = false;
} }
public virtual Job GetNewJob(Agv_Info agv) public override Job GetNewJob(Agv_Info agv)
{ {
return null; return null;
} }
......
...@@ -3,9 +3,11 @@ using System.Collections.Generic; ...@@ -3,9 +3,11 @@ using System.Collections.Generic;
using System.IO; using System.IO;
using System.Net.Sockets; using System.Net.Sockets;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Text;
using System.Threading; using System.Threading;
using System.Windows.Forms; using System.Windows.Forms;
using Common; using Common;
using static DeviceLibrary.Agv_Info;
namespace DeviceLibrary namespace DeviceLibrary
{ {
...@@ -21,17 +23,85 @@ namespace DeviceLibrary ...@@ -21,17 +23,85 @@ namespace DeviceLibrary
/// 小车信息 /// 小车信息
/// </summary> /// </summary>
public static List<Agv_Info> agvInfo; public static List<Agv_Info> agvInfo;
public static System.Windows.Forms.TextBox logTextBox;
public static System.Windows.Forms.DataGridView missionView;
public static AgvServer server; public static AgvServer server;
public static Control control; public static Control control;
public static WebService web; public static WebService web;
public static UnlockMissionManager unlockManager; public static UnlockMissionManager unlockManager;
public static ChargeManager Charge; public static ChargeManager Charge;
//public static StandbyManager Standby;
public static List<JobType> jobTypes; public static List<JobType> jobTypes;
public static readonly string CONFIG_PATH = AppDomain.CurrentDomain.BaseDirectory + "Config\\"; public static readonly string CONFIG_PATH = AppDomain.CurrentDomain.BaseDirectory + "Config\\";
/// <summary> /// <summary>
/// 初始化配置
/// </summary>
public static void Init()
{
string path;
string[] line;
string[] temp;
bool isuse;
string rfid = "";
Charge = new ChargeManager();
//Standby = new StandbyManager();
agvInfo = new List<Agv_Info>();
jobTypes = new List<JobType>();
jobTypes.Add(new JobForRoomD());
jobTypes.Add(new ChargeJobType());
path = CONFIG_PATH + SettingString.FileName_AGV;
line = File.ReadAllLines(path, Encoding.UTF8);
for (int i = 1; i < line.Length; i++)
{
temp = line[i].Split(',');
if (temp.Length != 5) continue;
bool.TryParse(ReadIni(temp[1], SettingString.IsUse), out isuse);
rfid = ReadIni(temp[1], SettingString.RFID);
agvInfo.Add(new Agv_Info(temp[0], temp[1], temp[2], temp[3], temp[4], isuse, rfid));
}
//任务加载
MissionSys.Init();
//节点加载
nodeInfo = new List<ClientNode>();
path = CONFIG_PATH + SettingString.FileName_AgvProductionLine;
line = System.IO.File.ReadAllLines(path, Encoding.GetEncoding("gb2312"));
for (int i = 1; i < line.Length; i++)
{
temp = line[i].Split(',');
if (temp.Length != 6) continue;
Boolean.TryParse(ReadIni(temp[1], SettingString.IsUse), out bool isUse);
Int32.TryParse(ReadIni(temp[1], SettingString.EmptyShelfCnt), out int emptyShelfCnt);
nodeInfo.Add(new ClientNode(temp[1], temp[2], temp[3], temp[0], temp[4], temp[5], isUse, emptyShelfCnt));
}
//读取解绑信息
AGVManager.ReadUnlockLineInfo();
}
/// <summary>
/// 读取配置
/// </summary>
/// <param name="section"></param>
/// <param name="key"></param>
/// <returns></returns>
public static string ReadIni(string section, string key)
{
return IniFileHelper.ReadValue(section, key, CONFIG_PATH + SettingString.FileName_tempData);
}
/// <summary>
/// 写入配置
/// </summary>
/// <param name="section"></param>
/// <param name="key"></param>
/// <param name="value"></param>
public static void WriteIni(string section, string key, string value)
{
IniFileHelper.WriteValue(section, key, value, CONFIG_PATH + SettingString.FileName_tempData);
}
/// <summary>
/// 根据线体名获取节点名 /// 根据线体名获取节点名
/// </summary> /// </summary>
/// <param name="lineName"></param> /// <param name="lineName"></param>
...@@ -679,7 +749,7 @@ namespace DeviceLibrary ...@@ -679,7 +749,7 @@ namespace DeviceLibrary
return nodeName; return nodeName;
foreach (var item in clientNodes) foreach (var item in clientNodes)
{ {
double dis = Math.Sqrt(Math.Pow((agv.Position.x - item.position.X), 2) + Math.Pow((agv.Position.y - item.position.Y), 2)); double dis = Math.Sqrt(Math.Pow((agv.Position.Point.X - item.Position.X), 2) + Math.Pow((agv.Position.Point.Y - item.Position.Y), 2));
log.Debug(string.Format("{0} 距离{1}={2}", agv.Name, item.Name, dis.ToString("f2"))); log.Debug(string.Format("{0} 距离{1}={2}", agv.Name, item.Name, dis.ToString("f2")));
if (dis < minDis) if (dis < minDis)
{ {
...@@ -755,9 +825,9 @@ namespace DeviceLibrary ...@@ -755,9 +825,9 @@ namespace DeviceLibrary
Thread.Sleep(50); Thread.Sleep(50);
if (rtn) if (rtn)
{ {
clientNode.position.X = mirPosition.pos_x; clientNode.Position.X = mirPosition.Point.X;
clientNode.position.Y = mirPosition.pos_y; clientNode.Position.Y = mirPosition.Point.Y;
log.Debug(string.Format("软件开启:{0} 获取节点位置({1},{2})", clientNode.Name, clientNode.position.X, clientNode.position.Y)); log.Debug(string.Format("软件开启:{0} 获取节点位置({1},{2})", clientNode.Name, clientNode.Position.X, clientNode.Position.Y));
} }
else else
{ {
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
using RestSharp; using RestSharp;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing;
namespace DeviceLibrary namespace DeviceLibrary
{ {
...@@ -134,9 +135,9 @@ namespace DeviceLibrary ...@@ -134,9 +135,9 @@ namespace DeviceLibrary
tempLocation = "4CFeederIn"; tempLocation = "4CFeederIn";
} }
if (Common.GetNodeNameByLineName(tempLocation, out string loc)) if (AGVManager.GetNodeNameByLineName(tempLocation, out string loc))
{ {
int i = Common.FindNode(loc); int i = AGVManager.FindNode(loc);
if (i > -1) if (i > -1)
{ {
#region 检查是否有空料架要出,有则先出空料架 #region 检查是否有空料架要出,有则先出空料架
...@@ -165,7 +166,7 @@ namespace DeviceLibrary ...@@ -165,7 +166,7 @@ namespace DeviceLibrary
#endregion #endregion
res[0].location = loc; res[0].location = loc;
dest = res[0]; dest = res[0];
Common.GetLineNameByNodeName(loc, out string line); AGVManager.GetLineNameByNodeName(loc, out string line);
A6_Target = res[0].ShowInfo(line); A6_Target = res[0].ShowInfo(line);
log.Debug("查找满料架任务[RFID=" + rfid + "]:目的地为 " + loc + " [产线名 " + line + "]"); log.Debug("查找满料架任务[RFID=" + rfid + "]:目的地为 " + loc + " [产线名 " + line + "]");
return true; return true;
...@@ -217,7 +218,7 @@ namespace DeviceLibrary ...@@ -217,7 +218,7 @@ namespace DeviceLibrary
//GET /ESMTCommonInterface/CommonService.asmx/UpdateStatusBy?id=string&location=string HTTP/1.1 //GET /ESMTCommonInterface/CommonService.asmx/UpdateStatusBy?id=string&location=string HTTP/1.1
//Host: 10.85.17.233 //Host: 10.85.17.233
Common.GetLineNameByNodeName(nodeName, out string lineName); AGVManager.GetLineNameByNodeName(nodeName, out string lineName);
if (lineName.Equals("FeederIn")) if (lineName.Equals("FeederIn"))
{ {
lineName = "Feeder"; lineName = "Feeder";
...@@ -707,25 +708,4 @@ namespace DeviceLibrary ...@@ -707,25 +708,4 @@ namespace DeviceLibrary
public Dictionary<string, string> data { get; set; } public Dictionary<string, string> data { get; set; }
} }
/// <summary>
/// Mir位置
/// </summary>
public class MirPosition
{
/// <summary>
/// 位置名称
/// </summary>
public string name { get; set; }
/// <summary>
/// X轴方位
/// </summary>
public double orientation { set; get; }
/// <summary>
/// x轴
/// </summary>
public double pos_x { get; set; }
public double pos_y { get; set; }
}
} }
using System; using Common;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
...@@ -25,7 +26,7 @@ namespace DeviceLibrary ...@@ -25,7 +26,7 @@ namespace DeviceLibrary
UnlockMissions = new Dictionary<string, UnlockInfo>(); UnlockMissions = new Dictionary<string, UnlockInfo>();
foreach (ClientNode item in clientNodes) foreach (ClientNode item in clientNodes)
{ {
if (item.Name.StartsWith("A") || item.Name.Equals(SettingString.D4FeederIn) || item.Name.Equals(SettingString.C4FeederIn)) if (item.Name.StartsWith("A") || item.Name.Equals(SettingString.RoomCFeederIn) || item.Name.Equals(SettingString.RoomDFeederIn))
continue; continue;
NodeUnlockMissions.Add(item.Name, new UnlockedShelf()); NodeUnlockMissions.Add(item.Name, new UnlockedShelf());
UnlockMissions = new Dictionary<string, UnlockInfo>(); UnlockMissions = new Dictionary<string, UnlockInfo>();
...@@ -75,12 +76,12 @@ namespace DeviceLibrary ...@@ -75,12 +76,12 @@ namespace DeviceLibrary
{ {
UnlockMissions[nodeName] = new UnlockInfo(nodeName, NodeUnlockMissions[nodeName].EmptyCnt, NodeUnlockMissions[nodeName].GetRfidWithTime()); UnlockMissions[nodeName] = new UnlockInfo(nodeName, NodeUnlockMissions[nodeName].EmptyCnt, NodeUnlockMissions[nodeName].GetRfidWithTime());
WriteUnlockLineInfo(); WriteUnlockLineInfo();
Common.WriteIni(nodeName, SettingString.EmptyShelfCnt, NodeUnlockMissions[nodeName].EmptyCnt.ToString()); AGVManager.WriteIni(nodeName, SettingString.EmptyShelfCnt, NodeUnlockMissions[nodeName].EmptyCnt.ToString());
Common.LogInfo(string.Format("{0}解绑任务添加成功:RFID={1}", nodeName, rfid)); LogUtil.info(string.Format("{0}解绑任务添加成功:RFID={1}", nodeName, rfid));
MissionChanged?.Invoke(UnlockMissions); MissionChanged?.Invoke(UnlockMissions);
} }
else else
Common.LogInfo(string.Format("{0}解绑任务添加失败:RFID={1}", nodeName, rfid)); LogUtil.info(string.Format("{0}解绑任务添加失败:RFID={1}", nodeName, rfid));
return rtn; return rtn;
} }
public bool DelMission(string nodeName, string rfid) public bool DelMission(string nodeName, string rfid)
...@@ -90,12 +91,12 @@ namespace DeviceLibrary ...@@ -90,12 +91,12 @@ namespace DeviceLibrary
{ {
UnlockMissions[nodeName] = new UnlockInfo(nodeName, NodeUnlockMissions[nodeName].EmptyCnt, NodeUnlockMissions[nodeName].GetRfidWithTime()); UnlockMissions[nodeName] = new UnlockInfo(nodeName, NodeUnlockMissions[nodeName].EmptyCnt, NodeUnlockMissions[nodeName].GetRfidWithTime());
WriteUnlockLineInfo(); WriteUnlockLineInfo();
Common.WriteIni(nodeName, SettingString.EmptyShelfCnt, NodeUnlockMissions[nodeName].EmptyCnt.ToString()); AGVManager.WriteIni(nodeName, SettingString.EmptyShelfCnt, NodeUnlockMissions[nodeName].EmptyCnt.ToString());
Common.LogInfo(string.Format("{0}解绑任务删除成功:RFID={1}", nodeName, rfid)); LogUtil.info(string.Format("{0}解绑任务删除成功:RFID={1}", nodeName, rfid));
MissionChanged?.Invoke(UnlockMissions); MissionChanged?.Invoke(UnlockMissions);
} }
else else
Common.LogInfo(string.Format("{0}解绑任务删除失败:RFID={1}", nodeName, rfid)); LogUtil.info(string.Format("{0}解绑任务删除失败:RFID={1}", nodeName, rfid));
return rtn; return rtn;
} }
/// <summary> /// <summary>
...@@ -103,7 +104,7 @@ namespace DeviceLibrary ...@@ -103,7 +104,7 @@ namespace DeviceLibrary
/// </summary> /// </summary>
void WriteUnlockLineInfo() void WriteUnlockLineInfo()
{ {
using (System.IO.StreamWriter file = new System.IO.StreamWriter(Common.CONFIG_PATH + "UnlockInfo.json")) using (System.IO.StreamWriter file = new System.IO.StreamWriter(AGVManager.CONFIG_PATH + "UnlockInfo.json"))
{ {
string s = JsonHelper.SerializeObject(this); string s = JsonHelper.SerializeObject(this);
file.WriteLine(s); file.WriteLine(s);
...@@ -119,7 +120,7 @@ namespace DeviceLibrary ...@@ -119,7 +120,7 @@ namespace DeviceLibrary
public List<UnlockRfid> UnlockRfids { get; private set; } public List<UnlockRfid> UnlockRfids { get; private set; }
public UnlockInfo(string nodeName, int count, Dictionary<string, string> rfids) public UnlockInfo(string nodeName, int count, Dictionary<string, string> rfids)
{ {
if (Common.GetLineNameByNodeName(nodeName, out string line)) if (AGVManager.GetLineNameByNodeName(nodeName, out string line))
{ {
Line = line; Line = line;
} }
......
...@@ -54,7 +54,7 @@ namespace DeviceLibrary ...@@ -54,7 +54,7 @@ namespace DeviceLibrary
int tmp = EmptyCnt; int tmp = EmptyCnt;
System.Threading.Interlocked.Increment(ref tmp); System.Threading.Interlocked.Increment(ref tmp);
EmptyCnt = tmp; EmptyCnt = tmp;
Rfids.Add(rfid, DateTime.Now.ToString("yyyy/MM/dd/HH:mm:ss,fff")); Rfids.Add(rfid, DateTime.Now.ToString("MM/dd/HH:mm:ss,fff"));
return true; return true;
} }
return false; return false;
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!