Commit db959699 LN

增加Io配置

1 个父辈 27d4a2b5
......@@ -13,11 +13,13 @@
<add key="Line_moveEquip_count" value="18" />
<add key="Line_feedingEquip_count" value="4" />
<add key="Line_providingEquip_count" value="4" />
<add key ="Line_dischargeLine_count" value ="2"/>
<!--start one store config-->
<add key="ConfigPath_Line" value="\LineConfig\Config_Line.csv" />
<add key="ConfigPath_MoveEquip" value="\LineConfig\MoveEquip\Config_MoveEquip.csv" />
<add key="ConfigPath_FeedingEquip" value="\LineConfig\Config_FeedingEquip.csv" />
<add key="ConfigPath_ProvidingEquip" value="\LineConfig\Config_ProvidingEquip.csv" />
<add key ="ConfigPath_DischargeLine" value ="\LineConfig\Config_DischargeLine.csv"/>
<add key="Line_Type" value="RC_LINE" />
<add key="Line_CID" value="rc1246" />
<!--end one store config-->
......
......@@ -84,6 +84,12 @@
<Compile Include="FrmBase.Designer.cs">
<DependentUpon>FrmBase.cs</DependentUpon>
</Compile>
<Compile Include="FrmDischargeLine.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmDischargeLine.Designer.cs">
<DependentUpon>FrmDischargeLine.cs</DependentUpon>
</Compile>
<Compile Include="FrmProvidingEquip.cs">
<SubType>Form</SubType>
</Compile>
......@@ -132,6 +138,9 @@
<EmbeddedResource Include="FrmBase.resx">
<DependentUpon>FrmBase.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FrmDischargeLine.resx">
<DependentUpon>FrmDischargeLine.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FrmProvidingEquip.resx">
<DependentUpon>FrmProvidingEquip.cs</DependentUpon>
</EmbeddedResource>
......
namespace OnlineStore.AssemblyLine
{
partial class FrmDischargeLine
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmProvidingEquip));
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.checkBox1 = new System.Windows.Forms.CheckBox();
this.txtSlaveId = new System.Windows.Forms.TextBox();
this.txtDOIndex = new System.Windows.Forms.TextBox();
this.txtDoName = new System.Windows.Forms.TextBox();
this.chbAutoRead = new System.Windows.Forms.CheckBox();
this.label17 = new System.Windows.Forms.Label();
this.label14 = new System.Windows.Forms.Label();
this.cmbWriteIO = new System.Windows.Forms.ComboBox();
this.btnWriteSingleDO = new System.Windows.Forms.Button();
this.txtWriteTime = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label();
this.btnReadAllDi = new System.Windows.Forms.Button();
this.btnReadAllDo = new System.Windows.Forms.Button();
this.groupBox4 = new System.Windows.Forms.GroupBox();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.groupBox3 = new System.Windows.Forms.GroupBox();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.groupBox5 = new System.Windows.Forms.GroupBox();
this.btnCloseAll = new System.Windows.Forms.Button();
this.btnStop2Up = new System.Windows.Forms.Button();
this.btnStop1Up = new System.Windows.Forms.Button();
this.btnClampSlack = new System.Windows.Forms.Button();
this.btnUpDownUp = new System.Windows.Forms.Button();
this.btnBeforeAfterBefore = new System.Windows.Forms.Button();
this.btnTopUp = new System.Windows.Forms.Button();
this.chbDebug = new System.Windows.Forms.CheckBox();
this.lblThisSta = new System.Windows.Forms.Label();
this.lblStoreStatus = new System.Windows.Forms.Label();
this.btnStart = new System.Windows.Forms.Button();
this.btnStop = new System.Windows.Forms.Button();
this.btnReset = new System.Windows.Forms.Button();
this.btnOutStore = new System.Windows.Forms.Button();
this.tabControl1 = new System.Windows.Forms.TabControl();
this.tabPage1 = new System.Windows.Forms.TabPage();
this.groupBox6 = new System.Windows.Forms.GroupBox();
this.lblTrayNum = new System.Windows.Forms.Label();
this.lblInstoreList = new System.Windows.Forms.Label();
this.panel1 = new System.Windows.Forms.Panel();
this.groupBox1.SuspendLayout();
this.groupBox4.SuspendLayout();
this.groupBox3.SuspendLayout();
this.groupBox5.SuspendLayout();
this.tabControl1.SuspendLayout();
this.tabPage1.SuspendLayout();
this.groupBox6.SuspendLayout();
this.panel1.SuspendLayout();
this.SuspendLayout();
//
// timer1
//
this.timer1.Interval = 1000;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// groupBox1
//
this.groupBox1.Controls.Add(this.checkBox1);
this.groupBox1.Controls.Add(this.txtSlaveId);
this.groupBox1.Controls.Add(this.txtDOIndex);
this.groupBox1.Controls.Add(this.txtDoName);
this.groupBox1.Controls.Add(this.chbAutoRead);
this.groupBox1.Controls.Add(this.label17);
this.groupBox1.Controls.Add(this.label14);
this.groupBox1.Controls.Add(this.cmbWriteIO);
this.groupBox1.Controls.Add(this.btnWriteSingleDO);
this.groupBox1.Controls.Add(this.txtWriteTime);
this.groupBox1.Controls.Add(this.label5);
this.groupBox1.Controls.Add(this.btnReadAllDi);
this.groupBox1.Controls.Add(this.btnReadAllDo);
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(497, 6);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(394, 208);
this.groupBox1.TabIndex = 105;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "DO写入";
//
// checkBox1
//
this.checkBox1.AutoSize = true;
this.checkBox1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.checkBox1.Location = new System.Drawing.Point(153, 114);
this.checkBox1.Name = "checkBox1";
this.checkBox1.Size = new System.Drawing.Size(51, 21);
this.checkBox1.TabIndex = 256;
this.checkBox1.Text = "打开";
this.checkBox1.UseVisualStyleBackColor = true;
//
// txtSlaveId
//
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(417, 26);
this.txtSlaveId.MaxLength = 10;
this.txtSlaveId.Name = "txtSlaveId";
this.txtSlaveId.Size = new System.Drawing.Size(12, 23);
this.txtSlaveId.TabIndex = 255;
this.txtSlaveId.Text = "0";
this.txtSlaveId.Visible = false;
//
// txtDOIndex
//
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(304, 68);
this.txtDOIndex.MaxLength = 10;
this.txtDOIndex.Name = "txtDOIndex";
this.txtDOIndex.Size = new System.Drawing.Size(47, 23);
this.txtDOIndex.TabIndex = 242;
this.txtDOIndex.Text = "0";
//
// txtDoName
//
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(79, 68);
this.txtDoName.MaxLength = 10;
this.txtDoName.Name = "txtDoName";
this.txtDoName.Size = new System.Drawing.Size(105, 23);
this.txtDoName.TabIndex = 241;
this.txtDoName.Text = "0";
//
// chbAutoRead
//
this.chbAutoRead.AutoSize = true;
this.chbAutoRead.Checked = true;
this.chbAutoRead.CheckState = System.Windows.Forms.CheckState.Checked;
this.chbAutoRead.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.chbAutoRead.Location = new System.Drawing.Point(370, 69);
this.chbAutoRead.Name = "chbAutoRead";
this.chbAutoRead.Size = new System.Drawing.Size(75, 21);
this.chbAutoRead.TabIndex = 244;
this.chbAutoRead.Text = "自动读取";
this.chbAutoRead.UseVisualStyleBackColor = true;
this.chbAutoRead.Visible = false;
//
// label17
//
this.label17.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label17.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label17.Location = new System.Drawing.Point(9, 71);
this.label17.Name = "label17";
this.label17.Size = new System.Drawing.Size(65, 17);
this.label17.TabIndex = 240;
this.label17.Text = "设备IP:";
this.label17.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// label14
//
this.label14.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label14.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label14.Location = new System.Drawing.Point(233, 71);
this.label14.Name = "label14";
this.label14.Size = new System.Drawing.Size(65, 17);
this.label14.TabIndex = 239;
this.label14.Text = "地址:";
this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// cmbWriteIO
//
this.cmbWriteIO.DisplayMember = "ProName";
this.cmbWriteIO.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;
this.cmbWriteIO.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbWriteIO.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.cmbWriteIO.FormattingEnabled = true;
this.cmbWriteIO.ItemHeight = 22;
this.cmbWriteIO.Location = new System.Drawing.Point(17, 25);
this.cmbWriteIO.Name = "cmbWriteIO";
this.cmbWriteIO.Size = new System.Drawing.Size(356, 28);
this.cmbWriteIO.TabIndex = 234;
this.cmbWriteIO.ValueMember = "ProName";
this.cmbWriteIO.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.cmbWriteIO_DrawItem);
this.cmbWriteIO.SelectedIndexChanged += new System.EventHandler(this.cmbWriteIO_SelectedIndexChanged);
//
// btnWriteSingleDO
//
this.btnWriteSingleDO.BackColor = System.Drawing.Color.White;
this.btnWriteSingleDO.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnWriteSingleDO.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnWriteSingleDO.Location = new System.Drawing.Point(220, 107);
this.btnWriteSingleDO.Name = "btnWriteSingleDO";
this.btnWriteSingleDO.Size = new System.Drawing.Size(140, 34);
this.btnWriteSingleDO.TabIndex = 232;
this.btnWriteSingleDO.Text = "写入DO";
this.btnWriteSingleDO.UseVisualStyleBackColor = false;
this.btnWriteSingleDO.Click += new System.EventHandler(this.btnWriteSingleDO_Click);
//
// txtWriteTime
//
this.txtWriteTime.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtWriteTime.Location = new System.Drawing.Point(79, 113);
this.txtWriteTime.MaxLength = 10;
this.txtWriteTime.Name = "txtWriteTime";
this.txtWriteTime.Size = new System.Drawing.Size(59, 23);
this.txtWriteTime.TabIndex = 238;
this.txtWriteTime.Text = "0";
//
// label5
//
this.label5.AutoSize = true;
this.label5.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label5.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label5.Location = new System.Drawing.Point(13, 116);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(60, 17);
this.label5.TabIndex = 237;
this.label5.Text = "定时(ms):";
this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// btnReadAllDi
//
this.btnReadAllDi.BackColor = System.Drawing.Color.White;
this.btnReadAllDi.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnReadAllDi.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnReadAllDi.Location = new System.Drawing.Point(44, 154);
this.btnReadAllDi.Name = "btnReadAllDi";
this.btnReadAllDi.Size = new System.Drawing.Size(140, 34);
this.btnReadAllDi.TabIndex = 244;
this.btnReadAllDi.Text = "读取所有DI";
this.btnReadAllDi.UseVisualStyleBackColor = false;
this.btnReadAllDi.Click += new System.EventHandler(this.btnReadAllDi_Click);
//
// btnReadAllDo
//
this.btnReadAllDo.BackColor = System.Drawing.Color.White;
this.btnReadAllDo.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnReadAllDo.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnReadAllDo.Location = new System.Drawing.Point(220, 154);
this.btnReadAllDo.Name = "btnReadAllDo";
this.btnReadAllDo.Size = new System.Drawing.Size(140, 34);
this.btnReadAllDo.TabIndex = 245;
this.btnReadAllDo.Text = "读取所有DO";
this.btnReadAllDo.UseVisualStyleBackColor = false;
this.btnReadAllDo.Click += new System.EventHandler(this.btnReadAllDo_Click);
//
// groupBox4
//
this.groupBox4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)));
this.groupBox4.Controls.Add(this.tableLayoutPanel2);
this.groupBox4.Location = new System.Drawing.Point(251, 6);
this.groupBox4.Name = "groupBox4";
this.groupBox4.Size = new System.Drawing.Size(240, 634);
this.groupBox4.TabIndex = 104;
this.groupBox4.TabStop = false;
this.groupBox4.Text = "DO列表";
//
// tableLayoutPanel2
//
this.tableLayoutPanel2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tableLayoutPanel2.ColumnCount = 1;
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel2.Location = new System.Drawing.Point(5, 14);
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
this.tableLayoutPanel2.RowCount = 2;
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 17F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 17F));
this.tableLayoutPanel2.Size = new System.Drawing.Size(229, 614);
this.tableLayoutPanel2.TabIndex = 103;
//
// groupBox3
//
this.groupBox3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)));
this.groupBox3.Controls.Add(this.tableLayoutPanel1);
this.groupBox3.Location = new System.Drawing.Point(6, 6);
this.groupBox3.Name = "groupBox3";
this.groupBox3.Size = new System.Drawing.Size(240, 634);
this.groupBox3.TabIndex = 103;
this.groupBox3.TabStop = false;
this.groupBox3.Text = "DI列表";
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tableLayoutPanel1.ColumnCount = 1;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.Location = new System.Drawing.Point(6, 14);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 2;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 17F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 17F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(229, 614);
this.tableLayoutPanel1.TabIndex = 102;
//
// groupBox5
//
this.groupBox5.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.groupBox5.Controls.Add(this.btnCloseAll);
this.groupBox5.Controls.Add(this.btnStop2Up);
this.groupBox5.Controls.Add(this.btnStop1Up);
this.groupBox5.Controls.Add(this.btnClampSlack);
this.groupBox5.Controls.Add(this.btnUpDownUp);
this.groupBox5.Controls.Add(this.btnBeforeAfterBefore);
this.groupBox5.Controls.Add(this.btnTopUp);
this.groupBox5.Location = new System.Drawing.Point(897, 6);
this.groupBox5.Name = "groupBox5";
this.groupBox5.Size = new System.Drawing.Size(382, 208);
this.groupBox5.TabIndex = 255;
this.groupBox5.TabStop = false;
this.groupBox5.Text = "IO操作测试";
//
// btnCloseAll
//
this.btnCloseAll.BackColor = System.Drawing.Color.White;
this.btnCloseAll.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnCloseAll.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnCloseAll.Location = new System.Drawing.Point(44, 164);
this.btnCloseAll.Name = "btnCloseAll";
this.btnCloseAll.Size = new System.Drawing.Size(140, 34);
this.btnCloseAll.TabIndex = 259;
this.btnCloseAll.Text = "关闭所有DO";
this.btnCloseAll.UseVisualStyleBackColor = false;
this.btnCloseAll.Click += new System.EventHandler(this.btnCloseAll_Click);
//
// btnStop2Up
//
this.btnStop2Up.BackColor = System.Drawing.Color.White;
this.btnStop2Up.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnStop2Up.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnStop2Up.Location = new System.Drawing.Point(220, 27);
this.btnStop2Up.Name = "btnStop2Up";
this.btnStop2Up.Size = new System.Drawing.Size(140, 34);
this.btnStop2Up.TabIndex = 258;
this.btnStop2Up.Text = "阻挡气缸2下降";
this.btnStop2Up.UseVisualStyleBackColor = false;
this.btnStop2Up.Click += new System.EventHandler(this.btnStop2Up_Click);
//
// btnStop1Up
//
this.btnStop1Up.BackColor = System.Drawing.Color.White;
this.btnStop1Up.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnStop1Up.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnStop1Up.Location = new System.Drawing.Point(44, 27);
this.btnStop1Up.Name = "btnStop1Up";
this.btnStop1Up.Size = new System.Drawing.Size(140, 34);
this.btnStop1Up.TabIndex = 256;
this.btnStop1Up.Text = "阻挡气缸1下降";
this.btnStop1Up.UseVisualStyleBackColor = false;
this.btnStop1Up.Click += new System.EventHandler(this.btnStop1Up_Click);
//
// btnClampSlack
//
this.btnClampSlack.BackColor = System.Drawing.Color.White;
this.btnClampSlack.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnClampSlack.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnClampSlack.Location = new System.Drawing.Point(220, 116);
this.btnClampSlack.Name = "btnClampSlack";
this.btnClampSlack.Size = new System.Drawing.Size(140, 34);
this.btnClampSlack.TabIndex = 255;
this.btnClampSlack.Text = "夹料气缸夹紧";
this.btnClampSlack.UseVisualStyleBackColor = false;
this.btnClampSlack.Click += new System.EventHandler(this.btnClampSlack_Click);
//
// btnUpDownUp
//
this.btnUpDownUp.BackColor = System.Drawing.Color.White;
this.btnUpDownUp.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnUpDownUp.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnUpDownUp.Location = new System.Drawing.Point(220, 72);
this.btnUpDownUp.Name = "btnUpDownUp";
this.btnUpDownUp.Size = new System.Drawing.Size(140, 34);
this.btnUpDownUp.TabIndex = 252;
this.btnUpDownUp.Text = "上下气缸上升";
this.btnUpDownUp.UseVisualStyleBackColor = false;
this.btnUpDownUp.Click += new System.EventHandler(this.btnUpDownUp_Click);
//
// btnBeforeAfterBefore
//
this.btnBeforeAfterBefore.BackColor = System.Drawing.Color.White;
this.btnBeforeAfterBefore.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnBeforeAfterBefore.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnBeforeAfterBefore.Location = new System.Drawing.Point(44, 116);
this.btnBeforeAfterBefore.Name = "btnBeforeAfterBefore";
this.btnBeforeAfterBefore.Size = new System.Drawing.Size(140, 34);
this.btnBeforeAfterBefore.TabIndex = 249;
this.btnBeforeAfterBefore.Text = "前后气缸前进";
this.btnBeforeAfterBefore.UseVisualStyleBackColor = false;
this.btnBeforeAfterBefore.Click += new System.EventHandler(this.btnBeforeAfterBefore_Click);
//
// btnTopUp
//
this.btnTopUp.BackColor = System.Drawing.Color.White;
this.btnTopUp.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnTopUp.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnTopUp.Location = new System.Drawing.Point(44, 72);
this.btnTopUp.Name = "btnTopUp";
this.btnTopUp.Size = new System.Drawing.Size(140, 34);
this.btnTopUp.TabIndex = 246;
this.btnTopUp.Text = "顶升气缸上升";
this.btnTopUp.UseVisualStyleBackColor = false;
this.btnTopUp.Click += new System.EventHandler(this.btnTopUp_Click);
//
// 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(648, 19);
this.chbDebug.Name = "chbDebug";
this.chbDebug.Size = new System.Drawing.Size(84, 24);
this.chbDebug.TabIndex = 247;
this.chbDebug.Text = "调试状态";
this.chbDebug.UseVisualStyleBackColor = true;
this.chbDebug.CheckedChanged += new System.EventHandler(this.chbDebug_CheckedChanged);
//
// lblThisSta
//
this.lblThisSta.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lblThisSta.ForeColor = System.Drawing.Color.Red;
this.lblThisSta.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.lblThisSta.Location = new System.Drawing.Point(6, 59);
this.lblThisSta.Name = "lblThisSta";
this.lblThisSta.Size = new System.Drawing.Size(770, 120);
this.lblThisSta.TabIndex = 246;
this.lblThisSta.Text = "等待启动";
this.lblThisSta.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// lblStoreStatus
//
this.lblStoreStatus.AutoSize = true;
this.lblStoreStatus.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lblStoreStatus.ForeColor = System.Drawing.Color.Green;
this.lblStoreStatus.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.lblStoreStatus.Location = new System.Drawing.Point(790, 21);
this.lblStoreStatus.Name = "lblStoreStatus";
this.lblStoreStatus.Size = new System.Drawing.Size(65, 20);
this.lblStoreStatus.TabIndex = 245;
this.lblStoreStatus.Text = "等待启动";
this.lblStoreStatus.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// btnStart
//
this.btnStart.BackColor = System.Drawing.Color.White;
this.btnStart.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnStart.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnStart.Location = new System.Drawing.Point(6, 14);
this.btnStart.Name = "btnStart";
this.btnStart.Size = new System.Drawing.Size(110, 34);
this.btnStart.TabIndex = 86;
this.btnStart.Text = "启动调试";
this.btnStart.UseVisualStyleBackColor = false;
this.btnStart.Click += new System.EventHandler(this.btnStart_Click);
//
// btnStop
//
this.btnStop.BackColor = System.Drawing.Color.White;
this.btnStop.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnStop.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnStop.Location = new System.Drawing.Point(118, 14);
this.btnStop.Name = "btnStop";
this.btnStop.Size = new System.Drawing.Size(110, 34);
this.btnStop.TabIndex = 87;
this.btnStop.Text = "停止";
this.btnStop.UseVisualStyleBackColor = false;
this.btnStop.Click += new System.EventHandler(this.btnStop_Click);
//
// btnReset
//
this.btnReset.BackColor = System.Drawing.Color.White;
this.btnReset.Enabled = false;
this.btnReset.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnReset.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnReset.Location = new System.Drawing.Point(230, 14);
this.btnReset.Name = "btnReset";
this.btnReset.Size = new System.Drawing.Size(110, 34);
this.btnReset.TabIndex = 95;
this.btnReset.Text = "复位";
this.btnReset.UseVisualStyleBackColor = false;
this.btnReset.Click += new System.EventHandler(this.btnReset_Click);
//
// btnOutStore
//
this.btnOutStore.BackColor = System.Drawing.Color.White;
this.btnOutStore.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnOutStore.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnOutStore.Location = new System.Drawing.Point(345, 14);
this.btnOutStore.Name = "btnOutStore";
this.btnOutStore.Size = new System.Drawing.Size(110, 34);
this.btnOutStore.TabIndex = 101;
this.btnOutStore.Text = "出料测试";
this.btnOutStore.UseVisualStyleBackColor = false;
this.btnOutStore.Click += new System.EventHandler(this.btnOutStore_Click);
//
// tabControl1
//
this.tabControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tabControl1.Controls.Add(this.tabPage1);
this.tabControl1.Location = new System.Drawing.Point(5, 69);
this.tabControl1.Name = "tabControl1";
this.tabControl1.SelectedIndex = 0;
this.tabControl1.Size = new System.Drawing.Size(1296, 676);
this.tabControl1.TabIndex = 257;
//
// tabPage1
//
this.tabPage1.Controls.Add(this.groupBox6);
this.tabPage1.Controls.Add(this.groupBox3);
this.tabPage1.Controls.Add(this.groupBox4);
this.tabPage1.Controls.Add(this.groupBox5);
this.tabPage1.Controls.Add(this.groupBox1);
this.tabPage1.Location = new System.Drawing.Point(4, 26);
this.tabPage1.Name = "tabPage1";
this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
this.tabPage1.Size = new System.Drawing.Size(1288, 646);
this.tabPage1.TabIndex = 0;
this.tabPage1.Text = " IO列表 ";
this.tabPage1.UseVisualStyleBackColor = true;
//
// groupBox6
//
this.groupBox6.Controls.Add(this.lblTrayNum);
this.groupBox6.Controls.Add(this.lblInstoreList);
this.groupBox6.Controls.Add(this.lblThisSta);
this.groupBox6.Location = new System.Drawing.Point(498, 221);
this.groupBox6.Name = "groupBox6";
this.groupBox6.Size = new System.Drawing.Size(781, 419);
this.groupBox6.TabIndex = 278;
this.groupBox6.TabStop = false;
this.groupBox6.Text = "消息";
//
// lblTrayNum
//
this.lblTrayNum.AutoSize = true;
this.lblTrayNum.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lblTrayNum.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.lblTrayNum.Location = new System.Drawing.Point(29, 29);
this.lblTrayNum.Name = "lblTrayNum";
this.lblTrayNum.Size = new System.Drawing.Size(68, 17);
this.lblTrayNum.TabIndex = 276;
this.lblTrayNum.Text = "托盘编码:";
this.lblTrayNum.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// lblInstoreList
//
this.lblInstoreList.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lblInstoreList.ForeColor = System.Drawing.Color.Green;
this.lblInstoreList.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.lblInstoreList.Location = new System.Drawing.Point(6, 207);
this.lblInstoreList.Name = "lblInstoreList";
this.lblInstoreList.Size = new System.Drawing.Size(770, 184);
this.lblInstoreList.TabIndex = 277;
//
// panel1
//
this.panel1.Controls.Add(this.chbDebug);
this.panel1.Controls.Add(this.lblStoreStatus);
this.panel1.Controls.Add(this.btnOutStore);
this.panel1.Controls.Add(this.btnStart);
this.panel1.Controls.Add(this.btnStop);
this.panel1.Controls.Add(this.btnReset);
this.panel1.Location = new System.Drawing.Point(2, 1);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(1295, 68);
this.panel1.TabIndex = 258;
//
// FrmProvidingEquip
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1307, 751);
this.Controls.Add(this.panel1);
this.Controls.Add(this.tabControl1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "FrmProvidingEquip";
this.Text = "移栽——";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmTest_FormClosing);
this.Load += new System.EventHandler(this.FrmStoreIOStatus_Load);
this.Shown += new System.EventHandler(this.FrmIOStatus_Shown);
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.groupBox4.ResumeLayout(false);
this.groupBox3.ResumeLayout(false);
this.groupBox5.ResumeLayout(false);
this.tabControl1.ResumeLayout(false);
this.tabPage1.ResumeLayout(false);
this.groupBox6.ResumeLayout(false);
this.groupBox6.PerformLayout();
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Timer timer1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.GroupBox groupBox3;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
private System.Windows.Forms.GroupBox groupBox4;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.TextBox txtDOIndex;
private System.Windows.Forms.Label label17;
private System.Windows.Forms.Label label14;
private System.Windows.Forms.TextBox txtWriteTime;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Button btnWriteSingleDO;
private System.Windows.Forms.ComboBox cmbWriteIO;
private System.Windows.Forms.CheckBox chbAutoRead;
private System.Windows.Forms.Button btnReadAllDi;
private System.Windows.Forms.Button btnReadAllDo;
private System.Windows.Forms.TextBox txtDoName;
private System.Windows.Forms.TextBox txtSlaveId;
private System.Windows.Forms.GroupBox groupBox5;
private System.Windows.Forms.Button btnClampSlack;
private System.Windows.Forms.Button btnUpDownUp;
private System.Windows.Forms.Button btnBeforeAfterBefore;
private System.Windows.Forms.Button btnTopUp;
private System.Windows.Forms.Label lblThisSta;
private System.Windows.Forms.Label lblStoreStatus;
private System.Windows.Forms.Button btnStart;
private System.Windows.Forms.Button btnStop;
private System.Windows.Forms.Button btnReset;
private System.Windows.Forms.Button btnOutStore;
private System.Windows.Forms.CheckBox chbDebug;
private System.Windows.Forms.Button btnStop2Up;
private System.Windows.Forms.Button btnStop1Up;
private System.Windows.Forms.TabControl tabControl1;
private System.Windows.Forms.TabPage tabPage1;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.CheckBox checkBox1;
private System.Windows.Forms.Button btnCloseAll;
private System.Windows.Forms.Label lblTrayNum;
private System.Windows.Forms.GroupBox groupBox6;
private System.Windows.Forms.Label lblInstoreList;
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.CompilerServices;
using System.Threading;
using System.IO;
using System.Runtime.InteropServices;
using OnlineStore.DeviceLibrary;
using log4net;
using System.Reflection;
using UserFromControl;
using OnlineStore.LoadCSVLibrary;
using OnlineStore.Common;
namespace OnlineStore.AssemblyLine
{
public partial class FrmDischargeLine : FrmBase
{
private bool IsLoad = false;
private string portName = "";
private short SlvAddr = 0;
private DischargeLine dischargeLine;
public static readonly ILog LOGGER = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public FrmDischargeLine(DischargeLine moveEquip)
{
this.dischargeLine = moveEquip;
Control.CheckForIllegalCrossThreadCalls = false;
InitializeComponent();
LoadIOList();
}
Dictionary<string, IOTextControl> DIControlList = new Dictionary<string, IOTextControl>();
Dictionary<string, IOTextControl> DOControlList = new Dictionary<string, IOTextControl>();
private void LoadIOList()
{
int roleindex = 0;
this.tableLayoutPanel1.RowStyles.Clear();
this.tableLayoutPanel1.RowCount = dischargeLine.Config.DIList.Count;
foreach (ConfigIO ioValue in dischargeLine.Config.DIList.Values)
{
this.tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 28));
IOTextControl control = new IOTextControl(ioValue.ElectricalDefinition + "_" + ioValue.Explain, ioValue.ProName);
this.tableLayoutPanel1.Controls.Add(control, 0, roleindex);
roleindex++;
DIControlList.Add(ioValue.ProName, control);
}
tableLayoutPanel2.RowStyles.Clear();
this.tableLayoutPanel2.RowCount = dischargeLine.Config.DOList.Count;
roleindex = 0;
foreach (ConfigIO ioValue in dischargeLine.Config.DOList.Values)
{
this.tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 28));
IOTextControl control = new IOTextControl(ioValue.ElectricalDefinition + "_" + ioValue.Explain, ioValue.ProName);
this.tableLayoutPanel2.Controls.Add(control, 0, roleindex);
roleindex++;
DOControlList.Add(ioValue.ProName, control);
}
this.SuspendLayout(); //此处为不闪屏,一定要有的!
cmbWriteIO.DataSource = new List<ConfigIO>(dischargeLine.Config.DOList.Values);
cmbWriteIO.ValueMember = "ProName";
cmbWriteIO.DisplayMember = "DisplayStr";
}
private void timer1_Tick(object sender, EventArgs e)
{
try
{
if (!this.Visible)
{
return;
}
if (chbAutoRead.Checked && this.Visible)
{
ReadIOList();
lblTrayNum.Text = "托盘编码:" + TrayManager.GetNum(dischargeLine.DeviceID);
}
string canOut = LineManager.Line.CanOutStore(dischargeLine.DeviceID) ? "可出库":"不可出库" ;
lblStoreStatus.Text = KTK_Store.GetRunStr(dischargeLine.lineStatus, dischargeLine.runStatus)+"("+canOut+")";
lblThisSta.Text = dischargeLine.WarnMsg;
string text = "";
List<InOutParam> ps = new List<InOutParam>(dischargeLine.waitOutStoreList);
if (ps.Count > 0)
{
text = "等待出料列表:\r";
foreach (InOutParam param in ps)
{
text += param.ToStr() + "\r";
}
}
if (!lblInstoreList.Text.Equals(text))
{
lblInstoreList.Text = text;
}
}catch(Exception ex)
{
LogUtil.error(dischargeLine.Name+ "界面定时器出错:"+ex.ToString());
}
}
private void FrmTest_FormClosing(object sender, FormClosingEventArgs e)
{
// KNDAIManager.NeedShow = false;
try
{
if (this.timer1.Enabled)
{
this.timer1.Enabled = false;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.StackTrace, "Exception(异常)", MessageBoxButtons.OK, MessageBoxIcon.Error);
LogUtil.error(LOGGER, ex.StackTrace);
}
}
private void btnWriteSingleDO_Click(object sender, EventArgs e)
{
string deviceName = txtDoName.Text;
int index = FormUtil.GetIntValue(txtDOIndex);
IO_VALUE value = checkBox1.Checked ? IO_VALUE.HIGH : IO_VALUE.LOW;
int time = FormUtil.GetIntValue(txtWriteTime);
int slaveId = FormUtil.GetIntValue(txtSlaveId);
if (time > 0)
{
IOManager.instance.WriteSingleDO(deviceName, (byte)slaveId, (ushort)index, (IO_VALUE)value, time);
}
else
{
IOManager.instance.WriteSingleDO(deviceName, (byte)slaveId, (ushort)index, (IO_VALUE)value);
}
}
private ConfigIO GetSelectDO()
{
string text = cmbWriteIO.SelectedValue.ToString();
if (dischargeLine.Config.DOList.ContainsKey(text))
{
ConfigIO io = dischargeLine.Config.DOList[text];
return io;
}
return null;
}
IOTextControl selectControl = null;
private void cmbWriteIO_SelectedIndexChanged(object sender, EventArgs e)
{
if (cmbWriteIO.SelectedIndex >= 0)
{
ConfigIO io = GetSelectDO();
if (io != null)
{
// txtIp.Text = io.DeviceName;
txtDOIndex.Text = io.GetIOAddr().ToString();
txtDoName.Text = io.DeviceName;
txtSlaveId.Text = io.SlaveID.ToString();
IOTextControl newControl = DOControlList[io.ProName];
if (selectControl != null) { selectControl.BackColor = Color.White; }
newControl.BackColor = Color.SkyBlue;
selectControl = newControl;
}
}
}
private void FrmStoreIOStatus_Load(object sender, EventArgs e)
{
chbDebug.Checked = dischargeLine.IsDebug;
lblStoreStatus.Text = KTK_Store.GetRunStr(dischargeLine.lineStatus, dischargeLine.runStatus);
lblThisSta.Text = dischargeLine.WarnMsg;
IsLoad = true;
}
private void cmbWriteIO_DrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index < 0)
{
return;
}
e.DrawBackground();
e.DrawFocusRectangle();
if (cmbWriteIO.Items.Count > e.Index)
{
ConfigIO io = (ConfigIO)cmbWriteIO.Items[e.Index];
e.Graphics.DrawString(io.DisplayStr, e.Font, new SolidBrush(e.ForeColor), e.Bounds.X, e.Bounds.Y + 3);
}
}
private void btnReadIO_Click(object sender, EventArgs e)
{
ReadIOList();
}
private void ReadIOList()
{
foreach (string key in DIControlList.Keys)
{
IOTextControl control = DIControlList[key];
int iov = (int)IOManager.IOValue(key, dischargeLine.DeviceID);
if (iov != control.IOValue)
{
control.IOValue = iov;
control.ShowData();
}
}
foreach (string key in this.DOControlList.Keys)
{
IOTextControl control = DOControlList[key];
int iov = (int)IOManager.DOValue(key, dischargeLine.DeviceID);
if (iov != control.IOValue)
{
control.IOValue = iov;
control.ShowData();
}
}
}
private void btnReadAllDi_Click(object sender, EventArgs e)
{
string deviceName = txtDoName.Text;
IO_VALUE value = checkBox1.Checked ? IO_VALUE.HIGH : IO_VALUE.LOW;
int time = FormUtil.GetIntValue(txtWriteTime);
int slaveId = FormUtil.GetIntValue(txtSlaveId);
IOManager.instance.ReadAllDI(deviceName, (byte)slaveId);
}
public void FormStatus(bool isStart)
{
btnStart.Enabled = !isStart;
btnStop.Enabled = true;
btnReset.Enabled = isStart;
//btnInStore.Enabled = isStart;
btnOutStore.Enabled = isStart;
}
private void btnReadAllDo_Click(object sender, EventArgs e)
{
string deviceName = txtDoName.Text;
IO_VALUE value = checkBox1.Checked ? IO_VALUE.HIGH : IO_VALUE.LOW;
int time = FormUtil.GetIntValue(txtWriteTime);
int slaveId = FormUtil.GetIntValue(txtSlaveId);
IOManager.instance.ReadAllDO(deviceName, (byte)slaveId );
}
private void FrmIOStatus_Shown(object sender, EventArgs e)
{
timer1.Start();
}
private void btnStart_Click(object sender, EventArgs e)
{
if (dischargeLine.runStatus.Equals(LineRunStatus.Wait))
{
bool result = dischargeLine.StartDebugRun();
if (result)
{
FormStatus(true);
}
}
}
private void chbDebug_CheckedChanged(object sender, EventArgs e)
{
if (!IsLoad)
{
return;
}
if (chbDebug.Checked)
{
if (!dischargeLine.IsDebug)
{
DialogResult result = MessageBox.Show("是否切换到调试状态?", "是否确认切换", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
if (result.Equals(DialogResult.Yes))
{
dischargeLine.IsDebug = true;
dischargeLine.Config.IsDebug = 1;
LineManager.SaveDischargeLineConfig(dischargeLine.Config);
dischargeLine.ChangeDebug(true);
LogUtil.info(dischargeLine.Name+ "用户切换到调试状态 ");
}
}
}
else
{
if (dischargeLine.IsDebug)
{
DialogResult result = MessageBox.Show("是否切换到正常工作状态?", "是否确认切换", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
if (result.Equals(DialogResult.Yes))
{
dischargeLine.IsDebug = false;
dischargeLine.Config.IsDebug = 0;
LineManager.SaveDischargeLineConfig(dischargeLine.Config);
dischargeLine.ChangeDebug(false);
LogUtil.info(dischargeLine.Name + "用户切换到正常工作状态 ");
}
}
}
}
private void btnOutStore_Click(object sender, EventArgs e)
{
if (dischargeLine.runStatus .Equals(LineRunStatus.Runing))
{
dischargeLine.StartOutStoreMove(new InOutParam( ));
}
else
{
MessageBox.Show("未启动或不在空闲中,无法入库测试!");
}
}
private void btnStop_Click(object sender, EventArgs e)
{
try
{
dischargeLine.StopMove();
}
catch (Exception ex)
{
LogUtil.error( "出错:" + ex.StackTrace);
}
}
private void btnReset_Click(object sender, EventArgs e)
{
if (dischargeLine.runStatus>(LineRunStatus.Wait))
{
dischargeLine.Reset();
}
}
private void btnStop1Up_Click(object sender, EventArgs e)
{
if (btnStop1Up.Text.Equals("阻挡气缸1下降"))
{
dischargeLine.IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.HIGH);
btnStop1Up.Text = "阻挡气缸1上升";
btnStop1Up.BackColor = Color.Aqua;
}
else
{
dischargeLine.IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.LOW);
btnStop1Up.Text = "阻挡气缸1下降";
btnStop1Up.BackColor = Color.White;
}
}
private void btnStop2Up_Click(object sender, EventArgs e)
{
if (btnStop2Up.Text.Equals("阻挡气缸2下降"))
{
dischargeLine.IOMove(IO_Type.StopCylinder_Down2, IO_VALUE.HIGH);
btnStop2Up.Text = "阻挡气缸2上升";
btnStop2Up.BackColor = Color.Aqua;
}
else
{
dischargeLine.IOMove(IO_Type.StopCylinder_Down2, IO_VALUE.LOW);
btnStop2Up.Text = "阻挡气缸2下降";
btnStop2Up.BackColor = Color.White;
}
}
private void btnTopUp_Click(object sender, EventArgs e)
{
if (btnTopUp.Text.Equals("顶升气缸上升"))
{
dischargeLine.CylinderMove(null, IO_Type.TopCylinder_Down, IO_Type.TopCylinder_UP);
btnTopUp.Text = "顶升气缸下降";
btnTopUp.BackColor = Color.Aqua;
}
else
{
dischargeLine.CylinderMove(null, IO_Type.TopCylinder_UP, IO_Type.TopCylinder_Down);
btnTopUp.Text = "顶升气缸上升";
btnTopUp.BackColor = Color.SkyBlue;
}
}
private void btnBeforeAfterBefore_Click(object sender, EventArgs e)
{
if (btnBeforeAfterBefore.Text.Equals("前后气缸前进"))
{
dischargeLine.CylinderMove(null, IO_Type.BeforeAfterCylinder_After, IO_Type.BeforeAfterCylinder_Before);
btnBeforeAfterBefore.Text = "前后气缸后退";
btnBeforeAfterBefore.BackColor = Color.Aqua;
}
else
{
dischargeLine.CylinderMove(null, IO_Type.BeforeAfterCylinder_Before, IO_Type.BeforeAfterCylinder_After);
btnBeforeAfterBefore.Text = "前后气缸前进";
btnBeforeAfterBefore.BackColor = Color.SkyBlue;
}
}
private void btnUpDownUp_Click(object sender, EventArgs e)
{
if (btnUpDownUp.Text.Equals("上下气缸上升"))
{
dischargeLine.CylinderMove(null, IO_Type.UpDownCylinder_Down, IO_Type.UpDownCylinder_Up);
btnUpDownUp.Text = "上下气缸下降";
btnUpDownUp.BackColor = Color.Aqua;
}
else
{
dischargeLine.CylinderMove(null, IO_Type.UpDownCylinder_Up, IO_Type.UpDownCylinder_Down);
btnUpDownUp.Text = "上下气缸上升";
btnUpDownUp.BackColor = Color.SkyBlue;
}
}
private void btnClampSlack_Click(object sender, EventArgs e)
{
if (btnClampSlack.Text.Equals("夹料气缸夹紧"))
{
dischargeLine.CylinderMove(null, IO_Type.ClampCylinder_Tighten, IO_Type.ClampCylinder_Slack);
btnClampSlack.Text = "夹料气缸放松";
btnClampSlack.BackColor = Color.Aqua;
}
else
{
dischargeLine.CylinderMove(null, IO_Type.ClampCylinder_Slack, IO_Type.ClampCylinder_Tighten);
btnClampSlack.Text = "夹料气缸夹紧";
btnClampSlack.BackColor = Color.SkyBlue;
}
}
private void btnCloseAll_Click(object sender, EventArgs e)
{
IOManager.instance.CloseAllDO();
}
}
}
<?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>
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 11</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>25</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAA8AMDAQAAEABABoBgAA9gAAACgoEAABAAQAyAQAAF4HAAAgIBAAAQAEAOgCAAAmDAAAGBgQAAEA
BADoAQAADg8AABAQEAABAAQAKAEAAPYQAAAwMAAAAQAIAKgOAAAeEgAAKCgAAAEACACoCwAAxiAAACAg
AAABAAgAqAgAAG4sAAAYGAAAAQAIAMgGAAAWNQAAEBAAAAEACABoBQAA3jsAADAwAAABACAAqCUAAEZB
AAAoKAAAAQAgAGgaAADuZgAAICAAAAEAIACoEAAAVoEAABgYAAABACAAiAkAAP6RAAAQEAAAAQAgAGgE
AACGmwAAKAAAADAAAABgAAAAAQAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACA
gACAAAAAgACAAICAAACAgIAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAAwMDAAP///wAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAA/lAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAA
D///8AAAAAAAAAAAAAAAAAAAAAAAAAAE7////0AAAAAAAAAAAAAAAAAEZHZGBABP/////+AAQkJWZkAA
AAAAAAAG6+t3YAD///////8AB7brd2AAAAAAAAAHvtt0AA/////////kAEd77UAAAAAAAAAGt3ZgBO//
////////ACRnvlAAAAAAAAAHd0QAT///////////8EBHdmAAAAAAAAAEZ2QA////7uvb7v///kAkR0AA
AAAAAAAEdAAf///r69e+vb7///AAZ0AAAAAAAAAGUATv//vtvr2+t72+//9AB0AAAAAAAAAEAC///r6+
t76+vbe+7//gBCAAAAAAAAAABO//7t6+fX2+vre3vv//AAAAAAAAAAAAD///3r69t76+vb69vv//5AAA
AAAAAAAA///+vt5+3r7b69t723///wAAAAAAAAAP///3576+vre+vXvr23////AAAAAAAAD////73n19
7t6+vNvrdr7///8AAAAAAA7////t7r7ne+vtd9vr237////wAAAABP/////r7evt536+vr6+t7f////+
cAAAb//////r7r7evt7X1769vr3/////8AABD/////99fu5+7r7r7X6+t7f/////8AAAAP/////n7t7u
7Xfr6+vX233/////AAAAAA/////t7u7e7u3n7evr577////wAAAAAAD////+7u7u7t6+2+vr69////8A
AAAAAAAP///+3u7+7ufud33tt7////AAAAAAAAAA///+7u/u7e7evt6+vu///wAAAAAAAAAAD///7u7u
7u7N7r7evf//8AAAAAAAAAAEBP///u7u7ud9576+v//+QEAAAAAAAAAGcE7//u7u7t7r7efe7//wR0AA
AAAAAAAGe0D///7u7n5+fr6///8AfVAAAAAAAAALfXAP///u3n19vt7///BOt2AAAAAAAAAHd75A////
/u7u7v///kB3vrAAAAAAAAAE3rdwD///////////8ke+3kAAAAAAAAAE6+17ZP//////////AHvte3AA
AAAAAAAE6+vrcA/////////wRd63fVAAAAAAAAAG7XfXdgH///////8Aduvtd2AAAAAAAAAAVkdGVkAP
//////AGVkdGVgAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAA
AAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD///////8AAP///n///wAA///8P///AAD///gf//8AAP//8A///wAA///gB///AAD8AAAAAD8AAPwA
AAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwAAAAAPwAA/AAAAAA/
AAD8AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8AAAAAD8AAPgAAAAAHwAA8AAAAAAPAADgAAAAAAcAAMAA
AAAAAwAAgAAAAAABAACAAAAAAAEAAMAAAAAAAwAA4AAAAAAHAADwAAAAAA8AAPgAAAAAHwAA/AAAAAA/
AAD8AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwA
AAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD//+AH//8AAP//8A///wAA///4H///
AAD///w///8AAP///n///wAA////////AAAoAAAAKAAAAFAAAAABAAQAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
AADAwMAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF
cAAAAAAAAAAAAAAAAAAAAAAAAH/3AAAAAAAAAAAAAAAAAAAAAAAH//9wAAAAAAAAAAAAAAAAQAAAAH//
//cAAAAABAAAAAAABHt2VkAH/////3AFa3t2AAAAAAAAfXt2AH//////9wBGd9VAAAAAAAC3dkQH////
////cAR7dgAAAAAAAGezAH/////////3BGZ2AAAAAAAAdkQH///uvr3u//9wBWcAAAAAAABkAH//++2+
vVvu//cERgAAAAAAAAQH//7et9vr29vv/3AEAAAAAAAAAH//6+e+t7e+t77/9wAAAAAAAAAH//7r1313
fb69tu//cAAAAAAAAH///m53e+t7e3vr7//3AAAAAAAH///uvtftfX3r22u+//9wAAAAAH///+vte+vr
6+vr6+7///cAAAAH////3nfu3u3r3r69tv///nAAAH/////r7evr6+vre9e+////9wAAf////75+7u3u
fn3rfbf////3AAAH////7e7t7uvtvrvr6////3AAAAB////u3u7t7ud+3r2+///3AAAAAAf//+7u7u7u
ve2+d37//3AAAAAAAH///u7v7u7r7evbf//3AAAAAAAAB///7u/t7Xfuvn7v/3AAAAAAAABAf//u7u7u
frd9vv/3BAAAAAAAAHdH//7u7n5+3tfv/3C3QAAAAAAAvVB//+7u1+vr7v/3C3cAAAAAAAB9e0f//+7n
7e7//3B96wAAAAAAALfeYH/////////3C+vmAAAAAAAAfr63R////////3B9e+ZAAAAAAAC3fXdwf///
///3C3fetwAAAAAAAGdnt2QH/////3BHZ7dnAAAAAAAAAAAAAAB////3AAAAAAAAAAAAAAAAAAAAAAf/
/3AAAAAAAAAAAAAAAAAAAAAAAH/3AAAAAAAAAAAAAAAAAAAAAAAAB3AAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAD//+f//wAAAP//w///AAAA//+B//8A
AAD//wD//wAAAPgAAAAfAAAA+AAAAB8AAAD4AAAAHwAAAPgAAAAfAAAA+AAAAB8AAAD4AAAAHwAAAPgA
AAAfAAAA+AAAAB8AAAD4AAAAHwAAAPgAAAAfAAAA+AAAAB8AAADwAAAADwAAAOAAAAAHAAAAwAAAAAMA
AACAAAAAAQAAAIAAAAABAAAAwAAAAAMAAADgAAAABwAAAPAAAAAPAAAA+AAAAB8AAAD4AAAAHwAAAPgA
AAAfAAAA+AAAAB8AAAD4AAAAHwAAAPgAAAAfAAAA+AAAAB8AAAD4AAAAHwAAAPgAAAAfAAAA+AAAAB8A
AAD4AAAAHwAAAP//AP//AAAA//+B//8AAAD//8P//wAAAP//5///AAAA//////8AAAAoAAAAIAAAAEAA
AAABAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAICA
gAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AADAwMAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAG7gAAAAAAAAAAAAAAAAAADv/kAAAAAAAAAAAABARABO///gBARAAAAAAABH63tg
7////kZ3vrQAAAAAC+13Tv/////mt9dwAAAAAAfbdO///////gbr5AAAAABL5k7/7ut37v/iXXAAAAAA
DnDv/td729vv/kZ0AAAAAAZO/+vr6+vr6//lYAAAAAAA7/7r69t7e7v//gAAAAAATv/77efn13fbfv/k
AAAAAO//7ee+vbe9vr7//gAAAE7//+vt537uvr23///hAADv//933r7Xvbe3t////gAA7///5+7n7n7X
fXb///4AAA///+3u3u2+vr6+///mAAAA7//u7u7u7t69vv/+AAAAAA7//u/u7Xvr7c7/4AAAAAAA7/7u
7u7tfr3v/gAAAAAAB27/7+7ufuvu7+R0AAAAAEtw7/7u3r197/5GcAAAAAAO1U7//u7u7//gfrQAAAAA
S31w7//////+e11wAAAAAAfr607/////4WvtdAAAAABGd9dw7////kbm63AAAAAAAAQAAA7//+AABAAA
AAAAAAAAAAAA7/4AAAAAAAAAAAAAAAAAAA7nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA///////+f////D////gf//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD+AA
AAfAAAADgAAAAYAAAAHAAAAD4AAAB/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD//4
H////D////5///////8oAAAAGAAAADAAAAABAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
gAAAgAAAAICAAIAAAACAAIAAgIAAAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AADAwMAA////AAAA
AAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAf+cAAAAAAAAAQkYF7/9gBgYAAAAGvrdv///3vr5AAAAA
7mX/////R31AAAAAtl/+7r7v87cAAAAEd//b69vb/2dAAAAAT/7r6+vrf+cAAAAC/+vr7be3vv9wAAB/
/+3r5969vv/wAAf//33N6+t76///YAD//+3u5+3rt///cAB//+7u3te+3v/xAAAE//7u7u6+vv8gAAAA
f/7u7r197vYAAAAEZP/u7u6+/1ZAAAAA53/+7t7v925AAAAEt2H/////R74AAAAE7eZ////wft5AAAAA
BAQA//9wBAQAAAAAAAAAf/QAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAP//////5////8P//+AA
B//gAAf/4AAH/+AAB//gAAf/4AAH/+AAB//AAAP/gAAB/4AAAf/AAAP/4AAH/+AAB//gAAf/4AAH/+AA
B//gAAf/4AAH///D////5////////ygAAAAQAAAAIAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAMDA
wAD///8AAAAADnAAAAAAAADufgAAAAAFZH/+RkQAAG6+///k5AAARu/ut/d2AABO+9vr3+QAB+7u7b6+
9+Du/+2+vrf/537/7u7Xe/9+Dn/u7uvt/uAAR/7t6+/gAABn7u7u97YAAE5u///m5gAABlDv9wZQAAAA
AH7uAAAAAAAADnAAAAD+f////D///8AD///AA///wAP//8AD//+AAf//AAD//wAA//+AAf//wAP//8AD
///AA///wAP///w////+f///KAAAADAAAABgAAAAAQAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAEAgEABAQEAAgICAANDQ0AEQkGABISEgAUFBQAGRkZAB0dHQAnFg4AKBYOAC4aEQA9IhYAJSUlACws
LAAxMTEAODg4AD4+PgBFJxkAUy8fAFozIQBlOSUAcD8qAHJAKgB2QywAeUQtAEBAQABFRUUASEhIAFNT
UwBXV1cAXV1dAGFhYQBlZWUAampqAG5ubgBycnIAeHh4AH5+fgCHTDIAiEwyAMlTLgDLVTAAzVkzAMxZ
NADMXDoA0Fw2ANNgOADUYjoA1WQ8ANhnPgDYaD8AsWRCANVnQgDaaUAA3GxDANhrRADdbUQA3nBGANF2
TgDXclAA3ntXAOBxRgDhc0kA4XRKAON2TADkd00A5HhNAOh8TwDme1AA5nxSAOh9UQDpf1QA5IFVAOuA
UwDoglYA7IJVAOmCWADthlkA7IdcAO2IXQDwh1kA8ohZAPGKXADyjF8A9IxeAN2LbwDdi3AA3ZJ6AO6L
YADvjGIA8Y1hAPSOYQDxj2QA9JBiAPGRZgD0kmYA8pNoAPOWawD0lWoA9JZsAPSYbgDml3kA9ZpxAPWd
dQD2n3gA9aB5APaifQD2poEA9qeEAPeohAD3q4gA962LAPCqjgD3ro0A97CPAPexkAD3tZYA+LCQAPiz
lAD4tJYA+LaZAPi5nQDotKMA6LWmAPi7oAD4vaIA+b6kAPG/rAD5wKYA+cKqAPnFrQDsxbkA+cawAPnJ
tAD5zLcA+s25APrPvAD60L0A2traANzc2wDc3NwA+tTDAPrWxgD72McA+tfIAPvZyQD7280A+93PAPzd
zwD73dAA/OTZAP3p4AD46+cA++/pAPzw6wD98uwA/fbyAP39/QAAAAAALwMAAFAEAABwBgAAkAkAALAK
AADPDAAA8A4AAP8gEgD/PjEA/1xRAP96cQD/l5EA/7axAP/U0QD///8AAAAAAC8ADgBQABcAcAAhAJAA
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
AA78AAAAAD8ADvwAAAAAPwAO/AAAAAA/AA78AAAAAD8ADvwAAAAAPwAO/AAAAAA/AA78AAAAAD8ADvgA
AAAAHwAO8AAAAAAPAA7gAAAAAAcADsAAAAAAAwAOgAAAAAABAA6AAAAAAAEADsAAAAAAAwAO4AAAAAAH
AA7wAAAAAA8ADvgAAAAAHwAO/AAAAAA/AA78AAAAAD8ADvwAAAAAPwAO/AAAAAA/AA78AAAAAD8ADvwA
AAAAPwAO/AAAAAA/AA78AAAAAD8ADvwAAAAAPwAO/AAAAAA/AA78AAAAAD8ADvwAAAAAPwAO/AAAAAA/
AA7//+AH//8ADv//8A///wAO///4H///AA7///w///8ADv///n///wAO////////AA4oAAAAKAAAAFAA
AAABAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFBQAMBwQACgoKAA4ODgAcDwoAHBAKABAQ
EAAeHh4ALRkQACkpKQAuLi4AMDAwADY2NgA6OjoAPT09AEUnGQBjNyQAYzgkAGQ4JABtPSgAcT8pAHJA
KgBCQkIARkZGAElJSQBOTk4AV1dXAFlZWQBdXV0AYWFhAGVlZQBoaGgAbGxsAHl5eQB+fn4AiU0zAJBR
NQCYVjgAp14+AKlfPgCqYD8AyVMuAMlULwDMVzEAz1s1ANJfOADTYDkA1WQ8ANloPwCuYkAAsmRCALVm
QwC2ZkQAxW9JANVnQQDZaUAA3GxCANhrRADdbkQA0GlJAN9wRQDXc1IA335aAOBxRwDgckkA4nRJAON3
TADjeE4A5XlNAOF/UwDnfVIA4X9UAOd+VADpflEA6YFWAOyCVQDphFcA6oNYAOmEWQDthlgA7YleAPKI
WgD0ilsA8IpdAPKMXgDeknkA6YpjAO2LYADyjmEA9I5hAPCPZAD0kGMA8pFmAPSSZQDxkmgA9JNoAPOU
aQD0lWoA9JZsAPSYbgD0mnEA9ZxzAPWddQD2n3gA9aF7APWifAD2pH4A6Z+EAOCdiQD2pYEA9qmGAPar
iAD3ro0A97GRAPe0lgD4tpgA97ibAPi5ngD3u6EA97yiAPi7oAD4vaIA+b6kAPnApwD4w6sA+cStAO3G
uQD5xrAA+ciyAPnJtAD5zbgA+tC+APTOwAD608EA+dXFAPvZyQD72swA+9zNAPzi1gD86N8A/Pn3APr6
+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
AAAsAC8ASwBQAGkAcACHAJAApQCwAMQAzwDhAPAA8BH/APIx/wD0Uf8A9nH/APeR/wD5sf8A+9H/AP//
/wAAAAAAGwAvAC0AUAA/AHAAUgCQAGMAsAB2AM8AiADwAJkR/wCmMf8AtFH/AMJx/wDPkf8A3LH/AOvR
/wD///8AAAAAAAgALwAOAFAAFQBwABsAkAAhALAAJgDPACwA8AA+Ef8AWDH/AHFR/wCMcf8AppH/AL+x
/wDa0f8A////AAAAAAAAAAAXFwAAAAAAAAAAAAAAAAAXFxcXAAAAAAAAAAACAwMBFyQkFwEDAwIAAAAA
AxAFFyQkJCQXBRADAAAAAAMFFyIYCwgRIRcFAwAAAAABFyITDQwJBwYhFwEAAAAXFyQbExIPDAoHESQX
FwAXFyQkFRYWFA8MCggkJBcXFxckJBodHBkUDgwLJCQXFwAXFyQeIB8dFhINGCQXFwAAAAEXIyAgHRYT
EyIXAQAAAAADBBcjHhoVGyIXBQMAAAAAAxAEFyQkJCQXBRADAAAAAAIDAwEXJCQXAQMDAgAAAAAAAAAA
FxcXFwAAAAAAAAAAAAAAAAAXFwAAAAAAAAD+fwAA/D8AAMADAADAAwAAwAMAAMADAACAAQAAAAAAAAAA
AACAAQAAwAMAAMADAADAAwAAwAMAAPw/AAD+fwAAKAAAADAAAABgAAAAAQAgAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAABAAAABQAAABAAAAAlAAAARgAAAHEAAACaAAAAvgAAAL4AAACaAAAAcAAA
AEYAAAAlAAAAEAAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAABAAA
AAUAAAAFAAAABgAAAAYAAAAGAAAABgAAAAYAAAALAAAAFQAAACoAAABKAAAAdAAAAKIAAADNAAAA+gAA
APoAAADNAAAAogAAAHQAAABKAAAAKQAAABUAAAAKAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAA
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
Qf+HTDL/WzMh/y4aEf8DAgH/HR0d/9ra2f/9/f3//v79//39/f/+/v3//v79//7+/f/9/f3//f39//7+
/f/+/v3//f39//7+/v/+/v3//f39//39/f/9/f3/2NjY/xwcG/8EAgH/LhoR/1szIf+ITDL/sWRB/9F2
Tv9wPyn/AAAA/wAAAL4AAAB/AAAAQQAAABgAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAHAAA
AP9lOSX/sGRB/4ZLMf9aMiH/LhoR/wMCAf8fHx//2tra//7+/f/+/v7//v79//7+/f/77ej/8L+r/+aW
ef/ee1f/2GtE/9VnQf/XcU//3Ipv/+i0o//46eX//f39//7+/f/9/f3//v7+/9jY2P8dHR3/AwIB/y4Z
EP9aMiH/hkwx/7FkQf9lOSX/AAAA/wAAAL8AAACAAAAAQQAAABgAAAAGAAAAAAAAAAAAAAAAAAAAAAAA
AAEAAAALAAAAJgAAAP9TLx7/h0wx/1oyIf8uGhD/BAIB/x8fH//Z2dn//v7+//7+/v/+/v7//O/q/++q
jv/keE7/4HFG/91tQ//aakD/2GY+/9VjO//SXzj/0Fw1/81ZMv/MWjX/3ZF6//jq5v/+/v3//v7+//7+
/v/Y2Nf/HR0d/wMCAf8uGRD/WjIh/4dMMv9TLx//AAAA/wAAAMEAAACCAAAAQgAAABgAAAAGAAAAAAAA
AAAAAAAAAAAAAQAAAAUAAAAVAAAAOAAAAP89Ihb/WjMh/y4aEf8EAgH/HR0d/9ra2v/+/v7//v79//7+
/f/51sb/7Ihd/+h8T//leUz/4nVJ/+BxR//dbkT/2mtB/9hnP//VYzz/0l85/9BcNf/NWTL/ylUw/8xd
O//sxLj//v7+//7+/v/+/v7/2NjY/xwcG/8DAgH/LhkQ/1ozIf89Ihb/AAAA/wAAAMYAAACHAAAARQAA
ABkAAAAGAAAAAAAAAAAAAAABAAAABQAAABAAAAAqAAAAVwAAAP8nFg7/LhoR/wMCAf8fHx//2tra//7+
/v/+/v7//v79//rNuf/wh1n/7YNV/+qAU//ofVD/5XlO/+N2S//hckj/3m9F/9trQv/YZz//1WQ8/9Jf
Of/QXDb/zVkz/8pVL//JUy//57Sk//7+/v/+/v7//v7+/9jY2P8eHh3/AwIB/y4aEf8nFg7/AAAA/wAA
AM8AAACRAAAATAAAABwAAAAGAAAAAAAAAAEAAAAFAAAADwAAACUAAABJAAAAfgAAAP8QCQX/BAIB/x8f
H//Z2dn//f39//39/f/+/v3/+9jI//SMXf/yilv/74dZ/+2FV//rglX/6H5S/+Z7T//jd0z/4XNJ/95w
Rv/ba0P/2Gc//9VkPP/TYDn/0Fw2/81ZM//KVTD/yVMv/+zEuP/+/v3//v79//39/f/X19f/Hh4d/wQC
Af8QCQX/AAAA/wAAANoAAAChAAAAXAAAACYAAAAKAAAAAQAAAAUAAAAPAAAAJAAAAEYAAAB0AAAAqAAA
AP8AAAD/HR0d/9ra2v/+/v7//v79//7+/f/98ev/9JNo//OMXv/zjV7/8o1f//GKXf/uhlr/64NX/+l/
VP/me1D/5HhN/+FzSv/ecEb/22xD/9hnP//WZDz/02A5/9BcNv/NWTP/ylUw/8xdO//46ub//v7+//39
/f/+/v3/2NjY/xwcHP8AAAD/AAAA/wAAAOYAAAC3AAAAdAAAADgAAAAVAAAABQAAAA8AAAAkAAAARgAA
AHIAAACiAAAA0gAAAP8fHx//2trZ//39/f/9/f3//f39//7+/f/4t5n/841f//SOYP/0j2L/9I9i//OP
Yv/xjF//7ohc/+yEWf/pgFX/5nxS/+R4Tv/hdEr/3nBG/9tsQ//ZaED/1mQ8/9NgOf/QXDb/zVkz/8tV
MP/dkXr//v39//39/f/9/f3//v79/9jY2P8eHh7/AAAA/wAAAPEAAADPAAAAlQAAAFYAAAApAAAADwAA
ACAAAABCAAAAbwAAAKAAAADPAAAA+x8fH//Z2dn//v79//7+/f/+/v3//v79//3x6//0kWT/849h//SR
ZP/0kmX/9JJm//STZv/zkWX/8Y1i/+6JXv/shlr/6YFW/+Z9Uv/jeU7/4XRK/95wR//bbEP/2WhA/9Zk
PP/TYDn/0Fw2/81ZMv/MWTX/+Orl//39/f/+/v3//v79//39/f/X19f/Hh4e/wAAAP4AAADlAAAAtwAA
AHwAAABGAAAAIAAAADQAAABjAAAAmAAAAMwAAAD6HR0d/9ra2v/+/v7//v79//7+/v/+/v7//v7+//rN
uP/0kGL/9JJl//SUaP/0lWr/9JVr//SWa//0lWr/85No//GPZP/ui2D/64dc/+mCV//mfVP/43lO/+B0
Sv/ecEf/22xD/9loQP/WZDz/0mA5/9BcNf/NWTL/6LSj//7+/v/+/v7//v7+//7+/v/+/v7/2NjY/xwc
HP8AAAD8AAAA2AAAAKAAAABmAAAANQAAAEMAAAB5AAAAugAAAPofHx/+2tra//7+/v/+/v7//v7+//7+
/v/+/v7//v7+//ixkf/0k2f/9JZr//WYb//1mnH/9Zpx//Wacf/1mXD/9Jhv//SWbP/xkWf/74xi/+yH
Xf/pglj/5n1T/+N5T//hdEr/3nBH/9xsQ//ZaD//1WQ8/9JfOf/QXDX/3Ypv//7+/f/+/v7//v7+//7+
/v/+/v7//f39/9jY2P8dHR3/AAAA+wAAAL8AAAB7AAAAQwAAAEEAAACNAAAA9h8fH//Z2dn//v7+//39
/f/9/f3//v7+//7+/f/+/v7//v7+//ahe//0lmz/9Ztx//Wedv/1n3j/9aB5//Wgef/1n3j/9Z11//Wb
cv/0mG7/8pJp/++NY//siF3/6YJY/+Z9U//jeU7/4XRK/95wRv/bbEP/2Gc//9VjPP/SXzj/13JQ//7+
/f/+/v7//v7+//7+/v/+/v7//f39//39/f/X19f/HR0d/wAAAPYAAACOAAAAQQAAAFQAAADvHR0d/9ra
2v/9/f3//v7+//39/f/9/f3//f39//39/f/+/v3//f39//Wbcv/1m3L/9aB5//akf//2poL/9qeD//an
g//2pYH/9aN9//Wgef/1nXX/9Jlw//KTaf/vjWL/64dc/+iBV//mfVL/43hO/+FzSf/eb0b/22tC/9dn
Pv/VYzv/1WdB//39/f/+/v3//v79//39/f/9/f3//f39//39/f/9/f3/2NjY/xwcHP8AAADvAAAAVAAA
AEMAAADrHh4e/tvb2//+/v7//v7+//7+/v/+/v3//v7+//7+/v/+/v7//v79//aed//1oHn/9qeD//es
iv/3r47/97CQ//ewkP/3roz/9qqI//angv/2onz/9Z52//SZcP/ykmj/7oxh/+uHXP/pgVb/5nxS/+R4
Tf/hc0n/3m9G/9prQf/YZj7/2GtE//7+/f/+/v3//v79//7+/v/+/v7//f39//7+/v/9/f3/2tra/x0d
Hf4AAADqAAAAQQAAAAwAAABGAAAA6yAgIP7a2tr//v7+//39/f/9/f3//v79//7+/f/+/v7//f39//eq
iP/2pYH/966N//i1l//4uJz/+Lqe//i6nf/4t5n/97KT//etjP/2p4T/9aJ8//Wddf/0l27/8ZFm/+6L
YP/rhVr/6YBV/+Z7UP/kd0z/4XJI/91uRP/aakD/3ntX//39/f/+/v3//v79//7+/f/+/v3//f39//39
/f/Z2dn/Hx8f/gAAAOsAAABIAAAADAAAAAMAAAAMAAAARQAAAO0gICD+29vb//39/f/9/f3//v79//7+
/f/+/v3//v79//i9ov/2qoj/97WX//i+o//4wqr/+cSt//nEq//4wKf/+Luf//e0lv/3rYz/9qaC//Wg
ef/1m3L/85Vr//CPZP/uiV7/64RY/+l/U//me0//43ZL/99xRv/dbUP/5pZ5//7+/f/+/v3//v79//7+
/f/+/v3//f39/9nZ2f8fHx//AAAA7wAAAFQAAAASAAAABAAAAAAAAAADAAAADAAAAEUAAADrHh4e/tvb
2//+/v7//v7+//7+/v/+/v7//v79//vXx//3r47/+Lyg//nGr//5zLj/+s+7//nNuf/5ybP/+MOr//i7
oP/3s5T/9qqI//ajfv/1nXX/9Jhu//OTaP/wjWL/7ohc/+uDV//pflL/5XlO/+J1Sf/gcUb/8b+r//7+
/f/+/v3//v79//7+/v/+/v7/2tra/x0dHf8AAADzAAAAcQAAACMAAAAJAAAAAQAAAAAAAAAAAAAAAwAA
AA0AAABJAAAA7CAgIP/a2tr//v79//7+/f/+/v3//v79//308P/4tJb/+MCm//nMuP/61MP/+tfH//rW
xf/60b7/+cm0//jAp//4t5r/966N//amgf/1n3j/9Zlw//SVav/zkWX/8Yxf/+6HWv/rglX/6H1Q/+V4
TP/keE7/++3o//39/f/+/v3//v7+//7+/f/Z2dn/Hx8f/wAAAPgAAACeAAAASgAAABsAAAAGAAAAAAAA
AAAAAAAAAAAAAAAAAAQAAAASAAAAVQAAAP8gICD/29vb//7+/f/+/v3//f39//7+/f/60L3/+MCn//rO
u//62Mn/+9zP//vbzf/61sX/+c25//nErP/4up7/97CQ//eng//2oHn/9Zpx//WWa//0k2b/9I9i//GK
Xf/uhVj/64BT/+h8T//vqo3//v79//39/f/9/f3//v7+/9ra2v8fHx//AAAA/wAAAMwAAACFAAAARAAA
ABgAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAJAAAAIwAAAP8AAAD/Hh4e/9vb2//+/v7//v79//7+
/v/99vL/+cOq//nLt//618f/+93P//vcz//618f/+s+7//nFrf/4up7/97CQ//enhP/1oHn/9Zpx//SV
a//0kmb/9JBj//ONX//wiFr/7YNV/+yIXf/87+r//v7+//7+/f/+/v3/2tra/x0dHf8AAAD/AAAA/wAA
AMEAAACBAAAAQgAAABgAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAGwAAAP9EJhn/EgoG/yAg
IP/a2tr//v7+//7+/v/+/v7//Ong//nFrv/50L3/+tfH//vYyf/61MP/+cy4//nDq//4uZz/96+P//an
g//1oHn/9Zpw//SVav/0kmX/9I9i//ONX//yi1z/8IdZ//nWxv/+/v7//v7+//7+/f/Z2dn/Hx8f/xMK
B/9FJxn/AAAA/wAAAL4AAACAAAAAQQAAABgAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAGAAA
AP9yQCr/sWRB/xEJBv8gICD/29vb//7+/f/+/v7//v7+//zj2P/4xa7/+cu3//nOu//5zLj/+cav//i+
pP/3tZf/9qyK//akf//1nnb/9Zhu//SUaP/0kWP/9I5g//OMXf/zjF7/+s25//7+/f/+/v7//v79/9ra
2f8fHx//EQoG/7JlQv9yQCr/AAAA/wAAAL4AAAB/AAAAQQAAABgAAAAGAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAGAAAAGAAAAP93Qyz/6INW/7FkQf8SCgb/Hh4e/9vb2//+/v7//v7+//7+/v/86eD/+cKq//jA
p//4v6b/+Lug//e1mP/3ro3/9qeD//Wgev/1mnH/9JVq//SSZf/0j2H/841f//WUaP/72Mj//v7+//7+
/v/+/v7/2tra/x0dHf8TCwf/smVC/+iCVv93Qyz/AAAA/wAAAL4AAAB/AAAAQQAAABgAAAAGAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAGAAAAGAAAAP95RC3/8IdZ/+eCVv+wY0H/EgoG/yAgIP/a2tr//v7+//7+
/f/+/v7//fby//rQvf/3tJX/9q6O//aqiP/2pYH/9aB5//Wbcv/0lmz/9JJm//SPYv/0kWT/+LeZ//3x
6//+/v3//v7+//7+/v/Z2dn/IB8f/xMLB/+yZEL/54JW//CHWf95RC3/AAAA/wAAAL4AAAB/AAAAQQAA
ABgAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAGAAAAP96RS3/84la//CHWf/nglb/sWRB/xEK
Bv8gICD/29vb//7+/f/+/v7//v7+//7+/f/99PD/+9fH//m+o//3q4j/9p53//Wbcv/2oXv/+LGR//rN
uP/98ev//v79//7+/f/9/f3//v7+/9ra2v8gIB//EgoG/7JlQv/nglb/8IdZ//OJWv95RC3/AAAA/wAA
AL4AAAB/AAAAQQAAABgAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAGAAAAP96RS3/84la//OJ
Wv/wh1n/6INW/7FkQf8SCgb/Hh4e/9vb2//+/v7//v79//39/f/+/v3//v79//7+/f/9/f3//v79//39
/f/+/v7//v7+//7+/v/+/v3//f39//7+/f/9/f3/2tra/x0dHf8TCgf/smVC/+iCVv/wh1n/84la//OJ
Wv95RC3/AAAA/wAAAL0AAAB/AAAAQQAAABgAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAGAAA
AP96RS3/84la//OJWv/ziVr/8IdZ/+eCVv+wY0H/EgoG/yAgIP/a2tr//v7+//39/f/+/v3//v7+//7+
/f/+/v7//v7+//7+/f/+/v7//v7+//7+/v/+/v3//f39//7+/v/Z2dn/Hx8f/xMKB/+yZEL/54JW//CH
Wf/ziVr/84la//OJWv95RC3/AAAA/wAAALkAAAB9AAAAQAAAABgAAAAGAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAFAAAAFgAAAP96RS3/84la//OJWv/ziVr/84la//CHWf/nglb/sWRB/xEJBv8gICD/29vb//7+
/f/+/v3//v7+//7+/f/+/v3//v7+//39/f/+/v3//v79//7+/v/+/v7//f39/9ra2v8gHx//EQoG/7Jl
Qv/nglb/8IdZ//OJWv/ziVr/84la//OJWv95RC3/AAAA/wAAAKwAAABzAAAAOwAAABYAAAAFAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAEAAAAEgAAAP96RS3/84la//OJWv/ziVr/84la//OJWv/wh1n/6INW/7Fk
Qf8SCgb/Hh4e/9vb2//+/v3//v79//7+/f/+/v3//v79//39/f/+/v7//v79//7+/v/+/v3/2trZ/x0d
Hf8TCwf/smVC/+iCVv/wh1n/84la//OJWv/ziVr/84la//OJWv95RC3/AAAA/wAAAI0AAABfAAAAMQAA
ABIAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAADAAAAP89Ihb/ekUt/3pFLf96RS3/ekUt/3pF
Lf95RC3/d0Ms/3JAKv9EJhn/AAAA/yAgIP/a2tr//v7+//39/f/9/f3//v79//39/f/+/v3//v7+//7+
/v/Z2dn/Hx8f/wAAAP9FJxn/ckAq/3dDLP95RC3/eUQt/3lELf95RC3/eUQt/3lELf88Ihb/AAAA/wAA
AF8AAABAAAAAIQAAAAwAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABgAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8gICD/29vb//39/f/9/f3//v7+//39
/f/9/f3//v7+/9ra2v8fHx//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAADEAAAAhAAAAEQAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA
AAYAAAAMAAAAEgAAABYAAAAXAAAAGAAAABgAAAAYAAAAGAAAABgAAAAbAAAAIwAAAFUAAADsHh4e/tvb
2//+/v7//v7+//7+/v/+/v7/2tra/h0dHf8AAADrAAAAVAAAACMAAAAbAAAAGAAAABgAAAAYAAAAGAAA
ABgAAAAYAAAAGAAAABgAAAAXAAAAFgAAABIAAAAMAAAABgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAEAAAADAAAABAAAAAUAAAAFAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAACQAA
ABIAAABJAAAA6yAgIP7a2tr//v7+//39/f/Z2dn/Hx8f/gAAAOoAAABIAAAAEgAAAAkAAAAGAAAABgAA
AAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAFAAAABQAAAAQAAAADAAAAAQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAQAAAAQAAAANAAAARQAAAO0gICD+29vb/tra2v4fHx/+AAAA7AAAAEQAAAANAAAABAAA
AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAADAAAAEIAAADqHh4e/h0dHf4AAADpAAAAQQAA
AAwAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAkAAAA9AAAA6QAA
AOgAAAA7AAAACQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAIAAAAFAAAANAAAADMAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD//wAO/AAAAAAH
AA74AAAAAAMADvAAAAAAAQAO8AAAAAABAA7wAAAAAAEADvAAAAAAAQAO8AAAAAABAA7wAAAAAAEADvAA
AAAAAQAO8AAAAAABAA7wAAAAAAEADvAAAAAAAQAO4AAAAAABAA7AAAAAAAEADoAAAAAAAQAOAAAAAAAA
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
/f/9/f3//f39//39/f/9/f3//f39//7+/f/9/f3//f39//r6+v9lZWX/AgEB/y4aEP9kOCX/mVY4/8Vv
Sf+nXj7/AAAA/wAAALgAAABsAAAAKgAAAAoAAAABAAAAAAAAAAAAAAAAAAAABAAAABoAAAD/kFE1/5hW
OP9jNyT/LRkQ/wIBAf9oaGj/+/v7//7+/v/+/v3//fr4//TOwP/pn4T/335a/9hrRP/VZ0H/13NS/96S
ef/txbj//Pn3//7+/f/9/f3/+/v7/2VlZf8CAQH/LRkQ/2M3JP+YVjj/kFE1/wAAAP8AAAC5AAAAbAAA
ACoAAAAKAAAAAQAAAAAAAAAAAAAAAQAAAAkAAAAnAAAA/209KP9jOCT/LRkQ/wIBAf9oaGj/+/v7//7+
/f/+/v7/+NXG/+qKY//idUn/33BF/9xsQv/ZaD//1mQ8/9JfOP/PWzX/zFcx/9BpSf/tx7v//v79//7+
/v/7+/v/ZWVl/wIBAP8tGRD/Yzgk/209KP8AAAD/AAAAvQAAAG4AAAAqAAAACgAAAAEAAAAAAAAAAQAA
AAUAAAAXAAAAQgAAAP9FJxn/LRkQ/wIBAf9nZ2f//Pz8//7+/v/9/Pz/97uh/+yCVP/pfVD/5XpN/+J1
Sv/gcUf/3W1E/9lpQP/VZDz/0l85/89bNf/MVzH/yVMv/+Cdif/9/Pz//v7+//v7+/9lZWX/AgEB/y0Z
EP9FJxn/AAAA/wAAAMQAAAB2AAAALgAAAAoAAAABAAAAAAAAAAUAAAATAAAAMwAAAGwAAAD/HBAK/wIB
Af9oaGj/+/v7//7+/f/+/v3/+b6k//KKW//vhlj/7INW/+l/U//me0//43dM/+BySP/dbkX/2WlA/9Zl
PP/TYDn/z1s1/8xXMf/JUy7/4J2J//7+/f/+/v3/+/v6/2ZmZf8CAQH/HBAK/wAAAP8AAADRAAAAhwAA
ADkAAAAOAAAAAQAAAAUAAAATAAAAMAAAAGEAAACeAAAA/wAAAP9nZ2f/+/v7//7+/f/+/v3/+9rK//OM
Xv/zjF7/8oxe//CJXP/thVj/6YBV/+d8Uf/keE3/4HNJ/91uRf/aaUH/1mU9/9NgOf/PWzb/zFcx/8lU
L//tx7v//v79//39/f/7+/v/ZWVl/wAAAP8AAAD/AAAA4AAAAKEAAABSAAAAHAAAAAUAAAASAAAAMAAA
AGAAAACZAAAA0gAAAP9oaGj/+/v7//39/f/9/f3//fv5//Wcc//zjmD/9I9h//SPY//zj2L/8Itf/+2H
W//qglf/531S/+R4Tv/gc0r/3W9F/9pqQf/WZT3/02A5/89bNv/MVzH/0GlJ//z59//9/f3//v79//v7
+/9lZWX/AAAA/wAAAPAAAADCAAAAeQAAADgAAAATAAAAKgAAAFoAAACVAAAAzwAAAPxoaGj/+/v7//7+
/v/+/v7//v79//vYyP/0j2H/9JFk//SSZv/0k2f/9JNo//OSZv/wjWL/7Yhd/+qDWP/nflP/43hO/+Bz
Sv/dbkX/2mpB/9ZlPf/TYDn/z1s1/8xXMf/txbj//f39//7+/v/+/v3/+/v6/2VlZf8AAAD+AAAA4QAA
AKUAAABgAAAAKgAAAEIAAACBAAAAxwAAAPxnZ2f/+/v7//7+/v/+/v7//v7+//7+/v/4tpj/9JJl//SV
av/0l23/9Jhu//WYbv/0l23/85Rq//CPZf/til//6oRZ/+d+VP/jeU7/4HNK/91vRf/aaUH/1mU9/9Jf
Of/PWzX/35J5//7+/f/+/v7//v7+//7+/v/7+/v/ZWVl/wAAAP0AAADOAAAAhQAAAEIAAABIAAAAoAAA
APpoaGj/+/v7//7+/v/+/v3//v7+//7+/v/+/v7/9qJ8//SWbP/1m3L/9Z11//Wed//1nnf/9Z11//Wb
cv/0l27/8ZFn/+6LYP/qhFr/535U/+N5T//gc0r/3W5F/9ppQf/WZDz/0l84/9dzUv/9/f3//v7+//7+
/v/+/v7//f39//v7+/9lZWX/AAAA+wAAAKMAAABIAAAAYQAAAPRnZ2f/+/v7//7+/v/9/f3//f39//39
/f/+/v3//f39//Wacv/1nHT/9aJ8//algP/2poL/9qaC//akf//1oXv/9Z12//SZb//xkmj/7Ytg/+mE
Wf/nflP/43hO/+BzSf/dbkX/2WlA/9VkPP/VZ0H//f39//7+/f/9/f3//f39//39/f/9/f3/+vr6/2Vl
Zf8AAAD0AAAAYQAAAEwAAADxaGho/vv7+//+/v7//v7+//7+/f/+/v7//v7+//7+/f/2n3j/9qN9//ar
iP/3r4//97GR//exkf/3roz/9qmG//akf//1n3f/9Jlw//GRZ//til//6oNY/+d9Uv/keE3/4XJJ/91t
RP/ZaD//2GtE//39/f/+/v3//v79//7+/v/9/f3//v7+//v7+/9nZ2f+AAAA8AAAAEsAAAAKAAAATgAA
APFpaWn++/v7//39/f/9/f3//v7+//7+/f/9/f3/962M//aqh//3tJb/+Lqf//i9ov/4vKH/97ib//ey
k//2q4n/9qR+//Wddf/0l23/8I9k/+2IXf/qglf/53xR/+N3TP/fcUf/3GxC/99+Wv/9/f3//v79//7+
/f/+/v3//f39//v7+/9oaGj+AAAA8gAAAFIAAAALAAAAAgAAAAoAAABOAAAA8WhoaP78/Pz//f39//7+
/v/+/v3//v79//nErP/3sJD/+L6j//nGr//5ybT/+ciy//jDq//4u6D/97KT//aphv/1oXv/9Zpx//OU
af/wjWH/7Ydb/+qAVf/ne0//4nVK/99wRf/pn4T//f39//7+/f/+/v3//v7+//v7+/9nZ2f/AAAA9QAA
AGcAAAATAAAAAwAAAAAAAAACAAAACgAAAFAAAADxaWlp//v7+//+/v3//v7+//7+/f/84tb/97WX//nF
rv/60L7/+tXE//rTwf/5zbj/+MOr//i4nP/3ro3/9qR///WddP/0l2z/85Jm//CLX//thVj/6n9T/+Z6
Tv/idEj/9M/A//39/f/+/v7//v79//v7+/9oaGj/AAAA+QAAAJMAAAAyAAAADAAAAAEAAAAAAAAAAAAA
AAIAAAAOAAAAWwAAAP9paWn//Pz8//7+/f/+/v3//fv6//nBp//5x7H/+tbF//vczv/72sz/+tPB//nI
sv/5vaL/97GR//amgv/2nnf/9Zhu//STaP/zj2P/8Ilc/+yDVv/pflH/6Ypj//36+P/9/f3//v79//v7
+/9oaGj/AAAA/wAAAMkAAABxAAAAKwAAAAoAAAABAAAAAAAAAAAAAAAAAAAABQAAAB8AAAD/AQAA/2ho
aP/7+/v//v79//7+/v/86N//+cSt//rTwv/73M7/+9zO//rVxP/5yrT/+L2j//exkf/2p4P/9Z53//WY
bv/0k2f/9JBj//KNXv/vh1n/7IJU//jVx//+/v3//v79//v7+/9nZ2f/AQEA/wAAAP8AAAC6AAAAbQAA
ACoAAAAKAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAXAAAA/3E/Kf8MBwT/aWlp//v7+//+/v7//v7+//vc
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
AEsAAAAKAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAACAAAACQAAAEgAAADwAAAA7wAAAEYAAAAJAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAEAAAAFAAAAPwAAAD0AAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/gAAAA//AA7wAAAAA/8ADvAAAAAB/wAO4AAAAAH/
AA7gAAAAAP8ADuAAAAAA/wAO4AAAAAD/AA7gAAAAAP8ADuAAAAAA/wAO4AAAAAD/AA7gAAAAAP8ADsAA
AAAA/wAOgAAAAAD/AA6AAAAAAP8ADgAAAAAA/wAOAAAAAAD/AA4AAAAAAP8ADgAAAAAA/wAOAAAAAAD/
AA4AAAAAAP8ADgAAAAAA/wAOAAAAAAD/AA4AAAAAAP8ADoAAAAAA/wAOwAAAAAD/AA7gAAAAAP8ADuAA
AAAA/wAO4AAAAAD/AA7gAAAAAP8ADuAAAAAA/wAO4AAAAAD/AA7gAAAAAP8ADuAAAAAA/wAO4AAAAAH/
AA7gAAAAAf8ADvAAAAAB/wAO+AAAAAf/AA7//gB///8ADv//AP///wAO//+B////AA4oAAAAIAAAAEAA
AAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAA
AAEAAAABAAAAAQAAAAIAAAAHAAAAGwAAAEgAAACIAAAAxQAAAMUAAACHAAAARwAAABsAAAAHAAAAAgAA
AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABgAA
AA0AAAARAAAAEwAAABMAAAATAAAAGAAAACoAAABUAAAAkQAAANINDQ39DAwM/QAAANIAAACQAAAAUwAA
ACoAAAAYAAAAEwAAABMAAAATAAAAEwAAABMAAAARAAAADQAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAA
AAYAAAAZAAAANwAAAEoAAABQAAAAUAAAAFQAAABhAAAAfwAAAKwAAADcDQ0N/cLCwv/BwcH/DAwM/QAA
ANwAAACsAAAAfwAAAGEAAABUAAAAUAAAAFAAAABQAAAAUAAAAEoAAAA3AAAAGQAAAAYAAAAAAAAAAAAA
AAAAAAABAAAADQAAADcAAAB4AAAAogAAAK4AAACwAAAAtgAAAMMAAADYAAAA7g0NDf7CwsL//f39//39
/f/BwcH/DAwM/gAAAO4AAADYAAAAwwAAALYAAACwAAAArwAAAK8AAACuAAAAogAAAHgAAAA3AAAADQAA
AAEAAAAAAAAAAAAAAAEAAAARAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8NDQ3/wsLC//39
/f/9/f3//f39//39/f/BwcH/DAwM/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAogAA
AEoAAAARAAAAAQAAAAAAAAAAAAAAAQAAABMAAAD/84la/+6GWP/be1H/r2NB/3A/Kf8tGRD/Dg4N/8PD
wv/+/v3//v79//7+/f/9/f3//v7+//7+/v/BwcH/Dg0N/y0ZEP9wPyn/sGNB/9t8Uf/uhlj/84la/wAA
AP8AAACuAAAAUAAAABMAAAABAAAAAAAAAAAAAAABAAAAEwAAAP/uhlj/23tR/7BjQf9wPyn/LRkQ/w4O
Df/Dw8P//v7+//7+/f/+/v3//v79//39/f/+/v7//v7+//39/f/BwcH/Dg0M/y0ZEP9xPyn/sGNB/9t8
Uf/uhlj/AAAA/wAAAK8AAABQAAAAEwAAAAEAAAAAAAAAAAAAAAEAAAATAAAA/9t8Uf+wY0H/cUAp/y0Z
EP8ODg3/w8PC//7+/f/9/f3//v79//7+/f/9/f3//f39//7+/f/+/v3//f39//39/f/BwcH/Dg0N/y0Z
EP9xQCr/sGNB/9t8Uf8AAAD/AAAArwAAAFAAAAATAAAAAQAAAAAAAAAAAAAAAgAAABgAAAD/r2NB/3A/
Kf8tGRD/Dg4N/8PDw//+/v7//v79//nm3v/trZT/4YNh/9lrRP/VZkD/13ZW/+GeiP/14Nn//v79//7+
/f/BwcH/Dg0N/y0ZEP9wPyn/sGNB/wAAAP8AAACwAAAAUAAAABMAAAABAAAAAAAAAAAAAAAHAAAAKgAA
AP9wPyn/LRkQ/w4ODf/Dw8P//v7+//36+P/ztZr/53tO/+J1Sf/ecEX/22tB/9ZlPf/SXzn/zlo0/8tW
Mf/fmYT//Pn3//7+/v/BwcH/Dg0M/y0ZEP9wPyn/AAAA/wAAALYAAABUAAAAEwAAAAEAAAAAAAAABQAA
ABsAAABUAAAA/y0ZEP8ODg3/w8PC//7+/v/9+vn/9qiG/+6FV//qgFP/53tQ/+N2S//fcUf/22tC/9dm
Pf/SYDn/zlo0/8pVL//Xf2T//Pn3//7+/f/BwcH/Dg0M/y0ZEP8AAAD/AAAAwwAAAGEAAAAYAAAAAgAA
AAUAAAAZAAAARwAAAJAAAAD/Dg4N/8PDw//+/v7//v79//i7oP/zjF3/8oxe/++IWv/rg1b/531S/+R3
Tf/fcUj/22xD/9dmPv/TYDn/zlo0/8pVMP/fmYT//v79//39/f/BwcH/Dg0N/wAAAP8AAADYAAAAfwAA
ACoAAAAGAAAAGAAAAEYAAACKAAAA0g0NDf/Dw8L//f39//39/f/86uL/9I5g//SPYv/0kGP/849j/++K
Xv/shVn/6H9U/+R4Tv/fckj/22xD/9dmPv/TYDn/z1s1/8tWMf/14Nn//f39//7+/f/BwcH/DAwM/wAA
AO4AAACsAAAAUwAAABkAAAA6AAAAgQAAAM4NDQ39w8PD//7+/v/+/v7//v7+//i+pP/0kWT/9JNo//SV
af/0lWr/85Nn/++NYv/shlv/6H9V/+N5Tv/fckj/22xD/9dmPv/TYDn/zlo0/+GeiP/+/v3//v7+//7+
/v/BwcH/DAwM/gAAANsAAACJAAAAOgAAAFAAAAC1DQ0N/cPDw//+/v7//v7+//7+/v/+/v7/9qR///SW
a//1mnH/9Ztz//Wbc//1mnH/9JZs//CPZf/sh13/54BV/+N5T//fckj/22xD/9dmPv/SXzj/13dW//7+
/f/+/v7//v7+//39/f/BwcH/DAwM/QAAALkAAABRAAAAcA0NDfrDw8P//v7+//39/f/+/v3//v79//39
/f/1mnH/9Z52//ajfv/2pYH/9qWA//aifP/1nnb/9Jhv//CQZv/rh13/539V/+N4Tv/fckj/22tC/9Zl
Pf/VZkD//f39//39/f/+/v3//f39//39/f/BwcH/DAwM+gAAAHAAAABVDQ0N9sPDw//+/v7//f39//7+
/v/+/v7//v79//agev/2p4P/96+P//eyk//3spL/962M//ang//2oHn/9Jlv//CPZP/rhlv/6H5U/+R3
Tf/gcUf/2mpB/9lsRf/+/v3//v79//7+/v/9/f3//f39/8PDw/8NDQ32AAAAVAAAAAgAAABWDQ0N9sPD
w//9/f3//v79//7+/f/+/v3/97KT//exkf/4vaL/+cGo//jAp//4up7/97GR//ang//1nnb/85Zs/++N
Yf/rhFn/531S/+N2S//eb0X/4YNh//7+/f/+/v3//v79//39/f/CwsL/DQ0N+AAAAF8AAAAJAAAAAQAA
AAgAAABXDQ0N98PDw//+/v3//v79//7+/f/6zrr/+Lqd//nKtP/60L7/+c67//nGr//4up7/962M//ai
fP/1mXD/85Jn/++KXv/rg1b/53xQ/+J1Sf/trZT//v79//7+/v/+/v3/wsLC/w0NDfsAAACFAAAAGgAA
AAIAAAAAAAAAAQAAAAkAAABgDQ0N/8TEw//+/v3//v79//3w6v/4vaP/+tG+//vazP/72cr/+s+7//nB
p//3spL/9qWA//Wbc//0lWr/849j/++IW//rgVT/53tP//nm3v/9/f3//v7+/8PDwv8NDQ3/AAAAxAAA
AFUAAAATAAAAAQAAAAAAAAAAAAAAAgAAABoAAAD/FREQ/8TEw//+/v7//v7+//vZyf/5zbn/+9rM//vb
zP/60L7/+cKp//ezk//2pYH/9Ztz//SVaf/0kGP/8oxe/+6FV//ztZr//v7+//7+/f/Dw8P/FREQ/wAA
AP8AAACxAAAAUQAAABMAAAABAAAAAAAAAAAAAAABAAAAEwAAAP+hWjv/FREQ/8TEw//+/v3//vz7//rT
wf/5zbn/+tG+//nKtP/4vaL/96+P//ajfv/1mnH/9JNo//SPYf/zjF3/9qmG//36+f/+/v7/w8PC/xUR
EP+iWzz/AAAA/wAAAK8AAABQAAAAEwAAAAEAAAAAAAAAAAAAAAEAAAATAAAA/+yFWP+hWzv/FREQ/8TE
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
rEGAAKxBgACsQYAArEHAAaxB/D+sQQ==
</value>
</data>
</root>
\ No newline at end of file
......@@ -51,35 +51,12 @@
this.btnSw12Run = new System.Windows.Forms.Button();
this.btnInTopCylinderUp = new System.Windows.Forms.Button();
this.btnDriveMotor_Run = new System.Windows.Forms.Button();
this.groupBox6 = new System.Windows.Forms.GroupBox();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.label12 = new System.Windows.Forms.Label();
this.txtAIResult4 = new System.Windows.Forms.TextBox();
this.txtAI4 = new System.Windows.Forms.TextBox();
this.label11 = new System.Windows.Forms.Label();
this.txtSize = new System.Windows.Forms.TextBox();
this.label10 = new System.Windows.Forms.Label();
this.txtHeight = new System.Windows.Forms.TextBox();
this.label9 = new System.Windows.Forms.Label();
this.label8 = new System.Windows.Forms.Label();
this.txtAIResult3 = new System.Windows.Forms.TextBox();
this.txtAIResult2 = new System.Windows.Forms.TextBox();
this.txtAIResult1 = new System.Windows.Forms.TextBox();
this.txtAI3 = new System.Windows.Forms.TextBox();
this.label7 = new System.Windows.Forms.Label();
this.txtAI2 = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
this.txtAI1 = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.panel1 = new System.Windows.Forms.Panel();
this.groupBox1.SuspendLayout();
this.groupBox4.SuspendLayout();
this.groupBox3.SuspendLayout();
this.groupBox2.SuspendLayout();
this.groupBox5.SuspendLayout();
this.groupBox6.SuspendLayout();
this.panel1.SuspendLayout();
this.SuspendLayout();
//
......@@ -103,7 +80,7 @@
this.groupBox1.Controls.Add(this.cmbWriteIO);
this.groupBox1.Controls.Add(this.txtSlaveId);
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(709, 203);
this.groupBox1.Location = new System.Drawing.Point(521, 5);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(343, 190);
this.groupBox1.TabIndex = 105;
......@@ -268,9 +245,9 @@
this.groupBox4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)));
this.groupBox4.Controls.Add(this.tableLayoutPanel2);
this.groupBox4.Location = new System.Drawing.Point(467, 5);
this.groupBox4.Location = new System.Drawing.Point(262, 5);
this.groupBox4.Name = "groupBox4";
this.groupBox4.Size = new System.Drawing.Size(237, 690);
this.groupBox4.Size = new System.Drawing.Size(240, 690);
this.groupBox4.TabIndex = 104;
this.groupBox4.TabStop = false;
this.groupBox4.Text = "DO列表";
......@@ -287,7 +264,7 @@
this.tableLayoutPanel2.RowCount = 2;
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 17F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 17F));
this.tableLayoutPanel2.Size = new System.Drawing.Size(226, 670);
this.tableLayoutPanel2.Size = new System.Drawing.Size(229, 670);
this.tableLayoutPanel2.TabIndex = 103;
//
// groupBox3
......@@ -297,7 +274,7 @@
this.groupBox3.Controls.Add(this.tableLayoutPanel1);
this.groupBox3.Location = new System.Drawing.Point(6, 5);
this.groupBox3.Name = "groupBox3";
this.groupBox3.Size = new System.Drawing.Size(225, 690);
this.groupBox3.Size = new System.Drawing.Size(240, 690);
this.groupBox3.TabIndex = 103;
this.groupBox3.TabStop = false;
this.groupBox3.Text = "DI列表";
......@@ -314,7 +291,7 @@
this.tableLayoutPanel1.RowCount = 2;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 17F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 17F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(214, 670);
this.tableLayoutPanel1.Size = new System.Drawing.Size(229, 670);
this.tableLayoutPanel1.TabIndex = 102;
//
// groupBox2
......@@ -322,12 +299,13 @@
this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)));
this.groupBox2.Controls.Add(this.tableLayoutPanel3);
this.groupBox2.Location = new System.Drawing.Point(234, 5);
this.groupBox2.Location = new System.Drawing.Point(234, 97);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(230, 690);
this.groupBox2.Size = new System.Drawing.Size(230, 598);
this.groupBox2.TabIndex = 245;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "DI列表";
this.groupBox2.Visible = false;
//
// tableLayoutPanel3
//
......@@ -341,7 +319,7 @@
this.tableLayoutPanel3.RowCount = 2;
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 17F));
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 17F));
this.tableLayoutPanel3.Size = new System.Drawing.Size(219, 670);
this.tableLayoutPanel3.Size = new System.Drawing.Size(219, 578);
this.tableLayoutPanel3.TabIndex = 102;
//
// groupBox5
......@@ -358,9 +336,9 @@
this.groupBox5.Controls.Add(this.btnSw12Run);
this.groupBox5.Controls.Add(this.btnInTopCylinderUp);
this.groupBox5.Controls.Add(this.btnDriveMotor_Run);
this.groupBox5.Location = new System.Drawing.Point(709, 399);
this.groupBox5.Location = new System.Drawing.Point(521, 201);
this.groupBox5.Name = "groupBox5";
this.groupBox5.Size = new System.Drawing.Size(343, 296);
this.groupBox5.Size = new System.Drawing.Size(343, 292);
this.groupBox5.TabIndex = 246;
this.groupBox5.TabStop = false;
this.groupBox5.Text = "IO操作测试";
......@@ -510,285 +488,12 @@
this.btnDriveMotor_Run.UseVisualStyleBackColor = false;
this.btnDriveMotor_Run.Click += new System.EventHandler(this.btnDriveMotor_Run_Click);
//
// groupBox6
//
this.groupBox6.Controls.Add(this.label2);
this.groupBox6.Controls.Add(this.label3);
this.groupBox6.Controls.Add(this.label6);
this.groupBox6.Controls.Add(this.label12);
this.groupBox6.Controls.Add(this.txtAIResult4);
this.groupBox6.Controls.Add(this.txtAI4);
this.groupBox6.Controls.Add(this.label11);
this.groupBox6.Controls.Add(this.txtSize);
this.groupBox6.Controls.Add(this.label10);
this.groupBox6.Controls.Add(this.txtHeight);
this.groupBox6.Controls.Add(this.label9);
this.groupBox6.Controls.Add(this.label8);
this.groupBox6.Controls.Add(this.txtAIResult3);
this.groupBox6.Controls.Add(this.txtAIResult2);
this.groupBox6.Controls.Add(this.txtAIResult1);
this.groupBox6.Controls.Add(this.txtAI3);
this.groupBox6.Controls.Add(this.label7);
this.groupBox6.Controls.Add(this.txtAI2);
this.groupBox6.Controls.Add(this.label4);
this.groupBox6.Controls.Add(this.txtAI1);
this.groupBox6.Controls.Add(this.label1);
this.groupBox6.Location = new System.Drawing.Point(709, 8);
this.groupBox6.Name = "groupBox6";
this.groupBox6.Size = new System.Drawing.Size(343, 189);
this.groupBox6.TabIndex = 247;
this.groupBox6.TabStop = false;
this.groupBox6.Text = "高度传感器";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label2.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label2.Location = new System.Drawing.Point(251, 115);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(30, 17);
this.label2.TabIndex = 263;
this.label2.Text = "mm";
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label3.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label3.Location = new System.Drawing.Point(251, 85);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(30, 17);
this.label3.TabIndex = 262;
this.label3.Text = "mm";
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// label6
//
this.label6.AutoSize = true;
this.label6.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label6.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label6.Location = new System.Drawing.Point(251, 56);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(30, 17);
this.label6.TabIndex = 261;
this.label6.Text = "mm";
this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// label12
//
this.label12.AutoSize = true;
this.label12.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label12.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label12.Location = new System.Drawing.Point(251, 27);
this.label12.Name = "label12";
this.label12.Size = new System.Drawing.Size(30, 17);
this.label12.TabIndex = 260;
this.label12.Text = "mm";
this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// txtAIResult4
//
this.txtAIResult4.Enabled = false;
this.txtAIResult4.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtAIResult4.Location = new System.Drawing.Point(166, 112);
this.txtAIResult4.MaxLength = 10;
this.txtAIResult4.Name = "txtAIResult4";
this.txtAIResult4.Size = new System.Drawing.Size(80, 23);
this.txtAIResult4.TabIndex = 259;
this.txtAIResult4.Text = "0";
//
// txtAI4
//
this.txtAI4.Enabled = false;
this.txtAI4.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtAI4.Location = new System.Drawing.Point(44, 112);
this.txtAI4.MaxLength = 10;
this.txtAI4.Name = "txtAI4";
this.txtAI4.Size = new System.Drawing.Size(90, 23);
this.txtAI4.TabIndex = 258;
this.txtAI4.Text = "0";
//
// label11
//
this.label11.AutoSize = true;
this.label11.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label11.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label11.Location = new System.Drawing.Point(14, 115);
this.label11.Name = "label11";
this.label11.Size = new System.Drawing.Size(27, 17);
this.label11.TabIndex = 257;
this.label11.Text = "4:";
this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// txtSize
//
this.txtSize.Enabled = false;
this.txtSize.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtSize.Location = new System.Drawing.Point(241, 151);
this.txtSize.MaxLength = 10;
this.txtSize.Name = "txtSize";
this.txtSize.Size = new System.Drawing.Size(38, 23);
this.txtSize.TabIndex = 256;
this.txtSize.Text = "0";
//
// label10
//
this.label10.AutoSize = true;
this.label10.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label10.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label10.Location = new System.Drawing.Point(158, 154);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(76, 17);
this.label10.TabIndex = 255;
this.label10.Text = "料盘尺寸/寸:";
this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// txtHeight
//
this.txtHeight.Enabled = false;
this.txtHeight.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtHeight.Location = new System.Drawing.Point(110, 151);
this.txtHeight.MaxLength = 10;
this.txtHeight.Name = "txtHeight";
this.txtHeight.Size = new System.Drawing.Size(40, 23);
this.txtHeight.TabIndex = 254;
this.txtHeight.Text = "0";
//
// label9
//
this.label9.AutoSize = true;
this.label9.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label9.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label9.Location = new System.Drawing.Point(19, 154);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(86, 17);
this.label9.TabIndex = 253;
this.label9.Text = "料盘高度/mm:";
this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// label8
//
this.label8.AutoSize = true;
this.label8.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label8.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label8.Location = new System.Drawing.Point(139, 56);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(22, 17);
this.label8.TabIndex = 252;
this.label8.Text = "->";
this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// txtAIResult3
//
this.txtAIResult3.Enabled = false;
this.txtAIResult3.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtAIResult3.Location = new System.Drawing.Point(166, 82);
this.txtAIResult3.MaxLength = 10;
this.txtAIResult3.Name = "txtAIResult3";
this.txtAIResult3.Size = new System.Drawing.Size(80, 23);
this.txtAIResult3.TabIndex = 251;
this.txtAIResult3.Text = "0";
//
// txtAIResult2
//
this.txtAIResult2.Enabled = false;
this.txtAIResult2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtAIResult2.Location = new System.Drawing.Point(166, 53);
this.txtAIResult2.MaxLength = 10;
this.txtAIResult2.Name = "txtAIResult2";
this.txtAIResult2.Size = new System.Drawing.Size(80, 23);
this.txtAIResult2.TabIndex = 250;
this.txtAIResult2.Text = "0";
//
// txtAIResult1
//
this.txtAIResult1.Enabled = false;
this.txtAIResult1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtAIResult1.Location = new System.Drawing.Point(166, 24);
this.txtAIResult1.MaxLength = 10;
this.txtAIResult1.Name = "txtAIResult1";
this.txtAIResult1.Size = new System.Drawing.Size(80, 23);
this.txtAIResult1.TabIndex = 249;
this.txtAIResult1.Text = "0";
//
// txtAI3
//
this.txtAI3.Enabled = false;
this.txtAI3.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtAI3.Location = new System.Drawing.Point(44, 82);
this.txtAI3.MaxLength = 10;
this.txtAI3.Name = "txtAI3";
this.txtAI3.Size = new System.Drawing.Size(90, 23);
this.txtAI3.TabIndex = 248;
this.txtAI3.Text = "0";
//
// label7
//
this.label7.AutoSize = true;
this.label7.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label7.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label7.Location = new System.Drawing.Point(14, 85);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(27, 17);
this.label7.TabIndex = 247;
this.label7.Text = "3:";
this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// txtAI2
//
this.txtAI2.Enabled = false;
this.txtAI2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtAI2.Location = new System.Drawing.Point(44, 53);
this.txtAI2.MaxLength = 10;
this.txtAI2.Name = "txtAI2";
this.txtAI2.Size = new System.Drawing.Size(90, 23);
this.txtAI2.TabIndex = 246;
this.txtAI2.Text = "0";
//
// label4
//
this.label4.AutoSize = true;
this.label4.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label4.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label4.Location = new System.Drawing.Point(14, 56);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(27, 17);
this.label4.TabIndex = 245;
this.label4.Text = "2:";
this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// txtAI1
//
this.txtAI1.Enabled = false;
this.txtAI1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtAI1.Location = new System.Drawing.Point(44, 24);
this.txtAI1.MaxLength = 10;
this.txtAI1.Name = "txtAI1";
this.txtAI1.Size = new System.Drawing.Size(90, 23);
this.txtAI1.TabIndex = 244;
this.txtAI1.Text = "0";
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label1.Location = new System.Drawing.Point(14, 27);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(27, 17);
this.label1.TabIndex = 243;
this.label1.Text = "1:";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// panel1
//
this.panel1.AutoScroll = true;
this.panel1.Controls.Add(this.groupBox6);
this.panel1.Controls.Add(this.groupBox4);
this.panel1.Controls.Add(this.groupBox3);
this.panel1.Controls.Add(this.groupBox5);
this.panel1.Controls.Add(this.groupBox4);
this.panel1.Controls.Add(this.groupBox2);
this.panel1.Controls.Add(this.groupBox1);
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
......@@ -819,8 +524,6 @@
this.groupBox2.ResumeLayout(false);
this.groupBox5.ResumeLayout(false);
this.groupBox5.PerformLayout();
this.groupBox6.ResumeLayout(false);
this.groupBox6.PerformLayout();
this.panel1.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
......@@ -852,24 +555,6 @@
private System.Windows.Forms.GroupBox groupBox5;
private System.Windows.Forms.Button btnInTopCylinderUp;
private System.Windows.Forms.Button btnDriveMotor_Run;
private System.Windows.Forms.GroupBox groupBox6;
private System.Windows.Forms.TextBox txtAIResult4;
private System.Windows.Forms.TextBox txtAI4;
private System.Windows.Forms.Label label11;
private System.Windows.Forms.TextBox txtSize;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.TextBox txtHeight;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.TextBox txtAIResult3;
private System.Windows.Forms.TextBox txtAIResult2;
private System.Windows.Forms.TextBox txtAIResult1;
private System.Windows.Forms.TextBox txtAI3;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.TextBox txtAI2;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.TextBox txtAI1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button btn34Top;
private System.Windows.Forms.Button btn12Top;
private System.Windows.Forms.Button btnSw34Run;
......@@ -878,10 +563,6 @@
private System.Windows.Forms.Button btnStop02;
private System.Windows.Forms.Button btnSwStop3;
private System.Windows.Forms.Button btnSwStop1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label label12;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.CheckBox checkBox1;
private System.Windows.Forms.Button btnCloseAll;
......
......@@ -38,7 +38,14 @@ namespace OnlineStore.AssemblyLine
this.tableLayoutPanel1.RowStyles.Clear();
this.tableLayoutPanel1.RowCount = count;
this.tableLayoutPanel3.RowStyles.Clear();
this.tableLayoutPanel3.RowCount = LineManager.Config.DIList.Count-count;
if (LineManager.Config.DIList.Count > count)
{
this.tableLayoutPanel3.RowCount = LineManager.Config.DIList.Count - count;
}
else
{
this.tableLayoutPanel3.RowCount =0 ;
}
foreach (ConfigIO ioValue in LineManager.Config.DIList.Values)
{
IOTextControl control = new IOTextControl(ioValue.ElectricalDefinition + "_" + ioValue.Explain, ioValue.ProName);
......@@ -197,27 +204,7 @@ namespace OnlineStore.AssemblyLine
control.IOValue = iov;
control.ShowData();
}
}
double ai1Value = AIManager.GetAIValue(LineManager.Config.AIDI1_Addr);
double ai2Value = AIManager.GetAIValue(LineManager.Config.AIDI2_Addr);
double ai3Value = AIManager.GetAIValue(LineManager.Config.AIDI3_Addr);
double ai4Value = AIManager.GetAIValue(LineManager.Config.AIDI4_Addr);
txtAI1.Text = ai1Value.ToString();
txtAI2.Text = ai2Value.ToString();
txtAI3.Text = ai3Value.ToString();
txtAI4.Text = ai4Value.ToString();
//txtAI3.Text = ai3Value.ToString();
txtAIResult1.Text = AIManager.ConvertAI(ai1Value, LineManager.Config.AIDI1_DefaultPosition).ToString();
txtAIResult2.Text = AIManager.ConvertAI(ai2Value, LineManager.Config.AIDI2_DefaultPosition).ToString();
txtAIResult3.Text = AIManager.ConvertAI(ai3Value, LineManager.Config.AIDI3_DefaultPosition).ToString();
txtAIResult4.Text = AIManager.ConvertAI(ai4Value, LineManager.Config.AIDI4_DefaultPosition).ToString();
//txtAIResult3.Text = KNDAIManager.ConvertAI(ai3Value, boxBean.Config.AIDI3_DefaultPosition).ToString();
txtHeight.Text = LineManager.Line.GetHeight().ToString();
txtSize.Text = LineManager.Line.GetWidth().ToString();
}
}
private void btnReadAllDi_Click(object sender, EventArgs e)
......
......@@ -121,7 +121,7 @@
<value>17, 11</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>25</value>
<value>75</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
......
......@@ -43,7 +43,7 @@ namespace OnlineStore.AssemblyLine
}
FrmIOStatus ioStatus = new FrmIOStatus();
AddForm(" 流水线IO状态 ", ioStatus);
AddForm("流水线IO ", ioStatus);
List<MoveEquip> moveEquipList = new List<MoveEquip>(lineBean.MoveEquipMap.Values);
for (int i = 0; i < moveEquipList.Count; i++)
......@@ -57,20 +57,30 @@ namespace OnlineStore.AssemblyLine
{
FeedingEquip feed = feeds[i];
FrmFeedingEquip test = new FrmFeedingEquip(feed);
AddForm(" " + feed.Name+" ", test);
AddForm(" " + feed.Name+ " ", test);
}
List<ProvidingEquip> provids = new List<ProvidingEquip>(lineBean.ProvidingEquipMap.Values);
for (int i = 0; i < provids.Count; i++)
{
ProvidingEquip provid = provids[i];
FrmProvidingEquip test = new FrmProvidingEquip(provid);
AddForm(" " + provid.Name + " ", test);
AddForm(" " + provid.Name + " ", test);
}
List<DischargeLine> diss = new List<DischargeLine>(lineBean.DisLineMap.Values);
for(int i = 0; i < diss.Count; i++)
{
DischargeLine line = diss[i];
FrmDischargeLine frm = new FrmDischargeLine(line);
AddForm(" " + line.Name + " ", frm);
}
lblCID.Text = ConfigAppSettings.GetValue(Setting_Init.Line_CID);
chbLineDebug.Checked = TrayManager.LineRunTest;
}
private void AddForm(string text, Form form)
{
text = text.PadLeft(10, ' ');
TabPage lineTabPage = new TabPage(text);
lineTabPage.AutoScroll = true;
lineTabPage.Tag = lineBean;
......@@ -161,6 +171,15 @@ namespace OnlineStore.AssemblyLine
lvi.SubItems.Add(KTK_Store.GetRunStr(equip.lineStatus, equip.runStatus));
this.listView1.Items.Add(lvi);
}
this.listView1.Items.Add((ListViewItem)emptyView.Clone());
foreach (DischargeLine equip in lineBean.DisLineMap.Values)
{
ListViewItem lvi = new ListViewItem();
lvi.Text = equip.Name;
lvi.SubItems.Add(equip.alarmType.ToString());
lvi.SubItems.Add(KTK_Store.GetRunStr(equip.lineStatus, equip.runStatus));
this.listView1.Items.Add(lvi);
}
cmbBoxIndex.Items.Clear();
foreach(int key in lineBean.MoveEquipMap.Keys)
{
......@@ -428,6 +447,14 @@ namespace OnlineStore.AssemblyLine
SetItemColor(i, equip.runStatus);
i++;
}
i++;
foreach (DischargeLine equip in lineBean.DisLineMap.Values)
{
SetItemText(i, 1, equip.alarmType.ToString());
SetItemText(i, 2, KTK_Store.GetRunStr(equip.lineStatus, equip.runStatus));
SetItemColor(i, equip.runStatus);
i++;
}
if (lineBean.runStatus > LineRunStatus.Wait)
{
if (启动AToolStripMenuItem.Enabled.Equals(true))
......
......@@ -56,60 +56,6 @@
this.groupBox6 = new System.Windows.Forms.GroupBox();
this.lblTrayNum = new System.Windows.Forms.Label();
this.lblInstoreList = new System.Windows.Forms.Label();
this.tabPage2 = new System.Windows.Forms.TabPage();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.btnBoxP = new System.Windows.Forms.Button();
this.txtBoxP = new System.Windows.Forms.TextBox();
this.btnSave = new System.Windows.Forms.Button();
this.txtP1 = new System.Windows.Forms.TextBox();
this.btnMoveToP1 = new System.Windows.Forms.Button();
this.cmbSizeList = new System.Windows.Forms.ComboBox();
this.label4 = new System.Windows.Forms.Label();
this.btnMoveto = new System.Windows.Forms.Button();
this.txtSizePosition = new System.Windows.Forms.TextBox();
this.groupAxis = new System.Windows.Forms.GroupBox();
this.btnAxisOff = new System.Windows.Forms.Button();
this.btnAxisOn = new System.Windows.Forms.Button();
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.label6 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.btnReadHomeSingle = new System.Windows.Forms.Button();
this.txtHomeSingle = new System.Windows.Forms.TextBox();
this.label16 = new System.Windows.Forms.Label();
this.label15 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label11 = new System.Windows.Forms.Label();
this.txtHomeStatus = new System.Windows.Forms.TextBox();
this.button2 = new System.Windows.Forms.Button();
this.label10 = new System.Windows.Forms.Label();
this.txtBusyStatus = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.label3 = new System.Windows.Forms.Label();
this.txtAlarmStatus = new System.Windows.Forms.TextBox();
this.btnGetAlarm = new System.Windows.Forms.Button();
this.btnReadPosition = new System.Windows.Forms.Button();
this.lblServerOn = new System.Windows.Forms.Label();
this.label7 = new System.Windows.Forms.Label();
this.label8 = new System.Windows.Forms.Label();
this.btnOpenAxis = new System.Windows.Forms.Button();
this.btnCloseAxis = new System.Windows.Forms.Button();
this.lblCountPulse = new System.Windows.Forms.TextBox();
this.txtASpeed = new System.Windows.Forms.TextBox();
this.lblOutPulse = new System.Windows.Forms.TextBox();
this.label47 = new System.Windows.Forms.Label();
this.btnAxisVMove = new System.Windows.Forms.Button();
this.btnAxisRMove = new System.Windows.Forms.Button();
this.btnAxisReturnHome = new System.Windows.Forms.Button();
this.btnAxisAMove = new System.Windows.Forms.Button();
this.btnComAlarmClear = new System.Windows.Forms.Button();
this.txtAPosition = new System.Windows.Forms.TextBox();
this.label48 = new System.Windows.Forms.Label();
this.btnAxisStop = new System.Windows.Forms.Button();
this.txtAxisValue = new System.Windows.Forms.TextBox();
this.txtAxisDeviceName = new System.Windows.Forms.TextBox();
this.label45 = new System.Windows.Forms.Label();
this.label46 = new System.Windows.Forms.Label();
this.label49 = new System.Windows.Forms.Label();
this.panel1 = new System.Windows.Forms.Panel();
this.groupBox1.SuspendLayout();
this.groupBox4.SuspendLayout();
......@@ -118,9 +64,6 @@
this.tabControl1.SuspendLayout();
this.tabPage1.SuspendLayout();
this.groupBox6.SuspendLayout();
this.tabPage2.SuspendLayout();
this.groupBox2.SuspendLayout();
this.groupAxis.SuspendLayout();
this.panel1.SuspendLayout();
this.SuspendLayout();
//
......@@ -566,7 +509,6 @@
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tabControl1.Controls.Add(this.tabPage1);
this.tabControl1.Controls.Add(this.tabPage2);
this.tabControl1.Location = new System.Drawing.Point(5, 69);
this.tabControl1.Name = "tabControl1";
this.tabControl1.SelectedIndex = 0;
......@@ -622,694 +564,6 @@
this.lblInstoreList.Size = new System.Drawing.Size(770, 184);
this.lblInstoreList.TabIndex = 277;
//
// tabPage2
//
this.tabPage2.Controls.Add(this.groupBox2);
this.tabPage2.Controls.Add(this.groupAxis);
this.tabPage2.Location = new System.Drawing.Point(4, 26);
this.tabPage2.Name = "tabPage2";
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
this.tabPage2.Size = new System.Drawing.Size(1288, 646);
this.tabPage2.TabIndex = 1;
this.tabPage2.Text = " 伺服信息 ";
this.tabPage2.UseVisualStyleBackColor = true;
//
// groupBox2
//
this.groupBox2.Controls.Add(this.btnBoxP);
this.groupBox2.Controls.Add(this.txtBoxP);
this.groupBox2.Controls.Add(this.btnSave);
this.groupBox2.Controls.Add(this.txtP1);
this.groupBox2.Controls.Add(this.btnMoveToP1);
this.groupBox2.Controls.Add(this.cmbSizeList);
this.groupBox2.Controls.Add(this.label4);
this.groupBox2.Controls.Add(this.btnMoveto);
this.groupBox2.Controls.Add(this.txtSizePosition);
this.groupBox2.Location = new System.Drawing.Point(10, 436);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(940, 204);
this.groupBox2.TabIndex = 218;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "位置配置";
//
// btnBoxP
//
this.btnBoxP.BackColor = System.Drawing.SystemColors.Control;
this.btnBoxP.Cursor = System.Windows.Forms.Cursors.Default;
this.btnBoxP.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnBoxP.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnBoxP.ForeColor = System.Drawing.SystemColors.ControlText;
this.btnBoxP.Location = new System.Drawing.Point(358, 76);
this.btnBoxP.Name = "btnBoxP";
this.btnBoxP.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.btnBoxP.Size = new System.Drawing.Size(163, 34);
this.btnBoxP.TabIndex = 312;
this.btnBoxP.Text = "料仓门口位置";
this.btnBoxP.UseVisualStyleBackColor = true;
this.btnBoxP.Click += new System.EventHandler(this.btnBoxP_Click);
//
// txtBoxP
//
this.txtBoxP.BackColor = System.Drawing.SystemColors.Window;
this.txtBoxP.Cursor = System.Windows.Forms.Cursors.IBeam;
this.txtBoxP.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtBoxP.ForeColor = System.Drawing.SystemColors.WindowText;
this.txtBoxP.Location = new System.Drawing.Point(536, 80);
this.txtBoxP.MaxLength = 12;
this.txtBoxP.Name = "txtBoxP";
this.txtBoxP.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.txtBoxP.Size = new System.Drawing.Size(111, 26);
this.txtBoxP.TabIndex = 311;
this.txtBoxP.Text = "-1";
//
// btnSave
//
this.btnSave.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnSave.Location = new System.Drawing.Point(214, 136);
this.btnSave.Name = "btnSave";
this.btnSave.Size = new System.Drawing.Size(110, 34);
this.btnSave.TabIndex = 310;
this.btnSave.Text = "保存位置";
this.btnSave.UseVisualStyleBackColor = true;
this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
//
// txtP1
//
this.txtP1.BackColor = System.Drawing.SystemColors.Window;
this.txtP1.Cursor = System.Windows.Forms.Cursors.IBeam;
this.txtP1.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtP1.ForeColor = System.Drawing.SystemColors.WindowText;
this.txtP1.Location = new System.Drawing.Point(536, 36);
this.txtP1.MaxLength = 12;
this.txtP1.Name = "txtP1";
this.txtP1.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.txtP1.Size = new System.Drawing.Size(111, 26);
this.txtP1.TabIndex = 309;
this.txtP1.Text = "-1";
//
// btnMoveToP1
//
this.btnMoveToP1.BackColor = System.Drawing.SystemColors.Control;
this.btnMoveToP1.Cursor = System.Windows.Forms.Cursors.Default;
this.btnMoveToP1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnMoveToP1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnMoveToP1.ForeColor = System.Drawing.SystemColors.ControlText;
this.btnMoveToP1.Location = new System.Drawing.Point(358, 32);
this.btnMoveToP1.Name = "btnMoveToP1";
this.btnMoveToP1.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.btnMoveToP1.Size = new System.Drawing.Size(163, 34);
this.btnMoveToP1.TabIndex = 307;
this.btnMoveToP1.Text = "移栽上下轴待机点:";
this.btnMoveToP1.UseVisualStyleBackColor = true;
this.btnMoveToP1.Click += new System.EventHandler(this.button3_Click);
//
// cmbSizeList
//
this.cmbSizeList.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbSizeList.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.cmbSizeList.FormattingEnabled = true;
this.cmbSizeList.Location = new System.Drawing.Point(213, 36);
this.cmbSizeList.Name = "cmbSizeList";
this.cmbSizeList.Size = new System.Drawing.Size(111, 28);
this.cmbSizeList.TabIndex = 303;
this.cmbSizeList.SelectedIndexChanged += new System.EventHandler(this.cmbSizeList_SelectedIndexChanged);
//
// label4
//
this.label4.AutoSize = true;
this.label4.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label4.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label4.Location = new System.Drawing.Point(130, 42);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(68, 17);
this.label4.TabIndex = 302;
this.label4.Text = "料盘尺寸:";
this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// btnMoveto
//
this.btnMoveto.BackColor = System.Drawing.SystemColors.Control;
this.btnMoveto.Cursor = System.Windows.Forms.Cursors.Default;
this.btnMoveto.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnMoveto.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnMoveto.ForeColor = System.Drawing.SystemColors.ControlText;
this.btnMoveto.Location = new System.Drawing.Point(35, 76);
this.btnMoveto.Name = "btnMoveto";
this.btnMoveto.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.btnMoveto.Size = new System.Drawing.Size(163, 34);
this.btnMoveto.TabIndex = 306;
this.btnMoveto.Text = "移栽位置";
this.btnMoveto.UseVisualStyleBackColor = true;
this.btnMoveto.Click += new System.EventHandler(this.btnMoveto_Click);
//
// txtSizePosition
//
this.txtSizePosition.BackColor = System.Drawing.SystemColors.Window;
this.txtSizePosition.Cursor = System.Windows.Forms.Cursors.IBeam;
this.txtSizePosition.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtSizePosition.ForeColor = System.Drawing.SystemColors.WindowText;
this.txtSizePosition.Location = new System.Drawing.Point(213, 80);
this.txtSizePosition.MaxLength = 12;
this.txtSizePosition.Name = "txtSizePosition";
this.txtSizePosition.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.txtSizePosition.Size = new System.Drawing.Size(111, 26);
this.txtSizePosition.TabIndex = 305;
this.txtSizePosition.Text = "-1";
//
// groupAxis
//
this.groupAxis.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.groupAxis.Controls.Add(this.btnAxisOff);
this.groupAxis.Controls.Add(this.btnAxisOn);
this.groupAxis.Controls.Add(this.comboBox1);
this.groupAxis.Controls.Add(this.label6);
this.groupAxis.Controls.Add(this.label1);
this.groupAxis.Controls.Add(this.btnReadHomeSingle);
this.groupAxis.Controls.Add(this.txtHomeSingle);
this.groupAxis.Controls.Add(this.label16);
this.groupAxis.Controls.Add(this.label15);
this.groupAxis.Controls.Add(this.label2);
this.groupAxis.Controls.Add(this.label11);
this.groupAxis.Controls.Add(this.txtHomeStatus);
this.groupAxis.Controls.Add(this.button2);
this.groupAxis.Controls.Add(this.label10);
this.groupAxis.Controls.Add(this.txtBusyStatus);
this.groupAxis.Controls.Add(this.button1);
this.groupAxis.Controls.Add(this.label3);
this.groupAxis.Controls.Add(this.txtAlarmStatus);
this.groupAxis.Controls.Add(this.btnGetAlarm);
this.groupAxis.Controls.Add(this.btnReadPosition);
this.groupAxis.Controls.Add(this.lblServerOn);
this.groupAxis.Controls.Add(this.label7);
this.groupAxis.Controls.Add(this.label8);
this.groupAxis.Controls.Add(this.btnOpenAxis);
this.groupAxis.Controls.Add(this.btnCloseAxis);
this.groupAxis.Controls.Add(this.lblCountPulse);
this.groupAxis.Controls.Add(this.txtASpeed);
this.groupAxis.Controls.Add(this.lblOutPulse);
this.groupAxis.Controls.Add(this.label47);
this.groupAxis.Controls.Add(this.btnAxisVMove);
this.groupAxis.Controls.Add(this.btnAxisRMove);
this.groupAxis.Controls.Add(this.btnAxisReturnHome);
this.groupAxis.Controls.Add(this.btnAxisAMove);
this.groupAxis.Controls.Add(this.btnComAlarmClear);
this.groupAxis.Controls.Add(this.txtAPosition);
this.groupAxis.Controls.Add(this.label48);
this.groupAxis.Controls.Add(this.btnAxisStop);
this.groupAxis.Controls.Add(this.txtAxisValue);
this.groupAxis.Controls.Add(this.txtAxisDeviceName);
this.groupAxis.Controls.Add(this.label45);
this.groupAxis.Controls.Add(this.label46);
this.groupAxis.Controls.Add(this.label49);
this.groupAxis.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.groupAxis.Location = new System.Drawing.Point(10, 6);
this.groupAxis.Name = "groupAxis";
this.groupAxis.Size = new System.Drawing.Size(940, 424);
this.groupAxis.TabIndex = 217;
this.groupAxis.TabStop = false;
this.groupAxis.Text = "伺服运动";
//
// btnAxisOff
//
this.btnAxisOff.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnAxisOff.Location = new System.Drawing.Point(213, 33);
this.btnAxisOff.Name = "btnAxisOff";
this.btnAxisOff.Size = new System.Drawing.Size(110, 34);
this.btnAxisOff.TabIndex = 308;
this.btnAxisOff.Text = "伺服运转OFF";
this.btnAxisOff.UseVisualStyleBackColor = true;
this.btnAxisOff.Click += new System.EventHandler(this.btnAxisOff_Click);
//
// btnAxisOn
//
this.btnAxisOn.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnAxisOn.Location = new System.Drawing.Point(101, 33);
this.btnAxisOn.Name = "btnAxisOn";
this.btnAxisOn.Size = new System.Drawing.Size(110, 34);
this.btnAxisOn.TabIndex = 307;
this.btnAxisOn.Text = "伺服运转ON";
this.btnAxisOn.UseVisualStyleBackColor = true;
this.btnAxisOn.Click += new System.EventHandler(this.btnAxisOn_Click);
//
// comboBox1
//
this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox1.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.comboBox1.FormattingEnabled = true;
this.comboBox1.Location = new System.Drawing.Point(89, 91);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(220, 28);
this.comboBox1.TabIndex = 301;
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(89, 376);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(68, 17);
this.label6.TabIndex = 300;
this.label6.Text = "原点信号:";
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(195, 376);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(94, 17);
this.label1.TabIndex = 299;
this.label1.Text = "1=ON,0=OFF";
//
// btnReadHomeSingle
//
this.btnReadHomeSingle.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnReadHomeSingle.Location = new System.Drawing.Point(358, 373);
this.btnReadHomeSingle.Name = "btnReadHomeSingle";
this.btnReadHomeSingle.Size = new System.Drawing.Size(110, 34);
this.btnReadHomeSingle.TabIndex = 298;
this.btnReadHomeSingle.Text = "读原点信号";
this.btnReadHomeSingle.UseVisualStyleBackColor = true;
this.btnReadHomeSingle.Click += new System.EventHandler(this.btnReadHomeSingle_Click);
//
// txtHomeSingle
//
this.txtHomeSingle.Enabled = false;
this.txtHomeSingle.Location = new System.Drawing.Point(161, 373);
this.txtHomeSingle.Name = "txtHomeSingle";
this.txtHomeSingle.Size = new System.Drawing.Size(25, 23);
this.txtHomeSingle.TabIndex = 297;
//
// label16
//
this.label16.AutoSize = true;
this.label16.Location = new System.Drawing.Point(192, 343);
this.label16.Name = "label16";
this.label16.Size = new System.Drawing.Size(112, 17);
this.label16.TabIndex = 295;
this.label16.Text = "1=完成,0=未完成";
//
// label15
//
this.label15.AutoSize = true;
this.label15.Location = new System.Drawing.Point(192, 312);
this.label15.Name = "label15";
this.label15.Size = new System.Drawing.Size(124, 17);
this.label15.TabIndex = 294;
this.label15.Text = "1=执行中,0=未执行";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(192, 277);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(100, 17);
this.label2.TabIndex = 293;
this.label2.Text = "1=报警,0=正常";
//
// label11
//
this.label11.AutoSize = true;
this.label11.Location = new System.Drawing.Point(43, 343);
this.label11.Name = "label11";
this.label11.Size = new System.Drawing.Size(114, 17);
this.label11.TabIndex = 292;
this.label11.Text = "HOME-CMP状态:";
//
// txtHomeStatus
//
this.txtHomeStatus.Enabled = false;
this.txtHomeStatus.Location = new System.Drawing.Point(161, 340);
this.txtHomeStatus.Name = "txtHomeStatus";
this.txtHomeStatus.Size = new System.Drawing.Size(25, 23);
this.txtHomeStatus.TabIndex = 291;
//
// button2
//
this.button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button2.Location = new System.Drawing.Point(358, 338);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(110, 34);
this.button2.TabIndex = 290;
this.button2.Text = "读HOME状态";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// label10
//
this.label10.AutoSize = true;
this.label10.Location = new System.Drawing.Point(82, 310);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(75, 17);
this.label10.TabIndex = 289;
this.label10.Text = "BUSY状态:";
//
// txtBusyStatus
//
this.txtBusyStatus.Enabled = false;
this.txtBusyStatus.Location = new System.Drawing.Point(161, 307);
this.txtBusyStatus.Name = "txtBusyStatus";
this.txtBusyStatus.Size = new System.Drawing.Size(25, 23);
this.txtBusyStatus.TabIndex = 288;
//
// button1
//
this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button1.Location = new System.Drawing.Point(358, 303);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(110, 34);
this.button1.TabIndex = 287;
this.button1.Text = "读BUSY状态";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(89, 277);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(68, 17);
this.label3.TabIndex = 286;
this.label3.Text = "报警状态:";
//
// txtAlarmStatus
//
this.txtAlarmStatus.Enabled = false;
this.txtAlarmStatus.Location = new System.Drawing.Point(161, 274);
this.txtAlarmStatus.Name = "txtAlarmStatus";
this.txtAlarmStatus.Size = new System.Drawing.Size(25, 23);
this.txtAlarmStatus.TabIndex = 285;
//
// btnGetAlarm
//
this.btnGetAlarm.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnGetAlarm.Location = new System.Drawing.Point(358, 268);
this.btnGetAlarm.Name = "btnGetAlarm";
this.btnGetAlarm.Size = new System.Drawing.Size(110, 34);
this.btnGetAlarm.TabIndex = 284;
this.btnGetAlarm.Text = "读报警状态";
this.btnGetAlarm.UseVisualStyleBackColor = true;
this.btnGetAlarm.Click += new System.EventHandler(this.btnGetAlarm_Click);
//
// btnReadPosition
//
this.btnReadPosition.BackColor = System.Drawing.SystemColors.Control;
this.btnReadPosition.Cursor = System.Windows.Forms.Cursors.Default;
this.btnReadPosition.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnReadPosition.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnReadPosition.ForeColor = System.Drawing.SystemColors.ControlText;
this.btnReadPosition.Location = new System.Drawing.Point(358, 209);
this.btnReadPosition.Name = "btnReadPosition";
this.btnReadPosition.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.btnReadPosition.Size = new System.Drawing.Size(110, 34);
this.btnReadPosition.TabIndex = 278;
this.btnReadPosition.Text = "读取位置";
this.btnReadPosition.UseVisualStyleBackColor = true;
this.btnReadPosition.Click += new System.EventHandler(this.btnReadPosition_Click);
//
// lblServerOn
//
this.lblServerOn.AutoSize = true;
this.lblServerOn.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.lblServerOn.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lblServerOn.ForeColor = System.Drawing.Color.Red;
this.lblServerOn.Location = new System.Drawing.Point(491, 352);
this.lblServerOn.Name = "lblServerOn";
this.lblServerOn.Size = new System.Drawing.Size(0, 19);
this.lblServerOn.TabIndex = 268;
//
// label7
//
this.label7.AutoSize = true;
this.label7.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label7.Location = new System.Drawing.Point(8, 203);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(80, 17);
this.label7.TabIndex = 254;
this.label7.Text = "目标脉冲值:";
//
// label8
//
this.label8.AutoSize = true;
this.label8.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label8.Location = new System.Drawing.Point(8, 235);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(80, 17);
this.label8.TabIndex = 255;
this.label8.Text = "实际脉冲值:";
//
// btnOpenAxis
//
this.btnOpenAxis.BackColor = System.Drawing.SystemColors.Control;
this.btnOpenAxis.Cursor = System.Windows.Forms.Cursors.Default;
this.btnOpenAxis.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnOpenAxis.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnOpenAxis.ForeColor = System.Drawing.SystemColors.ControlText;
this.btnOpenAxis.Location = new System.Drawing.Point(358, 89);
this.btnOpenAxis.Name = "btnOpenAxis";
this.btnOpenAxis.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.btnOpenAxis.Size = new System.Drawing.Size(110, 34);
this.btnOpenAxis.TabIndex = 253;
this.btnOpenAxis.Text = "打开伺服";
this.btnOpenAxis.UseVisualStyleBackColor = true;
this.btnOpenAxis.Click += new System.EventHandler(this.btnOpenAxis_Click);
//
// btnCloseAxis
//
this.btnCloseAxis.BackColor = System.Drawing.SystemColors.Control;
this.btnCloseAxis.Cursor = System.Windows.Forms.Cursors.Default;
this.btnCloseAxis.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnCloseAxis.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnCloseAxis.ForeColor = System.Drawing.SystemColors.ControlText;
this.btnCloseAxis.Location = new System.Drawing.Point(474, 88);
this.btnCloseAxis.Name = "btnCloseAxis";
this.btnCloseAxis.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.btnCloseAxis.Size = new System.Drawing.Size(110, 34);
this.btnCloseAxis.TabIndex = 252;
this.btnCloseAxis.Text = "关闭伺服";
this.btnCloseAxis.UseVisualStyleBackColor = true;
this.btnCloseAxis.Click += new System.EventHandler(this.btnCloseAxis_Click);
//
// lblCountPulse
//
this.lblCountPulse.Location = new System.Drawing.Point(89, 230);
this.lblCountPulse.Name = "lblCountPulse";
this.lblCountPulse.ReadOnly = true;
this.lblCountPulse.Size = new System.Drawing.Size(87, 23);
this.lblCountPulse.TabIndex = 38;
//
// txtASpeed
//
this.txtASpeed.AcceptsReturn = true;
this.txtASpeed.BackColor = System.Drawing.SystemColors.Window;
this.txtASpeed.Cursor = System.Windows.Forms.Cursors.IBeam;
this.txtASpeed.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtASpeed.ForeColor = System.Drawing.SystemColors.WindowText;
this.txtASpeed.Location = new System.Drawing.Point(225, 161);
this.txtASpeed.MaxLength = 12;
this.txtASpeed.Name = "txtASpeed";
this.txtASpeed.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.txtASpeed.Size = new System.Drawing.Size(84, 26);
this.txtASpeed.TabIndex = 251;
this.txtASpeed.Text = "30";
//
// lblOutPulse
//
this.lblOutPulse.Location = new System.Drawing.Point(89, 201);
this.lblOutPulse.Name = "lblOutPulse";
this.lblOutPulse.ReadOnly = true;
this.lblOutPulse.Size = new System.Drawing.Size(87, 23);
this.lblOutPulse.TabIndex = 30;
//
// label47
//
this.label47.Cursor = System.Windows.Forms.Cursors.Default;
this.label47.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label47.ForeColor = System.Drawing.SystemColors.ControlText;
this.label47.Location = new System.Drawing.Point(170, 164);
this.label47.Name = "label47";
this.label47.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.label47.Size = new System.Drawing.Size(53, 20);
this.label47.TabIndex = 250;
this.label47.Text = "速度:";
this.label47.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// btnAxisVMove
//
this.btnAxisVMove.BackColor = System.Drawing.SystemColors.Control;
this.btnAxisVMove.Cursor = System.Windows.Forms.Cursors.Default;
this.btnAxisVMove.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnAxisVMove.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnAxisVMove.ForeColor = System.Drawing.SystemColors.ControlText;
this.btnAxisVMove.Location = new System.Drawing.Point(358, 170);
this.btnAxisVMove.Name = "btnAxisVMove";
this.btnAxisVMove.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.btnAxisVMove.Size = new System.Drawing.Size(110, 34);
this.btnAxisVMove.TabIndex = 249;
this.btnAxisVMove.Text = "匀速运动";
this.btnAxisVMove.UseVisualStyleBackColor = true;
this.btnAxisVMove.Click += new System.EventHandler(this.btnAxisVMove_Click);
//
// btnAxisRMove
//
this.btnAxisRMove.BackColor = System.Drawing.SystemColors.Control;
this.btnAxisRMove.Cursor = System.Windows.Forms.Cursors.Default;
this.btnAxisRMove.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnAxisRMove.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnAxisRMove.ForeColor = System.Drawing.SystemColors.ControlText;
this.btnAxisRMove.Location = new System.Drawing.Point(474, 130);
this.btnAxisRMove.Name = "btnAxisRMove";
this.btnAxisRMove.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.btnAxisRMove.Size = new System.Drawing.Size(110, 34);
this.btnAxisRMove.TabIndex = 248;
this.btnAxisRMove.Text = "相对运动";
this.btnAxisRMove.UseVisualStyleBackColor = true;
this.btnAxisRMove.Click += new System.EventHandler(this.btnAxisRMove_Click);
//
// btnAxisReturnHome
//
this.btnAxisReturnHome.BackColor = System.Drawing.SystemColors.Control;
this.btnAxisReturnHome.Cursor = System.Windows.Forms.Cursors.Default;
this.btnAxisReturnHome.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnAxisReturnHome.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnAxisReturnHome.ForeColor = System.Drawing.SystemColors.ControlText;
this.btnAxisReturnHome.Location = new System.Drawing.Point(474, 209);
this.btnAxisReturnHome.Name = "btnAxisReturnHome";
this.btnAxisReturnHome.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.btnAxisReturnHome.Size = new System.Drawing.Size(110, 34);
this.btnAxisReturnHome.TabIndex = 247;
this.btnAxisReturnHome.Text = "原点返回";
this.btnAxisReturnHome.UseVisualStyleBackColor = true;
this.btnAxisReturnHome.Click += new System.EventHandler(this.btnAxisReturnHome_Click);
//
// btnAxisAMove
//
this.btnAxisAMove.BackColor = System.Drawing.SystemColors.Control;
this.btnAxisAMove.Cursor = System.Windows.Forms.Cursors.Default;
this.btnAxisAMove.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnAxisAMove.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnAxisAMove.ForeColor = System.Drawing.SystemColors.ControlText;
this.btnAxisAMove.Location = new System.Drawing.Point(358, 131);
this.btnAxisAMove.Name = "btnAxisAMove";
this.btnAxisAMove.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.btnAxisAMove.Size = new System.Drawing.Size(110, 34);
this.btnAxisAMove.TabIndex = 245;
this.btnAxisAMove.Text = "绝对运动";
this.btnAxisAMove.UseVisualStyleBackColor = true;
this.btnAxisAMove.Click += new System.EventHandler(this.btnAxisAMove_Click);
//
// btnComAlarmClear
//
this.btnComAlarmClear.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnComAlarmClear.Location = new System.Drawing.Point(474, 268);
this.btnComAlarmClear.Name = "btnComAlarmClear";
this.btnComAlarmClear.Size = new System.Drawing.Size(110, 34);
this.btnComAlarmClear.TabIndex = 50;
this.btnComAlarmClear.Text = "清除报警";
this.btnComAlarmClear.UseVisualStyleBackColor = true;
this.btnComAlarmClear.Click += new System.EventHandler(this.btnComAlarmClear_Click);
//
// txtAPosition
//
this.txtAPosition.BackColor = System.Drawing.SystemColors.Window;
this.txtAPosition.Cursor = System.Windows.Forms.Cursors.IBeam;
this.txtAPosition.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtAPosition.ForeColor = System.Drawing.SystemColors.WindowText;
this.txtAPosition.Location = new System.Drawing.Point(225, 127);
this.txtAPosition.MaxLength = 12;
this.txtAPosition.Name = "txtAPosition";
this.txtAPosition.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.txtAPosition.Size = new System.Drawing.Size(84, 26);
this.txtAPosition.TabIndex = 244;
this.txtAPosition.Text = "3000";
//
// label48
//
this.label48.Cursor = System.Windows.Forms.Cursors.Default;
this.label48.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label48.ForeColor = System.Drawing.SystemColors.ControlText;
this.label48.Location = new System.Drawing.Point(170, 130);
this.label48.Name = "label48";
this.label48.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.label48.Size = new System.Drawing.Size(53, 20);
this.label48.TabIndex = 243;
this.label48.Text = "位置:";
this.label48.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// btnAxisStop
//
this.btnAxisStop.BackColor = System.Drawing.SystemColors.Control;
this.btnAxisStop.Cursor = System.Windows.Forms.Cursors.Default;
this.btnAxisStop.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnAxisStop.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnAxisStop.ForeColor = System.Drawing.SystemColors.ControlText;
this.btnAxisStop.Location = new System.Drawing.Point(474, 169);
this.btnAxisStop.Name = "btnAxisStop";
this.btnAxisStop.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.btnAxisStop.Size = new System.Drawing.Size(110, 34);
this.btnAxisStop.TabIndex = 246;
this.btnAxisStop.Text = " 停止运动";
this.btnAxisStop.UseVisualStyleBackColor = true;
this.btnAxisStop.Click += new System.EventHandler(this.btnAxisStop_Click);
//
// txtAxisValue
//
this.txtAxisValue.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtAxisValue.Location = new System.Drawing.Point(89, 161);
this.txtAxisValue.MaxLength = 10;
this.txtAxisValue.Name = "txtAxisValue";
this.txtAxisValue.ReadOnly = true;
this.txtAxisValue.Size = new System.Drawing.Size(68, 26);
this.txtAxisValue.TabIndex = 242;
this.txtAxisValue.Text = "0";
//
// txtAxisDeviceName
//
this.txtAxisDeviceName.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtAxisDeviceName.Location = new System.Drawing.Point(89, 127);
this.txtAxisDeviceName.MaxLength = 10;
this.txtAxisDeviceName.Name = "txtAxisDeviceName";
this.txtAxisDeviceName.ReadOnly = true;
this.txtAxisDeviceName.Size = new System.Drawing.Size(68, 26);
this.txtAxisDeviceName.TabIndex = 241;
this.txtAxisDeviceName.Text = "0";
//
// label45
//
this.label45.AutoSize = true;
this.label45.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label45.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label45.Location = new System.Drawing.Point(32, 132);
this.label45.Name = "label45";
this.label45.Size = new System.Drawing.Size(56, 17);
this.label45.TabIndex = 240;
this.label45.Text = "端口号:";
this.label45.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// label46
//
this.label46.AutoSize = true;
this.label46.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label46.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label46.Location = new System.Drawing.Point(44, 166);
this.label46.Name = "label46";
this.label46.Size = new System.Drawing.Size(44, 17);
this.label46.TabIndex = 239;
this.label46.Text = "地址:";
this.label46.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// label49
//
this.label49.AutoSize = true;
this.label49.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label49.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label49.Location = new System.Drawing.Point(28, 96);
this.label49.Name = "label49";
this.label49.Size = new System.Drawing.Size(60, 17);
this.label49.TabIndex = 233;
this.label49.Text = "AC伺服:";
this.label49.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// panel1
//
this.panel1.Controls.Add(this.chbDebug);
......@@ -1347,11 +601,6 @@
this.tabPage1.ResumeLayout(false);
this.groupBox6.ResumeLayout(false);
this.groupBox6.PerformLayout();
this.tabPage2.ResumeLayout(false);
this.groupBox2.ResumeLayout(false);
this.groupBox2.PerformLayout();
this.groupAxis.ResumeLayout(false);
this.groupAxis.PerformLayout();
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.ResumeLayout(false);
......@@ -1394,64 +643,10 @@
private System.Windows.Forms.Button btnStop1Up;
private System.Windows.Forms.TabControl tabControl1;
private System.Windows.Forms.TabPage tabPage1;
private System.Windows.Forms.TabPage tabPage2;
private System.Windows.Forms.GroupBox groupAxis;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button btnReadHomeSingle;
private System.Windows.Forms.TextBox txtHomeSingle;
private System.Windows.Forms.Label label16;
private System.Windows.Forms.Label label15;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label11;
private System.Windows.Forms.TextBox txtHomeStatus;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.TextBox txtBusyStatus;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.TextBox txtAlarmStatus;
private System.Windows.Forms.Button btnGetAlarm;
public System.Windows.Forms.Button btnReadPosition;
private System.Windows.Forms.Label lblServerOn;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.Label label8;
public System.Windows.Forms.Button btnOpenAxis;
public System.Windows.Forms.Button btnCloseAxis;
private System.Windows.Forms.TextBox lblCountPulse;
public System.Windows.Forms.TextBox txtASpeed;
private System.Windows.Forms.TextBox lblOutPulse;
public System.Windows.Forms.Label label47;
public System.Windows.Forms.Button btnAxisVMove;
public System.Windows.Forms.Button btnAxisRMove;
public System.Windows.Forms.Button btnAxisReturnHome;
public System.Windows.Forms.Button btnAxisAMove;
private System.Windows.Forms.Button btnComAlarmClear;
public System.Windows.Forms.TextBox txtAPosition;
public System.Windows.Forms.Label label48;
public System.Windows.Forms.Button btnAxisStop;
private System.Windows.Forms.TextBox txtAxisValue;
private System.Windows.Forms.TextBox txtAxisDeviceName;
private System.Windows.Forms.Label label45;
private System.Windows.Forms.Label label46;
private System.Windows.Forms.Label label49;
private System.Windows.Forms.ComboBox comboBox1;
private System.Windows.Forms.ComboBox cmbSizeList;
private System.Windows.Forms.Label label4;
public System.Windows.Forms.Button btnMoveto;
public System.Windows.Forms.TextBox txtSizePosition;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Button btnAxisOff;
private System.Windows.Forms.Button btnAxisOn;
private System.Windows.Forms.CheckBox checkBox1;
private System.Windows.Forms.Button btnCloseAll;
private System.Windows.Forms.GroupBox groupBox2;
public System.Windows.Forms.TextBox txtP1;
public System.Windows.Forms.Button btnMoveToP1;
private System.Windows.Forms.Button btnSave;
private System.Windows.Forms.Label lblTrayNum;
public System.Windows.Forms.Button btnBoxP;
public System.Windows.Forms.TextBox txtBoxP;
private System.Windows.Forms.GroupBox groupBox6;
private System.Windows.Forms.Label lblInstoreList;
}
......
......@@ -174,33 +174,10 @@ namespace OnlineStore.AssemblyLine
private void FrmStoreIOStatus_Load(object sender, EventArgs e)
{
chbDebug.Checked = providingEquip.IsDebug;
if (providingEquip.UseAxis)
{
portName = providingEquip.Config.UpDown_Axis.DeviceName;
SlvAddr = providingEquip.Config.UpDown_Axis.GetAxisValue();
txtAxisDeviceName.Text = portName;
txtSlaveId.Text = SlvAddr.ToString();
comboBox1.Items.Clear();
comboBox1.Items.Add(providingEquip.Config.UpDown_Axis.Explain);
comboBox1.SelectedIndex = 0;
txtAxisValue.Text = SlvAddr.ToString();
}
else
{
tabControl1.TabPages.Remove(tabPage2);
}
cmbSizeList.Items.Clear();
cmbSizeList.Items.Add("0=默认位置");
for(int i = 8; i <= 48; i = i + 4)
{
cmbSizeList.Items.Add(i.ToString());
}
cmbSizeList.SelectedIndex = 0;
lblStoreStatus.Text = KTK_Store.GetRunStr(providingEquip.lineStatus, providingEquip.runStatus);
lblThisSta.Text = providingEquip.WarnMsg;
txtP1.Text = providingEquip.Config.UpDownAxisP1.ToString();
IsLoad = true;
}
......@@ -459,184 +436,14 @@ namespace OnlineStore.AssemblyLine
btnClampSlack.Text = "夹料气缸夹紧";
btnClampSlack.BackColor = Color.SkyBlue;
}
}
private void btnOpenAxis_Click(object sender, EventArgs e)
{
string portName = txtAxisDeviceName.Text;
short SlvAddr = FormUtil.GetShortValue(txtAxisValue);
LogUtil.info("点击【打开伺服】,端口号【" + portName + "】地址【" + SlvAddr + "】 ");
ACServerManager.OpenPort(portName);
ACServerManager.AlarmClear(portName, SlvAddr);
Thread.Sleep(100);
ACServerManager.ServoOn(portName, SlvAddr);
}
private void btnCloseAxis_Click(object sender, EventArgs e)
{
LogUtil.info("点击【关闭伺服】,端口号【" + portName + "】地址【" + SlvAddr + "】 ");
ACServerManager.ServoOff(portName, SlvAddr);
}
private void btnAxisAMove_Click(object sender, EventArgs e)
{
int position = FormUtil.GetIntValue(txtAPosition);
int speed = FormUtil.GetIntValue(txtASpeed);
LogUtil.info("点击【绝对运动】,端口号【" + portName + "】地址【" + SlvAddr + "】位置【" + position + "】速度【" + speed + "】");
ACServerManager.AbsMove(portName, SlvAddr, position, speed);
}
private void btnAxisRMove_Click(object sender, EventArgs e)
{
int position = FormUtil.GetIntValue(txtAPosition);
int speed = FormUtil.GetIntValue(txtASpeed);
LogUtil.info("点击【相对运动】,端口号【" + portName + "】地址【" + SlvAddr + "】位置【" + position + "】速度【" + speed + "】");
ACServerManager.RelMove(portName, SlvAddr, position, speed);
}
private void btnAxisVMove_Click(object sender, EventArgs e)
{
int speed = FormUtil.GetIntValue(txtASpeed);
LogUtil.info("点击【匀速运动】,端口号【" + portName + "】地址【" + SlvAddr + "】 速度【" + speed + "】");
ACServerManager.SpeedMove(portName, SlvAddr, speed);
}
private void btnAxisStop_Click(object sender, EventArgs e)
{
LogUtil.info("点击【停止运动】,端口号【" + portName + "】地址【" + SlvAddr + "】 ");
ACServerManager.SuddenStop(portName, SlvAddr);
}
private void btnComAlarmClear_Click(object sender, EventArgs e)
{
LogUtil.info("点击【清理报警】,端口号【" + portName + "】地址【" + SlvAddr + "】 ");
ACServerManager.AlarmClear(portName, SlvAddr);
Thread.Sleep(100);
ACServerManager.ServoOn(portName, SlvAddr);
}
private void btnAxisReturnHome_Click(object sender, EventArgs e)
{
int speed = FormUtil.GetIntValue(txtASpeed);
LogUtil.info("点击【原点返回】,端口号【" + portName + "】地址【" + SlvAddr + "】 速度【" + speed + "】");
ACServerManager.HomeMove(portName, SlvAddr, speed);
}
private void btnGetAlarm_Click(object sender, EventArgs e)
{
int value = ACServerManager.GetAlarmStatus(portName, SlvAddr);
this.txtAlarmStatus.Text = value.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
int value = ACServerManager.GetBusyStatus(portName, SlvAddr);
this.txtBusyStatus.Text = value.ToString();
}
private void button2_Click(object sender, EventArgs e)
{
int value = ACServerManager.GetHomeEndStatus(portName, SlvAddr);
this.txtHomeStatus.Text = value.ToString();
}
private void btnReadHomeSingle_Click(object sender, EventArgs e)
{
int value = ACServerManager.GetHomeSingle(portName, SlvAddr);
this.txtHomeSingle.Text = value.ToString();
}
private void btnReadPosition_Click(object sender, EventArgs e)
{
lblOutPulse.Text= ACServerManager.GetTargetPosition(portName, SlvAddr).ToString();
lblCountPulse.Text = ACServerManager.GetActualtPosition(portName, SlvAddr).ToString();
}
private void cmbSizeList_SelectedIndexChanged(object sender, EventArgs e)
{
if (cmbSizeList.SelectedIndex < 0)
{
return;
}
int size = 0;
try {size= Convert.ToInt32(cmbSizeList.Text); } catch (Exception ex) { }
txtSizePosition.Text = providingEquip.Config.GetUpdownPosition(size).ToString();
txtBoxP.Text = providingEquip.Config.GetUpdownBoxPosition(size).ToString();
btnMoveto.Text = size + "寸移栽位置 :";
btnBoxP.Text= size + "寸料仓门口位置 :";
// btnMoveto.Text = "尺寸" + size + "对应位置:";
}
private void btnMoveto_Click(object sender, EventArgs e)
{
int position = FormUtil.GetIntValue(txtSizePosition);
if (position != -1)
{
int speed = providingEquip.Config.UpdownAxis_DownSpeed;
LogUtil.info("点击【移栽位置】,料盘高度【" + cmbSizeList.Text + "】 位置【" + position + "】速度【" + speed + "】");
ACServerManager.AbsMove(portName, SlvAddr, position, speed);
}
}
private void btnAxisOn_Click(object sender, EventArgs e)
{
this.Enabled = false;
providingEquip.RunAxis(false,providingEquip.Config.UpDown_Axis);
this.Enabled = true;
LogUtil.info("伺服运转ON完成");
}
private void btnAxisOff_Click(object sender, EventArgs e)
{
providingEquip.CloseAxis();
LogUtil.info("伺服运转OFF完成");
}
private void btnCloseAll_Click(object sender, EventArgs e)
{
IOManager.instance.CloseAllDO();
}
private void button3_Click(object sender, EventArgs e)
{
int position = FormUtil.GetIntValue(txtP1);
if (position != -1)
{
int speed =providingEquip.Config.UpdownAxis_P1Speed;
LogUtil.info("点击【P1点测试】, 位置【" + position + "】速度【" + speed + "】");
ACServerManager.AbsMove(portName, SlvAddr, position, speed);
}
}
private void btnSave_Click(object sender, EventArgs e)
{
int p1Position = FormUtil.GetIntValue(txtP1);
providingEquip.Config.UpDownAxisP1 = p1Position;
int size = 0;
try { size = Convert.ToInt32(cmbSizeList.Text); } catch (Exception ex) { }
int sizePosition = FormUtil.GetIntValue(txtSizePosition);
int sizeBoxP = FormUtil.GetIntValue(txtBoxP);
providingEquip.Config.UpdateUpdownPositon(size, sizePosition);
providingEquip.Config.UpdateUpdownBoxPositon(size, sizeBoxP);
LineManager.SaveProvidingEquipConfig(providingEquip.Config);
MessageBox.Show("保存成功!");
}
private void btnBoxP_Click(object sender, EventArgs e)
{
int position = FormUtil.GetIntValue(txtBoxP);
if (position != -1)
{
int speed = providingEquip.Config.UpdownAxis_DownSpeed;
LogUtil.info("点击【料仓门口下降位置】,料盘高度【" + cmbSizeList.Text + "】 位置【" + position + "】速度【" + speed + "】");
ACServerManager.AbsMove(portName, SlvAddr, position, speed);
}
}
}
}
......@@ -70,5 +70,7 @@ namespace OnlineStore.Common
public static string ACBaudRate = "ACBaudRate";
public static string LineRunTest = "LineRunTest";
public static string Line_dischargeLine_count= "Line_dischargeLine_count";
public static string ConfigPath_DischargeLine= "ConfigPath_DischargeLine";
}
}
......@@ -170,6 +170,17 @@ namespace OnlineStore.Common
LogUtil.error(LOGGER, "UpdateConfig保存配置出错:name=" + name + ",Xvalue=" + Xvalue + "," + ex.StackTrace);
}
}
public static int GetIntValue(object line_dischargeLine_count)
{
throw new NotImplementedException();
}
public static string GetValue(object configPath_DischargeLine)
{
throw new NotImplementedException();
}
///<summary>
///向.config文件的appKey结写入信息AppValue 保存设置
///</summary>
......
......@@ -60,6 +60,8 @@
</ItemGroup>
<ItemGroup>
<Compile Include="assemblyLine\AssemblyLineManager.cs" />
<Compile Include="assemblyLine\DischargeLine.cs" />
<Compile Include="assemblyLine\DischargeLine_Partial.cs" />
<Compile Include="assemblyLine\ProvidingEquip_Partial.cs" />
<Compile Include="assemblyLine\FeedingEquip_Partial.cs" />
<Compile Include="assemblyLine\ProvidingEquip.cs" />
......@@ -129,9 +131,15 @@
<None Include="LineConfig\Config_Line.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="LineConfig\Config_DischargeLine_1.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="LineConfig\Config_ProvidingEquip_1.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="LineConfig\Config_DischargeLine_2.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="LineConfig\Config_ProvidingEquip_2.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
......
类型,分类编号,说明,名称,属性值,设备名称,默认值,描述,电器定义,代码定义
PRO,0,设备是否处于调试状态(1=调试,0=正常),IsDebug,1,,,,,
,,,,,,,,,
DI,0,皮带线1定位检测,Location_Check1,0,192.168.200.12,0,皮带线1定位检测,X021,X021
DI,0,皮带线1入口料盘检测,EntryPosition_Check1,1,192.168.200.12,0,皮带线1入口料盘检测,X022,X022
DI,0,皮带线1出口料盘检测,ExitPosition_Check1,2,192.168.200.12,0,皮带线1出口料盘检测,X023,X023
DI,0,皮带线2定位检测,Location_Check2,3,192.168.200.12,0,皮带线2定位检测,X024,X024
DI,0,皮带线2入口料盘检测,EntryPosition_Check2,4,192.168.200.12,0,皮带线2入口料盘检测,X025,X025
DI,0,皮带线2出口料盘检测,ExitPosition_Check2,5,192.168.200.12,0,皮带线2出口料盘检测,X026,X026
DI,0,皮带线3定位检测,Location_Check3,6,192.168.200.12,0,皮带线3定位检测,X027,X027
DI,0,皮带线3入口料盘检测,EntryPosition_Check3,7,192.168.200.12,0,皮带线3入口料盘检测,X028,X028
DI,0,皮带线3中间位置料盘检测,MiddlePosition_Check3,8,192.168.200.12,0,皮带线3中间位置料盘检测,X029,X029
DI,0,皮带线3出口料盘检测,ExitPosition_Check3,9,192.168.200.12,0,皮带线3出口料盘检测,X030,X030
DI,0,分盘装置1定位气缸上升端,SeparateDevice_Up,10,192.168.200.12,0,分盘装置1定位气缸上升端,X031,X031
DI,0,分盘装置1定位气缸下降端,SeparateDevice_Down,11,192.168.200.12,0,分盘装置1定位气缸下降端,X032,X032
DI,0,分盘装置1料盘检测,SeparateDevice_Check,12,192.168.200.12,0,分盘装置1料盘检测,X033,X033
,0,,,13,192.168.200.12,0,,X034,X034
,0,,,14,192.168.200.12,0,,X035,X035
,0,,,15,192.168.200.12,0,,X036,X036
,,,,,,,,,
DO,0,出料皮带线1运转,LineRun_1,0,192.168.200.12,0,出料皮带线1运转,Y021,Y021
DO,0,出料皮带线2运转,LineRun_2,1,192.168.200.12,0,出料皮带线2运转,Y022,Y022
DO,0,出料皮带线3运转,LineRun_3,2,192.168.200.12,0,出料皮带线3运转,Y023,Y023
DO,0,分盘装置电机驱动,SeparateDevice_Run,3,192.168.200.12,0,分盘装置电机驱动,Y024,Y024
DO,0,分盘装置1定位气缸上升SOL,SeparateDevice_Up,4,192.168.200.12,0,分盘装置1定位气缸上升SOL,Y025,Y025
DO,0,分盘装置1定位气缸下降SOL,SeparateDevice_Down,5,192.168.200.12,0,分盘装置1定位气缸下降SOL,Y026,Y026
,0,,,6,192.168.200.12,0,,Y027,Y027
,0,,,7,192.168.200.12,0,,Y028,Y028
,0,,,8,192.168.200.12,0,,Y029,Y029
,0,,,9,192.168.200.12,0,,Y030,Y030
,0,,,10,192.168.200.12,0,,Y031,Y031
,0,,,11,192.168.200.12,0,,Y032,Y032
,0,,,12,192.168.200.12,0,,Y033,Y033
,0,,,13,192.168.200.12,0,,Y034,Y034
,0,,,14,192.168.200.12,0,,Y035,Y035
,0,,,15,192.168.200.12,0,,Y036,Y036
类型,分类编号,说明,名称,属性值,设备名称,默认值,描述,电器定义,代码定义
PRO,0,设备是否处于调试状态(1=调试,0=正常),IsDebug,1,,,,,
,,,,,,,,,
DI,0,皮带线4定位检测,Location_Check1,0,192.168.200.13,0,皮带线4定位检测,X041,X041
DI,0,皮带线4入口料盘检测,EntryPosition_Check1,1,192.168.200.13,0,皮带线4入口料盘检测,X042,X042
DI,0,皮带线4出口料盘检测,ExitPosition_Check1,2,192.168.200.13,0,皮带线4出口料盘检测,X043,X043
DI,0,皮带线5定位检测,Location_Check2,3,192.168.200.13,0,皮带线5定位检测,X044,X044
DI,0,皮带线5入口料盘检测,EntryPosition_Check2,4,192.168.200.13,0,皮带线5入口料盘检测,X045,X045
DI,0,皮带线5出口料盘检测,ExitPosition_Check2,5,192.168.200.13,0,皮带线5出口料盘检测,X046,X046
DI,0,皮带线6定位检测,Location_Check3,6,192.168.200.13,0,皮带线6定位检测,X047,X047
DI,0,皮带线6入口料盘检测,EntryPosition_Check3,7,192.168.200.13,0,皮带线6入口料盘检测,X048,X048
DI,0,皮带线6中间位置料盘检测,MiddlePosition_Check3,8,192.168.200.13,0,皮带线6中间位置料盘检测,X049,X049
DI,0,皮带线6出口料盘检测,ExitPosition_Check3,9,192.168.200.13,0,皮带线6出口料盘检测,X050,X050
DI,0,分盘装置2定位气缸上升端,SeparateDevice_Up,10,192.168.200.13,0,分盘装置2定位气缸上升端,X051,X051
DI,0,分盘装置2定位气缸下降端,SeparateDevice_Down,11,192.168.200.13,0,分盘装置2定位气缸下降端,X052,X052
DI,0,分盘装置1料盘检测,SeparateDevice_Check,12,192.168.200.13,0,分盘装置1料盘检测,X053,X053
,0,,,13,192.168.200.13,0,,X054,X054
,0,,,14,192.168.200.13,0,,X055,X055
,0,,,15,192.168.200.13,0,,X056,X056
,,,,,,,,,
DO,0,出料皮带线1运转,LineRun_1,0,192.168.200.13,0,出料皮带线1运转,Y041,Y041
DO,0,出料皮带线2运转,LineRun_2,1,192.168.200.13,0,出料皮带线2运转,Y042,Y042
DO,0,出料皮带线3运转,LineRun_3,2,192.168.200.13,0,出料皮带线3运转,Y043,Y043
DO,0,分盘装置电机驱动,SeparateDevice_Run,3,192.168.200.13,0,分盘装置电机驱动,Y044,Y044
DO,0,分盘装置1定位气缸上升SOL,SeparateDevice_Up,4,192.168.200.13,0,分盘装置1定位气缸上升SOL,Y045,Y045
DO,0,分盘装置1定位气缸下降SOL,SeparateDevice_Down,5,192.168.200.13,0,分盘装置1定位气缸下降SOL,Y046,Y046
,0,,,6,192.168.200.13,0,,Y047,Y047
,0,,,7,192.168.200.13,0,,Y048,Y048
,0,,,8,192.168.200.13,0,,Y049,Y049
,0,,,9,192.168.200.13,0,,Y050,Y050
,0,,,10,192.168.200.13,0,,Y051,Y051
,0,,,11,192.168.200.13,0,,Y052,Y052
,0,,,12,192.168.200.13,0,,Y053,Y053
,0,,,13,192.168.200.13,0,,Y054,Y054
,0,,,14,192.168.200.13,0,,Y055,Y055
,0,,,15,192.168.200.13,0,,Y056,Y056
......@@ -19,36 +19,70 @@ PRO,0,模拟信号2的地址,AIDI2_Addr,1,,,,,
PRO,0,模拟信号3的地址,AIDI3_Addr,2,,,,,
PRO,0,模拟信号4的地址,AIDI4_Addr,3,,,,,
,,,,,,,,,
DI,0,急停,SuddenStop_BTN,0,192.168.201.61,0,急停,X01,DI-01
DI,0,复位,Reset_BTN,1,192.168.201.61,0,复位,X02,DI-02
DI,0,启动,Start_BTN,2,192.168.201.61,0,启动,X03,DI-03
DI,0,流水线自动运转,Line_Run,3,192.168.201.61,0,流水线自动运转,X04,DI-04
DI,0,气压检测,Airpressure_Check,4,192.168.201.61,0,气压检测,X05,DI-05
DI,0,上料工位料盘检测1,InStore_TrayCheck1,5,192.168.201.61,0,上料工位料盘检测1,X06,DI-06
DI,0,上料工位料盘检测2,InStore_TrayCheck2,6,192.168.201.61,0,上料工位料盘检测2,X07,DI-07
DI,0,阻挡0-1夹具检测,StopCylinder_Check,7,192.168.201.61,0,阻挡0-1夹具检测,X08,DI-08
DI,0,上料工位夹具检测0-1,Fixture_Check_1,8,192.168.201.61,0,上料工位夹具检测0-1,X09,DI-09
DI,0,上料工位夹具检测0-2,Fixture_Check_2,9,192.168.201.61,0,上料工位夹具检测0-2,X10,DI-10
DI,0,上料工位夹具检测0-3,Fixture_Check_3,10,192.168.201.61,0,上料工位夹具检测0-3,X11,DI-11
DI,0,上料工位夹具检测0-4,Fixture_Check_4,11,192.168.201.61,0,上料工位夹具检测0-4,X12,DI-12
DI,0,上料工位顶升气缸上升端,InStore_TopCylinder_Up,12,192.168.201.61,0,上料工位顶升气缸上升端,X13,DI-13
DI,0,上料工位顶升气缸下降端,InStore_TopCylinder_Down,13,192.168.201.61,0,上料工位顶升气缸下降端,X14,DI-14
DI,0,横移轨道1阻挡夹具检测,SidesWay1_StopFixtureCheck,14,192.168.201.61,0,横移轨道1阻挡夹具检测,X15,DI-15
DI,0,横移轨道1夹具检测,SidesWay1_FixtureCheck,15,192.168.201.61,0,横移轨道1夹具检测,X16,DI-16
DI,0,横移轨道1顶升气缸上升端,SidesWay1_TopCylinder_Up,16,192.168.201.61,0,横移轨道1顶升气缸上升端,X17,DI-17
DI,0,横移轨道1顶升气缸下降端,SidesWay1_TopCylinder_Down,17,192.168.201.61,0,横移轨道1顶升气缸下降端,X18,DI-18
DI,0,横移轨道2夹具检测,SidesWay2_FixtureCheck,18,192.168.201.61,0,横移轨道2夹具检测,X19,DI-19
DI,0,横移轨道2顶升气缸上升端,SidesWay2_TopCylinder_Up,19,192.168.201.61,0,横移轨道2顶升气缸上升端,X20,DI-20
DI,0,横移轨道2顶升气缸下降端,SidesWay2_TopCylinder_Down,20,192.168.201.61,0,横移轨道2顶升气缸下降端,X21,DI-21
DI,0,驱动电机INV1状态,DriveMotor_INV1,21,192.168.201.61,0,驱动电机INV1状态,X22,DI-22
DI,0,驱动电机INV2状态,DriveMotor_INV2,22,192.168.201.61,0,驱动电机INV2状态,X23,DI-23
DI,0,急停,SuddenStop_BTN,0,192.168.200.11,0,急停,X001,X001
DI,0,复位,Reset_BTN,1,192.168.200.11,0,复位,X002,X002
DI,0,联动,Start_BTN,2,192.168.200.11,0,联动,X003,X003
DI,0,气压检测,Airpressure_Check,3,192.168.200.11,0,气压检测,X004,X004
DI,0,NG料盘推出气缸前进端,NGCylinder_Before,4,192.168.200.11,0,NG料盘推出气缸前进端,X005,X005
DI,0,NG料盘推出气缸后退端,NGCylinder_After,5,192.168.200.11,0,NG料盘推出气缸后退端,X006,X006
DI,0,环形线横移4定位上升端,TopCylinder_UP,6,192.168.200.11,0,环形线横移4定位上升端,X007,X007
DI,0,环形线横移4定位下降端,TopCylinder_Down,7,192.168.200.11,0,环形线横移4定位下降端,X008,X008
,0,,,8,192.168.200.11,0,,X009,X009
,0,,,9,192.168.200.11,0,,X010,X010
,0,,,10,192.168.200.11,0,,X011,X011
,0,,,11,192.168.200.11,0,,X012,X012
,0,,,12,192.168.200.11,0,,X013,X013
,0,,,13,192.168.200.11,0,,X014,X014
,0,,,14,192.168.200.11,0,,X015,X015
,0,,,15,192.168.200.11,0,,X016,X016
,,,,,,,,,
DO,0,待机状态(指示灯),AutoRun_HddLed,0,192.168.200.11,0,待机状态(指示灯),Y001,Y001
DO,0,运行状态(指示灯),RunSign_HddLed,1,192.168.200.11,0,运行状态(指示灯),Y002,Y002
DO,0,故障状态(指示灯),Alarm_HddLed,2,192.168.200.11,0,故障状态(指示灯),Y003,Y003
DO,0,故障状态(蜂鸣器),Alarm_Buzzer,3,192.168.200.11,0,故障状态(蜂鸣器),Y004,Y004
DO,0,驱动电机1正转,DriveMotor_1,4,192.168.200.11,0,驱动电机1正转,Y005,Y005
DO,0,驱动电机2正转,DriveMotor_2,5,192.168.200.11,0,驱动电机2正转,Y006,Y006
DO,0,驱动电机3正转,DriveMotor_3,6,192.168.200.11,0,驱动电机3正转,Y007,Y007
DO,0,驱动电机4正转,DriveMotor_4,7,192.168.200.11,0,驱动电机4正转,Y008,Y008
DO,0,环形线横移4电机运转,DriveMotor_Run,8,192.168.200.11,0,环形线横移4电机运转,Y009,Y009
DO,0,NG料盘推出气缸前进SOL,NGCylinder_Before,9,192.168.200.11,0,NG料盘推出气缸前进SOL,Y010,Y010
DO,0,NG料盘推出气缸后退SOL,NGCylinder_After,10,192.168.200.11,0,NG料盘推出气缸后退SOL,Y011,Y011
DO,0,环形线横移4定位上升SOL,TopCylinder_UP,11,192.168.200.11,0,环形线横移4定位上升SOL,Y012,Y012
DO,0,环形线横移4定位下降SOL,TopCylinder_Down,12,192.168.200.11,0,环形线横移4定位下降SOL,Y013,Y013
,0,,,13,192.168.200.11,0,,Y014,Y014
,0,,,14,192.168.200.11,0,,Y015,Y015
,0,,,15,192.168.200.11,0,,Y016,Y016
,,,,,,,,,
,0,急停,SuddenStop_BTN,0,192.168.201.61,0,急停,X01,DI-01
,0,复位,Reset_BTN,1,192.168.201.61,0,复位,X02,DI-02
,0,启动,Start_BTN,2,192.168.201.61,0,启动,X03,DI-03
,0,流水线自动运转,Line_Run,3,192.168.201.61,0,流水线自动运转,X04,DI-04
,0,气压检测,Airpressure_Check,4,192.168.201.61,0,气压检测,X05,DI-05
,0,上料工位料盘检测1,InStore_TrayCheck1,5,192.168.201.61,0,上料工位料盘检测1,X06,DI-06
,0,上料工位料盘检测2,InStore_TrayCheck2,6,192.168.201.61,0,上料工位料盘检测2,X07,DI-07
,0,阻挡0-1夹具检测,StopCylinder_Check,7,192.168.201.61,0,阻挡0-1夹具检测,X08,DI-08
,0,上料工位夹具检测0-1,Fixture_Check_1,8,192.168.201.61,0,上料工位夹具检测0-1,X09,DI-09
,0,上料工位夹具检测0-2,Fixture_Check_2,9,192.168.201.61,0,上料工位夹具检测0-2,X10,DI-10
,0,上料工位夹具检测0-3,Fixture_Check_3,10,192.168.201.61,0,上料工位夹具检测0-3,X11,DI-11
,0,上料工位夹具检测0-4,Fixture_Check_4,11,192.168.201.61,0,上料工位夹具检测0-4,X12,DI-12
,0,上料工位顶升气缸上升端,InStore_TopCylinder_Up,12,192.168.201.61,0,上料工位顶升气缸上升端,X13,DI-13
,0,上料工位顶升气缸下降端,InStore_TopCylinder_Down,13,192.168.201.61,0,上料工位顶升气缸下降端,X14,DI-14
,0,横移轨道1阻挡夹具检测,SidesWay1_StopFixtureCheck,14,192.168.201.61,0,横移轨道1阻挡夹具检测,X15,DI-15
,0,横移轨道1夹具检测,SidesWay1_FixtureCheck,15,192.168.201.61,0,横移轨道1夹具检测,X16,DI-16
,0,横移轨道1顶升气缸上升端,SidesWay1_TopCylinder_Up,16,192.168.201.61,0,横移轨道1顶升气缸上升端,X17,DI-17
,0,横移轨道1顶升气缸下降端,SidesWay1_TopCylinder_Down,17,192.168.201.61,0,横移轨道1顶升气缸下降端,X18,DI-18
,0,横移轨道2夹具检测,SidesWay2_FixtureCheck,18,192.168.201.61,0,横移轨道2夹具检测,X19,DI-19
,0,横移轨道2顶升气缸上升端,SidesWay2_TopCylinder_Up,19,192.168.201.61,0,横移轨道2顶升气缸上升端,X20,DI-20
,0,横移轨道2顶升气缸下降端,SidesWay2_TopCylinder_Down,20,192.168.201.61,0,横移轨道2顶升气缸下降端,X21,DI-21
,0,驱动电机INV1状态,DriveMotor_INV1,21,192.168.201.61,0,驱动电机INV1状态,X22,DI-22
,0,驱动电机INV2状态,DriveMotor_INV2,22,192.168.201.61,0,驱动电机INV2状态,X23,DI-23
,,,,23,192.168.201.61,0,,X24,DI-24
DO,0,待机状态(指示灯),AutoRun_HddLed,0,192.168.201.61,0,待机状态(指示灯),Y01,DO-01
DO,0,运行状态(指示灯),RunSign_HddLed,1,192.168.201.61,0,运行状态(指示灯),Y02,DO-02
DO,0,故障状态(指示灯),Alarm_HddLed,2,192.168.201.61,0,故障状态(指示灯),Y03,DO-03
DO,0,驱动电机正转,DriveMotor_Run,3,192.168.201.61,0,驱动电机正转,Y04,DO-04
DO,0,横移电机1.2驱动,SidesWay12_DriveMotor,4,192.168.201.61,0,横移电机1.2驱动,Y05,DO-05
DO,0,横移电机3.4驱动,SidesWay34_DriveMotor,5,192.168.201.61,0,横移电机3.4驱动,Y06,DO-06
,0,待机状态(指示灯),AutoRun_HddLed,0,192.168.201.61,0,待机状态(指示灯),Y01,DO-01
,0,运行状态(指示灯),RunSign_HddLed,1,192.168.201.61,0,运行状态(指示灯),Y02,DO-02
,0,故障状态(指示灯),Alarm_HddLed,2,192.168.201.61,0,故障状态(指示灯),Y03,DO-03
,0,驱动电机正转,DriveMotor_Run,3,192.168.201.61,0,驱动电机正转,Y04,DO-04
,0,横移电机1.2驱动,SidesWay12_DriveMotor,4,192.168.201.61,0,横移电机1.2驱动,Y05,DO-05
,0,横移电机3.4驱动,SidesWay34_DriveMotor,5,192.168.201.61,0,横移电机3.4驱动,Y06,DO-06
,4,移载4升降轴刹车ON,UpDownAxis_BreakOn,6,192.168.201.61,0,移载4升降轴刹车ON,Y07,DO-07
,4,移载4升降轴伺服ON,UpDownAxis_ServoOn,7,192.168.201.61,0,移载4升降轴伺服ON,Y08,DO-08
,,,,,,,,,
......@@ -68,13 +102,13 @@ DO,0,横移电机3.4驱动,SidesWay34_DriveMotor,5,192.168.201.61,0,横移电机3.4驱动,Y0
,,,,13,192.168.201.63,0,,X44,DI-44
,,,,14,192.168.201.63,0,,X45,DI-45
,,,,15,192.168.201.63,0,,X46,DI-46
DO,0,阻挡气缸0-1下降SOL,StopCylinder_Down1,0,192.168.201.63,0,阻挡气缸0-1下降SOL,Y11,DO-11
DO,0,阻挡气缸0-2下降SOL,StopCylinder_Down2,1,192.168.201.63,0,阻挡气缸0-2下降SOL,Y12,DO-12
DO,0,横移轨道1阻挡下降SOL,SidesWay1_StopCylinderDown,2,192.168.201.63,0,横移轨道1阻挡下降SOL,Y13,DO-13
,0,阻挡气缸0-1下降SOL,StopCylinder_Down1,0,192.168.201.63,0,阻挡气缸0-1下降SOL,Y11,DO-11
,0,阻挡气缸0-2下降SOL,StopCylinder_Down2,1,192.168.201.63,0,阻挡气缸0-2下降SOL,Y12,DO-12
,0,横移轨道1阻挡下降SOL,SidesWay1_StopCylinderDown,2,192.168.201.63,0,横移轨道1阻挡下降SOL,Y13,DO-13
,1,移载1阻挡气缸1-1下降SOL,StopCylinder_Down1,3,192.168.201.63,0,移载1阻挡气缸1-1下降SOL,Y14,DO-14
,1,移载1阻挡气缸1-2下降SOL,StopCylinder_Down2,4,192.168.201.63,0,移载1阻挡气缸1-2下降SOL,Y15,DO-15
DO,0,上料工位顶升气缸上升SOL,InStore_TopCylinder_Up,5,192.168.201.63,0,上料工位顶升气缸上升SOL,Y16,DO-16
DO,0,上料工位顶升气缸下降SOL,InStore_TopCylinder_Down,6,192.168.201.63,0,上料工位顶升气缸下降SOL,Y17,DO-17
,0,上料工位顶升气缸上升SOL,InStore_TopCylinder_Up,5,192.168.201.63,0,上料工位顶升气缸上升SOL,Y16,DO-16
,0,上料工位顶升气缸下降SOL,InStore_TopCylinder_Down,6,192.168.201.63,0,上料工位顶升气缸下降SOL,Y17,DO-17
,1,移载1顶升气缸1上升SOL,TopCylinder_UP,7,192.168.201.63,0,移载1顶升气缸1上升SOL,Y18,DO-18
,1,移载1顶升气缸1下降SOL,TopCylinder_Down,8,192.168.201.63,0,移载1顶升气缸1下降SOL,Y19,DO-19
,1,移载1前后气缸1前进SOL,BeforeAfterCylinder_Before,9,192.168.201.63,0,移载1前后气缸1前进SOL,Y20,DO-20
......@@ -103,7 +137,7 @@ DO,0,上料工位顶升气缸下降SOL,InStore_TopCylinder_Down,6,192.168.201.63,0,上料工
,,,,15,192.168.201.64,0,,X66,DI-66
,2,移载2阻挡气缸2-1下降SOL,StopCylinder_Down1,0,192.168.201.64,0,移载2阻挡气缸2-1下降SOL,Y31,DO-31
,2,移载2阻挡气缸2-2下降SOL,StopCylinder_Down2,1,192.168.201.64,0,移载2阻挡气缸2-2下降SOL,Y32,DO-32
DO,0,横移轨道3阻挡下降SOL,SidesWay3_StopCylinderDown,2,192.168.201.64,0,横移轨道3阻挡下降SOL,Y33,DO-33
,0,横移轨道3阻挡下降SOL,SidesWay3_StopCylinderDown,2,192.168.201.64,0,横移轨道3阻挡下降SOL,Y33,DO-33
,3,移载3阻挡气缸3-1下降SOL,StopCylinder_Down1,3,192.168.201.64,0,移载3阻挡气缸3-1下降SOL,Y34,DO-34
,3,移载3阻挡气缸3-2下降SOL,StopCylinder_Down2,4,192.168.201.64,0,移载3阻挡气缸3-2下降SOL,Y35,DO-35
,2,移载2顶升气缸2上升SOL,TopCylinder_UP,5,192.168.201.64,0,移载2顶升气缸2上升SOL,Y36,DO-36
......@@ -114,8 +148,8 @@ DO,0,横移轨道3阻挡下降SOL,SidesWay3_StopCylinderDown,2,192.168.201.64,0,横移轨道
,2,移载2上下气缸2下降SOL,UpDownCylinder_Down,10,192.168.201.64,0,移载2上下气缸2下降SOL,Y41,DO-41
,2,移载2夹料气缸2夹紧SOL,ClampCylinder_Slack,11,192.168.201.64,0,移载2夹料气缸2夹紧SOL,Y42,DO-42
,2,移载2夹料气缸2放松SOL,ClampCylinder_Tighten,12,192.168.201.64,0,移载2夹料气缸2放松SOL,Y43,DO-43
DO,0,横移轨道3.4顶升气缸上升SOL,SidesWay34_TopCylinder_Up,13,192.168.201.64,0,横移轨道3.4顶升气缸上升SOL,Y44,DO-44
DO,0,横移轨道3.4顶升气缸下降SOL,SidesWay34_TopCylinder_Down,14,192.168.201.64,0,横移轨道3.4顶升气缸下降SOL,Y45,DO-45
,0,横移轨道3.4顶升气缸上升SOL,SidesWay34_TopCylinder_Up,13,192.168.201.64,0,横移轨道3.4顶升气缸上升SOL,Y44,DO-44
,0,横移轨道3.4顶升气缸下降SOL,SidesWay34_TopCylinder_Down,14,192.168.201.64,0,横移轨道3.4顶升气缸下降SOL,Y45,DO-45
,,,,15,192.168.201.64,0,,Y46,DO-46
,,,,,,,,,
,3,阻挡3-1夹具检测,TrayCheck,0,192.168.201.65,0,阻挡3-1夹具检测,X71,DI-71
......@@ -131,13 +165,13 @@ DO,0,横移轨道3.4顶升气缸下降SOL,SidesWay34_TopCylinder_Down,14,192.168.201.64,0,
,3,移载3上下气缸3下降端,UpDownCylinder_Down,10,192.168.201.65,0,移载3上下气缸3下降端,X81,DI-81
,3,移载3夹料气缸3夹紧端,ClampCylinder_Slack,11,192.168.201.65,0,移载3夹料气缸3夹紧端,X82,DI-82
,3,移载3夹料气缸3放松端,ClampCylinder_Tighten,12,192.168.201.65,0,移载3夹料气缸3放松端,X83,DI-83
DI,0,横移轨道3阻挡夹具检测,SidesWay3_StopFixtureCheck,13,192.168.201.65,0,横移轨道3阻挡夹具检测,X84,DI-84
DI,0,横移轨道3夹具检测,SidesWay3_FixtureCheck,14,192.168.201.65,0,横移轨道3夹具检测,X85,DI-85
DI,0,横移轨道3顶升气缸上升端,SidesWay3_TopCylinder_Up,15,192.168.201.65,0,横移轨道3顶升气缸上升端,X86,DI-86
DI,0,横移轨道3顶升气缸下降端,SidesWay3_TopCylinder_Down,16,192.168.201.65,0,横移轨道3顶升气缸下降端,X87,DI-87
DI,0,横移轨道4夹具检测,SidesWay4_FixtureCheck,17,192.168.201.65,0,横移轨道4夹具检测,X88,DI-88
DI,0,横移轨道4顶升气缸上升端,SidesWay4_TopCylinder_Up,18,192.168.201.65,0,横移轨道4顶升气缸上升端,X89,DI-89
DI,0,横移轨道4顶升气缸下降端,SidesWay4_TopCylinder_Down,19,192.168.201.65,0,横移轨道4顶升气缸下降端,X90,DI-90
,0,横移轨道3阻挡夹具检测,SidesWay3_StopFixtureCheck,13,192.168.201.65,0,横移轨道3阻挡夹具检测,X84,DI-84
,0,横移轨道3夹具检测,SidesWay3_FixtureCheck,14,192.168.201.65,0,横移轨道3夹具检测,X85,DI-85
,0,横移轨道3顶升气缸上升端,SidesWay3_TopCylinder_Up,15,192.168.201.65,0,横移轨道3顶升气缸上升端,X86,DI-86
,0,横移轨道3顶升气缸下降端,SidesWay3_TopCylinder_Down,16,192.168.201.65,0,横移轨道3顶升气缸下降端,X87,DI-87
,0,横移轨道4夹具检测,SidesWay4_FixtureCheck,17,192.168.201.65,0,横移轨道4夹具检测,X88,DI-88
,0,横移轨道4顶升气缸上升端,SidesWay4_TopCylinder_Up,18,192.168.201.65,0,横移轨道4顶升气缸上升端,X89,DI-89
,0,横移轨道4顶升气缸下降端,SidesWay4_TopCylinder_Down,19,192.168.201.65,0,横移轨道4顶升气缸下降端,X90,DI-90
,,,,20,192.168.201.65,0,,X91,DI-91
,,,,21,192.168.201.65,0,,X92,DI-92
,,,,22,192.168.201.65,0,,X93,DI-93
......@@ -162,8 +196,8 @@ DI,0,横移轨道4顶升气缸下降端,SidesWay4_TopCylinder_Down,19,192.168.201.65,0,横移
,4,移载4前后气缸4后退端,BeforeAfterCylinder_After,8,192.168.201.66,0,移载4前后气缸4后退端,X99,DI-99
,4,移载4夹料气缸4夹紧端,ClampCylinder_Slack,9,192.168.201.66,0,移载4夹料气缸4夹紧端,X100,DI-100
,4,移载4夹料气缸4放松端,ClampCylinder_Tighten,10,192.168.201.66,0,移载4夹料气缸4放松端,X101,DI-101
DI,0,出料工位夹具检测,OutStore_FixtureCheck,11,192.168.201.66,0,出料工位夹具检测,X102,DI-102
DI,0,出料工位料盘检测,OutStore_TrayCheck,12,192.168.201.66,0,出料工位料盘检测,X103,DI-103
,0,出料工位夹具检测,OutStore_FixtureCheck,11,192.168.201.66,0,出料工位夹具检测,X102,DI-102
,0,出料工位料盘检测,OutStore_TrayCheck,12,192.168.201.66,0,出料工位料盘检测,X103,DI-103
,,,,13,192.168.201.66,0,,X104,DI-104
,,,,14,192.168.201.66,0,,X105,DI-105
,,,,15,192.168.201.66,0,,X106,DI-106
......@@ -173,8 +207,8 @@ DI,0,出料工位料盘检测,OutStore_TrayCheck,12,192.168.201.66,0,出料工位料盘检测,X1
,4,移载4前后气缸4后退SOL,BeforeAfterCylinder_After,3,192.168.201.66,0,移载4前后气缸4后退SOL,Y64,DO-64
,4,移载4夹料气缸4夹紧SOL,ClampCylinder_Slack,4,192.168.201.66,0,移载4夹料气缸4夹紧SOL,Y65,DO-65
,4,移载4夹料气缸4放松SOL,ClampCylinder_Tighten,5,192.168.201.66,0,移载4夹料气缸4放松SOL,Y66,DO-66
DO,0,横移轨道1.2顶升气缸上升SOL,SidesWay12_TopCylinder_Up,6,192.168.201.66,0,横移轨道1.2顶升气缸上升SOL,Y67,DO-67
DO,0,横移轨道1.2顶升气缸下降SOL,SidesWay12_TopCylinder_Down,7,192.168.201.66,0,横移轨道1.2顶升气缸下降SOL,Y68,DO-68
,0,横移轨道1.2顶升气缸上升SOL,SidesWay12_TopCylinder_Up,6,192.168.201.66,0,横移轨道1.2顶升气缸上升SOL,Y67,DO-67
,0,横移轨道1.2顶升气缸下降SOL,SidesWay12_TopCylinder_Down,7,192.168.201.66,0,横移轨道1.2顶升气缸下降SOL,Y68,DO-68
,4,移载4阻挡气缸4-1下降SOL,StopCylinder_Down1,8,192.168.201.66,0,移载4阻挡气缸4-1下降SOL,Y69,DO-69
,4,移载4阻挡气缸4-2下降SOL,StopCylinder_Down2,9,192.168.201.66,0,移载4阻挡气缸4-2下降SOL,Y70,DO-70
,,,,10,192.168.201.66,0,,Y71,DO-71
......
......@@ -25,6 +25,7 @@ namespace OnlineStore.DeviceLibrary
public static Dictionary<int, MoveEquip_Config> moveECMap = null;
public static Dictionary<int, FeedingEquip_Config> feedingECMap = null;
public static Dictionary<int, ProvidingEquip_Config> providingECMap = null;
public static Dictionary<int, DischargeLine_Config> disChargeLineMap = null;
public LineManager()
{
}
......@@ -56,6 +57,7 @@ namespace OnlineStore.DeviceLibrary
moveECMap = new Dictionary<int, MoveEquip_Config>();
feedingECMap = new Dictionary<int, FeedingEquip_Config>();
providingECMap = new Dictionary<int, ProvidingEquip_Config>();
disChargeLineMap = new Dictionary<int, DischargeLine_Config>();
string server = ConfigAppSettings.GetValue(Setting_Init.http_server);
if (server.Equals(""))
{
......@@ -114,7 +116,20 @@ namespace OnlineStore.DeviceLibrary
moveConfig.SetIO( subType);
providingECMap.Add(i, moveConfig);
}
Line = new LineBean(Config, moveECMap,feedingECMap,providingECMap);
int dislineCount = ConfigAppSettings.GetIntValue(Setting_Init.Line_dischargeLine_count);
string dischargeLineConfig = ConfigAppSettings.GetValue(Setting_Init.ConfigPath_DischargeLine);
for (int i = 1; i <= dislineCount; i++)
{
int subType = 300 + i;
string config = appPath + dischargeLineConfig.Replace(".csv", "_" + i + ".csv");
DischargeLine_Config moveConfig = CSVConfigReader.LoadDischargeLineConfig(subType, config);
moveConfig.SetIO(subType);
disChargeLineMap.Add(i, moveConfig);
}
Line = new LineBean(Config, moveECMap,feedingECMap,providingECMap,disChargeLineMap);
LogUtil.info(LOGGER, "加载 完成!");
return Line;
}
......@@ -218,5 +233,27 @@ namespace OnlineStore.DeviceLibrary
LOGGER.Error("出错:", ex);
}
}
public static void SaveDischargeLineConfig(DischargeLine_Config config)
{
try
{
//位置配置到文件中
string appPath = Application.StartupPath;
string moveEquipConfig = ConfigAppSettings.GetValue(Setting_Init.ConfigPath_DischargeLine);
int id = config.Id - 300;
string configStr = appPath + moveEquipConfig.Replace(".csv", "_" + id + ".csv");
disChargeLineMap[config.Id] = config;
bool result = CSVConfigReader.SaveConfig(configStr, config, typeof(DischargeLine_Config));
if (!result)
{
LOGGER.Error("保存配置文件失败:" + configStr);
}
}
catch (Exception ex)
{
LOGGER.Error("出错:", ex);
}
}
}
}
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace OnlineStore.DeviceLibrary
{
/// <summary>
/// 流水线自动料仓-出料装置类
/// </summary>
public partial class DischargeLine : EquipBase
{
public DischargeLine_Config Config;
public DischargeLine(string cid, DischargeLine_Config config)
{
baseConfig = config;
this.DeviceID = config.Id;
this.Config = config;
IsDebug = config.IsDebug.Equals(1);
baseConfig = config;
Name = (" " + "_出料皮带线_" + DeviceID % 10 + " ").ToUpper();
Init();
UseAxis = false;
MoveInfo = new LineMoveInfo(DeviceID, "出料皮带线-" + DeviceID + "-MoveInfo");
SecondMoveInfo = new LineMoveInfo(DeviceID, "出料皮带线-" + DeviceID + "-SecondMoveInfo");
}
/// <summary>
/// 开始运行
/// </summary>
public override bool StartRun()
{
//preTrayNum = 0;
// currMoveTrayNum = 0;
mainTimer.Enabled = false;
MoveInfo.EndMove();
SecondMoveInfo.EndMove();
lineStatus = LineStatus.StoreOnline;
//TODO 调试时暂时注释
runStatus = LineRunStatus.HomeMoving;
return ReturnHome();
}
public bool StartDebugRun()
{
//preTrayNum = 0;
//currMoveTrayNum = 0;
mainTimer.Enabled = false;
MoveInfo.EndMove();
SecondMoveInfo.EndMove();
lineStatus = LineStatus.StoreOnline;
//TODO 调试时暂时注释
runStatus = LineRunStatus.HomeMoving;
bool result = ReturnHome();
if (result)
{
mainTimer.Enabled = true;
}
return result;
}
/// <summary>
/// 停止运行
/// </summary>
public override void StopRun()
{
// preTrayNum = 0;
// currMoveTrayNum = 0;
if (mainTimer != null)
{
mainTimer.Enabled = false;
}
StopMove();
//停止运行时,把所有IO 置零
IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.LOW);
IOMove(IO_Type.StopCylinder_Down2, IO_VALUE.LOW);
IOMove(IO_Type.TopCylinder_UP, IO_VALUE.LOW);
IOMove(IO_Type.TopCylinder_Down, IO_VALUE.LOW);
IOMove(IO_Type.BeforeAfterCylinder_Before, IO_VALUE.LOW);
IOMove(IO_Type.BeforeAfterCylinder_After, IO_VALUE.LOW);
IOMove(IO_Type.UpDownCylinder_Up, IO_VALUE.LOW);
IOMove(IO_Type.UpDownCylinder_Down, IO_VALUE.LOW);
IOMove(IO_Type.ClampCylinder_Slack, IO_VALUE.LOW);
IOMove(IO_Type.ClampCylinder_Tighten, IO_VALUE.LOW);
runStatus = LineRunStatus.Wait;
}
public override void TimerProcess()
{
if (isInPro)
{
return;
}
isInPro = true;
try
{
if (IsDebug)
{
isInPro = false;
return;
}
BusyMoveProcess();
//判断流水线打开了才可以运行
if (SecondMoveInfo.MoveType.Equals(LineMoveType.None))
{
LineBean lineBean = LineManager.Line;
if (lineBean.isCanProcessLine() && IOManager.IOValue(IO_Type.DriveMotor_Run, 0).Equals(IO_VALUE.HIGH) && lineBean.runStatus >= LineRunStatus.Runing && lineBean.IsSleep.Equals(false))
{
StartCheckFixture();
}
}
IOTimeOutProcess();
}
catch (Exception ex)
{
LogUtil.error(Name + "TimerProcess出错:" + ex.ToString());
}
isInPro = false;
}
/// <summary>
/// 出料装置原点返回
/// </summary>
public bool ReturnHome()
{
mainTimer.Stop();
alarmType = LineAlarmType.None;
runStatus = LineRunStatus.HomeMoving;
LogInfo("开始原点返回: (上下气缸回原点,阻挡气缸输入=0 )开始");
MoveInfo.NewMove(LineMoveType.ReturnHome);
//移载装置原点状态:顶升气缸下降端,前后气缸后退端,上下气缸上升端,夹料气缸放松端,阻挡气缸输入=0
CylinderMove(MoveInfo, IO_Type.UpDownCylinder_Down, IO_Type.UpDownCylinder_Up);
if (IsDebug)
{
IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.HIGH);
IOMove(IO_Type.StopCylinder_Down2, IO_VALUE.HIGH);
}
else
{
IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.LOW);
IOMove(IO_Type.StopCylinder_Down2, IO_VALUE.LOW);
}
return true;
}
/// <summary>
/// 出料装置重置
/// </summary>
public override bool Reset()
{
WarnMsg = "";
//如果正在出库中,需要减去托盘号
if (MoveInfo.MoveType.Equals(LineMoveType.OutStore))
{
//LogInfo("重置之前发现在出库执行中,减去托盘数;");
//减去需要的盘数
//TrayManager.DelNeedEmptyTrayNum();
MoveInfo.EndMove();
}
alarmType = LineAlarmType.None;
//重置时清理盘号,从头开始判断
// preTrayNum = 0;
// currMoveTrayNum = 0;
LogInfo("开始重置:清零上一个托盘号,(上下气缸回原点,阻挡气缸输入=0 )开始;");
runStatus = LineRunStatus.Reset;
SecondMoveInfo.EndMove();
MoveInfo.NewMove(LineMoveType.Reset);
CylinderMove(MoveInfo, IO_Type.UpDownCylinder_Down, IO_Type.UpDownCylinder_Up);
if (IsDebug)
{
IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.HIGH);
IOMove(IO_Type.StopCylinder_Down2, IO_VALUE.HIGH);
}
else
{
IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.HIGH);
IOMove(IO_Type.StopCylinder_Down2, IO_VALUE.LOW);
}
isInPro = false;
return true;
}
/// <summary>
/// 重置处理
/// </summary>
protected override void ResetProcess()
{
if (MoveInfo.IsInWait)
{
CheckWait(MoveInfo);
}
else if (SecondMoveInfo.IsInWait)
{
CheckWait(SecondMoveInfo);
}
if (!MoveInfo.IsInWait && !SecondMoveInfo.IsInWait)
{
//流水线各装置复原位,夹料气缸状态不变
//阻挡气缸全部=0
//上下气缸上升,、
//上升到位,顶升气缸下降,前后气缸回退
//复位时夹紧气缸需要发送,不然后面出入库会有问题
switch (MoveInfo.MoveStep)
{
case LineMoveStep.MH_UpDownHomeMove:
MoveInfo.NextMoveStep(LineMoveStep.MH_UpDownCylinder_Up);
LogInfo("重置: (上下轴原点返回完成,上下轴走到待机点 )开始");
// UpdownUpMove();
break;
case LineMoveStep.MH_UpDownCylinder_Up:
MoveInfo.NextMoveStep(LineMoveStep.MH_OtherCylinder_Back);
LogInfo("重置: (上升到位,顶升气缸下降,前后气缸回退 )开始");
CylinderMove(MoveInfo, IO_Type.TopCylinder_UP, IO_Type.TopCylinder_Down);
CylinderMove(MoveInfo, IO_Type.BeforeAfterCylinder_Before, IO_Type.BeforeAfterCylinder_After);
CylinderMove(MoveInfo, IO_Type.ClampCylinder_Slack, IO_Type.ClampCylinder_Tighten);
break;
case LineMoveStep.MH_OtherCylinder_Back:
LogInfo("重置完成!");
runStatus = LineRunStatus.Runing;
MoveInfo.EndMove();
SecondMoveInfo.EndMove();
break;
//TODO 需要继续之前的的出入库处理
//ContinueInOutStore();
default: break;
}
}
}
/// <summary>
/// 原点返回处理
/// </summary>
protected override void ReturnHomeProcess()
{
if (MoveInfo.IsInWait)
{
CheckWait(MoveInfo);
}
if (SecondMoveInfo.IsInWait)
{
CheckWait(SecondMoveInfo);
}
if (!MoveInfo.IsInWait && !SecondMoveInfo.IsInWait)
{
switch (MoveInfo.MoveStep)
{
case LineMoveStep.MH_UpDownHomeMove:
MoveInfo.NextMoveStep(LineMoveStep.MH_UpDownCylinder_Up);
LogInfo("原点返回: (上下轴原点返回完成,上下轴走到待机点 )开始");
// UpdownUpMove();
break;
case LineMoveStep.MH_UpDownCylinder_Up:
LogInfo("原点返回:(上升到位,顶升气缸下降,前后气缸回退 )开始");
MoveInfo.NextMoveStep(LineMoveStep.MH_OtherCylinder_Back);
CylinderMove(MoveInfo, IO_Type.TopCylinder_UP, IO_Type.TopCylinder_Down);
CylinderMove(MoveInfo, IO_Type.BeforeAfterCylinder_Before, IO_Type.BeforeAfterCylinder_After);
CylinderMove(MoveInfo, IO_Type.ClampCylinder_Slack, IO_Type.ClampCylinder_Tighten);
break;
case LineMoveStep.MH_OtherCylinder_Back:
MoveInfo.EndMove();
SecondMoveInfo.EndMove();
LogInfo("原点返回完成!");
runStatus = LineRunStatus.Runing;
//如果是调试模式,出料装置两个阻挡气缸落下,并且不再移动
if (IsDebug)
{
lineStatus = LineStatus.Debugging;
}
else
{
lineStatus = LineStatus.StoreOnline;
}
break;
default: break;
}
}
}
protected override void StopMoveProcess()
{
if (MoveInfo.IsInWait)
{
CheckWait(MoveInfo);
}
if (SecondMoveInfo.IsInWait)
{
CheckWait(SecondMoveInfo);
}
if (!MoveInfo.IsInWait && !SecondMoveInfo.IsInWait)
{
switch (MoveInfo.MoveStep)
{
//流水线各装置复原位,夹料气缸状态不变 //阻挡气缸全部=0 //上下气缸上升,、 //上升到位,顶升气缸下降,前后气缸回退
case LineMoveStep.MH_UpDownCylinder_Up:
{
MoveInfo.NextMoveStep(LineMoveStep.MH_OtherCylinder_Back);
LogInfo("停止运动: (上升到位,顶升气缸下降,前后气缸回退 )开始");
IOMove(IO_Type.UpDownCylinder_Up, IO_VALUE.LOW);
CylinderMove(MoveInfo, IO_Type.TopCylinder_UP, IO_Type.TopCylinder_Down);
CylinderMove(MoveInfo, IO_Type.BeforeAfterCylinder_Before, IO_Type.BeforeAfterCylinder_After);
break;
}
case LineMoveStep.MH_OtherCylinder_Back:
{
LogInfo("停止运行完成!");
runStatus = LineRunStatus.Runing;
MoveInfo.EndMove();
break;
}
default: break;
}
}
}
/// <summary>
/// 停止运动
/// </summary>
public override void StopMove()
{
//如果正在出库中,需要减去托盘号
if (MoveInfo.MoveType.Equals(LineMoveType.OutStore))
{
LogInfo("停止运动时出库执行中,减去托盘数;");
//减去需要的盘数
// TrayManager.DelNeedEmptyTrayNum();
MoveInfo.EndMove();
}
runStatus = LineRunStatus.Busy;
SecondMoveInfo.EndMove();
LogInfo("停止运动:(上下气缸上升端,阻挡气缸输入=0 )开始 ");
MoveInfo.NewMove(LineMoveType.StopMove);
MoveInfo.NextMoveStep(LineMoveStep.MH_UpDownCylinder_Up);
// UpdownUpMove();
IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.LOW);
IOMove(IO_Type.StopCylinder_Down2, IO_VALUE.LOW);
}
public override void StartInStoreMove(InOutParam param)
{
}
protected override void InStoreProcess()
{
}
}
}
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OnlineStore.DeviceLibrary
{
partial class DischargeLine
{
#region 托盘检测
private void StartCheckFixture()
{
int num = TrayManager.GetNum(DeviceID);
if (IOValue(IO_Type.StopCylinder_Check2).Equals(IO_VALUE.HIGH))
{
//托盘在两个阻挡内
if (num > 0)
{
SecondMoveInfo.NewMove(LineMoveType.CheckFixture);
CheckLog("托盘检测(流水线阻挡)SecondStoreMove:(MIO_03_StopCylinder2Down 阻挡气缸1-1上升)");
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_StopCylinder2Down);
IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.LOW);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Down1, IO_VALUE.LOW));
// SecondMoveInfo.EndStepWait();
}
else
{
LogUtil.error(Name + "检测到check4亮,但是为获取到托盘号,StartCheckFixture失败~");
}
}
else if (IOValue(IO_Type.StopCylinder_Check1).Equals(IO_VALUE.HIGH))
{
//托盘在第一个阻挡处
SecondMoveInfo.NewMove(LineMoveType.CheckFixture);
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_01_StopCylinder1Down);
CheckLog(" 托盘检测:料盘检测 SecondStoreMove(MIO_01_StopCylinder1Down阻挡气缸1-1下降 ,最多等待1秒)");
IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.HIGH);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Down1, IO_VALUE.HIGH));
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Fixture_Check_4, IO_VALUE.HIGH));
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1500));
}
}
private bool CheckIsNeedOutStore()
{
//TODO 判断是否是需要移栽出料的料盘
return false;
}
protected override void CheckFixtureProcess()
{
if (!LineManager.Line.isCanProcessLine())
{
return;
}
if (SecondMoveInfo.IsInWait)
{
CheckWait(SecondMoveInfo);
}
if (SecondMoveInfo.IsInWait)
{
return;
}
#region 托盘检测
if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_01_StopCylinder1Down))
{
CheckLog("托盘检测(流水线阻挡)SecondStoreMove:(MIO_02_FixtureCheck 阻挡气缸1-1上升,等待 阻挡2托盘检测=1)");
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_StopCylinder2Down);
IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.LOW);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Down1, IO_VALUE.LOW));
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Check2, IO_VALUE.HIGH));
}
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_02_FixtureCheck))
{
CheckLog("托盘检测(流水线阻挡)SecondStoreMove:(MIO_03_StopCylinder2Down 阻挡气缸1-1上升)");
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_StopCylinder2Down);
IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.LOW);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Down1, IO_VALUE.LOW));
// SecondMoveInfo.EndStepWait();
}
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_03_StopCylinder2Down))
{
CheckLog("托盘检测(流水线阻挡)SecondStoreMove:(MIO_04_Wait ,等待编码信号稳定)");
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_04_Wait);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(500));
}
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_04_Wait))
{
try
{
//判断是否需要顶升
bool isNeed = false;
//此处先对托盘号进行验证
currMoveTrayNum = TrayManager.GetNum(DeviceID);
bool isFull = TrayManager.IsFixTureFull(currMoveTrayNum);
if (TrayManager.RightTrayCode(currMoveTrayNum, preTrayNum, false))
{
//出料中,需要拦盘
if (CheckIsNeedOutStore())
{
//preTrayNum = currMoveTrayNum;
SecondMoveInfo.MoveParam = new InOutParam(currMoveTrayNum);
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_05_CodeRember);
SecondMoveInfo.EndStepWait();
return;
}
}
else
{
string msg = Name + " 托盘顺序错乱,上个托盘号【" + preTrayNum + "】当前托盘号 【" + currMoveTrayNum + "】最大盘号【" + TrayManager.MaxTrayNum + "】";
TrayManager.UpdateTrayNumError(DeviceID, msg);
LogUtil.error(msg);
return;
}
if (isNeed)
{
CheckLog("托盘检测(流水线阻挡)SecondStoreMove:(MIO_05_WaitTime 等待一秒钟)");
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_05_WaitTime);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(200));
}
else
{
LogInfo(SecondMoveInfo.MoveNum + "***************上个托盘号【" + preTrayNum + "】,当前" + (isFull ? "有料托盘" : "空托盘") + "【" + currMoveTrayNum + "】没有出出料任务,放盘通过~");
// preTrayNum = currMoveTrayNum;
if (TrayManager.ErrorStoreId.Equals(DeviceID))
{
TrayManager.UpdateTrayNumError(-1, "");
}
CheckLog("托盘放行 SecondStoreMove:(MO_07_WaitCanGo ,移栽2,需要判断是否可以放盘通过,最多等待10000)");
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_07_WaitCanGo);
//if (DeviceID.Equals(2))
//{
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(10000));
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitSideWay());
// SecondMoveInfo.OneWaitCanEndStep = true;
//}
}
}
catch (Exception ex)
{
LogUtil.error("判断托盘是否需要顶升出错:" + ex.ToString());
}
}
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_05_WaitTime))
{
CheckLog("托盘检测(流水线阻挡)SecondStoreMove:(MIO_06_TopCylinderUp 顶升气缸上 升 )");
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_06_TopCylinderUp);
CylinderMove(SecondMoveInfo, IO_Type.TopCylinder_Down, IO_Type.TopCylinder_UP);
}
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_06_TopCylinderUp))
{
CheckLog("托盘检测(流水线阻挡)SecondStoreMove:(MIO_07_TopCylinderUpWait ,顶升气缸上升时等待1秒钟,再下降)");
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_07_TopCylinderUpWait);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
}
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_07_TopCylinderUpWait))
{
CheckLog("托盘检测(流水线阻挡)*************** 托盘号【" + currMoveTrayNum + "】");
//托盘号正确
//preTrayNum = num;
bool isNeedMove = false;
//判断盘是空盘,空盘并且编号正确才需要放料盘过去
if (CheckIsNeedOutStore())
{
SecondMoveInfo.MoveParam = new InOutParam(currMoveTrayNum);
isNeedMove = true;
LogInfo(SecondMoveInfo.MoveNum + "*************** 托盘号【" + currMoveTrayNum + "】可以放出料托盘,正在出料中,移栽料盘");
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_05_CodeRember);
SecondMoveInfo.EndStepWait();
}
else
{
//preTrayNum = num;
if (TrayManager.ErrorStoreId.Equals(DeviceID))
{
TrayManager.UpdateTrayNumError(-1, "");
}
CheckLog("托盘检测 SecondStoreMove:(MO_09_TopCylinder_Down ,托盘号【" + currMoveTrayNum + "】,直接放盘通过,顶升气缸下降)");
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_06_TopCylinder_Down);
CylinderMove(SecondMoveInfo, IO_Type.TopCylinder_UP, IO_Type.TopCylinder_Down);
}
}
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_08_WaitInStore) && MoveInfo.MoveType.Equals(LineMoveType.None))
{
CheckLog("托盘放行 SecondStoreMove:(MIO_09_WaitLetFixtureGo ,等待移栽完成后放开阻挡)");
StartOutStoreMove(SecondMoveInfo.MoveParam);
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_09_WaitLetFixtureGo);
}
#endregion
#region 不需要出出料,直接放行
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_06_TopCylinder_Down))
{
CheckLog("托盘放行 SecondStoreMove:(MO_07_WaitCanGo ,移栽2,需要判断是否可以放盘通过,最多等待10000)");
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_07_WaitCanGo);
if (DeviceID.Equals(2))
{
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(10000));
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitSideWay());
SecondMoveInfo.OneWaitCanEndStep = true;
}
}
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_07_WaitCanGo))
{
CheckLog("托盘放行 SecondStoreMove:(MO_10_StopCylinder2_Down ,阻挡气缸1-2下降)");
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_10_StopCylinder2_Down);
IOMove(IO_Type.StopCylinder_Down2, IO_VALUE.HIGH);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Down2, IO_VALUE.HIGH));
// SecondMoveInfo.EndStepWait();
}
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_10_StopCylinder2_Down))
{
CheckLog("托盘放行 SecondStoreMove:(MO_11_Tray_Check , 阻挡2托盘检测=0), 延时2秒)");
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_11_Tray_Check);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Check2, IO_VALUE.LOW));
}
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_11_Tray_Check))
{
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_12_StopCylinder_Back);
CheckLog("托盘放行 SecondStoreMove:(MO_12_StopCylinder_Back , 阻挡气缸1-2上升 )");
IOMove(IO_Type.StopCylinder_Down2, IO_VALUE.LOW);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Down2, IO_VALUE.LOW));
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(200));
}
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_12_StopCylinder_Back))
{
preTrayNum = currMoveTrayNum;
CheckLog("托盘放行 SecondStoreMove:(托盘放行结束) ");
// IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.HIGH);
SecondMoveInfo.EndMove();
}
#endregion
}
#endregion
#region 料盘移栽处理
public override bool StartOutStoreMove(InOutParam param)
{
string posId = param != null ? param.PosId : "";
//调试模式移栽装置不需要有操作
if (IsDebug)
{
LogInfo("需要出料【" + posId + "】处于调试模式,暂时不再进行出出料操作");
return false;
}
if (runStatus.Equals(LineRunStatus.Runing))
{
runStatus = LineRunStatus.Busy;
lineStatus = LineStatus.OutStoreExecute;
MoveInfo.MoveParam = param;
MoveInfo.NewMove(LineMoveType.OutStore);
LogInfo("出料【" + posId + "】处理(移栽):(PO_01_UpDownCylinderDown,上下气缸1下降)");
MoveInfo.NextMoveStep(LineMoveStep.PO_01_UpDownCylinderDown);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
CylinderMove(MoveInfo, IO_Type.UpDownCylinder_Up, IO_Type.UpDownCylinder_Down);
return true;
}
else
{
LogUtil.error(Name + " 启动出料【" + posId + "】 失败,当前 storeStatus=" + runStatus);
return false;
}
}
protected override void OutStoreProcess()
{
if (MoveInfo.IsInWait)
{
CheckWait(MoveInfo);
}
if (SecondMoveInfo.IsInWait)
{
CheckWait(SecondMoveInfo);
}
if (MoveInfo.IsInWait)
{
return;
}
string posId = MoveInfo.MoveParam != null ? MoveInfo.MoveParam.PosId : "";
if (MoveInfo.MoveStep.Equals(LineMoveStep.PO_01_UpDownCylinderDown))
{
InStoreLog("出料:(PO_02_UpDownCylinderDownWait, 编码与仓位一致,上下气缸1下降后等待0.3秒再夹紧,防止没有下降到位就夹紧");
MoveInfo.NextMoveStep(LineMoveStep.PO_02_UpDownCylinderDownWait);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(300));
}
//只有当BOX可以进行出出料时,移栽物品,防止卡住
else if (MoveInfo.MoveStep.Equals(LineMoveStep.PO_02_UpDownCylinderDownWait))
{
InStoreLog("出料:(PO_02_UpDownCylinderDownWait,夹料气缸夹紧)");
MoveInfo.NextMoveStep(LineMoveStep.PO_03_ClampCylinderSlack);
CylinderMove(MoveInfo, IO_Type.ClampCylinder_Tighten, IO_Type.ClampCylinder_Slack);
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.PO_03_ClampCylinderSlack))
{
InStoreLog("出料:(PO_04_UpDownCylinderUp,上下气缸上升)");
MoveInfo.NextMoveStep(LineMoveStep.PO_04_UpDownCylinderUp);
CylinderMove(MoveInfo, IO_Type.UpDownCylinder_Down, IO_Type.UpDownCylinder_Up);
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.PO_04_UpDownCylinderUp))
{
int num = MoveInfo.MoveParam.TrayNumber;
MoveInfo.NextMoveStep(LineMoveStep.PO_05_WaitBox);
LogInfo("出料PO_05_WaitBox【" + posId + "】处理(等待可以移栽) 更新盘号【" + num + "】为空盘");
MoveInfo.WaitList.Add(WaitResultInfo.WaitBoxCanReviceTray());
TrayManager.UpdateFixtureValue(num, false, 0);
//阻挡气缸移动
InStoreLog("放托盘(放开阻挡):SecondStoreMove=MO_09_TopCylinder_Down 物品已移走,顶升气缸1下降)");
SecondMoveInfo.NewMove(LineMoveType.CheckFixture);
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_06_TopCylinder_Down);
CylinderMove(SecondMoveInfo, IO_Type.TopCylinder_UP, IO_Type.TopCylinder_Down);
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.PO_05_WaitBox))
{
InStoreLog("出料:(PO_06_BeforeAfterCylinderBefore,前后气缸前进)");
MoveInfo.NextMoveStep(LineMoveStep.PO_06_BeforeAfterCylinderBefore);
CylinderMove(MoveInfo, IO_Type.BeforeAfterCylinder_After, IO_Type.BeforeAfterCylinder_Before);
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.PO_06_BeforeAfterCylinderBefore))
{
InStoreLog("出料:(PO_07_UpDownCylinderDown ,上下气缸下降)");
MoveInfo.NextMoveStep(LineMoveStep.PO_07_UpDownCylinderDown);
CylinderMove(MoveInfo, IO_Type.UpDownCylinder_Up, IO_Type.UpDownCylinder_Down);
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.PO_07_UpDownCylinderDown))
{
InStoreLog("出料: (PO_08_ClampCylinderTighten,夹料气缸放松)");
MoveInfo.NextMoveStep(LineMoveStep.PO_08_ClampCylinderTighten);
CylinderMove(MoveInfo, IO_Type.ClampCylinder_Slack, IO_Type.ClampCylinder_Tighten);
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.PO_08_ClampCylinderTighten))
{
InStoreLog("出料:(PO_09_UpdownCylinderUp,上下气缸上升)");
MoveInfo.NextMoveStep(LineMoveStep.PO_09_UpdownCylinderUp);
CylinderMove(MoveInfo, IO_Type.UpDownCylinder_Down, IO_Type.UpDownCylinder_Up);
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.PO_09_UpdownCylinderUp))
{
InStoreLog("出料:(PO_10_BeforeAfterCylinderAfter,前后气缸后退,等待4000 )");
MoveInfo.NextMoveStep(LineMoveStep.PO_10_BeforeAfterCylinderAfter);
CylinderMove(MoveInfo, IO_Type.BeforeAfterCylinder_Before, IO_Type.BeforeAfterCylinder_After);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(4000));
}
else if( MoveInfo.MoveStep.Equals(LineMoveStep.PO_10_BeforeAfterCylinderAfter))
{
LogInfo("出料【" + posId + "】处理完成!");
runStatus = LineRunStatus.Runing;
lineStatus = LineStatus.StoreOnline;
MoveInfo.EndMove();
}
}
#endregion
private void CheckLog(string msg)
{
LogUtil.debug(Name + msg);
}
private void InStoreLog(string msg)
{
string posId = MoveInfo.MoveParam != null ? MoveInfo.MoveParam.PosId : "";
LogUtil.info(Name + "【" + posId + "】" + msg);
}
private void OutStoreLog(string msg)
{
string posId = MoveInfo.MoveParam != null ? MoveInfo.MoveParam.PosId : "";
LogUtil.info(Name + "【" + posId + "】" + msg);
}
}
}
......@@ -40,6 +40,7 @@ namespace OnlineStore.DeviceLibrary
public Dictionary <int,FeedingEquip> FeedingEquipMap { get; set; }
public Dictionary<int, ProvidingEquip> ProvidingEquipMap { get; set; }
public Dictionary<int, DischargeLine> DisLineMap { get; set; }
/// <summary>
/// 流水线配置
......@@ -48,7 +49,8 @@ namespace OnlineStore.DeviceLibrary
private bool canStart = false;
public LineBean(Line_Config lineConfig, Dictionary<int, MoveEquip_Config> configList,Dictionary<int,FeedingEquip_Config> feedMap,Dictionary<int,ProvidingEquip_Config> providMap)
public LineBean(Line_Config lineConfig, Dictionary<int, MoveEquip_Config> configList,Dictionary<int,FeedingEquip_Config> feedMap,
Dictionary<int,ProvidingEquip_Config> providMap,Dictionary<int,DischargeLine_Config> disLineMap)
{
if (lineConfig.IOSingle_TimerOut <= 0)
{
......@@ -68,7 +70,7 @@ namespace OnlineStore.DeviceLibrary
MoveEquipMap = new Dictionary<int, MoveEquip>();
FeedingEquipMap = new Dictionary<int, FeedingEquip>();
ProvidingEquipMap = new Dictionary<int, ProvidingEquip>();
DisLineMap = new Dictionary<int, DischargeLine>();
List<string> ioList = new List<string>();
AddDeviceName(ioList, Config.IOIPList);
......@@ -93,6 +95,13 @@ namespace OnlineStore.DeviceLibrary
AddDeviceName(ioList, config.IOIPList);
ProvidingEquipMap.Add(config.Id, equip);
}
foreach (DischargeLine_Config config in disLineMap.Values)
{
DischargeLine equip = new DischargeLine(lineConfig.CID, config);
AddDeviceName(ioList, config.IOIPList);
DisLineMap.Add(config.Id, equip);
}
IOManager.Init();
//先初始化设备
......
......@@ -51,6 +51,7 @@
<Compile Include="storeConfig\ConfigProAttribute.cs" />
<Compile Include="storeConfig\config\Line_Config.cs" />
<Compile Include="storeConfig\config\FeedingEquip_Config.cs" />
<Compile Include="storeConfig\config\DischargeLine_Config.cs" />
<Compile Include="storeConfig\config\ProvidingEquip_Config.cs" />
<Compile Include="storeConfig\config\MoveEquip_Config.cs" />
<Compile Include="storeConfig\config\StoreType.cs" />
......
......@@ -140,6 +140,14 @@ namespace OnlineStore.LoadCSVLibrary
return (Line_Config)LoadConfig(config);
}
public static DischargeLine_Config LoadDischargeLineConfig(int storeId, string filePath)
{
DischargeLine_Config config = new DischargeLine_Config(storeId, storeId + "_DischargeLine", "", filePath);
return (DischargeLine_Config)LoadConfig(config);
}
public static MoveEquip_Config LoadMoveConfig(int storeId, string filePath)
{
MoveEquip_Config config = new MoveEquip_Config(storeId, storeId + "_MoveEquip", "", filePath);
......
using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace OnlineStore.LoadCSVLibrary
{
public class DischargeLine_Config : StoreConfig
{
public DischargeLine_Config()
: base()
{
}
public DischargeLine_Config(int id, string cid, string type, string filepath)
: base(id, cid, type, filepath)
{
}
/// <summary>
/// 设备是否处于调试状态(1=调试,0=正常)
/// </summary>
[ConfigProAttribute("IsDebug")]
public int IsDebug { get; set; }
}
}
......@@ -79,14 +79,7 @@ namespace OnlineStore.LoadCSVLibrary
/// DI 0 上料工位夹具检测0-4 Fixture_Check_4 11 上料工位夹具检测0-4 X12 DI-12
/// </summary>
public static string Fixture_Check_4 = "Fixture_Check_4";
///// <summary>
///// DI 0 上料工位顶升气缸上升端 InStore_TopCylinder_Up 12 上料工位顶升气缸上升端 X13 DI-13
///// </summary>
//public static string InStore_TopCylinder_Up = "InStore_TopCylinder_Up";
///// <summary>
///// DI 0 上料工位顶升气缸下降端 InStore_TopCylinder_Down 13 上料工位顶升气缸下降端 X14 DI-14
///// </summary>
//public static string InStore_TopCylinder_Down = "InStore_TopCylinder_Down";
/// <summary>
/// DI 0 横移轨道1阻挡夹具检测 SidesWay1_StopFixtureCheck 14 横移轨道1阻挡夹具检测 X15 DI-15
/// </summary>
......@@ -163,75 +156,75 @@ namespace OnlineStore.LoadCSVLibrary
/// </summary>
public static string StopCylinder_Down2 = "StopCylinder_Down2";
/// <summary>
/// DO 0 横移轨道1阻挡下降SOL SidesWay1_StopCylinderDown 18 横移轨道1阻挡下降SOL Y13 DO-13
/// DO 0 横移轨道1阻挡下降SOL SidesWay1_StopCylinderDown DO-13
/// </summary>
public static string SidesWay1_StopCylinderDown = "SidesWay1_StopCylinderDown";
/// <summary>
/// DO 0 上料工位顶升气缸上升SOL InStore_TopCylinder_Up 21 上料工位顶升气缸上升SOL Y16 DO-16
/// DO 0 上料工位顶升气缸上升SOL InStore_TopCylinder_Up DO-16
/// </summary>
public static string InStore_TopCylinder_Up = "InStore_TopCylinder_Up";
/// <summary>
/// DO 0 上料工位顶升气缸下降SOL InStore_TopCylinder_Down 22 上料工位顶升气缸下降SOL Y17 DO-17
/// DO 0 上料工位顶升气缸下降SOL InStore_TopCylinder_Down DO-17
/// </summary>
public static string InStore_TopCylinder_Down = "InStore_TopCylinder_Down";
/// <summary>
/// DO 0 横移轨道3阻挡下降SOL SidesWay3_StopCylinderDown 18 横移轨道3阻挡下降SOL Y33 DO-33
/// DO 0 横移轨道3阻挡下降SOL SidesWay3_StopCylinderDown DO-33
/// </summary>
public static string SidesWay3_StopCylinderDown = "SidesWay3_StopCylinderDown";
/// <summary>
/// DO 0 横移轨道3.4顶升气缸上升SOL SidesWay34_TopCylinder_Up 29 横移轨道3.4顶升气缸上升SOL Y44 DO-44
/// DO 0 横移轨道3.4顶升气缸上升SOL SidesWay34_TopCylinder_Up DO-44
/// </summary>
public static string SidesWay34_TopCylinder_Up = "SidesWay34_TopCylinder_Up";
/// <summary>
/// DO 0 横移轨道3.4顶升气缸下降SOL SidesWay34_TopCylinder_Down 30 横移轨道3.4顶升气缸下降SOL Y45 DO-45
/// DO 0 横移轨道3.4顶升气缸下降SOL SidesWay34_TopCylinder_Down DO-45
/// </summary>
public static string SidesWay34_TopCylinder_Down = "SidesWay34_TopCylinder_Down";
/// <summary>
/// DI 0 横移轨道3阻挡夹具检测 SidesWay3_StopFixtureCheck 13 横移轨道3阻挡夹具检测 X84 DI-84
/// DI 0 横移轨道3阻挡夹具检测 SidesWay3_StopFixtureCheck DI-84
/// </summary>
public static string SidesWay3_StopFixtureCheck = "SidesWay3_StopFixtureCheck";
/// <summary>
/// DI 0 横移轨道3夹具检测 SidesWay3_FixtureCheck 14 横移轨道3夹具检测 X85 DI-85
/// DI 0 横移轨道3夹具检测 SidesWay3_FixtureCheck DI-85
/// </summary>
public static string SidesWay3_FixtureCheck = "SidesWay3_FixtureCheck";
/// <summary>
/// DI 0 横移轨道3顶升气缸上升端 SidesWay3_TopCylinder_Up 15 横移轨道3顶升气缸上升端 X86 DI-86
/// DI 0 横移轨道3顶升气缸上升端 SidesWay3_TopCylinder_Up DI-86
/// </summary>
public static string SidesWay3_TopCylinder_Up = "SidesWay3_TopCylinder_Up";
/// <summary>
/// DI 0 横移轨道3顶升气缸下降端 SidesWay3_TopCylinder_Down 16 横移轨道3顶升气缸下降端 X87 DI-87
/// DI 0 横移轨道3顶升气缸下降端 SidesWay3_TopCylinder_Down DI-87
/// </summary>
public static string SidesWay3_TopCylinder_Down = "SidesWay3_TopCylinder_Down";
/// <summary>
/// DI 0 横移轨道4夹具检测 SidesWay4_FixtureCheck 17 横移轨道4夹具检测 X88 DI-88
/// DI 0 横移轨道4夹具检测 SidesWay4_FixtureCheck DI-88
/// </summary>
public static string SidesWay4_FixtureCheck = "SidesWay4_FixtureCheck";
/// <summary>
/// DI 0 横移轨道4顶升气缸上升端 SidesWay4_TopCylinder_Up 18 横移轨道4顶升气缸上升端 X89 DI-89
/// DI 0 横移轨道4顶升气缸上升端 SidesWay4_TopCylinder_Up DI-89
/// </summary>
public static string SidesWay4_TopCylinder_Up = "SidesWay4_TopCylinder_Up";
/// <summary>
/// DI 0 横移轨道4顶升气缸下降端 SidesWay4_TopCylinder_Down 19 横移轨道4顶升气缸下降端 X90 DI-90
/// DI 0 横移轨道4顶升气缸下降端 SidesWay4_TopCylinder_Down DI-90
/// </summary>
public static string SidesWay4_TopCylinder_Down = "SidesWay4_TopCylinder_Down";
/// <summary>
/// DI 0 出料工位夹具检测 OutStore_FixtureCheck 11 出料工位夹具检测 X102 DI-102
/// DI 0 出料工位夹具检测 OutStore_FixtureCheck DI-102
/// </summary>
public static string OutStore_FixtureCheck = "OutStore_FixtureCheck";
/// <summary>
/// DI 0 出料工位料盘检测 OutStore_TrayCheck 12 出料工位料盘检测 X103 DI-103
/// DI 0 出料工位料盘检测 OutStore_TrayCheck DI-103
/// </summary>
public static string OutStore_TrayCheck = "OutStore_TrayCheck";
/// <summary>
/// DO 0 横移轨道1.2顶升气缸上升SOL SidesWay12_TopCylinder_Up 22 横移轨道1.2顶升气缸上升SOL Y67 DO-67
/// DO 0 横移轨道1.2顶升气缸上升SOL SidesWay12_TopCylinder_Up DO-67
/// </summary>
public static string SidesWay12_TopCylinder_Up = "SidesWay12_TopCylinder_Up";
/// <summary>
/// DO 0 横移轨道1.2顶升气缸下降SOL SidesWay12_TopCylinder_Down 23 横移轨道1.2顶升气缸下降SOL Y68 DO-68
/// DO 0 横移轨道1.2顶升气缸下降SOL SidesWay12_TopCylinder_Down DO-68
/// </summary>
public static string SidesWay12_TopCylinder_Down = "SidesWay12_TopCylinder_Down";
......@@ -241,11 +234,11 @@ namespace OnlineStore.LoadCSVLibrary
/// </summary>
public static string TrayCheck = "TrayCheck";
/// <summary>
/// 移栽DI/DO 移载顶升气缸上升端 TopCylinder_UP 5
/// 移栽DI/DO 移载顶升气缸上升端 /环形线横移4定位上升端 TopCylinder_UP 5
/// </summary>
public static string TopCylinder_UP = "TopCylinder_UP";
/// <summary>
/// 移栽DI/DO 移载顶升气缸下降端 TopCylinder_Down 6
/// 移栽DI/DO 移载顶升气缸下降端/环形线横移4定位下降端 TopCylinder_Down 6
/// </summary>
public static string TopCylinder_Down = "TopCylinder_Down";
/// <summary>
......@@ -291,15 +284,123 @@ namespace OnlineStore.LoadCSVLibrary
public static string BatchAxis_BreakOn = "BatchAxis_BreakOn";
public static string BatchAxis_ServoOn = "BatchAxis_ServoOn";
#region 流水线新增IO
/// <summary>
/// DI,1,进仓01阻挡1托盘检测,StopCylinder_Check1,0,192.168.200.29,0,进仓01阻挡1托盘检测,X261,X261
/// DI 进仓01阻挡1托盘检测,StopCylinder_Check1, X261
/// </summary>
public static string StopCylinder_Check1 = "StopCylinder_Check1";
/// <summary>
/// DI,1, 进仓01阻挡2托盘检测, StopCylinder_Check2,1,192.168.200.29,0, 进仓01阻挡2托盘检测, X262, X262
/// DI 进仓01阻挡2托盘检测, StopCylinder_Check2, X262
/// </summary>
public static string StopCylinder_Check2 = "StopCylinder_Check2";
/// <summary>
///DI NG料盘推出气缸前进端,NGCylinder_Before, X005
/// </summary>
public static string NGCylinder_Before = "NGCylinder_Before";
/// <summary>
///DI NG料盘推出气缸后退端,NGCylinder_After, X006
/// </summary>
public static string NGCylinder_After = "NGCylinder_After";
/// <summary>
/// DO 故障状态(蜂鸣器),Alarm_Buzzer, Y004
/// </summary>
public static string Alarm_Buzzer = "Alarm_Buzzer";
/// <summary>
/// DO 驱动电机1正转,DriveMotor_1, Y005
/// </summary>
public static string DriveMotor_1 = "DriveMotor_1";
/// <summary>
/// DO 驱动电机2正转,DriveMotor_2, ,Y006
/// </summary>
public static string DriveMotor_2 = "DriveMotor_2";
/// <summary>
/// DO 驱动电机3正转,DriveMotor_3, Y007
/// </summary>
public static string DriveMotor_3 = "DriveMotor_3";
/// <summary>
/// DO 驱动电机4正转,DriveMotor_4, Y008
/// </summary>
public static string DriveMotor_4 = "DriveMotor_4";
#endregion
#region 皮带线新增IO
/// <summary>
/// DI 皮带线1定位检测,Location_Check1, ,X021
/// </summary>
public static string Location_Check1 = "Location_Check1";
/// <summary>
/// DI 皮带线1入口料盘检测, EntryPosition_Check1, , X022
/// </summary>
public static string EntryPosition_Check1 = "EntryPosition_Check1";
/// <summary>
/// DI 皮带线1出口料盘检测,ExitPosition_Check1, X023
/// </summary>
public static string ExitPosition_Check1 = "ExitPosition_Check1";
/// <summary>
/// DI 皮带线2定位检测, Location_Check2, X024
/// </summary>
public static string Location_Check2 = "Location_Check2";
/// <summary>
/// DI 皮带线2入口料盘检测,EntryPosition_Check2, ,X025
/// </summary>
public static string EntryPosition_Check2 = "EntryPosition_Check2";
/// <summary>
/// DI 皮带线2出口料盘检测, ExitPosition_Check2, X026
/// </summary>
public static string ExitPosition_Check2 = "ExitPosition_Check2";
/// <summary>
/// DI 皮带线3定位检测,Location_Check3, X027
/// </summary>
public static string Location_Check3 = "Location_Check3";
/// <summary>
/// DI 皮带线3入口料盘检测, EntryPosition_Check3, X028
/// </summary>
public static string EntryPosition_Check3 = "EntryPosition_Check3";
/// <summary>
/// DI 皮带线3中间位置料盘检测,MiddlePosition_Check3, ,X029
/// </summary>
public static string MiddlePosition_Check3 = "MiddlePosition_Check3";
/// <summary>
/// DI 皮带线3出口料盘检测, ExitPosition_Check3, X030
/// </summary>
public static string ExitPosition_Check3 = "ExitPosition_Check3";
/// <summary>
/// DI 分盘装置1定位气缸上升端,SeparateDevice_Up, X031
/// </summary>
public static string SeparateDevice_Up = "SeparateDevice_Up";
/// <summary>
/// DI 分盘装置1定位气缸下降端, SeparateDevice_Down, X032
/// </summary>
public static string SeparateDevice_Down = "SeparateDevice_Down";
/// <summary>
/// DI 分盘装置1料盘检测,SeparateDevice_Check, ,X033
/// </summary>
public static string SeparateDevice_Check = "SeparateDevice_Check";
/// <summary>
/// DO 0 出料皮带线1运转 LineRun_1,Y021
/// </summary>
public static string LineRun_1 = "LineRun_1";
/// <summary>
/// DO 0 出料皮带线2运转 LineRun_2,Y022
/// </summary>
public static string LineRun_2 = "LineRun_2";
/// <summary>
/// DO 0 出料皮带线3运转 LineRun_3,Y023
/// </summary>
public static string LineRun_3 = "LineRun_3";
/// <summary>
/// DO 0 分盘装置电机驱动 SeparateDevice_Run,Y024
/// </summary>
public static string SeparateDevice_Run = "SeparateDevice_Run";
#endregion
}
public enum IO_VALUE
{
......
......@@ -193,62 +193,108 @@ namespace OnlineStore.LoadCSVLibrary
{
MustHaveDIList = new List<string>();
MustHaveDOList = new List<string>();
MustHaveDIList.Add(IO_Type.SuddenStop_BTN);
// DI,0,急停,SuddenStop_BTN,0,192.168.200.11,0,急停,X001,X001
//DI,0,复位,Reset_BTN,1,192.168.200.11,0,复位,X002,X002
//DI,0,联动,Start_BTN,2,192.168.200.11,0,联动,X003,X003
//DI,0,气压检测,Airpressure_Check,3,192.168.200.11,0,气压检测,X004,X004
//DI,0,NG料盘推出气缸前进端,NGCylinder_Before,4,192.168.200.11,0,NG料盘推出气缸前进端,X005,X005
//DI,0,NG料盘推出气缸后退端,NGCylinder_After,5,192.168.200.11,0,NG料盘推出气缸后退端,X006,X006
//DI,0,环形线横移4定位上升端,TopCylinder_UP,6,192.168.200.11,0,环形线横移4定位上升端,X007,X007
//DI,0,环形线横移4定位下降端,TopCylinder_Down,7,192.168.200.11,0,环形线横移4定位下降端,X008,X008
MustHaveDIList.Add(IO_Type.SuddenStop_BTN);
MustHaveDIList.Add(IO_Type.Reset_BTN);
MustHaveDIList.Add(IO_Type.Start_BTN);
MustHaveDIList.Add(IO_Type.Line_Run);
MustHaveDIList.Add(IO_Type.Airpressure_Check);
MustHaveDIList.Add(IO_Type.InStore_TrayCheck1);
MustHaveDIList.Add(IO_Type.InStore_TrayCheck2);
MustHaveDIList.Add(IO_Type.StopCylinder_Check);
MustHaveDIList.Add(IO_Type.Fixture_Check_1);
MustHaveDIList.Add(IO_Type.Fixture_Check_2);
MustHaveDIList.Add(IO_Type.Fixture_Check_3);
MustHaveDIList.Add(IO_Type.Fixture_Check_4);
MustHaveDIList.Add(IO_Type.InStore_TopCylinder_Up);
MustHaveDIList.Add(IO_Type.InStore_TopCylinder_Down);
MustHaveDIList.Add(IO_Type.SidesWay1_StopFixtureCheck);
MustHaveDIList.Add(IO_Type.SidesWay1_FixtureCheck);
MustHaveDIList.Add(IO_Type.SidesWay1_TopCylinder_Up);
MustHaveDIList.Add(IO_Type.SidesWay1_TopCylinder_Down);
MustHaveDIList.Add(IO_Type.SidesWay2_FixtureCheck);
MustHaveDIList.Add(IO_Type.SidesWay2_TopCylinder_Up);
MustHaveDIList.Add(IO_Type.SidesWay2_TopCylinder_Down);
MustHaveDIList.Add(IO_Type.DriveMotor_INV1);
MustHaveDIList.Add(IO_Type.DriveMotor_INV2);
MustHaveDIList.Add(IO_Type.NGCylinder_Before);
MustHaveDIList.Add(IO_Type.NGCylinder_After);
MustHaveDIList.Add(IO_Type.TopCylinder_UP);
MustHaveDIList.Add(IO_Type.TopCylinder_Down);
// DO,0,待机状态(指示灯),AutoRun_HddLed,0,192.168.200.11,0,待机状态(指示灯),Y001,Y001
//DO,0,运行状态(指示灯),RunSign_HddLed,1,192.168.200.11,0,运行状态(指示灯),Y002,Y002
//DO,0,故障状态(指示灯),Alarm_HddLed,2,192.168.200.11,0,故障状态(指示灯),Y003,Y003
//DO,0,故障状态(蜂鸣器),Alarm_Buzzer,3,192.168.200.11,0,故障状态(蜂鸣器),Y004,Y004
//DO,0,驱动电机1正转,DriveMotor_1,4,192.168.200.11,0,驱动电机1正转,Y005,Y005
//DO,0,驱动电机2正转,DriveMotor_2,5,192.168.200.11,0,驱动电机2正转,Y006,Y006
//DO,0,驱动电机3正转,DriveMotor_3,6,192.168.200.11,0,驱动电机3正转,Y007,Y007
//DO,0,驱动电机4正转,DriveMotor_4,7,192.168.200.11,0,驱动电机4正转,Y008,Y008
//DO,0,环形线横移4电机运转,DriveMotor_Run,8,192.168.200.11,0,环形线横移4电机运转,Y009,Y009
//DO,0,NG料盘推出气缸前进SOL,NGCylinder_Before,9,192.168.200.11,0,NG料盘推出气缸前进SOL,Y010,Y010
//DO,0,NG料盘推出气缸后退SOL,NGCylinder_After,10,192.168.200.11,0,NG料盘推出气缸后退SOL,Y011,Y011
//DO,0,环形线横移4定位上升SOL,TopCylinder_UP,11,192.168.200.11,0,环形线横移4定位上升SOL,Y012,Y012
//DO,0,环形线横移4定位下降SOL,TopCylinder_Down,12,192.168.200.11,0,环形线横移4定位下降SOL,Y013,Y013
MustHaveDOList.Add(IO_Type.AutoRun_HddLed);
MustHaveDOList.Add(IO_Type.RunSign_HddLed);
MustHaveDOList.Add(IO_Type.Alarm_HddLed);
MustHaveDOList.Add(IO_Type.Alarm_Buzzer);
MustHaveDOList.Add(IO_Type.DriveMotor_1);
MustHaveDOList.Add(IO_Type.DriveMotor_2);
MustHaveDOList.Add(IO_Type.DriveMotor_3);
MustHaveDOList.Add(IO_Type.DriveMotor_4);
MustHaveDOList.Add(IO_Type.DriveMotor_Run);
MustHaveDOList.Add(IO_Type.SidesWay12_DriveMotor);
MustHaveDOList.Add(IO_Type.SidesWay34_DriveMotor);
MustHaveDOList.Add(IO_Type.NGCylinder_Before);
MustHaveDOList.Add(IO_Type.NGCylinder_After);
MustHaveDOList.Add(IO_Type.TopCylinder_UP);
MustHaveDOList.Add(IO_Type.TopCylinder_Down);
//MustHaveDIList.Add(IO_Type.SuddenStop_BTN);
//MustHaveDIList.Add(IO_Type.Reset_BTN);
//MustHaveDIList.Add(IO_Type.Start_BTN);
//MustHaveDIList.Add(IO_Type.Line_Run);
//MustHaveDIList.Add(IO_Type.Airpressure_Check);
//MustHaveDIList.Add(IO_Type.InStore_TrayCheck1);
//MustHaveDIList.Add(IO_Type.InStore_TrayCheck2);
//MustHaveDIList.Add(IO_Type.StopCylinder_Check);
//MustHaveDIList.Add(IO_Type.Fixture_Check_1);
//MustHaveDIList.Add(IO_Type.Fixture_Check_2);
//MustHaveDIList.Add(IO_Type.Fixture_Check_3);
//MustHaveDIList.Add(IO_Type.Fixture_Check_4);
//MustHaveDIList.Add(IO_Type.InStore_TopCylinder_Up);
//MustHaveDIList.Add(IO_Type.InStore_TopCylinder_Down);
//MustHaveDIList.Add(IO_Type.SidesWay1_StopFixtureCheck);
//MustHaveDIList.Add(IO_Type.SidesWay1_FixtureCheck);
//MustHaveDIList.Add(IO_Type.SidesWay1_TopCylinder_Up);
//MustHaveDIList.Add(IO_Type.SidesWay1_TopCylinder_Down);
//MustHaveDIList.Add(IO_Type.SidesWay2_FixtureCheck);
//MustHaveDIList.Add(IO_Type.SidesWay2_TopCylinder_Up);
//MustHaveDIList.Add(IO_Type.SidesWay2_TopCylinder_Down);
//MustHaveDIList.Add(IO_Type.DriveMotor_INV1);
//MustHaveDIList.Add(IO_Type.DriveMotor_INV2);
//MustHaveDOList.Add(IO_Type.AutoRun_HddLed);
//MustHaveDOList.Add(IO_Type.RunSign_HddLed);
//MustHaveDOList.Add(IO_Type.Alarm_HddLed);
//MustHaveDOList.Add(IO_Type.DriveMotor_Run);
//MustHaveDOList.Add(IO_Type.SidesWay12_DriveMotor);
//MustHaveDOList.Add(IO_Type.SidesWay34_DriveMotor);
MustHaveDOList.Add(IO_Type.StopCylinder_Down1);
MustHaveDOList.Add(IO_Type.StopCylinder_Down2);
MustHaveDOList.Add(IO_Type.SidesWay1_StopCylinderDown);
MustHaveDOList.Add(IO_Type.InStore_TopCylinder_Up);
MustHaveDOList.Add(IO_Type.InStore_TopCylinder_Down);
MustHaveDOList.Add(IO_Type.SidesWay3_StopCylinderDown);
//MustHaveDOList.Add(IO_Type.StopCylinder_Down1);
//MustHaveDOList.Add(IO_Type.StopCylinder_Down2);
//MustHaveDOList.Add(IO_Type.SidesWay1_StopCylinderDown);
//MustHaveDOList.Add(IO_Type.InStore_TopCylinder_Up);
//MustHaveDOList.Add(IO_Type.InStore_TopCylinder_Down);
//MustHaveDOList.Add(IO_Type.SidesWay3_StopCylinderDown);
MustHaveDOList.Add(IO_Type.SidesWay34_TopCylinder_Up);
MustHaveDOList.Add(IO_Type.SidesWay34_TopCylinder_Down);
//MustHaveDOList.Add(IO_Type.SidesWay34_TopCylinder_Up);
//MustHaveDOList.Add(IO_Type.SidesWay34_TopCylinder_Down);
MustHaveDIList.Add(IO_Type.SidesWay3_StopFixtureCheck);
MustHaveDIList.Add(IO_Type.SidesWay3_FixtureCheck);
MustHaveDIList.Add(IO_Type.SidesWay3_TopCylinder_Up);
MustHaveDIList.Add(IO_Type.SidesWay3_TopCylinder_Down);
MustHaveDIList.Add(IO_Type.SidesWay4_FixtureCheck);
MustHaveDIList.Add(IO_Type.SidesWay4_TopCylinder_Up);
MustHaveDIList.Add(IO_Type.SidesWay4_TopCylinder_Down);
//MustHaveDIList.Add(IO_Type.SidesWay3_StopFixtureCheck);
//MustHaveDIList.Add(IO_Type.SidesWay3_FixtureCheck);
//MustHaveDIList.Add(IO_Type.SidesWay3_TopCylinder_Up);
//MustHaveDIList.Add(IO_Type.SidesWay3_TopCylinder_Down);
//MustHaveDIList.Add(IO_Type.SidesWay4_FixtureCheck);
//MustHaveDIList.Add(IO_Type.SidesWay4_TopCylinder_Up);
//MustHaveDIList.Add(IO_Type.SidesWay4_TopCylinder_Down);
MustHaveDIList.Add(IO_Type.OutStore_FixtureCheck);
MustHaveDIList.Add(IO_Type.OutStore_TrayCheck);
//MustHaveDIList.Add(IO_Type.OutStore_FixtureCheck);
//MustHaveDIList.Add(IO_Type.OutStore_TrayCheck);
MustHaveDOList.Add(IO_Type.SidesWay12_TopCylinder_Up);
MustHaveDOList.Add(IO_Type.SidesWay12_TopCylinder_Down);
//MustHaveDOList.Add(IO_Type.SidesWay12_TopCylinder_Up);
//MustHaveDOList.Add(IO_Type.SidesWay12_TopCylinder_Down);
}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!