Commit c21bf5fd 张东亮

出入库运行ok

1 个父辈 517829cb
正在显示 91 个修改的文件 包含 7533 行增加682 行删除
...@@ -11,7 +11,9 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LoadCSVLibrary", "source\Lo ...@@ -11,7 +11,9 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LoadCSVLibrary", "source\Lo
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CarriageClient", "source\CarriageClient\CarriageClient.csproj", "{0D2542F5-DD62-4352-82D0-383D9A045E74}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CarriageClient", "source\CarriageClient\CarriageClient.csproj", "{0D2542F5-DD62-4352-82D0-383D9A045E74}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JAKA", "..\..\..\..\Projects\CSharp-Workspace\Dolen\JAKA\JAKA.csproj", "{B702AB04-BB76-491F-812A-603298D08FBF}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dolen", "..\..\..\..\Projects\CSharp-Workspace\Dolen\Dolen\Dolen.csproj", "{1D8684A2-5358-4F9C-9B42-9794F8F4B6B6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JAKA", "source\JAKA\JAKA.csproj", "{B702AB04-BB76-491F-812A-603298D08FBF}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
...@@ -35,6 +37,10 @@ Global ...@@ -35,6 +37,10 @@ Global
{0D2542F5-DD62-4352-82D0-383D9A045E74}.Debug|Any CPU.Build.0 = Debug|Any CPU {0D2542F5-DD62-4352-82D0-383D9A045E74}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0D2542F5-DD62-4352-82D0-383D9A045E74}.Release|Any CPU.ActiveCfg = Release|Any CPU {0D2542F5-DD62-4352-82D0-383D9A045E74}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0D2542F5-DD62-4352-82D0-383D9A045E74}.Release|Any CPU.Build.0 = Release|Any CPU {0D2542F5-DD62-4352-82D0-383D9A045E74}.Release|Any CPU.Build.0 = Release|Any CPU
{1D8684A2-5358-4F9C-9B42-9794F8F4B6B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1D8684A2-5358-4F9C-9B42-9794F8F4B6B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1D8684A2-5358-4F9C-9B42-9794F8F4B6B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1D8684A2-5358-4F9C-9B42-9794F8F4B6B6}.Release|Any CPU.Build.0 = Release|Any CPU
{B702AB04-BB76-491F-812A-603298D08FBF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B702AB04-BB76-491F-812A-603298D08FBF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B702AB04-BB76-491F-812A-603298D08FBF}.Debug|Any CPU.Build.0 = Debug|Any CPU {B702AB04-BB76-491F-812A-603298D08FBF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B702AB04-BB76-491F-812A-603298D08FBF}.Release|Any CPU.ActiveCfg = Release|Any CPU {B702AB04-BB76-491F-812A-603298D08FBF}.Release|Any CPU.ActiveCfg = Release|Any CPU
......
此文件类型无法预览
此文件类型无法预览
此文件类型无法预览
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<add key="App_AutoRun" value="0" /> <add key="App_AutoRun" value="0" />
<add key="App_Title" value="运输客户端" /> <add key="App_Title" value="运输客户端" />
<!--Server address--> <!--Server address-->
<add key="http.server" value="http://192.168.1.123:8800/" /> <add key="http.server" value="http://localhost/smf-core/" />
<!-- 开始吹气的判断值(配置值=服务器发送的湿度值-开始吹气值)--> <!-- 开始吹气的判断值(配置值=服务器发送的湿度值-开始吹气值)-->
<add key="StartBlowValue" value="4" /> <add key="StartBlowValue" value="4" />
<!-- 停止吹气的判断值(配置值=服务器发送的湿度值-停止吹气值)--> <!-- 停止吹气的判断值(配置值=服务器发送的湿度值-停止吹气值)-->
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
<add key="ImagePath" value="\Images\" /> <add key="ImagePath" value="\Images\" />
<add key="UseBuzzer" value="0" /> <add key="UseBuzzer" value="0" />
<!--获取库位的料仓cid列表;多个用,分割--> <!--获取库位的料仓cid列表;多个用,分割-->
<add key="Line_CID" value="01,02,03,04,05,06" /> <add key="Line_CID" value="T01-1,T01-2,T01-3,T01-4,T01-5,T01-6" />
<!--end one store config--> <!--end one store config-->
<!--二维码类型列表配置,用#分割,一维码=Barcode 二维码: QR Code#Data Matrix ECC 200#Micro QR Code--> <!--二维码类型列表配置,用#分割,一维码=Barcode 二维码: QR Code#Data Matrix ECC 200#Micro QR Code-->
<add key="CodeType" value="Data Matrix ECC 200#QR Code" /> <add key="CodeType" value="Data Matrix ECC 200#QR Code" />
...@@ -66,12 +66,14 @@ ...@@ -66,12 +66,14 @@
<add key="TrayInOutletInfo" value="" /> <add key="TrayInOutletInfo" value="" />
<!--入料口上的料盘信息--> <!--入料口上的料盘信息-->
<add key="TrayInInletInfo" value="" /> <add key="TrayInInletInfo" value="" />
<!--料盘厚度检测范围:分别对应三种厚度的最小值和最大值:5812。-->
<add key="ReelHeightRange" value="5,10#10,16#16,20" />
<!--夹爪夹紧时忽略的料号列表,多个用#分割--> <!--夹爪夹紧时忽略的料号列表,多个用#分割-->
<add key="PNList" value="3402021720#3402021721#3402021100#3402021101#3402021102#3402021103#3402021104#3402021105#3402021106#3402021107#3402021108#3402021109#3402021112#3402021122" /> <add key="PNList" value="3402021720#3402021721#3402021100#3402021101#3402021102#3402021103#3402021104#3402021105#3402021106#3402021107#3402021108#3402021109#3402021112#3402021122" />
</appSettings> </appSettings>
<log4net> <log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logs/CarriageClient.log" /> <file value="logs/Client/CarriageClient.log" />
<param name="Encoding" value="UTF-8" /> <param name="Encoding" value="UTF-8" />
<appendToFile value="true" /> <appendToFile value="true" />
<rollingStyle value="Date" /> <rollingStyle value="Date" />
......
...@@ -260,10 +260,6 @@ ...@@ -260,10 +260,6 @@
</None> </None>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\..\..\..\Projects\CSharp-Workspace\Dolen\JAKA\JAKA.csproj">
<Project>{B702AB04-BB76-491F-812A-603298D08FBF}</Project>
<Name>JAKA</Name>
</ProjectReference>
<ProjectReference Include="..\Common\Common.csproj"> <ProjectReference Include="..\Common\Common.csproj">
<Project>{43cdd09e-fcf3-4960-a01d-3bbfe9933122}</Project> <Project>{43cdd09e-fcf3-4960-a01d-3bbfe9933122}</Project>
<Name>Common</Name> <Name>Common</Name>
...@@ -272,6 +268,10 @@ ...@@ -272,6 +268,10 @@
<Project>{513bc1c9-800d-43a6-9499-3700baec3554}</Project> <Project>{513bc1c9-800d-43a6-9499-3700baec3554}</Project>
<Name>DeviceLibrary</Name> <Name>DeviceLibrary</Name>
</ProjectReference> </ProjectReference>
<ProjectReference Include="..\JAKA\JAKA.csproj">
<Project>{b702ab04-bb76-491f-812a-603298d08fbf}</Project>
<Name>JAKA</Name>
</ProjectReference>
<ProjectReference Include="..\LoadCVSLibrary\LoadCSVLibrary.csproj"> <ProjectReference Include="..\LoadCVSLibrary\LoadCSVLibrary.csproj">
<Project>{064bebf5-8faa-4ea2-a5f3-a06e6e7d9251}</Project> <Project>{064bebf5-8faa-4ea2-a5f3-a06e6e7d9251}</Project>
<Name>LoadCSVLibrary</Name> <Name>LoadCSVLibrary</Name>
......
namespace OnlineStore.XLRStore namespace OnlineStore.CarriageClient
{ {
partial class FrmAbout partial class FrmAbout
{ {
......
...@@ -10,7 +10,7 @@ using System.Text; ...@@ -10,7 +10,7 @@ using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
namespace OnlineStore.XLRStore namespace OnlineStore.CarriageClient
{ {
internal partial class FrmAbout : FrmBase internal partial class FrmAbout : FrmBase
{ {
......
namespace OnlineStore.XLRStore namespace OnlineStore.CarriageClient
{ {
internal partial class FrmBase internal partial class FrmBase
{ {
......
...@@ -9,7 +9,7 @@ using System.Text; ...@@ -9,7 +9,7 @@ using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
namespace OnlineStore.XLRStore namespace OnlineStore.CarriageClient
{ {
internal partial class FrmBase : Form internal partial class FrmBase : Form
{ {
...@@ -45,7 +45,7 @@ namespace OnlineStore.XLRStore ...@@ -45,7 +45,7 @@ namespace OnlineStore.XLRStore
} }
return str; return str;
} }
internal static string GetCodeNum(string codeName = "SO908-XLRStore") internal static string GetCodeNum(string codeName = "SO1049-CarriageClient")
{ {
byte[] byteArray = System.Text.Encoding.ASCII.GetBytes(codeName); byte[] byteArray = System.Text.Encoding.ASCII.GetBytes(codeName);
string result = ""; string result = "";
......
namespace OnlineStore.XLRStore namespace OnlineStore.CarriageClient
{ {
partial class FrmClient partial class FrmClient
{ {
...@@ -36,13 +36,13 @@ ...@@ -36,13 +36,13 @@
this.tabPage2 = new System.Windows.Forms.TabPage(); this.tabPage2 = new System.Windows.Forms.TabPage();
this.panel1 = new System.Windows.Forms.Panel(); this.panel1 = new System.Windows.Forms.Panel();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.robotDataControl = new OnlineStore.XLRStore.ReelDataControl(); this.robotDataControl = new OnlineStore.CarriageClient.ReelDataControl();
this.robotControl = new OnlineStore.XLRStore.EquipControl(); this.robotControl = new OnlineStore.CarriageClient.EquipControl();
this.inletControl = new OnlineStore.XLRStore.EquipControl(); this.inletControl = new OnlineStore.CarriageClient.EquipControl();
this.outletControl = new OnlineStore.XLRStore.EquipControl(); this.outletControl = new OnlineStore.CarriageClient.EquipControl();
this.outletDataControl = new OnlineStore.XLRStore.ReelDataControl(); this.outletDataControl = new OnlineStore.CarriageClient.ReelDataControl();
this.inletDataControl = new OnlineStore.XLRStore.ReelDataControl(); this.inletDataControl = new OnlineStore.CarriageClient.ReelDataControl();
this.ngboxDataControl = new OnlineStore.XLRStore.ReelDataControl(); this.ngboxDataControl = new OnlineStore.CarriageClient.ReelDataControl();
this.lblStatus = new System.Windows.Forms.Label(); this.lblStatus = new System.Windows.Forms.Label();
this.lblWarnMsg = new System.Windows.Forms.Label(); this.lblWarnMsg = new System.Windows.Forms.Label();
this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components); this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
...@@ -295,7 +295,7 @@ ...@@ -295,7 +295,7 @@
// //
this.notifyIcon1.ContextMenuStrip = this.contextMenuStrip1; this.notifyIcon1.ContextMenuStrip = this.contextMenuStrip1;
this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon"))); this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon")));
this.notifyIcon1.Text = "流水线料仓"; this.notifyIcon1.Text = "运输客户端";
this.notifyIcon1.Visible = true; this.notifyIcon1.Visible = true;
this.notifyIcon1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseDoubleClick); this.notifyIcon1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseDoubleClick);
// //
......
...@@ -16,7 +16,7 @@ using System.Text; ...@@ -16,7 +16,7 @@ using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
namespace OnlineStore.XLRStore namespace OnlineStore.CarriageClient
{ {
internal partial class FrmClient : FrmBase internal partial class FrmClient : FrmBase
{ {
...@@ -204,27 +204,27 @@ namespace OnlineStore.XLRStore ...@@ -204,27 +204,27 @@ namespace OnlineStore.XLRStore
} }
if (BufferDataManager.TrayInInletInfo == null) if (BufferDataManager.TrayInInletInfo == null)
{ {
ngboxDataControl.ShowData("入料口物料信息", BufferDataManager.TrayInInletInfo, IO_VALUE.LOW); inletDataControl.ShowData("入料口物料信息", BufferDataManager.TrayInInletInfo, IO_VALUE.LOW);
} }
else else
{ {
ngboxDataControl.ShowData("入料口物料信息", BufferDataManager.TrayInInletInfo, IO_VALUE.HIGH); inletDataControl.ShowData("入料口物料信息", BufferDataManager.TrayInInletInfo, IO_VALUE.HIGH);
} }
if (BufferDataManager.TrayInOutletInfo == null) if (BufferDataManager.TrayInOutletInfo == null)
{ {
ngboxDataControl.ShowData("出料口物料信息", BufferDataManager.TrayInOutletInfo, IO_VALUE.LOW); outletDataControl.ShowData("出料口物料信息", BufferDataManager.TrayInOutletInfo, IO_VALUE.LOW);
} }
else else
{ {
ngboxDataControl.ShowData("出料口物料信息", BufferDataManager.TrayInOutletInfo, IO_VALUE.HIGH); outletDataControl.ShowData("出料口物料信息", BufferDataManager.TrayInOutletInfo, IO_VALUE.HIGH);
} }
if (BufferDataManager.TrayInRobotInfo == null) if (BufferDataManager.TrayInRobotInfo == null)
{ {
ngboxDataControl.ShowData("机器人夹爪物料信息", BufferDataManager.TrayInRobotInfo, IO_VALUE.LOW); robotDataControl.ShowData("机器人夹爪物料信息", BufferDataManager.TrayInRobotInfo, IO_VALUE.LOW);
} }
else else
{ {
ngboxDataControl.ShowData("机器人夹爪物料信息", BufferDataManager.TrayInRobotInfo, IO_VALUE.HIGH); robotDataControl.ShowData("机器人夹爪物料信息", BufferDataManager.TrayInRobotInfo, IO_VALUE.HIGH);
} }
} }
...@@ -337,6 +337,7 @@ namespace OnlineStore.XLRStore ...@@ -337,6 +337,7 @@ namespace OnlineStore.XLRStore
AxisManager.instance.CloseAllPort(); AxisManager.instance.CloseAllPort();
AxisManager.instance.CloseCard(); AxisManager.instance.CloseCard();
RFIDManager.Close(); RFIDManager.Close();
StoreBean.robotEquip.StopRobotService();
if (Camera._cam != null) if (Camera._cam != null)
{ {
Camera._cam.CloseAll(); Camera._cam.CloseAll();
...@@ -419,7 +420,7 @@ namespace OnlineStore.XLRStore ...@@ -419,7 +420,7 @@ namespace OnlineStore.XLRStore
{ {
if (StoreBean.runStatus.Equals(RunStatus.Wait)) if (StoreBean.runStatus.Equals(RunStatus.Wait))
{ {
MessageBox.Show(StoreBean.Name + "流水线未启动,不需要停止", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); MessageBox.Show(StoreBean.Name + "客户端未启动,不需要停止", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return; return;
} }
LogUtil.info(StoreBean.Name + "点击:停止"); LogUtil.info(StoreBean.Name + "点击:停止");
...@@ -435,7 +436,7 @@ namespace OnlineStore.XLRStore ...@@ -435,7 +436,7 @@ namespace OnlineStore.XLRStore
{ {
if (StoreBean.runStatus.Equals(RunStatus.Wait)) if (StoreBean.runStatus.Equals(RunStatus.Wait))
{ {
MessageBox.Show(StoreBean.Name + "流水线未启动,无法复位", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); MessageBox.Show(StoreBean.Name + "客户端未启动,无法复位", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return; return;
} }
LogUtil.info(StoreBean.Name + "点击:复位"); LogUtil.info(StoreBean.Name + "点击:复位");
......
namespace OnlineStore.XLRStore namespace OnlineStore.CarriageClient
{ {
partial class FrmCrispTray partial class FrmCrispTray
{ {
......
...@@ -15,7 +15,7 @@ using System.Text; ...@@ -15,7 +15,7 @@ using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
namespace OnlineStore.XLRStore namespace OnlineStore.CarriageClient
{ {
internal partial class FrmCrispTray : FrmBase internal partial class FrmCrispTray : FrmBase
{ {
......
namespace OnlineStore.XLRStore namespace OnlineStore.CarriageClient
{ {
partial class FrmPwd partial class FrmPwd
{ {
......
...@@ -10,7 +10,7 @@ using System.Text; ...@@ -10,7 +10,7 @@ using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
namespace OnlineStore.XLRStore namespace OnlineStore.CarriageClient
{ {
internal partial class FrmPwd : FrmBase internal partial class FrmPwd : FrmBase
{ {
......
...@@ -7,7 +7,7 @@ using System.Text; ...@@ -7,7 +7,7 @@ using System.Text;
using System.Windows; using System.Windows;
using System.Windows.Forms; using System.Windows.Forms;
namespace OnlineStore.XLRStore namespace OnlineStore.CarriageClient
{ {
public class ManagerUtil public class ManagerUtil
{ {
......
using log4net; using log4net;
using log4net.Config; using log4net.Config;
using OnlineStore.Common; using OnlineStore.Common;
using OnlineStore.XLRStore; using OnlineStore.CarriageClient;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
...@@ -11,7 +11,7 @@ using System.Threading.Tasks; ...@@ -11,7 +11,7 @@ using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using OnlineStore.DeviceLibrary; using OnlineStore.DeviceLibrary;
namespace OnlineStore.XLRStore namespace OnlineStore.CarriageClient
{ {
static class Program static class Program
{ {
......
...@@ -5,11 +5,11 @@ using System.Runtime.InteropServices; ...@@ -5,11 +5,11 @@ using System.Runtime.InteropServices;
// 有关程序集的常规信息通过以下 // 有关程序集的常规信息通过以下
// 特性集控制。更改这些特性值可修改 // 特性集控制。更改这些特性值可修改
// 与程序集关联的信息。 // 与程序集关联的信息。
[assembly: AssemblyTitle("XLRStore")] [assembly: AssemblyTitle("CarriageClient")]
[assembly: AssemblyDescription("")] [assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")] [assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("XLRStore")] [assembly: AssemblyProduct("CarriageClient")]
[assembly: AssemblyCopyright("Copyright © 2017")] [assembly: AssemblyCopyright("Copyright © 2017")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]
......
using OnlineStore.XLRStore.useControl; using OnlineStore.CarriageClient.useControl;
namespace OnlineStore.XLRStore namespace OnlineStore.CarriageClient
{ {
partial class FrmInletEquip partial class FrmInletEquip
{ {
...@@ -22,6 +22,37 @@ namespace OnlineStore.XLRStore ...@@ -22,6 +22,37 @@ namespace OnlineStore.XLRStore
this.timer1 = new System.Windows.Forms.Timer(this.components); this.timer1 = new System.Windows.Forms.Timer(this.components);
this.btnScan = new System.Windows.Forms.Button(); this.btnScan = new System.Windows.Forms.Button();
this.tabPage1 = new System.Windows.Forms.TabPage(); this.tabPage1 = new System.Windows.Forms.TabPage();
this.lblheightwidth = new System.Windows.Forms.Label();
this.groupBox5 = new System.Windows.Forms.GroupBox();
this.groupBox9 = new System.Windows.Forms.GroupBox();
this.label7 = new System.Windows.Forms.Label();
this.txtAd4Result = new System.Windows.Forms.TextBox();
this.label8 = new System.Windows.Forms.Label();
this.txtAd4Coeff = new System.Windows.Forms.TextBox();
this.txtAd4BaseVal = new System.Windows.Forms.TextBox();
this.label9 = new System.Windows.Forms.Label();
this.groupBox10 = new System.Windows.Forms.GroupBox();
this.label10 = new System.Windows.Forms.Label();
this.txtAd3Result = new System.Windows.Forms.TextBox();
this.label11 = new System.Windows.Forms.Label();
this.txtAd3Coeff = new System.Windows.Forms.TextBox();
this.txtAd3BaseVal = new System.Windows.Forms.TextBox();
this.label12 = new System.Windows.Forms.Label();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.groupBox8 = new System.Windows.Forms.GroupBox();
this.label3 = new System.Windows.Forms.Label();
this.txtAd2Result = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
this.txtAd2Coeff = new System.Windows.Forms.TextBox();
this.txtAd2BaseVal = new System.Windows.Forms.TextBox();
this.label6 = new System.Windows.Forms.Label();
this.groupBox7 = new System.Windows.Forms.GroupBox();
this.label2 = new System.Windows.Forms.Label();
this.txtAd1Result = new System.Windows.Forms.TextBox();
this.lblValue = new System.Windows.Forms.Label();
this.txtAd1Coeff = new System.Windows.Forms.TextBox();
this.txtAd1BaseVal = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.groupDO = new System.Windows.Forms.GroupBox(); this.groupDO = new System.Windows.Forms.GroupBox();
this.Inlet_7StopDown = new System.Windows.Forms.Button(); this.Inlet_7StopDown = new System.Windows.Forms.Button();
this.Inlet_7StopUp = new System.Windows.Forms.Button(); this.Inlet_7StopUp = new System.Windows.Forms.Button();
...@@ -29,6 +60,7 @@ namespace OnlineStore.XLRStore ...@@ -29,6 +60,7 @@ namespace OnlineStore.XLRStore
this.Inlet_13StopDown = new System.Windows.Forms.Button(); this.Inlet_13StopDown = new System.Windows.Forms.Button();
this.Inlet_LineStart = new System.Windows.Forms.Button(); this.Inlet_LineStart = new System.Windows.Forms.Button();
this.Inlet_13StopUp = new System.Windows.Forms.Button(); this.Inlet_13StopUp = new System.Windows.Forms.Button();
this.btnSave = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox(); this.groupBox1 = new System.Windows.Forms.GroupBox();
this.txtDOIndex = new System.Windows.Forms.TextBox(); this.txtDOIndex = new System.Windows.Forms.TextBox();
this.txtDoName = new System.Windows.Forms.TextBox(); this.txtDoName = new System.Windows.Forms.TextBox();
...@@ -39,12 +71,14 @@ namespace OnlineStore.XLRStore ...@@ -39,12 +71,14 @@ namespace OnlineStore.XLRStore
this.btnWriteSingleDO = new System.Windows.Forms.Button(); this.btnWriteSingleDO = new System.Windows.Forms.Button();
this.txtWriteTime = new System.Windows.Forms.TextBox(); this.txtWriteTime = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label(); this.label5 = new System.Windows.Forms.Label();
this.btnGet7Data = new System.Windows.Forms.Button();
this.groupBox3 = new System.Windows.Forms.GroupBox(); this.groupBox3 = new System.Windows.Forms.GroupBox();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.groupBox4 = new System.Windows.Forms.GroupBox(); this.groupBox4 = new System.Windows.Forms.GroupBox();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.tabPage3 = new System.Windows.Forms.TabPage(); this.tabPage3 = new System.Windows.Forms.TabPage();
this.panBase = new System.Windows.Forms.Panel(); this.panBase = new System.Windows.Forms.Panel();
this.chbDebug = new System.Windows.Forms.CheckBox();
this.chbMoveStop = new System.Windows.Forms.CheckBox(); this.chbMoveStop = new System.Windows.Forms.CheckBox();
this.lblName = new System.Windows.Forms.Label(); this.lblName = new System.Windows.Forms.Label();
this.lblStoreStatus = new System.Windows.Forms.Label(); this.lblStoreStatus = new System.Windows.Forms.Label();
...@@ -56,6 +90,12 @@ namespace OnlineStore.XLRStore ...@@ -56,6 +90,12 @@ namespace OnlineStore.XLRStore
this.lblThisSta = new System.Windows.Forms.Label(); this.lblThisSta = new System.Windows.Forms.Label();
this.tabControl1 = new System.Windows.Forms.TabControl(); this.tabControl1 = new System.Windows.Forms.TabControl();
this.tabPage1.SuspendLayout(); this.tabPage1.SuspendLayout();
this.groupBox5.SuspendLayout();
this.groupBox9.SuspendLayout();
this.groupBox10.SuspendLayout();
this.groupBox2.SuspendLayout();
this.groupBox8.SuspendLayout();
this.groupBox7.SuspendLayout();
this.groupDO.SuspendLayout(); this.groupDO.SuspendLayout();
this.groupBox1.SuspendLayout(); this.groupBox1.SuspendLayout();
this.groupBox3.SuspendLayout(); this.groupBox3.SuspendLayout();
...@@ -85,8 +125,13 @@ namespace OnlineStore.XLRStore ...@@ -85,8 +125,13 @@ namespace OnlineStore.XLRStore
// //
// tabPage1 // tabPage1
// //
this.tabPage1.Controls.Add(this.lblheightwidth);
this.tabPage1.Controls.Add(this.groupBox5);
this.tabPage1.Controls.Add(this.groupBox2);
this.tabPage1.Controls.Add(this.groupDO); this.tabPage1.Controls.Add(this.groupDO);
this.tabPage1.Controls.Add(this.btnSave);
this.tabPage1.Controls.Add(this.groupBox1); this.tabPage1.Controls.Add(this.groupBox1);
this.tabPage1.Controls.Add(this.btnGet7Data);
this.tabPage1.Controls.Add(this.groupBox3); this.tabPage1.Controls.Add(this.groupBox3);
this.tabPage1.Controls.Add(this.groupBox4); this.tabPage1.Controls.Add(this.groupBox4);
this.tabPage1.Location = new System.Drawing.Point(4, 26); this.tabPage1.Location = new System.Drawing.Point(4, 26);
...@@ -97,6 +142,297 @@ namespace OnlineStore.XLRStore ...@@ -97,6 +142,297 @@ namespace OnlineStore.XLRStore
this.tabPage1.Text = " IO列表 "; this.tabPage1.Text = " IO列表 ";
this.tabPage1.UseVisualStyleBackColor = true; this.tabPage1.UseVisualStyleBackColor = true;
// //
// lblheightwidth
//
this.lblheightwidth.AutoSize = true;
this.lblheightwidth.Location = new System.Drawing.Point(863, 307);
this.lblheightwidth.Name = "lblheightwidth";
this.lblheightwidth.Size = new System.Drawing.Size(27, 17);
this.lblheightwidth.TabIndex = 288;
this.lblheightwidth.Text = "0*0";
//
// groupBox5
//
this.groupBox5.Controls.Add(this.groupBox9);
this.groupBox5.Controls.Add(this.groupBox10);
this.groupBox5.Location = new System.Drawing.Point(480, 417);
this.groupBox5.Name = "groupBox5";
this.groupBox5.Size = new System.Drawing.Size(372, 129);
this.groupBox5.TabIndex = 257;
this.groupBox5.TabStop = false;
this.groupBox5.Text = "13寸料盘厚度测试";
//
// groupBox9
//
this.groupBox9.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)));
this.groupBox9.Controls.Add(this.label7);
this.groupBox9.Controls.Add(this.txtAd4Result);
this.groupBox9.Controls.Add(this.label8);
this.groupBox9.Controls.Add(this.txtAd4Coeff);
this.groupBox9.Controls.Add(this.txtAd4BaseVal);
this.groupBox9.Controls.Add(this.label9);
this.groupBox9.Location = new System.Drawing.Point(188, 22);
this.groupBox9.Name = "groupBox9";
this.groupBox9.Size = new System.Drawing.Size(176, 100);
this.groupBox9.TabIndex = 287;
this.groupBox9.TabStop = false;
this.groupBox9.Text = "传感器4";
//
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(6, 50);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(56, 17);
this.label7.TabIndex = 284;
this.label7.Text = "基准值:";
//
// txtAd4Result
//
this.txtAd4Result.Location = new System.Drawing.Point(68, 74);
this.txtAd4Result.Name = "txtAd4Result";
this.txtAd4Result.Size = new System.Drawing.Size(100, 23);
this.txtAd4Result.TabIndex = 285;
//
// label8
//
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(7, 80);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(56, 17);
this.label8.TabIndex = 279;
this.label8.Text = "计算值:";
//
// txtAd4Coeff
//
this.txtAd4Coeff.Location = new System.Drawing.Point(68, 15);
this.txtAd4Coeff.Name = "txtAd4Coeff";
this.txtAd4Coeff.Size = new System.Drawing.Size(100, 23);
this.txtAd4Coeff.TabIndex = 280;
//
// txtAd4BaseVal
//
this.txtAd4BaseVal.Location = new System.Drawing.Point(68, 44);
this.txtAd4BaseVal.Name = "txtAd4BaseVal";
this.txtAd4BaseVal.Size = new System.Drawing.Size(100, 23);
this.txtAd4BaseVal.TabIndex = 283;
//
// label9
//
this.label9.AutoSize = true;
this.label9.Location = new System.Drawing.Point(6, 21);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(44, 17);
this.label9.TabIndex = 281;
this.label9.Text = "系数:";
//
// groupBox10
//
this.groupBox10.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)));
this.groupBox10.Controls.Add(this.label10);
this.groupBox10.Controls.Add(this.txtAd3Result);
this.groupBox10.Controls.Add(this.label11);
this.groupBox10.Controls.Add(this.txtAd3Coeff);
this.groupBox10.Controls.Add(this.txtAd3BaseVal);
this.groupBox10.Controls.Add(this.label12);
this.groupBox10.Location = new System.Drawing.Point(6, 22);
this.groupBox10.Name = "groupBox10";
this.groupBox10.Size = new System.Drawing.Size(176, 100);
this.groupBox10.TabIndex = 286;
this.groupBox10.TabStop = false;
this.groupBox10.Text = "传感器3";
//
// label10
//
this.label10.AutoSize = true;
this.label10.Location = new System.Drawing.Point(6, 50);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(56, 17);
this.label10.TabIndex = 284;
this.label10.Text = "基准值:";
//
// txtAd3Result
//
this.txtAd3Result.Location = new System.Drawing.Point(68, 74);
this.txtAd3Result.Name = "txtAd3Result";
this.txtAd3Result.Size = new System.Drawing.Size(100, 23);
this.txtAd3Result.TabIndex = 285;
//
// label11
//
this.label11.AutoSize = true;
this.label11.Location = new System.Drawing.Point(7, 80);
this.label11.Name = "label11";
this.label11.Size = new System.Drawing.Size(56, 17);
this.label11.TabIndex = 279;
this.label11.Text = "计算值:";
//
// txtAd3Coeff
//
this.txtAd3Coeff.Location = new System.Drawing.Point(68, 15);
this.txtAd3Coeff.Name = "txtAd3Coeff";
this.txtAd3Coeff.Size = new System.Drawing.Size(100, 23);
this.txtAd3Coeff.TabIndex = 280;
//
// txtAd3BaseVal
//
this.txtAd3BaseVal.Location = new System.Drawing.Point(68, 44);
this.txtAd3BaseVal.Name = "txtAd3BaseVal";
this.txtAd3BaseVal.Size = new System.Drawing.Size(100, 23);
this.txtAd3BaseVal.TabIndex = 283;
//
// label12
//
this.label12.AutoSize = true;
this.label12.Location = new System.Drawing.Point(6, 21);
this.label12.Name = "label12";
this.label12.Size = new System.Drawing.Size(44, 17);
this.label12.TabIndex = 281;
this.label12.Text = "系数:";
//
// groupBox2
//
this.groupBox2.Controls.Add(this.groupBox8);
this.groupBox2.Controls.Add(this.groupBox7);
this.groupBox2.Location = new System.Drawing.Point(480, 285);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(372, 129);
this.groupBox2.TabIndex = 256;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "7寸料盘厚度测试";
//
// groupBox8
//
this.groupBox8.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)));
this.groupBox8.Controls.Add(this.label3);
this.groupBox8.Controls.Add(this.txtAd2Result);
this.groupBox8.Controls.Add(this.label4);
this.groupBox8.Controls.Add(this.txtAd2Coeff);
this.groupBox8.Controls.Add(this.txtAd2BaseVal);
this.groupBox8.Controls.Add(this.label6);
this.groupBox8.Location = new System.Drawing.Point(188, 22);
this.groupBox8.Name = "groupBox8";
this.groupBox8.Size = new System.Drawing.Size(176, 100);
this.groupBox8.TabIndex = 287;
this.groupBox8.TabStop = false;
this.groupBox8.Text = "传感器2";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(6, 50);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(56, 17);
this.label3.TabIndex = 284;
this.label3.Text = "基准值:";
//
// txtAd2Result
//
this.txtAd2Result.Location = new System.Drawing.Point(68, 74);
this.txtAd2Result.Name = "txtAd2Result";
this.txtAd2Result.Size = new System.Drawing.Size(100, 23);
this.txtAd2Result.TabIndex = 285;
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(7, 80);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(56, 17);
this.label4.TabIndex = 279;
this.label4.Text = "计算值:";
//
// txtAd2Coeff
//
this.txtAd2Coeff.Location = new System.Drawing.Point(68, 15);
this.txtAd2Coeff.Name = "txtAd2Coeff";
this.txtAd2Coeff.Size = new System.Drawing.Size(100, 23);
this.txtAd2Coeff.TabIndex = 280;
//
// txtAd2BaseVal
//
this.txtAd2BaseVal.Location = new System.Drawing.Point(68, 44);
this.txtAd2BaseVal.Name = "txtAd2BaseVal";
this.txtAd2BaseVal.Size = new System.Drawing.Size(100, 23);
this.txtAd2BaseVal.TabIndex = 283;
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(6, 21);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(44, 17);
this.label6.TabIndex = 281;
this.label6.Text = "系数:";
//
// groupBox7
//
this.groupBox7.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)));
this.groupBox7.Controls.Add(this.label2);
this.groupBox7.Controls.Add(this.txtAd1Result);
this.groupBox7.Controls.Add(this.lblValue);
this.groupBox7.Controls.Add(this.txtAd1Coeff);
this.groupBox7.Controls.Add(this.txtAd1BaseVal);
this.groupBox7.Controls.Add(this.label1);
this.groupBox7.Location = new System.Drawing.Point(6, 22);
this.groupBox7.Name = "groupBox7";
this.groupBox7.Size = new System.Drawing.Size(176, 100);
this.groupBox7.TabIndex = 286;
this.groupBox7.TabStop = false;
this.groupBox7.Text = "传感器1";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(6, 50);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(56, 17);
this.label2.TabIndex = 284;
this.label2.Text = "基准值:";
//
// txtAd1Result
//
this.txtAd1Result.Location = new System.Drawing.Point(68, 74);
this.txtAd1Result.Name = "txtAd1Result";
this.txtAd1Result.Size = new System.Drawing.Size(100, 23);
this.txtAd1Result.TabIndex = 285;
//
// lblValue
//
this.lblValue.AutoSize = true;
this.lblValue.Location = new System.Drawing.Point(7, 80);
this.lblValue.Name = "lblValue";
this.lblValue.Size = new System.Drawing.Size(56, 17);
this.lblValue.TabIndex = 279;
this.lblValue.Text = "计算值:";
//
// txtAd1Coeff
//
this.txtAd1Coeff.Location = new System.Drawing.Point(68, 15);
this.txtAd1Coeff.Name = "txtAd1Coeff";
this.txtAd1Coeff.Size = new System.Drawing.Size(100, 23);
this.txtAd1Coeff.TabIndex = 280;
//
// txtAd1BaseVal
//
this.txtAd1BaseVal.Location = new System.Drawing.Point(68, 44);
this.txtAd1BaseVal.Name = "txtAd1BaseVal";
this.txtAd1BaseVal.Size = new System.Drawing.Size(100, 23);
this.txtAd1BaseVal.TabIndex = 283;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(6, 21);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(44, 17);
this.label1.TabIndex = 281;
this.label1.Text = "系数:";
//
// groupDO // groupDO
// //
this.groupDO.Controls.Add(this.Inlet_7StopDown); this.groupDO.Controls.Add(this.Inlet_7StopDown);
...@@ -107,7 +443,7 @@ namespace OnlineStore.XLRStore ...@@ -107,7 +443,7 @@ namespace OnlineStore.XLRStore
this.groupDO.Controls.Add(this.Inlet_13StopUp); this.groupDO.Controls.Add(this.Inlet_13StopUp);
this.groupDO.Location = new System.Drawing.Point(480, 119); this.groupDO.Location = new System.Drawing.Point(480, 119);
this.groupDO.Name = "groupDO"; this.groupDO.Name = "groupDO";
this.groupDO.Size = new System.Drawing.Size(466, 255); this.groupDO.Size = new System.Drawing.Size(466, 160);
this.groupDO.TabIndex = 255; this.groupDO.TabIndex = 255;
this.groupDO.TabStop = false; this.groupDO.TabStop = false;
this.groupDO.Text = "IO操作测试"; this.groupDO.Text = "IO操作测试";
...@@ -117,7 +453,7 @@ namespace OnlineStore.XLRStore ...@@ -117,7 +453,7 @@ namespace OnlineStore.XLRStore
this.Inlet_7StopDown.BackColor = System.Drawing.Color.White; this.Inlet_7StopDown.BackColor = System.Drawing.Color.White;
this.Inlet_7StopDown.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.Inlet_7StopDown.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.Inlet_7StopDown.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.Inlet_7StopDown.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.Inlet_7StopDown.Location = new System.Drawing.Point(298, 182); this.Inlet_7StopDown.Location = new System.Drawing.Point(314, 84);
this.Inlet_7StopDown.Name = "Inlet_7StopDown"; this.Inlet_7StopDown.Name = "Inlet_7StopDown";
this.Inlet_7StopDown.Size = new System.Drawing.Size(135, 56); this.Inlet_7StopDown.Size = new System.Drawing.Size(135, 56);
this.Inlet_7StopDown.TabIndex = 287; this.Inlet_7StopDown.TabIndex = 287;
...@@ -130,7 +466,7 @@ namespace OnlineStore.XLRStore ...@@ -130,7 +466,7 @@ namespace OnlineStore.XLRStore
this.Inlet_7StopUp.BackColor = System.Drawing.Color.White; this.Inlet_7StopUp.BackColor = System.Drawing.Color.White;
this.Inlet_7StopUp.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.Inlet_7StopUp.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.Inlet_7StopUp.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.Inlet_7StopUp.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.Inlet_7StopUp.Location = new System.Drawing.Point(32, 182); this.Inlet_7StopUp.Location = new System.Drawing.Point(314, 22);
this.Inlet_7StopUp.Name = "Inlet_7StopUp"; this.Inlet_7StopUp.Name = "Inlet_7StopUp";
this.Inlet_7StopUp.Size = new System.Drawing.Size(135, 56); this.Inlet_7StopUp.Size = new System.Drawing.Size(135, 56);
this.Inlet_7StopUp.TabIndex = 286; this.Inlet_7StopUp.TabIndex = 286;
...@@ -143,7 +479,7 @@ namespace OnlineStore.XLRStore ...@@ -143,7 +479,7 @@ namespace OnlineStore.XLRStore
this.Inlet_LineStop.BackColor = System.Drawing.Color.White; this.Inlet_LineStop.BackColor = System.Drawing.Color.White;
this.Inlet_LineStop.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.Inlet_LineStop.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.Inlet_LineStop.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.Inlet_LineStop.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.Inlet_LineStop.Location = new System.Drawing.Point(298, 22); this.Inlet_LineStop.Location = new System.Drawing.Point(173, 84);
this.Inlet_LineStop.Name = "Inlet_LineStop"; this.Inlet_LineStop.Name = "Inlet_LineStop";
this.Inlet_LineStop.Size = new System.Drawing.Size(135, 56); this.Inlet_LineStop.Size = new System.Drawing.Size(135, 56);
this.Inlet_LineStop.TabIndex = 285; this.Inlet_LineStop.TabIndex = 285;
...@@ -156,7 +492,7 @@ namespace OnlineStore.XLRStore ...@@ -156,7 +492,7 @@ namespace OnlineStore.XLRStore
this.Inlet_13StopDown.BackColor = System.Drawing.Color.White; this.Inlet_13StopDown.BackColor = System.Drawing.Color.White;
this.Inlet_13StopDown.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.Inlet_13StopDown.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.Inlet_13StopDown.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.Inlet_13StopDown.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.Inlet_13StopDown.Location = new System.Drawing.Point(298, 104); this.Inlet_13StopDown.Location = new System.Drawing.Point(32, 84);
this.Inlet_13StopDown.Name = "Inlet_13StopDown"; this.Inlet_13StopDown.Name = "Inlet_13StopDown";
this.Inlet_13StopDown.Size = new System.Drawing.Size(135, 56); this.Inlet_13StopDown.Size = new System.Drawing.Size(135, 56);
this.Inlet_13StopDown.TabIndex = 284; this.Inlet_13StopDown.TabIndex = 284;
...@@ -169,7 +505,7 @@ namespace OnlineStore.XLRStore ...@@ -169,7 +505,7 @@ namespace OnlineStore.XLRStore
this.Inlet_LineStart.BackColor = System.Drawing.Color.White; this.Inlet_LineStart.BackColor = System.Drawing.Color.White;
this.Inlet_LineStart.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.Inlet_LineStart.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.Inlet_LineStart.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.Inlet_LineStart.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.Inlet_LineStart.Location = new System.Drawing.Point(32, 22); this.Inlet_LineStart.Location = new System.Drawing.Point(173, 22);
this.Inlet_LineStart.Name = "Inlet_LineStart"; this.Inlet_LineStart.Name = "Inlet_LineStart";
this.Inlet_LineStart.Size = new System.Drawing.Size(135, 56); this.Inlet_LineStart.Size = new System.Drawing.Size(135, 56);
this.Inlet_LineStart.TabIndex = 274; this.Inlet_LineStart.TabIndex = 274;
...@@ -182,7 +518,7 @@ namespace OnlineStore.XLRStore ...@@ -182,7 +518,7 @@ namespace OnlineStore.XLRStore
this.Inlet_13StopUp.BackColor = System.Drawing.Color.White; this.Inlet_13StopUp.BackColor = System.Drawing.Color.White;
this.Inlet_13StopUp.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.Inlet_13StopUp.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.Inlet_13StopUp.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.Inlet_13StopUp.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.Inlet_13StopUp.Location = new System.Drawing.Point(32, 104); this.Inlet_13StopUp.Location = new System.Drawing.Point(32, 22);
this.Inlet_13StopUp.Name = "Inlet_13StopUp"; this.Inlet_13StopUp.Name = "Inlet_13StopUp";
this.Inlet_13StopUp.Size = new System.Drawing.Size(135, 56); this.Inlet_13StopUp.Size = new System.Drawing.Size(135, 56);
this.Inlet_13StopUp.TabIndex = 255; this.Inlet_13StopUp.TabIndex = 255;
...@@ -190,6 +526,19 @@ namespace OnlineStore.XLRStore ...@@ -190,6 +526,19 @@ namespace OnlineStore.XLRStore
this.Inlet_13StopUp.UseVisualStyleBackColor = false; this.Inlet_13StopUp.UseVisualStyleBackColor = false;
this.Inlet_13StopUp.Click += new System.EventHandler(this.Inlet_13StopUp_Click); this.Inlet_13StopUp.Click += new System.EventHandler(this.Inlet_13StopUp_Click);
// //
// btnSave
//
this.btnSave.BackColor = System.Drawing.Color.White;
this.btnSave.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnSave.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnSave.Location = new System.Drawing.Point(858, 454);
this.btnSave.Name = "btnSave";
this.btnSave.Size = new System.Drawing.Size(74, 73);
this.btnSave.TabIndex = 282;
this.btnSave.Text = "保存系数";
this.btnSave.UseVisualStyleBackColor = false;
this.btnSave.Click += new System.EventHandler(this.button1_Click);
//
// groupBox1 // groupBox1
// //
this.groupBox1.Controls.Add(this.txtDOIndex); this.groupBox1.Controls.Add(this.txtDOIndex);
...@@ -320,6 +669,19 @@ namespace OnlineStore.XLRStore ...@@ -320,6 +669,19 @@ namespace OnlineStore.XLRStore
this.label5.Text = "定时(ms):"; this.label5.Text = "定时(ms):";
this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleRight; this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
// //
// btnGet7Data
//
this.btnGet7Data.BackColor = System.Drawing.Color.White;
this.btnGet7Data.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnGet7Data.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnGet7Data.Location = new System.Drawing.Point(858, 341);
this.btnGet7Data.Name = "btnGet7Data";
this.btnGet7Data.Size = new System.Drawing.Size(74, 73);
this.btnGet7Data.TabIndex = 278;
this.btnGet7Data.Text = "获取值";
this.btnGet7Data.UseVisualStyleBackColor = false;
this.btnGet7Data.Click += new System.EventHandler(this.btnGetData_Click);
//
// groupBox3 // groupBox3
// //
this.groupBox3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.groupBox3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
...@@ -392,6 +754,7 @@ namespace OnlineStore.XLRStore ...@@ -392,6 +754,7 @@ namespace OnlineStore.XLRStore
this.panBase.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) this.panBase.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.panBase.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.panBase.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panBase.Controls.Add(this.chbDebug);
this.panBase.Controls.Add(this.chbMoveStop); this.panBase.Controls.Add(this.chbMoveStop);
this.panBase.Controls.Add(this.lblName); this.panBase.Controls.Add(this.lblName);
this.panBase.Controls.Add(this.lblStoreStatus); this.panBase.Controls.Add(this.lblStoreStatus);
...@@ -402,6 +765,18 @@ namespace OnlineStore.XLRStore ...@@ -402,6 +765,18 @@ namespace OnlineStore.XLRStore
this.panBase.Size = new System.Drawing.Size(980, 50); this.panBase.Size = new System.Drawing.Size(980, 50);
this.panBase.TabIndex = 260; this.panBase.TabIndex = 260;
// //
// chbDebug
//
this.chbDebug.AutoSize = true;
this.chbDebug.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.chbDebug.Location = new System.Drawing.Point(364, 11);
this.chbDebug.Name = "chbDebug";
this.chbDebug.Size = new System.Drawing.Size(84, 24);
this.chbDebug.TabIndex = 263;
this.chbDebug.Text = "调试状态";
this.chbDebug.UseVisualStyleBackColor = true;
this.chbDebug.CheckedChanged += new System.EventHandler(this.chbDebug_CheckedChanged);
//
// chbMoveStop // chbMoveStop
// //
this.chbMoveStop.AutoSize = true; this.chbMoveStop.AutoSize = true;
...@@ -547,6 +922,17 @@ namespace OnlineStore.XLRStore ...@@ -547,6 +922,17 @@ namespace OnlineStore.XLRStore
this.Shown += new System.EventHandler(this.FrmIOStatus_Shown); this.Shown += new System.EventHandler(this.FrmIOStatus_Shown);
this.VisibleChanged += new System.EventHandler(this.FrmInputEquip_VisibleChanged); this.VisibleChanged += new System.EventHandler(this.FrmInputEquip_VisibleChanged);
this.tabPage1.ResumeLayout(false); this.tabPage1.ResumeLayout(false);
this.tabPage1.PerformLayout();
this.groupBox5.ResumeLayout(false);
this.groupBox9.ResumeLayout(false);
this.groupBox9.PerformLayout();
this.groupBox10.ResumeLayout(false);
this.groupBox10.PerformLayout();
this.groupBox2.ResumeLayout(false);
this.groupBox8.ResumeLayout(false);
this.groupBox8.PerformLayout();
this.groupBox7.ResumeLayout(false);
this.groupBox7.PerformLayout();
this.groupDO.ResumeLayout(false); this.groupDO.ResumeLayout(false);
this.groupBox1.ResumeLayout(false); this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout(); this.groupBox1.PerformLayout();
...@@ -600,6 +986,40 @@ namespace OnlineStore.XLRStore ...@@ -600,6 +986,40 @@ namespace OnlineStore.XLRStore
private System.Windows.Forms.Button Inlet_7StopDown; private System.Windows.Forms.Button Inlet_7StopDown;
private System.Windows.Forms.Button Inlet_7StopUp; private System.Windows.Forms.Button Inlet_7StopUp;
private System.Windows.Forms.Button Inlet_LineStop; private System.Windows.Forms.Button Inlet_LineStop;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.Button btnSave;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox txtAd1Coeff;
private System.Windows.Forms.Label lblValue;
private System.Windows.Forms.Button btnGet7Data;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox txtAd1BaseVal;
private System.Windows.Forms.TextBox txtAd1Result;
private System.Windows.Forms.GroupBox groupBox7;
private System.Windows.Forms.GroupBox groupBox8;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.TextBox txtAd2Result;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.TextBox txtAd2Coeff;
private System.Windows.Forms.TextBox txtAd2BaseVal;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.GroupBox groupBox5;
private System.Windows.Forms.GroupBox groupBox9;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.TextBox txtAd4Result;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.TextBox txtAd4Coeff;
private System.Windows.Forms.TextBox txtAd4BaseVal;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.GroupBox groupBox10;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.TextBox txtAd3Result;
private System.Windows.Forms.Label label11;
private System.Windows.Forms.TextBox txtAd3Coeff;
private System.Windows.Forms.TextBox txtAd3BaseVal;
private System.Windows.Forms.Label label12;
private System.Windows.Forms.Label lblheightwidth;
protected System.Windows.Forms.CheckBox chbDebug;
} }
} }
...@@ -17,7 +17,7 @@ using UserFromControl; ...@@ -17,7 +17,7 @@ using UserFromControl;
using OnlineStore.LoadCSVLibrary; using OnlineStore.LoadCSVLibrary;
using OnlineStore.Common; using OnlineStore.Common;
namespace OnlineStore.XLRStore namespace OnlineStore.CarriageClient
{ {
internal partial class FrmInletEquip : FrmBase internal partial class FrmInletEquip : FrmBase
{ {
...@@ -30,6 +30,7 @@ namespace OnlineStore.XLRStore ...@@ -30,6 +30,7 @@ namespace OnlineStore.XLRStore
Control.CheckForIllegalCrossThreadCalls = false; Control.CheckForIllegalCrossThreadCalls = false;
InitializeComponent(); InitializeComponent();
LoadIOList(); LoadIOList();
LoadAdInfo();
} }
protected Dictionary<string, IOTextControl> DIControlList = new Dictionary<string, IOTextControl>(); protected Dictionary<string, IOTextControl> DIControlList = new Dictionary<string, IOTextControl>();
protected Dictionary<string, IOTextControl> DOControlList = new Dictionary<string, IOTextControl>(); protected Dictionary<string, IOTextControl> DOControlList = new Dictionary<string, IOTextControl>();
...@@ -111,7 +112,17 @@ namespace OnlineStore.XLRStore ...@@ -111,7 +112,17 @@ namespace OnlineStore.XLRStore
MessageBox.Show(inputEquip.Name + "请先启动设备", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); MessageBox.Show(inputEquip.Name + "请先启动设备", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
} }
} }
private void LoadAdInfo()
{
txtAd1BaseVal.Text = inputEquip.Config.BaseVal_Height_Ad1.ToString();
txtAd1Coeff.Text = inputEquip.Config.Coeff_Height_Ad1.ToString();
txtAd2BaseVal.Text = inputEquip.Config.BaseVal_Height_Ad2.ToString();
txtAd2Coeff.Text = inputEquip.Config.Coeff_Height_Ad2.ToString();
txtAd3BaseVal.Text = inputEquip.Config.BaseVal_Height_Ad3.ToString();
txtAd3Coeff.Text = inputEquip.Config.Coeff_Height_Ad3.ToString();
txtAd4BaseVal.Text = inputEquip.Config.BaseVal_Height_Ad4.ToString();
txtAd4Coeff.Text = inputEquip.Config.Coeff_Height_Ad4.ToString();
}
private void LoadIOList() private void LoadIOList()
{ {
int maxCount = 20; int maxCount = 20;
...@@ -297,6 +308,7 @@ namespace OnlineStore.XLRStore ...@@ -297,6 +308,7 @@ namespace OnlineStore.XLRStore
private void FrmInputEquip_Load(object sender, EventArgs e) private void FrmInputEquip_Load(object sender, EventArgs e)
{ {
chbMoveStop.Checked = inputEquip.MoveStop; chbMoveStop.Checked = inputEquip.MoveStop;
chbDebug.Checked = inputEquip.IsDebug;
LoadPoint(); LoadPoint();
IsLoad = true; IsLoad = true;
} }
...@@ -355,7 +367,7 @@ namespace OnlineStore.XLRStore ...@@ -355,7 +367,7 @@ namespace OnlineStore.XLRStore
{ {
if (inputEquip.runStatus.Equals(RunStatus.Wait)) if (inputEquip.runStatus.Equals(RunStatus.Wait))
{ {
LogUtil.info(inputEquip.Name + "点击:启用调试"); LogUtil.info(inputEquip.Name + "点击:启");
StartDebug(); StartDebug();
} }
else else
...@@ -374,7 +386,7 @@ namespace OnlineStore.XLRStore ...@@ -374,7 +386,7 @@ namespace OnlineStore.XLRStore
} }
else else
{ {
btnStart.Text = "启动调试"; btnStart.Text = "启动";
} }
//btnReset.Enabled = isStart; //btnReset.Enabled = isStart;
} }
...@@ -478,6 +490,114 @@ namespace OnlineStore.XLRStore ...@@ -478,6 +490,114 @@ namespace OnlineStore.XLRStore
IOManager.IOMove(IO_Type.Inlet_7InchJackUp, IO_VALUE.LOW); IOManager.IOMove(IO_Type.Inlet_7InchJackUp, IO_VALUE.LOW);
IOManager.IOMove(IO_Type.Inlet_7InchJackDown, IO_VALUE.HIGH); IOManager.IOMove(IO_Type.Inlet_7InchJackDown, IO_VALUE.HIGH);
} }
private void button1_Click(object sender, EventArgs e)
{
try
{
inputEquip.Config.Coeff_Height_Ad1 = double.Parse(txtAd1Coeff.Text);
inputEquip.Config.Coeff_Height_Ad2 = double.Parse(txtAd2Coeff.Text);
inputEquip.Config.BaseVal_Height_Ad1 = int.Parse(txtAd1BaseVal.Text);
inputEquip.Config.BaseVal_Height_Ad2 = int.Parse(txtAd2BaseVal.Text);
inputEquip.Config.Coeff_Height_Ad3 = double.Parse(txtAd3Coeff.Text);
inputEquip.Config.BaseVal_Height_Ad3 = int.Parse(txtAd3BaseVal.Text);
inputEquip.Config.Coeff_Height_Ad4 = double.Parse(txtAd4Coeff.Text);
inputEquip.Config.BaseVal_Height_Ad4 = int.Parse(txtAd4BaseVal.Text);
StoreManager.SaveClientConfig(inputEquip.Config);
MessageBox.Show("保存测量系数成功");
}
catch (Exception ex)
{
LogUtil.error("保存测量系数失败", ex);
}
}
/// <summary>
/// 获取7寸计算值
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnGetData_Click(object sender, EventArgs e)
{
try
{
float.TryParse(txtAd1Coeff.Text, out float ad1Coeff);
int.TryParse(txtAd1BaseVal.Text, out int ad1BaseVal);
float.TryParse(txtAd2Coeff.Text, out float ad2Coeff);
int.TryParse(txtAd2BaseVal.Text, out int ad2BaseVal);
double val1 = inputEquip.GetCalValue(0, ad1Coeff, ad1BaseVal);
double val2 = inputEquip.GetCalValue(1, ad2Coeff, ad2BaseVal);
txtAd1Result.Text = val1.ToString("f3");
txtAd2Result.Text = val2.ToString("f3");
float.TryParse(txtAd3Coeff.Text, out float ad3Coeff);
float.TryParse(txtAd4Coeff.Text, out float ad4Coeff);
int.TryParse(txtAd3BaseVal.Text, out int ad3BaseVal);
int.TryParse(txtAd4BaseVal.Text, out int ad4BaseVal);
double val3 = inputEquip.GetCalValue(2, ad3Coeff, ad3BaseVal);
double val4 = inputEquip.GetCalValue(3, ad4Coeff, ad4BaseVal);
txtAd3Result.Text = val3.ToString("f3");
txtAd4Result.Text = val4.ToString("f3");
getSize(val3, val4);
}
catch
{
txtAd1Result.Text = "null";
txtAd2Result.Text = "null";
lblheightwidth.Text = "0*0";
txtAd3Result.Text = "null";
txtAd4Result.Text = "null";
}
}
private void getSize(double val3,double val4)
{
float.TryParse(txtAd3Coeff.Text, out float ad3Coeff);
float.TryParse(txtAd4Coeff.Text, out float ad4Coeff);
int.TryParse(txtAd3BaseVal.Text, out int ad3BaseVal);
int.TryParse(txtAd4BaseVal.Text, out int ad4BaseVal);
float.TryParse(txtAd1Coeff.Text, out float ad1Coeff);
int.TryParse(txtAd1BaseVal.Text, out int ad1BaseVal);
float.TryParse(txtAd2Coeff.Text, out float ad2Coeff);
int.TryParse(txtAd2BaseVal.Text, out int ad2BaseVal);
lblheightwidth.Text = $"{inputEquip.GetWidth(val3,val4)}*" +
$"{inputEquip.GetHeight(new double[] { ad1Coeff, ad2Coeff, ad3Coeff, ad4Coeff }, new int[] { ad1BaseVal, ad2BaseVal, ad3BaseVal, ad4BaseVal })}";
}
private void chbDebug_CheckedChanged(object sender, EventArgs e)
{
if (!IsLoad)
{
return;
}
if (chbDebug.Checked)
{
if (!inputEquip.IsDebug)
{
DialogResult result = MessageBox.Show("是否切换到调试状态?", "是否确认切换", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
if (result.Equals(DialogResult.Yes))
{
inputEquip.IsDebug = true;
inputEquip.ChangeDebug(true);
LogUtil.info(inputEquip.Name + "用户切换到调试状态 ");
}
}
}
else
{
if (inputEquip.IsDebug)
{
DialogResult result = MessageBox.Show("是否切换到正常工作状态?", "是否确认切换", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
if (result.Equals(DialogResult.Yes))
{
inputEquip.IsDebug = false;
inputEquip.ChangeDebug(false);
LogUtil.info(inputEquip.Name + "用户切换到正常工作状态 ");
}
}
}
}
} }
} }
......
using OnlineStore.XLRStore.useControl; using OnlineStore.CarriageClient.useControl;
namespace OnlineStore.XLRStore namespace OnlineStore.CarriageClient
{ {
partial class FrmOutletEquip partial class FrmOutletEquip
{ {
...@@ -53,6 +53,7 @@ namespace OnlineStore.XLRStore ...@@ -53,6 +53,7 @@ namespace OnlineStore.XLRStore
this.lblMoveInfo = new System.Windows.Forms.Label(); this.lblMoveInfo = new System.Windows.Forms.Label();
this.lblThisSta = new System.Windows.Forms.Label(); this.lblThisSta = new System.Windows.Forms.Label();
this.tabControl1 = new System.Windows.Forms.TabControl(); this.tabControl1 = new System.Windows.Forms.TabControl();
this.chbDebug = new System.Windows.Forms.CheckBox();
this.tabPage1.SuspendLayout(); this.tabPage1.SuspendLayout();
this.groupDO.SuspendLayout(); this.groupDO.SuspendLayout();
this.groupBox1.SuspendLayout(); this.groupBox1.SuspendLayout();
...@@ -362,6 +363,7 @@ namespace OnlineStore.XLRStore ...@@ -362,6 +363,7 @@ namespace OnlineStore.XLRStore
this.panBase.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) this.panBase.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.panBase.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.panBase.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panBase.Controls.Add(this.chbDebug);
this.panBase.Controls.Add(this.chbMoveStop); this.panBase.Controls.Add(this.chbMoveStop);
this.panBase.Controls.Add(this.lblName); this.panBase.Controls.Add(this.lblName);
this.panBase.Controls.Add(this.lblStoreStatus); this.panBase.Controls.Add(this.lblStoreStatus);
...@@ -501,6 +503,18 @@ namespace OnlineStore.XLRStore ...@@ -501,6 +503,18 @@ namespace OnlineStore.XLRStore
this.tabControl1.TabIndex = 257; this.tabControl1.TabIndex = 257;
this.tabControl1.SelectedIndexChanged += new System.EventHandler(this.tabControl1_SelectedIndexChanged); this.tabControl1.SelectedIndexChanged += new System.EventHandler(this.tabControl1_SelectedIndexChanged);
// //
// chbDebug
//
this.chbDebug.AutoSize = true;
this.chbDebug.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.chbDebug.Location = new System.Drawing.Point(364, 9);
this.chbDebug.Name = "chbDebug";
this.chbDebug.Size = new System.Drawing.Size(84, 24);
this.chbDebug.TabIndex = 263;
this.chbDebug.Text = "调试状态";
this.chbDebug.UseVisualStyleBackColor = true;
this.chbDebug.CheckedChanged += new System.EventHandler(this.chbDebug_CheckedChanged);
//
// FrmOutletEquip // FrmOutletEquip
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
...@@ -568,6 +582,7 @@ namespace OnlineStore.XLRStore ...@@ -568,6 +582,7 @@ namespace OnlineStore.XLRStore
private System.Windows.Forms.Button Inlet_LineStart; private System.Windows.Forms.Button Inlet_LineStart;
private System.Windows.Forms.Button Inlet_StopUp; private System.Windows.Forms.Button Inlet_StopUp;
private System.Windows.Forms.Button Inlet_LineStop; private System.Windows.Forms.Button Inlet_LineStop;
protected System.Windows.Forms.CheckBox chbDebug;
} }
} }
...@@ -17,7 +17,7 @@ using UserFromControl; ...@@ -17,7 +17,7 @@ using UserFromControl;
using OnlineStore.LoadCSVLibrary; using OnlineStore.LoadCSVLibrary;
using OnlineStore.Common; using OnlineStore.Common;
namespace OnlineStore.XLRStore namespace OnlineStore.CarriageClient
{ {
internal partial class FrmOutletEquip : FrmBase internal partial class FrmOutletEquip : FrmBase
{ {
...@@ -297,6 +297,7 @@ namespace OnlineStore.XLRStore ...@@ -297,6 +297,7 @@ namespace OnlineStore.XLRStore
private void FrmoutletEquip_Load(object sender, EventArgs e) private void FrmoutletEquip_Load(object sender, EventArgs e)
{ {
chbMoveStop.Checked = outletEquip.MoveStop; chbMoveStop.Checked = outletEquip.MoveStop;
chbDebug.Checked = outletEquip.IsDebug;
LoadPoint(); LoadPoint();
IsLoad = true; IsLoad = true;
} }
...@@ -355,7 +356,7 @@ namespace OnlineStore.XLRStore ...@@ -355,7 +356,7 @@ namespace OnlineStore.XLRStore
{ {
if (outletEquip.runStatus.Equals(RunStatus.Wait)) if (outletEquip.runStatus.Equals(RunStatus.Wait))
{ {
LogUtil.info(outletEquip.Name + "点击:启用调试"); LogUtil.info(outletEquip.Name + "点击:启");
StartDebug(); StartDebug();
} }
else else
...@@ -374,7 +375,7 @@ namespace OnlineStore.XLRStore ...@@ -374,7 +375,7 @@ namespace OnlineStore.XLRStore
} }
else else
{ {
btnStart.Text = "启动调试"; btnStart.Text = "启动";
} }
//btnReset.Enabled = isStart; //btnReset.Enabled = isStart;
} }
...@@ -463,6 +464,41 @@ namespace OnlineStore.XLRStore ...@@ -463,6 +464,41 @@ namespace OnlineStore.XLRStore
LogUtil.info(outletEquip.Name + "点击:" + Inlet_LineStop.Text); LogUtil.info(outletEquip.Name + "点击:" + Inlet_LineStop.Text);
IOManager.IOMove(IO_Type.Outlet_Run, IO_VALUE.LOW); IOManager.IOMove(IO_Type.Outlet_Run, IO_VALUE.LOW);
} }
private void chbDebug_CheckedChanged(object sender, EventArgs e)
{
if (!IsLoad)
{
return;
}
if (chbDebug.Checked)
{
if (!outletEquip.IsDebug)
{
DialogResult result = MessageBox.Show("是否切换到调试状态?", "是否确认切换", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
if (result.Equals(DialogResult.Yes))
{
outletEquip.IsDebug = true;
outletEquip.ChangeDebug(true);
LogUtil.info(outletEquip.Name + "用户切换到调试状态 ");
}
}
}
else
{
if (outletEquip.IsDebug)
{
DialogResult result = MessageBox.Show("是否切换到正常工作状态?", "是否确认切换", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
if (result.Equals(DialogResult.Yes))
{
outletEquip.IsDebug = false;
outletEquip.ChangeDebug(false);
LogUtil.info(outletEquip.Name + "用户切换到正常工作状态 ");
}
}
}
}
} }
} }
......
namespace OnlineStore.XLRStore namespace OnlineStore.CarriageClient
{ {
partial class FrmRobotEquip partial class FrmRobotEquip
{ {
...@@ -36,38 +36,32 @@ ...@@ -36,38 +36,32 @@
this.tabControl1 = new System.Windows.Forms.TabControl(); this.tabControl1 = new System.Windows.Forms.TabControl();
this.tabPage3 = new System.Windows.Forms.TabPage(); this.tabPage3 = new System.Windows.Forms.TabPage();
this.groupBox6 = new System.Windows.Forms.GroupBox(); this.groupBox6 = new System.Windows.Forms.GroupBox();
this.lblrobotTaskInfo = new System.Windows.Forms.Label();
this.lblInoutInfo = new System.Windows.Forms.Label(); this.lblInoutInfo = new System.Windows.Forms.Label();
this.lblMoveInfo = new System.Windows.Forms.Label(); this.lblMoveInfo = new System.Windows.Forms.Label();
this.lblInstoreList = new System.Windows.Forms.Label(); this.lblInstoreList = new System.Windows.Forms.Label();
this.lblThisSta = new System.Windows.Forms.Label(); this.lblThisSta = new System.Windows.Forms.Label();
this.tabPage5 = new System.Windows.Forms.TabPage(); this.tabPage5 = new System.Windows.Forms.TabPage();
this.btnSavePoint = new System.Windows.Forms.Button();
this.checkBoxEdit = new System.Windows.Forms.CheckBox();
this.groupBox5 = new System.Windows.Forms.GroupBox(); this.groupBox5 = new System.Windows.Forms.GroupBox();
this.compressaxisControlP4 = new OnlineStore.XLRStore.useControl.AxisPointControl(); this.compressaxisControlP4 = new OnlineStore.CarriageClient.useControl.AxisPointControl();
this.compressaxisControlP2 = new OnlineStore.XLRStore.useControl.AxisPointControl(); this.compressaxisControlP2 = new OnlineStore.CarriageClient.useControl.AxisPointControl();
this.compressaxisControlP3 = new OnlineStore.XLRStore.useControl.AxisPointControl(); this.compressaxisControlP3 = new OnlineStore.CarriageClient.useControl.AxisPointControl();
this.compressaxisControlP1 = new OnlineStore.XLRStore.useControl.AxisPointControl(); this.compressaxisControlP1 = new OnlineStore.CarriageClient.useControl.AxisPointControl();
this.groupBox2 = new System.Windows.Forms.GroupBox(); this.groupBox2 = new System.Windows.Forms.GroupBox();
this.moveaxisControlP10 = new OnlineStore.XLRStore.useControl.AxisPointControl(); this.btnSavePoint = new System.Windows.Forms.Button();
this.moveaxisControlP9 = new OnlineStore.XLRStore.useControl.AxisPointControl(); this.moveaxisControlP10 = new OnlineStore.CarriageClient.useControl.AxisPointControl();
this.moveaxisControlP8 = new OnlineStore.XLRStore.useControl.AxisPointControl(); this.moveaxisControlP9 = new OnlineStore.CarriageClient.useControl.AxisPointControl();
this.moveaxisControlP7 = new OnlineStore.XLRStore.useControl.AxisPointControl(); this.moveaxisControlP8 = new OnlineStore.CarriageClient.useControl.AxisPointControl();
this.moveaxisControlP6 = new OnlineStore.XLRStore.useControl.AxisPointControl(); this.moveaxisControlP7 = new OnlineStore.CarriageClient.useControl.AxisPointControl();
this.moveaxisControlP5 = new OnlineStore.XLRStore.useControl.AxisPointControl(); this.moveaxisControlP6 = new OnlineStore.CarriageClient.useControl.AxisPointControl();
this.moveaxisControlP4 = new OnlineStore.XLRStore.useControl.AxisPointControl(); this.moveaxisControlP5 = new OnlineStore.CarriageClient.useControl.AxisPointControl();
this.moveaxisControlP3 = new OnlineStore.XLRStore.useControl.AxisPointControl(); this.moveaxisControlP4 = new OnlineStore.CarriageClient.useControl.AxisPointControl();
this.moveaxisControlP2 = new OnlineStore.XLRStore.useControl.AxisPointControl(); this.moveaxisControlP3 = new OnlineStore.CarriageClient.useControl.AxisPointControl();
this.moveaxisControlP1 = new OnlineStore.XLRStore.useControl.AxisPointControl(); this.moveaxisControlP2 = new OnlineStore.CarriageClient.useControl.AxisPointControl();
this.axisMoveControl1 = new OnlineStore.XLRStore.AxisMoveControl(); this.moveaxisControlP1 = new OnlineStore.CarriageClient.useControl.AxisPointControl();
this.checkBoxEdit = new System.Windows.Forms.CheckBox();
this.axisMoveControl1 = new OnlineStore.CarriageClient.AxisMoveControl();
this.tabPage1 = new System.Windows.Forms.TabPage(); this.tabPage1 = new System.Windows.Forms.TabPage();
this.groupBox7 = new System.Windows.Forms.GroupBox();
this.cmbBoxAd = new System.Windows.Forms.ComboBox();
this.button1 = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.textBox1 = new System.Windows.Forms.TextBox();
this.lblValue = new System.Windows.Forms.Label();
this.btnGetData = new System.Windows.Forms.Button();
this.tabPage4 = new System.Windows.Forms.TabPage(); this.tabPage4 = new System.Windows.Forms.TabPage();
this.chkManualRobot = new System.Windows.Forms.CheckBox(); this.chkManualRobot = new System.Windows.Forms.CheckBox();
this.btnColseRobotService = new System.Windows.Forms.Button(); this.btnColseRobotService = new System.Windows.Forms.Button();
...@@ -80,7 +74,6 @@ ...@@ -80,7 +74,6 @@
this.lblStoreStatus = new System.Windows.Forms.Label(); this.lblStoreStatus = new System.Windows.Forms.Label();
this.btnStart = new System.Windows.Forms.Button(); this.btnStart = new System.Windows.Forms.Button();
this.btnStop = new System.Windows.Forms.Button(); this.btnStop = new System.Windows.Forms.Button();
this.lblrobotTaskInfo = new System.Windows.Forms.Label();
this.groupBox1.SuspendLayout(); this.groupBox1.SuspendLayout();
this.groupBox4.SuspendLayout(); this.groupBox4.SuspendLayout();
this.groupBox3.SuspendLayout(); this.groupBox3.SuspendLayout();
...@@ -91,7 +84,6 @@ ...@@ -91,7 +84,6 @@
this.groupBox5.SuspendLayout(); this.groupBox5.SuspendLayout();
this.groupBox2.SuspendLayout(); this.groupBox2.SuspendLayout();
this.tabPage1.SuspendLayout(); this.tabPage1.SuspendLayout();
this.groupBox7.SuspendLayout();
this.tabPage4.SuspendLayout(); this.tabPage4.SuspendLayout();
this.panBase.SuspendLayout(); this.panBase.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
...@@ -116,7 +108,7 @@ ...@@ -116,7 +108,7 @@
this.groupBox1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.groupBox1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.groupBox1.Location = new System.Drawing.Point(414, 6); this.groupBox1.Location = new System.Drawing.Point(414, 6);
this.groupBox1.Name = "groupBox1"; this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(565, 116); this.groupBox1.Size = new System.Drawing.Size(565, 152);
this.groupBox1.TabIndex = 105; this.groupBox1.TabIndex = 105;
this.groupBox1.TabStop = false; this.groupBox1.TabStop = false;
this.groupBox1.Text = "DO写入"; this.groupBox1.Text = "DO写入";
...@@ -138,7 +130,7 @@ ...@@ -138,7 +130,7 @@
// //
this.txtDOIndex.Enabled = false; this.txtDOIndex.Enabled = false;
this.txtDOIndex.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.txtDOIndex.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtDOIndex.Location = new System.Drawing.Point(493, 25); this.txtDOIndex.Location = new System.Drawing.Point(436, 25);
this.txtDOIndex.MaxLength = 10; this.txtDOIndex.MaxLength = 10;
this.txtDOIndex.Name = "txtDOIndex"; this.txtDOIndex.Name = "txtDOIndex";
this.txtDOIndex.Size = new System.Drawing.Size(40, 23); this.txtDOIndex.Size = new System.Drawing.Size(40, 23);
...@@ -150,7 +142,7 @@ ...@@ -150,7 +142,7 @@
// //
this.txtDoName.Enabled = false; this.txtDoName.Enabled = false;
this.txtDoName.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.txtDoName.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtDoName.Location = new System.Drawing.Point(467, 25); this.txtDoName.Location = new System.Drawing.Point(410, 25);
this.txtDoName.MaxLength = 10; this.txtDoName.MaxLength = 10;
this.txtDoName.Name = "txtDoName"; this.txtDoName.Name = "txtDoName";
this.txtDoName.Size = new System.Drawing.Size(27, 23); this.txtDoName.Size = new System.Drawing.Size(27, 23);
...@@ -221,10 +213,10 @@ ...@@ -221,10 +213,10 @@
// txtSlaveId // txtSlaveId
// //
this.txtSlaveId.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.txtSlaveId.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtSlaveId.Location = new System.Drawing.Point(544, 29); this.txtSlaveId.Location = new System.Drawing.Point(492, 25);
this.txtSlaveId.MaxLength = 10; this.txtSlaveId.MaxLength = 10;
this.txtSlaveId.Name = "txtSlaveId"; this.txtSlaveId.Name = "txtSlaveId";
this.txtSlaveId.Size = new System.Drawing.Size(12, 23); this.txtSlaveId.Size = new System.Drawing.Size(18, 23);
this.txtSlaveId.TabIndex = 255; this.txtSlaveId.TabIndex = 255;
this.txtSlaveId.Text = "0"; this.txtSlaveId.Text = "0";
this.txtSlaveId.Visible = false; this.txtSlaveId.Visible = false;
...@@ -342,6 +334,17 @@ ...@@ -342,6 +334,17 @@
this.groupBox6.TabStop = false; this.groupBox6.TabStop = false;
this.groupBox6.Text = "当前状态"; this.groupBox6.Text = "当前状态";
// //
// lblrobotTaskInfo
//
this.lblrobotTaskInfo.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.lblrobotTaskInfo.ForeColor = System.Drawing.Color.Black;
this.lblrobotTaskInfo.Location = new System.Drawing.Point(2, 394);
this.lblrobotTaskInfo.Name = "lblrobotTaskInfo";
this.lblrobotTaskInfo.Size = new System.Drawing.Size(977, 109);
this.lblrobotTaskInfo.TabIndex = 282;
this.lblrobotTaskInfo.Text = "机器人获取任务";
//
// lblInoutInfo // lblInoutInfo
// //
this.lblInoutInfo.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) this.lblInoutInfo.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
...@@ -392,10 +395,9 @@ ...@@ -392,10 +395,9 @@
// //
// tabPage5 // tabPage5
// //
this.tabPage5.Controls.Add(this.btnSavePoint);
this.tabPage5.Controls.Add(this.checkBoxEdit);
this.tabPage5.Controls.Add(this.groupBox5); this.tabPage5.Controls.Add(this.groupBox5);
this.tabPage5.Controls.Add(this.groupBox2); this.tabPage5.Controls.Add(this.groupBox2);
this.tabPage5.Controls.Add(this.checkBoxEdit);
this.tabPage5.Controls.Add(this.axisMoveControl1); this.tabPage5.Controls.Add(this.axisMoveControl1);
this.tabPage5.Location = new System.Drawing.Point(4, 26); this.tabPage5.Location = new System.Drawing.Point(4, 26);
this.tabPage5.Name = "tabPage5"; this.tabPage5.Name = "tabPage5";
...@@ -404,28 +406,6 @@ ...@@ -404,28 +406,6 @@
this.tabPage5.Text = "伺服信息"; this.tabPage5.Text = "伺服信息";
this.tabPage5.UseVisualStyleBackColor = true; this.tabPage5.UseVisualStyleBackColor = true;
// //
// btnSavePoint
//
this.btnSavePoint.Location = new System.Drawing.Point(743, 306);
this.btnSavePoint.Name = "btnSavePoint";
this.btnSavePoint.Size = new System.Drawing.Size(157, 53);
this.btnSavePoint.TabIndex = 4;
this.btnSavePoint.Text = "保存点位";
this.btnSavePoint.UseVisualStyleBackColor = true;
this.btnSavePoint.Click += new System.EventHandler(this.btnSavePoint_Click);
//
// checkBoxEdit
//
this.checkBoxEdit.AutoSize = true;
this.checkBoxEdit.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.checkBoxEdit.Location = new System.Drawing.Point(505, 319);
this.checkBoxEdit.Name = "checkBoxEdit";
this.checkBoxEdit.Size = new System.Drawing.Size(93, 26);
this.checkBoxEdit.TabIndex = 3;
this.checkBoxEdit.Text = "启用编辑";
this.checkBoxEdit.UseVisualStyleBackColor = true;
this.checkBoxEdit.CheckedChanged += new System.EventHandler(this.checkBoxEdit_CheckedChanged);
//
// groupBox5 // groupBox5
// //
this.groupBox5.Controls.Add(this.compressaxisControlP4); this.groupBox5.Controls.Add(this.compressaxisControlP4);
...@@ -490,6 +470,7 @@ ...@@ -490,6 +470,7 @@
// //
// groupBox2 // groupBox2
// //
this.groupBox2.Controls.Add(this.btnSavePoint);
this.groupBox2.Controls.Add(this.moveaxisControlP10); this.groupBox2.Controls.Add(this.moveaxisControlP10);
this.groupBox2.Controls.Add(this.moveaxisControlP9); this.groupBox2.Controls.Add(this.moveaxisControlP9);
this.groupBox2.Controls.Add(this.moveaxisControlP8); this.groupBox2.Controls.Add(this.moveaxisControlP8);
...@@ -502,15 +483,25 @@ ...@@ -502,15 +483,25 @@
this.groupBox2.Controls.Add(this.moveaxisControlP1); this.groupBox2.Controls.Add(this.moveaxisControlP1);
this.groupBox2.Location = new System.Drawing.Point(489, 13); this.groupBox2.Location = new System.Drawing.Point(489, 13);
this.groupBox2.Name = "groupBox2"; this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(493, 274); this.groupBox2.Size = new System.Drawing.Size(493, 332);
this.groupBox2.TabIndex = 1; this.groupBox2.TabIndex = 1;
this.groupBox2.TabStop = false; this.groupBox2.TabStop = false;
this.groupBox2.Text = "行走机构"; this.groupBox2.Text = "行走机构";
// //
// btnSavePoint
//
this.btnSavePoint.Location = new System.Drawing.Point(270, 264);
this.btnSavePoint.Name = "btnSavePoint";
this.btnSavePoint.Size = new System.Drawing.Size(157, 53);
this.btnSavePoint.TabIndex = 4;
this.btnSavePoint.Text = "保存点位";
this.btnSavePoint.UseVisualStyleBackColor = true;
this.btnSavePoint.Click += new System.EventHandler(this.btnSavePoint_Click);
//
// moveaxisControlP10 // moveaxisControlP10
// //
this.moveaxisControlP10.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.moveaxisControlP10.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.moveaxisControlP10.Location = new System.Drawing.Point(254, 210); this.moveaxisControlP10.Location = new System.Drawing.Point(254, 216);
this.moveaxisControlP10.Name = "moveaxisControlP10"; this.moveaxisControlP10.Name = "moveaxisControlP10";
this.moveaxisControlP10.PointBackColor = System.Drawing.Color.LightSkyBlue; this.moveaxisControlP10.PointBackColor = System.Drawing.Color.LightSkyBlue;
this.moveaxisControlP10.PointForeColor = System.Drawing.Color.Black; this.moveaxisControlP10.PointForeColor = System.Drawing.Color.Black;
...@@ -522,7 +513,7 @@ ...@@ -522,7 +513,7 @@
// moveaxisControlP9 // moveaxisControlP9
// //
this.moveaxisControlP9.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.moveaxisControlP9.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.moveaxisControlP9.Location = new System.Drawing.Point(6, 210); this.moveaxisControlP9.Location = new System.Drawing.Point(254, 163);
this.moveaxisControlP9.Name = "moveaxisControlP9"; this.moveaxisControlP9.Name = "moveaxisControlP9";
this.moveaxisControlP9.PointBackColor = System.Drawing.Color.LightSkyBlue; this.moveaxisControlP9.PointBackColor = System.Drawing.Color.LightSkyBlue;
this.moveaxisControlP9.PointForeColor = System.Drawing.Color.Black; this.moveaxisControlP9.PointForeColor = System.Drawing.Color.Black;
...@@ -534,7 +525,7 @@ ...@@ -534,7 +525,7 @@
// moveaxisControlP8 // moveaxisControlP8
// //
this.moveaxisControlP8.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.moveaxisControlP8.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.moveaxisControlP8.Location = new System.Drawing.Point(254, 163); this.moveaxisControlP8.Location = new System.Drawing.Point(254, 116);
this.moveaxisControlP8.Name = "moveaxisControlP8"; this.moveaxisControlP8.Name = "moveaxisControlP8";
this.moveaxisControlP8.PointBackColor = System.Drawing.Color.LightSkyBlue; this.moveaxisControlP8.PointBackColor = System.Drawing.Color.LightSkyBlue;
this.moveaxisControlP8.PointForeColor = System.Drawing.Color.Black; this.moveaxisControlP8.PointForeColor = System.Drawing.Color.Black;
...@@ -546,7 +537,7 @@ ...@@ -546,7 +537,7 @@
// moveaxisControlP7 // moveaxisControlP7
// //
this.moveaxisControlP7.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.moveaxisControlP7.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.moveaxisControlP7.Location = new System.Drawing.Point(6, 163); this.moveaxisControlP7.Location = new System.Drawing.Point(6, 216);
this.moveaxisControlP7.Name = "moveaxisControlP7"; this.moveaxisControlP7.Name = "moveaxisControlP7";
this.moveaxisControlP7.PointBackColor = System.Drawing.Color.LightSkyBlue; this.moveaxisControlP7.PointBackColor = System.Drawing.Color.LightSkyBlue;
this.moveaxisControlP7.PointForeColor = System.Drawing.Color.Black; this.moveaxisControlP7.PointForeColor = System.Drawing.Color.Black;
...@@ -558,7 +549,7 @@ ...@@ -558,7 +549,7 @@
// moveaxisControlP6 // moveaxisControlP6
// //
this.moveaxisControlP6.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.moveaxisControlP6.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.moveaxisControlP6.Location = new System.Drawing.Point(254, 116); this.moveaxisControlP6.Location = new System.Drawing.Point(6, 169);
this.moveaxisControlP6.Name = "moveaxisControlP6"; this.moveaxisControlP6.Name = "moveaxisControlP6";
this.moveaxisControlP6.PointBackColor = System.Drawing.Color.LightSkyBlue; this.moveaxisControlP6.PointBackColor = System.Drawing.Color.LightSkyBlue;
this.moveaxisControlP6.PointForeColor = System.Drawing.Color.Black; this.moveaxisControlP6.PointForeColor = System.Drawing.Color.Black;
...@@ -594,7 +585,7 @@ ...@@ -594,7 +585,7 @@
// moveaxisControlP3 // moveaxisControlP3
// //
this.moveaxisControlP3.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.moveaxisControlP3.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.moveaxisControlP3.Location = new System.Drawing.Point(6, 69); this.moveaxisControlP3.Location = new System.Drawing.Point(6, 276);
this.moveaxisControlP3.Name = "moveaxisControlP3"; this.moveaxisControlP3.Name = "moveaxisControlP3";
this.moveaxisControlP3.PointBackColor = System.Drawing.Color.GreenYellow; this.moveaxisControlP3.PointBackColor = System.Drawing.Color.GreenYellow;
this.moveaxisControlP3.PointForeColor = System.Drawing.Color.Black; this.moveaxisControlP3.PointForeColor = System.Drawing.Color.Black;
...@@ -606,7 +597,7 @@ ...@@ -606,7 +597,7 @@
// moveaxisControlP2 // moveaxisControlP2
// //
this.moveaxisControlP2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.moveaxisControlP2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.moveaxisControlP2.Location = new System.Drawing.Point(254, 22); this.moveaxisControlP2.Location = new System.Drawing.Point(6, 69);
this.moveaxisControlP2.Name = "moveaxisControlP2"; this.moveaxisControlP2.Name = "moveaxisControlP2";
this.moveaxisControlP2.PointBackColor = System.Drawing.Color.YellowGreen; this.moveaxisControlP2.PointBackColor = System.Drawing.Color.YellowGreen;
this.moveaxisControlP2.PointForeColor = System.Drawing.Color.Black; this.moveaxisControlP2.PointForeColor = System.Drawing.Color.Black;
...@@ -627,6 +618,18 @@ ...@@ -627,6 +618,18 @@
this.moveaxisControlP1.Size = new System.Drawing.Size(233, 41); this.moveaxisControlP1.Size = new System.Drawing.Size(233, 41);
this.moveaxisControlP1.TabIndex = 0; this.moveaxisControlP1.TabIndex = 0;
// //
// checkBoxEdit
//
this.checkBoxEdit.AutoSize = true;
this.checkBoxEdit.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.checkBoxEdit.Location = new System.Drawing.Point(666, 370);
this.checkBoxEdit.Name = "checkBoxEdit";
this.checkBoxEdit.Size = new System.Drawing.Size(93, 26);
this.checkBoxEdit.TabIndex = 3;
this.checkBoxEdit.Text = "启用编辑";
this.checkBoxEdit.UseVisualStyleBackColor = true;
this.checkBoxEdit.CheckedChanged += new System.EventHandler(this.checkBoxEdit_CheckedChanged);
//
// axisMoveControl1 // axisMoveControl1
// //
this.axisMoveControl1.Location = new System.Drawing.Point(3, 3); this.axisMoveControl1.Location = new System.Drawing.Point(3, 3);
...@@ -636,7 +639,6 @@ ...@@ -636,7 +639,6 @@
// //
// tabPage1 // tabPage1
// //
this.tabPage1.Controls.Add(this.groupBox7);
this.tabPage1.Controls.Add(this.groupBox1); this.tabPage1.Controls.Add(this.groupBox1);
this.tabPage1.Controls.Add(this.groupBox3); this.tabPage1.Controls.Add(this.groupBox3);
this.tabPage1.Controls.Add(this.groupBox4); this.tabPage1.Controls.Add(this.groupBox4);
...@@ -648,84 +650,6 @@ ...@@ -648,84 +650,6 @@
this.tabPage1.Text = " IO列表 "; this.tabPage1.Text = " IO列表 ";
this.tabPage1.UseVisualStyleBackColor = true; this.tabPage1.UseVisualStyleBackColor = true;
// //
// groupBox7
//
this.groupBox7.Controls.Add(this.cmbBoxAd);
this.groupBox7.Controls.Add(this.button1);
this.groupBox7.Controls.Add(this.label1);
this.groupBox7.Controls.Add(this.textBox1);
this.groupBox7.Controls.Add(this.lblValue);
this.groupBox7.Controls.Add(this.btnGetData);
this.groupBox7.Location = new System.Drawing.Point(416, 152);
this.groupBox7.Name = "groupBox7";
this.groupBox7.Size = new System.Drawing.Size(563, 140);
this.groupBox7.TabIndex = 106;
this.groupBox7.TabStop = false;
this.groupBox7.Text = "宽高系数设置";
//
// cmbBoxAd
//
this.cmbBoxAd.FormattingEnabled = true;
this.cmbBoxAd.Items.AddRange(new object[] {
"测宽",
"测高"});
this.cmbBoxAd.Location = new System.Drawing.Point(10, 25);
this.cmbBoxAd.Name = "cmbBoxAd";
this.cmbBoxAd.Size = new System.Drawing.Size(259, 25);
this.cmbBoxAd.TabIndex = 278;
this.cmbBoxAd.SelectedIndexChanged += new System.EventHandler(this.cmbBoxAd_SelectedIndexChanged);
//
// button1
//
this.button1.BackColor = System.Drawing.Color.White;
this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.button1.Location = new System.Drawing.Point(10, 67);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(110, 34);
this.button1.TabIndex = 277;
this.button1.Text = "保存系数";
this.button1.UseVisualStyleBackColor = false;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(328, 33);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(44, 17);
this.label1.TabIndex = 276;
this.label1.Text = "系数:";
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(378, 27);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(100, 23);
this.textBox1.TabIndex = 275;
//
// lblValue
//
this.lblValue.AutoSize = true;
this.lblValue.Location = new System.Drawing.Point(300, 84);
this.lblValue.Name = "lblValue";
this.lblValue.Size = new System.Drawing.Size(32, 17);
this.lblValue.TabIndex = 274;
this.lblValue.Text = "值:";
//
// btnGetData
//
this.btnGetData.BackColor = System.Drawing.Color.White;
this.btnGetData.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnGetData.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnGetData.Location = new System.Drawing.Point(159, 67);
this.btnGetData.Name = "btnGetData";
this.btnGetData.Size = new System.Drawing.Size(110, 34);
this.btnGetData.TabIndex = 273;
this.btnGetData.Text = "获取值";
this.btnGetData.UseVisualStyleBackColor = false;
this.btnGetData.Click += new System.EventHandler(this.btnGetData_Click);
//
// tabPage4 // tabPage4
// //
this.tabPage4.Controls.Add(this.chkManualRobot); this.tabPage4.Controls.Add(this.chkManualRobot);
...@@ -872,17 +796,6 @@ ...@@ -872,17 +796,6 @@
this.btnStop.UseVisualStyleBackColor = false; this.btnStop.UseVisualStyleBackColor = false;
this.btnStop.Click += new System.EventHandler(this.btnStop_Click); this.btnStop.Click += new System.EventHandler(this.btnStop_Click);
// //
// lblrobotTaskInfo
//
this.lblrobotTaskInfo.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.lblrobotTaskInfo.ForeColor = System.Drawing.Color.Black;
this.lblrobotTaskInfo.Location = new System.Drawing.Point(2, 394);
this.lblrobotTaskInfo.Name = "lblrobotTaskInfo";
this.lblrobotTaskInfo.Size = new System.Drawing.Size(977, 109);
this.lblrobotTaskInfo.TabIndex = 282;
this.lblrobotTaskInfo.Text = "机器人获取任务";
//
// FrmRobotEquip // FrmRobotEquip
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
...@@ -911,8 +824,6 @@ ...@@ -911,8 +824,6 @@
this.groupBox5.ResumeLayout(false); this.groupBox5.ResumeLayout(false);
this.groupBox2.ResumeLayout(false); this.groupBox2.ResumeLayout(false);
this.tabPage1.ResumeLayout(false); this.tabPage1.ResumeLayout(false);
this.groupBox7.ResumeLayout(false);
this.groupBox7.PerformLayout();
this.tabPage4.ResumeLayout(false); this.tabPage4.ResumeLayout(false);
this.tabPage4.PerformLayout(); this.tabPage4.PerformLayout();
this.panBase.ResumeLayout(false); this.panBase.ResumeLayout(false);
...@@ -979,13 +890,6 @@ ...@@ -979,13 +890,6 @@
private System.Windows.Forms.Button btnSavePoint; private System.Windows.Forms.Button btnSavePoint;
private System.Windows.Forms.CheckBox checkBoxEdit; private System.Windows.Forms.CheckBox checkBoxEdit;
private System.Windows.Forms.CheckBox chkManualRobot; private System.Windows.Forms.CheckBox chkManualRobot;
private System.Windows.Forms.GroupBox groupBox7;
private System.Windows.Forms.Button btnGetData;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Label lblValue;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.ComboBox cmbBoxAd;
private System.Windows.Forms.Label lblrobotTaskInfo; private System.Windows.Forms.Label lblrobotTaskInfo;
} }
} }
......
...@@ -18,7 +18,7 @@ using OnlineStore.LoadCSVLibrary; ...@@ -18,7 +18,7 @@ using OnlineStore.LoadCSVLibrary;
using OnlineStore.Common; using OnlineStore.Common;
using JAKA; using JAKA;
namespace OnlineStore.XLRStore namespace OnlineStore.CarriageClient
{ {
internal partial class FrmRobotEquip : FrmBase internal partial class FrmRobotEquip : FrmBase
{ {
...@@ -33,7 +33,6 @@ namespace OnlineStore.XLRStore ...@@ -33,7 +33,6 @@ namespace OnlineStore.XLRStore
axisMoveControl1.LoadData(robotEquip, robotEquip.axisArray); axisMoveControl1.LoadData(robotEquip, robotEquip.axisArray);
LoadPointData(); LoadPointData();
PointEdit(false); PointEdit(false);
cmbBoxAd.SelectedIndex = 0;
robotEquip.JAKAServer.AssociateControl(ucRobot1, robotEquip.JAKAServer.GetJAKABean(robotEquip.Config.Robot_IP)); robotEquip.JAKAServer.AssociateControl(ucRobot1, robotEquip.JAKAServer.GetJAKABean(robotEquip.Config.Robot_IP));
} }
private void FrmStoreIOStatus_Load(object sender, EventArgs e) private void FrmStoreIOStatus_Load(object sender, EventArgs e)
...@@ -241,7 +240,7 @@ namespace OnlineStore.XLRStore ...@@ -241,7 +240,7 @@ namespace OnlineStore.XLRStore
{ {
lblInoutInfo.Text = ""; lblInoutInfo.Text = "";
} }
lblrobotTaskInfo.Text = SServerManager.RobotTaskInfo; lblrobotTaskInfo.Text =$"{SServerManager.RobotTaskInfo}\r\n{SServerManager.BoxDoorStatus}" ;
lblMoveInfo.Text = robotEquip.GetMoveStr();//+ "料仓类型:" + (boxBean.Config.IsBigTray.Equals(1) ? "大料盘" : "小料盘"); lblMoveInfo.Text = robotEquip.GetMoveStr();//+ "料仓类型:" + (boxBean.Config.IsBigTray.Equals(1) ? "大料盘" : "小料盘");
//string canOut = boxBean.CanOutStore(boxBean.DeviceID) ? "可出库" : "不可出库"; //string canOut = boxBean.CanOutStore(boxBean.DeviceID) ? "可出库" : "不可出库";
lblStoreStatus.Text = DeviceBase.GetRunStr(robotEquip.runStatus);// + "(" + canOut + ")"; lblStoreStatus.Text = DeviceBase.GetRunStr(robotEquip.runStatus);// + "(" + canOut + ")";
...@@ -572,56 +571,6 @@ namespace OnlineStore.XLRStore ...@@ -572,56 +571,6 @@ namespace OnlineStore.XLRStore
{ {
ManualRobot(chkManualRobot.Checked); ManualRobot(chkManualRobot.Checked);
} }
private void cmbBoxAd_SelectedIndexChanged(object sender, EventArgs e)
{
switch (cmbBoxAd.SelectedItem.ToString())
{
case "测高":
textBox1.Text= robotEquip.Config.Coeff_Height.ToString();
break;
case "测宽":
textBox1.Text = robotEquip.Config.Coeff_Width.ToString();
break;
}
}
private void btnGetData_Click(object sender, EventArgs e)
{
double val;
try
{
val = IOManager.GetADVal(cmbBoxAd.SelectedIndex) * double.Parse(textBox1.Text);
lblValue.Text = $"{val.ToString("f3")}";
}
catch
{
lblValue.Text = "0";
}
}
private void button1_Click(object sender, EventArgs e)
{
try
{
double val = double.Parse(textBox1.Text);
switch (cmbBoxAd.SelectedItem.ToString())
{
case "测高":
robotEquip.Config.Coeff_Height = val;
break;
case "测宽":
robotEquip.Config.Coeff_Width = val;
break;
}
StoreManager.SaveClientConfig(robotEquip.Config);
MessageBox.Show("保存测量系数成功");
}
catch(Exception ex)
{
LogUtil.error("保存测量系数失败",ex);
}
}
} }
} }
......
namespace OnlineStore.XLRStore namespace OnlineStore.CarriageClient
{ {
partial class AxisMoveControl partial class AxisMoveControl
{ {
......
...@@ -14,7 +14,7 @@ using OnlineStore.LoadCSVLibrary; ...@@ -14,7 +14,7 @@ using OnlineStore.LoadCSVLibrary;
using HuichuanLibrary; using HuichuanLibrary;
using System.Net.Sockets; using System.Net.Sockets;
namespace OnlineStore.XLRStore namespace OnlineStore.CarriageClient
{ {
public partial class AxisMoveControl : UserControl public partial class AxisMoveControl : UserControl
{ {
...@@ -151,45 +151,12 @@ namespace OnlineStore.XLRStore ...@@ -151,45 +151,12 @@ namespace OnlineStore.XLRStore
switch (cmbAxis.Items[cmbAxis.SelectedIndex].ToString()) switch (cmbAxis.Items[cmbAxis.SelectedIndex].ToString())
{ {
case "行走机构": case "行走机构":
btnAddMove.Text = "点动+(前进)"; btnAddMove.Text = "点动+(出料方向)";
btnDelMove.Text = "点动-(后退)"; btnDelMove.Text = "点动-(入料方向)";
break; break;
case "料斗拉取进出轴": case "压紧轴":
btnAddMove.Text = "点动+(左移A侧)"; btnAddMove.Text = "点动+(压紧)";
btnDelMove.Text = "点动-(右移B侧)"; btnDelMove.Text = "点动-(放松)";
break;
case "移栽升降轴":
case "料斗拉取升降轴":
btnAddMove.Text = "点动+(上升)";
btnDelMove.Text = "点动-(下降)";
break;
case "A面移栽X轴":
case "B面移栽X轴":
btnAddMove.Text = "点动+(后退)";
btnDelMove.Text = "点动-(前进)";
break;
case "A面移栽旋转轴":
case "B面移栽旋转轴":
btnAddMove.Text = "点动+(叉子水平)";
btnDelMove.Text = "点动-(叉子垂直)";
break;
case "A面移栽压紧轴":
case "B面移栽压紧轴":
btnAddMove.Text = "点动+(放松)";
btnDelMove.Text = "点动-(夹紧)";
break;
case "取料旋转轴":
btnAddMove.Text = "点动+(向左)";
btnDelMove.Text = "点动-(向右)";
break;
case "取料升降轴":
btnAddMove.Text = "点动+(下降)";
btnDelMove.Text = "点动-(上升)";
break;
case "A料口提升轴":
case "B料口提升轴":
btnAddMove.Text = "点动+(上升)";
btnDelMove.Text = "点动-(下降)";
break; break;
default: default:
btnAddMove.Text = "点动+"; btnAddMove.Text = "点动+";
......
 
namespace OnlineStore.XLRStore.useControl namespace OnlineStore.CarriageClient.useControl
{ {
partial class AxisMoveRectControl partial class AxisMoveRectControl
{ {
......
...@@ -8,7 +8,7 @@ using System.Text; ...@@ -8,7 +8,7 @@ using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
namespace OnlineStore.XLRStore.useControl namespace OnlineStore.CarriageClient.useControl
{ {
public partial class AxisMoveRectControl : AxisMoveControl public partial class AxisMoveRectControl : AxisMoveControl
{ {
......
 
namespace OnlineStore.XLRStore.useControl namespace OnlineStore.CarriageClient.useControl
{ {
partial class AxisPointControl partial class AxisPointControl
{ {
......
...@@ -10,7 +10,7 @@ using System.Text; ...@@ -10,7 +10,7 @@ using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
namespace OnlineStore.XLRStore.useControl namespace OnlineStore.CarriageClient.useControl
{ {
public partial class AxisPointControl : UserControl public partial class AxisPointControl : UserControl
{ {
......
 
namespace OnlineStore.XLRStore.useControl namespace OnlineStore.CarriageClient.useControl
{ {
partial class ClampJawControl partial class ClampJawControl
{ {
......
...@@ -10,7 +10,7 @@ using System.Text; ...@@ -10,7 +10,7 @@ using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
namespace OnlineStore.XLRStore.useControl namespace OnlineStore.CarriageClient.useControl
{ {
public partial class ClampJawControl : UserControl public partial class ClampJawControl : UserControl
{ {
......
namespace OnlineStore.XLRStore namespace OnlineStore.CarriageClient
{ {
partial class EquipControl partial class EquipControl
{ {
......
...@@ -8,7 +8,7 @@ using System.Text; ...@@ -8,7 +8,7 @@ using System.Text;
using System.Windows.Forms; using System.Windows.Forms;
using OnlineStore.DeviceLibrary; using OnlineStore.DeviceLibrary;
namespace OnlineStore.XLRStore namespace OnlineStore.CarriageClient
{ {
public partial class EquipControl : UserControl public partial class EquipControl : UserControl
{ {
......
namespace OnlineStore.XLRStore namespace OnlineStore.CarriageClient
{ {
partial class ReelDataControl partial class ReelDataControl
{ {
......
...@@ -9,7 +9,7 @@ using System.Windows.Forms; ...@@ -9,7 +9,7 @@ using System.Windows.Forms;
using OnlineStore.DeviceLibrary; using OnlineStore.DeviceLibrary;
using OnlineStore.LoadCSVLibrary; using OnlineStore.LoadCSVLibrary;
namespace OnlineStore.XLRStore namespace OnlineStore.CarriageClient
{ {
public partial class ReelDataControl : UserControl public partial class ReelDataControl : UserControl
{ {
......
 库位号格式: 
例:05AA03040102
05:第1和第2位表示料仓编号,01 - 08
AA:第3和第4位存储机构A面或B面,AA或者BB
03:第5和第6位表示抽屉在第几行
04:第7和第8位表示抽屉在第几列
01:第9和第10位表示在抽屉中的第几行
02:第11和第12位表示在抽屉中的第几列
批量轴回原点
如果旋转轴在暂存区,且在下暂存区,升降轴先到高位
旋转轴回待机点P1
升降轴回P1
点击复位按钮自动启动。
20211208
旋转轴增加反向间隙补偿功能,
Config_InputEquip.csv 配置文件需要增加一行配置:
PRO,0,取料旋转轴_反向间隙补偿值,MiddleAxis_Reverse_Offset,300,,,,,,,,,,,,
...@@ -112,5 +112,6 @@ namespace OnlineStore.Common ...@@ -112,5 +112,6 @@ namespace OnlineStore.Common
public static string ValidityPeriod = "ValidityPeriod"; public static string ValidityPeriod = "ValidityPeriod";
public static string ValidityCnt = "ValidityCnt"; public static string ValidityCnt = "ValidityCnt";
public static string ReelHeightRange = "ReelHeightRange";
} }
} }
...@@ -30,7 +30,7 @@ namespace OnlineStore.Common ...@@ -30,7 +30,7 @@ namespace OnlineStore.Common
public string msg = ""; public string msg = "";
public string pos = ""; public string pos = "";
public string barcode = ""; public string barcode = "";
public string taskId = "";
//以下为出库参数 //以下为出库参数
public string posId = ""; public string posId = "";
public string plateW = ""; public string plateW = "";
...@@ -262,7 +262,7 @@ namespace OnlineStore.Common ...@@ -262,7 +262,7 @@ namespace OnlineStore.Common
public static string rfidLoc = "rfidLoc"; public static string rfidLoc = "rfidLoc";
public static string barcode = "barcode"; public static string barcode = "barcode";
public static string taskId = "taskId";
/// <summary> /// <summary>
/// 上次入库的库位号 /// 上次入库的库位号
/// </summary> /// </summary>
......
...@@ -7,8 +7,14 @@ PRO,0,当多久没操作时流水线休眠(秒),Sleep_MSeconds,600,,,,,,,,,, ...@@ -7,8 +7,14 @@ PRO,0,当多久没操作时流水线休眠(秒),Sleep_MSeconds,600,,,,,,,,,,
PRO,0,气压检测信号关闭需要持续的时间,Airpressure_CheckSeconds,600,,,,,,,,,,,,,, PRO,0,气压检测信号关闭需要持续的时间,Airpressure_CheckSeconds,600,,,,,,,,,,,,,,
PRO,0,IO信号超时时间(秒),IOSingle_TimerOut,15,,,,,,,,,,,,,, PRO,0,IO信号超时时间(秒),IOSingle_TimerOut,15,,,,,,,,,,,,,,
PRO,0,机器人IP,Robot_IP,192.168.102.21,,,,,,,,,,,,,, PRO,0,机器人IP,Robot_IP,192.168.102.21,,,,,,,,,,,,,,
PRO,0,料盘高度转换系数,Coeff_Height,0.5,,,,,,,,,,,,,, PRO,0,Ad1高度转换系数,Coeff_Height_Ad1,0.5,,,,,,,,,,,,,,
PRO,0,料盘宽度转换系数,Coeff_Width,0.5,,,,,,,,,,,,,, PRO,0,Ad1高度基数,BaseVal_Height_Ad1,1,,,,,,,,,,,,,,
PRO,0,Ad2高度转换系数,Coeff_Height_Ad2,0.5,,,,,,,,,,,,,,
PRO,0,Ad2高度基数,BaseVal_Height_Ad2,1,,,,,,,,,,,,,,
PRO,0,Ad3高度转换系数,Coeff_Height_Ad3,0.5,,,,,,,,,,,,,,
PRO,0,Ad3高度基数,BaseVal_Height_Ad3,1,,,,,,,,,,,,,,
PRO,0,Ad4高度转换系数,Coeff_Height_Ad4,0.5,,,,,,,,,,,,,,
PRO,0,Ad4高度基数,BaseVal_Height_Ad4,1,,,,,,,,,,,,,,
PRO,0,扫码的相机名称(多个用#分隔),ScanCodeCamera,GigE:MV-CE200-10GC (00E70964538)#GigE:MV-CE200-10GC (00E70964539),,,,,,,,,,,,,, PRO,0,扫码的相机名称(多个用#分隔),ScanCodeCamera,GigE:MV-CE200-10GC (00E70964538)#GigE:MV-CE200-10GC (00E70964539),,,,,,,,,,,,,,
,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,
PRO,0,行走机构_待机点,MoveAxis_P1,0,,,,,,,,,,,, PRO,0,行走机构_待机点,MoveAxis_P1,0,,,,,,,,,,,,
......
...@@ -84,7 +84,6 @@ ...@@ -84,7 +84,6 @@
<Compile Include="clientEquip\outletEquip\OutletEquip.cs" /> <Compile Include="clientEquip\outletEquip\OutletEquip.cs" />
<Compile Include="clientEquip\outletEquip\OutletEquip_OutStore.cs" /> <Compile Include="clientEquip\outletEquip\OutletEquip_OutStore.cs" />
<Compile Include="clientEquip\robotEquip\RobotEquip_Camera.cs" /> <Compile Include="clientEquip\robotEquip\RobotEquip_Camera.cs" />
<Compile Include="clientEquip\robotEquip\NGBox.cs" />
<Compile Include="clientEquip\robotEquip\RobotEquip-NGBox.cs" /> <Compile Include="clientEquip\robotEquip\RobotEquip-NGBox.cs" />
<Compile Include="manager\agvClient\AgvClient.cs" /> <Compile Include="manager\agvClient\AgvClient.cs" />
<Compile Include="manager\BufferDataManager.cs" /> <Compile Include="manager\BufferDataManager.cs" />
...@@ -176,14 +175,14 @@ ...@@ -176,14 +175,14 @@
</Content> </Content>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\..\..\..\Projects\CSharp-Workspace\Dolen\JAKA\JAKA.csproj">
<Project>{b702ab04-bb76-491f-812a-603298d08fbf}</Project>
<Name>JAKA</Name>
</ProjectReference>
<ProjectReference Include="..\Common\Common.csproj"> <ProjectReference Include="..\Common\Common.csproj">
<Project>{43cdd09e-fcf3-4960-a01d-3bbfe9933122}</Project> <Project>{43cdd09e-fcf3-4960-a01d-3bbfe9933122}</Project>
<Name>Common</Name> <Name>Common</Name>
</ProjectReference> </ProjectReference>
<ProjectReference Include="..\JAKA\JAKA.csproj">
<Project>{b702ab04-bb76-491f-812a-603298d08fbf}</Project>
<Name>JAKA</Name>
</ProjectReference>
<ProjectReference Include="..\LoadCVSLibrary\LoadCSVLibrary.csproj"> <ProjectReference Include="..\LoadCVSLibrary\LoadCSVLibrary.csproj">
<Project>{064bebf5-8faa-4ea2-a5f3-a06e6e7d9251}</Project> <Project>{064bebf5-8faa-4ea2-a5f3-a06e6e7d9251}</Project>
<Name>LoadCSVLibrary</Name> <Name>LoadCSVLibrary</Name>
......
...@@ -71,7 +71,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -71,7 +71,7 @@ namespace OnlineStore.DeviceLibrary
canStart = true; canStart = true;
AgvClient.Init(); AgvClient.Init();
} }
#endregion #endregion
public string CanStart() public string CanStart()
...@@ -113,7 +113,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -113,7 +113,7 @@ namespace OnlineStore.DeviceLibrary
mainTimer.Enabled = false; mainTimer.Enabled = false;
isInSuddenDown = false; isInSuddenDown = false;
isNoAirpressure_Check = false; isNoAirpressure_Check = false;
SetWarnMsg(""); ClearWarnMsg();
MoveInfo.NewMove(MoveType.Reset); MoveInfo.NewMove(MoveType.Reset);
MoveInfo.NextMoveStep(StepEnum.Wait); MoveInfo.NextMoveStep(StepEnum.Wait);
...@@ -151,7 +151,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -151,7 +151,7 @@ namespace OnlineStore.DeviceLibrary
public override bool Reset() public override bool Reset()
{ {
bool isNeedAllReset = false; bool isNeedAllReset = false;
if (isInSuddenDown || isNoAirpressure_Check) if (isInSuddenDown || isNoAirpressure_Check)
{ {
...@@ -161,7 +161,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -161,7 +161,7 @@ namespace OnlineStore.DeviceLibrary
} }
else if ((runStatus == RunStatus.HomeMoving || runStatus == RunStatus.Reset) && NoAlarm()) else if ((runStatus == RunStatus.HomeMoving || runStatus == RunStatus.Reset) && NoAlarm())
{ {
LogUtil.error(Name + "收到复位信号,已经在复位或原点返回中,且当前无报警,不处理复位"); LogUtil.error(Name + "收到复位信号,已经在复位或原点返回中,且当前无报警,不处理复位");
return false; return false;
} }
...@@ -172,12 +172,12 @@ namespace OnlineStore.DeviceLibrary ...@@ -172,12 +172,12 @@ namespace OnlineStore.DeviceLibrary
//重置通用处理 //重置通用处理
mainTimer.Interval = 1000; mainTimer.Interval = 1000;
// maxSeconds = 10; // maxSeconds = 10;
alarmType = AlarmType.None; alarmType = AlarmType.None;
mainTimer.Enabled = false; mainTimer.Enabled = false;
isInSuddenDown = false; isInSuddenDown = false;
isNoAirpressure_Check = false; isNoAirpressure_Check = false;
SetWarnMsg(""); ClearWarnMsg();
MoveInfo.NewMove(MoveType.Reset); MoveInfo.NewMove(MoveType.Reset);
MoveInfo.NextMoveStep(StepEnum.Wait); MoveInfo.NextMoveStep(StepEnum.Wait);
...@@ -238,7 +238,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -238,7 +238,7 @@ namespace OnlineStore.DeviceLibrary
isOk = false; isOk = false;
break; break;
} }
} }
} }
...@@ -258,7 +258,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -258,7 +258,7 @@ namespace OnlineStore.DeviceLibrary
Alarm(AlarmType.IoSingleTimeOut); Alarm(AlarmType.IoSingleTimeOut);
} }
} }
} }
#endregion #endregion
private bool busyPro = false; private bool busyPro = false;
...@@ -297,11 +297,12 @@ namespace OnlineStore.DeviceLibrary ...@@ -297,11 +297,12 @@ namespace OnlineStore.DeviceLibrary
inletEquip.AutoStartProcess(); inletEquip.AutoStartProcess();
outletEquip.AutoStartProcess(); outletEquip.AutoStartProcess();
robotEquip.AutoStartProcess();
} }
catch (Exception ex) catch (Exception ex)
{ {
LogUtil.error(Name + "LineTimerPro 出错:", ex); LogUtil.error(Name + "LineTimerPro 出错:", ex);
} }
busyPro = false; busyPro = false;
} }
catch (Exception ex) catch (Exception ex)
...@@ -310,7 +311,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -310,7 +311,7 @@ namespace OnlineStore.DeviceLibrary
} }
Thread.Sleep(1); Thread.Sleep(1);
} }
#region 停止运动 #region 停止运动
...@@ -360,7 +361,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -360,7 +361,7 @@ namespace OnlineStore.DeviceLibrary
{ {
LogUtil.info(Name + "清理信号超时报警【" + WarnMsg + "】 "); LogUtil.info(Name + "清理信号超时报警【" + WarnMsg + "】 ");
alarmType = AlarmType.None; alarmType = AlarmType.None;
SetWarnMsg(""); ClearWarnMsg();
} }
} }
} }
...@@ -413,7 +414,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -413,7 +414,7 @@ namespace OnlineStore.DeviceLibrary
ConfigIO io = baseConfig.getWaitIO(wait.IoType); ConfigIO io = baseConfig.getWaitIO(wait.IoType);
WarnMsg = Name + "[" + checkWaitInfo.MoveStep + "]等待" + NotOkMsg + " 超时"; WarnMsg = Name + "[" + checkWaitInfo.MoveStep + "]等待" + NotOkMsg + " 超时";
Alarm(AlarmType.IoSingleTimeOut); Alarm(AlarmType.IoSingleTimeOut);
LogUtil.error( WarnMsg, checkWaitInfo.ErrorLogType); LogUtil.error(WarnMsg, checkWaitInfo.ErrorLogType);
} }
//超过报警时长 //超过报警时长
else if (rwSpan.TotalSeconds > 5 && span.TotalSeconds > 6 && span.TotalSeconds < StoreManager.Config.IOSingle_TimerOut * 2) else if (rwSpan.TotalSeconds > 5 && span.TotalSeconds > 6 && span.TotalSeconds < StoreManager.Config.IOSingle_TimerOut * 2)
...@@ -486,8 +487,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -486,8 +487,8 @@ namespace OnlineStore.DeviceLibrary
#endregion #endregion
#region 忙碌处理 #region 忙碌处理
public override bool StartInstore(InOutParam param) public override bool StartInstore(InOutParam param)
{ {
return true; return true;
...@@ -538,6 +539,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -538,6 +539,6 @@ namespace OnlineStore.DeviceLibrary
} }
} }
} }
} }
\ No newline at end of file \ No newline at end of file
...@@ -133,7 +133,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -133,7 +133,7 @@ namespace OnlineStore.DeviceLibrary
isInPro = false; isInPro = false;
} }
} }
int auto = ConfigAppSettings.GetIntValue(Setting_Init.App_AutoRun);
internal void AutoStartProcess() internal void AutoStartProcess()
{ {
DateTime time = DateTime.Now; DateTime time = DateTime.Now;
...@@ -141,19 +141,27 @@ namespace OnlineStore.DeviceLibrary ...@@ -141,19 +141,27 @@ namespace OnlineStore.DeviceLibrary
{ {
//取新的Io状态 //取新的Io状态
IO_VALUE fuweiValue = IOValue(IO_Type.Reset_BTN); IO_VALUE fuweiValue = IOValue(IO_Type.Reset_BTN);
IO_VALUE autoValue = IOValue(IO_Type.AutoMode_BTN);
if (DILastValueMap.ContainsKey(IO_Type.Reset_BTN)) if (DILastValueMap.ContainsKey(IO_Type.Reset_BTN))
{ {
IO_VALUE lastFuwei = DILastValueMap[IO_Type.Reset_BTN]; IO_VALUE lastFuwei = DILastValueMap[IO_Type.Reset_BTN];
bool isAutoStart = ConfigAppSettings.GetIntValue(Setting_Init.App_AutoRun) == 1; bool isAutoStart = auto == 1;
//收到复位信号后启动 //收到复位信号后启动
if (isAutoStart && fuweiValue.Equals(IO_VALUE.HIGH) && lastFuwei.Equals(IO_VALUE.LOW)) if (isAutoStart && fuweiValue.Equals(IO_VALUE.HIGH) && lastFuwei.Equals(IO_VALUE.LOW))
{ {
//没有启动时收到启动按钮 if (autoValue.Equals(IO_VALUE.HIGH))
LogUtil.info(Name + "没有启动时收到启动按钮,开始调用启动方法!"); {
bool isOk = StartRun(); //没有启动时收到启动按钮
if (!isOk) LogUtil.info(Name + "没有启动时收到启动按钮,开始调用启动方法!");
bool isOk = StartRun();
if (!isOk)
{
LogUtil.error(Name+"启动失败,等待下次启动");
}
}
else
{ {
LogUtil.error("启动失败,等待下次启动"); LogUtil.error($"未切到自动模式,{Name}无法使用复位按钮!");
} }
} }
} }
...@@ -184,14 +192,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -184,14 +192,14 @@ namespace OnlineStore.DeviceLibrary
{ {
LogUtil.info(Name + "清理信号超时报警【" + WarnMsg + "】 "); LogUtil.info(Name + "清理信号超时报警【" + WarnMsg + "】 ");
alarmType = AlarmType.None; alarmType = AlarmType.None;
SetWarnMsg(""); ClearWarnMsg();
} }
} }
else if (runStatus.Equals(RunStatus.Runing) && alarmType.Equals(AlarmType.None)) else if (runStatus.Equals(RunStatus.Runing) && alarmType.Equals(AlarmType.None))
{ {
//设备处于空闲时且无异常,清空异常缓存 //设备处于空闲时且无异常,清空异常缓存
if (WarnMsg != "") if (WarnMsg != "")
SetWarnMsg(""); ClearWarnMsg();
} }
} }
catch (Exception ex) catch (Exception ex)
...@@ -669,6 +677,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -669,6 +677,7 @@ namespace OnlineStore.DeviceLibrary
//取新的Io状态 //取新的Io状态
IO_VALUE fuweiValue = IOValue(IO_Type.Reset_BTN); IO_VALUE fuweiValue = IOValue(IO_Type.Reset_BTN);
IO_VALUE suddenBtn = IOValue(IO_Type.SuddenStop_BTN); IO_VALUE suddenBtn = IOValue(IO_Type.SuddenStop_BTN);
IO_VALUE autoBtn = IOValue(IO_Type.AutoMode_BTN);
addLastDI(IO_Type.SuddenStop_BTN, suddenBtn); addLastDI(IO_Type.SuddenStop_BTN, suddenBtn);
IO_VALUE airValue = IO_VALUE.HIGH; IO_VALUE airValue = IO_VALUE.HIGH;
...@@ -697,7 +706,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -697,7 +706,7 @@ namespace OnlineStore.DeviceLibrary
Thread.Sleep(200); Thread.Sleep(200);
if (IOValue(IO_Type.SuddenStop_BTN).Equals(IO_VALUE.LOW)) if (IOValue(IO_Type.SuddenStop_BTN).Equals(IO_VALUE.LOW))
{ {
SetWarnMsg("收到急停信号,报警急停"); SetWarnMsg(Name+"收到急停信号,报警急停");
Alarm(AlarmType.SuddenStop); Alarm(AlarmType.SuddenStop);
} }
//}); //});
...@@ -707,11 +716,15 @@ namespace OnlineStore.DeviceLibrary ...@@ -707,11 +716,15 @@ namespace OnlineStore.DeviceLibrary
{ {
if (suddenBtn.Equals(IO_VALUE.LOW)) if (suddenBtn.Equals(IO_VALUE.LOW))
{ {
SetWarnMsg("收到复位信号但急停未开,不处理复位"); SetWarnMsg(Name+"收到复位信号但急停未开,不处理复位");
} }
else if (airValue.Equals(IO_VALUE.LOW)) else if (airValue.Equals(IO_VALUE.LOW))
{ {
SetWarnMsg("收到复位信号但未检测到气压信号,不处理复位"); SetWarnMsg(Name+"收到复位信号但未检测到气压信号,不处理复位");
}
else if (autoBtn.Equals(IO_VALUE.LOW))
{
SetWarnMsg(Name + "收到复位信号但为切到未切到自动模式,不处理复位");
} }
else else
{ {
...@@ -746,7 +759,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -746,7 +759,7 @@ namespace OnlineStore.DeviceLibrary
{ {
if (WarnMsg.Contains(msg)) if (WarnMsg.Contains(msg))
{ {
SetWarnMsg(""); ClearWarnMsg();
} }
} }
protected void ClearTimeoutAlarm(string msg) protected void ClearTimeoutAlarm(string msg)
...@@ -759,7 +772,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -759,7 +772,7 @@ namespace OnlineStore.DeviceLibrary
{ {
LogUtil.info(Name + "清理信号超时报警【" + WarnMsg + "】 "); LogUtil.info(Name + "清理信号超时报警【" + WarnMsg + "】 ");
alarmType = AlarmType.None; alarmType = AlarmType.None;
SetWarnMsg(""); ClearWarnMsg();
} }
} }
public Color GetShowColor() public Color GetShowColor()
......
...@@ -109,7 +109,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -109,7 +109,7 @@ namespace OnlineStore.DeviceLibrary
{ {
//复位时不允许进料 //复位时不允许进料
AllowFeedIn(false); AllowFeedIn(false);
SetWarnMsg(""); ClearWarnMsg();
alarmType = AlarmType.None; alarmType = AlarmType.None;
isInSuddenDown = false; isInSuddenDown = false;
isNoAirpressure_Check = false; isNoAirpressure_Check = false;
...@@ -150,16 +150,18 @@ namespace OnlineStore.DeviceLibrary ...@@ -150,16 +150,18 @@ namespace OnlineStore.DeviceLibrary
LogInfo($"复位 {MoveInfo.SLog}:检测到料盘,皮带停止"); LogInfo($"复位 {MoveInfo.SLog}:检测到料盘,皮带停止");
InletRun(false); InletRun(false);
} }
else if (MoveInfo.IsTimeOut(30)) else if (MoveInfo.IsTimeOut(15))
{ {
MoveInfo.NextMoveStep(StepEnum.Inlet_Reset_04_Finish); MoveInfo.NextMoveStep(StepEnum.Inlet_Reset_04_Finish);
LogInfo($"复位 {MoveInfo.SLog}:未检测到料盘,30秒超时,皮带停止"); LogInfo($"复位 {MoveInfo.SLog}:未检测到料盘,15秒超时,皮带停止");
InletRun(false); InletRun(false);
} }
} }
else if (MoveInfo.IsStep(StepEnum.Inlet_Reset_04_Finish)) else if (MoveInfo.IsStep(StepEnum.Inlet_Reset_04_Finish))
{ {
MoveInfo.EndMove(); MoveInfo.EndMove();
runStatus = RunStatus.Runing;
StartInstore(new InOutParam());
} }
} }
...@@ -167,7 +169,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -167,7 +169,8 @@ namespace OnlineStore.DeviceLibrary
{ {
//StopMove时设置状态为none //StopMove时设置状态为none
AllowFeedIn(false); AllowFeedIn(false);
Inch7JackUp(false);
Inch13JackUp(false);
MoveInfo.EndMove(); MoveInfo.EndMove();
} }
...@@ -194,13 +197,13 @@ namespace OnlineStore.DeviceLibrary ...@@ -194,13 +197,13 @@ namespace OnlineStore.DeviceLibrary
if (!MoveStop) if (!MoveStop)
{ {
if (MoveInfo.MoveType.Equals(MoveType.None) && NoErrorAlarm()) //if (MoveInfo.MoveType.Equals(MoveType.None) && NoErrorAlarm())
{ //{
if (!TrayIsInPosition() && BufferDataManager.TrayInInletInfo == null) // if (TrayIsInPosition() && BufferDataManager.TrayInInletInfo == null)
{ // {
StartInstore(new InOutParam()); // StartInstore(new InOutParam());
} // }
} //}
} }
...@@ -413,6 +416,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -413,6 +416,11 @@ namespace OnlineStore.DeviceLibrary
{ {
return IOValue(IO_Type.Inlet_TrayCheck).Equals(IO_VALUE.HIGH); return IOValue(IO_Type.Inlet_TrayCheck).Equals(IO_VALUE.HIGH);
} }
public bool UpdownIsUp()
{
return IOValue(IO_Type.Inlet_13InchJackUpSig).Equals(IO_VALUE.HIGH)
|| IOValue(IO_Type.Inlet_7InchJackUpSig).Equals(IO_VALUE.HIGH);
}
void AddWaitTrayInPosition(bool inposition) void AddWaitTrayInPosition(bool inposition)
{ {
if (inposition) if (inposition)
......
...@@ -29,19 +29,15 @@ namespace OnlineStore.DeviceLibrary ...@@ -29,19 +29,15 @@ namespace OnlineStore.DeviceLibrary
wait.IsEnd = true; wait.IsEnd = true;
} }
} }
else if (wait.WaitType.Equals(WaitEnum.W201_RobotMove)) else if (wait.WaitType.Equals(WaitEnum.W202_RobotInSafe))
{ {
if (StoreManager.Client.robotEquip.RobotMoveEnd(curcmd)) if (StoreManager.Client.robotEquip.RobotInSafeAtInlet())
{ {
wait.IsEnd = true; wait.IsEnd = true;
} }
} }
return wait.IsEnd; return wait.IsEnd;
} }
/// <summary>
/// 当前命令
/// </summary>
private string curcmd = "";
private List<string> LastCodeList = new List<string>(); private List<string> LastCodeList = new List<string>();
#region 自动入料 #region 自动入料
private DateTime startInTime = DateTime.Now; private DateTime startInTime = DateTime.Now;
...@@ -111,7 +107,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -111,7 +107,7 @@ namespace OnlineStore.DeviceLibrary
{ {
NextMoveStep(StepEnum.Inlet_04_TrayInPosition, "料盘到位,拒绝料盘进入,链条停止"); NextMoveStep(StepEnum.Inlet_04_TrayInPosition, "料盘到位,拒绝料盘进入,链条停止");
AllowFeedIn(false); AllowFeedIn(false);
InletRun(false); IOMove(IO_Type.Inlet_Run, IO_VALUE.HIGH,5000);
} }
else if (MoveInfo.IsStep(StepEnum.Inlet_04_TrayInPosition)) else if (MoveInfo.IsStep(StepEnum.Inlet_04_TrayInPosition))
...@@ -131,9 +127,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -131,9 +127,10 @@ namespace OnlineStore.DeviceLibrary
{ {
if (MoveInfo.MoveParam.PosInfo.IsNG) if (MoveInfo.MoveParam.PosInfo.IsNG)
{ {
NextMoveStep(StepEnum.Inlet_08_WaitTrayLeave, "条码NG,等待料盘离开"); NextMoveStep(StepEnum.Inlet_08_WaitTrayLeave, "条码NG,等待机器人到安全位置");
AddWaitTrayInPosition(false); AddWaitTrayInPosition(false);
SetCurCmd(RobotEquip.GetCmd_InletUp()); BufferDataManager.TrayInInletInfo = MoveInfo.MoveParam.PosInfo.ToCopy();
AddWaitRobotInSafe();
} }
else else
{ {
...@@ -157,7 +154,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -157,7 +154,7 @@ namespace OnlineStore.DeviceLibrary
NextMoveStep(StepEnum.Inlet_08_WaitTrayLeave, $"获取目标仓位成功【{MoveInfo.MoveParam.PosInfo.ToStr()}】,等待料盘离开"); NextMoveStep(StepEnum.Inlet_08_WaitTrayLeave, $"获取目标仓位成功【{MoveInfo.MoveParam.PosInfo.ToStr()}】,等待料盘离开");
BufferDataManager.TrayInInletInfo = MoveInfo.MoveParam.PosInfo.ToCopy(); BufferDataManager.TrayInInletInfo = MoveInfo.MoveParam.PosInfo.ToCopy();
AddWaitTrayInPosition(false); AddWaitTrayInPosition(false);
SetCurCmd(RobotEquip.GetCmd_InletUp()); AddWaitRobotInSafe();
} }
else if (MoveInfo.IsTimeOut(15)) else if (MoveInfo.IsTimeOut(15))
{ {
...@@ -167,9 +164,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -167,9 +164,9 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.IsStep(StepEnum.Inlet_08_WaitTrayLeave)) else if (MoveInfo.IsStep(StepEnum.Inlet_08_WaitTrayLeave))
{ {
NextMoveStep(StepEnum.Inlet_09_WaitRobotInSafe, "料盘离开入料口,等待机器人到安全位置"); NextMoveStep(StepEnum.Inlet_09_WaitRobotInSafe, "料盘离开入料口,等待机器人到安全位置");
SetCurCmd(RobotEquip.GetCmd_Standby()); AddWaitRobotInSafe();
AddWaitTime(10000); AddWaitTime(10000);
MoveInfo.OneWaitCanEndStep=true; MoveInfo.OneWaitCanEndStep = true;
} }
else if (MoveInfo.IsStep(StepEnum.Inlet_09_WaitRobotInSafe)) else if (MoveInfo.IsStep(StepEnum.Inlet_09_WaitRobotInSafe))
{ {
...@@ -178,17 +175,17 @@ namespace OnlineStore.DeviceLibrary ...@@ -178,17 +175,17 @@ namespace OnlineStore.DeviceLibrary
} }
else if (MoveInfo.IsStep(StepEnum.Inlet_10_JackDown)) else if (MoveInfo.IsStep(StepEnum.Inlet_10_JackDown))
{ {
curcmd = ""; //MoveInfo.EndMove();
MoveInfo.EndMove(); //runStatus = RunStatus.Runing;
MoveInfo.NextMoveStep(StepEnum.Inlet_01_Wait);
MoveInfo.MoveParam.PosInfo = new InOutPosInfo();
} }
} }
#endregion #endregion
private void SetCurCmd(string cmd) private void AddWaitRobotInSafe()
{ {
curcmd = cmd; MoveInfo.WaitList.Add(WaitResultInfo.WaitRobotInSafe());
MoveInfo.WaitList.Add(WaitResultInfo.WaitRobotMove());
} }
private void Inlet_05_GetTrayInfo() private void Inlet_05_GetTrayInfo()
{ {
...@@ -204,6 +201,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -204,6 +201,7 @@ namespace OnlineStore.DeviceLibrary
try try
{ {
IOMove(IO_Type.Inlet_CamLed, IO_VALUE.HIGH); IOMove(IO_Type.Inlet_CamLed, IO_VALUE.HIGH);
Thread.Sleep(1000);
LastCodeList = CodeManager.CameraScan(Config.ScanCodeCamera, Name); LastCodeList = CodeManager.CameraScan(Config.ScanCodeCamera, Name);
if (LastCodeList.Count <= 0) if (LastCodeList.Count <= 0)
{ {
...@@ -230,7 +228,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -230,7 +228,6 @@ namespace OnlineStore.DeviceLibrary
} }
//获取料盘宽度 //获取料盘宽度
MoveInfo.MoveParam.PosInfo.PlateW = GetWidth(); MoveInfo.MoveParam.PosInfo.PlateW = GetWidth();
//获取厚度 //获取厚度
MoveInfo.MoveParam.PosInfo.PlateH = GetHeight(); MoveInfo.MoveParam.PosInfo.PlateH = GetHeight();
//扫码 //扫码
...@@ -241,17 +238,126 @@ namespace OnlineStore.DeviceLibrary ...@@ -241,17 +238,126 @@ namespace OnlineStore.DeviceLibrary
private int GetWidth() private int GetWidth()
{ {
int width = 7; int width = 7;
double val = IOManager.GetADVal(0) * Config.Coeff_Width; int idx_ad_7cun_1 = 0;
if (Math.Abs(val - 7) < Math.Abs(val - 13)) double coef_ad_7cun_1 = Config.Coeff_Height_Ad1;
return width; int base_ad_7cun_1 = Config.BaseVal_Height_Ad1;
else
return 13; int idx_ad_7cun_2 = 1;
double coef_ad_7cun_2 = Config.Coeff_Height_Ad2;
int base_ad_7cun_2 = Config.BaseVal_Height_Ad2;
int idx_ad_13cun_1 = 2;
double coef_ad_13cun_1 = Config.Coeff_Height_Ad3;
int base_ad_13cun_1 = Config.BaseVal_Height_Ad3;
int idx_ad_13cun_2 = 3;
double coef_ad_13cun_2 = Config.Coeff_Height_Ad4;
int base_ad_13cun_2 = Config.BaseVal_Height_Ad4;
double val1 = GetCalValue(idx_ad_7cun_1, coef_ad_7cun_1, base_ad_7cun_1);
double val2 = GetCalValue(idx_ad_7cun_2, coef_ad_7cun_2, base_ad_7cun_2);
double val3 = GetCalValue(idx_ad_13cun_1, coef_ad_13cun_1, base_ad_13cun_1);
double val4 = GetCalValue(idx_ad_13cun_2, coef_ad_13cun_2, base_ad_13cun_2);
width = GetWidth(val3, val4);
LogUtil.info($"获取宽度【{width}】:7寸宽度计算值1:{val1.ToString("f3")};7寸宽度计算值2:{val2.ToString("f3")};13寸宽度计算值1:{val3.ToString("f3")};13寸宽度计算值2:{val4.ToString("f3")};");
return width;
} }
/// <summary>
/// 获取高度
/// </summary>
/// <returns></returns>
private int GetHeight() private int GetHeight()
{ {
int height = 8; int height = 8;
int idx_ad_7cun_1 = 0;
double coef_ad_7cun_1 = Config.Coeff_Height_Ad1;
int base_ad_7cun_1 = Config.BaseVal_Height_Ad1;
int idx_ad_7cun_2 = 1;
double coef_ad_7cun_2 = Config.Coeff_Height_Ad2;
int base_ad_7cun_2 = Config.BaseVal_Height_Ad2;
int idx_ad_13cun_1 = 2;
double coef_ad_13cun_1 = Config.Coeff_Height_Ad3;
int base_ad_13cun_1 = Config.BaseVal_Height_Ad3;
int idx_ad_13cun_2 = 3;
double coef_ad_13cun_2 = Config.Coeff_Height_Ad4;
int base_ad_13cun_2 = Config.BaseVal_Height_Ad4;
double val1 = GetCalValue(idx_ad_7cun_1, coef_ad_7cun_1, base_ad_7cun_1);
double val2 = GetCalValue(idx_ad_7cun_2, coef_ad_7cun_2, base_ad_7cun_2);
double val3 = GetCalValue(idx_ad_13cun_1, coef_ad_13cun_1, base_ad_13cun_1);
double val4 = GetCalValue(idx_ad_13cun_2, coef_ad_13cun_2, base_ad_13cun_2);
double max = getMax(val1, val2, val3, val4);
height = getHeight(max);
LogUtil.info($"获取高度【{height}】:最大计算值为{max.ToString("f3")}");
return height;
}
double getMax(params double[] vals)
{
return vals.Max();
}
string heightRange = ConfigAppSettings.GetValue(Setting_Init.ReelHeightRange);
private int getHeight(double max)
{
string[] range = heightRange.Split('#');
string[] h5 = range[0].Split(',');
string[] h8 = range[1].Split(',');
string[] h12 = range[2].Split(',');
int.TryParse(h5[0], out int low_5);
int.TryParse(h5[1], out int high_5);
int.TryParse(h8[0], out int low_8);
int.TryParse(h8[1], out int high_8);
int.TryParse(h12[0], out int low_12);
int.TryParse(h12[1], out int high_12);
int height = 5;
if (max >= low_5 && max <= high_5)
height = 5;
else if (max >= low_8 && max <= high_8)
height = 8;
else if (max > low_12 && max <= high_12)
{
height = 12;
}
else
height = 12;
return height;
}
public int GetHeight(double[] coefs, int[] baseVals)
{
int height = 0;
double val1 = GetCalValue(0, coefs[0], baseVals[0]);
double val2 = GetCalValue(1, coefs[1], baseVals[1]);
double val3 = GetCalValue(2, coefs[2], baseVals[2]);
double val4 = GetCalValue(3, coefs[3], baseVals[3]);
double max = getMax(val1, val2, val3, val4);
//高度有5,8,12
//各加4毫米
height = getHeight(max);
return height; return height;
} }
public int GetWidth(double calVal3, double calVal4)
{
if (calVal3 > 5 || calVal4 > 5)
return 13;
else
return 7;
}
/// <summary>
/// 计算模拟量的值
/// </summary>
/// <param name="adIdx"></param>
/// <param name="coeff"></param>
/// <param name="baseVal"></param>
/// <returns></returns>
public double GetCalValue(int adIdx, double coeff, int baseVal)
{
double val = IOManager.GetADVal(adIdx);
return (val - baseVal) / coeff;
}
private int LastResult = 0; private int LastResult = 0;
private string getPosIdMsg = ""; private string getPosIdMsg = "";
private void GetTargetInfo() private void GetTargetInfo()
......
...@@ -109,11 +109,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -109,11 +109,11 @@ namespace OnlineStore.DeviceLibrary
private void StartReset() private void StartReset()
{ {
SetWarnMsg(""); ClearWarnMsg();
alarmType = AlarmType.None; alarmType = AlarmType.None;
isInSuddenDown = false; isInSuddenDown = false;
isNoAirpressure_Check = false; isNoAirpressure_Check = false;
MoveInfo.NextMoveStep(StepEnum.Inlet_Reset_01_Wait); MoveInfo.NextMoveStep(StepEnum.Outlet_Reset_01_Wait);
LogInfo($"复位 {MoveInfo.SLog}"); LogInfo($"复位 {MoveInfo.SLog}");
} }
...@@ -149,10 +149,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -149,10 +149,10 @@ namespace OnlineStore.DeviceLibrary
LogInfo($"复位 {MoveInfo.SLog}:检测到料盘,皮带停止"); LogInfo($"复位 {MoveInfo.SLog}:检测到料盘,皮带停止");
OutletRun(false); OutletRun(false);
} }
else if (MoveInfo.IsTimeOut(30)) else if (MoveInfo.IsTimeOut(15))
{ {
MoveInfo.NextMoveStep(StepEnum.Outlet_Reset_04_Finish); MoveInfo.NextMoveStep(StepEnum.Outlet_Reset_04_Finish);
LogInfo($"复位 {MoveInfo.SLog}:未检测到料盘,30秒超时,皮带停止,顶升抬起"); LogInfo($"复位 {MoveInfo.SLog}:未检测到料盘,15秒超时,皮带停止,顶升抬起");
OutletRun(false); OutletRun(false);
JackUp(true); JackUp(true);
} }
...@@ -165,14 +165,18 @@ namespace OnlineStore.DeviceLibrary ...@@ -165,14 +165,18 @@ namespace OnlineStore.DeviceLibrary
StartOutstore(new InOutParam()); StartOutstore(new InOutParam());
} }
else else
{
BufferDataManager.TrayInOutletInfo = null;
MoveInfo.EndMove(); MoveInfo.EndMove();
runStatus = RunStatus.Runing;
}
} }
} }
internal override void StopMove() internal override void StopMove()
{ {
//StopMove时设置状态为none //StopMove时设置状态为none
JackUp(false);
MoveInfo.EndMove(); MoveInfo.EndMove();
} }
...@@ -201,7 +205,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -201,7 +205,7 @@ namespace OnlineStore.DeviceLibrary
if (MoveInfo.MoveType.Equals(MoveType.None) && NoErrorAlarm()) if (MoveInfo.MoveType.Equals(MoveType.None) && NoErrorAlarm())
{ {
if (TrayInPosition() && BufferDataManager.TrayInOutletInfo != null) if (IsJackUp() && BufferDataManager.TrayInOutletInfo != null)
{ {
StartOutstore(new InOutParam(BufferDataManager.TrayInOutletInfo)); StartOutstore(new InOutParam(BufferDataManager.TrayInOutletInfo));
} }
...@@ -214,9 +218,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -214,9 +218,9 @@ namespace OnlineStore.DeviceLibrary
//CheckAxisAlarm(); //CheckAxisAlarm();
} }
} }
bool TrayInPosition() bool IsJackUp()
{ {
return IOValue(IO_Type.Outlet_TrayCheck1).Equals(IO_VALUE.HIGH); return IOValue(IO_Type.Outlet_JackUpSig).Equals(IO_VALUE.HIGH);
} }
internal bool CanStartWork() internal bool CanStartWork()
{ {
......
...@@ -24,17 +24,13 @@ namespace OnlineStore.DeviceLibrary ...@@ -24,17 +24,13 @@ namespace OnlineStore.DeviceLibrary
{ {
if (wait.WaitType.Equals(WaitEnum.W201_RobotMove)) if (wait.WaitType.Equals(WaitEnum.W201_RobotMove))
{ {
if (StoreManager.Client.robotEquip.RobotMoveEnd(curcmd)) if (StoreManager.Client.robotEquip.RobotInSafeAtOutlet())
{ {
wait.IsEnd = true; wait.IsEnd = true;
} }
} }
return wait.IsEnd; return wait.IsEnd;
} }
/// <summary>
/// 当前命令
/// </summary>
private string curcmd = "";
#region 自动出料 #region 自动出料
private DateTime startInTime = DateTime.Now; private DateTime startInTime = DateTime.Now;
...@@ -58,17 +54,17 @@ namespace OnlineStore.DeviceLibrary ...@@ -58,17 +54,17 @@ namespace OnlineStore.DeviceLibrary
if (MoveInfo.IsStep(StepEnum.Outlet_01_Wait)) if (MoveInfo.IsStep(StepEnum.Outlet_01_Wait))
{ {
NextMoveStep(StepEnum.Outlet_02_CheckTray, "检查是否有料盘"); NextMoveStep(StepEnum.Outlet_02_CheckTray, "检查是否有料盘");
SetCurCmd(RobotEquip.GetCmd_Standby()); JackUp(false);
AddWaitTime(10000); AddWaitTime(2000);
MoveInfo.OneWaitCanEndStep=true;
} }
else if (MoveInfo.IsStep(StepEnum.Outlet_02_CheckTray)) else if (MoveInfo.IsStep(StepEnum.Outlet_02_CheckTray))
{ {
if (TrayCheck()) if (TrayCheck())
{ {
NextMoveStep(StepEnum.Outlet_03_CheckAllowFeedOut, "有料盘,顶升下降,准备送走"); NextMoveStep(StepEnum.Outlet_03_CheckAllowFeedOut, "有料盘,准备送走");
JackUp(false);
AddWaitAllowFeedOut(); AddWaitAllowFeedOut();
AddWaitTime(5000);
MoveInfo.OneWaitCanEndStep = true;
} }
else//无料盘 else//无料盘
{ {
...@@ -95,15 +91,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -95,15 +91,10 @@ namespace OnlineStore.DeviceLibrary
} }
else if (MoveInfo.IsStep(StepEnum.Outlet_05_JackUp)) else if (MoveInfo.IsStep(StepEnum.Outlet_05_JackUp))
{ {
curcmd = "";
MoveInfo.EndMove(); MoveInfo.EndMove();
runStatus = RunStatus.Runing;
} }
} }
private void SetCurCmd(string cmd)
{
curcmd = cmd;
MoveInfo.WaitList.Add(WaitResultInfo.WaitRobotMove());
}
#endregion #endregion
} }
} }
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OnlineStore.DeviceLibrary
{
internal class NGBox
{
private int trayCnt = 0;
private string checkTray = "";
/// <summary>
/// NG箱
/// </summary>
/// <param name="checkTray">料盘检测信号</param>
public NGBox(string checkTray)
{
this.checkTray = checkTray;
}
/// <summary>
/// 料盘数量
/// </summary>
public int TrayCnt { get => trayCnt; set => trayCnt = value; }
}
}
...@@ -54,21 +54,36 @@ namespace OnlineStore.DeviceLibrary ...@@ -54,21 +54,36 @@ namespace OnlineStore.DeviceLibrary
} }
public void StartRobotService() public void StartRobotService()
{ {
JAKAServer.Start(); Task.Factory.StartNew(delegate
PowerOn(true); {
System.Threading.Thread.Sleep(1000); JAKAServer.Start();
EnableRobot(true); PowerOn(true);
System.Threading.Thread.Sleep(1000); System.Threading.Thread.Sleep(2000);
StartProg(true); EnableRobot(true);
System.Threading.Thread.Sleep(2000);
StartProg(true);
});
} }
public void StopRobotService() public void StopRobotService()
{ {
StartProg(false); try
System.Threading.Thread.Sleep(1000); {
EnableRobot(false); Task.Factory.StartNew(delegate
System.Threading.Thread.Sleep(1000); {
PowerOn(false); StartProg(false);
JAKAServer.Stop(); System.Threading.Thread.Sleep(2000);
EnableRobot(false);
System.Threading.Thread.Sleep(2000);
PowerOn(false);
JAKAServer.Stop();
});
}
catch (Exception e)
{
LogUtil.error("StopRobotService 出错", e);
}
} }
internal void InitAllAxis() internal void InitAllAxis()
{ {
...@@ -98,7 +113,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -98,7 +113,7 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.EndMove(); MoveInfo.EndMove();
SetBoxStatus(DeviceStatus.ResetMove, RunStatus.HomeMoving); SetBoxStatus(DeviceStatus.ResetMove, RunStatus.HomeMoving);
MoveInfo.NewMove(MoveType.RHome); MoveInfo.NewMove(MoveType.RHome);
LogInfo("开始 原点返回: "); LogInfo("开始 原点返回:");
StartReset(); StartReset();
SetConnectServerTimer(true); SetConnectServerTimer(true);
SetAllTimer(true); SetAllTimer(true);
...@@ -131,13 +146,12 @@ namespace OnlineStore.DeviceLibrary ...@@ -131,13 +146,12 @@ namespace OnlineStore.DeviceLibrary
private void StartReset() private void StartReset()
{ {
SetWarnMsg(""); ClearWarnMsg();
alarmType = AlarmType.None; alarmType = AlarmType.None;
isInSuddenDown = false; isInSuddenDown = false;
isNoAirpressure_Check = false; isNoAirpressure_Check = false;
MoveInfo.NextMoveStep(StepEnum.Robot_Reset_01_Wait); MoveInfo.NextMoveStep(StepEnum.Robot_Reset_01_Wait);
LogInfo($"复位 {MoveInfo.SLog} :轴开始复位"); LogInfo($"复位 {MoveInfo.SLog} :轴开始复位");
isInPro = false; isInPro = false;
} }
...@@ -173,11 +187,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -173,11 +187,11 @@ namespace OnlineStore.DeviceLibrary
switch (MoveInfo.MoveStep) switch (MoveInfo.MoveStep)
{ {
case StepEnum.Robot_Reset_01_Wait: case StepEnum.Robot_Reset_01_Wait:
NextMoveStep(StepEnum.Robot_Reset_02_CheckArmState, "检查机器人是否在待机点"); NextMoveStep(StepEnum.Robot_Reset_02_CheckArmState, "检查机器人是否在点");
break; break;
case StepEnum.Robot_Reset_02_CheckArmState: case StepEnum.Robot_Reset_02_CheckArmState:
NextMoveStep(StepEnum.Robot_Reset_03_ArmToP1, "机器人回待机点"); NextMoveStep(StepEnum.Robot_Reset_03_ArmToP1, "机器人回点");
SendCmd(GetCmd_Standby()); SendCmd(GetCmd_Home());
break; break;
case StepEnum.Robot_Reset_03_ArmToP1: case StepEnum.Robot_Reset_03_ArmToP1:
NextMoveStep(StepEnum.Robot_Reset_04_CheckTray, "检查机械臂是否有料盘"); NextMoveStep(StepEnum.Robot_Reset_04_CheckTray, "检查机械臂是否有料盘");
...@@ -202,22 +216,21 @@ namespace OnlineStore.DeviceLibrary ...@@ -202,22 +216,21 @@ namespace OnlineStore.DeviceLibrary
NextMoveStep(StepEnum.Robot_Reset_07_ClearCompress, "将压紧轴上的料盘送到指定位置"); NextMoveStep(StepEnum.Robot_Reset_07_ClearCompress, "将压紧轴上的料盘送到指定位置");
break; break;
case StepEnum.Robot_Reset_07_ClearCompress: case StepEnum.Robot_Reset_07_ClearCompress:
MoveInfo.NewMove(MoveType.None);
if (BufferDataManager.TrayInRobotInfo.IsNG)//入库盘 if (BufferDataManager.TrayInRobotInfo != null)
{
StartInstore(new InOutParam(BufferDataManager.TrayInRobotInfo));
}
else if (BufferDataManager.TrayInRobotInfo.IsNG)//出库盘
{ {
StartOutstore(new InOutParam(BufferDataManager.TrayInRobotInfo)); MoveInfo.EndMove();
runStatus = RunStatus.Runing;
BufferDataManager.TrayInRobotInfo=null;
} }
else//默认到NG箱 else
{ {
StartInstore(new InOutParam(BufferDataManager.TrayInRobotInfo)); NextMoveStep(StepEnum.Robot_Reset_08_Finish, "复位完成");
} }
break; break;
case StepEnum.Robot_Reset_08_Finish: case StepEnum.Robot_Reset_08_Finish:
MoveInfo.EndMove(); MoveInfo.EndMove();
runStatus = RunStatus.Runing;
break; break;
} }
} }
...@@ -257,10 +270,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -257,10 +270,10 @@ namespace OnlineStore.DeviceLibrary
} }
private void CheckInStoreProcess() private void CheckInStoreProcess()
{ {
if (StoreManager.Client.inletEquip.TrayIsInPosition() && BufferDataManager.TrayInInletInfo != null) if (StoreManager.Client.inletEquip.UpdownIsUp() && BufferDataManager.TrayInInletInfo != null)
{ {
LogInfo("机器人执行入库【" + BufferDataManager.TrayInInletInfo.ToStr() + "】"); LogInfo("机器人执行入库【" + BufferDataManager.TrayInInletInfo.ToStr() + "】");
StartExecuctOut(new InOutParam(BufferDataManager.TrayInInletInfo)); StartInstore(new InOutParam(BufferDataManager.TrayInInletInfo));
} }
} }
private void ExecuteOutListProcess() private void ExecuteOutListProcess()
...@@ -295,10 +308,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -295,10 +308,11 @@ namespace OnlineStore.DeviceLibrary
NGBoxProcess(); NGBoxProcess();
if (runStatus.Equals(RunStatus.Runing)) if (runStatus.Equals(RunStatus.Runing))
{ {
ExecuteOutListProcess(); ////ExecuteOutListProcess();
} if (StoreManager.IsConnectServer)
if (runStatus.Equals(RunStatus.Runing)) {
{ GetRobotTask();
}
CheckInStoreProcess(); CheckInStoreProcess();
} }
BusyMoveProcess(); BusyMoveProcess();
...@@ -326,7 +340,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -326,7 +340,7 @@ namespace OnlineStore.DeviceLibrary
{ {
LogUtil.info(Name + "清理信号超时报警【" + WarnMsg + "】 "); LogUtil.info(Name + "清理信号超时报警【" + WarnMsg + "】 ");
alarmType = AlarmType.None; alarmType = AlarmType.None;
SetWarnMsg(""); ClearWarnMsg();
} }
} }
} }
...@@ -354,8 +368,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -354,8 +368,6 @@ namespace OnlineStore.DeviceLibrary
SetAllTimer(false); SetAllTimer(false);
StopMove(); StopMove();
SetBoxStatus(DeviceStatus.None, RunStatus.Wait); SetBoxStatus(DeviceStatus.None, RunStatus.Wait);
StopRobotService();
//StopCamera();
} }
public override string GetMoveStr() public override string GetMoveStr()
...@@ -441,7 +453,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -441,7 +453,7 @@ namespace OnlineStore.DeviceLibrary
curNgSig = IOValue(IO_Type.NGBox_TrayCheck).Equals(IO_VALUE.HIGH); curNgSig = IOValue(IO_Type.NGBox_TrayCheck).Equals(IO_VALUE.HIGH);
if (curNgSig == true && preNgSig == false) if (curNgSig == true && preNgSig == false)
{ {
BufferDataManager.AddTrayInNGBox(new InOutPosInfo()); //BufferDataManager.AddTrayInNGBox(new InOutPosInfo());
} }
if (NGBoxAlarm()) if (NGBoxAlarm())
{ {
...@@ -449,7 +461,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -449,7 +461,7 @@ namespace OnlineStore.DeviceLibrary
} }
else else
{ {
ClearSpecifiedAlarm($"NG箱中的料盘需要处理,数量大于{validityCnt}或者料盘放置时间大于{validityPeriod}分钟"); ClearSpecifiedAlarm($"NG箱中的料盘需要处理,数量大于");
} }
} }
#endregion #endregion
......
...@@ -54,10 +54,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -54,10 +54,11 @@ namespace OnlineStore.DeviceLibrary
} }
else else
{ {
if (StoreManager.IsConnectServer) //if (StoreManager.IsConnectServer)
{ //{
GetRobotTask(); // GetRobotTask();
} //}
} }
} }
catch (Exception ex) catch (Exception ex)
...@@ -286,6 +287,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -286,6 +287,7 @@ namespace OnlineStore.DeviceLibrary
// return false; // return false;
//} //}
//public string LastVisualRfid = ""; //public string LastVisualRfid = "";
string lastdataStr = "";
private void ReviceOutStoreProcess(TaskData resultOperation) private void ReviceOutStoreProcess(TaskData resultOperation)
{ {
DateTime time = DateTime.Now; DateTime time = DateTime.Now;
...@@ -301,6 +303,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -301,6 +303,7 @@ namespace OnlineStore.DeviceLibrary
string[] plateHArray = data[ParamDefine.plateH].Split(splitChar); string[] plateHArray = data[ParamDefine.plateH].Split(splitChar);
string barcode = data.ContainsKey(ParamDefine.barcode) ? data[ParamDefine.barcode] : ""; string barcode = data.ContainsKey(ParamDefine.barcode) ? data[ParamDefine.barcode] : "";
string taskid = data.ContainsKey(ParamDefine.taskId) ? data[ParamDefine.taskId] : "";
string dataStr = JsonHelper.SerializeObject(data); string dataStr = JsonHelper.SerializeObject(data);
int type = int.Parse(data[ParamDefine.type]); int type = int.Parse(data[ParamDefine.type]);
if (type == 1) if (type == 1)
...@@ -308,7 +311,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -308,7 +311,11 @@ namespace OnlineStore.DeviceLibrary
LogUtil.error($"收到服务器出库消息类型异常;{dataStr}"); LogUtil.error($"收到服务器出库消息类型异常;{dataStr}");
return; return;
} }
LogUtil.info("收到服务器出库消息:【" + dataStr + "】"); if(!lastdataStr.Equals(dataStr))
{
LogUtil.info("收到服务器出库消息:【" + dataStr + "】");
lastdataStr=dataStr;
}
int index = -1; int index = -1;
foreach (string cid in cids) foreach (string cid in cids)
...@@ -319,6 +326,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -319,6 +326,7 @@ namespace OnlineStore.DeviceLibrary
string posId = posIdArray[index]; string posId = posIdArray[index];
InOutParam inoutParam = new InOutParam(new InOutPosInfo(barcode, posId, plateW, plateH)); InOutParam inoutParam = new InOutParam(new InOutPosInfo(barcode, posId, plateW, plateH));
inoutParam.PosInfo.Cid = cid; inoutParam.PosInfo.Cid = cid;
inoutParam.PosInfo.taskId = taskid;
//根据发送的cid //根据发送的cid
string[] existCids = ConfigAppSettings.GetValue(Setting_Init.Line_CID).Split(','); string[] existCids = ConfigAppSettings.GetValue(Setting_Init.Line_CID).Split(',');
bool hasCid = existCids.Contains(cid); bool hasCid = existCids.Contains(cid);
...@@ -334,19 +342,19 @@ namespace OnlineStore.DeviceLibrary ...@@ -334,19 +342,19 @@ namespace OnlineStore.DeviceLibrary
//判断是否接收过此料仓的出库信息 //判断是否接收过此料仓的出库信息
if (MoveInfo.MoveType.Equals(MoveType.OutStore) && (MoveInfo.MoveParam.PosInfo.Cid.Equals(cid))) if (MoveInfo.MoveType.Equals(MoveType.OutStore) && (MoveInfo.MoveParam.PosInfo.Cid.Equals(cid)))
{ {
LogUtil.error(Name + " 出库命令【" + inoutParam.PosInfo.ToStr() + "】重复,正在【" + cid + "】出库中"); //LogUtil.error(Name + " 出库命令【" + inoutParam.PosInfo.ToStr() + "】重复,正在【" + cid + "】出库中");
continue; continue;
} }
//判断排队列表中是否已存在 //判断排队列表中是否已存在
List<InOutParam> reviceList = new List<InOutParam>(); //List<InOutParam> reviceList = new List<InOutParam>();
reviceList.AddRange(waitOutStoreList); //reviceList.AddRange(waitOutStoreList);
reviceList = (from m in reviceList where m.PosInfo.Cid.Equals(cid) select m).ToList<InOutParam>(); //reviceList = (from m in reviceList where m.PosInfo.Cid.Equals(cid) select m).ToList<InOutParam>();
if (reviceList.Count > 0) //if (reviceList.Count > 0)
{ //{
LogUtil.error(Name + " 出库命令【" + inoutParam.PosInfo.ToStr() + "】重复,排队列表中已存在【" + reviceList[0].PosInfo.ToStr() + "】"); // //LogUtil.error(Name + " 出库命令【" + inoutParam.PosInfo.ToStr() + "】重复,排队列表中已存在【" + reviceList[0].PosInfo.ToStr() + "】");
continue; // continue;
} //}
} }
catch (Exception ex) catch (Exception ex)
......
...@@ -36,8 +36,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -36,8 +36,8 @@ namespace OnlineStore.DeviceLibrary
case StepEnum.InStore_04_CheckInletState: case StepEnum.InStore_04_CheckInletState:
if (InStore_04_CheckInletState()) if (InStore_04_CheckInletState())
{ {
NextMoveStep(StepEnum.InStore_05_ArmToTrayLow, "机械臂去入料口的取料低点"); NextMoveStep(StepEnum.InStore_05_ArmToTrayLow, $"机械臂去入料口的{MoveInfo.MoveParam.PosInfo.PlateW}寸料盘取料低点");
InStore_05_ArmToTrayLow(); InStore_05_ArmToTrayLow(MoveInfo.MoveParam.PosInfo.PlateW);
} }
break; break;
case StepEnum.InStore_05_ArmToTrayLow: case StepEnum.InStore_05_ArmToTrayLow:
...@@ -45,18 +45,24 @@ namespace OnlineStore.DeviceLibrary ...@@ -45,18 +45,24 @@ namespace OnlineStore.DeviceLibrary
InStore_06_CompressTray(); InStore_06_CompressTray();
break; break;
case StepEnum.InStore_06_CompressTray: case StepEnum.InStore_06_CompressTray:
NextMoveStep(StepEnum.InStore_07_ArmBackToP1, "在入料口取料完成,清除入料口缓存,机械臂回待机点"); NextMoveStep(StepEnum.InStore_07_ArmBackToP1, "在入料口取料完成,机械臂回待机点");
InStore_07_ArmBackToP1(); InStore_07_ArmBackToP1();
BufferDataManager.TrayInRobotInfo = MoveInfo.MoveParam.PosInfo.ToCopy();
break; break;
case StepEnum.InStore_07_ArmBackToP1: case StepEnum.InStore_07_ArmBackToP1:
if (CheckInstoreTrayTarget()) if (CheckInstoreTrayTarget())
{ {
NextMoveStep(StepEnum.InStore_08_MoveAxisToStore, "行走机构去目标仓位"); NextMoveStep(StepEnum.InStore_08_MoveAxisToStore, "清除入料口缓存,行走机构去目标仓位");
//在入料口取料完成
BufferDataManager.TrayInInletInfo = null;
UpdateLocInfo(MoveInfo.MoveParam.PosInfo, TaskStatus.INROBOT);
InStore_08_MoveAxisToStore(); InStore_08_MoveAxisToStore();
} }
else else
{ {
NextMoveStep(StepEnum.InStore_12_MoveAxisToNGBox, "行走机构去NG箱"); NextMoveStep(StepEnum.InStore_12_MoveAxisToNGBox, "行走机构去NG箱");
//在入料口取料完成
BufferDataManager.TrayInInletInfo = null;
InStore_12_MoveAxisToNGBox(); InStore_12_MoveAxisToNGBox();
} }
break; break;
...@@ -64,7 +70,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -64,7 +70,7 @@ namespace OnlineStore.DeviceLibrary
NextMoveStep(StepEnum.InStore_09_CheckStoreState, "行走机构到达指定仓,检查其状态"); NextMoveStep(StepEnum.InStore_09_CheckStoreState, "行走机构到达指定仓,检查其状态");
break; break;
case StepEnum.InStore_09_CheckStoreState: case StepEnum.InStore_09_CheckStoreState:
if (InStore_09_CheckStoreState()) if (InStore_09_CheckStoreState(MoveInfo.MoveParam.PosInfo.Cid))
{ {
NextMoveStep(StepEnum.InStore_10_ArmToStoreDoorHigh, "当前仓门口可放料,机械臂到仓放料高点"); NextMoveStep(StepEnum.InStore_10_ArmToStoreDoorHigh, "当前仓门口可放料,机械臂到仓放料高点");
InStore_10_ArmToStoreDoorHigh(); InStore_10_ArmToStoreDoorHigh();
...@@ -78,7 +84,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -78,7 +84,6 @@ namespace OnlineStore.DeviceLibrary
NextMoveStep(StepEnum.InStore_16_ArmBackToP1, "在仓门口放料完成,清除机器人料叉缓存,机械臂回待机点"); NextMoveStep(StepEnum.InStore_16_ArmBackToP1, "在仓门口放料完成,清除机器人料叉缓存,机械臂回待机点");
//在料仓口口放料完成 //在料仓口口放料完成
BufferDataManager.TrayInRobotInfo = null; BufferDataManager.TrayInRobotInfo = null;
UpdateLocInfo(MoveInfo.MoveParam.PosInfo.barcode, TaskStatus.BOXDOOR);
InStore_16_ArmBackToP1(); InStore_16_ArmBackToP1();
break; break;
#region NG #region NG
...@@ -89,7 +94,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -89,7 +94,8 @@ namespace OnlineStore.DeviceLibrary
if (InStore_13_CheckNGBoxState()) if (InStore_13_CheckNGBoxState())
{ {
NextMoveStep(StepEnum.InStore_14_ArmToNGBoxHigh, "NG箱可放料,机械臂去NG箱放料高点"); NextMoveStep(StepEnum.InStore_14_ArmToNGBoxHigh, "NG箱可放料,机械臂去NG箱放料高点");
ClearSpecifiedAlarm($"NG箱中已存在{TrayCntInNGBox}个料盘,机器人无法放料,需要清空NG箱"); BufferDataManager.AddTrayInNGBox(BufferDataManager.TrayInRobotInfo.ToCopy());
ClearSpecifiedAlarm($"NG箱中已存在");
InStore_14_ArmToNGBoxHigh(); InStore_14_ArmToNGBoxHigh();
} }
else else
...@@ -112,9 +118,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -112,9 +118,11 @@ namespace OnlineStore.DeviceLibrary
case StepEnum.InStore_16_ArmBackToP1: case StepEnum.InStore_16_ArmBackToP1:
NextMoveStep(StepEnum.InStore_17_Finish, "入库结束"); NextMoveStep(StepEnum.InStore_17_Finish, "入库结束");
UpdateLocInfo(MoveInfo.MoveParam.PosInfo, TaskStatus.BOXDOOR);
InStore_17_Finish(); InStore_17_Finish();
break; break;
case StepEnum.InStore_17_Finish: case StepEnum.InStore_17_Finish:
runStatus = RunStatus.Runing;
MoveInfo.EndMove(); MoveInfo.EndMove();
break; break;
} }
...@@ -137,13 +145,17 @@ namespace OnlineStore.DeviceLibrary ...@@ -137,13 +145,17 @@ namespace OnlineStore.DeviceLibrary
} }
private bool InStore_04_CheckInletState() private bool InStore_04_CheckInletState()
{ {
if (IOValue(IO_Type.Inlet_TrayCheck).Equals(IO_VALUE.HIGH)) if (MoveInfo.MoveParam.PosInfo!=null)
return true; return true;
return false; return false;
} }
private void InStore_05_ArmToTrayLow() private void InStore_05_ArmToTrayLow(int width=7)
{ {
SendCmd(GetCmd_InletLow()); if (width == 7 || width == 13)
SendCmd(GetCmd_InletLow(width));
else
SendCmd(GetCmd_InletLow(7));
} }
private void InStore_06_CompressTray() private void InStore_06_CompressTray()
{ {
...@@ -152,10 +164,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -152,10 +164,6 @@ namespace OnlineStore.DeviceLibrary
} }
private void InStore_07_ArmBackToP1() private void InStore_07_ArmBackToP1()
{ {
//在入料口取料完成
BufferDataManager.TrayInInletInfo = null;
BufferDataManager.TrayInRobotInfo = MoveInfo.MoveParam.PosInfo.ToCopy();
UpdateLocInfo(MoveInfo.MoveParam.PosInfo.barcode, TaskStatus.INROBOT);
SendCmd(GetCmd_Standby()); SendCmd(GetCmd_Standby());
} }
private void InStore_08_MoveAxisToStore() private void InStore_08_MoveAxisToStore()
...@@ -166,9 +174,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -166,9 +174,9 @@ namespace OnlineStore.DeviceLibrary
/// 检查当前仓门口是否可用 /// 检查当前仓门口是否可用
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
private bool InStore_09_CheckStoreState() private bool InStore_09_CheckStoreState(string cid)
{ {
return true; return SServerManager.GetBoxDoorStatus(cid);
} }
private void InStore_10_ArmToStoreDoorHigh() private void InStore_10_ArmToStoreDoorHigh()
{ {
...@@ -210,14 +218,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -210,14 +218,14 @@ namespace OnlineStore.DeviceLibrary
/// <summary> /// <summary>
/// 机器人更新任务状态 /// 机器人更新任务状态
/// </summary> /// </summary>
/// <param name="barcode"></param> /// <param name="posinfo"></param>
/// <param name="status"></param> /// <param name="status"></param>
private void UpdateLocInfo(string barcode,string status) private void UpdateLocInfo(InOutPosInfo posinfo,string status)
{ {
string result=SServerManager.UpdateTrayLoc(barcode, status); string result=SServerManager.UpdateTrayLoc(posinfo.barcode, status, posinfo.PosId,posinfo.taskId);
if(!result.Equals("")) if(!result.Equals(""))
{ {
SServerManager.UpdateTrayLoc(barcode, status); SServerManager.UpdateTrayLoc(posinfo.barcode, status, posinfo.PosId,posinfo.taskId);
} }
} }
} }
......
...@@ -75,6 +75,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -75,6 +75,7 @@ namespace OnlineStore.DeviceLibrary
break; break;
case StepEnum.OutStore_13_Finish: case StepEnum.OutStore_13_Finish:
MoveInfo.EndMove(); MoveInfo.EndMove();
runStatus = RunStatus.Runing;
break; break;
} }
} }
...@@ -103,7 +104,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -103,7 +104,7 @@ namespace OnlineStore.DeviceLibrary
{ {
//添加机器人缓存,并上报任务状态 //添加机器人缓存,并上报任务状态
BufferDataManager.TrayInRobotInfo = MoveInfo.MoveParam.PosInfo.ToCopy(); BufferDataManager.TrayInRobotInfo = MoveInfo.MoveParam.PosInfo.ToCopy();
UpdateLocInfo(MoveInfo.MoveParam.PosInfo.barcode, TaskStatus.INROBOT); UpdateLocInfo(MoveInfo.MoveParam.PosInfo, TaskStatus.INROBOT);
SendCmd(GetCmd_Standby()); SendCmd(GetCmd_Standby());
} }
...@@ -133,7 +134,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -133,7 +134,7 @@ namespace OnlineStore.DeviceLibrary
//上报任务状态 //上报任务状态
BufferDataManager.TrayInRobotInfo = null; BufferDataManager.TrayInRobotInfo = null;
BufferDataManager.TrayInOutletInfo = MoveInfo.MoveParam.PosInfo.ToCopy(); BufferDataManager.TrayInOutletInfo = MoveInfo.MoveParam.PosInfo.ToCopy();
UpdateLocInfo(MoveInfo.MoveParam.PosInfo.barcode, TaskStatus.FINISHED); UpdateLocInfo(MoveInfo.MoveParam.PosInfo, TaskStatus.FINISHED);
SendCmd(GetCmd_Standby()); SendCmd(GetCmd_Standby());
} }
#endregion #endregion
......
...@@ -27,13 +27,13 @@ namespace OnlineStore.DeviceLibrary ...@@ -27,13 +27,13 @@ namespace OnlineStore.DeviceLibrary
const string cmd_store = "store"; const string cmd_store = "store";
const string cmd_inlet = "inlet"; const string cmd_inlet = "inlet";
const string cmd_outlet = "outlet"; const string cmd_outlet = "outlet";
const string cmd_inout = "inout";
const string cmd_ngbox = "ngbox"; const string cmd_ngbox = "ngbox";
const string cmd_high = "high"; const string cmd_high = "high";
const string cmd_low = "low"; const string cmd_low = "low";
const string cmd_up = "up"; const string cmd_up = "up";
const string cmd_down = "down"; const string cmd_down = "down";
const string cmd_standby = "standby"; const string cmd_standby = "standby";
const string cmd_home = "home";
/// <summary> /// <summary>
/// 获取指定命令 /// 获取指定命令
/// </summary> /// </summary>
...@@ -46,9 +46,17 @@ namespace OnlineStore.DeviceLibrary ...@@ -46,9 +46,17 @@ namespace OnlineStore.DeviceLibrary
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
if (index == 0) if (index == 0)
{ {
sb.Append(place); if (point.Equals(""))
sb.Append("-"); {
sb.Append(point); sb.Append(place);
}
else
{
sb.Append(place);
sb.Append("-");
sb.Append(point);
}
} }
else else
{ {
...@@ -59,6 +67,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -59,6 +67,7 @@ namespace OnlineStore.DeviceLibrary
} }
return sb.ToString(); return sb.ToString();
} }
string cmdResponse = "";
/// <summary> /// <summary>
/// 机器人移动成功 /// 机器人移动成功
/// </summary> /// </summary>
...@@ -73,60 +82,69 @@ namespace OnlineStore.DeviceLibrary ...@@ -73,60 +82,69 @@ namespace OnlineStore.DeviceLibrary
} }
if (!bean.RobotData.Online) if (!bean.RobotData.Online)
{ {
LogUtil.error($"无法获取机器人状态,因机器人离线:{Config.Robot_IP}"); SetWarnMsg("无法读取机器人状态,因机器人离线");
return false; return false;
} }
else
{
ClearSpecifiedAlarm("无法读取机器人状态,因机器人离线");
}
try try
{ {
if (!cmdResponse.Equals(bean.RobotData.RecvMsg) && !bean.RobotData.RecvMsg.Equals(""))
{
cmdResponse = bean.RobotData.RecvMsg;
if ((cmdResponse.Contains(GetCmd_InletUp()))
&& cmdResponse.Contains("done"))
{
insafeAtInlet = true;
}
else//if ((cmdResponse.Contains(GetCmd_Standby()) && cmdResponse.Contains("done")))
{
insafeAtInlet = false;
}
if ((cmdResponse.Contains(GetCmd_OutletDown())) && cmdResponse.Contains("done"))
{
insafeAtOutlet = true;
}
else
{
insafeAtOutlet = false;
}
LogUtil.info($"RobotMove Cmd Response:【{cmdResponse}】");
}
string[] recv = bean.RobotData.RecvMsg.Split(','); string[] recv = bean.RobotData.RecvMsg.Split(',');
if (GetCurCmd().Equals(cmd) && recv != null && recv.Length == 2 if (GetCurCmd().Equals(cmd) && recv != null && recv.Length == 2
&& recv[0].Equals(cmd) && && recv[0].Equals(cmd) && recv[1].Equals(rtn_done)
recv[1].Equals(rtn_done)) && (bean.RobotData.RobotStatus.inpos == 1))
return true; return true;
} }
catch (Exception ex) catch (Exception ex)
{ {
LogUtil.error($"RobotMoveEnd:{cmd}", ex); LogUtil.error($"RobotMoveEnd:【{cmd}】", ex);
return false; return false;
} }
return false; return false;
} }
private bool insafeAtInlet = false;
public bool RobotMoveEnd() private bool insafeAtOutlet = false;
public bool RobotInSafeAtInlet()
{ {
JAKA.JAKABean bean; return insafeAtInlet;
if (!GetRobotInfo(out bean))
{
return false;
}
if (!bean.RobotData.Online)
{
LogUtil.error($"无法获取机器人状态,因机器人离线:{Config.Robot_IP}");
return false;
}
try
{
string[] recv = bean.RobotData.RecvMsg.Split(',');
if (recv != null && recv.Length == 2 &&
recv[1].Equals(rtn_done))
{
LogUtil.info($"RobotMoveEnd:[{recv[0]},{recv[1]}]");
return true;
}
}
catch (Exception ex)
{
LogUtil.error($"RobotMoveEnd:{bean.RobotData.RecvMsg}", ex);
return false;
}
return false;
} }
public bool RobotInSafeAtOutlet()
{
return insafeAtOutlet;
}
public string curcmd = "";
/// <summary> /// <summary>
/// 发送命令 /// 发送命令
/// </summary> /// </summary>
/// <param name="cmd"></param> /// <param name="cmd"></param>
void SendCmd(string cmd) void SendCmd(string cmd)
{ {
curcmd = cmd;
MoveInfo.WaitList.Add(WaitResultInfo.WaitRobotMove(cmd));
JAKA.JAKABean bean; JAKA.JAKABean bean;
if (!GetRobotInfo(out bean)) if (!GetRobotInfo(out bean))
{ {
...@@ -134,11 +152,15 @@ namespace OnlineStore.DeviceLibrary ...@@ -134,11 +152,15 @@ namespace OnlineStore.DeviceLibrary
} }
if (!bean.RobotData.Online) if (!bean.RobotData.Online)
{ {
LogUtil.error($"无法发送命令,因机器人离线:{Config.Robot_IP}"); SetWarnMsg($"无法发送命令,因机器人离线:{Config.Robot_IP}");
return; return;
} }
else
{
ClearSpecifiedAlarm("无法发送命令,因机器人离线");
}
JAKAServer.SendCmd(bean.RemoteEndPoint, cmd); JAKAServer.SendCmd(bean.RemoteEndPoint, cmd);
MoveInfo.WaitList.Add(WaitResultInfo.WaitRobotMove()); LogUtil.info($"Send RobotMove Cmd:【{cmd}】");
} }
/// <summary> /// <summary>
/// 获取机器人当前命令 /// 获取机器人当前命令
...@@ -151,22 +173,34 @@ namespace OnlineStore.DeviceLibrary ...@@ -151,22 +173,34 @@ namespace OnlineStore.DeviceLibrary
{ {
return ""; return "";
} }
return bean.RobotData.CurCmd;
}
/// <summary>
/// 机器人是否在线
/// </summary>
/// <returns></returns>
public bool RobotIsOnline()
{
JAKA.JAKABean bean;
if (!GetRobotInfo(out bean))
{
return false;
}
if (!bean.RobotData.Online) if (!bean.RobotData.Online)
{ {
LogUtil.error($"无法获取当前命令,因机器人离线:{Config.Robot_IP}"); return false;
return "";
} }
return bean.RobotData.CurCmd; return true;
} }
#endregion #endregion
#region 机器人命令 #region 机器人命令
public static string GetCmd_InletLow() public static string GetCmd_InletLow(int width)
{ {
return GetCmd(cmd_inlet, cmd_low); return GetCmd(cmd_inlet, cmd_low, width);
} }
public static string GetCmd_InletUp() public static string GetCmd_InletUp()
{ {
return GetCmd(cmd_inout, cmd_up); return GetCmd(cmd_inlet, cmd_up);
} }
public static string GetCmd_OutletHigh() public static string GetCmd_OutletHigh()
{ {
...@@ -174,7 +208,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -174,7 +208,7 @@ namespace OnlineStore.DeviceLibrary
} }
public static string GetCmd_OutletDown() public static string GetCmd_OutletDown()
{ {
return GetCmd(cmd_inout, cmd_down); return GetCmd(cmd_outlet, cmd_down);
} }
public static string GetCmd_NGBoxHigh() public static string GetCmd_NGBoxHigh()
{ {
...@@ -204,6 +238,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -204,6 +238,10 @@ namespace OnlineStore.DeviceLibrary
{ {
return GetCmd(cmd_standby, ""); return GetCmd(cmd_standby, "");
} }
public static string GetCmd_Home()
{
return GetCmd(cmd_home, "");
}
#endregion #endregion
#region 机器人 #region 机器人
public bool GetRobotInfo(out JAKA.JAKABean bean) public bool GetRobotInfo(out JAKA.JAKABean bean)
...@@ -211,7 +249,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -211,7 +249,7 @@ namespace OnlineStore.DeviceLibrary
bean = JAKAServer.GetJAKABean(Config.Robot_IP); bean = JAKAServer.GetJAKABean(Config.Robot_IP);
if (bean == null) if (bean == null)
{ {
LogUtil.error($"无法获取机器人信息,因不存在的机器人:{Config.Robot_IP}"); SetWarnMsg($"无法获取机器人信息,因不存在的机器人:{Config.Robot_IP}");
return false; return false;
} }
return true; return true;
...@@ -277,27 +315,27 @@ namespace OnlineStore.DeviceLibrary ...@@ -277,27 +315,27 @@ namespace OnlineStore.DeviceLibrary
{ {
switch (MoveInfo.MoveParam.PosInfo.Cid) switch (MoveInfo.MoveParam.PosInfo.Cid)
{ {
case "01": case "T01-1":
targetIndex = 1; targetIndex = 1;
MoveAxis.AbsMove(MoveInfo, Config.MoveAxis_P5_Store1, Config.MoveAxis_P5_Store1_Speed); MoveAxis.AbsMove(MoveInfo, Config.MoveAxis_P5_Store1, Config.MoveAxis_P5_Store1_Speed);
break; break;
case "02": case "T01-2":
targetIndex = 2; targetIndex = 2;
MoveAxis.AbsMove(MoveInfo, Config.MoveAxis_P6_Store2, Config.MoveAxis_P6_Store2_Speed); MoveAxis.AbsMove(MoveInfo, Config.MoveAxis_P6_Store2, Config.MoveAxis_P6_Store2_Speed);
break; break;
case "03": case "T01-3":
targetIndex = 3; targetIndex = 3;
MoveAxis.AbsMove(MoveInfo, Config.MoveAxis_P7_Store3, Config.MoveAxis_P7_Store3_Speed); MoveAxis.AbsMove(MoveInfo, Config.MoveAxis_P7_Store3, Config.MoveAxis_P7_Store3_Speed);
break; break;
case "04": case "T01-4":
targetIndex = 4; targetIndex = 4;
MoveAxis.AbsMove(MoveInfo, Config.MoveAxis_P8_Store4, Config.MoveAxis_P8_Store4_Speed); MoveAxis.AbsMove(MoveInfo, Config.MoveAxis_P8_Store4, Config.MoveAxis_P8_Store4_Speed);
break; break;
case "05": case "T01-5":
targetIndex = 5; targetIndex = 5;
MoveAxis.AbsMove(MoveInfo, Config.MoveAxis_P9_Store5, Config.MoveAxis_P9_Store5_Speed); MoveAxis.AbsMove(MoveInfo, Config.MoveAxis_P9_Store5, Config.MoveAxis_P9_Store5_Speed);
break; break;
case "06": case "T01-6":
targetIndex = 6; targetIndex = 6;
MoveAxis.AbsMove(MoveInfo, Config.MoveAxis_P10_Store6, Config.MoveAxis_P10_Store6_Speed); MoveAxis.AbsMove(MoveInfo, Config.MoveAxis_P10_Store6, Config.MoveAxis_P10_Store6_Speed);
break; break;
...@@ -309,7 +347,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -309,7 +347,7 @@ namespace OnlineStore.DeviceLibrary
{ {
if (wait.WaitType.Equals(WaitEnum.W201_RobotMove)) if (wait.WaitType.Equals(WaitEnum.W201_RobotMove))
{ {
if (RobotMoveEnd()) if (RobotMoveEnd(curcmd))
{ {
wait.IsEnd = true; wait.IsEnd = true;
} }
...@@ -385,14 +423,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -385,14 +423,14 @@ namespace OnlineStore.DeviceLibrary
return; return;
} }
List<InOutParam> reviceList = new List<InOutParam>(); //List<InOutParam> reviceList = new List<InOutParam>();
reviceList.AddRange(waitOutStoreList); //reviceList.AddRange(waitOutStoreList);
reviceList = (from m in reviceList where m.PosInfo.Cid.Equals(param.PosInfo.Cid) select m).ToList<InOutParam>(); //reviceList = (from m in reviceList where m.PosInfo.Cid.Equals(param.PosInfo.Cid) select m).ToList<InOutParam>();
if (reviceList.Count == 0) //if (reviceList.Count == 0)
{ //{
LogInfo(" 执行出库【" + param.PosInfo.ToStr() + "】失败,加入等待队列"); // LogInfo(" 执行出库【" + param.PosInfo.ToStr() + "】失败,加入等待队列");
waitOutStoreList.Enqueue(param); // waitOutStoreList.Enqueue(param);
} //}
} }
} }
} }
...@@ -401,8 +439,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -401,8 +439,11 @@ namespace OnlineStore.DeviceLibrary
/// 关闭出库前的碗里检查 /// 关闭出库前的碗里检查
/// </summary> /// </summary>
public bool CloseOutStoreCheck = false; public bool CloseOutStoreCheck = false;
string[] existCids = ConfigAppSettings.GetValue(Setting_Init.Line_CID).Split(',');
public override bool StartOutstore(InOutParam param) public override bool StartOutstore(InOutParam param)
{ {
if (!runStatus.Equals(RunStatus.Runing) || !MoveInfo.MoveType.Equals(MoveType.None))
return false;
if (isInSuddenDown || isNoAirpressure_Check if (isInSuddenDown || isNoAirpressure_Check
|| !runStatus.Equals(RunStatus.Runing) || !runStatus.Equals(RunStatus.Runing)
|| !MoveInfo.MoveType.Equals(MoveType.None)) || !MoveInfo.MoveType.Equals(MoveType.None))
...@@ -411,9 +452,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -411,9 +452,9 @@ namespace OnlineStore.DeviceLibrary
return false; return false;
} }
if (!param.PosInfo.CheckPosition()) if (!existCids.Contains(param.PosInfo.Cid))
{ {
SetWarnMsg(Name + " 启动出库【" + param.PosInfo.ToStr() + "】出错,找不到库位信息"); SetWarnMsg(Name + " 启动出库【" + param.PosInfo.ToStr() + $"】出错,找不到料仓信息【{param.PosInfo.Cid}】");
return false; return false;
} }
startOutStoreTime = DateTime.Now; startOutStoreTime = DateTime.Now;
......
...@@ -316,21 +316,23 @@ namespace OnlineStore.DeviceLibrary ...@@ -316,21 +316,23 @@ namespace OnlineStore.DeviceLibrary
//640104 * 3331001202 * 210417624 * 600 * 0011 //640104 * 3331001202 * 210417624 * 600 * 0011
//分号分割后长度=4,L,E,B,R //分号分割后长度=4,L,E,B,R
//TJM211030000146 & 10446500228 & 15000 & 2021 - 06 - 28 & 59K0646169 && 10446 && R02472021102600281 //TJM211030000146 & 10446500228 & 15000 & 2021 - 06 - 28 & 59K0646169 && 10446 && R02472021102600281
// RI & PN & QTY & 4 & BATCH & 5 & 6 & 7 & 8 // RI & PN & QTY & 4 & BATCH & 5 & 6 & 7 & 8
// RI & PN & QTY & PRODATEyyyy - MM - dd & 5 & 6 & 7 & 8 & 9 // RI & PN & QTY & PRODATEyyyy - MM - dd & 5 & 6 & 7 & 8 & 9
//长电 RI,PN,QTY,4
//000NU209HBZ.0U015.030,Z23500H2087D001,8000,9D22092209A
try try
{ {
foreach (string code in codes) foreach (string code in codes)
{ {
string[] strarray = code.Split('&'); string[] strarray = code.Split(',');
if (strarray.Length >=5) if (strarray.Length >=4)
{ {
try try
{ {
if (strarray[0].StartsWith("TJM")) //if (strarray[0].StartsWith("TJM"))
{ //{
return true; // return true;
} //}
int QTY = Convert.ToInt32(strarray[2].Trim()); int QTY = Convert.ToInt32(strarray[2].Trim());
if (QTY > 0) if (QTY > 0)
......
<?xml version="1.0" encoding="utf-8"?><EtherCATConfig><Config><Master><SysHwCfg>1</SysHwCfg><cycleTime>1000</cycleTime><Info><Name><![CDATA[Card 0 ]]></Name></Info></Master><Slave><Info><Name><![CDATA[GR10_1616ETNE]]></Name><DeviceType>197009</DeviceType><VendorId>1048576</VendorId><ProductCode>284428562</ProductCode><RevisionNo>0</RevisionNo><ToltalVirSlot>2</ToltalVirSlot><OpMode>0</OpMode></Info><ProcessData><Sm2><Type>Outputs</Type><Enable>1</Enable><Pdo>5888</Pdo></Sm2><Sm3><Type>Inputs</Type><Enable>1</Enable><Pdo>6912</Pdo></Sm3><TxPdo Fixed="true" Mandatory="false" Sm="3"><SlotIdx>0</SlotIdx><Index>#x1B00</Index><Name>Digital input mapping parameter</Name><Entry><DevType>2</DevType><Index Selected="0">#x6000</Index><SubIndex>1</SubIndex><BitLen>8</BitLen><Name>Digital input 00 to 07</Name><DataType>USINT</DataType></Entry><Entry><DevType>2</DevType><Index Selected="0">#x6000</Index><SubIndex>2</SubIndex><BitLen>8</BitLen><Name>Digital input 10 to 17</Name><DataType>USINT</DataType></Entry></TxPdo><RxPdo Fixed="true" Mandatory="false" Sm="2"><SlotIdx>0</SlotIdx><Index>#x1700</Index><Name>Digital output mapping parameter</Name><Entry><DevType>1</DevType><Index Selected="0">#x6200</Index><SubIndex>1</SubIndex><BitLen>8</BitLen><Name>Digital output 00 to 07</Name><DataType>USINT</DataType></Entry><Entry><DevType>1</DevType><Index Selected="0">#x6200</Index><SubIndex>2</SubIndex><BitLen>8</BitLen><Name>Digital output 10 to 17</Name><DataType>USINT</DataType></Entry></RxPdo></ProcessData><Mailbox><CoE><InitCmds><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[Error mode output]]></Comment><Timeout>0</Timeout><SlotIdx>0</SlotIdx><Index>25094</Index><SubIndex>1</SubIndex><Data>01</Data><BitLen>8</BitLen></InitCmd></InitCmds></CoE></Mailbox></Slave><Slave><Info><Name><![CDATA[GR10_1616ETNE]]></Name><DeviceType>197009</DeviceType><VendorId>1048576</VendorId><ProductCode>284428562</ProductCode><RevisionNo>0</RevisionNo><ToltalVirSlot>2</ToltalVirSlot><OpMode>0</OpMode></Info><ProcessData><Sm2><Type>Outputs</Type><Enable>1</Enable><Pdo>5888</Pdo></Sm2><Sm3><Type>Inputs</Type><Enable>1</Enable><Pdo>6912</Pdo></Sm3><TxPdo Fixed="true" Mandatory="false" Sm="3"><SlotIdx>0</SlotIdx><Index>#x1B00</Index><Name>Digital input mapping parameter</Name><Entry><DevType>2</DevType><Index Selected="0">#x6000</Index><SubIndex>1</SubIndex><BitLen>8</BitLen><Name>Digital input 00 to 07</Name><DataType>USINT</DataType></Entry><Entry><DevType>2</DevType><Index Selected="0">#x6000</Index><SubIndex>2</SubIndex><BitLen>8</BitLen><Name>Digital input 10 to 17</Name><DataType>USINT</DataType></Entry></TxPdo><RxPdo Fixed="true" Mandatory="false" Sm="2"><SlotIdx>0</SlotIdx><Index>#x1700</Index><Name>Digital output mapping parameter</Name><Entry><DevType>1</DevType><Index Selected="0">#x6200</Index><SubIndex>1</SubIndex><BitLen>8</BitLen><Name>Digital output 00 to 07</Name><DataType>USINT</DataType></Entry><Entry><DevType>1</DevType><Index Selected="0">#x6200</Index><SubIndex>2</SubIndex><BitLen>8</BitLen><Name>Digital output 10 to 17</Name><DataType>USINT</DataType></Entry></RxPdo></ProcessData><Mailbox><CoE><InitCmds><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[Error mode output]]></Comment><Timeout>0</Timeout><SlotIdx>0</SlotIdx><Index>25094</Index><SubIndex>1</SubIndex><Data>01</Data><BitLen>8</BitLen></InitCmd></InitCmds></CoE></Mailbox></Slave><Slave><Info><Name><![CDATA[GR10_1616ETNE]]></Name><DeviceType>197009</DeviceType><VendorId>1048576</VendorId><ProductCode>284428562</ProductCode><RevisionNo>0</RevisionNo><ToltalVirSlot>2</ToltalVirSlot><OpMode>0</OpMode></Info><ProcessData><Sm2><Type>Outputs</Type><Enable>1</Enable><Pdo>5888</Pdo></Sm2><Sm3><Type>Inputs</Type><Enable>1</Enable><Pdo>6912</Pdo></Sm3><TxPdo Fixed="true" Mandatory="false" Sm="3"><SlotIdx>0</SlotIdx><Index>#x1B00</Index><Name>Digital input mapping parameter</Name><Entry><DevType>2</DevType><Index Selected="0">#x6000</Index><SubIndex>1</SubIndex><BitLen>8</BitLen><Name>Digital input 00 to 07</Name><DataType>USINT</DataType></Entry><Entry><DevType>2</DevType><Index Selected="0">#x6000</Index><SubIndex>2</SubIndex><BitLen>8</BitLen><Name>Digital input 10 to 17</Name><DataType>USINT</DataType></Entry></TxPdo><RxPdo Fixed="true" Mandatory="false" Sm="2"><SlotIdx>0</SlotIdx><Index>#x1700</Index><Name>Digital output mapping parameter</Name><Entry><DevType>1</DevType><Index Selected="0">#x6200</Index><SubIndex>1</SubIndex><BitLen>8</BitLen><Name>Digital output 00 to 07</Name><DataType>USINT</DataType></Entry><Entry><DevType>1</DevType><Index Selected="0">#x6200</Index><SubIndex>2</SubIndex><BitLen>8</BitLen><Name>Digital output 10 to 17</Name><DataType>USINT</DataType></Entry></RxPdo></ProcessData><Mailbox><CoE><InitCmds><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[Error mode output]]></Comment><Timeout>0</Timeout><SlotIdx>0</SlotIdx><Index>25094</Index><SubIndex>1</SubIndex><Data>01</Data><BitLen>8</BitLen></InitCmd></InitCmds></CoE></Mailbox></Slave><Slave><Info><Name><![CDATA[GR10_1616ETNE]]></Name><DeviceType>197009</DeviceType><VendorId>1048576</VendorId><ProductCode>284428562</ProductCode><RevisionNo>0</RevisionNo><ToltalVirSlot>2</ToltalVirSlot><OpMode>0</OpMode></Info><ProcessData><Sm2><Type>Outputs</Type><Enable>1</Enable><Pdo>5888</Pdo></Sm2><Sm3><Type>Inputs</Type><Enable>1</Enable><Pdo>6912</Pdo></Sm3><TxPdo Fixed="true" Mandatory="false" Sm="3"><SlotIdx>0</SlotIdx><Index>#x1B00</Index><Name>Digital input mapping parameter</Name><Entry><DevType>2</DevType><Index Selected="0">#x6000</Index><SubIndex>1</SubIndex><BitLen>8</BitLen><Name>Digital input 00 to 07</Name><DataType>USINT</DataType></Entry><Entry><DevType>2</DevType><Index Selected="0">#x6000</Index><SubIndex>2</SubIndex><BitLen>8</BitLen><Name>Digital input 10 to 17</Name><DataType>USINT</DataType></Entry></TxPdo><RxPdo Fixed="true" Mandatory="false" Sm="2"><SlotIdx>0</SlotIdx><Index>#x1700</Index><Name>Digital output mapping parameter</Name><Entry><DevType>1</DevType><Index Selected="0">#x6200</Index><SubIndex>1</SubIndex><BitLen>8</BitLen><Name>Digital output 00 to 07</Name><DataType>USINT</DataType></Entry><Entry><DevType>1</DevType><Index Selected="0">#x6200</Index><SubIndex>2</SubIndex><BitLen>8</BitLen><Name>Digital output 10 to 17</Name><DataType>USINT</DataType></Entry></RxPdo></ProcessData><Mailbox><CoE><InitCmds><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[Error mode output]]></Comment><Timeout>0</Timeout><SlotIdx>0</SlotIdx><Index>25094</Index><SubIndex>1</SubIndex><Data>01</Data><BitLen>8</BitLen></InitCmd></InitCmds></CoE></Mailbox></Slave><Slave><Info><Name><![CDATA[GR10_1616ETNE]]></Name><DeviceType>197009</DeviceType><VendorId>1048576</VendorId><ProductCode>284428562</ProductCode><RevisionNo>0</RevisionNo><ToltalVirSlot>2</ToltalVirSlot><OpMode>0</OpMode></Info><ProcessData><Sm2><Type>Outputs</Type><Enable>1</Enable><Pdo>5888</Pdo></Sm2><Sm3><Type>Inputs</Type><Enable>1</Enable><Pdo>6912</Pdo></Sm3><TxPdo Fixed="true" Mandatory="false" Sm="3"><SlotIdx>0</SlotIdx><Index>#x1B00</Index><Name>Digital input mapping parameter</Name><Entry><DevType>2</DevType><Index Selected="0">#x6000</Index><SubIndex>1</SubIndex><BitLen>8</BitLen><Name>Digital input 00 to 07</Name><DataType>USINT</DataType></Entry><Entry><DevType>2</DevType><Index Selected="0">#x6000</Index><SubIndex>2</SubIndex><BitLen>8</BitLen><Name>Digital input 10 to 17</Name><DataType>USINT</DataType></Entry></TxPdo><RxPdo Fixed="true" Mandatory="false" Sm="2"><SlotIdx>0</SlotIdx><Index>#x1700</Index><Name>Digital output mapping parameter</Name><Entry><DevType>1</DevType><Index Selected="0">#x6200</Index><SubIndex>1</SubIndex><BitLen>8</BitLen><Name>Digital output 00 to 07</Name><DataType>USINT</DataType></Entry><Entry><DevType>1</DevType><Index Selected="0">#x6200</Index><SubIndex>2</SubIndex><BitLen>8</BitLen><Name>Digital output 10 to 17</Name><DataType>USINT</DataType></Entry></RxPdo></ProcessData><Mailbox><CoE><InitCmds><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[Error mode output]]></Comment><Timeout>0</Timeout><SlotIdx>0</SlotIdx><Index>25094</Index><SubIndex>1</SubIndex><Data>01</Data><BitLen>8</BitLen></InitCmd></InitCmds></CoE></Mailbox></Slave><Slave><Info><Name><![CDATA[IS620N]]></Name><DeviceType>131474</DeviceType><VendorId>1048576</VendorId><ProductCode>786696</ProductCode><RevisionNo>65537</RevisionNo><ToltalVirSlot>1</ToltalVirSlot><OpMode>0</OpMode></Info><ProcessData><Sm2><Type>Outputs</Type><Enable>1</Enable><Pdo>5632</Pdo></Sm2><Sm3><Type>Inputs</Type><Enable>1</Enable><Pdo>6656</Pdo></Sm3><TxPdo Sm="3"><SlotIdx>0</SlotIdx><Index>#x1A00</Index><Name>1st transmit PDO Mapping</Name><Entry><DevType>0</DevType><Index Selected="0">#x603F</Index><SubIndex>0</SubIndex><BitLen>16</BitLen><Name>ErrorCode</Name><DataType>UINT</DataType></Entry><Entry><DevType>0</DevType><Index Selected="0">#x6041</Index><SubIndex>0</SubIndex><BitLen>16</BitLen><Name>Statusword</Name><DataType>UINT</DataType></Entry><Entry><DevType>0</DevType><Index Selected="0">#x6064</Index><SubIndex>0</SubIndex><BitLen>32</BitLen><Name>Position actual value</Name><DataType>DINT</DataType></Entry><Entry><DevType>0</DevType><Index Selected="0">#x60FD</Index><SubIndex>0</SubIndex><BitLen>32</BitLen><Name>Digital inputs</Name><DataType>UDINT</DataType></Entry></TxPdo><RxPdo Sm="2"><SlotIdx>0</SlotIdx><Index>#x1600</Index><Name>1st receive PDO Mapping</Name><Entry><DevType>0</DevType><Index Selected="0">#x6040</Index><SubIndex>0</SubIndex><BitLen>16</BitLen><Name>Controlword</Name><DataType>UINT</DataType></Entry><Entry><DevType>0</DevType><Index Selected="0">#x607A</Index><SubIndex>0</SubIndex><BitLen>32</BitLen><Name>Target position</Name><DataType>DINT</DataType></Entry></RxPdo></ProcessData><Mailbox><CoE><InitCmds><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[SM output parameter]]></Comment><Timeout>0</Timeout><SlotIdx>0</SlotIdx><Index>7218</Index><SubIndex>1</SubIndex><Data>0200</Data><BitLen>16</BitLen></InitCmd><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[SM input parameter]]></Comment><Timeout>0</Timeout><SlotIdx>0</SlotIdx><Index>7219</Index><SubIndex>1</SubIndex><Data>0200</Data><BitLen>16</BitLen></InitCmd><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[Controlword]]></Comment><Timeout>0</Timeout><SlotIdx>0</SlotIdx><Index>24640</Index><SubIndex>0</SubIndex><Data>1000</Data><BitLen>16</BitLen></InitCmd><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[Modes of Operation]]></Comment><Timeout>0</Timeout><SlotIdx>0</SlotIdx><Index>24672</Index><SubIndex>0</SubIndex><Data>08</Data><BitLen>8</BitLen></InitCmd></InitCmds></CoE></Mailbox><DC><ReferenceClock>true</ReferenceClock><CycleTime>1000000</CycleTime><ShiftTime>100000</ShiftTime></DC></Slave><Slave><Info><Name><![CDATA[SV820N]]></Name><DeviceType>131474</DeviceType><VendorId>1048576</VendorId><ProductCode>786699</ProductCode><RevisionNo>65536</RevisionNo><ToltalVirSlot>4</ToltalVirSlot><OpMode>0</OpMode><VirSlotId>512</VirSlotId><VirSlotId>512</VirSlotId><VirSlotId>512</VirSlotId><VirSlotId>512</VirSlotId></Info><SlotArray><Module><Info><Name><![CDATA[CSP]]></Name></Info></Module><Module><Info><Name><![CDATA[CSP]]></Name></Info></Module><Module><Info><Name><![CDATA[CSP]]></Name></Info></Module><Module><Info><Name><![CDATA[CSP]]></Name></Info></Module></SlotArray><ProcessData><Sm2><Type>Outputs</Type><Enable>1</Enable><Pdo>5632</Pdo><Pdo>5648</Pdo><Pdo>5664</Pdo><Pdo>5680</Pdo></Sm2><Sm3><Type>Inputs</Type><Enable>1</Enable><Pdo>6656</Pdo><Pdo>6672</Pdo><Pdo>6688</Pdo><Pdo>6704</Pdo></Sm3><RxPdo Sm="2"><SlotIdx>0</SlotIdx><Index DependOnSlot="true">#x1600</Index><Name>Outputs</Name><Entry><DevType>0</DevType><Index DependOnSlot="true" Selected="0">#x6040</Index><SubIndex>0</SubIndex><BitLen>16</BitLen><Name>ControlWord</Name><DataType>UINT</DataType></Entry><Entry><DevType>0</DevType><Index DependOnSlot="true" Selected="0">#x607A</Index><SubIndex>0</SubIndex><BitLen>32</BitLen><Name>Target position</Name><DataType>DINT</DataType></Entry></RxPdo><TxPdo Sm="3"><SlotIdx>0</SlotIdx><Index DependOnSlot="true">#x1A00</Index><Name>Inputs</Name><Entry><DevType>0</DevType><Index DependOnSlot="true" Selected="0">#x603F</Index><SubIndex>0</SubIndex><BitLen>16</BitLen><Name>ErrorCode</Name><DataType>UINT</DataType></Entry><Entry><DevType>0</DevType><Index DependOnSlot="true" Selected="0">#x6041</Index><SubIndex>0</SubIndex><BitLen>16</BitLen><Name>StatusWord</Name><DataType>UINT</DataType></Entry><Entry><DevType>0</DevType><Index DependOnSlot="true" Selected="0">#x6064</Index><SubIndex>0</SubIndex><BitLen>32</BitLen><Name>Position actual value</Name><DataType>DINT</DataType></Entry><Entry><DevType>0</DevType><Index DependOnSlot="true" Selected="0">#x60FD</Index><SubIndex>0</SubIndex><BitLen>32</BitLen><Name>Digital inputs</Name><DataType>UDINT</DataType></Entry></TxPdo><RxPdo Sm="2"><SlotIdx>1</SlotIdx><Index DependOnSlot="true">#x1610</Index><Name>Outputs</Name><Entry><DevType>0</DevType><Index DependOnSlot="true" Selected="0">#x6840</Index><SubIndex>0</SubIndex><BitLen>16</BitLen><Name>ControlWord</Name><DataType>UINT</DataType></Entry><Entry><DevType>0</DevType><Index DependOnSlot="true" Selected="0">#x687A</Index><SubIndex>0</SubIndex><BitLen>32</BitLen><Name>Target position</Name><DataType>DINT</DataType></Entry></RxPdo><TxPdo Sm="3"><SlotIdx>1</SlotIdx><Index DependOnSlot="true">#x1A10</Index><Name>Inputs</Name><Entry><DevType>0</DevType><Index DependOnSlot="true" Selected="0">#x683F</Index><SubIndex>0</SubIndex><BitLen>16</BitLen><Name>ErrorCode</Name><DataType>UINT</DataType></Entry><Entry><DevType>0</DevType><Index DependOnSlot="true" Selected="0">#x6841</Index><SubIndex>0</SubIndex><BitLen>16</BitLen><Name>StatusWord</Name><DataType>UINT</DataType></Entry><Entry><DevType>0</DevType><Index DependOnSlot="true" Selected="0">#x6864</Index><SubIndex>0</SubIndex><BitLen>32</BitLen><Name>Position actual value</Name><DataType>DINT</DataType></Entry><Entry><DevType>0</DevType><Index DependOnSlot="true" Selected="0">#x68FD</Index><SubIndex>0</SubIndex><BitLen>32</BitLen><Name>Digital inputs</Name><DataType>UDINT</DataType></Entry></TxPdo><RxPdo Sm="2"><SlotIdx>2</SlotIdx><Index DependOnSlot="true">#x1620</Index><Name>Outputs</Name><Entry><DevType>0</DevType><Index DependOnSlot="true" Selected="0">#x7040</Index><SubIndex>0</SubIndex><BitLen>16</BitLen><Name>ControlWord</Name><DataType>UINT</DataType></Entry><Entry><DevType>0</DevType><Index DependOnSlot="true" Selected="0">#x707A</Index><SubIndex>0</SubIndex><BitLen>32</BitLen><Name>Target position</Name><DataType>DINT</DataType></Entry></RxPdo><TxPdo Sm="3"><SlotIdx>2</SlotIdx><Index DependOnSlot="true">#x1A20</Index><Name>Inputs</Name><Entry><DevType>0</DevType><Index DependOnSlot="true" Selected="0">#x703F</Index><SubIndex>0</SubIndex><BitLen>16</BitLen><Name>ErrorCode</Name><DataType>UINT</DataType></Entry><Entry><DevType>0</DevType><Index DependOnSlot="true" Selected="0">#x7041</Index><SubIndex>0</SubIndex><BitLen>16</BitLen><Name>StatusWord</Name><DataType>UINT</DataType></Entry><Entry><DevType>0</DevType><Index DependOnSlot="true" Selected="0">#x7064</Index><SubIndex>0</SubIndex><BitLen>32</BitLen><Name>Position actual value</Name><DataType>DINT</DataType></Entry><Entry><DevType>0</DevType><Index DependOnSlot="true" Selected="0">#x70FD</Index><SubIndex>0</SubIndex><BitLen>32</BitLen><Name>Digital inputs</Name><DataType>UDINT</DataType></Entry></TxPdo><RxPdo Sm="2"><SlotIdx>3</SlotIdx><Index DependOnSlot="true">#x1630</Index><Name>Outputs</Name><Entry><DevType>0</DevType><Index DependOnSlot="true" Selected="0">#x7840</Index><SubIndex>0</SubIndex><BitLen>16</BitLen><Name>ControlWord</Name><DataType>UINT</DataType></Entry><Entry><DevType>0</DevType><Index DependOnSlot="true" Selected="0">#x787A</Index><SubIndex>0</SubIndex><BitLen>32</BitLen><Name>Target position</Name><DataType>DINT</DataType></Entry></RxPdo><TxPdo Sm="3"><SlotIdx>3</SlotIdx><Index DependOnSlot="true">#x1A30</Index><Name>Inputs</Name><Entry><DevType>0</DevType><Index DependOnSlot="true" Selected="0">#x783F</Index><SubIndex>0</SubIndex><BitLen>16</BitLen><Name>ErrorCode</Name><DataType>UINT</DataType></Entry><Entry><DevType>0</DevType><Index DependOnSlot="true" Selected="0">#x7841</Index><SubIndex>0</SubIndex><BitLen>16</BitLen><Name>StatusWord</Name><DataType>UINT</DataType></Entry><Entry><DevType>0</DevType><Index DependOnSlot="true" Selected="0">#x7864</Index><SubIndex>0</SubIndex><BitLen>32</BitLen><Name>Position actual value</Name><DataType>DINT</DataType></Entry><Entry><DevType>0</DevType><Index DependOnSlot="true" Selected="0">#x78FD</Index><SubIndex>0</SubIndex><BitLen>32</BitLen><Name>Digital inputs</Name><DataType>UDINT</DataType></Entry></TxPdo></ProcessData><Mailbox><CoE><InitCmds><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[SM output parameter]]></Comment><Timeout>0</Timeout><SlotIdx>0</SlotIdx><Index>7218</Index><SubIndex>1</SubIndex><Data>0200</Data><BitLen>16</BitLen></InitCmd><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[SM input parameter]]></Comment><Timeout>0</Timeout><SlotIdx>0</SlotIdx><Index>7219</Index><SubIndex>1</SubIndex><Data>0200</Data><BitLen>16</BitLen></InitCmd><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[Controlword]]></Comment><Timeout>0</Timeout><SlotIdx>0</SlotIdx><Index>24640</Index><SubIndex>0</SubIndex><Data>1000</Data><BitLen>16</BitLen></InitCmd><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[Modes of Operation]]></Comment><Timeout>0</Timeout><SlotIdx>0</SlotIdx><Index>24672</Index><SubIndex>0</SubIndex><Data>08</Data><BitLen>8</BitLen></InitCmd><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[Controlword]]></Comment><Timeout>0</Timeout><SlotIdx>1</SlotIdx><Index>26688</Index><SubIndex>0</SubIndex><Data>1000</Data><BitLen>16</BitLen></InitCmd><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[Modes of Operation]]></Comment><Timeout>0</Timeout><SlotIdx>1</SlotIdx><Index>26720</Index><SubIndex>0</SubIndex><Data>08</Data><BitLen>8</BitLen></InitCmd><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[Controlword]]></Comment><Timeout>0</Timeout><SlotIdx>2</SlotIdx><Index>28736</Index><SubIndex>0</SubIndex><Data>1000</Data><BitLen>16</BitLen></InitCmd><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[Modes of Operation]]></Comment><Timeout>0</Timeout><SlotIdx>2</SlotIdx><Index>28768</Index><SubIndex>0</SubIndex><Data>08</Data><BitLen>8</BitLen></InitCmd><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[Controlword]]></Comment><Timeout>0</Timeout><SlotIdx>3</SlotIdx><Index>30784</Index><SubIndex>0</SubIndex><Data>1000</Data><BitLen>16</BitLen></InitCmd><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[Modes of Operation]]></Comment><Timeout>0</Timeout><SlotIdx>3</SlotIdx><Index>30816</Index><SubIndex>0</SubIndex><Data>08</Data><BitLen>8</BitLen></InitCmd></InitCmds></CoE></Mailbox><DC><ReferenceClock>true</ReferenceClock><CycleTime>1000000</CycleTime><ShiftTime>100000</ShiftTime></DC></Slave><Slave><Info><Name><![CDATA[GR10_1616ETNE]]></Name><DeviceType>197009</DeviceType><VendorId>1048576</VendorId><ProductCode>284428562</ProductCode><RevisionNo>0</RevisionNo><ToltalVirSlot>2</ToltalVirSlot><OpMode>0</OpMode></Info><ProcessData><Sm2><Type>Outputs</Type><Enable>1</Enable><Pdo>5888</Pdo></Sm2><Sm3><Type>Inputs</Type><Enable>1</Enable><Pdo>6912</Pdo></Sm3><TxPdo Fixed="true" Mandatory="false" Sm="3"><SlotIdx>0</SlotIdx><Index>#x1B00</Index><Name>Digital input mapping parameter</Name><Entry><DevType>2</DevType><Index Selected="0">#x6000</Index><SubIndex>1</SubIndex><BitLen>8</BitLen><Name>Digital input 00 to 07</Name><DataType>USINT</DataType></Entry><Entry><DevType>2</DevType><Index Selected="0">#x6000</Index><SubIndex>2</SubIndex><BitLen>8</BitLen><Name>Digital input 10 to 17</Name><DataType>USINT</DataType></Entry></TxPdo><RxPdo Fixed="true" Mandatory="false" Sm="2"><SlotIdx>0</SlotIdx><Index>#x1700</Index><Name>Digital output mapping parameter</Name><Entry><DevType>1</DevType><Index Selected="0">#x6200</Index><SubIndex>1</SubIndex><BitLen>8</BitLen><Name>Digital output 00 to 07</Name><DataType>USINT</DataType></Entry><Entry><DevType>1</DevType><Index Selected="0">#x6200</Index><SubIndex>2</SubIndex><BitLen>8</BitLen><Name>Digital output 10 to 17</Name><DataType>USINT</DataType></Entry></RxPdo></ProcessData><Mailbox><CoE><InitCmds><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[Error mode output]]></Comment><Timeout>0</Timeout><SlotIdx>0</SlotIdx><Index>25094</Index><SubIndex>1</SubIndex><Data>01</Data><BitLen>8</BitLen></InitCmd></InitCmds></CoE></Mailbox></Slave><Slave><Info><Name><![CDATA[GR10_1616ETNE]]></Name><DeviceType>197009</DeviceType><VendorId>1048576</VendorId><ProductCode>284428562</ProductCode><RevisionNo>0</RevisionNo><ToltalVirSlot>2</ToltalVirSlot><OpMode>0</OpMode></Info><ProcessData><Sm2><Type>Outputs</Type><Enable>1</Enable><Pdo>5888</Pdo></Sm2><Sm3><Type>Inputs</Type><Enable>1</Enable><Pdo>6912</Pdo></Sm3><TxPdo Fixed="true" Mandatory="false" Sm="3"><SlotIdx>0</SlotIdx><Index>#x1B00</Index><Name>Digital input mapping parameter</Name><Entry><DevType>2</DevType><Index Selected="0">#x6000</Index><SubIndex>1</SubIndex><BitLen>8</BitLen><Name>Digital input 00 to 07</Name><DataType>USINT</DataType></Entry><Entry><DevType>2</DevType><Index Selected="0">#x6000</Index><SubIndex>2</SubIndex><BitLen>8</BitLen><Name>Digital input 10 to 17</Name><DataType>USINT</DataType></Entry></TxPdo><RxPdo Fixed="true" Mandatory="false" Sm="2"><SlotIdx>0</SlotIdx><Index>#x1700</Index><Name>Digital output mapping parameter</Name><Entry><DevType>1</DevType><Index Selected="0">#x6200</Index><SubIndex>1</SubIndex><BitLen>8</BitLen><Name>Digital output 00 to 07</Name><DataType>USINT</DataType></Entry><Entry><DevType>1</DevType><Index Selected="0">#x6200</Index><SubIndex>2</SubIndex><BitLen>8</BitLen><Name>Digital output 10 to 17</Name><DataType>USINT</DataType></Entry></RxPdo></ProcessData><Mailbox><CoE><InitCmds><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[Error mode output]]></Comment><Timeout>0</Timeout><SlotIdx>0</SlotIdx><Index>25094</Index><SubIndex>1</SubIndex><Data>01</Data><BitLen>8</BitLen></InitCmd></InitCmds></CoE></Mailbox></Slave><Slave><Info><Name><![CDATA[IS620N]]></Name><DeviceType>131474</DeviceType><VendorId>1048576</VendorId><ProductCode>786696</ProductCode><RevisionNo>65537</RevisionNo><ToltalVirSlot>1</ToltalVirSlot><OpMode>0</OpMode></Info><ProcessData><Sm2><Type>Outputs</Type><Enable>1</Enable><Pdo>5632</Pdo></Sm2><Sm3><Type>Inputs</Type><Enable>1</Enable><Pdo>6656</Pdo></Sm3><TxPdo Sm="3"><SlotIdx>0</SlotIdx><Index>#x1A00</Index><Name>1st transmit PDO Mapping</Name><Entry><DevType>0</DevType><Index Selected="0">#x603F</Index><SubIndex>0</SubIndex><BitLen>16</BitLen><Name>ErrorCode</Name><DataType>UINT</DataType></Entry><Entry><DevType>0</DevType><Index Selected="0">#x6041</Index><SubIndex>0</SubIndex><BitLen>16</BitLen><Name>Statusword</Name><DataType>UINT</DataType></Entry><Entry><DevType>0</DevType><Index Selected="0">#x6064</Index><SubIndex>0</SubIndex><BitLen>32</BitLen><Name>Position actual value</Name><DataType>DINT</DataType></Entry><Entry><DevType>0</DevType><Index Selected="0">#x60FD</Index><SubIndex>0</SubIndex><BitLen>32</BitLen><Name>Digital inputs</Name><DataType>UDINT</DataType></Entry></TxPdo><RxPdo Sm="2"><SlotIdx>0</SlotIdx><Index>#x1600</Index><Name>1st receive PDO Mapping</Name><Entry><DevType>0</DevType><Index Selected="0">#x6040</Index><SubIndex>0</SubIndex><BitLen>16</BitLen><Name>Controlword</Name><DataType>UINT</DataType></Entry><Entry><DevType>0</DevType><Index Selected="0">#x607A</Index><SubIndex>0</SubIndex><BitLen>32</BitLen><Name>Target position</Name><DataType>DINT</DataType></Entry></RxPdo></ProcessData><Mailbox><CoE><InitCmds><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[SM output parameter]]></Comment><Timeout>0</Timeout><SlotIdx>0</SlotIdx><Index>7218</Index><SubIndex>1</SubIndex><Data>0200</Data><BitLen>16</BitLen></InitCmd><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[SM input parameter]]></Comment><Timeout>0</Timeout><SlotIdx>0</SlotIdx><Index>7219</Index><SubIndex>1</SubIndex><Data>0200</Data><BitLen>16</BitLen></InitCmd><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[Controlword]]></Comment><Timeout>0</Timeout><SlotIdx>0</SlotIdx><Index>24640</Index><SubIndex>0</SubIndex><Data>1000</Data><BitLen>16</BitLen></InitCmd><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[Modes of Operation]]></Comment><Timeout>0</Timeout><SlotIdx>0</SlotIdx><Index>24672</Index><SubIndex>0</SubIndex><Data>08</Data><BitLen>8</BitLen></InitCmd></InitCmds></CoE></Mailbox><DC><ReferenceClock>true</ReferenceClock><CycleTime>1000000</CycleTime><ShiftTime>100000</ShiftTime></DC></Slave><Slave><Info><Name><![CDATA[IS620N]]></Name><DeviceType>131474</DeviceType><VendorId>1048576</VendorId><ProductCode>786696</ProductCode><RevisionNo>65537</RevisionNo><ToltalVirSlot>1</ToltalVirSlot><OpMode>0</OpMode></Info><ProcessData><Sm2><Type>Outputs</Type><Enable>1</Enable><Pdo>5632</Pdo></Sm2><Sm3><Type>Inputs</Type><Enable>1</Enable><Pdo>6656</Pdo></Sm3><TxPdo Sm="3"><SlotIdx>0</SlotIdx><Index>#x1A00</Index><Name>1st transmit PDO Mapping</Name><Entry><DevType>0</DevType><Index Selected="0">#x603F</Index><SubIndex>0</SubIndex><BitLen>16</BitLen><Name>ErrorCode</Name><DataType>UINT</DataType></Entry><Entry><DevType>0</DevType><Index Selected="0">#x6041</Index><SubIndex>0</SubIndex><BitLen>16</BitLen><Name>Statusword</Name><DataType>UINT</DataType></Entry><Entry><DevType>0</DevType><Index Selected="0">#x6064</Index><SubIndex>0</SubIndex><BitLen>32</BitLen><Name>Position actual value</Name><DataType>DINT</DataType></Entry><Entry><DevType>0</DevType><Index Selected="0">#x60FD</Index><SubIndex>0</SubIndex><BitLen>32</BitLen><Name>Digital inputs</Name><DataType>UDINT</DataType></Entry></TxPdo><RxPdo Sm="2"><SlotIdx>0</SlotIdx><Index>#x1600</Index><Name>1st receive PDO Mapping</Name><Entry><DevType>0</DevType><Index Selected="0">#x6040</Index><SubIndex>0</SubIndex><BitLen>16</BitLen><Name>Controlword</Name><DataType>UINT</DataType></Entry><Entry><DevType>0</DevType><Index Selected="0">#x607A</Index><SubIndex>0</SubIndex><BitLen>32</BitLen><Name>Target position</Name><DataType>DINT</DataType></Entry></RxPdo></ProcessData><Mailbox><CoE><InitCmds><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[SM output parameter]]></Comment><Timeout>0</Timeout><SlotIdx>0</SlotIdx><Index>7218</Index><SubIndex>1</SubIndex><Data>0200</Data><BitLen>16</BitLen></InitCmd><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[SM input parameter]]></Comment><Timeout>0</Timeout><SlotIdx>0</SlotIdx><Index>7219</Index><SubIndex>1</SubIndex><Data>0200</Data><BitLen>16</BitLen></InitCmd><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[Controlword]]></Comment><Timeout>0</Timeout><SlotIdx>0</SlotIdx><Index>24640</Index><SubIndex>0</SubIndex><Data>1000</Data><BitLen>16</BitLen></InitCmd><InitCmd Fixed="true"><Transition>PS</Transition><Comment><![CDATA[Modes of Operation]]></Comment><Timeout>0</Timeout><SlotIdx>0</SlotIdx><Index>24672</Index><SubIndex>0</SubIndex><Data>08</Data><BitLen>8</BitLen></InitCmd></InitCmds></CoE></Mailbox><DC><ReferenceClock>true</ReferenceClock><CycleTime>1000000</CycleTime><ShiftTime>100000</ShiftTime></DC></Slave></Config></EtherCATConfig>
\ No newline at end of file \ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<EtherCATConfig>
<Config>
<Master>
<SysHwCfg>1</SysHwCfg>
<cycleTime>1000</cycleTime>
<Info>
<Name><![CDATA[Card 0 ]]></Name>
</Info>
</Master>
<Slave>
<Info>
<Name><![CDATA[GR10_1616ETNE]]></Name>
<DeviceType>197009</DeviceType>
<VendorId>1048576</VendorId>
<ProductCode>284428562</ProductCode>
<RevisionNo>0</RevisionNo>
<ToltalVirSlot>2</ToltalVirSlot>
<OpMode>0</OpMode>
</Info>
<ProcessData>
<Sm2>
<Type>Outputs</Type>
<Enable>1</Enable>
<Pdo>5888</Pdo>
</Sm2>
<Sm3>
<Type>Inputs</Type>
<Enable>1</Enable>
<Pdo>6912</Pdo>
</Sm3>
<TxPdo Fixed="true" Mandatory="false" Sm="3">
<SlotIdx>0</SlotIdx>
<Index>#x1B00</Index>
<Name>Digital input mapping parameter</Name>
<Entry>
<DevType>2</DevType>
<Index Selected="0">#x6000</Index>
<SubIndex>1</SubIndex>
<BitLen>8</BitLen>
<Name>Digital input 00 to 07</Name>
<DataType>USINT</DataType>
</Entry>
<Entry>
<DevType>2</DevType>
<Index Selected="0">#x6000</Index>
<SubIndex>2</SubIndex>
<BitLen>8</BitLen>
<Name>Digital input 10 to 17</Name>
<DataType>USINT</DataType>
</Entry>
</TxPdo>
<RxPdo Fixed="true" Mandatory="false" Sm="2">
<SlotIdx>0</SlotIdx>
<Index>#x1700</Index>
<Name>Digital output mapping parameter</Name>
<Entry>
<DevType>1</DevType>
<Index Selected="0">#x6200</Index>
<SubIndex>1</SubIndex>
<BitLen>8</BitLen>
<Name>Digital output 00 to 07</Name>
<DataType>USINT</DataType>
</Entry>
<Entry>
<DevType>1</DevType>
<Index Selected="0">#x6200</Index>
<SubIndex>2</SubIndex>
<BitLen>8</BitLen>
<Name>Digital output 10 to 17</Name>
<DataType>USINT</DataType>
</Entry>
</RxPdo>
</ProcessData>
<Mailbox>
<CoE>
<InitCmds>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[Error mode output]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>0</SlotIdx>
<Index>25094</Index>
<SubIndex>1</SubIndex>
<Data>01</Data>
<BitLen>8</BitLen>
</InitCmd>
</InitCmds>
</CoE>
</Mailbox>
</Slave>
<Slave>
<Info>
<Name><![CDATA[GR10_1616ETNE]]></Name>
<DeviceType>197009</DeviceType>
<VendorId>1048576</VendorId>
<ProductCode>284428562</ProductCode>
<RevisionNo>0</RevisionNo>
<ToltalVirSlot>2</ToltalVirSlot>
<OpMode>0</OpMode>
</Info>
<ProcessData>
<Sm2>
<Type>Outputs</Type>
<Enable>1</Enable>
<Pdo>5888</Pdo>
</Sm2>
<Sm3>
<Type>Inputs</Type>
<Enable>1</Enable>
<Pdo>6912</Pdo>
</Sm3>
<TxPdo Fixed="true" Mandatory="false" Sm="3">
<SlotIdx>0</SlotIdx>
<Index>#x1B00</Index>
<Name>Digital input mapping parameter</Name>
<Entry>
<DevType>2</DevType>
<Index Selected="0">#x6000</Index>
<SubIndex>1</SubIndex>
<BitLen>8</BitLen>
<Name>Digital input 00 to 07</Name>
<DataType>USINT</DataType>
</Entry>
<Entry>
<DevType>2</DevType>
<Index Selected="0">#x6000</Index>
<SubIndex>2</SubIndex>
<BitLen>8</BitLen>
<Name>Digital input 10 to 17</Name>
<DataType>USINT</DataType>
</Entry>
</TxPdo>
<RxPdo Fixed="true" Mandatory="false" Sm="2">
<SlotIdx>0</SlotIdx>
<Index>#x1700</Index>
<Name>Digital output mapping parameter</Name>
<Entry>
<DevType>1</DevType>
<Index Selected="0">#x6200</Index>
<SubIndex>1</SubIndex>
<BitLen>8</BitLen>
<Name>Digital output 00 to 07</Name>
<DataType>USINT</DataType>
</Entry>
<Entry>
<DevType>1</DevType>
<Index Selected="0">#x6200</Index>
<SubIndex>2</SubIndex>
<BitLen>8</BitLen>
<Name>Digital output 10 to 17</Name>
<DataType>USINT</DataType>
</Entry>
</RxPdo>
</ProcessData>
<Mailbox>
<CoE>
<InitCmds>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[Error mode output]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>0</SlotIdx>
<Index>25094</Index>
<SubIndex>1</SubIndex>
<Data>01</Data>
<BitLen>8</BitLen>
</InitCmd>
</InitCmds>
</CoE>
</Mailbox>
</Slave>
<Slave>
<Info>
<Name><![CDATA[GR10_1616ETNE]]></Name>
<DeviceType>197009</DeviceType>
<VendorId>1048576</VendorId>
<ProductCode>284428562</ProductCode>
<RevisionNo>0</RevisionNo>
<ToltalVirSlot>2</ToltalVirSlot>
<OpMode>0</OpMode>
</Info>
<ProcessData>
<Sm2>
<Type>Outputs</Type>
<Enable>1</Enable>
<Pdo>5888</Pdo>
</Sm2>
<Sm3>
<Type>Inputs</Type>
<Enable>1</Enable>
<Pdo>6912</Pdo>
</Sm3>
<TxPdo Fixed="true" Mandatory="false" Sm="3">
<SlotIdx>0</SlotIdx>
<Index>#x1B00</Index>
<Name>Digital input mapping parameter</Name>
<Entry>
<DevType>2</DevType>
<Index Selected="0">#x6000</Index>
<SubIndex>1</SubIndex>
<BitLen>8</BitLen>
<Name>Digital input 00 to 07</Name>
<DataType>USINT</DataType>
</Entry>
<Entry>
<DevType>2</DevType>
<Index Selected="0">#x6000</Index>
<SubIndex>2</SubIndex>
<BitLen>8</BitLen>
<Name>Digital input 10 to 17</Name>
<DataType>USINT</DataType>
</Entry>
</TxPdo>
<RxPdo Fixed="true" Mandatory="false" Sm="2">
<SlotIdx>0</SlotIdx>
<Index>#x1700</Index>
<Name>Digital output mapping parameter</Name>
<Entry>
<DevType>1</DevType>
<Index Selected="0">#x6200</Index>
<SubIndex>1</SubIndex>
<BitLen>8</BitLen>
<Name>Digital output 00 to 07</Name>
<DataType>USINT</DataType>
</Entry>
<Entry>
<DevType>1</DevType>
<Index Selected="0">#x6200</Index>
<SubIndex>2</SubIndex>
<BitLen>8</BitLen>
<Name>Digital output 10 to 17</Name>
<DataType>USINT</DataType>
</Entry>
</RxPdo>
</ProcessData>
<Mailbox>
<CoE>
<InitCmds>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[Error mode output]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>0</SlotIdx>
<Index>25094</Index>
<SubIndex>1</SubIndex>
<Data>01</Data>
<BitLen>8</BitLen>
</InitCmd>
</InitCmds>
</CoE>
</Mailbox>
</Slave>
<Slave>
<Info>
<Name><![CDATA[GR10_1616ETNE]]></Name>
<DeviceType>197009</DeviceType>
<VendorId>1048576</VendorId>
<ProductCode>284428562</ProductCode>
<RevisionNo>0</RevisionNo>
<ToltalVirSlot>2</ToltalVirSlot>
<OpMode>0</OpMode>
</Info>
<ProcessData>
<Sm2>
<Type>Outputs</Type>
<Enable>1</Enable>
<Pdo>5888</Pdo>
</Sm2>
<Sm3>
<Type>Inputs</Type>
<Enable>1</Enable>
<Pdo>6912</Pdo>
</Sm3>
<TxPdo Fixed="true" Mandatory="false" Sm="3">
<SlotIdx>0</SlotIdx>
<Index>#x1B00</Index>
<Name>Digital input mapping parameter</Name>
<Entry>
<DevType>2</DevType>
<Index Selected="0">#x6000</Index>
<SubIndex>1</SubIndex>
<BitLen>8</BitLen>
<Name>Digital input 00 to 07</Name>
<DataType>USINT</DataType>
</Entry>
<Entry>
<DevType>2</DevType>
<Index Selected="0">#x6000</Index>
<SubIndex>2</SubIndex>
<BitLen>8</BitLen>
<Name>Digital input 10 to 17</Name>
<DataType>USINT</DataType>
</Entry>
</TxPdo>
<RxPdo Fixed="true" Mandatory="false" Sm="2">
<SlotIdx>0</SlotIdx>
<Index>#x1700</Index>
<Name>Digital output mapping parameter</Name>
<Entry>
<DevType>1</DevType>
<Index Selected="0">#x6200</Index>
<SubIndex>1</SubIndex>
<BitLen>8</BitLen>
<Name>Digital output 00 to 07</Name>
<DataType>USINT</DataType>
</Entry>
<Entry>
<DevType>1</DevType>
<Index Selected="0">#x6200</Index>
<SubIndex>2</SubIndex>
<BitLen>8</BitLen>
<Name>Digital output 10 to 17</Name>
<DataType>USINT</DataType>
</Entry>
</RxPdo>
</ProcessData>
<Mailbox>
<CoE>
<InitCmds>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[Error mode output]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>0</SlotIdx>
<Index>25094</Index>
<SubIndex>1</SubIndex>
<Data>01</Data>
<BitLen>8</BitLen>
</InitCmd>
</InitCmds>
</CoE>
</Mailbox>
</Slave>
<Slave>
<Info>
<Name><![CDATA[GR10_1616ETNE]]></Name>
<DeviceType>197009</DeviceType>
<VendorId>1048576</VendorId>
<ProductCode>284428562</ProductCode>
<RevisionNo>0</RevisionNo>
<ToltalVirSlot>2</ToltalVirSlot>
<OpMode>0</OpMode>
</Info>
<ProcessData>
<Sm2>
<Type>Outputs</Type>
<Enable>1</Enable>
<Pdo>5888</Pdo>
</Sm2>
<Sm3>
<Type>Inputs</Type>
<Enable>1</Enable>
<Pdo>6912</Pdo>
</Sm3>
<TxPdo Fixed="true" Mandatory="false" Sm="3">
<SlotIdx>0</SlotIdx>
<Index>#x1B00</Index>
<Name>Digital input mapping parameter</Name>
<Entry>
<DevType>2</DevType>
<Index Selected="0">#x6000</Index>
<SubIndex>1</SubIndex>
<BitLen>8</BitLen>
<Name>Digital input 00 to 07</Name>
<DataType>USINT</DataType>
</Entry>
<Entry>
<DevType>2</DevType>
<Index Selected="0">#x6000</Index>
<SubIndex>2</SubIndex>
<BitLen>8</BitLen>
<Name>Digital input 10 to 17</Name>
<DataType>USINT</DataType>
</Entry>
</TxPdo>
<RxPdo Fixed="true" Mandatory="false" Sm="2">
<SlotIdx>0</SlotIdx>
<Index>#x1700</Index>
<Name>Digital output mapping parameter</Name>
<Entry>
<DevType>1</DevType>
<Index Selected="0">#x6200</Index>
<SubIndex>1</SubIndex>
<BitLen>8</BitLen>
<Name>Digital output 00 to 07</Name>
<DataType>USINT</DataType>
</Entry>
<Entry>
<DevType>1</DevType>
<Index Selected="0">#x6200</Index>
<SubIndex>2</SubIndex>
<BitLen>8</BitLen>
<Name>Digital output 10 to 17</Name>
<DataType>USINT</DataType>
</Entry>
</RxPdo>
</ProcessData>
<Mailbox>
<CoE>
<InitCmds>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[Error mode output]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>0</SlotIdx>
<Index>25094</Index>
<SubIndex>1</SubIndex>
<Data>01</Data>
<BitLen>8</BitLen>
</InitCmd>
</InitCmds>
</CoE>
</Mailbox>
</Slave>
<Slave>
<Info>
<Name><![CDATA[IS620N]]></Name>
<DeviceType>131474</DeviceType>
<VendorId>1048576</VendorId>
<ProductCode>786696</ProductCode>
<RevisionNo>65537</RevisionNo>
<ToltalVirSlot>1</ToltalVirSlot>
<OpMode>0</OpMode>
</Info>
<ProcessData>
<Sm2>
<Type>Outputs</Type>
<Enable>1</Enable>
<Pdo>5632</Pdo>
</Sm2>
<Sm3>
<Type>Inputs</Type>
<Enable>1</Enable>
<Pdo>6656</Pdo>
</Sm3>
<TxPdo Sm="3">
<SlotIdx>0</SlotIdx>
<Index>#x1A00</Index>
<Name>1st transmit PDO Mapping</Name>
<Entry>
<DevType>0</DevType>
<Index Selected="0">#x603F</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>ErrorCode</Name>
<DataType>UINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index Selected="0">#x6041</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>Statusword</Name>
<DataType>UINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index Selected="0">#x6064</Index>
<SubIndex>0</SubIndex>
<BitLen>32</BitLen>
<Name>Position actual value</Name>
<DataType>DINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index Selected="0">#x60FD</Index>
<SubIndex>0</SubIndex>
<BitLen>32</BitLen>
<Name>Digital inputs</Name>
<DataType>UDINT</DataType>
</Entry>
</TxPdo>
<RxPdo Sm="2">
<SlotIdx>0</SlotIdx>
<Index>#x1600</Index>
<Name>1st receive PDO Mapping</Name>
<Entry>
<DevType>0</DevType>
<Index Selected="0">#x6040</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>Controlword</Name>
<DataType>UINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index Selected="0">#x607A</Index>
<SubIndex>0</SubIndex>
<BitLen>32</BitLen>
<Name>Target position</Name>
<DataType>DINT</DataType>
</Entry>
</RxPdo>
</ProcessData>
<Mailbox>
<CoE>
<InitCmds>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[SM output parameter]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>0</SlotIdx>
<Index>7218</Index>
<SubIndex>1</SubIndex>
<Data>0200</Data>
<BitLen>16</BitLen>
</InitCmd>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[SM input parameter]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>0</SlotIdx>
<Index>7219</Index>
<SubIndex>1</SubIndex>
<Data>0200</Data>
<BitLen>16</BitLen>
</InitCmd>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[Controlword]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>0</SlotIdx>
<Index>24640</Index>
<SubIndex>0</SubIndex>
<Data>1000</Data>
<BitLen>16</BitLen>
</InitCmd>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[Modes of Operation]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>0</SlotIdx>
<Index>24672</Index>
<SubIndex>0</SubIndex>
<Data>08</Data>
<BitLen>8</BitLen>
</InitCmd>
</InitCmds>
</CoE>
</Mailbox>
<DC>
<ReferenceClock>true</ReferenceClock>
<CycleTime>1000000</CycleTime>
<ShiftTime>100000</ShiftTime>
</DC>
</Slave>
<Slave>
<Info>
<Name><![CDATA[SV820N]]></Name>
<DeviceType>131474</DeviceType>
<VendorId>1048576</VendorId>
<ProductCode>786699</ProductCode>
<RevisionNo>65536</RevisionNo>
<ToltalVirSlot>4</ToltalVirSlot>
<OpMode>0</OpMode>
<VirSlotId>512</VirSlotId>
<VirSlotId>512</VirSlotId>
<VirSlotId>512</VirSlotId>
<VirSlotId>512</VirSlotId>
</Info>
<SlotArray>
<Module>
<Info>
<Name><![CDATA[CSP]]></Name>
</Info>
</Module>
<Module>
<Info>
<Name><![CDATA[CSP]]></Name>
</Info>
</Module>
<Module>
<Info>
<Name><![CDATA[CSP]]></Name>
</Info>
</Module>
<Module>
<Info>
<Name><![CDATA[CSP]]></Name>
</Info>
</Module>
</SlotArray>
<ProcessData>
<Sm2>
<Type>Outputs</Type>
<Enable>1</Enable>
<Pdo>5632</Pdo>
<Pdo>5648</Pdo>
<Pdo>5664</Pdo>
<Pdo>5680</Pdo>
</Sm2>
<Sm3>
<Type>Inputs</Type>
<Enable>1</Enable>
<Pdo>6656</Pdo>
<Pdo>6672</Pdo>
<Pdo>6688</Pdo>
<Pdo>6704</Pdo>
</Sm3>
<RxPdo Sm="2">
<SlotIdx>0</SlotIdx>
<Index DependOnSlot="true">#x1600</Index>
<Name>Outputs</Name>
<Entry>
<DevType>0</DevType>
<Index DependOnSlot="true" Selected="0">#x6040</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>ControlWord</Name>
<DataType>UINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index DependOnSlot="true" Selected="0">#x607A</Index>
<SubIndex>0</SubIndex>
<BitLen>32</BitLen>
<Name>Target position</Name>
<DataType>DINT</DataType>
</Entry>
</RxPdo>
<TxPdo Sm="3">
<SlotIdx>0</SlotIdx>
<Index DependOnSlot="true">#x1A00</Index>
<Name>Inputs</Name>
<Entry>
<DevType>0</DevType>
<Index DependOnSlot="true" Selected="0">#x603F</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>ErrorCode</Name>
<DataType>UINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index DependOnSlot="true" Selected="0">#x6041</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>StatusWord</Name>
<DataType>UINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index DependOnSlot="true" Selected="0">#x6064</Index>
<SubIndex>0</SubIndex>
<BitLen>32</BitLen>
<Name>Position actual value</Name>
<DataType>DINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index DependOnSlot="true" Selected="0">#x60FD</Index>
<SubIndex>0</SubIndex>
<BitLen>32</BitLen>
<Name>Digital inputs</Name>
<DataType>UDINT</DataType>
</Entry>
</TxPdo>
<RxPdo Sm="2">
<SlotIdx>1</SlotIdx>
<Index DependOnSlot="true">#x1610</Index>
<Name>Outputs</Name>
<Entry>
<DevType>0</DevType>
<Index DependOnSlot="true" Selected="0">#x6840</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>ControlWord</Name>
<DataType>UINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index DependOnSlot="true" Selected="0">#x687A</Index>
<SubIndex>0</SubIndex>
<BitLen>32</BitLen>
<Name>Target position</Name>
<DataType>DINT</DataType>
</Entry>
</RxPdo>
<TxPdo Sm="3">
<SlotIdx>1</SlotIdx>
<Index DependOnSlot="true">#x1A10</Index>
<Name>Inputs</Name>
<Entry>
<DevType>0</DevType>
<Index DependOnSlot="true" Selected="0">#x683F</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>ErrorCode</Name>
<DataType>UINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index DependOnSlot="true" Selected="0">#x6841</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>StatusWord</Name>
<DataType>UINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index DependOnSlot="true" Selected="0">#x6864</Index>
<SubIndex>0</SubIndex>
<BitLen>32</BitLen>
<Name>Position actual value</Name>
<DataType>DINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index DependOnSlot="true" Selected="0">#x68FD</Index>
<SubIndex>0</SubIndex>
<BitLen>32</BitLen>
<Name>Digital inputs</Name>
<DataType>UDINT</DataType>
</Entry>
</TxPdo>
<RxPdo Sm="2">
<SlotIdx>2</SlotIdx>
<Index DependOnSlot="true">#x1620</Index>
<Name>Outputs</Name>
<Entry>
<DevType>0</DevType>
<Index DependOnSlot="true" Selected="0">#x7040</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>ControlWord</Name>
<DataType>UINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index DependOnSlot="true" Selected="0">#x707A</Index>
<SubIndex>0</SubIndex>
<BitLen>32</BitLen>
<Name>Target position</Name>
<DataType>DINT</DataType>
</Entry>
</RxPdo>
<TxPdo Sm="3">
<SlotIdx>2</SlotIdx>
<Index DependOnSlot="true">#x1A20</Index>
<Name>Inputs</Name>
<Entry>
<DevType>0</DevType>
<Index DependOnSlot="true" Selected="0">#x703F</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>ErrorCode</Name>
<DataType>UINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index DependOnSlot="true" Selected="0">#x7041</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>StatusWord</Name>
<DataType>UINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index DependOnSlot="true" Selected="0">#x7064</Index>
<SubIndex>0</SubIndex>
<BitLen>32</BitLen>
<Name>Position actual value</Name>
<DataType>DINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index DependOnSlot="true" Selected="0">#x70FD</Index>
<SubIndex>0</SubIndex>
<BitLen>32</BitLen>
<Name>Digital inputs</Name>
<DataType>UDINT</DataType>
</Entry>
</TxPdo>
<RxPdo Sm="2">
<SlotIdx>3</SlotIdx>
<Index DependOnSlot="true">#x1630</Index>
<Name>Outputs</Name>
<Entry>
<DevType>0</DevType>
<Index DependOnSlot="true" Selected="0">#x7840</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>ControlWord</Name>
<DataType>UINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index DependOnSlot="true" Selected="0">#x787A</Index>
<SubIndex>0</SubIndex>
<BitLen>32</BitLen>
<Name>Target position</Name>
<DataType>DINT</DataType>
</Entry>
</RxPdo>
<TxPdo Sm="3">
<SlotIdx>3</SlotIdx>
<Index DependOnSlot="true">#x1A30</Index>
<Name>Inputs</Name>
<Entry>
<DevType>0</DevType>
<Index DependOnSlot="true" Selected="0">#x783F</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>ErrorCode</Name>
<DataType>UINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index DependOnSlot="true" Selected="0">#x7841</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>StatusWord</Name>
<DataType>UINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index DependOnSlot="true" Selected="0">#x7864</Index>
<SubIndex>0</SubIndex>
<BitLen>32</BitLen>
<Name>Position actual value</Name>
<DataType>DINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index DependOnSlot="true" Selected="0">#x78FD</Index>
<SubIndex>0</SubIndex>
<BitLen>32</BitLen>
<Name>Digital inputs</Name>
<DataType>UDINT</DataType>
</Entry>
</TxPdo>
</ProcessData>
<Mailbox>
<CoE>
<InitCmds>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[SM output parameter]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>0</SlotIdx>
<Index>7218</Index>
<SubIndex>1</SubIndex>
<Data>0200</Data>
<BitLen>16</BitLen>
</InitCmd>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[SM input parameter]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>0</SlotIdx>
<Index>7219</Index>
<SubIndex>1</SubIndex>
<Data>0200</Data>
<BitLen>16</BitLen>
</InitCmd>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[Controlword]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>0</SlotIdx>
<Index>24640</Index>
<SubIndex>0</SubIndex>
<Data>1000</Data>
<BitLen>16</BitLen>
</InitCmd>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[Modes of Operation]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>0</SlotIdx>
<Index>24672</Index>
<SubIndex>0</SubIndex>
<Data>08</Data>
<BitLen>8</BitLen>
</InitCmd>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[Controlword]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>1</SlotIdx>
<Index>26688</Index>
<SubIndex>0</SubIndex>
<Data>1000</Data>
<BitLen>16</BitLen>
</InitCmd>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[Modes of Operation]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>1</SlotIdx>
<Index>26720</Index>
<SubIndex>0</SubIndex>
<Data>08</Data>
<BitLen>8</BitLen>
</InitCmd>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[Controlword]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>2</SlotIdx>
<Index>28736</Index>
<SubIndex>0</SubIndex>
<Data>1000</Data>
<BitLen>16</BitLen>
</InitCmd>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[Modes of Operation]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>2</SlotIdx>
<Index>28768</Index>
<SubIndex>0</SubIndex>
<Data>08</Data>
<BitLen>8</BitLen>
</InitCmd>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[Controlword]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>3</SlotIdx>
<Index>30784</Index>
<SubIndex>0</SubIndex>
<Data>1000</Data>
<BitLen>16</BitLen>
</InitCmd>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[Modes of Operation]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>3</SlotIdx>
<Index>30816</Index>
<SubIndex>0</SubIndex>
<Data>08</Data>
<BitLen>8</BitLen>
</InitCmd>
</InitCmds>
</CoE>
</Mailbox>
<DC>
<ReferenceClock>true</ReferenceClock>
<CycleTime>1000000</CycleTime>
<ShiftTime>100000</ShiftTime>
</DC>
</Slave>
<Slave>
<Info>
<Name><![CDATA[GR10_1616ETNE]]></Name>
<DeviceType>197009</DeviceType>
<VendorId>1048576</VendorId>
<ProductCode>284428562</ProductCode>
<RevisionNo>0</RevisionNo>
<ToltalVirSlot>2</ToltalVirSlot>
<OpMode>0</OpMode>
</Info>
<ProcessData>
<Sm2>
<Type>Outputs</Type>
<Enable>1</Enable>
<Pdo>5888</Pdo>
</Sm2>
<Sm3>
<Type>Inputs</Type>
<Enable>1</Enable>
<Pdo>6912</Pdo>
</Sm3>
<TxPdo Fixed="true" Mandatory="false" Sm="3">
<SlotIdx>0</SlotIdx>
<Index>#x1B00</Index>
<Name>Digital input mapping parameter</Name>
<Entry>
<DevType>2</DevType>
<Index Selected="0">#x6000</Index>
<SubIndex>1</SubIndex>
<BitLen>8</BitLen>
<Name>Digital input 00 to 07</Name>
<DataType>USINT</DataType>
</Entry>
<Entry>
<DevType>2</DevType>
<Index Selected="0">#x6000</Index>
<SubIndex>2</SubIndex>
<BitLen>8</BitLen>
<Name>Digital input 10 to 17</Name>
<DataType>USINT</DataType>
</Entry>
</TxPdo>
<RxPdo Fixed="true" Mandatory="false" Sm="2">
<SlotIdx>0</SlotIdx>
<Index>#x1700</Index>
<Name>Digital output mapping parameter</Name>
<Entry>
<DevType>1</DevType>
<Index Selected="0">#x6200</Index>
<SubIndex>1</SubIndex>
<BitLen>8</BitLen>
<Name>Digital output 00 to 07</Name>
<DataType>USINT</DataType>
</Entry>
<Entry>
<DevType>1</DevType>
<Index Selected="0">#x6200</Index>
<SubIndex>2</SubIndex>
<BitLen>8</BitLen>
<Name>Digital output 10 to 17</Name>
<DataType>USINT</DataType>
</Entry>
</RxPdo>
</ProcessData>
<Mailbox>
<CoE>
<InitCmds>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[Error mode output]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>0</SlotIdx>
<Index>25094</Index>
<SubIndex>1</SubIndex>
<Data>01</Data>
<BitLen>8</BitLen>
</InitCmd>
</InitCmds>
</CoE>
</Mailbox>
</Slave>
<Slave>
<Info>
<Name><![CDATA[GR10_1616ETNE]]></Name>
<DeviceType>197009</DeviceType>
<VendorId>1048576</VendorId>
<ProductCode>284428562</ProductCode>
<RevisionNo>0</RevisionNo>
<ToltalVirSlot>2</ToltalVirSlot>
<OpMode>0</OpMode>
</Info>
<ProcessData>
<Sm2>
<Type>Outputs</Type>
<Enable>1</Enable>
<Pdo>5888</Pdo>
</Sm2>
<Sm3>
<Type>Inputs</Type>
<Enable>1</Enable>
<Pdo>6912</Pdo>
</Sm3>
<TxPdo Fixed="true" Mandatory="false" Sm="3">
<SlotIdx>0</SlotIdx>
<Index>#x1B00</Index>
<Name>Digital input mapping parameter</Name>
<Entry>
<DevType>2</DevType>
<Index Selected="0">#x6000</Index>
<SubIndex>1</SubIndex>
<BitLen>8</BitLen>
<Name>Digital input 00 to 07</Name>
<DataType>USINT</DataType>
</Entry>
<Entry>
<DevType>2</DevType>
<Index Selected="0">#x6000</Index>
<SubIndex>2</SubIndex>
<BitLen>8</BitLen>
<Name>Digital input 10 to 17</Name>
<DataType>USINT</DataType>
</Entry>
</TxPdo>
<RxPdo Fixed="true" Mandatory="false" Sm="2">
<SlotIdx>0</SlotIdx>
<Index>#x1700</Index>
<Name>Digital output mapping parameter</Name>
<Entry>
<DevType>1</DevType>
<Index Selected="0">#x6200</Index>
<SubIndex>1</SubIndex>
<BitLen>8</BitLen>
<Name>Digital output 00 to 07</Name>
<DataType>USINT</DataType>
</Entry>
<Entry>
<DevType>1</DevType>
<Index Selected="0">#x6200</Index>
<SubIndex>2</SubIndex>
<BitLen>8</BitLen>
<Name>Digital output 10 to 17</Name>
<DataType>USINT</DataType>
</Entry>
</RxPdo>
</ProcessData>
<Mailbox>
<CoE>
<InitCmds>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[Error mode output]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>0</SlotIdx>
<Index>25094</Index>
<SubIndex>1</SubIndex>
<Data>01</Data>
<BitLen>8</BitLen>
</InitCmd>
</InitCmds>
</CoE>
</Mailbox>
</Slave>
<Slave>
<Info>
<Name><![CDATA[IS620N]]></Name>
<DeviceType>131474</DeviceType>
<VendorId>1048576</VendorId>
<ProductCode>786696</ProductCode>
<RevisionNo>65537</RevisionNo>
<ToltalVirSlot>1</ToltalVirSlot>
<OpMode>0</OpMode>
</Info>
<ProcessData>
<Sm2>
<Type>Outputs</Type>
<Enable>1</Enable>
<Pdo>5632</Pdo>
</Sm2>
<Sm3>
<Type>Inputs</Type>
<Enable>1</Enable>
<Pdo>6656</Pdo>
</Sm3>
<TxPdo Sm="3">
<SlotIdx>0</SlotIdx>
<Index>#x1A00</Index>
<Name>1st transmit PDO Mapping</Name>
<Entry>
<DevType>0</DevType>
<Index Selected="0">#x603F</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>ErrorCode</Name>
<DataType>UINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index Selected="0">#x6041</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>Statusword</Name>
<DataType>UINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index Selected="0">#x6064</Index>
<SubIndex>0</SubIndex>
<BitLen>32</BitLen>
<Name>Position actual value</Name>
<DataType>DINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index Selected="0">#x60FD</Index>
<SubIndex>0</SubIndex>
<BitLen>32</BitLen>
<Name>Digital inputs</Name>
<DataType>UDINT</DataType>
</Entry>
</TxPdo>
<RxPdo Sm="2">
<SlotIdx>0</SlotIdx>
<Index>#x1600</Index>
<Name>1st receive PDO Mapping</Name>
<Entry>
<DevType>0</DevType>
<Index Selected="0">#x6040</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>Controlword</Name>
<DataType>UINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index Selected="0">#x607A</Index>
<SubIndex>0</SubIndex>
<BitLen>32</BitLen>
<Name>Target position</Name>
<DataType>DINT</DataType>
</Entry>
</RxPdo>
</ProcessData>
<Mailbox>
<CoE>
<InitCmds>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[SM output parameter]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>0</SlotIdx>
<Index>7218</Index>
<SubIndex>1</SubIndex>
<Data>0200</Data>
<BitLen>16</BitLen>
</InitCmd>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[SM input parameter]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>0</SlotIdx>
<Index>7219</Index>
<SubIndex>1</SubIndex>
<Data>0200</Data>
<BitLen>16</BitLen>
</InitCmd>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[Controlword]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>0</SlotIdx>
<Index>24640</Index>
<SubIndex>0</SubIndex>
<Data>1000</Data>
<BitLen>16</BitLen>
</InitCmd>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[Modes of Operation]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>0</SlotIdx>
<Index>24672</Index>
<SubIndex>0</SubIndex>
<Data>08</Data>
<BitLen>8</BitLen>
</InitCmd>
</InitCmds>
</CoE>
</Mailbox>
<DC>
<ReferenceClock>true</ReferenceClock>
<CycleTime>1000000</CycleTime>
<ShiftTime>100000</ShiftTime>
</DC>
</Slave>
<Slave>
<Info>
<Name><![CDATA[IS620N]]></Name>
<DeviceType>131474</DeviceType>
<VendorId>1048576</VendorId>
<ProductCode>786696</ProductCode>
<RevisionNo>65537</RevisionNo>
<ToltalVirSlot>1</ToltalVirSlot>
<OpMode>0</OpMode>
</Info>
<ProcessData>
<Sm2>
<Type>Outputs</Type>
<Enable>1</Enable>
<Pdo>5632</Pdo>
</Sm2>
<Sm3>
<Type>Inputs</Type>
<Enable>1</Enable>
<Pdo>6656</Pdo>
</Sm3>
<TxPdo Sm="3">
<SlotIdx>0</SlotIdx>
<Index>#x1A00</Index>
<Name>1st transmit PDO Mapping</Name>
<Entry>
<DevType>0</DevType>
<Index Selected="0">#x603F</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>ErrorCode</Name>
<DataType>UINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index Selected="0">#x6041</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>Statusword</Name>
<DataType>UINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index Selected="0">#x6064</Index>
<SubIndex>0</SubIndex>
<BitLen>32</BitLen>
<Name>Position actual value</Name>
<DataType>DINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index Selected="0">#x60FD</Index>
<SubIndex>0</SubIndex>
<BitLen>32</BitLen>
<Name>Digital inputs</Name>
<DataType>UDINT</DataType>
</Entry>
</TxPdo>
<RxPdo Sm="2">
<SlotIdx>0</SlotIdx>
<Index>#x1600</Index>
<Name>1st receive PDO Mapping</Name>
<Entry>
<DevType>0</DevType>
<Index Selected="0">#x6040</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>Controlword</Name>
<DataType>UINT</DataType>
</Entry>
<Entry>
<DevType>0</DevType>
<Index Selected="0">#x607A</Index>
<SubIndex>0</SubIndex>
<BitLen>32</BitLen>
<Name>Target position</Name>
<DataType>DINT</DataType>
</Entry>
</RxPdo>
</ProcessData>
<Mailbox>
<CoE>
<InitCmds>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[SM output parameter]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>0</SlotIdx>
<Index>7218</Index>
<SubIndex>1</SubIndex>
<Data>0200</Data>
<BitLen>16</BitLen>
</InitCmd>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[SM input parameter]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>0</SlotIdx>
<Index>7219</Index>
<SubIndex>1</SubIndex>
<Data>0200</Data>
<BitLen>16</BitLen>
</InitCmd>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[Controlword]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>0</SlotIdx>
<Index>24640</Index>
<SubIndex>0</SubIndex>
<Data>1000</Data>
<BitLen>16</BitLen>
</InitCmd>
<InitCmd Fixed="true">
<Transition>PS</Transition>
<Comment><![CDATA[Modes of Operation]]></Comment>
<Timeout>0</Timeout>
<SlotIdx>0</SlotIdx>
<Index>24672</Index>
<SubIndex>0</SubIndex>
<Data>08</Data>
<BitLen>8</BitLen>
</InitCmd>
</InitCmds>
</CoE>
</Mailbox>
<DC>
<ReferenceClock>true</ReferenceClock>
<CycleTime>1000000</CycleTime>
<ShiftTime>100000</ShiftTime>
</DC>
</Slave>
</Config>
</EtherCATConfig>
\ No newline at end of file \ No newline at end of file
...@@ -114,9 +114,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -114,9 +114,9 @@ namespace OnlineStore.DeviceLibrary
//判断是否不连接服务器 //判断是否不连接服务器
if (string.IsNullOrEmpty(serverAddr)) if (string.IsNullOrEmpty(serverAddr))
{ {
LogUtil.error(deviceName + "GetPosId[" + codeStr + "][" + height + "][" + width + "]:未找到服务器地址 "); LogUtil.error(deviceName + "GetPosId[" + codeStr + "][" + width + "][" + height + "]:未找到服务器地址 ");
result.Msg = "未找到服务器地址"; result.Msg = "未找到服务器地址";
result.Param = InOutPosInfo.NewNgPos(codeStr, "", height, width, ""); result.Param = InOutPosInfo.NewNgPos(codeStr, "", width, height, "未找到服务器地址");
return result; return result;
} }
...@@ -147,7 +147,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -147,7 +147,7 @@ namespace OnlineStore.DeviceLibrary
{ {
result.Msg = deviceName + " 【" + codeStr + "】结果:没有收到服务器反馈 "; result.Msg = deviceName + " 【" + codeStr + "】结果:没有收到服务器反馈 ";
//cancelPutInTask(deviceName, codeStr); //cancelPutInTask(deviceName, codeStr);
result.Param = InOutPosInfo.NewNgPos(codeStr, "", height, width, "没有收到服务器反馈"); result.Param = InOutPosInfo.NewNgPos(codeStr, "", width, height, "没有收到服务器反馈");
result.Param.rfid = rfid; result.Param.rfid = rfid;
result.Param.IsNG = true; result.Param.IsNG = true;
return result; return result;
...@@ -167,7 +167,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -167,7 +167,7 @@ namespace OnlineStore.DeviceLibrary
LogUtil.error(deviceName + " 【" + codeStr + "】结果入库NG:已有出库信息: " + result.Param.ToStr() + " "); LogUtil.error(deviceName + " 【" + codeStr + "】结果入库NG:已有出库信息: " + result.Param.ToStr() + " ");
result.Msg = "已有出库信息["+ serverResult.barcode + "][" + serverResult.pos + "] "; result.Msg = "已有出库信息["+ serverResult.barcode + "][" + serverResult.pos + "] ";
result.Param = InOutPosInfo.NewNgPos(codeStr, "", height, width, "已有出库信息[" + serverResult.barcode + "][" + serverResult.pos + "]"); result.Param = InOutPosInfo.NewNgPos(codeStr, "", width, height, "已有出库信息[" + serverResult.barcode + "][" + serverResult.pos + "]");
result.Param.rfid = rfid; result.Param.rfid = rfid;
result.Param.IsNG = true; result.Param.IsNG = true;
return result; return result;
...@@ -177,7 +177,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -177,7 +177,7 @@ namespace OnlineStore.DeviceLibrary
result.Result = serverResult.result; result.Result = serverResult.result;
//result.Msg = deviceName + " 【" + codeStr + "】结果:" + serverResult.msg; //result.Msg = deviceName + " 【" + codeStr + "】结果:" + serverResult.msg;
result.Msg = "查找空库位失败"; result.Msg = "查找空库位失败";
result.Param = InOutPosInfo.NewNgPos(codeStr, "", height, width, serverResult.msg); result.Param = InOutPosInfo.NewNgPos(codeStr, "", width, height, serverResult.msg);
return result; return result;
} }
else if (serverResult.result.Equals(0)) else if (serverResult.result.Equals(0))
...@@ -185,8 +185,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -185,8 +185,9 @@ namespace OnlineStore.DeviceLibrary
result.Result = serverResult.result; result.Result = serverResult.result;
//result.Msg = deviceName + " 【" + codeStr + "】结果:" + serverResult.msg; //result.Msg = deviceName + " 【" + codeStr + "】结果:" + serverResult.msg;
result.Msg = serverResult.msg; result.Msg = serverResult.msg;
result.Param = new InOutPosInfo(codeStr,serverResult.pos,width,height); result.Param = new InOutPosInfo(serverResult.barcode, serverResult.pos,width,height);
result.Param.Cid = serverResult.cid; result.Param.Cid = serverResult.cid;
result.Param.taskId = serverResult.taskId;
return result; return result;
} }
else if(serverResult.result.Equals(99).Equals(false)&& serverResult.result.Equals(100).Equals(false)) else if(serverResult.result.Equals(99).Equals(false)&& serverResult.result.Equals(100).Equals(false))
...@@ -194,7 +195,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -194,7 +195,7 @@ namespace OnlineStore.DeviceLibrary
result.Result = serverResult.result; result.Result = serverResult.result;
//result.Msg = deviceName + " 【" + codeStr + "】结果:" + serverResult.msg; //result.Msg = deviceName + " 【" + codeStr + "】结果:" + serverResult.msg;
result.Msg = serverResult.msg; result.Msg = serverResult.msg;
result.Param = InOutPosInfo.NewNgPos(codeStr, "", height, width, serverResult.msg); result.Param = InOutPosInfo.NewNgPos(codeStr, "", width, height, serverResult.msg);
return result; return result;
} }
result.Result = serverResult.result; result.Result = serverResult.result;
...@@ -224,7 +225,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -224,7 +225,6 @@ namespace OnlineStore.DeviceLibrary
// 返回: {"code":0,"data":{"type":"2","posId":"004-07-200","plateH":"1","barcode":"RI12313","cid":"4","plateW":"1"}, // 返回: {"code":0,"data":{"type":"2","posId":"004-07-200","plateH":"1","barcode":"RI12313","cid":"4","plateW":"1"},
// "msg":"ok","msgKey":"smfcore.ok","okResult":true,"params":[]} // "msg":"ok","msgKey":"smfcore.ok","okResult":true,"params":[]}
serverResult = JsonHelper.DeserializeJsonToObject<TaskData>(resultStr); serverResult = JsonHelper.DeserializeJsonToObject<TaskData>(resultStr);
RobotTaskInfo = $"【{server}】【{resultStr}】";
if (serverResult == null) if (serverResult == null)
{ {
msg = "GetRobotTask 没有收到服务器反馈"; msg = "GetRobotTask 没有收到服务器反馈";
...@@ -232,12 +232,13 @@ namespace OnlineStore.DeviceLibrary ...@@ -232,12 +232,13 @@ namespace OnlineStore.DeviceLibrary
else if (serverResult.code.Equals(0).Equals(false)) else if (serverResult.code.Equals(0).Equals(false))
{ {
// code: 0为正常,其他为异常, msg: 消息, data: 为空 // code: 0为正常,其他为异常, msg: 消息, data: 为空
msg = "GetRobotTask" + " :" + "[" + serverResult.code + "]" + serverResult.msg; msg = $"【{server}】【{resultStr}】";
} }
if (!msg.Equals("")) if (!msg.Equals("") && !msg.Equals(RobotTaskInfo))
{ {
LogUtil.error(msg); LogUtil.error(msg);
} }
RobotTaskInfo = $"【{server}】【{resultStr}】";
} }
catch (Exception ex) catch (Exception ex)
{ {
...@@ -254,7 +255,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -254,7 +255,7 @@ namespace OnlineStore.DeviceLibrary
/// <param name="status">任务状态</param> /// <param name="status">任务状态</param>
/// <param name="locInfo">位置信息</param> /// <param name="locInfo">位置信息</param>
/// <returns></returns> /// <returns></returns>
public static string UpdateTrayLoc( string barcode, string status, string locInfo="") public static string UpdateTrayLoc( string barcode, string status, string locInfo,string taskId)
{ {
string msg = ""; string msg = "";
try try
...@@ -273,6 +274,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -273,6 +274,7 @@ namespace OnlineStore.DeviceLibrary
paramMap.Add("barcode", barcode);//barcode = 料盘的条码 paramMap.Add("barcode", barcode);//barcode = 料盘的条码
paramMap.Add("status", status); // status = 状态信息, 移栽 = MOVING, 流水线 = INLINE, 皮带线 = INBELT paramMap.Add("status", status); // status = 状态信息, 移栽 = MOVING, 流水线 = INLINE, 皮带线 = INBELT
paramMap.Add("locInfo", locInfo); // locInfo = 位置信息,移栽时为移栽编号,流水线时为托盘号,皮带线时为皮带线编号,机器人时为机器人编号 paramMap.Add("locInfo", locInfo); // locInfo = 位置信息,移栽时为移栽编号,流水线时为托盘号,皮带线时为皮带线编号,机器人时为机器人编号
paramMap.Add("taskId", taskId);
string server = GetAddr(Addr_updateLocInfo, paramMap); string server = GetAddr(Addr_updateLocInfo, paramMap);
DateTime startTime = DateTime.Now; DateTime startTime = DateTime.Now;
string resultStr = HttpHelper.Post(server, ""); string resultStr = HttpHelper.Post(server, "");
...@@ -300,7 +302,45 @@ namespace OnlineStore.DeviceLibrary ...@@ -300,7 +302,45 @@ namespace OnlineStore.DeviceLibrary
return msg; return msg;
} }
private static string Addr_getBoxDoorStatus = "/service/store/robotBox/getBoxDoorStatus";
public static string BoxDoorStatus = "";
public static bool GetBoxDoorStatus(string cid)
{
string msg = "";
TaskData serverResult = null;
try
{
Dictionary<string, string> paramMap = new Dictionary<string, string>();
paramMap.Add("cid", cid);
string server = GetAddr(Addr_getBoxDoorStatus, paramMap);
DateTime startTime = DateTime.Now;
string resultStr = HttpHelper.Post(server, "");
// 返回: {"code":0,"data":{"type":"2","posId":"004-07-200","plateH":"1","barcode":"RI12313","cid":"4","plateW":"1"},
// "msg":"ok","msgKey":"smfcore.ok","okResult":true,"params":[]}
serverResult = JsonHelper.DeserializeJsonToObject<TaskData>(resultStr);
if (serverResult == null)
{
msg = "GetBoxDoorStatus 没有收到服务器反馈";
}
else if (serverResult.code.Equals(0).Equals(false))
{
// code: 0为正常,其他为异常, msg: 消息, data: 为空
msg = $"【{server}】【{resultStr}】";
}
if (!msg.Equals("") && !msg.Equals(BoxDoorStatus))
{
LogUtil.error(msg);
}
BoxDoorStatus = $"【{server}】【{resultStr}】";
if (serverResult != null && serverResult.code.Equals(0))
return true;
}
catch (Exception ex)
{
LogUtil.error("GetBoxDoorStatus", ex);
}
return false;
}
//14.异常看板 //14.异常看板
// > 地址: // > 地址:
...@@ -429,7 +469,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -429,7 +469,8 @@ namespace OnlineStore.DeviceLibrary
public string msg { get; set; } public string msg { get; set; }
public string msgKey { get; set; } public string msgKey { get; set; }
public bool okResult { get; set; } public bool okResult { get; set; }
} public string taskId{ get; set; }
}
public class CancelData public class CancelData
{ {
//{"code":0,"msg":"ok","data":"7"} //{"code":0,"msg":"ok","data":"7"}
......
using log4net; using log4net;
using OnlineStore.Common; using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary; using OnlineStore.LoadCSVLibrary;
using System; using System;
...@@ -222,6 +222,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -222,6 +222,10 @@ namespace OnlineStore.DeviceLibrary
public abstract bool StartOutstore(InOutParam param); public abstract bool StartOutstore(InOutParam param);
protected abstract void OutstoreProcess(); protected abstract void OutstoreProcess();
public void ClearWarnMsg()
{
WarnMsg = "";
}
public void SetWarnMsg(string msg = "") public void SetWarnMsg(string msg = "")
{ {
if (String.IsNullOrEmpty(msg).Equals(false)) if (String.IsNullOrEmpty(msg).Equals(false))
...@@ -248,10 +252,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -248,10 +252,10 @@ namespace OnlineStore.DeviceLibrary
{ {
LogUtil.error(Name + msg); LogUtil.error(Name + msg);
} }
} }
WarnMsg = msg; WarnMsg = msg;
} }
public string GetRunStr( ) public string GetRunStr()
{ {
string sta = "运行中"; string sta = "运行中";
string aa = ""; string aa = "";
...@@ -273,16 +277,17 @@ namespace OnlineStore.DeviceLibrary ...@@ -273,16 +277,17 @@ namespace OnlineStore.DeviceLibrary
sta = "等待启动"; sta = "等待启动";
break; break;
} }
if (isInSuddenDown) if (isInSuddenDown)
{ {
aa = "急停中"; aa = "急停中";
}else if (isNoAirpressure_Check) }
{ else if (isNoAirpressure_Check)
aa = "无气压信号"; {
} aa = "无气压信号";
}
if (!aa.Equals("")) if (!aa.Equals(""))
{ {
return sta + "_" + aa; return sta + "_" + aa;
...@@ -318,29 +323,30 @@ namespace OnlineStore.DeviceLibrary ...@@ -318,29 +323,30 @@ namespace OnlineStore.DeviceLibrary
} }
public bool CylinderIsOk(string IoLowType, string IoHighType) public bool CylinderIsOk(string IoLowType, string IoHighType)
{ {
if (IOManager.DIValue(IoLowType,DeviceID).Equals(IO_VALUE.LOW) && IOManager.DIValue(IoHighType, DeviceID).Equals(IO_VALUE.HIGH)){ if (IOManager.DIValue(IoLowType, DeviceID).Equals(IO_VALUE.LOW) && IOManager.DIValue(IoHighType, DeviceID).Equals(IO_VALUE.HIGH))
{
return true; return true;
} }
return false; return false;
} }
public void CylinderMove(DeviceMoveInfo moveInfo, string IoLowType, string IoHighType, bool isCheckMove = false) public void CylinderMove(DeviceMoveInfo moveInfo, string IoLowType, string IoHighType, bool isCheckMove = false)
{ {
try try
{ {
if (!baseConfig.DOList.ContainsKey(IoLowType)) if (!baseConfig.DOList.ContainsKey(IoLowType))
{ {
return; return;
} }
if (!baseConfig.DOList.ContainsKey(IoHighType)) if (!baseConfig.DOList.ContainsKey(IoHighType))
{ {
return; return;
} }
if (moveInfo != null) if (moveInfo != null)
{ {
moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IoLowType, IO_VALUE.LOW)); moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IoLowType, IO_VALUE.LOW));
moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IoHighType, IO_VALUE.HIGH)); moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IoHighType, IO_VALUE.HIGH));
} }
if (isCheckMove) if (isCheckMove)
{ {
...@@ -352,11 +358,12 @@ namespace OnlineStore.DeviceLibrary ...@@ -352,11 +358,12 @@ namespace OnlineStore.DeviceLibrary
IOMove(IoLowType, IO_VALUE.LOW); IOMove(IoLowType, IO_VALUE.LOW);
IOMove(IoHighType, IO_VALUE.HIGH); IOMove(IoHighType, IO_VALUE.HIGH);
} }
}catch(Exception ex) }
catch (Exception ex)
{ {
LogUtil.error(Name + "CylinderMove ["+moveInfo.Name+"] ["+IoLowType+"] ["+IoHighType+"] ["+isCheckMove+"] 出错:"+ex.ToString()); LogUtil.error(Name + "CylinderMove [" + moveInfo.Name + "] [" + IoLowType + "] [" + IoHighType + "] [" + isCheckMove + "] 出错:" + ex.ToString());
} }
} }
public void CheckAndMove(string IoType, IO_VALUE value) public void CheckAndMove(string IoType, IO_VALUE value)
{ {
...@@ -378,7 +385,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -378,7 +385,7 @@ namespace OnlineStore.DeviceLibrary
IOManager.IOMove(IoType, value, baseConfig.Id); IOManager.IOMove(IoType, value, baseConfig.Id);
Thread.Sleep(msTime); Thread.Sleep(msTime);
IO_VALUE tValue = value.Equals(IO_VALUE.HIGH) ? IO_VALUE.LOW : IO_VALUE.HIGH; IO_VALUE tValue = value.Equals(IO_VALUE.HIGH) ? IO_VALUE.LOW : IO_VALUE.HIGH;
IOManager.IOMove(IoType, tValue, baseConfig.Id); IOManager.IOMove(IoType, tValue, baseConfig.Id);
}); });
} }
...@@ -400,11 +407,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -400,11 +407,9 @@ namespace OnlineStore.DeviceLibrary
LogUtil.info(Name + logInfo); LogUtil.info(Name + logInfo);
} }
protected void MoveLog(string msg) protected void MoveLog(string msg)
{ {
//string posId = (MoveInfo.MoveParam != null && MoveInfo.MoveParam.PosInfo != null) ? " [" + MoveInfo.MoveParam.PosInfo.PosId + "]" : ""; string posId = (MoveInfo.MoveParam != null && MoveInfo.MoveParam.PosInfo != null) ? " 【" + MoveInfo.MoveParam.PosInfo.PosId + "】【" + MoveInfo.MoveParam.PosInfo.barcode + "】" : "";
string posId = (MoveInfo.MoveParam != null && MoveInfo.MoveParam.PosInfo != null) ? " [" + MoveInfo.MoveParam.PosInfo.PosId + "][" + MoveInfo.MoveParam.PosInfo.barcode + "]" : ""; LogUtil.info(Name + " " + msg + posId);
LogUtil.info(Name + " " + posId + msg);
} }
/// <summary> /// <summary>
/// 阻塞等待IO信号,等到返回true,未等到返回false /// 阻塞等待IO信号,等到返回true,未等到返回false
...@@ -498,4 +503,4 @@ namespace OnlineStore.DeviceLibrary ...@@ -498,4 +503,4 @@ namespace OnlineStore.DeviceLibrary
} }
} }
} }
...@@ -318,10 +318,17 @@ namespace OnlineStore.DeviceLibrary ...@@ -318,10 +318,17 @@ namespace OnlineStore.DeviceLibrary
wait.WaitType = WaitEnum.W102_FeedScanCode; wait.WaitType = WaitEnum.W102_FeedScanCode;
return wait; return wait;
} }
public static WaitResultInfo WaitRobotMove() public static WaitResultInfo WaitRobotMove(string cmd)
{ {
WaitResultInfo wait = new WaitResultInfo(); WaitResultInfo wait = new WaitResultInfo();
wait.WaitType = WaitEnum.W201_RobotMove; wait.WaitType = WaitEnum.W201_RobotMove;
wait.RobotCmd = cmd;
return wait;
}
public static WaitResultInfo WaitRobotInSafe()
{
WaitResultInfo wait = new WaitResultInfo();
wait.WaitType = WaitEnum.W202_RobotInSafe;
return wait; return wait;
} }
public string ToStr() public string ToStr()
...@@ -368,7 +375,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -368,7 +375,11 @@ namespace OnlineStore.DeviceLibrary
} }
else if (WaitType.Equals(WaitEnum.W201_RobotMove)) else if (WaitType.Equals(WaitEnum.W201_RobotMove))
{ {
return "机器人移动"; return $"机器人移动【{RobotCmd}】完成";
}
else if (WaitType.Equals(WaitEnum.W202_RobotInSafe))
{
return "机器人在安全位置";
} }
else else
{ {
...@@ -424,7 +435,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -424,7 +435,7 @@ namespace OnlineStore.DeviceLibrary
/// 高度 /// 高度
/// </summary> /// </summary>
public int HeightValue { get; set; } public int HeightValue { get; set; }
public string RobotCmd { get; set; } = "";
} }
internal class WaitEnum internal class WaitEnum
...@@ -468,6 +479,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -468,6 +479,10 @@ namespace OnlineStore.DeviceLibrary
/// 机器人移动完成 /// 机器人移动完成
/// </summary> /// </summary>
internal static int W201_RobotMove = 201; internal static int W201_RobotMove = 201;
/// <summary>
/// 机器人在安全位置
/// </summary>
internal static int W202_RobotInSafe = 202;
} }
public enum MoveType public enum MoveType
{ {
......
...@@ -84,7 +84,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -84,7 +84,7 @@ namespace OnlineStore.DeviceLibrary
inOut.CreateTime = DateTime.Now; inOut.CreateTime = DateTime.Now;
return inOut; return inOut;
} }
public string Cid { get; set; } public string Cid { get; set; } = "";
/// <summary> /// <summary>
/// 创建时间 /// 创建时间
/// </summary> /// </summary>
...@@ -105,11 +105,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -105,11 +105,11 @@ namespace OnlineStore.DeviceLibrary
/// 料盘高 /// 料盘高
/// </summary> /// </summary>
public int PlateH { get; set; } public int PlateH { get; set; }
public string taskId { get; set; }
/// <summary> /// <summary>
/// urgentReel: true 表示紧急料, /// urgentReel: true 表示紧急料,
/// </summary> /// </summary>
public bool urgentReel { get; set; } public bool urgentReel { get; set; }
/// <summary> /// <summary>
/// cutReel: true 表示分盘料, /// cutReel: true 表示分盘料,
/// </summary> /// </summary>
......
<?xml version="1.0" encoding="utf-8"?><CardConfig id="0"><System><SysPara><emgMode>1</emgMode><emgFilter>19</emgFilter><emgTrigLevelInv>1</emgTrigLevelInv></SysPara></System><Signal><EcatSignal><DiInverse><Groups><GpMax>14</GpMax><Gp id="0"><data>0</data></Gp><Gp id="1"><data>0</data></Gp><Gp id="2"><data>0</data></Gp><Gp id="3"><data>0</data></Gp><Gp id="4"><data>0</data></Gp><Gp id="5"><data>0</data></Gp><Gp id="6"><data>0</data></Gp><Gp id="7"><data>0</data></Gp><Gp id="8"><data>0</data></Gp><Gp id="9"><data>0</data></Gp><Gp id="10"><data>0</data></Gp><Gp id="11"><data>0</data></Gp><Gp id="12"><data>0</data></Gp><Gp id="13"><data>0</data></Gp></Groups></DiInverse><DoInverse><Groups><GpMax>14</GpMax><Gp id="0"><data>0</data></Gp><Gp id="1"><data>0</data></Gp><Gp id="2"><data>0</data></Gp><Gp id="3"><data>0</data></Gp><Gp id="4"><data>0</data></Gp><Gp id="5"><data>0</data></Gp><Gp id="6"><data>0</data></Gp><Gp id="7"><data>0</data></Gp><Gp id="8"><data>0</data></Gp><Gp id="9"><data>0</data></Gp><Gp id="10"><data>0</data></Gp><Gp id="11"><data>0</data></Gp><Gp id="12"><data>0</data></Gp><Gp id="13"><data>0</data></Gp></Groups></DoInverse><PhyAxGrpDirInv><Groups><GpMax>7</GpMax><Gp id="0"><data>0</data></Gp><Gp id="1"><data>0</data></Gp><Gp id="2"><data>0</data></Gp><Gp id="3"><data>0</data></Gp><Gp id="4"><data>0</data></Gp><Gp id="5"><data>0</data></Gp><Gp id="6"><data>0</data></Gp></Groups></PhyAxGrpDirInv></EcatSignal><LocalSignal><DiInverse><data>0</data></DiInverse><DoInverse><data>0</data></DoInverse><SpecialDiInverses><SpecialDiInverse type="0"><data>0</data></SpecialDiInverse><SpecialDiInverse type="1"><data>0</data></SpecialDiInverse><SpecialDiInverse type="2"><data>0</data></SpecialDiInverse><SpecialDiInverse type="3"><data>0</data></SpecialDiInverse><SpecialDiInverse type="4"><data>0</data></SpecialDiInverse><SpecialDiInverse type="5"><data>0</data></SpecialDiInverse><SpecialDiInverse type="6"><data>0</data></SpecialDiInverse></SpecialDiInverses><DiFilterTimes><DiFilterTime id="0">1</DiFilterTime><DiFilterTime id="1">1</DiFilterTime><DiFilterTime id="2">1</DiFilterTime><DiFilterTime id="3">1</DiFilterTime><DiFilterTime id="4">1</DiFilterTime><DiFilterTime id="5">1</DiFilterTime><DiFilterTime id="6">1</DiFilterTime><DiFilterTime id="7">1</DiFilterTime><DiFilterTime id="8">1</DiFilterTime><DiFilterTime id="9">1</DiFilterTime><DiFilterTime id="10">1</DiFilterTime><DiFilterTime id="11">1</DiFilterTime><DiFilterTime id="12">1</DiFilterTime><DiFilterTime id="13">1</DiFilterTime><DiFilterTime id="14">1</DiFilterTime><DiFilterTime id="15">1</DiFilterTime></DiFilterTimes><homeFltTime>0</homeFltTime><limitFltTime>0</limitFltTime><probeFltTime>0</probeFltTime><LocalEncDirs><LocalEncDir id="0">0</LocalEncDir><LocalEncDir id="1">0</LocalEncDir><LocalEncDir id="2">0</LocalEncDir><LocalEncDir id="3">0</LocalEncDir><LocalEncDir id="4">0</LocalEncDir><LocalEncDir id="5">0</LocalEncDir></LocalEncDirs><LocalPulses><LocalPulse id="0"><LocalPulseMode>0</LocalPulseMode><LocalPulseDirInver>0</LocalPulseDirInver></LocalPulse><LocalPulse id="1"><LocalPulseMode>0</LocalPulseMode><LocalPulseDirInver>0</LocalPulseDirInver></LocalPulse><LocalPulse id="2"><LocalPulseMode>0</LocalPulseMode><LocalPulseDirInver>0</LocalPulseDirInver></LocalPulse><LocalPulse id="3"><LocalPulseMode>0</LocalPulseMode><LocalPulseDirInver>0</LocalPulseDirInver></LocalPulse><LocalPulse id="4"><LocalPulseMode>0</LocalPulseMode><LocalPulseDirInver>0</LocalPulseDirInver></LocalPulse><LocalPulse id="5"><LocalPulseMode>0</LocalPulseMode><LocalPulseDirInver>0</LocalPulseDirInver></LocalPulse></LocalPulses></LocalSignal></Signal><Axises><Axis id="0"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>1</axType><outputChn>0</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="1"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>1</axType><outputChn>1</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="2"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>1</axType><outputChn>2</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="3"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>1</axType><outputChn>3</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="4"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>1</axType><outputChn>4</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="5"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>1</axType><outputChn>5</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="6"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>1</axType><outputChn>6</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="7"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>-1</axType><outputChn>0</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="8"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>-1</axType><outputChn>0</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="9"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>-1</axType><outputChn>0</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="10"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>-1</axType><outputChn>0</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="11"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>-1</axType><outputChn>0</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="12"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>-1</axType><outputChn>0</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="13"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>-1</axType><outputChn>0</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="14"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>-1</axType><outputChn>0</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="15"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>-1</axType><outputChn>0</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="16"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>-1</axType><outputChn>0</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="17"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>-1</axType><outputChn>0</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="18"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>-1</axType><outputChn>0</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="19"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>-1</axType><outputChn>0</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="20"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>-1</axType><outputChn>0</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="21"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>-1</axType><outputChn>0</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="22"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>-1</axType><outputChn>0</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="23"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>-1</axType><outputChn>0</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="24"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>-1</axType><outputChn>0</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="25"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>-1</axType><outputChn>0</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="26"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>-1</axType><outputChn>0</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="27"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>-1</axType><outputChn>0</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="28"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>-1</axType><outputChn>0</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="29"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>-1</axType><outputChn>0</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="30"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>-1</axType><outputChn>0</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis><Axis id="31"><MotionPara><bgVel>0</bgVel><maxVel>52428000</maxVel><maxAcc>500000000</maxAcc><maxDec>500000000</maxDec><maxJerk>499999993495552</maxJerk><stopDec>100000000</stopDec><eStopDec>2000000000</eStopDec></MotionPara><BindCfg><axType>-1</axType><outputChn>0</outputChn><loaclEncSrc>0</loaclEncSrc></BindCfg><AttrPara><arrivalBand>1000</arrivalBand><arrivalTime>20</arrivalTime><errorLmt>1048576</errorLmt><softPosLimitPos>2147483647</softPosLimitPos><softNegLimitPos>-2147483647</softNegLimitPos></AttrPara><SafePara><alarmEn>1</alarmEn><softLmtEn>0</softLmtEn><hwLmtEn>1</hwLmtEn><errorLmtEn>0</errorLmtEn></SafePara></Axis></Axises></CardConfig>
\ No newline at end of file \ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<CardConfig id="0">
<System>
<SysPara>
<emgMode>1</emgMode>
<emgFilter>19</emgFilter>
<emgTrigLevelInv>1</emgTrigLevelInv>
</SysPara>
</System>
<Signal>
<EcatSignal>
<DiInverse>
<Groups>
<GpMax>14</GpMax>
<Gp id="0">
<data>0</data>
</Gp>
<Gp id="1">
<data>0</data>
</Gp>
<Gp id="2">
<data>0</data>
</Gp>
<Gp id="3">
<data>0</data>
</Gp>
<Gp id="4">
<data>0</data>
</Gp>
<Gp id="5">
<data>0</data>
</Gp>
<Gp id="6">
<data>0</data>
</Gp>
<Gp id="7">
<data>0</data>
</Gp>
<Gp id="8">
<data>0</data>
</Gp>
<Gp id="9">
<data>0</data>
</Gp>
<Gp id="10">
<data>0</data>
</Gp>
<Gp id="11">
<data>0</data>
</Gp>
<Gp id="12">
<data>0</data>
</Gp>
<Gp id="13">
<data>0</data>
</Gp>
</Groups>
</DiInverse>
<DoInverse>
<Groups>
<GpMax>14</GpMax>
<Gp id="0">
<data>0</data>
</Gp>
<Gp id="1">
<data>0</data>
</Gp>
<Gp id="2">
<data>0</data>
</Gp>
<Gp id="3">
<data>0</data>
</Gp>
<Gp id="4">
<data>0</data>
</Gp>
<Gp id="5">
<data>0</data>
</Gp>
<Gp id="6">
<data>0</data>
</Gp>
<Gp id="7">
<data>0</data>
</Gp>
<Gp id="8">
<data>0</data>
</Gp>
<Gp id="9">
<data>0</data>
</Gp>
<Gp id="10">
<data>0</data>
</Gp>
<Gp id="11">
<data>0</data>
</Gp>
<Gp id="12">
<data>0</data>
</Gp>
<Gp id="13">
<data>0</data>
</Gp>
</Groups>
</DoInverse>
<PhyAxGrpDirInv>
<Groups>
<GpMax>7</GpMax>
<Gp id="0">
<data>0</data>
</Gp>
<Gp id="1">
<data>0</data>
</Gp>
<Gp id="2">
<data>0</data>
</Gp>
<Gp id="3">
<data>0</data>
</Gp>
<Gp id="4">
<data>0</data>
</Gp>
<Gp id="5">
<data>0</data>
</Gp>
<Gp id="6">
<data>0</data>
</Gp>
</Groups>
</PhyAxGrpDirInv>
</EcatSignal>
<LocalSignal>
<DiInverse>
<data>0</data>
</DiInverse>
<DoInverse>
<data>0</data>
</DoInverse>
<SpecialDiInverses>
<SpecialDiInverse type="0">
<data>0</data>
</SpecialDiInverse>
<SpecialDiInverse type="1">
<data>0</data>
</SpecialDiInverse>
<SpecialDiInverse type="2">
<data>0</data>
</SpecialDiInverse>
<SpecialDiInverse type="3">
<data>0</data>
</SpecialDiInverse>
<SpecialDiInverse type="4">
<data>0</data>
</SpecialDiInverse>
<SpecialDiInverse type="5">
<data>0</data>
</SpecialDiInverse>
<SpecialDiInverse type="6">
<data>0</data>
</SpecialDiInverse>
</SpecialDiInverses>
<DiFilterTimes>
<DiFilterTime id="0">1</DiFilterTime>
<DiFilterTime id="1">1</DiFilterTime>
<DiFilterTime id="2">1</DiFilterTime>
<DiFilterTime id="3">1</DiFilterTime>
<DiFilterTime id="4">1</DiFilterTime>
<DiFilterTime id="5">1</DiFilterTime>
<DiFilterTime id="6">1</DiFilterTime>
<DiFilterTime id="7">1</DiFilterTime>
<DiFilterTime id="8">1</DiFilterTime>
<DiFilterTime id="9">1</DiFilterTime>
<DiFilterTime id="10">1</DiFilterTime>
<DiFilterTime id="11">1</DiFilterTime>
<DiFilterTime id="12">1</DiFilterTime>
<DiFilterTime id="13">1</DiFilterTime>
<DiFilterTime id="14">1</DiFilterTime>
<DiFilterTime id="15">1</DiFilterTime>
</DiFilterTimes>
<homeFltTime>0</homeFltTime>
<limitFltTime>0</limitFltTime>
<probeFltTime>0</probeFltTime>
<LocalEncDirs>
<LocalEncDir id="0">0</LocalEncDir>
<LocalEncDir id="1">0</LocalEncDir>
<LocalEncDir id="2">0</LocalEncDir>
<LocalEncDir id="3">0</LocalEncDir>
<LocalEncDir id="4">0</LocalEncDir>
<LocalEncDir id="5">0</LocalEncDir>
</LocalEncDirs>
<LocalPulses>
<LocalPulse id="0">
<LocalPulseMode>0</LocalPulseMode>
<LocalPulseDirInver>0</LocalPulseDirInver>
</LocalPulse>
<LocalPulse id="1">
<LocalPulseMode>0</LocalPulseMode>
<LocalPulseDirInver>0</LocalPulseDirInver>
</LocalPulse>
<LocalPulse id="2">
<LocalPulseMode>0</LocalPulseMode>
<LocalPulseDirInver>0</LocalPulseDirInver>
</LocalPulse>
<LocalPulse id="3">
<LocalPulseMode>0</LocalPulseMode>
<LocalPulseDirInver>0</LocalPulseDirInver>
</LocalPulse>
<LocalPulse id="4">
<LocalPulseMode>0</LocalPulseMode>
<LocalPulseDirInver>0</LocalPulseDirInver>
</LocalPulse>
<LocalPulse id="5">
<LocalPulseMode>0</LocalPulseMode>
<LocalPulseDirInver>0</LocalPulseDirInver>
</LocalPulse>
</LocalPulses>
</LocalSignal>
</Signal>
<Axises>
<Axis id="0">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>1</axType>
<outputChn>0</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="1">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>1</axType>
<outputChn>1</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="2">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>1</axType>
<outputChn>2</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="3">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>1</axType>
<outputChn>3</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="4">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>1</axType>
<outputChn>4</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="5">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>1</axType>
<outputChn>5</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="6">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>1</axType>
<outputChn>6</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="7">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>-1</axType>
<outputChn>0</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="8">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>-1</axType>
<outputChn>0</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="9">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>-1</axType>
<outputChn>0</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="10">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>-1</axType>
<outputChn>0</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="11">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>-1</axType>
<outputChn>0</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="12">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>-1</axType>
<outputChn>0</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="13">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>-1</axType>
<outputChn>0</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="14">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>-1</axType>
<outputChn>0</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="15">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>-1</axType>
<outputChn>0</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="16">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>-1</axType>
<outputChn>0</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="17">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>-1</axType>
<outputChn>0</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="18">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>-1</axType>
<outputChn>0</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="19">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>-1</axType>
<outputChn>0</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="20">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>-1</axType>
<outputChn>0</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="21">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>-1</axType>
<outputChn>0</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="22">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>-1</axType>
<outputChn>0</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="23">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>-1</axType>
<outputChn>0</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="24">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>-1</axType>
<outputChn>0</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="25">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>-1</axType>
<outputChn>0</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="26">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>-1</axType>
<outputChn>0</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="27">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>-1</axType>
<outputChn>0</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="28">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>-1</axType>
<outputChn>0</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="29">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>-1</axType>
<outputChn>0</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="30">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>-1</axType>
<outputChn>0</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
<Axis id="31">
<MotionPara>
<bgVel>0</bgVel>
<maxVel>52428000</maxVel>
<maxAcc>500000000</maxAcc>
<maxDec>500000000</maxDec>
<maxJerk>499999993495552</maxJerk>
<stopDec>100000000</stopDec>
<eStopDec>2000000000</eStopDec>
</MotionPara>
<BindCfg>
<axType>-1</axType>
<outputChn>0</outputChn>
<loaclEncSrc>0</loaclEncSrc>
</BindCfg>
<AttrPara>
<arrivalBand>1000</arrivalBand>
<arrivalTime>20</arrivalTime>
<errorLmt>1048576</errorLmt>
<softPosLimitPos>2147483647</softPosLimitPos>
<softNegLimitPos>-2147483647</softNegLimitPos>
</AttrPara>
<SafePara>
<alarmEn>1</alarmEn>
<softLmtEn>0</softLmtEn>
<hwLmtEn>1</hwLmtEn>
<errorLmtEn>0</errorLmtEn>
</SafePara>
</Axis>
</Axises>
</CardConfig>
\ No newline at end of file \ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{B702AB04-BB76-491F-812A-603298D08FBF}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>JAKA</RootNamespace>
<AssemblyName>JAKA</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="log4net, Version=2.0.14.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
<HintPath>..\packages\log4net.2.0.14\lib\net45\log4net.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Web" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="JAKABean-Functions.cs" />
<Compile Include="JAKAServer.cs" />
<Compile Include="RtnCode.cs" />
<Compile Include="jakaAPI.cs" />
<Compile Include="JAKABean.cs" />
<Compile Include="JAKATYPE.cs" />
<Compile Include="RobotData.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="UCJoint.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UCJoint.Designer.cs">
<DependentUpon>UCJoint.cs</DependentUpon>
</Compile>
<Compile Include="UCRobot.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UCRobot.Designer.cs">
<DependentUpon>UCRobot.cs</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="UCJoint.resx">
<DependentUpon>UCJoint.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UCRobot.resx">
<DependentUpon>UCRobot.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="jaka_files\JAKA_ERROR_CODE.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Content Include="jaka_files\x64\jakaAPI.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="jaka_files\x64\zlib.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="jaka_files\x86\jakaAPI.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="jaka_files\x86\zlib.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\..\..\Projects\CSharp-Workspace\Dolen\Dolen\Dolen.csproj">
<Project>{1D8684A2-5358-4F9C-9B42-9794F8F4B6B6}</Project>
<Name>Dolen</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
\ No newline at end of file \ No newline at end of file
using System.Text;
using System.Windows.Forms;
namespace JAKA
{
public partial class JAKABean
{
/// <summary>
/// 创建机器人控制句柄
/// </summary>
/// <param name="ip"></param>
/// <returns></returns>
bool CreateHandler(string ip)
{
int rtn = jakaAPI.create_handler(ip.ToCharArray(),ref _handle);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"CreateHandler OK");
//SetErrorHandler();
SetErrorCodeFilePath(Application.StartupPath+ @"\jaka_files\JAKA_ERROR_CODE.csv");
return true;
}
else
{
ErrorLog($"CreateHandler Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 注册机器人出错时的回调函数
/// </summary>
/// <returns></returns>
bool SetErrorHandler()
{
int rtn = jakaAPI.set_error_handler(ref _handle, user_error_handle);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"SetErrorHandler OK");
return true;
}
else
{
ErrorLog($"SetErrorHandler Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 销毁机器人控制句柄
/// </summary>
/// <returns></returns>
bool DestroyHandler()
{
int rtn = jakaAPI.destory_handler(ref _handle);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"DestroyHandler OK");
return true;
}
else
{
ErrorLog($"DestroyHandler Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 机器人上电
/// </summary>
public bool PowerOn()
{
int rtn = jakaAPI.power_on(ref _handle);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"PowerOn OK");
return true;
}
else
{
ErrorLog($"PowerOn Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 机器人下电
/// </summary>
public bool PowerOff()
{
int rtn = jakaAPI.power_off(ref _handle);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"PowerOff OK");
return true;
}
else
{
ErrorLog($"PowerOff Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 机器人关机
/// </summary>
public bool ShutDown()
{
int rtn = jakaAPI.shut_down(ref _handle);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"ShutDown OK");
return true;
}
else
{
ErrorLog($"ShutDown Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 机器人上使能
/// </summary>
public bool EnableRobot()
{
int rtn = jakaAPI.enable_robot(ref _handle);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"EnableRobot OK");
return true;
}
else
{
ErrorLog($"EnableRobot Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 机器人下使能
/// </summary>
public bool DisableRobot()
{
int rtn = jakaAPI.disable_robot(ref _handle);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"DisableRobot OK");
return true;
}
else
{
ErrorLog($"DisableRobot Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 机器人手动模式下运动
/// </summary>
/// <param name="aj_num">关节空间下代表关节号[0-5],笛卡尔下依次为轴 x,y,z,rx,ry,rz</param>
/// <param name="move_mode">机器人运动模式,增量运动或者绝对运动(即持续 jog 运动)</param>
/// <param name="coordType">机器人运动坐标系,工具坐标系,基坐标系(当前的世界/用户坐标系)或关节空间</param>
/// <param name="vel_cmd">指令速度,旋转轴或关节运动单位为 rad/s,移动轴单位为 mm/</param>
/// <param name="pos_cmd">指令位置,旋转轴或关节运动单位为 rad,移动轴单位为 m</param>
/// <returns></returns>
bool Jog(int aj_num,JKTYPE.MoveMode move_mode,JKTYPE.CoordType coordType,double vel_cmd,double pos_cmd)
{
int rtn = jakaAPI.jog(ref _handle,aj_num,move_mode,coordType,vel_cmd,pos_cmd);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"Jog OK");
return true;
}
else
{
ErrorLog($"Jog Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 机器人手动模式下运动停止
/// </summary>
/// <param name="num">机械臂轴号 0-5,num为-1时,停止所有轴 </param>
/// <returns></returns>
public bool JogStop(int num=-1)
{
int rtn = jakaAPI.jog_stop(ref _handle,ref num);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"JogStop OK");
return true;
}
else
{
ErrorLog($"JogStop Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 机器人关节运动
/// </summary>
/// <param name="jointPos">机器人关节运动目标位置</param>
/// <param name="moveMode">指定运动模式:增量运动或绝对运动</param>
/// <param name="isBlock">设置接口是否为阻塞接口,TRUE 为阻塞接口 FALSE 为非阻塞接口</param>
/// <param name="speed">机器人关节运动速度,单位:rad/s</param>
/// <returns></returns>
bool JointMove(JKTYPE.JointValue jointPos,JKTYPE.MoveMode moveMode,bool isBlock,double speed)
{
int rtn = jakaAPI.joint_move(ref _handle,ref jointPos,moveMode,isBlock,speed);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"JointMove OK");
return true;
}
else
{
ErrorLog($"JointMove Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 机器人末端直线运动
/// </summary>
/// <param name="endPos">机器人末端运动目标位置</param>
/// <param name="moveMode">指定运动模式:增量运动或绝对运动</param>
/// <param name="isBlock">设置接口是否为阻塞接口,TRUE 为阻塞接口 FALSE 为非阻塞接口</param>
/// <param name="speed">机器人直线运动速度,单位:mm/s</param>
/// <returns></returns>
bool LinaerMove(JKTYPE.CartesianPose endPos, JKTYPE.MoveMode moveMode, bool isBlock, double speed)
{
int rtn = jakaAPI.linear_move(ref _handle, ref endPos, moveMode, isBlock, speed);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"LinaerMove OK");
return true;
}
else
{
ErrorLog($"LinaerMove Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 机器人伺服位置控制模式使能
/// </summary>
/// <param name="enable">TRUE 为进入伺服位置控制模式,FALSE 表示退出该模式</param>
/// <returns></returns>
public bool ServoMoveEnable(bool enable)
{
int rtn = jakaAPI.servo_move_enable(ref _handle,enable);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"ServoMoveEnable OK");
return true;
}
else
{
ErrorLog($"ServoMoveEnable Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 机器人关节空间伺服模式运动
/// </summary>
/// <param name="jointPos">机器人关节运动目标位置</param>
/// <param name="moveMode">指定运动模式:绝对运动或相对运动</param>
/// <returns></returns>
bool ServoJ(JKTYPE.JointValue jointPos,JKTYPE.MoveMode moveMode)
{
int rtn = jakaAPI.servo_j(ref _handle,ref jointPos,moveMode);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"ServoJ OK");
return true;
}
else
{
ErrorLog($"ServoJ Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 机器人关节空间伺服模式运动扩展
/// </summary>
/// <param name="jointPos">机器人关节运动目标位置</param>
/// <param name="moveMode">指定运动模式:增量运动或绝对运动</param>
/// <param name="stepNum">倍分周期,servo_j 运动周期为 step_num*8ms,其中 step_num>=1</param>
/// <returns></returns>
bool ServoJExtend(JKTYPE.JointValue jointPos, JKTYPE.MoveMode moveMode,int stepNum)
{
int rtn = jakaAPI.servo_j_extend(ref _handle, ref jointPos, moveMode,stepNum);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"ServoJExtend OK");
return true;
}
else
{
ErrorLog($"ServoJExtend Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 机器人笛卡尔空间伺服模式运动
/// </summary>
/// <param name="cartesianPose">机器人笛卡尔空间运动目标位置</param>
/// <param name="moveMode">指定运动模式:ABS 代表绝对运动,INCR 代表相对运动</param>
/// <returns></returns>
bool ServoP(JKTYPE.CartesianPose cartesianPose, JKTYPE.MoveMode moveMode)
{
int rtn = jakaAPI.servo_p(ref _handle, ref cartesianPose, moveMode);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"ServoP OK");
return true;
}
else
{
ErrorLog($"ServoP Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 机器人笛卡尔空间伺服模式运动扩展
/// </summary>
/// <param name="jointPos">机器人笛卡尔空间运动目标位置</param>
/// <param name="moveMode">指定运动模式:增量运动或绝对运动</param>
/// <param name="stepNum">倍分周期,servo_p 运动周期为 step_num*8ms,其中 step_num>=1</param>
/// <returns></returns>
bool ServoPExtend(JKTYPE.CartesianPose cartesianPose, JKTYPE.MoveMode moveMode, int stepNum)
{
int rtn = jakaAPI.servo_p_extend(ref _handle, ref cartesianPose, moveMode, stepNum);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"ServoPExtend OK");
return true;
}
else
{
ErrorLog($"ServoPExtend Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 设置数字输出变量
/// </summary>
/// <param name="iOType"> DO 类型</param>
/// <param name="index">DO 索引(从 0 开始)</param>
/// <param name="value">DO 设置值</param>
/// <returns></returns>
bool SetDigitalOutput(JKTYPE.IOType iOType,int index,bool value)
{
int rtn = jakaAPI.set_digital_output(ref _handle, iOType, index,value);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"SetDigitalOutput [{iOType}][{index}={value}] OK");
return true;
}
else
{
ErrorLog($"SetDigitalOutput [{iOType}][{index}={value}] Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 设置模拟输出变量
/// </summary>
/// <param name="iOType"> DO 类型</param>
/// <param name="index">DO 索引(从 0 开始)</param>
/// <param name="value">DO 设置值</param>
/// <returns></returns>
bool SetAnalogOutput(JKTYPE.IOType iOType, int index, float value)
{
int rtn = jakaAPI.set_analog_output(ref _handle, iOType, index, value);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"SetAnalogOutput [{iOType}][{index}={value}] OK");
return true;
}
else
{
ErrorLog($"SetAnalogOutput [{iOType}][{index}={value}] Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 查询数字输入状态
/// </summary>
/// <param name="iOType"> DI 类型</param>
/// <param name="index">DI 索引(从 0 开始)</param>
/// <param name="value">DI 状态查询结果</param>
/// <returns></returns>
bool GetDigitalInput(JKTYPE.IOType iOType, int index,out bool result)
{
result = false;
int rtn = jakaAPI.get_digital_input(ref _handle, iOType, index,ref result);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"GetDigitalInput [{iOType}][{index}={result}] OK");
return true;
}
else
{
ErrorLog($"GetDigitalInput [{iOType}][{index}={result}] Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 查询数字输出状态
/// </summary>
/// <param name="iOType"> DO 类型</param>
/// <param name="index">DO 索引(从 0 开始)</param>
/// <param name="value">DO 状态查询结果</param>
/// <returns></returns>
bool GetDigitalOutput(JKTYPE.IOType iOType, int index, out bool result)
{
result = false;
int rtn = jakaAPI.get_digital_output(ref _handle, iOType, index, ref result);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"GetDigitalOutput [{iOType}][{index}={result}] OK");
return true;
}
else
{
ErrorLog($"GetDigitalOutput [{iOType}][{index}={result}] Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 运行当前加载的作业程序
/// </summary>
public bool Run()
{
int rtn = jakaAPI.program_run(ref _handle);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"Run OK");
return false;
}
else
{
ErrorLog($"Run Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 暂停当前运行的作业程序
/// </summary>
public bool Pause()
{
int rtn = jakaAPI.program_pause(ref _handle);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"Pause OK");
return false;
}
else
{
ErrorLog($"Pause Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 继续运行当前暂停的作业程序
/// </summary>
public bool Resume()
{
int rtn = jakaAPI.program_resume(ref _handle);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"Resume OK");
return false;
}
else
{
ErrorLog($"Resume Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 终止当前执行的作业程序
/// </summary>
public bool Abort()
{
int rtn = jakaAPI.program_abort(ref _handle);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"Abort OK");
return true;
}
else
{
ErrorLog($"Abort Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 加载指定的作业程序
/// </summary>
/// <param name="file">加载指定的作业程序 (加载轨迹复现数据,轨迹复现数据的加载需要在文件夹名字前加上 track/)</param>
/// <returns></returns>
public bool Load(string file)
{
int rtn = jakaAPI.program_load(ref _handle,file.ToCharArray());
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"Load OK");
return true;
}
else
{
ErrorLog($"Load Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 获取已加载的作业程序的名字
/// </summary>
/// <param name="file">程序文件路径</param>
/// <returns></returns>
public bool GetLoadedProgram(StringBuilder file)
{
int rtn = jakaAPI.get_loaded_program(ref _handle,file);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"GetLoadedProgram OK");
return true;
}
else
{
ErrorLog($"GetLoadedProgram Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 获取机器人作业程序的执行状态
/// </summary>
/// <param name="status">作业程序执行状态查询结果</param>
/// <returns></returns>
public bool GetProgramState(out JKTYPE.ProgramState status)
{
status = new JKTYPE.ProgramState();
int rtn = jakaAPI.get_program_state(ref _handle,ref status);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"GetProgramState OK");
return false;
}
else
{
ErrorLog($"GetProgramState Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 设置机器人运行倍率
/// </summary>
/// <param name="rate"></param>
public bool SetRapidRate(double rate)
{
int rtn = jakaAPI.set_rapidrate(ref _handle, rate);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"SetRapidRate {rate} OK");
return true;
}
else
{
ErrorLog($"SetRapidRate {rate} Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 获取机器人运行倍率
/// </summary>
/// <param name="rate"></param>
public bool GetRapidRate(out double rate)
{
rate = 0;
int rtn = jakaAPI.get_rapidrate(ref _handle,ref rate);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"GetRapidRate OK");
return true;
}
else
{
ErrorLog($"GetRapidRate Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 控制机器人进入或退出拖拽模式
/// </summary>
/// <param name="enable"></param>
/// <returns></returns>
public bool DragModeEnable(bool enable)
{
int rtn = jakaAPI.drag_mode_enable(ref _handle, enable);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"DragModeEnable OK");
return true;
}
else
{
ErrorLog($"DragModeEnable Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 查询机器人是否处于拖拽模式
/// </summary>
/// <returns></returns>
public bool IsInDragMode(out bool inDrag)
{
inDrag = false;
int rtn = jakaAPI.is_in_drag_mode(ref _handle,ref inDrag);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"IsInDragMode OK");
return true;
}
else
{
ErrorLog($"IsInDragMode Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 获取机器人状态:急停,电源,使能
/// </summary>
public bool GetRobotState(out JKTYPE.RobotState robotState)
{
robotState = new JKTYPE.RobotState();
int rtn = jakaAPI.get_robot_state(ref _handle, ref robotState);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"GetRobotState OK");
return true;
}
else
{
ErrorLog($"GetRobotState Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 查询机器人是否处于碰撞保护模式
/// </summary>
/// <returns></returns>
public bool IsInCollision(out bool inCollision)
{
inCollision = false;
int rtn = jakaAPI.is_in_collision(ref _handle, ref inCollision);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"IsInCollision OK");
return true;
}
else
{
ErrorLog($"IsInCollision Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 查询机器人是否超出限位
/// </summary>
/// <returns></returns>
public bool IsOnLimit(out bool onlimit)
{
onlimit = false;
int rtn = jakaAPI.is_on_limit(ref _handle, ref onlimit);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"IsOnLimit OK");
return true;
}
else
{
ErrorLog($"IsOnLimit Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 查询机器人运动是否停止/到位
/// </summary>
/// <returns></returns>
public bool IsInPos(out bool inPos)
{
inPos = false;
int rtn = jakaAPI.is_in_pos(ref _handle, ref inPos);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"IsInPos OK");
return true;
}
else
{
ErrorLog($"IsInPos Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 碰撞之后从碰撞保护模式恢复
/// </summary>
/// <returns></returns>
public bool CollisionRecover()
{
int rtn = jakaAPI.collision_recover(ref _handle);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"CollisionRecover OK");
return true;
}
else
{
ErrorLog($"CollisionRecover Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 设置机器人碰撞等级
/// </summary>
/// <param name="level">碰撞等级,取值范围[0,5] ,
/// 其中 0 为关闭碰撞,1 为碰撞阈值 25N,2 为碰撞阈值 50N,
/// 3为碰撞阈值 75N,4 为碰撞阈值 100N,5 为碰撞阈值 125N</param>
/// <returns></returns>
public bool SetCollisionLevel(int level)
{
int rtn = jakaAPI.set_collision_level(ref _handle,level);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"SetCollisionLevel OK");
return true;
}
else
{
ErrorLog($"SetCollisionLevel Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 获取机器设置的碰撞等级
/// </summary>
/// <param name="level"></param>
/// <returns></returns>
public bool GetCollisionLevel(out int level)
{
level = 0;
int rtn = jakaAPI.get_collision_level(ref _handle,ref level);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"GetCollisionLevel OK");
return true;
}
else
{
ErrorLog($"GetCollisionLevel Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 机器人负载设置
/// </summary>
/// <param name="payload"></param>
/// <returns></returns>
public bool SetPayload(JKTYPE.PayLoad payload)
{
int rtn = jakaAPI.set_payload(ref _handle,ref payload);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"SetPayload OK");
return true;
}
else
{
ErrorLog($"SetPayload Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 获取机器人负载数据
/// </summary>
/// <param name="payload"></param>
/// <returns></returns>
public bool GetPayload(out JKTYPE.PayLoad payload)
{
payload = new JKTYPE.PayLoad();
int rtn = jakaAPI.get_payload(ref _handle, ref payload);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"GetPayload OK");
return true;
}
else
{
ErrorLog($"GetPayload Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 获取SDK版本号
/// </summary>
/// <param name="version"></param>
/// <returns></returns>
public bool GetSDKVersion(StringBuilder version)
{
int rtn = jakaAPI.get_sdk_version(ref _handle,version);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"GetSDKVersion OK");
return true;
}
else
{
ErrorLog($"GetSDKVersion Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 获取机器人状态监测数据
/// </summary>
/// <param name="robotStatus"></param>
/// <returns></returns>
public bool GetRobotStatus(out JKTYPE.RobotStatus robotStatus)
{
robotStatus = new JKTYPE.RobotStatus();
int rtn = jakaAPI.get_robot_status(ref _handle,ref robotStatus);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"GetRobotDtatus OK");
return true;
}
else
{
ErrorLog($"GetRobotDtatus Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 设置 SDK 是否开启调试模式
/// </summary>
/// <param name="mode"></param>
/// <returns></returns>
public bool SetDebugMode(bool mode)
{
int rtn = jakaAPI.set_debug_mode(ref _handle,mode);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"SetDebugMode OK");
return true;
}
else
{
ErrorLog($"SetDebugMode Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 机器人运动终止
/// </summary>
/// <returns></returns>
public bool MotionAbort()
{
int rtn = jakaAPI.motion_abort(ref _handle);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"MotionAbort OK");
return true;
}
else
{
ErrorLog($"MotionAbort Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 设置机器人错误码文件存放路径,
/// 需要使用 get_last_error 接口时需要设置错误码文件路径,如果不使用
///get_last_error 接口,则不需要设置该接口
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
bool SetErrorCodeFilePath(string path)
{
StringBuilder sb = new StringBuilder(path);
int rtn = jakaAPI.set_errorcode_file_path(ref _handle,sb);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"SetErrorCodeFilePath OK");
return true;
}
else
{
ErrorLog($"SetErrorCodeFilePath Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 获取机器人运行过程中最后一个错误码,当调用 clear_error 时,最后一个错误码会清零
/// </summary>
/// <param name="errorCode"></param>
/// <returns></returns>
public bool GetLastError(ref JKTYPE.ErrorCode errorCode)
{
int rtn = jakaAPI.get_last_error(ref _handle,ref errorCode);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"GetLastError OK");
return true;
}
else
{
ErrorLog($"GetLastError Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 清除错误,最后一个错误码会清零
/// </summary>
/// <returns></returns>
public bool ClearError()
{
int rtn = jakaAPI.clear_error(ref _handle);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"ClearError OK");
return true;
}
else
{
ErrorLog($"ClearError Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 设置 SDK 日志路径
/// </summary>
/// <param name="filepath">SDK 日志路径</param>
/// <returns></returns>
public bool SetSDKFilePath(string filepath)
{
char[] chars = filepath.ToCharArray();
int rtn = jakaAPI.set_SDK_filepath(ref _handle, ref chars);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"SetSDKFilePath OK");
return true;
}
else
{
ErrorLog($"SetSDKFilePath Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 设置网络异常,机器人终止运动等待时间
/// </summary>
/// <param name="ms">时间参数,单位毫秒</param>
/// <param name="mnt">网络异常时机器人需要进行的动作类型</param>
/// <returns></returns>
public bool SetNetworkExceptionHandle(float ms,JKTYPE.ProcessType mnt)
{
int rtn = jakaAPI.set_network_exception_handle(ref _handle,ms,mnt);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"SetNetworkExceptionHandle OK");
return true;
}
else
{
ErrorLog($"SetNetworkExceptionHandle Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
/// <summary>
/// 设置机器人状态数据自动更新时间间隔
/// </summary>
/// <param name="ms"> 时间参数,单位毫秒</param>
/// <returns></returns>
public bool SetStatusDataUpdateTimeInterval(float ms)
{
int rtn = jakaAPI.set_status_data_update_time_interval(ref _handle, ms);
if (rtn == RtnCode.ERR_SUCC)
{
DebugLog($"SetStatusDataUpdateTimeInterval OK");
return true;
}
else
{
ErrorLog($"SetStatusDataUpdateTimeInterval Fail:{RtnCode.GetStrByCode(rtn)}");
}
return false;
}
void user_error_handle(int error_code)
{
ErrorLog($"机械臂发生异常,异常码:{error_code}");
}
}
}
using log4net;
using System;
using static JAKA.JKTYPE;
namespace JAKA
{
public partial class JAKABean
{
private static ILog log;
/// <summary>
/// 机器人句柄
/// </summary>
private int _handle = 0;
public string IP { get; private set; }
public string RemoteEndPoint { get; set; } = "";
/// <summary>
/// 机器人数据
/// </summary>
public RobotData RobotData;
bool initok = false;
public JAKABean(string robotIp, string logname = "jaka")
{
IP = robotIp;
log = LogManager.GetLogger(logname);
RobotData = new RobotData();
initok = CreateHandler(robotIp);
}
public void Start()
{
if (initok)
{
updateThread = new System.Threading.Thread(UpdateData);
updateThread.IsBackground = true;
updateThread.Start();
}
}
~JAKABean()
{
DestroyHandler();
}
#region 更新数据信息
System.Threading.Thread updateThread;
public delegate void UpdateEventHandler(RobotData robotData);
event UpdateEventHandler UpdateDataEvent;
/// <summary>
/// 刷新频率
/// </summary>
public int ScanRate = 300;
RobotData robotData = new RobotData();
private void UpdateData()
{
try
{
while (true)
{
JKTYPE.ErrorCode error = new JKTYPE.ErrorCode();
if (GetRobotStatus(out robotData.RobotStatus))//GetRobotState(out RobotData.RobotState) &&
{
if (robotData.RobotStatus.errcode != 0)
{
if (GetLastError(ref error))
{
robotData.Errorinfo = $"运行异常:{string.Join("", error.message)}[{error.code}]";
}
else
{
robotData.Errorinfo = $"运行异常:{robotData.RobotStatus.errcode}";
}
}
else
robotData.Errorinfo = "运行正常";
GetProgramState(out robotData.ProgramState);
if (!RobotData.Equals(robotData))
{
RobotData.RobotStatus = robotData.RobotStatus;
RobotData.Errorinfo = robotData.Errorinfo;
RobotData.ProgramState = robotData.ProgramState;
robotData.Online = RobotData.Online;
robotData.CurCmd = RobotData.CurCmd;
robotData.RecvMsg = RobotData.RecvMsg;
UpdateDataEvent?.Invoke(robotData);
}
}
System.Threading.Thread.Sleep(ScanRate);
}
}
catch (Exception ex)
{
log.Error("UpdateData", ex);
}
}
public void RegisterUpdataEvent(UpdateEventHandler eventHandler)
{
UpdateDataEvent += eventHandler;
}
#endregion
#region 日志打印
private void DebugLog(string txt)
{
log.Debug($"[{IP}][{_handle}] {txt}]");
}
private void ErrorLog(string txt, Exception exception = null)
{
log.Error($"[{IP}][{_handle}] {txt}]", exception);
}
private void InfoLog(string txt)
{
log.Info($"[{IP}][{_handle}] {txt}]");
}
#endregion
}
}
using Dolen.Communication.TCP;
using System;
using System.Collections.Generic;
namespace JAKA
{
public class JAKAServer
{
Dictionary<string, JAKABean> JAKAs;
TCPServer TCPServer;
public JAKAServer(string[] clientips, string serverIp = "0.0.0.0", int port = 5000)
{
JAKAs = new Dictionary<string, JAKABean>();
TCPServer = new TCPServer(serverIp,port);
TCPServer.RecvMsgEvent += TCPServer_RecvMsgEvent;
TCPServer.ClientChangedEvent += TCPServer_ClientChangedEvent;
foreach (string ip in clientips)
{
JAKAs.Add(ip, new JAKABean(ip));
}
}
private void TCPServer_ClientChangedEvent(List<Client> clientKey)
{
foreach (string ip in JAKAs.Keys)
{
Client client = clientKey.Find(s => s.IP.Equals(ip));
if (client!=null)
{
JAKAs[ip].RemoteEndPoint = client.EndPoint;
JAKAs[ip].RobotData.Online = true;
}
else
{
JAKAs[ip].RemoteEndPoint = "";
JAKAs[ip].RobotData.Online = false;
}
}
}
private void TCPServer_RecvMsgEvent(string clientKey, string msg)
{
string ip = clientKey.Split(':')[0];
JAKABean jAKA = JAKAs[ip];
if(jAKA != null)
{
jAKA.RobotData.RecvMsg = msg;
}
}
public void Start()
{
TCPServer.Start();
foreach (JAKABean item in JAKAs.Values)
{
item.Start();
}
}
public void Stop()
{
TCPServer.Stop();
}
public void AssociateControl(UCRobot uCRobot, JAKABean jAKABean)
{
uCRobot.Regidter(jAKABean, this);
}
public JAKABean GetJAKABean(string ip)
{
return JAKAs[ip];
}
public void SendCmd(string endpoint, string cmd)
{
string ip=endpoint.Split(':')[0];
if(JAKAs.ContainsKey(ip))
{
JAKAs[ip].RobotData.RecvMsg = "";
JAKAs[ip].RobotData.CurCmd = cmd;
TCPServer.SendMsg(endpoint, cmd);
}
}
}
}
using System.Runtime.InteropServices;
namespace JAKA
{
public class JKTYPE
{
/**
* @brief 笛卡尔空间位置数据类型
*/
[StructLayout(LayoutKind.Sequential)]
public struct CartesianTran
{
public double x; ///< x轴坐标,单位mm
public double y; ///< y轴坐标,单位mm
public double z; ///< z轴坐标,单位mm
};
/**
* @brief 欧拉角姿态数据类型
*/
[StructLayout(LayoutKind.Sequential)]
public struct Rpy
{
public double rx; ///< 绕固定轴X旋转角度,单位:rad
public double ry; ///< 绕固定轴Y旋转角度,单位:rad
public double rz; ///< 绕固定轴Z旋转角度,单位:rad
};
/**
* @brief 四元数姿态数据类型
*/
[StructLayout(LayoutKind.Sequential)]
public struct Quaternion
{
public double s;
public double x;
public double y;
public double z;
};
/**
*@brief 笛卡尔空间位姿类型
*/
[StructLayout(LayoutKind.Sequential)]
public struct CartesianPose
{
public CartesianTran tran; ///< 笛卡尔空间位置
public Rpy rpy; ///< 笛卡尔空间姿态
};
/**
* @brief 旋转矩阵数据类型
*/
[StructLayout(LayoutKind.Sequential)]
public struct RotMatrix
{
public CartesianTran x; ///< x轴列分量
public CartesianTran y; ///< y轴列分量
public CartesianTran z; ///< z轴列分量
};
/**
* @brief 程序运行状态枚举类型
*/
public enum ProgramState
{
PROGRAM_IDLE, ///< 机器人停止运行
PROGRAM_RUNNING, ///< 机器人正在运行
PROGRAM_PAUSED ///< 机器人暂停
};
/**
* @brief 坐标系选择枚举类型
*/
public enum CoordType
{
COORD_BASE, ///< 基坐标系
COORD_JOINT, ///< 关节空间
COORD_TOOL ///< 工具坐标系
};
/**
* @brief jog运动模式枚举
*/
public enum MoveMode
{
ABS = 0, ///< 绝对运动
INCR ///< 增量运动
};
/**
* @brief 系统监测数据类型
*/
[StructLayout(LayoutKind.Sequential)]
public struct SystemMonitorData
{
public int scbMajorVersion; ///<scb主版本号
public int scbMinorVersion; ///<scb次版本号
public int cabTemperature; ///<控制柜温度
public double robotAveragePower; ///<控制柜总线平均功率
public double robotAverageCurrent; ///<控制柜总线平均电流
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public double[] instCurrent; ///<机器人6个轴的瞬时电流
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public double[] instVoltage; ///<机器人6个轴的瞬时电压
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public double[] instTemperature; ///<机器人6个轴的瞬时温度
};
/**
* @brief 负载数据类型
*/
[StructLayout(LayoutKind.Sequential)]
public struct PayLoad
{
public double mass; ///<负载质量,单位:kg
public CartesianTran centroid; ///<负载质心, 单位:mm
};
/**
* @brief 关节位置数据类型
*/
public struct JointValue
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public double[] jVal; ///< 6关节位置值,单位:rad
};
/**
* @brief IO类型枚举
*/
public enum IOType
{
IO_CABINET, ///< 控制柜面板IO
IO_TOOL, ///< 工具IO
IO_EXTEND ///< 扩展IO
};
/**
* @brief 机器人状态数据
*/
[StructLayout(LayoutKind.Sequential)]
public struct RobotState
{
public int estoped; ///< 是否急停
public int poweredOn; ///< 是否打开电源
public int servoEnabled; ///< 是否使能
};
/**
* @brief 机器人力矩数据
*/
[StructLayout(LayoutKind.Sequential)]
public struct TorqueValue
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public double[] jTorque; ///< 是否使能
}
/**
* @brief 机器人关节监测数据类型
*/
[StructLayout(LayoutKind.Sequential)]
public struct JointMonitorData
{
double instCurrent; ///< 瞬时电流
double instVoltage; ///< 瞬时电压
double instTemperature; ///< 瞬时温度
}
/**
* @brief 机器人监测数据类型
*/
[StructLayout(LayoutKind.Sequential)]
public struct RobotMonitorData
{
double scbMajorVersion; ///< scb主版本号
double scbMinorVersion; ///< scb小版本号
double cabTemperature; ///< 控制器温度
double robotAveragePower; ///< 机器人平均电压
double robotAverageCurrent; ///< 机器人平均电流
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public JointMonitorData[] jointMonitorData; ///< 机器人6个关节的监测数据
}
/**
* @brief 力矩传感器监测数据类型
*/
[StructLayout(LayoutKind.Sequential)]
public struct TorqSensorMonitorData
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public char[] ip; ///< 力矩传感器ip地址
int port; ///< 力矩传感器端口号
PayLoad payLoad; ///< 工具负载
int status; ///< 力矩传感器状态
int errcode; ///< 力矩传感器异常错误码
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public double[] actTorque; ///< 力矩传感器实际接触力值
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public double[] torque; ///< 力矩传感器原始读数值
}
/**
* @brief 机器人状态监测数据,使用get_robot_status函数更新机器人状态数据
*/
[StructLayout(LayoutKind.Sequential)]
public struct RobotStatus
{
public int errcode; ///< 机器人运行出错时错误编号,0为运行正常,其它为运行异常
public int inpos; ///< 机器人运动是否到位标志,0为没有到位,1为运动到位
public int powered_on; ///< 机器人是否上电标志,0为没有上电,1为上电
public int enabled; ///< 机器人是否使能标志,0为没有使能,1为使能
public double rapidrate; ///< 机器人运动倍率
public int protective_stop; ///< 机器人是否检测到碰撞,0为没有检测到碰撞,1为检测到碰撞
public int emergency_stop; ///< 机器人是否急停,0为没有急停,1为急停
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 65)]
public int[] dout; ///< 机器人控制柜数字输出信号,dout[0]为信号的个数
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
public int[] tio_dout; ///< 机器人末端工具数字输出信号,tio_dout[0]为信号的个数
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 65)]
public int[] extio; ///< 机器人外部应用数字输出信号,extio[0]为信号的个数
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 65)]
public int[] din; ///< 机器人控制柜数字输入信号,din[0]为信号的个数
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
public int[] tio_din; ///< 机器人末端工具数字输入信号,tio_din[0]为信号的个数
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 65)]
public double[] ain; ///< 机器人控制柜模拟输入信号,ain[0]为信号的个数
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
public double[] tio_ain; ///< 机器人末端工具模拟输入信号,tio_ain[0]为信号的个数
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 65)]
public double[] aout; ///< 机器人控制柜模拟输出信号,aout[0]为信号的个数
public int current_tool_id; ///< 机器人目前使用的工具坐标系id
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public double[] cartesiantran_position; ///< 机器人末端所在的笛卡尔空间位置
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public double[] joint_position; ///< 机器人关节空间位置
public int on_soft_limit; ///< 机器人是否处于限位,0为没有触发限位保护,1为触发限位保护
public int current_user_id; ///< 机器人目前使用的用户坐标系id
public int drag_status; ///< 机器人是否处于拖拽状态,0为没有处于拖拽状态,1为处于拖拽状态
public RobotMonitorData robot_monitor_data; ///< 机器人状态监测数据
public TorqSensorMonitorData torq_sensor_monitor_data; ///< 机器人力矩传感器状态监测数据
public int is_socket_connect; ///< sdk与控制器连接通道是否正常,0为连接通道异常,1为连接通道正常
}
/**
* @brief 机器人错误码数据类型
*/
[StructLayout(LayoutKind.Sequential)]
public struct ErrorCode
{
public int code; ///< 错误码编号
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 120)]
public char[] message; ///< 错误码对应提示信息
}
/**
* @brief 轨迹复现配置参数数据类型
*/
[StructLayout(LayoutKind.Sequential)]
public struct TrajTrackPara
{
public double xyz_interval; ///< 空间位置采集精度
public double rpy_interval; ///< 姿态采集精度
public double vel; ///< 执行脚本运行速度
public double acc; ///< 执行脚本运行加速度
}
/**
* @brief 多个字符串存储数据类型
*/
[StructLayout(LayoutKind.Sequential)]
public struct MultStrStorType
{
public int len; ///< 字符串个数
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 128 * 128)]
public char[] message; ///< 错误码对应提示信息
}
/**
* @brief 运动参数可选项
*/
[StructLayout(LayoutKind.Sequential)]
public struct OptionalCond
{
int executingLineId; ///< 控制命令id编号
}
/**
* @brief 网络异常机器人运动自动终止类型枚举
*/
public enum ProcessType
{
MOT_KEEP, ///< 网络异常时机器人继续保持原来的运动
MOT_PAUSE, ///< 网络异常时机器人暂停运动
MOT_ABORT ///< 网络异常时机器人终止运动
}
/**
* @brief 柔顺控制参数类型
*/
[StructLayout(LayoutKind.Sequential)]
public struct AdmitCtrlType
{
int opt; ///< 柔顺方向,可选值为 1 2 3 4 5 6分别对应 fx fy fz mx my mz,0代表没有勾选
double ft_user; ///< 用户用多大的力才能让机器人的沿着某个方向以最大速度进行运动
double ft_rebound; ///< 回弹力:机器人回到初始状态的能力
double ft_constant; ///< 恒力
int ft_normal_track; ///< 法向跟踪是否开启,0为没有开启,1为开启
}
/**
* @brief 机器人柔顺控制参数类型
*/
[StructLayout(LayoutKind.Sequential)]
public struct RobotAdmitCtrl
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public AdmitCtrlType[] admit_ctrl;
}
/**
* @brief 速度柔顺控制等级和比率等级设置
* 速度柔顺控制分三个等级,并且 1>rate1>rate2>rate3>rate4>0
* 等级为1时,只能设置rate1,rate2两个等级。rate3,rate4的值为0
* 等级为2时,只能设置rate1,rate2,rate3 三个等级。rate4的值为0
* 等级为3时,能设置 rate1,rate2,rate3,rate4 4个等级
*/
[StructLayout(LayoutKind.Sequential)]
public struct VelCom
{
int vc_level; //速度柔顺控制等级
double rate1; //比率1等级
double rate2; //比率2等级
double rate3; //比率3等级
double rate4; //比率4等级
}
/**
* @brief 力传感器的受力分量和力矩分量
*/
[StructLayout(LayoutKind.Sequential)]
public struct FTxyz
{
double fx; // 沿x轴受力分量
double fy; // 沿y轴受力分量
double fz; // 沿z轴受力分量
double tx; // 绕x轴力矩分量
double ty; // 绕y轴力矩分量
double tz; // 绕z轴力矩分量
}
}
}
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("JAKA")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("JAKA")]
[assembly: AssemblyCopyright("Copyright © 2022")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("b702ab04-bb76-491f-812a-603298d08fbf")]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
using System.Text;
using static JAKA.JKTYPE;
namespace JAKA
{
public class RobotData
{
/// <summary>
/// 机器人状态数据
/// </summary>
// public RobotState RobotState;
/// <summary>
/// 机器人状态检测数据类型
/// </summary>
public RobotStatus RobotStatus;
/// <summary>
/// 异常消息
/// </summary>
public string Errorinfo="";
/// <summary>
/// 程序运行状态
/// </summary>
public ProgramState ProgramState;
/// <summary>
/// 当前命令
/// </summary>
public string CurCmd = "";
public string RecvMsg = "";
public bool Online = false;
public RobotData()
{
}
public override bool Equals(object obj)
{
RobotData other = obj as RobotData;
if (other == null)
return false;
if (CurCmd.Equals(other.CurCmd) && RecvMsg.Equals(other.RecvMsg) && Online.Equals(other.Online) &&
Errorinfo.Equals(other.Errorinfo)&& RobotStatus.emergency_stop.Equals(other.RobotStatus.emergency_stop)&&
RobotStatus.powered_on.Equals(other.RobotStatus.powered_on)&&RobotStatus.enabled.Equals(other.RobotStatus.enabled)&&
RobotStatus.inpos.Equals(other.RobotStatus.inpos)&& RobotStatus.protective_stop.Equals(other.RobotStatus.protective_stop)&&
RobotStatus.on_soft_limit.Equals(other.RobotStatus.on_soft_limit)&& RobotStatus.is_socket_connect.Equals(other.RobotStatus.is_socket_connect)&&
RobotStatus.drag_status.Equals(other.RobotStatus.drag_status)&& RobotStatus.rapidrate.Equals(other.RobotStatus.rapidrate)&&
ProgramState.Equals(other.ProgramState))
return true;
return false;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace JAKA
{
/// <summary>
/// 接口调用返回值
/// </summary>
internal class RtnCode
{
/// <summary>
/// 调用成功
/// </summary>
public const int ERR_SUCC = 0;
/// <summary>
/// 异常调用,调用接口异常,控制器不支持
/// </summary>
public const int ERR_FUCTION_CALL_ERROR = 2;
/// <summary>
/// 无效的控制句柄
/// </summary>
public const int ERR_INVALID_HANDLER = -1;
/// <summary>
/// 无效的参数
/// </summary>
public const int ERR_INVALID_PARAMETER = -2;
/// <summary>
/// 通信连接错误
/// </summary>
public const int ERR_COMMUNICATION_ERR = -3;
/// <summary>
/// 逆解失败
/// </summary>
public const int ERR_KINE_INVERSE_ERR = -4;
/// <summary>
/// 急停开关被按下
/// </summary>
public const int ERR_EMERGENCY_PRESSED = -5;
/// <summary>
/// 机器人未上电
/// </summary>
public const int ERR_NOT_POWERED = -6;
/// <summary>
/// 机器人未使能
/// </summary>
public const int ERR_NOT_ENABLED = -7;
/// <summary>
/// 机器人没有进入 servo 模式
/// </summary>
public const int ERR_DISABLE_SERVOMODE = -8;
/// <summary>
/// 机器人没有关闭使能
/// </summary>
public const int ERR_NOT_OFF_ENABLE = -9;
/// <summary>
/// 程序正在运行,不允许操作
/// </summary>
public const int ERR_PROGRAM_IS_RUNNING = -10;
/// <summary>
/// 无法打开文件,文件不存在
/// </summary>
public const int ERR_CANNOT_OPEN_FILE = -11;
/// <summary>
/// 获取编码含义
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
public static string GetStrByCode(int code)
{
string str = "";
switch (code)
{
case ERR_SUCC:
str = "调用成功";
break;
case ERR_FUCTION_CALL_ERROR:
str = "调用接口异常,控制器不支持";
break;
case ERR_INVALID_HANDLER:
str = "无效的控制句柄";
break;
case ERR_INVALID_PARAMETER:
str = "无效的参数";
break;
case ERR_COMMUNICATION_ERR:
str = "通信连接错误";
break;
case ERR_KINE_INVERSE_ERR:
str = "逆解失败";
break;
case ERR_EMERGENCY_PRESSED:
str = "急停开关被按下";
break;
case ERR_NOT_POWERED:
str = "机器人未上电";
break;
case ERR_NOT_ENABLED:
str = "机器人未使能";
break;
case ERR_DISABLE_SERVOMODE:
str = "机器人没有进入 servo 模式";
break;
case ERR_NOT_OFF_ENABLE:
str = "机器人没有关闭使能";
break;
case ERR_PROGRAM_IS_RUNNING:
str = "程序正在运行,不允许操作";
break;
case ERR_CANNOT_OPEN_FILE:
str = "无法打开文件,文件不存在";
break;
default:
str = $"不存在的接口调用返回值:{code}";
break;
}
return str;
}
}
}
namespace JAKA
{
partial class UCJoint
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region 组件设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.lblName = new System.Windows.Forms.Label();
this.lblSerial = new System.Windows.Forms.Label();
this.lblEnable = new System.Windows.Forms.Label();
this.lblErrorState = new System.Windows.Forms.Label();
this.lblCollision = new System.Windows.Forms.Label();
this.lblPosition = new System.Windows.Forms.Label();
this.lblForce = new System.Windows.Forms.Label();
this.lblVolt = new System.Windows.Forms.Label();
this.lblCurrent = new System.Windows.Forms.Label();
this.lblSpeed = new System.Windows.Forms.Label();
this.lblTempture = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// lblName
//
this.lblName.AutoSize = true;
this.lblName.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
this.lblName.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lblName.Location = new System.Drawing.Point(102, 12);
this.lblName.Name = "lblName";
this.lblName.Size = new System.Drawing.Size(49, 14);
this.lblName.TabIndex = 0;
this.lblName.Text = "关节名";
//
// lblSerial
//
this.lblSerial.AutoSize = true;
this.lblSerial.Location = new System.Drawing.Point(4, 44);
this.lblSerial.Name = "lblSerial";
this.lblSerial.Size = new System.Drawing.Size(53, 12);
this.lblSerial.TabIndex = 1;
this.lblSerial.Text = "错误码:";
//
// lblEnable
//
this.lblEnable.AutoSize = true;
this.lblEnable.Location = new System.Drawing.Point(131, 44);
this.lblEnable.Name = "lblEnable";
this.lblEnable.Size = new System.Drawing.Size(41, 12);
this.lblEnable.TabIndex = 2;
this.lblEnable.Text = "使能:";
//
// lblErrorState
//
this.lblErrorState.AutoSize = true;
this.lblErrorState.Location = new System.Drawing.Point(4, 61);
this.lblErrorState.Name = "lblErrorState";
this.lblErrorState.Size = new System.Drawing.Size(41, 12);
this.lblErrorState.TabIndex = 3;
this.lblErrorState.Tag = "";
this.lblErrorState.Text = "错误:";
//
// lblCollision
//
this.lblCollision.AutoSize = true;
this.lblCollision.Location = new System.Drawing.Point(131, 61);
this.lblCollision.Name = "lblCollision";
this.lblCollision.Size = new System.Drawing.Size(41, 12);
this.lblCollision.TabIndex = 4;
this.lblCollision.Text = "碰撞:";
//
// lblPosition
//
this.lblPosition.AutoSize = true;
this.lblPosition.Location = new System.Drawing.Point(3, 78);
this.lblPosition.Name = "lblPosition";
this.lblPosition.Size = new System.Drawing.Size(41, 12);
this.lblPosition.TabIndex = 5;
this.lblPosition.Text = "位置:";
//
// lblForce
//
this.lblForce.AutoSize = true;
this.lblForce.Location = new System.Drawing.Point(3, 112);
this.lblForce.Name = "lblForce";
this.lblForce.Size = new System.Drawing.Size(41, 12);
this.lblForce.TabIndex = 6;
this.lblForce.Text = "力矩:";
//
// lblVolt
//
this.lblVolt.AutoSize = true;
this.lblVolt.Location = new System.Drawing.Point(3, 95);
this.lblVolt.Name = "lblVolt";
this.lblVolt.Size = new System.Drawing.Size(41, 12);
this.lblVolt.TabIndex = 7;
this.lblVolt.Text = "电压:";
//
// lblCurrent
//
this.lblCurrent.AutoSize = true;
this.lblCurrent.Location = new System.Drawing.Point(131, 95);
this.lblCurrent.Name = "lblCurrent";
this.lblCurrent.Size = new System.Drawing.Size(41, 12);
this.lblCurrent.TabIndex = 8;
this.lblCurrent.Text = "电流:";
//
// lblSpeed
//
this.lblSpeed.AutoSize = true;
this.lblSpeed.Location = new System.Drawing.Point(131, 78);
this.lblSpeed.Name = "lblSpeed";
this.lblSpeed.Size = new System.Drawing.Size(41, 12);
this.lblSpeed.TabIndex = 9;
this.lblSpeed.Text = "速度:";
//
// lblTempture
//
this.lblTempture.AutoSize = true;
this.lblTempture.Location = new System.Drawing.Point(131, 112);
this.lblTempture.Name = "lblTempture";
this.lblTempture.Size = new System.Drawing.Size(41, 12);
this.lblTempture.TabIndex = 10;
this.lblTempture.Text = "温度:";
//
// UCJoint
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.Controls.Add(this.lblTempture);
this.Controls.Add(this.lblSpeed);
this.Controls.Add(this.lblCurrent);
this.Controls.Add(this.lblVolt);
this.Controls.Add(this.lblForce);
this.Controls.Add(this.lblPosition);
this.Controls.Add(this.lblCollision);
this.Controls.Add(this.lblErrorState);
this.Controls.Add(this.lblEnable);
this.Controls.Add(this.lblSerial);
this.Controls.Add(this.lblName);
this.Name = "UCJoint";
this.Size = new System.Drawing.Size(242, 134);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label lblName;
private System.Windows.Forms.Label lblSerial;
private System.Windows.Forms.Label lblEnable;
private System.Windows.Forms.Label lblErrorState;
private System.Windows.Forms.Label lblCollision;
private System.Windows.Forms.Label lblPosition;
private System.Windows.Forms.Label lblForce;
private System.Windows.Forms.Label lblVolt;
private System.Windows.Forms.Label lblCurrent;
private System.Windows.Forms.Label lblSpeed;
private System.Windows.Forms.Label lblTempture;
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace JAKA
{
public partial class UCJoint : UserControl
{
public UCJoint()
{
InitializeComponent();
}
/// <summary>
/// 设置数据
/// </summary>
/// <param name="name">关节名称</param>
/// <param name="num">关节序列号</param>
/// <param name="enable">关节使能</param>
/// <param name="error">关节错误</param>
/// <param name="collision">关节碰撞</param>
/// <param name="position">关节位置</param>
/// <param name="speed">关节速度</param>
/// <param name="volt">关节伺服电压</param>
/// <param name="current">关节伺服电流</param>
/// <param name="force">关节力矩</param>
/// <param name="tempture">关节温度</param>
public void Set(string name, int num, int enable,int error,int collision,
float position,float speed,int volt,float current,float force,int tempture)
{
this.Invoke(new Action(() => {
lblName.Text = name;
lblSerial.Text = $"错误码:{num}";
if (enable == 1)
{
lblEnable.Text = "使能";
lblEnable.BackColor = Color.GreenYellow;
}
else
{
lblEnable.Text = "使能";
lblEnable.BackColor = Color.Red;
}
if (error == 1)
{
lblErrorState.Text = "错误";
lblErrorState.BackColor = Color.Red;
}
else
{
lblErrorState.Text = "错误";
lblErrorState.BackColor = Color.GreenYellow;
}
if (collision == 1)
{
lblCollision.Text = "碰撞";
lblCollision.BackColor = Color.Red;
}
else
{
lblCollision.Text = "碰撞";
lblCollision.BackColor = Color.GreenYellow;
}
lblPosition.Text = $"位置:{position.ToString("f3")}°";
lblSpeed.Text = $"速度:{speed.ToString("f3")}°/s";
lblVolt.Text = $"电压:{volt}V";
lblCurrent.Text = $"电流:{current.ToString("f3")}A";
lblForce.Text = $"力矩:{force.ToString("f3")}Nm";
lblTempture.Text = $"温度:{tempture}℃";
}));
}
}
}
<?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>
</root>
\ No newline at end of file \ No newline at end of file
namespace JAKA
{
partial class UCRobot
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region 组件设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.lblestop = new System.Windows.Forms.Label();
this.lblpoweredon = new System.Windows.Forms.Label();
this.lblservoenabled = new System.Windows.Forms.Label();
this.lblerrorcode = new System.Windows.Forms.Label();
this.lblinpos = new System.Windows.Forms.Label();
this.lblrapidrate = new System.Windows.Forms.Label();
this.lblprotectivestop = new System.Windows.Forms.Label();
this.lblonsoftlimit = new System.Windows.Forms.Label();
this.lbldragstatus = new System.Windows.Forms.Label();
this.lblsdkconnect = new System.Windows.Forms.Label();
this.btnPowerOn = new System.Windows.Forms.Button();
this.btnPowerOff = new System.Windows.Forms.Button();
this.btnDisable = new System.Windows.Forms.Button();
this.btnEnable = new System.Windows.Forms.Button();
this.btnStop = new System.Windows.Forms.Button();
this.btnStart = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.btnRun = new System.Windows.Forms.Button();
this.lblresponse = new System.Windows.Forms.Label();
this.btnSend = new System.Windows.Forms.Button();
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.lblCmd = new System.Windows.Forms.Label();
this.lblProgramstate = new System.Windows.Forms.Label();
this.groupBox1.SuspendLayout();
this.SuspendLayout();
//
// lblestop
//
this.lblestop.AutoSize = true;
this.lblestop.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.lblestop.Location = new System.Drawing.Point(14, 25);
this.lblestop.Name = "lblestop";
this.lblestop.Size = new System.Drawing.Size(31, 14);
this.lblestop.TabIndex = 0;
this.lblestop.Text = "急停";
//
// lblpoweredon
//
this.lblpoweredon.AutoSize = true;
this.lblpoweredon.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.lblpoweredon.Location = new System.Drawing.Point(77, 25);
this.lblpoweredon.Name = "lblpoweredon";
this.lblpoweredon.Size = new System.Drawing.Size(31, 14);
this.lblpoweredon.TabIndex = 1;
this.lblpoweredon.Text = "上电";
//
// lblservoenabled
//
this.lblservoenabled.AutoSize = true;
this.lblservoenabled.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.lblservoenabled.Location = new System.Drawing.Point(149, 25);
this.lblservoenabled.Name = "lblservoenabled";
this.lblservoenabled.Size = new System.Drawing.Size(31, 14);
this.lblservoenabled.TabIndex = 2;
this.lblservoenabled.Text = "使能";
//
// lblerrorcode
//
this.lblerrorcode.AutoSize = true;
this.lblerrorcode.Location = new System.Drawing.Point(242, 92);
this.lblerrorcode.Name = "lblerrorcode";
this.lblerrorcode.Size = new System.Drawing.Size(41, 12);
this.lblerrorcode.TabIndex = 3;
this.lblerrorcode.Text = "错误码";
//
// lblinpos
//
this.lblinpos.AutoSize = true;
this.lblinpos.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.lblinpos.Location = new System.Drawing.Point(215, 25);
this.lblinpos.Name = "lblinpos";
this.lblinpos.Size = new System.Drawing.Size(31, 14);
this.lblinpos.TabIndex = 4;
this.lblinpos.Text = "到位";
//
// lblrapidrate
//
this.lblrapidrate.AutoSize = true;
this.lblrapidrate.Location = new System.Drawing.Point(291, 59);
this.lblrapidrate.Name = "lblrapidrate";
this.lblrapidrate.Size = new System.Drawing.Size(53, 12);
this.lblrapidrate.TabIndex = 5;
this.lblrapidrate.Text = "运动倍率";
//
// lblprotectivestop
//
this.lblprotectivestop.AutoSize = true;
this.lblprotectivestop.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.lblprotectivestop.Location = new System.Drawing.Point(356, 25);
this.lblprotectivestop.Name = "lblprotectivestop";
this.lblprotectivestop.Size = new System.Drawing.Size(55, 14);
this.lblprotectivestop.TabIndex = 6;
this.lblprotectivestop.Text = "碰撞检测";
//
// lblonsoftlimit
//
this.lblonsoftlimit.AutoSize = true;
this.lblonsoftlimit.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.lblonsoftlimit.Location = new System.Drawing.Point(278, 25);
this.lblonsoftlimit.Name = "lblonsoftlimit";
this.lblonsoftlimit.Size = new System.Drawing.Size(55, 14);
this.lblonsoftlimit.TabIndex = 7;
this.lblonsoftlimit.Text = "限位保护";
//
// lbldragstatus
//
this.lbldragstatus.AutoSize = true;
this.lbldragstatus.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.lbldragstatus.Location = new System.Drawing.Point(125, 59);
this.lbldragstatus.Name = "lbldragstatus";
this.lbldragstatus.Size = new System.Drawing.Size(55, 14);
this.lbldragstatus.TabIndex = 8;
this.lbldragstatus.Text = "拖拽状态";
//
// lblsdkconnect
//
this.lblsdkconnect.AutoSize = true;
this.lblsdkconnect.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.lblsdkconnect.Location = new System.Drawing.Point(14, 59);
this.lblsdkconnect.Name = "lblsdkconnect";
this.lblsdkconnect.Size = new System.Drawing.Size(97, 14);
this.lblsdkconnect.TabIndex = 9;
this.lblsdkconnect.Text = "SDK与控制器连接";
//
// btnPowerOn
//
this.btnPowerOn.BackColor = System.Drawing.Color.GreenYellow;
this.btnPowerOn.Location = new System.Drawing.Point(16, 123);
this.btnPowerOn.Name = "btnPowerOn";
this.btnPowerOn.Size = new System.Drawing.Size(99, 43);
this.btnPowerOn.TabIndex = 10;
this.btnPowerOn.Text = "打开本体电源";
this.btnPowerOn.UseVisualStyleBackColor = false;
this.btnPowerOn.Click += new System.EventHandler(this.btnPowerOn_Click);
//
// btnPowerOff
//
this.btnPowerOff.BackColor = System.Drawing.Color.DeepPink;
this.btnPowerOff.Location = new System.Drawing.Point(16, 172);
this.btnPowerOff.Name = "btnPowerOff";
this.btnPowerOff.Size = new System.Drawing.Size(99, 43);
this.btnPowerOff.TabIndex = 11;
this.btnPowerOff.Text = "关闭本体电源";
this.btnPowerOff.UseVisualStyleBackColor = false;
this.btnPowerOff.Click += new System.EventHandler(this.btnPowerOff_Click);
//
// btnDisable
//
this.btnDisable.BackColor = System.Drawing.Color.DeepPink;
this.btnDisable.Location = new System.Drawing.Point(125, 172);
this.btnDisable.Name = "btnDisable";
this.btnDisable.Size = new System.Drawing.Size(99, 43);
this.btnDisable.TabIndex = 13;
this.btnDisable.Text = "关闭使能";
this.btnDisable.UseVisualStyleBackColor = false;
this.btnDisable.Click += new System.EventHandler(this.btnDisable_Click);
//
// btnEnable
//
this.btnEnable.BackColor = System.Drawing.Color.GreenYellow;
this.btnEnable.Location = new System.Drawing.Point(125, 123);
this.btnEnable.Name = "btnEnable";
this.btnEnable.Size = new System.Drawing.Size(99, 43);
this.btnEnable.TabIndex = 12;
this.btnEnable.Text = "打开使能";
this.btnEnable.UseVisualStyleBackColor = false;
this.btnEnable.Click += new System.EventHandler(this.btnEnable_Click);
//
// btnStop
//
this.btnStop.BackColor = System.Drawing.Color.DeepPink;
this.btnStop.Location = new System.Drawing.Point(230, 172);
this.btnStop.Name = "btnStop";
this.btnStop.Size = new System.Drawing.Size(99, 43);
this.btnStop.TabIndex = 15;
this.btnStop.Text = "停止程序";
this.btnStop.UseVisualStyleBackColor = false;
this.btnStop.Click += new System.EventHandler(this.btnStop_Click);
//
// btnStart
//
this.btnStart.BackColor = System.Drawing.Color.GreenYellow;
this.btnStart.Location = new System.Drawing.Point(230, 123);
this.btnStart.Name = "btnStart";
this.btnStart.Size = new System.Drawing.Size(99, 43);
this.btnStart.TabIndex = 14;
this.btnStart.Text = "运行程序";
this.btnStart.UseVisualStyleBackColor = false;
this.btnStart.Click += new System.EventHandler(this.btnStart_Click);
//
// groupBox1
//
this.groupBox1.Controls.Add(this.btnRun);
this.groupBox1.Controls.Add(this.lblresponse);
this.groupBox1.Controls.Add(this.btnSend);
this.groupBox1.Controls.Add(this.comboBox1);
this.groupBox1.Controls.Add(this.lblCmd);
this.groupBox1.Controls.Add(this.lblProgramstate);
this.groupBox1.Controls.Add(this.btnPowerOn);
this.groupBox1.Controls.Add(this.btnStop);
this.groupBox1.Controls.Add(this.lblestop);
this.groupBox1.Controls.Add(this.btnStart);
this.groupBox1.Controls.Add(this.lblpoweredon);
this.groupBox1.Controls.Add(this.btnDisable);
this.groupBox1.Controls.Add(this.lblservoenabled);
this.groupBox1.Controls.Add(this.btnEnable);
this.groupBox1.Controls.Add(this.lblerrorcode);
this.groupBox1.Controls.Add(this.btnPowerOff);
this.groupBox1.Controls.Add(this.lblinpos);
this.groupBox1.Controls.Add(this.lblrapidrate);
this.groupBox1.Controls.Add(this.lblsdkconnect);
this.groupBox1.Controls.Add(this.lblprotectivestop);
this.groupBox1.Controls.Add(this.lbldragstatus);
this.groupBox1.Controls.Add(this.lblonsoftlimit);
this.groupBox1.Location = new System.Drawing.Point(3, 3);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(418, 292);
this.groupBox1.TabIndex = 16;
this.groupBox1.TabStop = false;
//
// btnRun
//
this.btnRun.BackColor = System.Drawing.Color.GreenYellow;
this.btnRun.Location = new System.Drawing.Point(335, 140);
this.btnRun.Name = "btnRun";
this.btnRun.Size = new System.Drawing.Size(69, 59);
this.btnRun.TabIndex = 21;
this.btnRun.Text = "一键启动";
this.btnRun.UseVisualStyleBackColor = false;
this.btnRun.Click += new System.EventHandler(this.btnRun_Click);
//
// lblresponse
//
this.lblresponse.AutoSize = true;
this.lblresponse.Location = new System.Drawing.Point(114, 92);
this.lblresponse.Name = "lblresponse";
this.lblresponse.Size = new System.Drawing.Size(53, 12);
this.lblresponse.TabIndex = 20;
this.lblresponse.Text = "命令反馈";
//
// btnSend
//
this.btnSend.Location = new System.Drawing.Point(215, 235);
this.btnSend.Name = "btnSend";
this.btnSend.Size = new System.Drawing.Size(99, 43);
this.btnSend.TabIndex = 19;
this.btnSend.Text = "发送命令";
this.btnSend.UseVisualStyleBackColor = true;
this.btnSend.Click += new System.EventHandler(this.btnSend_Click);
//
// comboBox1
//
this.comboBox1.FormattingEnabled = true;
this.comboBox1.Items.AddRange(new object[] {
"home",
"standby",
"store1-high",
"store1-low",
"store2-high",
"store2-low",
"store3-high",
"store3-low",
"store4-high",
"store4-low",
"store5-high",
"store5-low",
"store6-high",
"store6-low",
"inlet7-low",
"inlet13-low",
"outlet-high",
"ngbox-high",
"store-up",
"store-down",
"inlet-up",
"outlet-down",
"ngbox-down"});
this.comboBox1.Location = new System.Drawing.Point(16, 247);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(137, 20);
this.comboBox1.TabIndex = 18;
//
// lblCmd
//
this.lblCmd.AutoSize = true;
this.lblCmd.Location = new System.Drawing.Point(14, 92);
this.lblCmd.Name = "lblCmd";
this.lblCmd.Size = new System.Drawing.Size(53, 12);
this.lblCmd.TabIndex = 17;
this.lblCmd.Text = "当前命令";
//
// lblProgramstate
//
this.lblProgramstate.AutoSize = true;
this.lblProgramstate.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.lblProgramstate.Location = new System.Drawing.Point(200, 59);
this.lblProgramstate.Name = "lblProgramstate";
this.lblProgramstate.Size = new System.Drawing.Size(55, 14);
this.lblProgramstate.TabIndex = 16;
this.lblProgramstate.Text = "程序运行";
//
// UCRobot
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.groupBox1);
this.Name = "UCRobot";
this.Size = new System.Drawing.Size(425, 298);
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Label lblestop;
private System.Windows.Forms.Label lblpoweredon;
private System.Windows.Forms.Label lblservoenabled;
private System.Windows.Forms.Label lblerrorcode;
private System.Windows.Forms.Label lblinpos;
private System.Windows.Forms.Label lblrapidrate;
private System.Windows.Forms.Label lblprotectivestop;
private System.Windows.Forms.Label lblonsoftlimit;
private System.Windows.Forms.Label lbldragstatus;
private System.Windows.Forms.Label lblsdkconnect;
private System.Windows.Forms.Button btnPowerOn;
private System.Windows.Forms.Button btnPowerOff;
private System.Windows.Forms.Button btnDisable;
private System.Windows.Forms.Button btnEnable;
private System.Windows.Forms.Button btnStop;
private System.Windows.Forms.Button btnStart;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.Label lblProgramstate;
private System.Windows.Forms.Label lblCmd;
private System.Windows.Forms.Button btnSend;
private System.Windows.Forms.ComboBox comboBox1;
private System.Windows.Forms.Label lblresponse;
private System.Windows.Forms.Button btnRun;
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static JAKA.JKTYPE;
namespace JAKA
{
public partial class UCRobot : UserControl
{
public UCRobot()
{
Control.CheckForIllegalCrossThreadCalls = false;
InitializeComponent();
comboBox1.SelectedIndex = 0;
}
private JAKABean jakaBean;
private JAKAServer server;
public void Regidter(JAKABean jakabean,JAKAServer jAKAServer)
{
this.jakaBean = jakabean;
groupBox1.Text = $"[{jakabean.IP}]";
server = jAKAServer;
jakabean.RegisterUpdataEvent(Update);
}
private void Update(RobotData robotData)
{
if (!this.IsHandleCreated)
return;
this.Invoke((Action)(() =>
{
lblestop.BackColor = robotData.RobotStatus.emergency_stop == 0 ? Color.YellowGreen : Color.Red;
lblpoweredon.BackColor = robotData.RobotStatus.powered_on == 0 ? Color.Red : Color.YellowGreen;
lblservoenabled.BackColor = robotData.RobotStatus.enabled == 0 ? Color.Red : Color.YellowGreen;
lblinpos.BackColor = robotData.RobotStatus.inpos == 0 ? Color.Red : Color.YellowGreen;
lblprotectivestop.BackColor = robotData.RobotStatus.protective_stop == 0 ? Color.YellowGreen : Color.Red;
lblonsoftlimit.BackColor = robotData.RobotStatus.on_soft_limit == 0 ? Color.YellowGreen : Color.Red;
lblsdkconnect.BackColor = robotData.RobotStatus.is_socket_connect == 0 ? Color.Red : Color.YellowGreen;
lbldragstatus.BackColor = robotData.RobotStatus.drag_status == 0 ? Color.Red : Color.YellowGreen;
lblrapidrate.Text = $"运动倍率:{robotData.RobotStatus.rapidrate.ToString("f3")}";
lblerrorcode.Text = robotData.Errorinfo;
lblresponse.Text = robotData.RecvMsg;
if (robotData.ProgramState.Equals(ProgramState.PROGRAM_IDLE))
{
lblProgramstate.BackColor = Color.Red;
}
else if(robotData.ProgramState.Equals(ProgramState.PROGRAM_PAUSED))
{
lblProgramstate.BackColor = Color.Yellow;
}
else if (robotData.ProgramState.Equals(ProgramState.PROGRAM_RUNNING))
{
lblProgramstate.BackColor = Color.YellowGreen;
}
lblCmd.Text = robotData.CurCmd;
if(robotData.Online)
{
groupBox1.Text = $"[{jakaBean.IP}][在线]";
}
else
{
groupBox1.Text = $"[{jakaBean.IP}][离线]";
}
}));
}
private void btnPowerOn_Click(object sender, EventArgs e)
{
Task.Factory.StartNew(() => { jakaBean.PowerOn(); });
}
private void btnPowerOff_Click(object sender, EventArgs e)
{
Task.Factory.StartNew(() => { jakaBean.PowerOff(); });
}
private void btnEnable_Click(object sender, EventArgs e)
{
Task.Factory.StartNew(() => { jakaBean.EnableRobot(); });
}
private void btnDisable_Click(object sender, EventArgs e)
{
Task.Factory.StartNew(() => { jakaBean.DisableRobot(); });
}
private void btnStart_Click(object sender, EventArgs e)
{
Task.Factory.StartNew(() => { jakaBean.Run(); });
}
private void btnStop_Click(object sender, EventArgs e)
{
Task.Factory.StartNew(() => { jakaBean.Abort(); });
}
private void btnSend_Click(object sender, EventArgs e)
{
Task.Factory.StartNew(() => {
if (groupBox1.Text.Contains("在线"))
{
string cmd = comboBox1.SelectedItem.ToString();//textBox1.Text;
server.SendCmd(jakaBean.RemoteEndPoint, cmd);
}
});
}
private void btnRun_Click(object sender, EventArgs e)
{
Task.Factory.StartNew(() => {
jakaBean.PowerOn();
System.Threading.Thread.Sleep(2000);
jakaBean.EnableRobot();
System.Threading.Thread.Sleep(2000);
jakaBean.Run();
});
}
}
}
<?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>
</root>
\ No newline at end of file \ No newline at end of file
此文件类型无法预览
文件属性发生变化
文件属性发生变化
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace JAKA
{
delegate void CallBackFuncType(int error_code);
class jakaAPI
{
[DllImport("jakaAPI.dll", EntryPoint = "get_controller_ip", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_controller_ip(char[] controller_name, ref byte ip);
[DllImport("jakaAPI.dll", EntryPoint = "create_handler", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int create_handler(char[] ip, ref int handle);
[DllImport("jakaAPI.dll", EntryPoint = "destory_handler", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int destory_handler(ref int handle);
[DllImport("jakaAPI.dll", EntryPoint = "power_on", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int power_on(ref int handle);
[DllImport("jakaAPI.dll", EntryPoint = "power_off", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int power_off(ref int handle);
[DllImport("jakaAPI.dll", EntryPoint = "shut_down", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int shut_down(ref int handle);
[DllImport("jakaAPI.dll", EntryPoint = "enable_robot", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int enable_robot(ref int handle);
[DllImport("jakaAPI.dll", EntryPoint = "disable_robot", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int disable_robot(ref int handle);
[DllImport("jakaAPI.dll", EntryPoint = "jog", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int jog(ref int handle, int aj_num, JKTYPE.MoveMode move_mode, JKTYPE.CoordType coord_type, double vel_cmd, double pos_cmd);
[DllImport("jakaAPI.dll", EntryPoint = "jog_stop", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int jog_stop(ref int handle, ref int num);
[DllImport("jakaAPI.dll", EntryPoint = "joint_move", ExactSpelling = false, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode)]
public static extern int joint_move(ref int handle, ref JKTYPE.JointValue joint_pos, JKTYPE.MoveMode move_mode, bool is_block, double speed);
[DllImport("jakaAPI.dll", EntryPoint = "linear_move", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int linear_move(ref int handle, ref JKTYPE.CartesianPose end_pos, JKTYPE.MoveMode move_mode, bool is_block, double speed);
[DllImport("jakaAPI.dll", EntryPoint = "servo_move_enable", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int servo_move_enable(ref int handle, bool enable);
[DllImport("jakaAPI.dll", EntryPoint = "servo_j", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int servo_j(ref int handle, ref JKTYPE.JointValue joint_pos, JKTYPE.MoveMode move_mode);
[DllImport("jakaAPI.dll", EntryPoint = "servo_j_extend", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int servo_j_extend(ref int handle, ref JKTYPE.JointValue joint_pos, JKTYPE.MoveMode move_mode, int step_num);
[DllImport("jakaAPI.dll", EntryPoint = "servo_p", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int servo_p(ref int handle, ref JKTYPE.CartesianPose cartesian_pose, JKTYPE.MoveMode move_mode);
[DllImport("jakaAPI.dll", EntryPoint = "servo_p_extend", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int servo_p_extend(ref int handle, ref JKTYPE.CartesianPose cartesian_pose, JKTYPE.MoveMode move_mode, int step_num);
[DllImport("jakaAPI.dll", EntryPoint = "set_digital_output", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int set_digital_output(ref int handle, JKTYPE.IOType type, int index, bool value);
[DllImport("jakaAPI.dll", EntryPoint = "set_analog_output", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int set_analog_output(ref int handle, JKTYPE.IOType type, int index, float value);
[DllImport("jakaAPI.dll", EntryPoint = "get_digital_input", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_digital_input(ref int handle, JKTYPE.IOType type, int index, ref bool result);
[DllImport("jakaAPI.dll", EntryPoint = "get_digital_output", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_digital_output(ref int handle, JKTYPE.IOType type, int index, ref bool result);
[DllImport("jakaAPI.dll", EntryPoint = "get_analog_input", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_analog_input(ref int handle, JKTYPE.IOType type, int index, ref float result);
[DllImport("jakaAPI.dll", EntryPoint = "get_analog_output", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_analog_output(ref int handle, JKTYPE.IOType type, int index, ref float result);
[DllImport("jakaAPI.dll", EntryPoint = "is_extio_running", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int is_extio_running(ref int handle, ref bool is_running);
[DllImport("jakaAPI.dll", EntryPoint = "program_run", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int program_run(ref int handle);
[DllImport("jakaAPI.dll", EntryPoint = "program_pause", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int program_pause(ref int handle);
[DllImport("jakaAPI.dll", EntryPoint = "program_resume", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int program_resume(ref int handle);
[DllImport("jakaAPI.dll", EntryPoint = "program_abort", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int program_abort(ref int handle);
[DllImport("jakaAPI.dll", EntryPoint = "program_load", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int program_load(ref int handle, char[] file);
[DllImport("jakaAPI.dll", EntryPoint = "get_loaded_program", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_loaded_program(ref int handle, StringBuilder file);
[DllImport("jakaAPI.dll", EntryPoint = "get_current_line", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_current_line(ref int handle, ref int curr_line);
[DllImport("jakaAPI.dll", EntryPoint = "get_program_state", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_program_state(ref int handle, ref JKTYPE.ProgramState status);
[DllImport("jakaAPI.dll", EntryPoint = "set_rapidrate", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int set_rapidrate(ref int handle, double rapid_rate);
[DllImport("jakaAPI.dll", EntryPoint = "get_rapidrate", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_rapidrate(ref int handle, ref double rapid_rate);
[DllImport("jakaAPI.dll", EntryPoint = "set_tool_data", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int set_tool_data(ref int handle, int id, ref JKTYPE.CartesianPose tcp, char[] name);
[DllImport("jakaAPI.dll", EntryPoint = "get_tool_data", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_tool_data(ref int handle, ref int id, ref JKTYPE.CartesianPose tcp);
[DllImport("jakaAPI.dll", EntryPoint = "set_tool_id", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int set_tool_id(ref int handle, int id);
[DllImport("jakaAPI.dll", EntryPoint = "get_tool_id", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_tool_id(ref int handle, ref int id);
[DllImport("jakaAPI.dll", EntryPoint = "set_user_frame_data", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int set_user_frame_data(ref int handle, int id, ref JKTYPE.CartesianPose user_frame, char[] name);
[DllImport("jakaAPI.dll", EntryPoint = "get_user_frame_data", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_user_frame_data(ref int handle, ref int id, ref JKTYPE.CartesianPose user_frame);
[DllImport("jakaAPI.dll", EntryPoint = "set_user_frame_id", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int set_user_frame_id(ref int handle, int id);
[DllImport("jakaAPI.dll", EntryPoint = "get_user_frame_id", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_user_frame_id(ref int handle, ref int id);
[DllImport("jakaAPI.dll", EntryPoint = "drag_mode_enable", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int drag_mode_enable(ref int handle, bool enable);
[DllImport("jakaAPI.dll", EntryPoint = "is_in_drag_mode", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int is_in_drag_mode(ref int handle, ref bool in_drag);
[DllImport("jakaAPI.dll", EntryPoint = "get_robot_state", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_robot_state(ref int handle, ref JKTYPE.RobotState state);
[DllImport("jakaAPI.dll", EntryPoint = "get_tcp_position", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_tcp_position(ref int handle, ref JKTYPE.CartesianPose tcp_position);
[DllImport("jakaAPI.dll", EntryPoint = "get_joint_position", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_joint_position(ref int handle, ref JKTYPE.JointValue joint_position);
[DllImport("jakaAPI.dll", EntryPoint = "is_in_collision", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int is_in_collision(ref int handle, ref bool in_collision);
[DllImport("jakaAPI.dll", EntryPoint = "is_on_limit", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int is_on_limit(ref int handle, ref bool on_limit);
[DllImport("jakaAPI.dll", EntryPoint = "is_in_pos", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int is_in_pos(ref int handle, ref bool in_pos);
[DllImport("jakaAPI.dll", EntryPoint = "collision_recover", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int collision_recover(ref int handle);
[DllImport("jakaAPI.dll", EntryPoint = "set_collision_level", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int set_collision_level(ref int handle, int level);
[DllImport("jakaAPI.dll", EntryPoint = "get_collision_level", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_collision_level(ref int handle, ref int level);
[DllImport("jakaAPI.dll", EntryPoint = "kine_inverse", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int kine_inverse(ref int handle, ref JKTYPE.JointValue ref_pos, ref JKTYPE.CartesianPose cartesian_pose, ref JKTYPE.JointValue joint_pos);
[DllImport("jakaAPI.dll", EntryPoint = "kine_forward", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int kine_forward(ref int handle, ref JKTYPE.JointValue joint_pos, ref JKTYPE.CartesianPose cartesian_pose);
[DllImport("jakaAPI.dll", EntryPoint = "rpy_to_rot_matrix", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int rpy_to_rot_matrix(ref int handle, ref JKTYPE.Rpy rpy, ref JKTYPE.RotMatrix rot_matrix);
[DllImport("jakaAPI.dll", EntryPoint = "rot_matrix_to_rpy", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int rot_matrix_to_rpy(ref int handle, ref JKTYPE.RotMatrix rot_matrix, ref JKTYPE.Rpy rpy);
[DllImport("jakaAPI.dll", EntryPoint = "quaternion_to_rot_matrix", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int quaternion_to_rot_matrix(ref int handle, ref JKTYPE.Quaternion quaternion, ref JKTYPE.RotMatrix rot_matrix);
[DllImport("jakaAPI.dll", EntryPoint = "rot_matrix_to_quaternion", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int rot_matrix_to_quaternion(ref int handle, ref JKTYPE.RotMatrix rot_matrix, ref JKTYPE.Quaternion quaternion);
[DllImport("jakaAPI.dll", EntryPoint = "torque_control_enable", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int torque_control_enable(ref int handle, bool enable);
[DllImport("jakaAPI.dll", EntryPoint = "torque_feedforward", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int torque_feedforward(ref int handle, JKTYPE.TorqueValue tor_val, int grv_flag);
[DllImport("jakaAPI.dll", EntryPoint = "set_payload", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int set_payload(ref int handle, ref JKTYPE.PayLoad payload);
[DllImport("jakaAPI.dll", EntryPoint = "get_payload", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_payload(ref int handle, ref JKTYPE.PayLoad payload);
[DllImport("jakaAPI.dll", EntryPoint = "set_error_handler", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int set_error_handler(ref int i, CallBackFuncType func);
[DllImport("jakaAPI.dll", EntryPoint = "get_sdk_version", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_sdk_version(ref int i, StringBuilder version);
[DllImport("jakaAPI.dll", EntryPoint = "get_robot_status", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_robot_status(ref int i, ref JKTYPE.RobotStatus status);
[DllImport("jakaAPI.dll", EntryPoint = "motion_abort", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int motion_abort(ref int i);
[DllImport("jakaAPI.dll", EntryPoint = "set_errorcode_file_path", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int set_errorcode_file_path(ref int i, StringBuilder path);
[DllImport("jakaAPI.dll", EntryPoint = "get_last_error", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_last_error(ref int i, ref JKTYPE.ErrorCode code);
[DllImport("jakaAPI.dll", EntryPoint = "set_debug_mode", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int set_debug_mode(ref int i, bool mode);
[DllImport("jakaAPI.dll", EntryPoint = "set_traj_config", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int set_traj_config(ref int i, ref JKTYPE.TrajTrackPara para);
[DllImport("jakaAPI.dll", EntryPoint = "get_traj_config", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_traj_config(ref int i, ref JKTYPE.TrajTrackPara para);
[DllImport("jakaAPI.dll", EntryPoint = "set_traj_sample_mode", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int set_traj_sample_mode(ref int i, bool mode, char[] filename);
[DllImport("jakaAPI.dll", EntryPoint = "get_traj_sample_status", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_traj_sample_status(ref int i, ref bool sample_statuse);
[DllImport("jakaAPI.dll", EntryPoint = "get_exist_traj_file_name", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_exist_traj_file_name(ref int i, ref JKTYPE.MultStrStorType filename);
[DllImport("jakaAPI.dll", EntryPoint = "rename_traj_file_name", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int rename_traj_file_name(ref int i, ref char[] src, ref char[] dest);
[DllImport("jakaAPI.dll", EntryPoint = "remove_traj_file", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int remove_traj_file(ref int i, ref char[] filename);
[DllImport("jakaAPI.dll", EntryPoint = "generate_traj_exe_file", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int generate_traj_exe_file(ref int i, ref char[] filename);
[DllImport("jakaAPI.dll", EntryPoint = "joint_move_extend", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int joint_move_extend(ref int i, ref JKTYPE.JointValue joint_pos, JKTYPE.MoveMode move_mode, bool is_block, double speed, double acc, double tol, ref JKTYPE.OptionalCond option_cond);
[DllImport("jakaAPI.dll", EntryPoint = "linear_move_extend", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int linear_move_extend(ref int i, ref JKTYPE.CartesianPose cart_pos, JKTYPE.MoveMode move_mode, bool is_block, double speed, double acc, double tol, ref JKTYPE.OptionalCond option_cond);
[DllImport("jakaAPI.dll", EntryPoint = "circular_move", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int circular_move(ref int i, ref JKTYPE.CartesianPose end_pos, ref JKTYPE.CartesianPose mid_pos, JKTYPE.MoveMode move_mode, bool is_block, double speed, double acc, double tol, ref JKTYPE.OptionalCond option_cond);
[DllImport("jakaAPI.dll", EntryPoint = "servo_move_use_none_filter", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int servo_move_use_none_filter(ref int i);
[DllImport("jakaAPI.dll", EntryPoint = "servo_move_use_joint_LPF", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int servo_move_use_joint_LPF(ref int i, double cutoffFreq);
[DllImport("jakaAPI.dll", EntryPoint = "servo_move_use_joint_NLF", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int servo_move_use_joint_NLF(ref int i, double max_vr, double max_ar, double max_jr);
[DllImport("jakaAPI.dll", EntryPoint = "servo_move_use_carte_NLF", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int servo_move_use_carte_NLF(ref int i, double max_vp, double max_ap, double max_jp, double max_vr, double max_ar, double max_jr);
[DllImport("jakaAPI.dll", EntryPoint = "servo_move_use_joint_MMF", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int servo_move_use_joint_MMF(ref int i, int max_buf, double kp, double kv, double ka);
[DllImport("jakaAPI.dll", EntryPoint = "servo_speed_foresight", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int servo_speed_foresight(ref int i, int max_buf, double kp);
[DllImport("jakaAPI.dll", EntryPoint = "set_SDK_filepath", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int set_SDK_filepath(ref int i, ref char[] filepath);
[DllImport("jakaAPI.dll", EntryPoint = "set_torsenosr_brand", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int set_torsenosr_brand(ref int i, int sensor_brand);
[DllImport("jakaAPI.dll", EntryPoint = "get_torsenosr_brand", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_torsenosr_brand(ref int i, ref int sensor_brand);
[DllImport("jakaAPI.dll", EntryPoint = "set_torque_sensor_mode", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int set_torque_sensor_mode(ref int i, int sensor_mode);
[DllImport("jakaAPI.dll", EntryPoint = "set_admit_ctrl_config", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int set_admit_ctrl_config(ref int i, int axis, int opt, int ftUser, int ftConstant, int ftNnormalTrack, int ftReboundFK);
[DllImport("jakaAPI.dll", EntryPoint = "start_torq_sensor_payload_identify", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int start_torq_sensor_payload_identify(ref int i, ref JKTYPE.JointValue joint_pos);
[DllImport("jakaAPI.dll", EntryPoint = "get_torq_sensor_identify_staus", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_torq_sensor_identify_staus(ref int i, ref int identify_status);
[DllImport("jakaAPI.dll", EntryPoint = "get_torq_sensor_payload_identify_result", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_torq_sensor_payload_identify_result(ref int i, ref JKTYPE.PayLoad payload);
[DllImport("jakaAPI.dll", EntryPoint = "set_torq_sensor_tool_payload", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int set_torq_sensor_tool_payload(ref int i, ref JKTYPE.PayLoad payload);
[DllImport("jakaAPI.dll", EntryPoint = "get_torq_sensor_tool_payload", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_torq_sensor_tool_payload(ref int i, ref JKTYPE.PayLoad payload);
[DllImport("jakaAPI.dll", EntryPoint = "enable_admittance_ctrl", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int enable_admittance_ctrl(ref int i, int enable_flag);
[DllImport("jakaAPI.dll", EntryPoint = "set_compliant_type", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int set_compliant_type(ref int i, int sensor_compensation, int compliance_type);
[DllImport("jakaAPI.dll", EntryPoint = "get_compliant_type", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_compliant_type(ref int i, ref int sensor_compensation, ref int compliance_type);
[DllImport("jakaAPI.dll", EntryPoint = "clear_error", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int clear_error(ref int i);
[DllImport("jakaAPI.dll", EntryPoint = "get_admit_ctrl_config", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_admit_ctrl_config(ref int i, ref JKTYPE.RobotAdmitCtrl admit_ctrl_cfg);
[DllImport("jakaAPI.dll", EntryPoint = "set_torque_sensor_comm", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int set_torque_sensor_comm(ref int i, int type, ref char[] ip_addr, int port);
[DllImport("jakaAPI.dll", EntryPoint = "get_torque_sensor_comm", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_torque_sensor_comm(ref int i, ref int type, ref byte ip_addr, ref int port);
[DllImport("jakaAPI.dll", EntryPoint = "disable_force_control", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int disable_force_control(ref int i);
[DllImport("jakaAPI.dll", EntryPoint = "set_vel_compliant_ctrl", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int set_vel_compliant_ctrl(ref int i, ref JKTYPE.VelCom vel);
[DllImport("jakaAPI.dll", EntryPoint = "set_compliance_condition", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int set_compliance_condition(ref int i, ref JKTYPE.FTxyz ft);
[DllImport("jakaAPI.dll", EntryPoint = "set_network_exception_handle", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int set_network_exception_handle(ref int i, float millisecond, JKTYPE.ProcessType mnt);
[DllImport("jakaAPI.dll", EntryPoint = "set_status_data_update_time_interval", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int set_status_data_update_time_interval(ref int i, float millisecond);
}
}
,,,,,,,,
控制器部分错误代码,,,,,,,,
#define,ROBOT_POWERED_OFF,0x0F0001,1,machine is now off please turn on it,机器人关闭 请开启,machine is now off please turn on it,1,ロボットが停止中で、起動ください
#define,ROBOT_NOT_ENABLED,0x0F0002,1,machine is not enabled,机器人没使能,machine is not enabled,1,ロボットが動かせていません
#define,OPERATION_IN_WRONG_MODE,0x0F0003,2,operation is not supported in current mode,在此模式下 操作不允许,operation is not supported in current mode,1,該当モードでの操作が許しません
#define,KINEMATICS_FAILED,0x0F0004,1,failed to do the inverse kinematics,运动学逆解失败,failed to do the inverse kinematics,1,運動学逆解に失敗しました
#define,INFINITE_JOINT_POSITION,0x0F0005,1,infinite joint position command was given,位置设置过大,infinite joint position command was given,1,位置設置過大
#define,JOINT_HIT_POS_HLIMIT,0x0F0006,1,cannot move on since it hits the joint's positive hard limit,机器人关节达到正的硬限位 不可运动,cannot move on since it hits the joint's positive hard limit,1,ロボット関節が正のハードリミットに到着すると動きません
#define,JOINT_HIT_NEG_HLIMIT,0x0F0007,1,cannot move on since it hits the joint's negative hard limit,机器人关节达到负的硬限位 不可运动,cannot move on since it hits the joint's negative hard limit,1,ロボット関節が負のハードリミットに到着すると動きません
#define,JOINT_HIT_POS_SLIMIT,0x0F0008,1,cannot move on since it hits the joint's positive soft limit,机器人关节达到正的软限位 不可运动,cannot move on since it hits the joint's positive soft limit,1,ロボット関節が正のソフトリミットに到着すると動きません
#define,JOINT_HIT_NEG_SLIMIT,0x0F0009,1,cannot move on since it hits the joint's negative soft limit,机器人关节达到负的软限位 不可运动,cannot move on since it hits the joint's negative soft limit,1,ロボット関節が負のソフトリミットに到着すると動きません
#define,AXIS_EXCEED_POS_LIMIT,0x0F000A,1,he target position exceeds the axis positive limit,目标位置超过正的最大位置限制,he target position exceeds the axis positive limit,1,目標位置が正の最大位置制限を超えました
#define,AXIS_EXCEED_NEG_LIMIT,0x0F000B,1,the target position exceeds the axis negative limit,目标位置超过负的最大位置限制,the target position exceeds the axis negative limit,1,目標位置が負の最大位置制限を超えました
#define,JOG_UNSUPPORTED_WHEN_HOMING,0x0F000E,1,cannot do jog operation when homing is in progress,home阶段没法jog,cannot do jog operation when homing is in progress,1,home阶段没法jog
#define,INVALID_JOINT_NUM,0x0F000F,1,the commanded joint number is invalid,指令关节无效,the commanded joint number is invalid,1,関節指令無効
#define,INVALID_VELOCITY,0x0F0010,1,the commanded velocity is invalid,指令速度无效,the commanded velocity is invalid,1,指令速度無効
#define,TARGET_POS_EXCEED_LIMIT,0x0F0011,1,the target position exceeds the mechine's limits,目标位置超过机器限制,the target position exceeds the mechine's limits,1,目標位置が機器リミット超過
#define,HOME_IN_NONE_JOINT_MODE,0x0F0012,1,cannot do home operation since it's not in joint mode now,非关节模式不能进行home操作,cannot do home operation since it's not in joint mode now,1,非関節モードでHOME操作は許しません
#define,HOMING_ALRADY_IN_PROGRESS,0x0F0013,1,homing is already in pregress,home正在进行,homing is already in pregress,1,HOME起動中
#define,EXIT_PROTECT_IN_WRONG_MODE,0x0F0014,1,failed to exit protective mode,退出保护模式失败,failed to exit protective mode,1,保護模式より退出失敗
#define,ROBOT_NOT_TURNED_ON,0x0F0015,1,failed to do the operaion since the machine is now not turned on,机器人未启动,failed to do the operaion since the machine is now not turned on,1,ロボットが未起動
#define,ROBOT_ON_SOFT_LIMIT,0x0F0016,1,the mechine is now on soft limit,机器人关节达到软限位,the mechine is now on soft limit,1,ロボット関節がソフトリミットに到着
#define,TARGET_POS_OUTOF_REACH,0x0F0017,1,the target position is out of reach,目标位置不可达,the target position is out of reach,1,目標位置到着不能
#define,STOP_ON_SIGULARITY,0x0F0018,1,Singularity position protective stop,到达奇异点保护性停止,Singularity position protective stop,1,特異点に到着すると保護性停止
#define,CAN_DEVICE_INIT_FAILED ,0x0F0019,1,can device initialize failed,CAN设备初始化失败,can device initialize failed,1,CAN設備初期化に失敗
#define,FAILED_TO_ADD_LINE,0x0F0020,1,failed to move line to the target position,直线运动到目标位置失败,failed to move line to the target position,1,目標位置までの直線性運動が失敗
#define,UNSUPPORTED_ROBOT_MODEL ,0x0F0021,1,model of connected robot is now unsupported,机器人型号不支持,model of connected robot is now unsupported,1,ロボット型式にサポートしない
#define,INVALID_ROBOT_SERIAL_NUM ,0x0F0022,1,invalid robot serial number,机器人序列号无效,invalid robot serial number,1,ロボットシリアル番号無効
#define,INVALID_IDENTIFY_TRAJ_INDEX,0x0F0023,1,invalid payload identification trajectory,负载辨识轨迹索引无效,invalid payload identification trajectory,1,負荷認識軌跡インデックスが無効
#define,CANNOT_SET_RAPIDRATE_IN_REDUCE,0x0F0024,2,cannot set rapid rate in reduced mode,缩减模式下无法设置倍率,cannot set rapid rate in reduced mode,1,縮小モードでは倍率設定ができず。
#define,NONCOMPLIANT_IDENTIFY_TRAJ,0x0F0025,1,non-compliant identify trajectory,负载辨识轨迹定义不满足规范,non-compliant identify trajectory,1,負荷認識軌跡定義が仕様に不満足
#define,SERVO_OFF_BEFORE_POWER_OFF,0x0F0026,2,please servo off first before powering off the robot,关电源之前请下使能,please servo off first before powering off the robot,1,電源を切る前に動かせないよう。
#define,CANNOT_SERVO_OFF_WHEN_PROG_RUN,0x0F0027,2,cannot disable the robot when a program is running,程序运行期间不能下使能,cannot disable the robot when a program is running,1,プログラム運行中には動き保持する。
,,,,,,,,
#define,JOINT_EXCEED_VEL_LIMIT_J1 ,0x000030,1,joint 1 velocity exceed the limit,关节一运动速度超过限制,joint 1 velocity exceed the limit,1,関節一運動速度がリミット超過
#define,JOINT_EXCEED_VEL_LIMIT_J2 ,0x010030,1,joint 2 velocity exceed the limit,关节二运动速度超过限制,joint 2 velocity exceed the limit,1,関節二運動速度がリミット超過
#define,JOINT_EXCEED_VEL_LIMIT_J3 ,0x020030,1,joint 3 velocity exceed the limit,关节三运动速度超过限制,joint 3 velocity exceed the limit,1,関節三運動速度がリミット超過
#define,JOINT_EXCEED_VEL_LIMIT_J4 ,0x030030,1,joint 4 velocity exceed the limit,关节四运动速度超过限制,joint 4 velocity exceed the limit,1,関節四運動速度がリミット超過
#define,JOINT_EXCEED_VEL_LIMIT_J5 ,0x040030,1,joint 5 velocity exceed the limit,关节五运动速度超过限制,joint 5 velocity exceed the limit,1,関節五運動速度がリミット超過
#define,JOINT_EXCEED_VEL_LIMIT_J6 ,0x050030,1,joint 6 velocity exceed the limit,关节六运动速度超过限制,joint 6 velocity exceed the limit,1,関節六運動速度がリミット超過
#define,JOINT_HIT_POS_SLIMIT_J1,0x000031,1,hits the joint 1's positive soft limit,关节一到达正软限位,hits the joint 1's positive soft limit,1,関節一がプラスルソフトリミットに到着
#define,JOINT_HIT_POS_SLIMIT_J2,0x010031,1,hits the joint 2's positive soft limit,关节二到达正软限位,hits the joint 2's positive soft limit,1,関節二がプラスルソフトリミットに到着
#define,JOINT_HIT_POS_SLIMIT_J3,0x020031,1,hits the joint 3's positive soft limit,关节三到达正软限位,hits the joint 3's positive soft limit,1,関節三がプラスルソフトリミットに到着
#define,JOINT_HIT_POS_SLIMIT_J4,0x030031,1,hits the joint 4's positive soft limit,关节四到达正软限位,hits the joint 4's positive soft limit,1,関節四がプラスルソフトリミットに到着
#define,JOINT_HIT_POS_SLIMIT_J5,0x040031,1,hits the joint 5's positive soft limit,关节五到达正软限位,hits the joint 5's positive soft limit,1,関節五がプラスルソフトリミットに到着
#define,JOINT_HIT_POS_SLIMIT_J6,0x050031,1,hits the joint 6's positive soft limit,关节六到达正软限位,hits the joint 6's positive soft limit,1,関節六がプラスルソフトリミットに到着
#define,JOINT_HIT_NEG_SLIMIT_J1,0x000032,1,hits the joint 1's negative soft limit,关节一到达负软限位,hits the joint 1's negative soft limit,1,関節一がマイナスルソフトリミットに到着
#define,JOINT_HIT_NEG_SLIMIT_J2,0x010032,1,hits the joint 2's negative soft limit,关节二到达负软限位,hits the joint 2's negative soft limit,1,関節二がマイナスルソフトリミットに到着
#define,JOINT_HIT_NEG_SLIMIT_J3,0x020032,1,hits the joint 3's negative soft limit,关节三到达负软限位,hits the joint 3's negative soft limit,1,関節三がマイナスルソフトリミットに到着
#define,JOINT_HIT_NEG_SLIMIT_J4,0x030032,1,hits the joint 4's negative soft limit,关节四到达负软限位,hits the joint 4's negative soft limit,1,関節四がマイナスルソフトリミットに到着
#define,JOINT_HIT_NEG_SLIMIT_J5,0x040032,1,hits the joint 5's negative soft limit,关节五到达负软限位,hits the joint 5's negative soft limit,1,関節五がマイナスルソフトリミットに到着
#define,JOINT_HIT_NEG_SLIMIT_J6,0x050032,1,hits the joint 6's negative soft limit,关节六到达负软限位,hits the joint 6's negative soft limit,1,関節六がマイナスルソフトリミットに到着
,,,,,,,,
#define,SINGULARITY_PROTECTION,0x0F0033,1,arrive sigularity position protective stop,到达奇异点保护性停止,arrive sigularity position protective stop,1,特異点到着すると保護性停止
#define,COLLISION_PROTECTION,0x0F0034,1,collision detected pretective stop,检测到碰撞 保护性停止,collision detected pretective stop,1,衝突を検測すると保護性停止
,,,,,,,,
#define,JOG_TARGET_EXCEED_POS_SLIMIT_J1,0x000035,1,cannot jog joint 1 further past max soft limit,JOG目标位置超过关节一正软限位,cannot jog joint 1 further past max soft limit,1,JOG目標位置が関節一のプラスルソフトリミット超過
#define,JOG_TARGET_EXCEED_POS_SLIMIT_J2,0x010035,1,cannot jog joint 2 further past max soft limit,JOG目标位置超过关节二正软限位,cannot jog joint 2 further past max soft limit,1,JOG目標位置が関節二のプラスルソフトリミット超過
#define,JOG_TARGET_EXCEED_POS_SLIMIT_J3,0x020035,1,cannot jog joint 3 further past max soft limit,JOG目标位置超过关节三正软限位,cannot jog joint 3 further past max soft limit,1,JOG目標位置が関節三のプラスルソフトリミット超過
#define,JOG_TARGET_EXCEED_POS_SLIMIT_J4,0x030035,1,cannot jog joint 4 further past max soft limit,JOG目标位置超过关节四正软限位,cannot jog joint 4 further past max soft limit,1,JOG目標位置が関節四のプラスルソフトリミット超過
#define,JOG_TARGET_EXCEED_POS_SLIMIT_J5,0x040035,1,cannot jog joint 5 further past max soft limit,JOG目标位置超过关节五正软限位,cannot jog joint 5 further past max soft limit,1,JOG目標位置が関節五のプラスルソフトリミット超過
#define,JOG_TARGET_EXCEED_POS_SLIMIT_J6,0x050035,1,cannot jog joint 6 further past max soft limit,JOG目标位置超过关节六正软限位,cannot jog joint 6 further past max soft limit,1,JOG目標位置が関節六のプラスルソフトリミット超過
#define,JOG_TARGET_EXCEED_NEG_SLIMIT_J1,0x000036,1,cannot jog joint 1 further past min soft limit,JOG目标位置超过关节一负软限位,cannot jog joint 1 further past min soft limit,1,JOG目標位置が関節一のマイナスルソフトリミット超過
#define,JOG_TARGET_EXCEED_NEG_SLIMIT_J2,0x010036,1,cannot jog joint 2 further past min soft limit,JOG目标位置超过关节二负软限位,cannot jog joint 2 further past min soft limit,1,JOG目標位置が関節二のマイナスルソフトリミット超過
#define,JOG_TARGET_EXCEED_NEG_SLIMIT_J3,0x020036,1,cannot jog joint 3 further past min soft limit,JOG目标位置超过关节三负软限位,cannot jog joint 3 further past min soft limit,1,JOG目標位置が関節三のマイナスルソフトリミット超過
#define,JOG_TARGET_EXCEED_NEG_SLIMIT_J4,0x030036,1,cannot jog joint 4 further past min soft limit,JOG目标位置超过关节四负软限位,cannot jog joint 4 further past min soft limit,1,JOG目標位置が関節四のマイナスルソフトリミット超過
#define,JOG_TARGET_EXCEED_NEG_SLIMIT_J5,0x040036,1,cannot jog joint 5 further past min soft limit,JOG目标位置超过关节五负软限位,cannot jog joint 5 further past min soft limit,1,JOG目標位置が関節五のマイナスルソフトリミット超過
#define,JOG_TARGET_EXCEED_NEG_SLIMIT_J6,0x050036,1,cannot jog joint 6 further past min soft limit,JOG目标位置超过关节六负软限位,cannot jog joint 6 further past min soft limit,1,JOG目標位置が関節六のマイナスルソフトリミット超過
,,,,,,,,
#define,DRAG_CANNOT_ENABLE_ON_LIMIT ,0x0F0040,1,On Soft limit position can not get into drag mode,在软限位上没法进入拖拽模式,On Soft limit position can not get into drag mode,1,ソフトリミットにドラッグモード不可能
#define,DRAG_EXCEED_JOINT_LIMIT ,0x0F0041,1,Drag exceeding soft limit it will quit drag mode,拖拽超出软限位 将退出拖拽,Drag exceeding soft limit it will quit drag mode,1,ソフトリミットにオーバーし、ドラッグモードより退出
#define,DRAG_NEARBY_SOFT_LIMIT_J1 ,0x000042,1,joint 1 is now nearby the soft limit,关节一即将达到软限位,joint 1 is now nearby the soft limit,1,関節一がソフトリミットに接近
#define,DRAG_NEARBY_SOFT_LIMIT_J2 ,0x010042,1,joint 2 is now nearby the soft limit,关节二即将达到软限位,joint 2 is now nearby the soft limit,1,関節二がソフトリミットに接近
#define,DRAG_NEARBY_SOFT_LIMIT_J3 ,0x020042,1,joint 3 is now nearby the soft limit,关节三即将达到软限位,joint 3 is now nearby the soft limit,1,関節三がソフトリミットに接近
#define,DRAG_NEARBY_SOFT_LIMIT_J4,0x030042,1,joint 4 is now nearby the soft limit,关节四即将达到软限位,joint 4 is now nearby the soft limit,1,関節四がソフトリミットに接近
#define,DRAG_NEARBY_SOFT_LIMIT_J5,0x040042,1,joint 5 is now nearby the soft limit,关节五即将达到软限位,joint 5 is now nearby the soft limit,1,関節五がソフトリミットに接近
#define,DRAG_NEARBY_SOFT_LIMIT_J6 ,0x050042,1,joint 6 is now nearby the soft limit,关节六即将达到软限位,joint 6 is now nearby the soft limit,1,関節六がソフトリミットに接近
#define,CANNOT_DRAG_WHEN_SERVOOFF,0x0F0043,1, cannot enter drage mode when robot is disabled,机器人未使能无法进入拖拽, cannot enter drage mode when robot is disabled,1,ロボットが未給電状態で、ドラッグモード使えません。
#define,CANNOT_DRAG_DURING_MOVEMENT,0x0F0044,2,cannot enter drage mode when robot is in movement,机器人正在运动无法进入拖拽,cannot enter drage mode when robot is in movement,1,ロボットが運動中で、ドラッグモード使えません。
,,,,,,,,
#define,ADMIT_CANNOT_ENABLE_WITHOUT_SENSOR,0x0F0050,1,cannot enable admittance control since sensor is not ready,力矩传感器未就绪,无法使能导纳控制,cannot enable admittance control since sensor is not ready,1,トルクセンサが未整備で、アドミタンス制御不可
#define,ADMIT_CANNOT_SET_MODE_IN_OPERATION,0x0F0051,2,cannot switch senor mode when in admittance control,导纳控制过程中无法切换力矩传感器模式,cannot switch senor mode when in admittance control,1,アドミタンス制御中にトルクセンサモードの切り替えが不可
#define,SENSOR_FAULT_DURING_ADMITTANCE,0x0F0052,1,torque sensor fault detected during admittance control,导纳控制过程中力矩传感器故障,torque sensor fault detected during admittance control,1,アドミタンス制御中のトルクセンサ故障
#define,CANNOT_STEP_WHILE_RUNNING,0x0F0054,2,cannot step while already executing,单步调试期间不能运行程序,cannot step while already executing,1,シングルステップのデバッグ中にはプログラム実行不能
#define,CANNOT_SET_COLLISION_SENSITIVITY,0x0F0055,2,cannot set collision sensitivity in drag mode or force control mode,拖拽期间不能设置碰撞灵敏度,cannot set collision sensitivity in drag mode or force control mode,1,ドラッグモードで衝突感度設定不能
#define,CANNOT_ACCESS_EXTIO_SINCE_OFFLINE ,0x0F0056,1,cannot access extended IO module since it's not running,扩展IO模块未运行 无法访问,cannot access extended IO module since it's not running,1,拡張IOモジュールが実行されていないため、アクセスに失敗しました
,,,,,,,,
#define,DRIVE_ENABLE_TIMEOUT ,0x0F1001,1,timeout when servo on the drives,使能超时 请重新上电,timeout when servo on the drives,1,動かすタイムアウト、再給電してください
#define,DRIVE_QUERY_VERSION_TIMEOUT,0x0F1002,1,query servo version timeout,查询伺服版本号超时,query servo version timeout,1,サーボバージョン番号クエリータイムアウト
#define,DRIVE_ERR_CONNECT_ERR_J1 ,0x001002,1,joint 1 CAN connection error,关节一CAN连接异常,joint 1 CAN connection error,1,関節一CAN接続異常
#define,DRIVE_ERR_CONNECT_ERR_J2 ,0x011002,1,joint 2 CAN connection error,关节二CAN连接异常,joint 2 CAN connection error,1,関節二CAN接続異常
#define,DRIVE_ERR_CONNECT_ERR_J3,0x021002,1,joint 3 CAN connection error,关节三CAN连接异常,joint 3 CAN connection error,1,関節三CAN接続異常
#define,DRIVE_ERR_CONNECT_ERR_J4,0x031002,1,joint 4 CAN connection error,关节四CAN连接异常,joint 4 CAN connection error,1,関節四CAN接続異常
#define,DRIVE_ERR_CONNECT_ERR_J5 ,0x041002,1,joint 5 CAN connection error,关节五CAN连接异常,joint 5 CAN connection error,1,関節五CAN接続異常
#define,DRIVE_ERR_CONNECT_ERR_J6 ,0x051002,1,joint 6 CAN connection error,关节六CAN连接异常,joint 6 CAN connection error,1,関節六CAN接続異常
#define,JOINT_AMPLIFIER_FAULT_J1,0x001003,1,joint 1 amplifier fault detected,关节一驱动器故障,joint 1 amplifier fault detected,1,関節一駆動機構故障
#define,JOINT_AMPLIFIER_FAULT_J2,0x011003,1,joint 2 amplifier fault detected,关节二驱动器故障,joint 2 amplifier fault detected,1,関節二駆動機構故障
#define,JOINT_AMPLIFIER_FAULT_J3,0x021003,1,joint 3 amplifier fault detected,关节三驱动器故障,joint 3 amplifier fault detected,1,関節三駆動機構故障
#define,JOINT_AMPLIFIER_FAULT_J4,0x031003,1,joint 4 amplifier fault detected,关节四驱动器故障,joint 4 amplifier fault detected,1,関節四駆動機構故障
#define,JOINT_AMPLIFIER_FAULT_J5,0x041003,1,joint 5 amplifier fault detected,关节五驱动器故障,joint 5 amplifier fault detected,1,関節五駆動機構故障
#define,JOINT_AMPLIFIER_FAULT_J6,0x051003,1,joint 6 amplifier fault detected,关节六驱动器故障,joint 6 amplifier fault detected,1,関節六駆動機構故障
#define,JOINT_FOLLOWING_ERROR_J1,0x001004,1,joint 1 following error detected,关节一跟随误差过大,joint 1 following error detected,1,関節一追従誤差過大
#define,JOINT_FOLLOWING_ERROR_J2,0x011004,1,joint 2 following error detected,关节二跟随误差过大,joint 2 following error detected,1,関節二追従誤差過大
#define,JOINT_FOLLOWING_ERROR_J3,0x021004,1,joint 3 following error detected,关节三跟随误差过大,joint 3 following error detected,1,関節三追従誤差過大
#define,JOINT_FOLLOWING_ERROR_J4,0x031004,1,joint 4 following error detected,关节四跟随误差过大,joint 4 following error detected,1,関節四追従誤差過大
#define,JOINT_FOLLOWING_ERROR_J5,0x041004,1,joint 5 following error detected,关节五跟随误差过大,joint 5 following error detected,1,関節五追従誤差過大
#define,JOINT_FOLLOWING_ERROR_J6,0x051004,1,joint 6 following error detected,关节六跟随误差过大,joint 6 following error detected,1,関節六追従誤差過大
,,,,,,,,
#define,PROGRAM_INVALID_SYNTAX,0x0F2000,1,syntax error detected in the program file,编程文件语法错误,syntax error detected in the program file,1,プログラミングファイル文法エラー
#define,PROGRAM_FILE_NOT_OPEN,0x0F2001,1,no program file is opened,没有编程文件打开,no program file is opened,1,開きているプログラミングファイルなし
#define,PROGRAM_FILE_FAILED_OPEN,0x0F2002,1,failed to open the program file,编程文件打开失败,failed to open the program file,1,プログラミングファイルのオープンに失敗
#define,PROGRAM_FILE_FAILED_CLOSE,0x0F2003,1,failed to close the program file,编程文件关闭失败,failed to close the program file,1,プログラミングファイルのクローズに失敗
#define,INTERP_ERR_TEMP,0x0F2010,1,Error,解析错误,Error,1,エラー分析
#define,INTERP_ERR_PYCALL_FAILED,0x0F2011,1,PyCall()Error,PyCall()失败,PyCall()Error,1,PyCall()失敗
#define,INTERP_ERR_ASSERT_FAILED,0x0F2012,1,Asset Error,解析断言失败,Asset Error,1,断言分析失敗
#define,INTERP_ERR_ZERO_RADIUS_ARC,0x0F2013,1,Error Radius is zero,解析失败,圆弧半径为零,Error Radius is zero,1,分析失敗、円弧半径はゼロ
#define,INTERP_ERR_SYNTAX_FAILED,0x0F2014,1,Syntax Error,解析失败,语法错误,Syntax Error,1,分析失敗、文法エラー
#define,INTERP_ERR_SOCKET_CREATE,0x0F2015,1,Net Connect Error,网络连接失败,Net Connect Error,1,ネットとの接続失敗
#define,INTERP_ERR_SOCKET_CONNECT,0x0F2016,1,Connect Server Error,连接服务端失败,Connect Server Error,1,サーバとの接続失敗
#define,INTERP_ERR_SOCKET_NO_CONNECT,0x0F2017,1,communication failure since no connection is established,通讯失败未连接服务器,communication failure since no connection is established,1,通信失敗、サーバに接続エラー
#define,INTERP_ERR_SOCKET_RECV_DATA ,0x0F2018,1,failed to receive data via tcp/ip connection,TCP/IP接收数据失败,failed to receive data via tcp/ip connection,1,TCP/IPデータ受信失敗
#define,INTERP_ERR_SOCKET_SEND_DATA,0x0F2019,1,failed to send data via tcp/ip connection,TCP/IP发送数据失败,failed to send data via tcp/ip connection,1,TCP/IPデータ送信失敗
#define,INTERP_ERR_LOAD_2D_CFG ,0x0F201A,1,load 2D Vision config failed!,加载2D视觉配置失败,load 2D Vision config failed!,1,2D視覚配置の読み込み失敗
#define,INTERP_ERR_INTERNAL ,0x0F201B,1,internal error,内部错误,internal error,1,内部エラー
#define,INTERP_ERR_PARAMETER_NOT_TERMINATED,0x0F201C,1,Named parameter not terminated,作业程序语法错误,Named parameter not terminated,1,作業手順文法エラー
#define,INTERP_ERR_EOF_NO_PERCENT_SIGN ,0x0F201D,1,File ended with no percent sign or program end,作业程序语法错误,File ended with no percent sign or program end,1,作業手順文法エラー
#define,INTERP_ERR_INVALID_P_WORD ,0x0F201E ,1,invalid P-word with M66,作业程序语法错误,invalid P-word with M66,1,作業手順文法エラー
#define,INTERP_ERR_UNKNOWN_MOTION_CODE ,0x0F201F,1,unknown motion code,作业程序语法错误,unknown motion code,1,作業手順文法エラー
#define,INTERP_ERR_INDEX_INCORRECT_AXIS ,0x0F2020 ,1,trying to index incorrect axis,作业程序语法错误,trying to index incorrect axis,1,作業手順文法エラー
#define,INTERP_ERR_FUNCTION_NOT_CALLED ,0x0F2021 ,1,function should not have been called,方法不该被调用,function should not have been called,1,方法徴用不可
#define,INTERP_ERR_UNKNOWN_OPERATION ,0x0F2022 ,1,unknown operation,未知操作,unknown operation,1,未知操作
#define,INTERP_ERR_BAD_NUMBER_FORMAT ,0x0F2023 ,1,bad number format,错误数据格式,bad number format,1,エラーデータフォーマット
#define,INTERP_ERR_PARAMETER_NOT_DEFINED,0x0F2024 ,1,parameter not defined,参数未定义,parameter not defined,1,パラメータが未定義
#define,INTERP_ERR_OPEN_FILE_FAILED ,0x0F2025 ,1,open file failed,打开文件失败,open file failed,1,ファイルが開けられない
#define,INTERP_ERR_KEY_NOT_FOUND_IN_INI ,0x0F2026,1,key not found in INI file,作业程序语法错误,key not found in INI file,1,作業手順文法エラー
#define,INTERP_ERR_OUT_OF_MEMORY ,0x0F2027 ,1,Out of memory,内存不足,Out of memory,1,メモリ不足
#define,INTERP_ERR_RETURN_VALUE_TYPE ,0x0F2028 ,1,Error of return value type,返回值类型错误,Error of return value type,1,戻り値タイプエラー
#define,INTERP_ERR_TOO_MANY_SUBROUTINE_LEVELS,0x0F2029,1,Too many subroutine levels,作业程序语法错误,Too many subroutine levels,1,作業手順文法エラー
#define,INTERP_ERR_CANNOT_ADD_PARAMETER ,0x0F202A ,1,can not add parameter,不能添加参数,can not add parameter,1,パラメータの追加が不可
#define,INTERP_ERR_USER_DEFINED ,0x0F202B,1,user defined error,用户定义错误,user defined error,1,ユーザ定義エラー
#define,INTERP_ERR_NON_INTEGER_FOR_INTEGER,0x0F202C,1,non integer value for integer,作业程序语法错误,non integer value for integer,1,作業手順文法エラー
#define,INTERP_ERR_UNEXPECT_CHARACTER_AFTER_O_WORD ,0x0F202D,1,unexpect character after o-word,作业程序语法错误,unexpect character after o-word,1,作業手順文法エラー
#define,INTERP_ERR_UNKNOWN_OPERATION_NAME_STARTING ,0x0F202E ,1,Unknown operation name starting,作业程序语法错误,Unknown operation name starting,1,作業手順文法エラー
#define,INTERP_ERR_UNCLOSED_EXPRESSION ,0x0F202F,1,unclosed expression,作业程序语法错误,unclosed expression,1,作業手順文法エラー
#define,INTERP_ERR_UNKNOWN_WORD_STARTING,0x0F2030,1,Unknown word starting,作业程序语法错误,Unknown word starting,1,作業手順文法エラー
#define,INTERP_ERR_UNKNOWN_WORD_UNARY_OPERATION ,0x0F2031 ,1,Unknown word where unary operation could be,作业程序语法错误,Unknown word where unary operation could be,1,作業手順文法エラー
#define,INTERP_ERR_UNKNOWN_COMMAND_IN_O_LINE,0x0F2032 ,1,Unknown control command in o word,作业程序语法错误,Unknown control command in o word,1,作業手順文法エラー
#define,INTERP_ERR_COMMAND_TOO_LONG ,0x0F2033 ,1,Command too long,指令过长,Command too long,1,指令長すぎ
#define,INTERP_ERR_PARAMETER_FILE_OUTOF_,0x0F2034,1,Parameter file out of order,作业程序语法错误,Parameter file out of order,1,作業手順文法エラー
#define,INTERP_ERR_UNHANDLED_INDEX ,0x0F2035 ,1,unhandled index,作业程序语法错误,unhandled index,1,作業手順文法エラー
#define,INTERP_ERR_FILE_NOT_OPENED ,0x0F2036 ,1,file not opened,文件没有打开,file not opened,1,ファイルが開けられない
#define,INTERP_ERR_REDEFINITION ,0x0F2037 ,1,redefined,重复定义,redefined,1,繰り返す定義
#define,INTERP_ERR_UNKNOWN_OWORD_NUMBER ,0x0F2038,1,Unknown o-word number,作业程序语法错误,Unknown o-word number,1,作業手順文法エラー
#define,INTERP_ERR_CANNOT_REOPEN_FILE ,0x0F2039,1,can not reopen file,重复打开文件,can not reopen file,1,ファイルを繰り返し開く
#define,INTERP_ERR_SOCK_INVALIDID,0x0F2050,1,invalid socket id,socket id 无效,invalid socket id,1,socket id 無効
#define,INTERP_ERR_INVERSE_FAILED,0x0F2051,1,failed to do the inverse kinematics,逆解失败,failed to do the inverse kinematics,1,逆解失敗
#define,INTERP_ERR_FORWARD_FAILED,0x0F2052,1,failed to do the forward kinematics,正解失败,failed to do the forward kinematics,1,正解失敗
#define,INTERP_ERR_RECV_WRONG_DATA,0x0F2053,1,wrong data received via tcp/ip connection,TCP/IP 通讯接收到错误数据,wrong data received via tcp/ip connection,1,TCP/IP通信がエラーデータを受信
#define,INTERP_ERR_INVALID_ARRAY,0x0F2054,1,invalid array variable,数组变量无效,invalid array variable,1,配列変数が無効
#define,INTERP_ERR_INVALID_INDEX,0x0F2055,1,invalid array element index,元素索引无效,invalid array element index,1,要素インデックスが無効
#define,INTERP_ERR_INVALID_INTPL_RATIO,0x0F2056,1,invalid coefficiency for pose interpolation,位姿插值系数无效,invalid coefficiency for pose interpolation,1,ポーズの補間係数が無効です
#define,INTERP_ERR_UNMATCHED_STATMENT_END,0x0F2057,1,end token in control block does not match correctly,控制块结束符不匹配,end token in control block does not match correctly,1,制御ブロック内の終了トークンが正しく一致しません
,,,,,,,,
#define,VISION_CONNECT_FAILED,0x0F3001 ,1,failed to connect with specified camera,连接指定相机失败,failed to connect with specified camera,1,指定カメラ接続失敗
#define,VISION_NO_DEVICE_CONNECTED,0x0F3002,1,no visual device is now connected,没有连接视觉设备,no visual device is now connected,1,視覚設備見未接続
,,,,,,,,
#define,CAN_MASTER_SERVO_MODE_ERROR ,0x0F4001,1,servo state machine error,伺服状态机错误,servo state machine error,1,サーボ状態マシンエラー
,,,,,,,,
,,,,,,,,
,,,,,,,,
伺服部分错误代码,,,,,,,,
#define,DRIVE_ERR_PHASE_OVERCURRENT_J1,0x102320,1,joint 1 phase current over limit,关节一输出过流,joint 1 phase current over limit,1,関節一出力オーバー
#define,DRIVE_ERR_PHASE_OVERCURRENT_J2,0x112320,1,joint 2 phase current over limit,关节二输出过流,joint 2 phase current over limit,1,関節二出力オーバー
#define,DRIVE_ERR_PHASE_OVERCURRENT_J3,0x122320,1,joint 3 phase current over limit,关节三输出过流,joint 3 phase current over limit,1,関節三出力オーバー
#define,DRIVE_ERR_PHASE_OVERCURRENT_J4,0x132320,1,joint 4 phase current over limit,关节四输出过流,joint 4 phase current over limit,1,関節四出力オーバー
#define,DRIVE_ERR_PHASE_OVERCURRENT_J5,0x142320,1,joint 5 phase current over limit,关节五输出过流,joint 5 phase current over limit,1,関節五出力オーバー
#define,DRIVE_ERR_PHASE_OVERCURRENT_J6,0x152320,1,joint 6 phase current over limit,关节六输出过流,joint 6 phase current over limit,1,関節六出力オーバー
,,,,,,,,
#define,DRIVE_ERR_ATUNE_OVERCURRENT_J1,0x102321,1,joint 1 auto tune current over limit,关节一自学习过流,joint 1 auto tune current over limit,1,関節一オートチューンオーバー
#define,DRIVE_ERR_ATUNE_OVERCURRENT_J2,0x112321,1,joint 2 auto tune current over limit,关节二自学习过流,joint 2 auto tune current over limit,1,関節二オートチューンオーバー
#define,DRIVE_ERR_ATUNE_OVERCURRENT_J3,0x122321,1,joint 3 auto tune current over limit,关节三自学习过流,joint 3 auto tune current over limit,1,関節三オートチューンオーバー
#define,DRIVE_ERR_ATUNE_OVERCURRENT_J4,0x132321,1,joint 4 auto tune current over limit,关节四自学习过流,joint 4 auto tune current over limit,1,関節四オートチューンオーバー
#define,DRIVE_ERR_ATUNE_OVERCURRENT_J5,0x142321,1,joint 5 auto tune current over limit,关节五自学习过流,joint 5 auto tune current over limit,1,関節五オートチューンオーバー
#define,DRIVE_ERR_ATUNE_OVERCURRENT_J6,0x152321,1,joint 6 auto tune current over limit,关节六自学习过流,joint 6 auto tune current over limit,1,関節六オートチューンオーバー
,,,,,,,,
#define,DRIVE_ERR_SAME_DIR_OVERSPD_J1 ,0x108480,1,joint 1 same direction over speed,关节一同向超速,joint 1 same direction over speed,1,関節一同行速度オーバー
#define,DRIVE_ERR_SAME_DIR_OVERSPD_J2 ,0x118480,1,joint 2 same direction over speed,关节二同向超速,joint 2 same direction over speed,1,関節二同行速度オーバー
#define,DRIVE_ERR_SAME_DIR_OVERSPD_J3 ,0x128480,1,joint 3 same direction over speed,关节三同向超速,joint 3 same direction over speed,1,関節三同行速度オーバー
#define,DRIVE_ERR_SAME_DIR_OVERSPD_J4 ,0x138480,1,joint 4 same direction over speed,关节四同向超速,joint 4 same direction over speed,1,関節四同行速度オーバー
#define,DRIVE_ERR_SAME_DIR_OVERSPD_J5 ,0x148480,1,joint 5 same direction over speed,关节五同向超速,joint 5 same direction over speed,1,関節五同行速度オーバー
#define,DRIVE_ERR_SAME_DIR_OVERSPD_J6 ,0x158480,1,joint 6 same direction over speed,关节六同向超速,joint 6 same direction over speed,1,関節六同行速度オーバー
,,,,,,,,
#define,DRIVE_ERR_REV_DIR_OVERSPD_J1,0x108481,1,joint 1 reverse direction over speed,关节一反向超速,joint 1 reverse direction over speed,1,関節一逆行速度オーバー
#define,DRIVE_ERR_REV_DIR_OVERSPD_J2 ,0x118481,1,joint 2 reverse direction over speed,关节二反向超速,joint 2 reverse direction over speed,1,関節二逆行速度オーバー
#define,DRIVE_ERR_REV_DIR_OVERSPD_J3 ,0x128481,1,joint 3 reverse direction over speed,关节三反向超速,joint 3 reverse direction over speed,1,関節三逆行速度オーバー
#define,DRIVE_ERR_REV_DIR_OVERSPD_J4 ,0x138481,1,joint 4 reverse direction over speed,关节四反向超速,joint 4 reverse direction over speed,1,関節四逆行速度オーバー
#define,DRIVE_ERR_REV_DIR_OVERSPD_J5 ,0x148481,1,joint 5 reverse direction over speed,关节五反向超速,joint 5 reverse direction over speed,1,関節五逆行速度オーバー
#define,DRIVE_ERR_REV_DIR_OVERSPD_J6 ,0x158481,1,joint 6 reverse direction over speed,关节六反向超速,joint 6 reverse direction over speed,1,関節六逆行速度オーバー
,,,,,,,,
#define,DRIVE_ERR_OVER_MAX_SPD_J1,0x108482,1,joint 1 over max speed,关节一超过最大转速,joint 1 over max speed,1,関節一最大回転数超過
#define,DRIVE_ERR_OVER_MAX_SPD_J2,0x118482,1,joint 2 over max speed,关节二超过最大转速,joint 2 over max speed,1,関節二最大回転数超過
#define,DRIVE_ERR_OVER_MAX_SPD_J3 ,0x128482,1,joint 3 over max speed,关节三超过最大转速,joint 3 over max speed,1,関節三最大回転数超過
#define,DRIVE_ERR_OVER_MAX_SPD_J4,0x138482,1,joint 4 over max speed,关节四超过最大转速,joint 4 over max speed,1,関節四最大回転数超過
#define,DRIVE_ERR_OVER_MAX_SPD_J5 ,0x148482,1,joint 5 over max speed,关节五超过最大转速,joint 5 over max speed,1,関節五最大回転数超過
#define,DRIVE_ERR_OVER_MAX_SPD_J6 ,0x158482,1,joint 6 over max speed,关节六超过最大转速,joint 6 over max speed,1,関節六最大回転数超過
,,,,,,,,
#define,DRIVE_ERR_SPD_LAG_ERR_J1 ,0x108483,1,joint 1 speed err too large,关节一速度跟踪误差过大,joint 1 speed err too large,1,関節一速度追跡誤差過大
#define,DRIVE_ERR_SPD_LAG_ERR_J2,0x118483,1,joint 2 speed err too large,关节二速度跟踪误差过大,joint 2 speed err too large,1,関節二速度追跡誤差過大
#define,DRIVE_ERR_SPD_LAG_ERR_J3 ,0x128483,1,joint 3 speed err too large,关节三速度跟踪误差过大,joint 3 speed err too large,1,関節三速度追跡誤差過大
#define,DRIVE_ERR_SPD_LAG_ERR_J4,0x138483,1,joint 4 speed err too large,关节四速度跟踪误差过大,joint 4 speed err too large,1,関節四速度追跡誤差過大
#define,DRIVE_ERR_SPD_LAG_ERR_J5,0x148483,1,joint 5 speed err too large,关节五速度跟踪误差过大,joint 5 speed err too large,1,関節五速度追跡誤差過大
#define,DRIVE_ERR_SPD_LAG_ERR_J6 ,0x158483,1,joint 6 speed err too large,关节六速度跟踪误差过大,joint 6 speed err too large,1,関節六速度追跡誤差過大
,,,,,,,,
#define,DRIVE_ERR_OVER_MAX_ACC_J1,0x108484,1,joint 1 over max acceleration,关节一加速度超差,joint 1 over max acceleration,1,関節一最大加速度以上
#define,DRIVE_ERR_OVER_MAX_ACC_J2 ,0x118484,1,joint 2 over max acceleration,关节二加速度超差,joint 2 over max acceleration,1,関節二最大加速度以上
#define,DRIVE_ERR_OVER_MAX_ACC_J3,0x128484,1,joint 3 over max acceleration,关节三加速度超差,joint 3 over max acceleration,1,関節三最大加速度以上
#define,DRIVE_ERR_OVER_MAX_ACC_J4,0x138484,1,joint 4 over max acceleration,关节四加速度超差,joint 4 over max acceleration,1,関節四最大加速度以上
#define,DRIVE_ERR_OVER_MAX_ACC_J5 ,0x148484,1,joint 5 over max acceleration,关节五加速度超差,joint 5 over max acceleration,1,関節五最大加速度以上
#define,DRIVE_ERR_OVER_MAX_ACC_J6 ,0x158484,1,joint 6 over max acceleration,关节六加速度超差,joint 6 over max acceleration,1,関節六最大加速度以上
,,,,,,,,
#define,DRIVE_ERR_SPD_STALL_ERR_J1 ,0x108485,1,joint 1 speed stall error,关节一电机失速,joint 1 speed stall error,1,関節一モーターストール
#define,DRIVE_ERR_SPD_STALL_ERR_J2 ,0x118485,1,joint 2 speed stall error,关节二电机失速,joint 2 speed stall error,1,関節二モーターストール
#define,DRIVE_ERR_SPD_STALL_ERR_J3 ,0x128485,1,joint 3 speed stall error,关节三电机失速,joint 3 speed stall error,1,関節三モーターストール
#define,DRIVE_ERR_SPD_STALL_ERR_J4 ,0x138485,1,joint 4 speed stall error,关节四电机失速,joint 4 speed stall error,1,関節四モーターストール
#define,DRIVE_ERR_SPD_STALL_ERR_J5 ,0x148485,1,joint 5 speed stall error,关节五电机失速,joint 5 speed stall error,1,関節五モーターストール
#define,DRIVE_ERR_SPD_STALL_ERR_J6 ,0x158485,1,joint 6 speed stall error,关节六电机失速,joint 6 speed stall error,1,関節六モーターストール
,,,,,,,,
#define,DRIVE_ERR_ENC_TIMEOUT_J1,0x107380,1,joint 1 encoder connetion time out,关节一编码器连接超时,joint 1 encoder connetion time out,1,関節一エンコーダ接続タイムアウト
#define,DRIVE_ERR_ENC_TIMEOUT_J2 ,0x117380,1,joint 2 encoder connetion time out,关节二编码器连接超时,joint 2 encoder connetion time out,1,関節二エンコーダ接続タイムアウト
#define,DRIVE_ERR_ENC_TIMEOUT_J3 ,0x127380,1,joint 3 encoder connetion time out,关节三编码器连接超时,joint 3 encoder connetion time out,1,関節三エンコーダ接続タイムアウト
#define,DRIVE_ERR_ENC_TIMEOUT_J4 ,0x137380,1,joint 4 encoder connetion time out,关节四编码器连接超时,joint 4 encoder connetion time out,1,関節四エンコーダ接続タイムアウト
#define,DRIVE_ERR_ENC_TIMEOUT_J5 ,0x147380,1,joint 5 encoder connetion time out,关节五编码器连接超时,joint 5 encoder connetion time out,1,関節五エンコーダ接続タイムアウト
#define,DRIVE_ERR_ENC_TIMEOUT_J6 ,0x157380,1,joint 6 encoder connetion time out,关节六编码器连接超时,joint 6 encoder connetion time out,1,関節六エンコーダ接続タイムアウト
,,,,,,,,
#define,DRIVE_ERR_ENC_BATTERY_ALM_J1,0x107381,1,joint 1 encoder battery low,关节一编码器电池欠压,joint 1 encoder battery low,1,関節一エンコーダのバッテリーが少ない
#define,DRIVE_ERR_ENC_BATTERY_ALM_J2,0x117381,1,joint 2 encoder battery low,关节二编码器电池欠压,joint 2 encoder battery low,1,関節二エンコーダのバッテリーが少ない
#define,DRIVE_ERR_ENC_BATTERY_ALM_J3,0x127381,1,joint 3 encoder battery low,关节三编码器电池欠压,joint 3 encoder battery low,1,関節三エンコーダのバッテリーが少ない
#define,DRIVE_ERR_ENC_BATTERY_ALM_J4,0x137381,1,joint 4 encoder battery low,关节四编码器电池欠压,joint 4 encoder battery low,1,関節四エンコーダのバッテリーが少ない
#define,DRIVE_ERR_ENC_BATTERY_ALM_J5,0x147381,1,joint 5 encoder battery low,关节五编码器电池欠压,joint 5 encoder battery low,1,関節五エンコーダのバッテリーが少ない
#define,DRIVE_ERR_ENC_BATTERY_ALM_J6,0x157381,1,joint 6 encoder battery low,关节六编码器电池欠压,joint 6 encoder battery low,1,関節六エンコーダのバッテリーが少ない
,,,,,,,,
#define,DRIVE_ERR_ENC_BATTERY_ERR_J1,0x107382,1,joint 1 encoder battery disconnected,关节一编码器电池断开,joint 1 encoder battery disconnected,1,関節一エンコーダーバッテリーが切断されました
#define,DRIVE_ERR_ENC_BATTERY_ERR_J2,0x117382,1,joint 2 encoder battery disconnected,关节二编码器电池断开,joint 2 encoder battery disconnected,1,関節二エンコーダーバッテリーが切断されました
#define,DRIVE_ERR_ENC_BATTERY_ERR_J3,0x127382,1,joint 3 encoder battery disconnected,关节三编码器电池断开,joint 3 encoder battery disconnected,1,関節三エンコーダーバッテリーが切断されました
#define,DRIVE_ERR_ENC_BATTERY_ERR_J4,0x137382,1,joint 4 encoder battery disconnected,关节四编码器电池断开,joint 4 encoder battery disconnected,1,関節四エンコーダーバッテリーが切断されました
#define,DRIVE_ERR_ENC_BATTERY_ERR_J5,0x147382,1,joint 5 encoder battery disconnected,关节五编码器电池断开,joint 5 encoder battery disconnected,1,関節五エンコーダーバッテリーが切断されました
#define,DRIVE_ERR_ENC_BATTERY_ERR_J6,0x157382,1,joint 6 encoder battery disconnected,关节六编码器电池断开,joint 6 encoder battery disconnected,1,関節六エンコーダーバッテリーが切断されました
,,,,,,,,
#define,DRIVE_ERR_ENC_EEPROM_ERR_J1,0x107383,1,joint 1 encoder e2prom error,关节一编码器存储角度错误,joint 1 encoder e2prom error,1,関節一エンコーダーe2promエラー
#define,DRIVE_ERR_ENC_EEPROM_ERR_J2 ,0x117383,1,joint 2 encoder e2prom error,关节二编码器存储角度错误,joint 2 encoder e2prom error,1,関節二エンコーダーe2promエラー
#define,DRIVE_ERR_ENC_EEPROM_ERR_J3 ,0x127383,1,joint 3 encoder e2prom error,关节三编码器存储角度错误,joint 3 encoder e2prom error,1,関節三エンコーダーe2promエラー
#define,DRIVE_ERR_ENC_EEPROM_ERR_J4 ,0x137383,1,joint 4 encoder e2prom error,关节四编码器存储角度错误,joint 4 encoder e2prom error,1,関節四エンコーダーe2promエラー
#define,DRIVE_ERR_ENC_EEPROM_ERR_J5 ,0x147383,1,joint 5 encoder e2prom error,关节五编码器存储角度错误,joint 5 encoder e2prom error,1,関節五エンコーダーe2promエラー
#define,DRIVE_ERR_ENC_EEPROM_ERR_J6 ,0x157383,1,joint 6 encoder e2prom error,关节六编码器存储角度错误,joint 6 encoder e2prom error,1,関節六エンコーダーe2promエラー
,,,,,,,,
#define,DRIVE_ERR_ENC_COUNT_ERR_J1 ,0x107384,1,joint 1 encoder count error,关节一编码器计数错误,joint 1 encoder count error,1,関節一エンコーダカウントエラー
#define,DRIVE_ERR_ENC_COUNT_ERR_J2 ,0x117384,1,joint 2 encoder count error,关节二编码器计数错误,joint 2 encoder count error,1,関節二エンコーダカウントエラー
#define,DRIVE_ERR_ENC_COUNT_ERR_J3 ,0x127384,1,joint 3 encoder count error,关节三编码器计数错误,joint 3 encoder count error,1,関節三エンコーダカウントエラー
#define,DRIVE_ERR_ENC_COUNT_ERR_J4 ,0x137384,1,joint 4 encoder count error,关节四编码器计数错误,joint 4 encoder count error,1,関節四エンコーダカウントエラー
#define,DRIVE_ERR_ENC_COUNT_ERR_J5 ,0x147384,1,joint 5 encoder count error,关节五编码器计数错误,joint 5 encoder count error,1,関節五エンコーダカウントエラー
#define,DRIVE_ERR_ENC_COUNT_ERR_J6 ,0x157384,1,joint 6 encoder count error,关节六编码器计数错误,joint 6 encoder count error,1,関節六エンコーダカウントエラー
,,,,,,,,
#define,DRIVE_ERR_ENC_DUAL_ERR_J1,0x107385,1,joint 1 bi-encoder ECC error,关节一双编码器校验错误,joint 1 bi-encoder ECC error,1,関節一ペアエンコーダ検証エラー
#define,DRIVE_ERR_ENC_DUAL_ERR_J2,0x117385,1,joint 2 bi-encoder ECC error,关节二双编码器校验错误,joint 2 bi-encoder ECC error,1,関節二ペアエンコーダ検証エラー
#define,DRIVE_ERR_ENC_DUAL_ERR_J3,0x127385,1,joint 3 bi-encoder ECC error,关节三双编码器校验错误,joint 3 bi-encoder ECC error,1,関節三ペアエンコーダ検証エラー
#define,DRIVE_ERR_ENC_DUAL_ERR_J4,0x137385,1,joint 4 bi-encoder ECC error,关节四双编码器校验错误,joint 4 bi-encoder ECC error,1,関節四ペアエンコーダ検証エラー
#define,DRIVE_ERR_ENC_DUAL_ERR_J5,0x147385,1,joint 5 bi-encoder ECC error,关节五双编码器校验错误,joint 5 bi-encoder ECC error,1,関節五ペアエンコーダ検証エラー
#define,DRIVE_ERR_ENC_DUAL_ERR_J6,0x157385,1,joint 6 bi-encoder ECC error,关节六双编码器校验错误,joint 6 bi-encoder ECC error,1,関節六ペアエンコーダ検証エラー
,,,,,,,,
#define,DRIVE_ERR_ENC_Z_MISS_J1,0x107387 ,1,joint 1 Z catching error,关节一Z线捕捉故障,joint 1 Z catching error,1,関節一Z相捕捉故障
#define,DRIVE_ERR_ENC_Z_MISS_J2 ,0x117387,1,joint 2 Z catching error,关节二Z线捕捉故障,joint 2 Z catching error,1,関節二Z相捕捉故障
#define,DRIVE_ERR_ENC_Z_MISS_J3 ,0x127387,1,joint 3 Z catching error,关节三Z线捕捉故障,joint 3 Z catching error,1,関節三Z相捕捉故障
#define,DRIVE_ERR_ENC_Z_MISS_J4 ,0x137387,1,joint 4 Z catching error,关节四Z线捕捉故障,joint 4 Z catching error,1,関節四Z相捕捉故障
#define,DRIVE_ERR_ENC_Z_MISS_J5 ,0x147387,1,joint 5 Z catching error,关节五Z线捕捉故障,joint 5 Z catching error,1,関節五Z相捕捉故障
#define,DRIVE_ERR_ENC_Z_MISS_J6 ,0x157387,1,joint 6 Z catching error,关节六Z线捕捉故障,joint 6 Z catching error,1,関節六Z相捕捉故障
,,,,,,,,
#define,DRIVE_ERR_POS_LAG_ERR_J1 ,0x108611 ,1,joint 1 position error too large,关节一位置偏差过大,joint 1 position error too large,1,関節一位置ずれ過大
#define,DRIVE_ERR_POS_LAG_ERR_J2 ,0x118611,1,joint 2 position error too large,关节二位置偏差过大,joint 2 position error too large,1,関節二位置ずれ過大
#define,DRIVE_ERR_POS_LAG_ERR_J3 ,0x128611,1,joint 3 position error too large,关节三位置偏差过大,joint 3 position error too large,1,関節三位置ずれ過大
#define,DRIVE_ERR_POS_LAG_ERR_J4 ,0x138611,1,joint 4 position error too large,关节四位置偏差过大,joint 4 position error too large,1,関節四位置ずれ過大
#define,DRIVE_ERR_POS_LAG_ERR_J5 ,0x148611,1,joint 5 position error too large,关节五位置偏差过大,joint 5 position error too large,1,関節五位置ずれ過大
#define,DRIVE_ERR_POS_LAG_ERR_J6 ,0x158611,1,joint 6 position error too large,关节六位置偏差过大,joint 6 position error too large,1,関節六位置ずれ過大
,,,,,,,,
#define,DRIVE_ERR_POS_INC_OVER_LMT_J1 ,0x108612,1,joint 1 position increment over limit,关节一位置指令增量过大,joint 1 position increment over limit,1,関節一位置指令インクリメント過大
#define,DRIVE_ERR_POS_INC_OVER_LMT_J2 ,0x118612,1,joint 2 position increment over limit,关节二位置指令增量过大,joint 2 position increment over limit,1,関節二位置指令インクリメント過大
#define,DRIVE_ERR_POS_INC_OVER_LMT_J3 ,0x128612,1,joint 3 position increment over limit,关节三位置指令增量过大,joint 3 position increment over limit,1,関節三位置指令インクリメント過大
#define,DRIVE_ERR_POS_INC_OVER_LMT_J4 ,0x138612,1,joint 4 position increment over limit,关节四位置指令增量过大,joint 4 position increment over limit,1,関節四位置指令インクリメント過大
#define,DRIVE_ERR_POS_INC_OVER_LMT_J5 ,0x148612,1,joint 5 position increment over limit,关节五位置指令增量过大,joint 5 position increment over limit,1,関節五位置指令インクリメント過大
#define,DRIVE_ERR_POS_INC_OVER_LMT_J6 ,0x158612,1,joint 6 position increment over limit,关节六位置指令增量过大,joint 6 position increment over limit,1,関節六位置指令インクリメント過大
,,,,,,,,
#define,DRIVE_ERR_POS_ACC_OVER_LMT_J1 ,0x108613,1,joint 1 acceleration over limit,关节一加速度过大,joint 1 acceleration over limit,1,関節一加速度過大
#define,DRIVE_ERR_POS_ACC_OVER_LMT_J2 ,0x118613,1,joint 2 acceleration over limit,关节二加速度过大,joint 2 acceleration over limit,1,関節二加速度過大
#define,DRIVE_ERR_POS_ACC_OVER_LMT_J3 ,0x128613,1,joint 3 acceleration over limit,关节三加速度过大,joint 3 acceleration over limit,1,関節三加速度過大
#define,DRIVE_ERR_POS_ACC_OVER_LMT_J4 ,0x138613,1,joint 4 acceleration over limit,关节四加速度过大,joint 4 acceleration over limit,1,関節四加速度過大
#define,DRIVE_ERR_POS_ACC_OVER_LMT_J5 ,0x148613,1,joint 5 acceleration over limit,关节五加速度过大,joint 5 acceleration over limit,1,関節五加速度過大
#define,DRIVE_ERR_POS_ACC_OVER_LMT_J6 ,0x158613,1,joint 6 acceleration over limit,关节六加速度过大,joint 6 acceleration over limit,1,関節六加速度過大
,,,,,,,,
#define,DRIVE_ERR_POS_CMD_OVER_LMT_J1 ,0x108614,1,joint 1 command position over limit,关节一位置指令过大,joint 1 command position over limit,1,関節一位置指令が大きすぎ
#define,DRIVE_ERR_POS_CMD_OVER_LMT_J2 ,0x118614,1,joint 2 command position over limit,关节二位置指令过大,joint 2 command position over limit,1,関節二位置指令が大きすぎ
#define,DRIVE_ERR_POS_CMD_OVER_LMT_J3 ,0x128614,1,joint 3 command position over limit,关节三位置指令过大,joint 3 command position over limit,1,関節三位置指令が大きすぎ
#define,DRIVE_ERR_POS_CMD_OVER_LMT_J4 ,0x138614,1,joint 4 command position over limit,关节四位置指令过大,joint 4 command position over limit,1,関節四位置指令が大きすぎ
#define,DRIVE_ERR_POS_CMD_OVER_LMT_J5 ,0x148614,1,joint 5 command position over limit,关节五位置指令过大,joint 5 command position over limit,1,関節五位置指令が大きすぎ
#define,DRIVE_ERR_POS_CMD_OVER_LMT_J6 ,0x158614,1,joint 6 command position over limit,关节六位置指令过大,joint 6 command position over limit,1,関節六位置指令が大きすぎ
,,,,,,,,
#define,DRIVE_ERR_CAN_OFF_LINE_J1 ,0x108615,1,joint 1 CAN off line,关节一CAN断线,joint 1 CAN off line,1,関節一CAN断線
#define,DRIVE_ERR_CAN_OFF_LINE_J2 ,0x118615,1,joint 2 CAN off line,关节二CAN断线,joint 2 CAN off line,1,関節二CAN断線
#define,DRIVE_ERR_CAN_OFF_LINE_J3 ,0x128615,1,joint 3 CAN off line,关节三CAN断线,joint 3 CAN off line,1,関節三CAN断線
#define,DRIVE_ERR_CAN_OFF_LINE_J4 ,0x138615,1,joint 4 CAN off line,关节四CAN断线,joint 4 CAN off line,1,関節四CAN断線
#define,DRIVE_ERR_CAN_OFF_LINE_J5 ,0x148615,1,joint 5 CAN off line,关节五CAN断线,joint 5 CAN off line,1,関節五CAN断線
#define,DRIVE_ERR_CAN_OFF_LINE_J6 ,0x158615,1,joint 6 CAN off line,关节六CAN断线,joint 6 CAN off line,1,関節六CAN断線
,,,,,,,,
#define,DRIVE_ERR_UNDER_VOLTAGE_J1 ,0x103220,1,joint 1 servo under voltage,关节一伺服欠压,joint 1 servo under voltage,1,関節一サーボ電圧不足
#define,DRIVE_ERR_UNDER_VOLTAGE_J2 ,0x113220,1,joint 2 servo under voltage,关节二伺服欠压,joint 2 servo under voltage,1,関節二サーボ電圧不足
#define,DRIVE_ERR_UNDER_VOLTAGE_J3 ,0x123220,1,joint 3 servo under voltage,关节三伺服欠压,joint 3 servo under voltage,1,関節三サーボ電圧不足
#define,DRIVE_ERR_UNDER_VOLTAGE_J4 ,0x133220,1,joint 4 servo under voltage,关节四伺服欠压,joint 4 servo under voltage,1,関節四サーボ電圧不足
#define,DRIVE_ERR_UNDER_VOLTAGE_J5 ,0x143220,1,joint 5 servo under voltage,关节五伺服欠压,joint 5 servo under voltage,1,関節五サーボ電圧不足
#define,DRIVE_ERR_UNDER_VOLTAGE_J6 ,0x153220 ,1,joint 6 servo under voltage,关节六伺服欠压,joint 6 servo under voltage,1,関節六サーボ電圧不足
,,,,,,,,
#define,DRIVE_ERR_OVER_VOLTAGE_J1 ,0x103210,1,joint 1 servo over voltage,关节一伺服过压,joint 1 servo over voltage,1,関節一サーボ電圧オーバー
#define,DRIVE_ERR_OVER_VOLTAGE_J2 ,0x113210,1,joint 2 servo over voltage,关节二伺服过压,joint 2 servo over voltage,1,関節二サーボ電圧オーバー
#define,DRIVE_ERR_OVER_VOLTAGE_J3,0x123210,1,joint 3 servo over voltage,关节三伺服过压,joint 3 servo over voltage,1,関節三サーボ電圧オーバー
#define,DRIVE_ERR_OVER_VOLTAGE_J4,0x133210,1,joint 4 servo over voltage,关节四伺服过压,joint 4 servo over voltage,1,関節四サーボ電圧オーバー
#define,DRIVE_ERR_OVER_VOLTAGE_J5 ,0x143210,1,joint 5 servo over voltage,关节五伺服过压,joint 5 servo over voltage,1,関節五サーボ電圧オーバー
#define,DRIVE_ERR_OVER_VOLTAGE_J6,0x153210,1,joint 6 servo over voltage,关节六伺服过压,joint 6 servo over voltage,1,関節六サーボ電圧オーバー
,,,,,,,,
#define,DRIVE_ERR_DRIVER_OVERTEMP_J1 ,0x104310,1,joint 1 servo over temperature,关节一伺服过温,joint 1 servo over temperature,1,関節一サーボ温度オーバー
#define,DRIVE_ERR_DRIVER_OVERTEMP_J2 ,0x114310,1,joint 2 servo over temperature,关节二伺服过温,joint 2 servo over temperature,1,関節二サーボ温度オーバー
#define,DRIVE_ERR_DRIVER_OVERTEMP_J3 ,0x124310,1,joint 3 servo over temperature,关节三伺服过温,joint 3 servo over temperature,1,関節三サーボ温度オーバー
#define,DRIVE_ERR_DRIVER_OVERTEMP_J4 ,0x134310,1,joint 4 servo over temperature,关节四伺服过温,joint 4 servo over temperature,1,関節四サーボ温度オーバー
#define,DRIVE_ERR_DRIVER_OVERTEMP_J5 ,0x144310,1,joint 5 servo over temperature,关节五伺服过温,joint 5 servo over temperature,1,関節五サーボ温度オーバー
#define,DRIVE_ERR_DRIVER_OVERTEMP_J6 ,0x154310,1,joint 6 servo over temperature,关节六伺服过温,joint 6 servo over temperature,1,関節六サーボ温度オーバー
,,,,,,,,
#define,DRIVE_ERR_IGBT_I2T_J1 ,0x102350,1,joint 1 power module overload,关节一模块过载(I2T),joint 1 power module overload,1,関節一電源モジュールの過負荷
#define,DRIVE_ERR_IGBT_I2T_J2 ,0x112350,1,joint 2 power module overload,关节二模块过载(I2T),joint 2 power module overload,1,関節二電源モジュールの過負荷
#define,DRIVE_ERR_IGBT_I2T_J3 ,0x122350,1,joint 3 power module overload,关节三模块过载(I2T),joint 3 power module overload,1,関節三電源モジュールの過負荷
#define,DRIVE_ERR_IGBT_I2T_J4 ,0x132350,1,joint 4 power module overload,关节四模块过载(I2T),joint 4 power module overload,1,関節四電源モジュールの過負荷
#define,DRIVE_ERR_IGBT_I2T_J5 ,0x142350,1,joint 5 power module overload,关节五模块过载(I2T),joint 5 power module overload,1,関節五電源モジュールの過負荷
#define,DRIVE_ERR_IGBT_I2T_J6 ,0x152350,1,joint 6 power module overload,关节六模块过载(I2T),joint 6 power module overload,1,関節六電源モジュールの過負荷
,,,,,,,,
#define,DRIVE_ERR_OVER_POWER_J1,0x105480,1,joint 1 servo over power,关节一伺服过功率,joint 1 servo over power,1,関節一サーボ過負荷
#define,DRIVE_ERR_OVER_POWER_J2,0x115480,1,joint 2 servo over power,关节二伺服过功率,joint 2 servo over power,1,関節二サーボ過負荷
#define,DRIVE_ERR_OVER_POWER_J3,0x125480,1,joint 3 servo over power,关节三伺服过功率,joint 3 servo over power,1,関節三サーボ過負荷
#define,DRIVE_ERR_OVER_POWER_J4,0x135480,1,joint 4 servo over power,关节四伺服过功率,joint 4 servo over power,1,関節四サーボ過負荷
#define,DRIVE_ERR_OVER_POWER_J5,0x145480,1,joint 5 servo over power,关节五伺服过功率,joint 5 servo over power,1,関節五サーボ過負荷
#define,DRIVE_ERR_OVER_POWER_J6,0x155480,1,joint 6 servo over power,关节六伺服过功率,joint 6 servo over power,1,関節六サーボ過負荷
,,,,,,,,
#define,DRIVE_ERR_ENC_AUTO_TURN_ERR_J1,0x103380,1,joint 1 encoder auto-turn eror,关节一编码器校零失败,joint 1 encoder auto-turn eror,1,関節一エンコーダ校正失敗
#define,DRIVE_ERR_ENC_AUTO_TURN_ERR_J2,0x113380,1,joint 2 encoder auto-turn eror,关节二编码器校零失败,joint 2 encoder auto-turn eror,1,関節二エンコーダ校正失敗
#define,DRIVE_ERR_ENC_AUTO_TURN_ERR_J3,0x123380,1,joint 3 encoder auto-turn eror,关节三编码器校零失败,joint 3 encoder auto-turn eror,1,関節三エンコーダ校正失敗
#define,DRIVE_ERR_ENC_AUTO_TURN_ERR_J4,0x133380,1,joint 4 encoder auto-turn eror,关节四编码器校零失败,joint 4 encoder auto-turn eror,1,関節四エンコーダ校正失敗
#define,DRIVE_ERR_ENC_AUTO_TURN_ERR_J5,0x143380,1,joint 5 encoder auto-turn eror,关节五编码器校零失败,joint 5 encoder auto-turn eror,1,関節五エンコーダ校正失敗
#define,DRIVE_ERR_ENC_AUTO_TURN_ERR_J6,0x153380,1,joint 6 encoder auto-turn eror,关节六编码器校零失败,joint 6 encoder auto-turn eror,1,関節六エンコーダ校正失敗
,,,,,,,,
#define,DRIVE_ERR_OUT_LACK_PHASE_J1 ,0x103381,1,joint 1 out lack of phase,关节一输出缺相,joint 1 out lack of phase,1,関節一出力欠け
#define,DRIVE_ERR_OUT_LACK_PHASE_J2 ,0x113381,1,joint 2 out lack of phase,关节二输出缺相,joint 2 out lack of phase,1,関節二出力欠け
#define,DRIVE_ERR_OUT_LACK_PHASE_J3 ,0x123381,1,joint 3 out lack of phase,关节三输出缺相,joint 3 out lack of phase,1,関節三出力欠け
#define,DRIVE_ERR_OUT_LACK_PHASE_J4 ,0x133381,1,joint 4 out lack of phase,关节四输出缺相,joint 4 out lack of phase,1,関節四出力欠け
#define,DRIVE_ERR_OUT_LACK_PHASE_J5 ,0x143381,1,joint 5 out lack of phase,关节五输出缺相,joint 5 out lack of phase,1,関節五出力欠け
#define,DRIVE_ERR_OUT_LACK_PHASE_J6,0x153381,1,joint 6 out lack of phase,关节六输出缺相,joint 6 out lack of phase,1,関節六出力欠け
,,,,,,,,
#define,DRIVE_ERR_IN_LACK_PHASE_J1,0x103130,1,joint 1 AC phase lack,关节一输入缺相,joint 1 AC phase lack,1,関節一入力位相損失
#define,DRIVE_ERR_IN_LACK_PHASE_J2,0x113130,1,joint 2 AC phase lack,关节二输入缺相,joint 2 AC phase lack,1,関節二入力位相損失
#define,DRIVE_ERR_IN_LACK_PHASE_J3,0x123130,1,joint 3 AC phase lack,关节三输入缺相,joint 3 AC phase lack,1,関節三入力位相損失
#define,DRIVE_ERR_IN_LACK_PHASE_J4,0x133130,1,joint 4 AC phase lack,关节四输入缺相,joint 4 AC phase lack,1,関節四入力位相損失
#define,DRIVE_ERR_IN_LACK_PHASE_J5,0x143130,1,joint 5 AC phase lack,关节五输入缺相,joint 5 AC phase lack,1,関節五入力位相損失
#define,DRIVE_ERR_IN_LACK_PHASE_J6,0x153130,1,joint 6 AC phase lack,关节六输入缺相,joint 6 AC phase lack,1,関節六入力位相損失
,,,,,,,,
#define,DRIVE_ERR_INER_CONNECT_ERR_J1,0x105441,1,joint 1 internal connection error,关节一内部连接错误,joint 1 internal connection error,1,関節一内部配線エラー
#define,DRIVE_ERR_INER_CONNECT_ERR_J2,0x115441,1,joint 2 internal connection error,关节二内部连接错误,joint 2 internal connection error,1,関節二内部配線エラー
#define,DRIVE_ERR_INER_CONNECT_ERR_J3,0x125441,1,joint 3 internal connection error,关节三内部连接错误,joint 3 internal connection error,1,関節三内部配線エラー
#define,DRIVE_ERR_INER_CONNECT_ERR_J4,0x135441,1,joint 4 internal connection error,关节四内部连接错误,joint 4 internal connection error,1,関節四内部配線エラー
#define,DRIVE_ERR_INER_CONNECT_ERR_J5,0x145441,1,joint 5 internal connection error,关节五内部连接错误,joint 5 internal connection error,1,関節五内部配線エラー
#define,DRIVE_ERR_INER_CONNECT_ERR_J6,0x155441,1,joint 6 internal connection error,关节六内部连接错误,joint 6 internal connection error,1,関節六内部配線エラー
,,,,,,,,
#define,DRIVE_ERR_PARA_ERROR_J1 ,0x105280,1,joint 1 internal parameter error,关节一内部参数错误,joint 1 internal parameter error,1,関節一内部パラメーターエラー
#define,DRIVE_ERR_PARA_ERROR_J2 ,0x115280,1,joint 2 internal parameter error,关节二内部参数错误,joint 2 internal parameter error,1,関節二内部パラメーターエラー
#define,DRIVE_ERR_PARA_ERROR_J3 ,0x125280,1,joint 3 internal parameter error,关节三内部参数错误,joint 3 internal parameter error,1,関節三内部パラメーターエラー
#define,DRIVE_ERR_PARA_ERROR_J4 ,0x135280,1,joint 4 internal parameter error,关节四内部参数错误,joint 4 internal parameter error,1,関節四内部パラメーターエラー
#define,DRIVE_ERR_PARA_ERROR_J5 ,0x145280,1,joint 5 internal parameter error,关节五内部参数错误,joint 5 internal parameter error,1,関節五内部パラメーターエラー
#define,DRIVE_ERR_PARA_ERROR_J6 ,0x155280,1,joint 6 internal parameter error,关节六内部参数错误,joint 6 internal parameter error,1,関節六内部パラメーターエラー
,,,,,,,,
#define,DRIVE_ERR_PID_OVERFLOW_J1,0x105281,1,joint 1 drive PID overflow,关节一PID运算溢出,joint 1 drive PID overflow,1,関節一PID操作のオーバーフロー
#define,DRIVE_ERR_PID_OVERFLOW_J2,0x115281,1,joint 2 drive PID overflow,关节二PID运算溢出,joint 2 drive PID overflow,1,関節二PID操作のオーバーフロー
#define,DRIVE_ERR_PID_OVERFLOW_J3,0x125281,1,joint 3 drive PID overflow,关节三PID运算溢出,joint 3 drive PID overflow,1,関節三PID操作のオーバーフロー
#define,DRIVE_ERR_PID_OVERFLOW_J4,0x135281,1,joint 4 drive PID overflow,关节四PID运算溢出,joint 4 drive PID overflow,1,関節四PID操作のオーバーフロー
#define,DRIVE_ERR_PID_OVERFLOW_J5,0x145281,1,joint 5 drive PID overflow,关节五PID运算溢出,joint 5 drive PID overflow,1,関節五PID操作のオーバーフロー
#define,DRIVE_ERR_PID_OVERFLOW_J6,0x155281,1,joint 6 drive PID overflow,关节六PID运算溢出,joint 6 drive PID overflow,1,関節六PID操作のオーバーフロー
,,,,,,,,
#define,DRIVE_ERR_RobotSerie_ERR_J1 ,0x105211,1,joint 1 type selection error,关节一型号选择错误,joint 1 type selection error,1,関節一タイプ選択エラー
#define,DRIVE_ERR_RobotSerie_ERR_J2 ,0x115211,1,joint 2 type selection error,关节二型号选择错误,joint 2 type selection error,1,関節二タイプ選択エラー
#define,DRIVE_ERR_RobotSerie_ERR_J3 ,0x125211,1,joint 3 type selection error,关节三型号选择错误,joint 3 type selection error,1,関節三タイプ選択エラー
#define,DRIVE_ERR_RobotSerie_ERR_J4 ,0x135211,1,joint 4 type selection error,关节四型号选择错误,joint 4 type selection error,1,関節四タイプ選択エラー
#define,DRIVE_ERR_RobotSerie_ERR_J5 ,0x145211,1,joint 5 type selection error,关节五型号选择错误,joint 5 type selection error,1,関節五タイプ選択エラー
#define,DRIVE_ERR_RobotSerie_ERR_J6 ,0x155211,1,joint 6 type selection error,关节六型号选择错误,joint 6 type selection error,1,関節六タイプ選択エラー
,,,,,,,,
#define,DRIVE_ERR_MOTOR_OVERTEMP_J1 ,0x104210,1,joint 1 motor overheating,关节一电机过温,joint 1 motor overheating,1,関節一モーターの温度が高すぎる
#define,DRIVE_ERR_MOTOR_OVERTEMP_J2 ,0x114210,1,joint 2 motor overheating,关节二电机过温,joint 2 motor overheating,1,関節二モーターの温度が高すぎる
#define,DRIVE_ERR_MOTOR_OVERTEMP_J3 ,0x124210,1,joint 3 motor overheating,关节三电机过温,joint 3 motor overheating,1,関節三モーターの温度が高すぎる
#define,DRIVE_ERR_MOTOR_OVERTEMP_J4 ,0x134210,1,joint 4 motor overheating,关节四电机过温,joint 4 motor overheating,1,関節四モーターの温度が高すぎる
#define,DRIVE_ERR_MOTOR_OVERTEMP_J5 ,0x144210,1,joint 5 motor overheating,关节五电机过温,joint 5 motor overheating,1,関節五モーターの温度が高すぎる
#define,DRIVE_ERR_MOTOR_OVERTEMP_J6 ,0x154210,1,joint 6 motor overheating,关节六电机过温,joint 6 motor overheating,1,関節六モーターの温度が高すぎる
,,,,,,,,
,,,,,,,,
#define,DRIVE_ERR_POWER_ID_ERR_J1 ,0x105210,1,joint 1 power id error,关节一PowerID错误,joint 1 power id error,1,関節一PowerIDエラー
#define,DRIVE_ERR_POWER_ID_ERR_J2 ,0x115210,1,joint 2 power id error,关节二PowerID错误,joint 2 power id error,1,関節二PowerIDエラー
#define,DRIVE_ERR_POWER_ID_ERR_J3 ,0x125210,1,joint 3 power id error,关节三PowerID错误,joint 3 power id error,1,関節三PowerIDエラー
#define,DRIVE_ERR_POWER_ID_ERR_J4 ,0x135210,1,joint 4 power id error,关节四PowerID错误,joint 4 power id error,1,関節四PowerIDエラー
#define,DRIVE_ERR_POWER_ID_ERR_J5,0x145210,1,joint 5 power id error,关节五PowerID错误,joint 5 power id error,1,関節五PowerIDエラー
#define,DRIVE_ERR_POWER_ID_ERR_J6 ,0x155210,1,joint 6 power id error,关节六PowerID错误,joint 6 power id error,1,関節六PowerIDエラー
,,,,,,,,
#define,DRIVE_ERR_EEPROM_ERR_J1 ,0x105282,1,joint 1 eeprom error,关节一EEPROM错误,joint 1 eeprom error,1,関節一EEPROMエラー
#define,DRIVE_ERR_EEPROM_ERR_J2 ,0x115282,1,joint 2 eeprom error,关节二EEPROM错误,joint 2 eeprom error,1,関節二EEPROMエラー
#define,DRIVE_ERR_EEPROM_ERR_J3 ,0x125282,1,joint 3 eeprom error,关节三EEPROM错误,joint 3 eeprom error,1,関節三EEPROMエラー
#define,DRIVE_ERR_EEPROM_ERR_J4 ,0x135282,1,joint 4 eeprom error,关节四EEPROM错误,joint 4 eeprom error,1,関節四EEPROMエラー
#define,DRIVE_ERR_EEPROM_ERR_J5 ,0x145282,1,joint 5 eeprom error,关节五EEPROM错误,joint 5 eeprom error,1,関節五EEPROMエラー
#define,DRIVE_ERR_EEPROM_ERR_J6 ,0x155282,1,joint 6 eeprom error,关节六EEPROM错误,joint 6 eeprom error,1,関節六EEPROMエラー
,,,,,,,,
#define,DRIVE_ERR_POWERON_FAILED_J1 ,0x105283,1,joint 1 failed to power on,关节一上使能失败,joint 1 failed to power on,1,関節一動く失敗
#define,DRIVE_ERR_POWERON_FAILED_J2 ,0x115283,1,joint 2 failed to power on,关节二上使能失败,joint 2 failed to power on,1,関節二動く失敗
#define,DRIVE_ERR_POWERON_FAILED_J3 ,0x125283,1,joint 3 failed to power on,关节三上使能失败,joint 3 failed to power on,1,関節三動く失敗
#define,DRIVE_ERR_POWERON_FAILED_J4 ,0x135283,1,joint 4 failed to power on,关节四上使能失败,joint 4 failed to power on,1,関節四動く失敗
#define,DRIVE_ERR_POWERON_FAILED_J5 ,0x145283,1,joint 5 failed to power on,关节五上使能失败,joint 5 failed to power on,1,関節五動く失敗
#define,DRIVE_ERR_POWERON_FAILED_J6 ,0x155283,1,joint 6 failed to power on,关节六上使能失败,joint 6 failed to power on,1,関節六動く失敗
,,,,,,,,
#define,DRIVE_ERR_ENC_OVERTEMP_J1,0x106010,2,joint 1 encoder over temperature,关节一编码器温度过热,joint 1 encoder over temperature,1,関節一エンコーダ温度過熱
#define,DRIVE_ERR_ENC_OVERTEMP_J2 ,0x116010,2,joint 2 encoder over temperature,关节二编码器温度过热,joint 2 encoder over temperature,1,関節二エンコーダ温度過熱
#define,DRIVE_ERR_ENC_OVERTEMP_J3,0x126010,2,joint 3 encoder over temperature,关节三编码器温度过热,joint 3 encoder over temperature,1,関節三エンコーダ温度過熱
#define,DRIVE_ERR_ENC_OVERTEMP_J4,0x136010,2,joint 4 encoder over temperature,关节四编码器温度过热,joint 4 encoder over temperature,1,関節四エンコーダ温度過熱
#define,DRIVE_ERR_ENC_OVERTEMP_J5 ,0x146010,2,joint 5 encoder over temperature,关节五编码器温度过热,joint 5 encoder over temperature,1,関節五エンコーダ温度過熱
#define,DRIVE_ERR_ENC_OVERTEMP_J6 ,0x156010,2,joint 6 encoder over temperature,关节六编码器温度过热,joint 6 encoder over temperature,1,関節六エンコーダ温度過熱
,,,,,,,,
#define,DRIVE_ERR_MOTOR_I2T_J1 ,0x107180,1,joint 1 motor I2T,关节一电机过载(I2T),joint 1 motor I2T,1,関節一モータ過負荷(I2T)
#define,DRIVE_ERR_MOTOR_I2T_J2,0x117180,1,joint 2 motor I2T,关节二电机过载(I2T),joint 2 motor I2T,1,関節二モータ過負荷(I2T)
#define,DRIVE_ERR_MOTOR_I2T_J3,0x127180,1,joint 3 motor I2T,关节三电机过载(I2T),joint 3 motor I2T,1,関節三モータ過負荷(I2T)
#define,DRIVE_ERR_MOTOR_I2T_J4 ,0x137180,1,joint 4 motor I2T,关节四电机过载(I2T),joint 4 motor I2T,1,関節四モータ過負荷(I2T)
#define,DRIVE_ERR_MOTOR_I2T_J5 ,0x147180,1,joint 5 motor I2T,关节五电机过载(I2T),joint 5 motor I2T,1,関節五モータ過負荷(I2T)
#define,DRIVE_ERR_MOTOR_I2T_J6 ,0x157180,1,joint 6 motor I2T,关节六电机过载(I2T),joint 6 motor I2T,1,関節六モータ過負荷(I2T)
,,,,,,,,
#define,DRIVE_ERR_BRAKE_ERR_J1,0x107181,1,joint 1 brake error,关节一电机抱闸故障,joint 1 brake error,1,関節一電機ブレーキ故障
#define,DRIVE_ERR_BRAKE_ERR_J2,0x117181,1,joint 2 brake error,关节二电机抱闸故障,joint 2 brake error,1,関節二電機ブレーキ故障
#define,DRIVE_ERR_BRAKE_ERR_J3,0x127181,1,joint 3 brake error,关节三电机抱闸故障,joint 3 brake error,1,関節三電機ブレーキ故障
#define,DRIVE_ERR_BRAKE_ERR_J4 ,0x137181,1,joint 4 brake error,关节四电机抱闸故障,joint 4 brake error,1,関節四電機ブレーキ故障
#define,DRIVE_ERR_BRAKE_ERR_J5,0x147181,1,joint 5 brake error,关节五电机抱闸故障,joint 5 brake error,1,関節五電機ブレーキ故障
#define,DRIVE_ERR_BRAKE_ERR_J6 ,0x157181,1,joint 6 brake error,关节六电机抱闸故障,joint 6 brake error,1,関節六電機ブレーキ故障
,,,,,,,,
#define,DRIVE_ERR_ENC_INTERNAL_ERR_J1,0x107386,1,joint 1 encoder internal error,关节一编码器内部错误,joint 1 encoder internal error,1,関節一エンコーダ内部エラー
#define,DRIVE_ERR_ENC_INTERNAL_ERR_J2,0x117386,1,joint 2 encoder internal error,关节二编码器内部错误,joint 2 encoder internal error,1,関節二エンコーダ内部エラー
#define,DRIVE_ERR_ENC_INTERNAL_ERR_J3,0x127386,1,joint 3 encoder internal error,关节三编码器内部错误,joint 3 encoder internal error,1,関節三エンコーダ内部エラー
#define,DRIVE_ERR_ENC_INTERNAL_ERR_J4,0x137386,1,joint 4 encoder internal error,关节四编码器内部错误,joint 4 encoder internal error,1,関節四エンコーダ内部エラー
#define,DRIVE_ERR_ENC_INTERNAL_ERR_J5,0x147386,1,joint 5 encoder internal error,关节五编码器内部错误,joint 5 encoder internal error,1,関節五エンコーダ内部エラー
#define,DRIVE_ERR_ENC_INTERNAL_ERR_J6,0x157386,1,joint 6 encoder internal error,关节六编码器内部错误,joint 6 encoder internal error,1,関節六エンコーダ内部エラー
,,,,,,,,
#define,DRIVE_ERR_UNMATCHED_VERSION_J1 ,0x107580,1,joint 1 unmatched servo version,关节一伺服版本不匹配,joint 1 unmatched servo version,1,関節一サーボバージョン合わない
#define,DRIVE_ERR_UNMATCHED_VERSION_J2 ,0x117580,1,joint 2 unmatched servo version,关节二伺服版本不匹配,joint 2 unmatched servo version,1,関節二サーボバージョン合わない
#define,DRIVE_ERR_UNMATCHED_VERSION_J3 ,0x127580,1,joint 3 unmatched servo version,关节三伺服版本不匹配,joint 3 unmatched servo version,1,関節三サーボバージョン合わない
#define,DRIVE_ERR_UNMATCHED_VERSION_J4 ,0x137580,1,joint 4 unmatched servo version,关节四伺服版本不匹配,joint 4 unmatched servo version,1,関節四サーボバージョン合わない
#define,DRIVE_ERR_UNMATCHED_VERSION_J5 ,0x147580,1,joint 5 unmatched servo version,关节五伺服版本不匹配,joint 5 unmatched servo version,1,関節五サーボバージョン合わない
#define,DRIVE_ERR_UNMATCHED_VERSION_J6 ,0x157580,1,joint 6 unmatched servo version,关节六伺服版本不匹配,joint 6 unmatched servo version,1,関節六サーボバージョン合わない
,,,,,,,,
#define ,DRIVE_ERR_FUSE_DISCONNECTED_J1,0x103211,1,joint 1 fuse disconnected,关节一保险丝断路,joint 1 fuse disconnected,1,関節一ヒューズを開く
#define ,DRIVE_ERR_FUSE_DISCONNECTED_J2,0x113211,1,joint 2 fuse disconnected,关节二保险丝断路,joint 2 fuse disconnected,1,関節二ヒューズを開く
#define ,DRIVE_ERR_FUSE_DISCONNECTED_J3,0x123211,1,joint 3 fuse disconnected,关节三保险丝断路,joint 3 fuse disconnected,1,関節三ヒューズを開く
#define ,DRIVE_ERR_FUSE_DISCONNECTED_J4,0x133211,1,joint 4 fuse disconnected,关节四保险丝断路,joint 4 fuse disconnected,1,関節四ヒューズを開く
#define ,DRIVE_ERR_FUSE_DISCONNECTED_J5,0x143211,1,joint 5 fuse disconnected,关节五保险丝断路,joint 5 fuse disconnected,1,関節五ヒューズを開く
#define ,DRIVE_ERR_FUSE_DISCONNECTED_J6,0x153211,1,joint 6 fuse disconnected,关节六保险丝断路,joint 6 fuse disconnected,1,関節六ヒューズを開く
,,,,,,,,
,,,,,,,,
,,,,,,,,
扩展IO模块错误代码,,,,,,,,
#define,EXTIO_ERR_INIT_RTU_CONNECTION,0x201102,1,filed to create rtu connection during initialization,初始化期间 创建rtu失败,filed to create rtu connection during initialization,1,初期化間にRTU構築失敗
#define,EXTIO_ERR_INIT_TCP_CONNECTION,0x201202,1,filed to create tcp connection during initialization,初始化期间 创建tcp失败,filed to create tcp connection during initialization,1,初期化間にTCP構築失敗
#define,EXTIO_ERR_INIT_UNKNOWN,0x201304,1,unknown error during initalization,初始化期间未知错误,unknown error during initalization,1,初期化間に未知エラー
#define,EXTIO_ERR_INIT_RTU_INCONSISTENT,0x201101,1,rtu inconsistent during initialization,扩展IO初始化失败 MODBUS-RTU通讯参数不匹配,rtu inconsistent during initialization,1,拡張IO初期化失敗、MODBUS-RTU通信パラメータが一致していない
#define,EXTIO_ERR_INIT_TCP_FORMAT,0x201201,1,tcp format error during initialization,扩展IO初始化失败 MODBUS-TCP通讯参数格式错误,tcp format error during initialization,1,拡張IO初期化失敗、MODBUS-RTU通信パラメータの格式エラー
#define,EXTIO_ERR_RUNTIME_RTU_OFFLINE,0x202103,1,rtu node offline during runtime,扩展IO运行时失败 MODBUS-RTU节点断线,rtu node offline during runtime,1,拡張IO運転失敗、MODBUS-RTUノード断線
#define,EXTIO_ERR_RUNTIME_TCP_OFFLINE,0x202102,1,tcp node offline during runtime,扩展IO运行时失败 MODBUS-TCP节点断线,tcp node offline during runtime,1,拡張IO運転失敗、MODBUS-TCPノード断線
,,,,,,,,
,,,,,,,,
,,,,,,,,
传感器以及SCB模块错误代码,,,,,,,,
#define,TORQSENSOR_ERR_FAILED_INIT_CONN,0x3F0001,1,failed to initialize the connection with torque sensor,力矩传感器连接初始化失败,failed to initialize the connection with torque sensor,1,トルクセンサ接続初期化失敗
#define,TORQSENSOR_ERR_CANNOT_RECV_DATA,0x3F1001,1,cannot receive data from torque sensor,接收力矩传感器数据失败,cannot receive data from torque sensor,1,トルクセンサデータ受信失敗
#define,TORQSENSOR_ERR_RECV_WRONG_DATA,0x3F1002,1,wrong data is received from torque sensor,接收力矩传感器数据格式错误,wrong data is received from torque sensor,1,トルクセンサデータ受信フォーマットエラー
,,,,,,,,
#define,SCB_ERR_PDU_TEMPERATURE_ABNORMAL,0x304281,2,PDUtemperature anomaly,PDU温度异常,PDUtemperature anomaly,1,PDU温度異常
#define,SCB_ERR_5V_VOLTAGE_ABNORMAL,0x303281,2,5V anomaly(The fluctuation range of the supply voltage),5V异常(电源电压的波动范围),5V anomaly(The fluctuation range of the supply voltage),1,5V異常(電源電圧変動範囲)
#define,SCB_ERR_12V_VOLTAGE_ABNORMAL,0x303282,2,12V anomaly(The fluctuation range of the supply voltage),12V异常(电源电压的波动范围),12V anomaly(The fluctuation range of the supply voltage),1,12V異常(電源電圧変動範囲)
#define,SCB_ERR_24V_VOLTAGE_ABNORMAL,0x303283,2,24V anomaly(The fluctuation range of the supply voltage),24V异常(电源电压的波动范围),24V anomaly(The fluctuation range of the supply voltage),1,24V異常(電源電圧変動範囲)
#define,SCB_ERR_220V_VOLTAGE_ABNORMAL,0x303181,2,220V power supply abnormal,220V供电异常,220V power supply abnormal,1,220V給電異常
#define,SCB_ERR_220V_PWR_RALAY_ABNORMAL,0x303182,2,The main supply relay is abnormal,主供电继电器异常,The main supply relay is abnormal,1,主電源/給電リレー異常
#define,SCB_ERR_OUT_BODY_SUPPLY_ABNORMAL,0x303381,2,Abnormal supply voltage of output body(The fluctuation range of the supply voltage),输出本体供电电压异常(电源电压的波动范围),Abnormal supply voltage of output body(The fluctuation range of the supply voltage),1,出力本体の給電電圧異常(電源電圧変動範囲)
#define,SCB_ERR_USR_IO_SUPPLY_ABNORMAL,0x302384,2,Abnormal supply current of user IO (2.3a),用户IO供电电流异常(2.3A),Abnormal supply current of user IO (2.3a),1,ユーザーIO給電電流異常(2.3A)
#define,SCB_ERR_IPC_CURRENT_ABNORMAL,0x302385,2,"Abnormal ipc current (if ipc current exceeds 1.5a, ipc short-circuit fault is considered and error is reported)",工控机电流异常(工控机电流超过1.5A则认为工控机短路故障,上报错误),"Abnormal ipc current (if ipc current exceeds 1.5a, ipc short-circuit fault is considered and error is reported)",1,異常なIPC電流(>1.5A)
#define,SCB_ERR_FAN_CURRENT_ABNORMAL,0x302380,2,Fan current anomaly,风扇电流异常,Fan current anomaly,1,ファン電流異常
#define,SCB_ERR_BODY_SUPPLY_ABNORMAL_L1,0x302381,2,Output body supply current abnormal level 1 warning:25A,输出本体供电电流异常1级预警:25A,Output body supply current abnormal level 1 warning:25A,1,出力本体の給電電流異常1級警報:25A
#define,SCB_ERR_BODY_SUPPLY_ABNORMAL_L2,0x302382,2,Output body supply current abnormal level 2 warning:31.25A,输出本体供电电流异常2级预警:31.25A,Output body supply current abnormal level 2 warning:31.25A,1,出力本体の給電電流異常2級警報:31.25A
#define,SCB_ERR_BODY_SUPPLY_ABNORMAL_L3,0x302383,2,Output body supply current abnormal level 3 warning:37.25A,输出本体供电电流异常3级预警:37.25A,Output body supply current abnormal level 3 warning:37.25A,1,出力本体の給電電流異常3級警報:37.25A
#define,SCB_ERR_DRAG_OVER_SPEED,0x309081,2,Tool center drag over speed,拖拽TCP速度超限,Tool center drag over speed,1,ドラッグTCP速度リミット超え
#define,SCB_ERR_EMEGENCY_STOP,0x309082,2,Emergency Stop!!,紧急停止,Emergency Stop!!,1,ハンドル急停止、或いはユーザー急停止
#define,SCB_ERR_BP_CAN_COMM_ABNORMAL,0x308181,2,Button panel communication abnormal,手柄CAN通信中断,Button panel communication abnormal,1,ハンドルCAN通信中断
#define,SCB_ERR_CTRL_CAN_COMM_ABNORMAL,0x308182,2,Controller communication abnormal,控制器CAN通信中断,Controller communication abnormal,1,コントローラCAN通信中断
#define,SCB_ERR_BODY_CAN_COMM_ABNORMAL,0x308183,2,Ontology CAN communication is interrupted,本体CAN通信中断,Ontology CAN communication is interrupted,1,本体CAN通信中断
#define,SCB_ERR_TIO_CAN_COMM_ABBORMAL,0x308184,2,TIO CAN communication is interrupted,TIO CAN通信中断,TIO CAN communication is interrupted,1,TIO CAN通信中断
#define,SCB_ERR_CAN_NORMAL_WAIT_TIMEOUT,0x308185,2,Wait CAN communication normal timeout,等待CAN通信正常超时,Wait CAN communication normal timeout,1,CAN通信正常を待つタイムアオト
#define,SCB_ERR_BP_ESTOP_INCONSISTENT,0x305081,2,Stick emergency stop signal inconsistent,手柄急停信号不一致,Stick emergency stop signal inconsistent,1,スティック緊急停止信号エラー
#define,SCB_ERR_USR_ESTOP_INCONSISTENT,0x305082,2,User emergency stop signal input inconsistent,用户急停信号输入不一致,User emergency stop signal input inconsistent,1,ユーザー緊急停止信号エラー
#define,SCB_ERR_PROTECT_STOP_INCONSISTENT ,0x305083,2,Inconsistent protective stop signal input,保护性停止信号输入不一致,Inconsistent protective stop signal input,1,保護停止信号エラー
,,,,,,,,
,,,,,,,,
其他,,,,,,,,
#define,MISCELLANEOUS_ERROR,0x0FFFFE,1,miscellaneous error,其它错误,miscellaneous error,1,その他のエラー
#define,UNKNOWN_ERROR,0x0FFFFF,1,unknown error,未知错误,unknown error,1,未知のエラー
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="log4net" version="2.0.14" targetFramework="net48" />
</packages>
\ No newline at end of file \ No newline at end of file
...@@ -236,13 +236,26 @@ namespace OnlineStore.LoadCSVLibrary ...@@ -236,13 +236,26 @@ namespace OnlineStore.LoadCSVLibrary
/// <summary> /// <summary>
/// PRO,0,料盘高度转换系数,Coeff_Height,0.5,,,,,,,,,,,,,, /// PRO,0,料盘高度转换系数,Coeff_Height,0.5,,,,,,,,,,,,,,
/// </summary> /// </summary>
[ConfigProAttribute("Coeff_Height")] [ConfigProAttribute("Coeff_Height_Ad1")]
public double Coeff_Height { get; set; } public double Coeff_Height_Ad1 { get; set; }
/// <summary> /// <summary>
/// PRO,0,料盘宽度转换系数,Coeff_Width,0.5,,,,,,,,,,,,,, /// PRO,0,料盘宽度转换系数,Coeff_Width,0.5,,,,,,,,,,,,,,
/// </summary> /// </summary>
[ConfigProAttribute("Coeff_Width")] [ConfigProAttribute("Coeff_Height_Ad2")]
public double Coeff_Width { get; set; } public double Coeff_Height_Ad2 { get; set; }
[ConfigProAttribute("Coeff_Height_Ad3")]
public double Coeff_Height_Ad3 { get; set; }
[ConfigProAttribute("Coeff_Height_Ad4")]
public double Coeff_Height_Ad4 { get; set; }
[ConfigProAttribute("BaseVal_Height_Ad1")]
public int BaseVal_Height_Ad1 { get; set; }
[ConfigProAttribute("BaseVal_Height_Ad2")]
public int BaseVal_Height_Ad2 { get; set; }
[ConfigProAttribute("BaseVal_Height_Ad3")]
public int BaseVal_Height_Ad3 { get; set; }
[ConfigProAttribute("BaseVal_Height_Ad4")]
public int BaseVal_Height_Ad4 { get; set; }
#endregion #endregion
protected override void initMustHavePro() protected override void initMustHavePro()
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!