Commit 4385548a LN

配置结构修改

1 个父辈 f3c34af3
......@@ -46,7 +46,7 @@ namespace OnlineStore.ACSingleStore
groupBox3.Text = "设备["+boxBean.CID+"]状态";
this.Opacity = 1;
txtTempPort.Text = boxBean.Config.Humiture_Port;
txtTempPort.Text = StoreManager.Config.Humiture_Port ;
LoadOk = true;
}
......
......@@ -55,6 +55,12 @@
this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.退出ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem4 = new System.Windows.Forms.ToolStripMenuItem();
this.开机自动启动软件ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator();
this.启用蜂鸣器ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator();
this.开启DEBUG日志ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.设置TToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();
......@@ -69,12 +75,6 @@
this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.toolStripMenuItem4 = new System.Windows.Forms.ToolStripMenuItem();
this.开机自动启动软件ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.启用蜂鸣器ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.开启DEBUG日志ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator();
this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator();
this.tabControl1.SuspendLayout();
this.tabPage1.SuspendLayout();
this.groupBox4.SuspendLayout();
......@@ -130,9 +130,9 @@
//
this.groupBox4.Controls.Add(this.tableLayoutPanel2);
this.groupBox4.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.groupBox4.Location = new System.Drawing.Point(6, 215);
this.groupBox4.Location = new System.Drawing.Point(6, 119);
this.groupBox4.Name = "groupBox4";
this.groupBox4.Size = new System.Drawing.Size(229, 203);
this.groupBox4.Size = new System.Drawing.Size(229, 152);
this.groupBox4.TabIndex = 199;
this.groupBox4.TabStop = false;
this.groupBox4.Text = "DO列表";
......@@ -149,7 +149,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(218, 183);
this.tableLayoutPanel2.Size = new System.Drawing.Size(218, 132);
this.tableLayoutPanel2.TabIndex = 103;
//
// groupBox3
......@@ -158,7 +158,7 @@
this.groupBox3.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.groupBox3.Location = new System.Drawing.Point(6, 6);
this.groupBox3.Name = "groupBox3";
this.groupBox3.Size = new System.Drawing.Size(229, 203);
this.groupBox3.Size = new System.Drawing.Size(229, 107);
this.groupBox3.TabIndex = 198;
this.groupBox3.TabStop = false;
this.groupBox3.Text = "DI列表";
......@@ -175,7 +175,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(218, 183);
this.tableLayoutPanel1.Size = new System.Drawing.Size(218, 87);
this.tableLayoutPanel1.TabIndex = 102;
//
// chbUseBuzzer
......@@ -297,57 +297,97 @@
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(177, 6);
this.toolStripSeparator1.Size = new System.Drawing.Size(114, 6);
//
// 启动AToolStripMenuItem
//
this.启动AToolStripMenuItem.Name = "启动AToolStripMenuItem";
this.启动AToolStripMenuItem.Size = new System.Drawing.Size(180, 26);
this.启动AToolStripMenuItem.Size = new System.Drawing.Size(117, 26);
this.启动AToolStripMenuItem.Text = "启动 ";
this.启动AToolStripMenuItem.Click += new System.EventHandler(this.启动所有料仓AToolStripMenuItem_Click);
//
// toolStripSeparator4
//
this.toolStripSeparator4.Name = "toolStripSeparator4";
this.toolStripSeparator4.Size = new System.Drawing.Size(177, 6);
this.toolStripSeparator4.Size = new System.Drawing.Size(114, 6);
//
// 复位RToolStripMenuItem
//
this.复位RToolStripMenuItem.Name = "复位RToolStripMenuItem";
this.复位RToolStripMenuItem.Size = new System.Drawing.Size(180, 26);
this.复位RToolStripMenuItem.Size = new System.Drawing.Size(117, 26);
this.复位RToolStripMenuItem.Text = "复位";
this.复位RToolStripMenuItem.Click += new System.EventHandler(this.复位RToolStripMenuItem_Click);
//
// toolStripSeparator3
//
this.toolStripSeparator3.Name = "toolStripSeparator3";
this.toolStripSeparator3.Size = new System.Drawing.Size(177, 6);
this.toolStripSeparator3.Size = new System.Drawing.Size(114, 6);
//
// 停止TToolStripMenuItem
//
this.停止TToolStripMenuItem.Name = "停止TToolStripMenuItem";
this.停止TToolStripMenuItem.Size = new System.Drawing.Size(180, 26);
this.停止TToolStripMenuItem.Size = new System.Drawing.Size(117, 26);
this.停止TToolStripMenuItem.Text = "停止";
this.停止TToolStripMenuItem.Click += new System.EventHandler(this.停止所有料仓TToolStripMenuItem_Click);
//
// toolStripSeparator5
//
this.toolStripSeparator5.Name = "toolStripSeparator5";
this.toolStripSeparator5.Size = new System.Drawing.Size(177, 6);
this.toolStripSeparator5.Size = new System.Drawing.Size(114, 6);
//
// toolStripSeparator2
//
this.toolStripSeparator2.Name = "toolStripSeparator2";
this.toolStripSeparator2.Size = new System.Drawing.Size(177, 6);
this.toolStripSeparator2.Size = new System.Drawing.Size(114, 6);
this.toolStripSeparator2.Visible = false;
//
// 退出ToolStripMenuItem
//
this.退出ToolStripMenuItem.Name = "退出ToolStripMenuItem";
this.退出ToolStripMenuItem.Size = new System.Drawing.Size(180, 26);
this.退出ToolStripMenuItem.Size = new System.Drawing.Size(117, 26);
this.退出ToolStripMenuItem.Text = "退出";
this.退出ToolStripMenuItem.Click += new System.EventHandler(this.退出ToolStripMenuItem_Click_1);
//
// toolStripMenuItem4
//
this.toolStripMenuItem4.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.开机自动启动软件ToolStripMenuItem,
this.toolStripSeparator10,
this.启用蜂鸣器ToolStripMenuItem,
this.toolStripSeparator11,
this.开启DEBUG日志ToolStripMenuItem});
this.toolStripMenuItem4.Name = "toolStripMenuItem4";
this.toolStripMenuItem4.Size = new System.Drawing.Size(86, 25);
this.toolStripMenuItem4.Text = "运行参数";
//
// 开机自动启动软件ToolStripMenuItem
//
this.开机自动启动软件ToolStripMenuItem.Name = "开机自动启动软件ToolStripMenuItem";
this.开机自动启动软件ToolStripMenuItem.Size = new System.Drawing.Size(208, 26);
this.开机自动启动软件ToolStripMenuItem.Text = "开机自动启动软件";
//
// toolStripSeparator10
//
this.toolStripSeparator10.Name = "toolStripSeparator10";
this.toolStripSeparator10.Size = new System.Drawing.Size(205, 6);
//
// 启用蜂鸣器ToolStripMenuItem
//
this.启用蜂鸣器ToolStripMenuItem.Name = "启用蜂鸣器ToolStripMenuItem";
this.启用蜂鸣器ToolStripMenuItem.Size = new System.Drawing.Size(208, 26);
this.启用蜂鸣器ToolStripMenuItem.Text = "启用蜂鸣器";
//
// toolStripSeparator11
//
this.toolStripSeparator11.Name = "toolStripSeparator11";
this.toolStripSeparator11.Size = new System.Drawing.Size(205, 6);
//
// 开启DEBUG日志ToolStripMenuItem
//
this.开启DEBUG日志ToolStripMenuItem.Name = "开启DEBUG日志ToolStripMenuItem";
this.开启DEBUG日志ToolStripMenuItem.Size = new System.Drawing.Size(208, 26);
this.开启DEBUG日志ToolStripMenuItem.Text = "开启DEBUG日志";
//
// 设置TToolStripMenuItem
//
this.设置TToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
......@@ -361,19 +401,19 @@
// toolStripMenuItem2
//
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
this.toolStripMenuItem2.Size = new System.Drawing.Size(180, 26);
this.toolStripMenuItem2.Size = new System.Drawing.Size(144, 26);
this.toolStripMenuItem2.Text = "启用调试";
this.toolStripMenuItem2.Click += new System.EventHandler(this.toolStripMenuItem2_Click);
//
// toolStripSeparator6
//
this.toolStripSeparator6.Name = "toolStripSeparator6";
this.toolStripSeparator6.Size = new System.Drawing.Size(177, 6);
this.toolStripSeparator6.Size = new System.Drawing.Size(141, 6);
//
// toolStripSeparator7
//
this.toolStripSeparator7.Name = "toolStripSeparator7";
this.toolStripSeparator7.Size = new System.Drawing.Size(177, 6);
this.toolStripSeparator7.Size = new System.Drawing.Size(141, 6);
//
// 帮助ToolStripMenuItem
//
......@@ -446,46 +486,6 @@
this.timer1.Interval = 1000;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// toolStripMenuItem4
//
this.toolStripMenuItem4.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.开机自动启动软件ToolStripMenuItem,
this.toolStripSeparator10,
this.启用蜂鸣器ToolStripMenuItem,
this.toolStripSeparator11,
this.开启DEBUG日志ToolStripMenuItem});
this.toolStripMenuItem4.Name = "toolStripMenuItem4";
this.toolStripMenuItem4.Size = new System.Drawing.Size(86, 25);
this.toolStripMenuItem4.Text = "运行参数";
//
// 开机自动启动软件ToolStripMenuItem
//
this.开机自动启动软件ToolStripMenuItem.Name = "开机自动启动软件ToolStripMenuItem";
this.开机自动启动软件ToolStripMenuItem.Size = new System.Drawing.Size(208, 26);
this.开机自动启动软件ToolStripMenuItem.Text = "开机自动启动软件";
//
// 启用蜂鸣器ToolStripMenuItem
//
this.启用蜂鸣器ToolStripMenuItem.Name = "启用蜂鸣器ToolStripMenuItem";
this.启用蜂鸣器ToolStripMenuItem.Size = new System.Drawing.Size(208, 26);
this.启用蜂鸣器ToolStripMenuItem.Text = "启用蜂鸣器";
//
// 开启DEBUG日志ToolStripMenuItem
//
this.开启DEBUG日志ToolStripMenuItem.Name = "开启DEBUG日志ToolStripMenuItem";
this.开启DEBUG日志ToolStripMenuItem.Size = new System.Drawing.Size(208, 26);
this.开启DEBUG日志ToolStripMenuItem.Text = "开启DEBUG日志";
//
// toolStripSeparator10
//
this.toolStripSeparator10.Name = "toolStripSeparator10";
this.toolStripSeparator10.Size = new System.Drawing.Size(205, 6);
//
// toolStripSeparator11
//
this.toolStripSeparator11.Name = "toolStripSeparator11";
this.toolStripSeparator11.Size = new System.Drawing.Size(205, 6);
//
// FrmStore
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
......@@ -499,7 +499,6 @@
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MainMenuStrip = this.menuStrip1;
this.Name = "FrmStore";
this.Opacity = 0D;
this.Text = "环形线料仓";
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmMain_FormClosing);
......
......@@ -67,11 +67,14 @@ namespace OnlineStore.ACSingleStore
this.tableLayoutPanel1.RowCount = store.Config.DIList.Count;
foreach (ConfigIO ioValue in store.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);
if (ioValue.SubType.Equals(0))
{
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();
......@@ -79,11 +82,14 @@ namespace OnlineStore.ACSingleStore
roleindex = 0;
foreach (ConfigIO ioValue in store.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);
if (ioValue.SubType.Equals(0))
{
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(); //此处为不闪屏,一定要有的!
}
......
namespace OnlineStore.AutoCountClient
{
partial class AxisMoveControl
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region 组件设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.groupAxis = new System.Windows.Forms.GroupBox();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.txtBusyStatus = new System.Windows.Forms.TextBox();
this.label11 = new System.Windows.Forms.Label();
this.txtHomeStatus = new System.Windows.Forms.TextBox();
this.label10 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label24 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.btnGetAlarm = new System.Windows.Forms.Button();
this.txtAlarmStatus = new System.Windows.Forms.TextBox();
this.txtLimit2 = new System.Windows.Forms.TextBox();
this.txtServoStatue = new System.Windows.Forms.TextBox();
this.label22 = new System.Windows.Forms.Label();
this.txtLimit1 = new System.Windows.Forms.TextBox();
this.label6 = new System.Windows.Forms.Label();
this.txtHomeSingle = new System.Windows.Forms.TextBox();
this.panel1 = new System.Windows.Forms.Panel();
this.linkLabel1 = new System.Windows.Forms.LinkLabel();
this.comjSpeed = new System.Windows.Forms.ComboBox();
this.btnComAlarmClear = new System.Windows.Forms.Button();
this.btnAxisStop = new System.Windows.Forms.Button();
this.btnAxisReturnHome = new System.Windows.Forms.Button();
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.btnMCopy = new System.Windows.Forms.Button();
this.btnDelMove = new System.Windows.Forms.Button();
this.btnOpenAxis = new System.Windows.Forms.Button();
this.btnCloseAxis = new System.Windows.Forms.Button();
this.btnAddMove = new System.Windows.Forms.Button();
this.txtASpeed = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.label47 = new System.Windows.Forms.Label();
this.btnReadPosition = new System.Windows.Forms.Button();
this.btnAxisVMove = new System.Windows.Forms.Button();
this.label8 = new System.Windows.Forms.Label();
this.btnAxisRMove = new System.Windows.Forms.Button();
this.lblCountPulse = new System.Windows.Forms.TextBox();
this.btnAxisAMove = new System.Windows.Forms.Button();
this.label49 = new System.Windows.Forms.Label();
this.txtAPosition = new System.Windows.Forms.TextBox();
this.label46 = new System.Windows.Forms.Label();
this.label48 = new System.Windows.Forms.Label();
this.label45 = new System.Windows.Forms.Label();
this.txtAxisValue = new System.Windows.Forms.TextBox();
this.txtAxisDeviceName = new System.Windows.Forms.TextBox();
this.lblServerOn = new System.Windows.Forms.Label();
this.txtStb = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.groupAxis.SuspendLayout();
this.groupBox1.SuspendLayout();
this.panel1.SuspendLayout();
this.SuspendLayout();
//
// 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.BackColor = System.Drawing.Color.White;
this.groupAxis.Controls.Add(this.groupBox1);
this.groupAxis.Controls.Add(this.panel1);
this.groupAxis.Controls.Add(this.lblServerOn);
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(4, 3);
this.groupAxis.Name = "groupAxis";
this.groupAxis.Size = new System.Drawing.Size(724, 302);
this.groupAxis.TabIndex = 218;
this.groupAxis.TabStop = false;
this.groupAxis.Text = "伺服运动";
//
// groupBox1
//
this.groupBox1.Controls.Add(this.txtStb);
this.groupBox1.Controls.Add(this.label2);
this.groupBox1.Controls.Add(this.txtBusyStatus);
this.groupBox1.Controls.Add(this.label11);
this.groupBox1.Controls.Add(this.txtHomeStatus);
this.groupBox1.Controls.Add(this.label10);
this.groupBox1.Controls.Add(this.label3);
this.groupBox1.Controls.Add(this.label24);
this.groupBox1.Controls.Add(this.label5);
this.groupBox1.Controls.Add(this.btnGetAlarm);
this.groupBox1.Controls.Add(this.txtAlarmStatus);
this.groupBox1.Controls.Add(this.txtLimit2);
this.groupBox1.Controls.Add(this.txtServoStatue);
this.groupBox1.Controls.Add(this.label22);
this.groupBox1.Controls.Add(this.txtLimit1);
this.groupBox1.Controls.Add(this.label6);
this.groupBox1.Controls.Add(this.txtHomeSingle);
this.groupBox1.Location = new System.Drawing.Point(553, 12);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(154, 282);
this.groupBox1.TabIndex = 302;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "状态";
//
// txtBusyStatus
//
this.txtBusyStatus.Enabled = false;
this.txtBusyStatus.Location = new System.Drawing.Point(120, 104);
this.txtBusyStatus.Name = "txtBusyStatus";
this.txtBusyStatus.Size = new System.Drawing.Size(25, 23);
this.txtBusyStatus.TabIndex = 288;
//
// label11
//
this.label11.AutoSize = true;
this.label11.Location = new System.Drawing.Point(6, 135);
this.label11.Name = "label11";
this.label11.Size = new System.Drawing.Size(105, 17);
this.label11.TabIndex = 292;
this.label11.Text = "HOME-CMP状态:";
//
// txtHomeStatus
//
this.txtHomeStatus.Enabled = false;
this.txtHomeStatus.Location = new System.Drawing.Point(120, 132);
this.txtHomeStatus.Name = "txtHomeStatus";
this.txtHomeStatus.Size = new System.Drawing.Size(25, 23);
this.txtHomeStatus.TabIndex = 291;
//
// label10
//
this.label10.AutoSize = true;
this.label10.Location = new System.Drawing.Point(45, 107);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(66, 17);
this.label10.TabIndex = 289;
this.label10.Text = "BUSY状态:";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(52, 51);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(59, 17);
this.label3.TabIndex = 286;
this.label3.Text = "报警状态:";
//
// label24
//
this.label24.AutoSize = true;
this.label24.Location = new System.Drawing.Point(40, 219);
this.label24.Name = "label24";
this.label24.Size = new System.Drawing.Size(71, 17);
this.label24.TabIndex = 316;
this.label24.Text = "负极限信号:";
this.label24.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(52, 23);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(59, 17);
this.label5.TabIndex = 328;
this.label5.Text = "伺服状态:";
//
// btnGetAlarm
//
this.btnGetAlarm.BackColor = System.Drawing.Color.White;
this.btnGetAlarm.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnGetAlarm.Location = new System.Drawing.Point(35, 245);
this.btnGetAlarm.Name = "btnGetAlarm";
this.btnGetAlarm.Size = new System.Drawing.Size(110, 34);
this.btnGetAlarm.TabIndex = 284;
this.btnGetAlarm.Text = "读报状态";
this.btnGetAlarm.UseVisualStyleBackColor = false;
this.btnGetAlarm.Click += new System.EventHandler(this.btnGetAlarm_Click);
//
// txtAlarmStatus
//
this.txtAlarmStatus.Enabled = false;
this.txtAlarmStatus.Location = new System.Drawing.Point(120, 48);
this.txtAlarmStatus.Name = "txtAlarmStatus";
this.txtAlarmStatus.Size = new System.Drawing.Size(25, 23);
this.txtAlarmStatus.TabIndex = 285;
//
// txtLimit2
//
this.txtLimit2.Enabled = false;
this.txtLimit2.Location = new System.Drawing.Point(120, 216);
this.txtLimit2.Name = "txtLimit2";
this.txtLimit2.Size = new System.Drawing.Size(25, 23);
this.txtLimit2.TabIndex = 313;
//
// txtServoStatue
//
this.txtServoStatue.Enabled = false;
this.txtServoStatue.Location = new System.Drawing.Point(120, 20);
this.txtServoStatue.Name = "txtServoStatue";
this.txtServoStatue.Size = new System.Drawing.Size(25, 23);
this.txtServoStatue.TabIndex = 327;
//
// label22
//
this.label22.AutoSize = true;
this.label22.Location = new System.Drawing.Point(40, 191);
this.label22.Name = "label22";
this.label22.Size = new System.Drawing.Size(71, 17);
this.label22.TabIndex = 312;
this.label22.Text = "正极限信号:";
this.label22.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// txtLimit1
//
this.txtLimit1.Enabled = false;
this.txtLimit1.Location = new System.Drawing.Point(120, 188);
this.txtLimit1.Name = "txtLimit1";
this.txtLimit1.Size = new System.Drawing.Size(25, 23);
this.txtLimit1.TabIndex = 309;
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(52, 163);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(59, 17);
this.label6.TabIndex = 300;
this.label6.Text = "原点信号:";
//
// txtHomeSingle
//
this.txtHomeSingle.Enabled = false;
this.txtHomeSingle.Location = new System.Drawing.Point(120, 160);
this.txtHomeSingle.Name = "txtHomeSingle";
this.txtHomeSingle.Size = new System.Drawing.Size(25, 23);
this.txtHomeSingle.TabIndex = 297;
//
// panel1
//
this.panel1.Controls.Add(this.linkLabel1);
this.panel1.Controls.Add(this.comjSpeed);
this.panel1.Controls.Add(this.btnComAlarmClear);
this.panel1.Controls.Add(this.btnAxisStop);
this.panel1.Controls.Add(this.btnAxisReturnHome);
this.panel1.Controls.Add(this.comboBox1);
this.panel1.Controls.Add(this.btnMCopy);
this.panel1.Controls.Add(this.btnDelMove);
this.panel1.Controls.Add(this.btnOpenAxis);
this.panel1.Controls.Add(this.btnCloseAxis);
this.panel1.Controls.Add(this.btnAddMove);
this.panel1.Controls.Add(this.txtASpeed);
this.panel1.Controls.Add(this.label1);
this.panel1.Controls.Add(this.label47);
this.panel1.Controls.Add(this.btnReadPosition);
this.panel1.Controls.Add(this.btnAxisVMove);
this.panel1.Controls.Add(this.label8);
this.panel1.Controls.Add(this.btnAxisRMove);
this.panel1.Controls.Add(this.lblCountPulse);
this.panel1.Controls.Add(this.btnAxisAMove);
this.panel1.Controls.Add(this.label49);
this.panel1.Controls.Add(this.txtAPosition);
this.panel1.Controls.Add(this.label46);
this.panel1.Controls.Add(this.label48);
this.panel1.Controls.Add(this.label45);
this.panel1.Controls.Add(this.txtAxisValue);
this.panel1.Controls.Add(this.txtAxisDeviceName);
this.panel1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.panel1.Location = new System.Drawing.Point(7, 17);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(540, 273);
this.panel1.TabIndex = 219;
//
// linkLabel1
//
this.linkLabel1.AutoSize = true;
this.linkLabel1.Location = new System.Drawing.Point(169, 178);
this.linkLabel1.Name = "linkLabel1";
this.linkLabel1.Size = new System.Drawing.Size(32, 17);
this.linkLabel1.TabIndex = 336;
this.linkLabel1.TabStop = true;
this.linkLabel1.Text = "复制";
this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked);
//
// comjSpeed
//
this.comjSpeed.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comjSpeed.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.comjSpeed.FormattingEnabled = true;
this.comjSpeed.Location = new System.Drawing.Point(71, 225);
this.comjSpeed.Name = "comjSpeed";
this.comjSpeed.Size = new System.Drawing.Size(95, 28);
this.comjSpeed.TabIndex = 335;
//
// btnComAlarmClear
//
this.btnComAlarmClear.BackColor = System.Drawing.Color.White;
this.btnComAlarmClear.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnComAlarmClear.Location = new System.Drawing.Point(307, 169);
this.btnComAlarmClear.Name = "btnComAlarmClear";
this.btnComAlarmClear.Size = new System.Drawing.Size(110, 34);
this.btnComAlarmClear.TabIndex = 50;
this.btnComAlarmClear.Text = "清除报警";
this.btnComAlarmClear.UseVisualStyleBackColor = false;
this.btnComAlarmClear.Click += new System.EventHandler(this.btnComAlarmClear_Click);
//
// btnAxisStop
//
this.btnAxisStop.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
this.btnAxisStop.Cursor = System.Windows.Forms.Cursors.Default;
this.btnAxisStop.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnAxisStop.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnAxisStop.ForeColor = System.Drawing.SystemColors.ControlText;
this.btnAxisStop.Location = new System.Drawing.Point(427, 90);
this.btnAxisStop.Name = "btnAxisStop";
this.btnAxisStop.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.btnAxisStop.Size = new System.Drawing.Size(110, 114);
this.btnAxisStop.TabIndex = 246;
this.btnAxisStop.Text = " 停止运动";
this.btnAxisStop.UseVisualStyleBackColor = false;
this.btnAxisStop.Click += new System.EventHandler(this.btnAxisStop_Click);
//
// btnAxisReturnHome
//
this.btnAxisReturnHome.BackColor = System.Drawing.Color.White;
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(307, 129);
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 = false;
this.btnAxisReturnHome.Click += new System.EventHandler(this.btnAxisReturnHome_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(71, 13);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(227, 28);
this.comboBox1.TabIndex = 301;
this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);
//
// btnMCopy
//
this.btnMCopy.BackColor = System.Drawing.Color.White;
this.btnMCopy.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnMCopy.Location = new System.Drawing.Point(468, 225);
this.btnMCopy.Name = "btnMCopy";
this.btnMCopy.Size = new System.Drawing.Size(69, 28);
this.btnMCopy.TabIndex = 334;
this.btnMCopy.Text = "复制";
this.btnMCopy.UseVisualStyleBackColor = false;
this.btnMCopy.Visible = false;
//
// btnDelMove
//
this.btnDelMove.BackColor = System.Drawing.Color.White;
this.btnDelMove.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnDelMove.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnDelMove.Location = new System.Drawing.Point(321, 217);
this.btnDelMove.Name = "btnDelMove";
this.btnDelMove.Size = new System.Drawing.Size(140, 45);
this.btnDelMove.TabIndex = 332;
this.btnDelMove.Text = "点动-(上升)";
this.btnDelMove.UseVisualStyleBackColor = false;
this.btnDelMove.MouseDown += new System.Windows.Forms.MouseEventHandler(this.btnDelMove_MouseDown);
this.btnDelMove.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btnDelMove_MouseUp);
//
// btnOpenAxis
//
this.btnOpenAxis.BackColor = System.Drawing.Color.White;
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(307, 9);
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 = false;
this.btnOpenAxis.Click += new System.EventHandler(this.btnOpenAxis_Click);
//
// btnCloseAxis
//
this.btnCloseAxis.BackColor = System.Drawing.Color.White;
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(427, 9);
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 = false;
this.btnCloseAxis.Click += new System.EventHandler(this.btnCloseAxis_Click);
//
// btnAddMove
//
this.btnAddMove.BackColor = System.Drawing.Color.White;
this.btnAddMove.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnAddMove.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnAddMove.Location = new System.Drawing.Point(172, 217);
this.btnAddMove.Name = "btnAddMove";
this.btnAddMove.Size = new System.Drawing.Size(140, 45);
this.btnAddMove.TabIndex = 330;
this.btnAddMove.Text = "点动+(上升)";
this.btnAddMove.UseVisualStyleBackColor = false;
this.btnAddMove.MouseDown += new System.Windows.Forms.MouseEventHandler(this.btnAddMove_MouseDown);
this.btnAddMove.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btnAddMove_MouseUp);
//
// 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(207, 99);
this.txtASpeed.MaxLength = 12;
this.txtASpeed.Name = "txtASpeed";
this.txtASpeed.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.txtASpeed.Size = new System.Drawing.Size(91, 26);
this.txtASpeed.TabIndex = 251;
this.txtASpeed.Text = "200";
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(9, 231);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(68, 17);
this.label1.TabIndex = 329;
this.label1.Text = "点动速度:";
//
// label47
//
this.label47.AutoSize = true;
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(142, 104);
this.label47.Name = "label47";
this.label47.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.label47.Size = new System.Drawing.Size(59, 17);
this.label47.TabIndex = 250;
this.label47.Text = "目标速度:";
this.label47.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// btnReadPosition
//
this.btnReadPosition.BackColor = System.Drawing.Color.White;
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(207, 140);
this.btnReadPosition.Name = "btnReadPosition";
this.btnReadPosition.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.btnReadPosition.Size = new System.Drawing.Size(91, 34);
this.btnReadPosition.TabIndex = 278;
this.btnReadPosition.Text = "读取位置";
this.btnReadPosition.UseVisualStyleBackColor = false;
this.btnReadPosition.Click += new System.EventHandler(this.btnReadPosition_Click);
//
// btnAxisVMove
//
this.btnAxisVMove.BackColor = System.Drawing.Color.White;
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(307, 89);
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 = false;
this.btnAxisVMove.Click += new System.EventHandler(this.btnAxisVMove_Click);
//
// 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(18, 149);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(59, 17);
this.label8.TabIndex = 255;
this.label8.Text = "实时位置:";
//
// btnAxisRMove
//
this.btnAxisRMove.BackColor = System.Drawing.Color.White;
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(427, 48);
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 = false;
this.btnAxisRMove.Click += new System.EventHandler(this.btnAxisRMove_Click);
//
// lblCountPulse
//
this.lblCountPulse.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lblCountPulse.Location = new System.Drawing.Point(83, 144);
this.lblCountPulse.Name = "lblCountPulse";
this.lblCountPulse.ReadOnly = true;
this.lblCountPulse.Size = new System.Drawing.Size(118, 26);
this.lblCountPulse.TabIndex = 38;
//
// btnAxisAMove
//
this.btnAxisAMove.BackColor = System.Drawing.Color.White;
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(307, 49);
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 = false;
this.btnAxisAMove.Click += new System.EventHandler(this.btnAxisAMove_Click);
//
// 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(10, 18);
this.label49.Name = "label49";
this.label49.Size = new System.Drawing.Size(51, 17);
this.label49.TabIndex = 233;
this.label49.Text = "AC伺服:";
this.label49.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// 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(207, 57);
this.txtAPosition.MaxLength = 12;
this.txtAPosition.Name = "txtAPosition";
this.txtAPosition.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.txtAPosition.Size = new System.Drawing.Size(91, 26);
this.txtAPosition.TabIndex = 244;
this.txtAPosition.Text = "3000";
//
// 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(26, 104);
this.label46.Name = "label46";
this.label46.Size = new System.Drawing.Size(35, 17);
this.label46.TabIndex = 239;
this.label46.Text = "地址:";
this.label46.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// label48
//
this.label48.AutoSize = true;
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(142, 62);
this.label48.Name = "label48";
this.label48.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.label48.Size = new System.Drawing.Size(59, 17);
this.label48.TabIndex = 243;
this.label48.Text = "目标位置:";
this.label48.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// 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(14, 62);
this.label45.Name = "label45";
this.label45.Size = new System.Drawing.Size(47, 17);
this.label45.TabIndex = 240;
this.label45.Text = "端口号:";
this.label45.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// 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(71, 99);
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(71, 57);
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";
//
// 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(32, 115);
this.lblServerOn.Name = "lblServerOn";
this.lblServerOn.Size = new System.Drawing.Size(0, 19);
this.lblServerOn.TabIndex = 268;
//
// txtStb
//
this.txtStb.Enabled = false;
this.txtStb.Location = new System.Drawing.Point(120, 76);
this.txtStb.Name = "txtStb";
this.txtStb.Size = new System.Drawing.Size(25, 23);
this.txtStb.TabIndex = 329;
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(54, 79);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(57, 17);
this.label2.TabIndex = 330;
this.label2.Text = "STB状态:";
//
// AxisMoveControl
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.Controls.Add(this.groupAxis);
this.Name = "AxisMoveControl";
this.Size = new System.Drawing.Size(731, 310);
this.groupAxis.ResumeLayout(false);
this.groupAxis.PerformLayout();
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.GroupBox groupAxis;
private System.Windows.Forms.ComboBox comboBox1;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.TextBox txtHomeSingle;
private System.Windows.Forms.Label label11;
private System.Windows.Forms.TextBox txtHomeStatus;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.TextBox txtBusyStatus;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.TextBox txtAlarmStatus;
private System.Windows.Forms.Button btnGetAlarm;
internal System.Windows.Forms.Button btnReadPosition;
private System.Windows.Forms.Label lblServerOn;
private System.Windows.Forms.Label label8;
internal System.Windows.Forms.Button btnOpenAxis;
internal System.Windows.Forms.Button btnCloseAxis;
private System.Windows.Forms.TextBox lblCountPulse;
internal System.Windows.Forms.TextBox txtASpeed;
internal System.Windows.Forms.Label label47;
internal System.Windows.Forms.Button btnAxisVMove;
internal System.Windows.Forms.Button btnAxisRMove;
internal System.Windows.Forms.Button btnAxisReturnHome;
internal System.Windows.Forms.Button btnAxisAMove;
private System.Windows.Forms.Button btnComAlarmClear;
internal System.Windows.Forms.TextBox txtAPosition;
internal System.Windows.Forms.Label label48;
internal 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.Label label24;
private System.Windows.Forms.TextBox txtLimit2;
private System.Windows.Forms.Label label22;
private System.Windows.Forms.TextBox txtLimit1;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.TextBox txtServoStatue;
private System.Windows.Forms.Button btnMCopy;
private System.Windows.Forms.Button btnDelMove;
private System.Windows.Forms.Button btnAddMove;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.ComboBox comjSpeed;
private System.Windows.Forms.LinkLabel linkLabel1;
private System.Windows.Forms.TextBox txtStb;
private System.Windows.Forms.Label label2;
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using OnlineStore.DeviceLibrary;
using OnlineStore.Common;
using System.Threading;
using OnlineStore.LoadCSVLibrary;
namespace OnlineStore.AutoCountClient
{
public partial class AxisMoveControl : UserControl
{
private List<AxisBean> axisList = new List<AxisBean>();
private BoxBean boxBean = null;
private string PortName = "";
private int SlvAddr = 0;
public AxisMoveControl()
{
InitializeComponent();
}
public void LoadData(BoxBean equipBase, params AxisBean[] moveAxis)
{
this.boxBean = equipBase;
axisList = new List<AxisBean>(moveAxis);
if (axisList.Count > 0)
{
comboBox1.Items.Clear();
foreach (AxisBean a in axisList)
{
comboBox1.Items.Add(a.Config.Explain);
}
comboBox1.SelectedIndex = 0;
PortName = moveAxis[0].Config.DeviceName;
SlvAddr = moveAxis[0].Config.GetAxisValue();
txtAxisDeviceName.Text = PortName;
txtAxisValue.Text = SlvAddr.ToString();
}
btnAddMove.BackColor = Color.White;
btnDelMove.BackColor = Color.White;
}
private bool CanMove()
{
//如果是取料升降轴,取料旋转轴,如果进出轴不在待机点,不能运动
if (boxBean.Config.UpDown_Axis.IsSameAxis(PortName, SlvAddr)
|| (boxBean.Config.Middle_Axis.IsSameAxis(PortName, SlvAddr)))
{
int InOutDefaultPosition = ConfigAppSettings.GetIntValue(Setting_Init.InOutDefaultPosition);
int currValue = boxBean.Config.InOut_Axis.GetAclPosition();
if (currValue <= InOutDefaultPosition)
{
return true;
}
MessageBox.Show("叉子不在待机位,请先将叉子退回待机位(" + InOutDefaultPosition + ")", "警告(叉子在待机位时,才能移动升降轴和旋转轴) ", MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
}
else
{
return true;
}
}
private void btnOpenAxis_Click(object sender, EventArgs e)
{
LogUtil.info("点击【打开伺服】,【" + PortName + "_" + SlvAddr + "】 ");
boxBean.RunAxis(false, axisList[comboBox1.SelectedIndex]);
}
private void btnCloseAxis_Click(object sender, EventArgs e)
{
LogUtil.info("点击【关闭伺服】,【" + PortName + "_" + SlvAddr + "】 ");
// ACServerManager.ServoOff(PortName, SlvAddr);
boxBean.CloseAxis(axisList[comboBox1.SelectedIndex]);
}
private void btnAxisAMove_Click(object sender, EventArgs e)
{
if (!CanMove())
{
return;
}
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)
{
if (!CanMove())
{
return;
}
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)
{
if (!CanMove())
{
return;
}
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);
if (btnAddMove.BackColor == Color.Green)
{
btnAddMove.BackColor = System.Drawing.SystemColors.Control;
}
if (btnDelMove.BackColor == Color.Green)
{
btnDelMove.BackColor = System.Drawing.SystemColors.Control;
}
btnReadPosition_Click(null, null);
}
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)
{
if (!CanMove())
{
return;
}
int speed = FormUtil.GetIntValue(txtASpeed);
LogUtil.info("点击【原点返回】,【" + PortName + "_" + SlvAddr + "】 速度【" + speed + "】");
ACServerManager.HomeMove(PortName, SlvAddr, speed);
}
private void btnGetAlarm_Click(object sender, EventArgs e)
{
this.txtAlarmStatus.Text = ACServerManager.GetAlarmStatus(PortName, SlvAddr).ToString();
this.txtBusyStatus.Text = ACServerManager.GetBusyStatus(PortName, SlvAddr).ToString();
this.txtStb.Text = ACServerManager.GetSTBState(PortName, SlvAddr).ToString();
this.txtHomeStatus.Text = ACServerManager.GetHomeEndStatus(PortName, SlvAddr).ToString();
this.txtHomeSingle.Text = ACServerManager.GetHomeSingle(PortName, SlvAddr).ToString();
this.txtLimit1.Text = ACServerManager.GetLimitPositiveSingle(PortName, SlvAddr).ToString();
this.txtLimit2.Text = ACServerManager.GetLimitNegativeSingle(PortName, SlvAddr).ToString();
txtServoStatue.Text = ACServerManager.ServerOnStatus(PortName, SlvAddr) ? "✔" : "✘";
}
private void btnReadPosition_Click(object sender, EventArgs e)
{
lblCountPulse.Text = ACServerManager.GetActualtPosition(PortName, SlvAddr).ToString();
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBox1.SelectedIndex >= 0)
{
ConfigMoveAxis axis = axisList[comboBox1.SelectedIndex].Config;
PortName = axis.DeviceName;
SlvAddr = axis.GetAxisValue();
txtAxisDeviceName.Text = PortName;
txtAxisValue.Text = SlvAddr.ToString();
Color color = Color.Black;
int targetSpeed = axis.TargetSpeed;
comjSpeed.Items.Clear();
for (int i = 1; i <= 10; i++)
{
comjSpeed.Items.Add(targetSpeed * i / 10);
}
comjSpeed.SelectedIndex = 4;
btnAddMove.Text = "点动+ ";
btnDelMove.Text = "点动- ";
txtASpeed.Text = targetSpeed.ToString();
int SelIndex = comboBox1.SelectedIndex;
if (SelIndex.Equals(0))
{
color = Color.Blue;
}
else if (SelIndex.Equals(1))
{
color = Color.Red;
}
else if (SelIndex.Equals(2))
{
color = Color.Green;
}
else if (SelIndex.Equals(3))
{
color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(192))))); ;
}
else if (SelIndex.Equals(4))
{
color = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0)))));
}
else if (SelIndex.Equals(5))
{
color = Color.BlueViolet;
}
else if (SelIndex.Equals(6))
{
color = Color.Firebrick;
}
btnOpenAxis.ForeColor = color;
btnCloseAxis.ForeColor = color;
btnAxisAMove.ForeColor = color;
btnAxisRMove.ForeColor = color;
btnAxisVMove.ForeColor = color;
btnAxisReturnHome.ForeColor = color;
btnAxisStop.ForeColor = color;
btnComAlarmClear.ForeColor = color;
btnReadPosition.ForeColor = color;
btnGetAlarm.ForeColor = color;
btnAddMove.ForeColor = color;
btnDelMove.ForeColor = color;
this.txtAlarmStatus.Text = "";
this.txtBusyStatus.Text = "";
this.txtHomeStatus.Text = "";
this.txtHomeSingle.Text = "";
this.txtLimit1.Text = "";
this.txtLimit2.Text = "";
txtServoStatue.Text = "";
}
}
private void AxisMove(int speed)
{
LogUtil.info("【" + PortName + "_" + SlvAddr + "】点动: 速度:" + speed);
ACServerManager.SpeedMove(PortName, SlvAddr, speed);
}
private void btnAddMove_MouseDown(object sender, MouseEventArgs e)
{
if (!CanMove())
{
return;
}
if (btnAddMove.BackColor.Equals(Color.White))
{
int speed = Convert.ToInt32(comjSpeed.Text);
if (speed <= 0)
{
MessageBox.Show("提示", "请先输入正确的速度");
return;
}
btnAddMove.BackColor = Color.Green;
AxisMove(speed);
}
}
private void btnAddMove_MouseUp(object sender, MouseEventArgs e)
{
if (btnAddMove.BackColor == Color.Green)
{
btnAddMove.BackColor = Color.White;
ACServerManager.SuddenStop(PortName, SlvAddr);
btnReadPosition_Click(null, null);
}
}
private void btnDelMove_MouseDown(object sender, MouseEventArgs e)
{
if (!CanMove())
{
return;
}
if (btnDelMove.BackColor.Equals(Color.White))
{
int speed = Convert.ToInt32(comjSpeed.Text);
if (speed <= 0)
{
MessageBox.Show("提示", "请先输入正确的速度");
return;
}
btnDelMove.BackColor = Color.Green;
AxisMove(-speed);
}
}
private void btnDelMove_MouseUp(object sender, MouseEventArgs e)
{
if (btnDelMove.BackColor == Color.Green)
{
btnDelMove.BackColor = Color.White;
ACServerManager.SuddenStop(PortName, SlvAddr);
btnReadPosition_Click(null, null);
}
}
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Clipboard.SetDataObject(lblCountPulse.Text, true);
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
\ No newline at end of file
类型,说明,名称,属性值,设备名称,默认值,描述,电器定义,代码定义,SlaveID,
PRO,IO模块对应的DI数量,IO_DILength,192.168.202.21#8,,,,,,,,,,,
PRO,模块对应的DO数量,IO_DOLength,192.168.202.21#8,,,,,,,,,,,
PRO,是否有仓门,HasDoor,1,,,,,,,,,,,
PRO,IO模块IP,PRO_AOI_IP_1,192.168.202.21,,,,,,,,,,,
,,,,,,,,,,
DI,急停,SuddenStop_BTN,0,PRO_AOI_IP_1,0,急停,X01,DI-01,0,
DI,复位,Reset_BTN,1,PRO_AOI_IP_1,0,复位,X02,DI-02,0,
DI,盘点,CheckPos,2,PRO_AOI_IP_1,0,盘点,X03,DI-03,0,
DI,料盘检测1(进料口),TrayCheck_Door,3,PRO_AOI_IP_1,0,料盘检测1(进料口),X04,DI-04,0,
DI,料盘检测2(料叉),TrayCheck_Fixture,4,PRO_AOI_IP_1,0,料盘检测2(料叉),X05,DI-05,0,
DI,气压检测,Airpressure_Check,5,PRO_AOI_IP_1,0,气压检测,X06,DI-06,0,
DI,进料口门上升端,Door_Up,6,PRO_AOI_IP_1,0,进料口门上升端,X07,DI-07,0,
DI,进料口门下降端,Door_Down,7,PRO_AOI_IP_1,0,进料口门下降端,X08,DI-08,0,
DO,自动指示灯,AutoRun_HddLed,0,PRO_AOI_IP_1,0,自动指示灯,Y01,DO-01,0,
DO,故障指示灯,Alarm_HddLed,1,PRO_AOI_IP_1,0,故障指示灯,Y02,DO-02,0,
DO,待机指示灯,RunSign_HddLed,2,PRO_AOI_IP_1,0,待机指示灯,Y03,DO-03,0,
DO,料仓运转ON,Run_Signal,3,PRO_AOI_IP_1,0,料仓运转ON,Y04,DO-04,0,
DO,轴2刹车电源ON,Axis_Brake,4,PRO_AOI_IP_1,0,轴2刹车电源ON,Y05,DO-05,0,
DO,料仓吹气SOL,StartOrStopBlow,5,PRO_AOI_IP_1,0,料仓吹气SOL,Y06,DO-06,0,
DO,进料口门上升SOL,Door_Up,6,PRO_AOI_IP_1,0,进料口门上升SOL,Y07,DO-07,0,
DO,进料口门下降SOL,Door_Down,7,PRO_AOI_IP_1,0,进料口门下降SOL,Y08,DO-08,0,
AXIS,(轴一)旋转轴,Middle_Axis,1,COM4,0,,,,,
AXIS,(轴二)升降轴轴,UpDown_Axis,2,COM4,0,,,,,
AXIS,(轴三)进出轴,InOut_Axis,3,COM4,0,,,,,
AXIS,(轴四)压紧轴,Comp_Axis,4,COM4,0,,,,,
PRO,升降轴 进料口取料点 P1,UpDownAxis_DoorOPosition_P1,304500,,,,,,,,,,,
PRO,升降轴 进料口出料前点 P2,UpDownAxis_DoorIPosition_P2,325300,,,,,,,,,,,
PRO,升降轴 进料口取料缓冲点 P7,UpDownAxis_DoorOBPosition_P7,325300,,,,,,,,,,,
PRO,升降轴 进料口出料缓冲点 P8,UpDownAxis_DoorIBPosition_P8,304500,,,,,,,,,,,
PRO,旋转轴(轴1)P1 待机原位点,MiddleAxis_P1_Position,359300,,,,,,,,,,,
PRO,进出轴(轴3)P1待机原位点,InOutAxis_P1_Position,1000,,,,,,,,,,,
PRO,压紧轴(轴4)P1待机原位点,CompressAxis_P1_Position,28000,,,,,,,,,,,
PRO,是否使用定位气缸,IsHasLocationCylinder,0,,,,,,,,,,,
PRO,是否有左右侧门,IsHasDoorLimit,1,,,,,,,,,,,
PRO,是否使用压紧轴(1=使用),IsHasCompress_Axis,1,,,,, ,, ,,,,
PRO,气压检测IO关闭需要持续的时间,AirCheckSeconds,3,,,,,,, ,,,,
,,,,,,,,,,
PRO,预警温度,WarnTemperate,80,,,,,,,,,,,
PRO,预警湿度,WarnHumidity,80,,,,,,,,,,,
PRO,(轴一)旋转轴目标速度,MiddleAxis_TargetSpeed,250,,,,,,,,,,,
PRO,(轴一)旋转轴加速度,MiddleAxis_AddSpeed,1000,,,,,,,,,,,
PRO,(轴一)旋转轴减速度,MiddleAxis_DelSpeed,1000,,,,,,,,,,,
PRO,(轴一)旋转轴原点低速度,MiddleAxis_HomeLowSpeed,80,,,,,,,,,,,
PRO,(轴一)旋转轴原点高速,MiddleAxis_HomeHighSpeed,60,,,,,,,,,,,
PRO,(轴一)旋转轴原点加速度,MiddleAxis_HomeAddSpeed,50,,,,,,,,,,,
PRO,(轴二)升降轴轴目标速度,UpdownAxis_TargetSpeed,150,,,,,,,,,,,
PRO,(轴二)升降轴轴加速度,UpdownAxis_AddSpeed,400,,,,,,,,,,,
PRO,(轴二)升降轴轴减速度,UpdownAxis_DelSpeed,400,,,,,,,,,,,
PRO,(轴二)升降轴轴原点低速度,UpdownAxis_HomeLowSpeed,100,,,,,,,,,,,
PRO,(轴二)升降轴轴原点高速,UpdownAxis_HomeHighSpeed,200,,,,,,,,,,,
PRO,(轴二)升降轴轴原点加速度,UpdownAxis_HomeAddSpeed,200,,,,,,,,,,,
PRO,(轴三)进出轴目标速度,InoutAxis_TargetSpeed,100,,,,,,,,,,,
PRO,(轴三)进出轴加速度,InoutAxis_AddSpeed,300,,,,,,,,,,,
PRO,(轴三)进出轴减速度,InoutAxis_DelSpeed,300,,,,,,,,,,,
PRO,(轴三)进出轴原点低速,InoutAxis_HomeLowSpeed,20,,,,,,,,,,,
PRO,(轴三)进出轴原点高速,InoutAxis_HomeHighSpeed,60,,,,,,,,,,,
PRO,(轴三)进出轴原点加速度,InoutAxis_HomeAddSpeed,200,,,,,,,,,,,
PRO,(轴四)压紧轴目标速度,CompAxis_TargetSpeed,100,,,,,,,,,,,
PRO,(轴四)压紧轴加速度,CompAxis_AddSpeed,300,,,,,,,,,,,
PRO,(轴四)压紧轴减速度,CompAxis_DelSpeed,300,,,,,,,,,,,
PRO,(轴四)压紧轴原点低速,CompAxis_HomeLowSpeed,20,,,,,,,,,,,
PRO,(轴四)压紧轴原点高速,CompAxis_HomeHighSpeed,60,,,,,,,,,,,
PRO,(轴四)压紧轴原点加速度,CompAxis_HomeAddSpeed,200,,,,,,,,,,,
,,,,,,,,,,
PRO,升降轴(轴2)P1速度,UpDownAxis_P1_Speed,1000,,,,,,,,,,,
PRO,升降轴(轴2)P2速度,UpDownAxis_P2_Speed,600,,,,,,,,,,,
PRO,升降轴(轴2)P3速度,UpDownAxis_P3_Speed,1000,,,,,,,,,,,
PRO,升降轴(轴2)P4速度,UpDownAxis_P4_Speed,100,,,,,,,,,,,
PRO,升降轴(轴2)P5速度,UpDownAxis_P5_Speed,1000,,,,,,,,,,,
PRO,升降轴(轴2)P6速度,UpDownAxis_P6_Speed,100,,,,,,,,,,,
PRO,升降轴(轴2)P7速度,UpDownAxis_P7_Speed,100,,,,,, ,,,,,
PRO,升降轴(轴2)P8速度,UpDownAxis_P8_Speed,100,,,,,,,,,,,
PRO,旋转轴(轴1)P1速度,MiddleAxis_P1_Speed,500,,,,,,,,,,,
PRO,旋转轴(轴1)P2速度,MiddleAxis_P2_Speed,500,,,,,,,,,,,
PRO,进出轴(轴3)P1速度,InOutAxis_P1_Speed,500,,,,,,,,,,,
PRO,进出轴(轴3)P2速度,InOutAxis_P2_Speed,500,,,,,,,,,,,
PRO,进出轴(轴3)P3速度,InOutAxis_P3_Speed,500,,,,,,,,,,,
PRO,压紧轴(轴4)P1速度,CompAxis_P1_Speed,800,,,,,,,,,,,
PRO,压紧轴(轴4)P2速度,CompAxis_P2_Speed,800,,,,,,,,,,,
PRO,压紧轴(轴4)P3速度,CompAxis_P3_Speed,800,,,,,,,,,,,
PRO,(轴一)旋转轴停止时可误差的脉冲数的最小值,MiddleAxis_ErrorCountMin,10,,,,,,,,,,,
PRO,(轴二)升降轴轴停止时可误差的脉冲数的最小值,UpdownAxis_ErrorCountMin,10,,,,,, ,,,,,
PRO,(轴三)进出轴停止时可误差的脉冲数的最小值,InoutAxis_ErrorCountMin,10,,,,,,,,,,,
PRO,(轴一)旋转轴停止时可误差的脉冲数的最大值,MiddleAxis_ErrorCountMax,1000,,,,,,,,,,,
PRO,(轴二)升降轴轴停止时可误差的脉冲数的最大值,UpdownAxis_ErrorCountMax,1000,,,,,,,,,,,
PRO,(轴三)进出轴停止时可误差的脉冲数的最大值,InoutAxis_ErrorCountMax,1000,,,,,,,,,,,
PRO,出入库多少次,会自动重置旋转轴,Box_ResetMCount,1000,,,,,,,,,,,
PRO,出入库多少次,会自动重置所有轴操作,Box_ResetACount,100,,,,,,,,,,,
PRO,IO信号超时时间(毫秒),IOSingle_TimerOut,10000,,,,,,,,,,,
PRO,是否使用料盘检测信号,IsUse_Tray_Check,0,,,,,, ,,,,,
PRO,(轴一)旋转轴最小限位,MiddleAxis_PositionMin,0,,,,,,,,,,,
PRO,(轴二)升降轴最小限位,UpdownAxis_PositionMin,0,,,,,,,,,,,
PRO,(轴三)进出轴最小限位,InoutAxis_PositionMin,0,,,,,,,,,,,
PRO,(轴一)旋转轴最大限位,MiddleAxis_PositionMax,0,,,,,,,,,,,
PRO,(轴二)升降轴最大限位,UpdownAxis_PositionMax,0,,,,,,,,,,,
PRO,(轴三)进出轴最大限位,InoutAxis_PositionMax,0,,,,,,,,,,,
PRO,需要吹气的温度(温度标准),Max_Temperature,0,,,,,,,,,,,
PRO,需要吹气的湿度(湿度标准),Max_Humidity,10,,,,,,,,,,,
PRO,每次吹气的时间(分钟),BlowAir_Time,10,,,,,,,,,,,
PRO,两次吹气间隔(分钟),BlowAir_Interval,10,,,,,,, ,,,,
PRO,温湿度端口号,Humiture_Port,COM5,,,,,,,,,,,
,,,,,,,,, ,
,,,,,,,,, ,
类型,分类编号,说明,名称,属性值,设备名称,电器定义,目标速度,加速度,减速度,回零低速,回零高速,回零加速度,脉冲最小误差,脉冲最大误差,脉冲最小限位,脉冲最大限位
AXIS,0,(轴一)旋转轴,Middle_Axis,1,HC,,250,1000,1000,60,80,50,10,100,0,0
AXIS,0,(轴二)升降轴轴,UpDown_Axis,2,HC,,150,400,400,100,200,200,10,100,0,0
AXIS,0,(轴三)进出轴,InOut_Axis,3,HC,,100,300,300,20,60,200,10,100,0,0
AXIS,0,(轴四)压紧轴,Comp_Axis,4,HC,,100,300,300,20,60,200,10,100,0,0
,,,,,,,,,,,,,,,,
PRO,0,升降轴(轴2)进料口取料点 P1,UpDownAxis_DoorOPosition_P1,304500,,,,,,,,,,,,
PRO,0,升降轴(轴2)进料口出料前点 P2,UpDownAxis_DoorIPosition_P2,325300,,,,,,,,,,,,
PRO,0,升降轴(轴2)进料口取料缓冲点 P7,UpDownAxis_DoorOBPosition_P7,325300,,,,,,,,,,,,
PRO,0,升降轴(轴2)进料口出料缓冲点 P8,UpDownAxis_DoorIBPosition_P8,304500,,,,,,,,,,,,
PRO,0,旋转轴(轴1)P1 待机原位点,MiddleAxis_P1_Position,359300,,,,,,,,,,,,
PRO,0,进出轴(轴3)P1待机原位点,InOutAxis_P1_Position,1000,,,,,,,,,,,,
PRO,0,压紧轴(轴4)P1待机原位点,CompressAxis_P1_Position,28000,,,,,,,,,,,,
,,,,,,,,,,,,,,,,
PRO,0,升降轴(轴2)P1速度,UpDownAxis_P1_Speed,1000,,,,,,,,,,,,
PRO,0,升降轴(轴2)P2速度,UpDownAxis_P2_Speed,600,,,,,,,,,,,,
PRO,0,升降轴(轴2)P3速度,UpDownAxis_P3_Speed,1000,,,,,,,,,,,,
PRO,0,升降轴(轴2)P4速度,UpDownAxis_P4_Speed,100,,,,,,,,,,,,
PRO,0,升降轴(轴2)P5速度,UpDownAxis_P5_Speed,1000,,,,,,,,,,,,
PRO,0,升降轴(轴2)P6速度,UpDownAxis_P6_Speed,100,,,,,,,,,,,,
PRO,0,升降轴(轴2)P7速度,UpDownAxis_P7_Speed,100,,,,,,,,,,,,
PRO,0,升降轴(轴2)P8速度,UpDownAxis_P8_Speed,100,,,,,,,,,,,,
PRO,0,旋转轴(轴1)P1速度,MiddleAxis_P1_Speed,500,,,,,,,,,,,,
PRO,0,旋转轴(轴1)P2速度,MiddleAxis_P2_Speed,500,,,,,,,,,,,,
PRO,0,进出轴(轴3)P1速度,InOutAxis_P1_Speed,500,,,,,,,,,,,,
PRO,0,进出轴(轴3)P2速度,InOutAxis_P2_Speed,500,,,,,,,,,,,,
PRO,0,进出轴(轴3)P3速度,InOutAxis_P3_Speed,500,,,,,,,,,,,,
PRO,0,压紧轴(轴4)P1速度,CompAxis_P1_Speed,800,,,,,,,,,,,,
PRO,0,压紧轴(轴4)P2速度,CompAxis_P2_Speed,800,,,,,,,,,,,,
PRO,0,压紧轴(轴4)P3速度,CompAxis_P3_Speed,800,,,,,,,,,,,,
PRO,0,出入库多少次,会自动重置旋转轴,Box_ResetMCount,1000,,,,,,,,,,,,
PRO,0,出入库多少次,会自动重置所有轴操作,Box_ResetACount,100,,,,,,,,,,,,
PRO,0,IO信号超时时间(毫秒),IOSingle_TimerOut,10000,,,,,,,,,,,,
PRO,0,是否使用料盘检测信号,IsUse_Tray_Check,0,,,,,,,,,,,,
PRO,0,是否调试状态,ISDebug,0,,,,,,,,,,,,
PRO,,每次吹气的时间(分钟),BlowAir_Time,10,,,
PRO,,两次吹气间隔(分钟),BlowAir_Interval,10,,,
类型,说明,名称,属性值,设备名称,默认值,描述,电器定义,代码定义,SlaveID,
PRO,IO模块对应的DI数量,IO_DILength,192.168.202.21#8,,,,,,,,,,,
PRO,模块对应的DO数量,IO_DOLength,192.168.202.21#8,,,,,,,,,,,
PRO,是否有仓门,HasDoor,1,,,,,,,,,,,
PRO,IO模块IP,PRO_AOI_IP_1,192.168.202.21,,,,,,,,,,,
,,,,,,,,,,
DI,急停,SuddenStop_BTN,0,PRO_AOI_IP_1,0,急停,X01,DI-01,0,
DI,复位,Reset_BTN,1,PRO_AOI_IP_1,0,复位,X02,DI-02,0,
DI,盘点,CheckPos,2,PRO_AOI_IP_1,0,盘点,X03,DI-03,0,
DI,料盘检测1(进料口),TrayCheck_Door,3,PRO_AOI_IP_1,0,料盘检测1(进料口),X04,DI-04,0,
DI,料盘检测2(料叉),TrayCheck_Fixture,4,PRO_AOI_IP_1,0,料盘检测2(料叉),X05,DI-05,0,
DI,气压检测,Airpressure_Check,5,PRO_AOI_IP_1,0,气压检测,X06,DI-06,0,
DI,进料口门上升端,Door_Up,6,PRO_AOI_IP_1,0,进料口门上升端,X07,DI-07,0,
DI,进料口门下降端,Door_Down,7,PRO_AOI_IP_1,0,进料口门下降端,X08,DI-08,0,
DO,自动指示灯,AutoRun_HddLed,0,PRO_AOI_IP_1,0,自动指示灯,Y01,DO-01,0,
DO,故障指示灯,Alarm_HddLed,1,PRO_AOI_IP_1,0,故障指示灯,Y02,DO-02,0,
DO,待机指示灯,RunSign_HddLed,2,PRO_AOI_IP_1,0,待机指示灯,Y03,DO-03,0,
DO,料仓运转ON,Run_Signal,3,PRO_AOI_IP_1,0,料仓运转ON,Y04,DO-04,0,
DO,轴2刹车电源ON,Axis_Brake,4,PRO_AOI_IP_1,0,轴2刹车电源ON,Y05,DO-05,0,
DO,料仓吹气SOL,StartOrStopBlow,5,PRO_AOI_IP_1,0,料仓吹气SOL,Y06,DO-06,0,
DO,进料口门上升SOL,Door_Up,6,PRO_AOI_IP_1,0,进料口门上升SOL,Y07,DO-07,0,
DO,进料口门下降SOL,Door_Down,7,PRO_AOI_IP_1,0,进料口门下降SOL,Y08,DO-08,0,
AXIS,(轴一)旋转轴,Middle_Axis,1,COM4,0,,,,,
AXIS,(轴二)升降轴轴,UpDown_Axis,2,COM4,0,,,,,
AXIS,(轴三)进出轴,InOut_Axis,3,COM4,0,,,,,
AXIS,(轴四)压紧轴,Comp_Axis,4,COM4,0,,,,,
PRO,升降轴 进料口取料点 P1,UpDownAxis_DoorOPosition_P1,304500,,,,,,,,,,,
PRO,升降轴 进料口出料前点 P2,UpDownAxis_DoorIPosition_P2,325300,,,,,,,,,,,
PRO,升降轴 进料口取料缓冲点 P7,UpDownAxis_DoorOBPosition_P7,325300,,,,,,,,,,,
PRO,升降轴 进料口出料缓冲点 P8,UpDownAxis_DoorIBPosition_P8,304500,,,,,,,,,,,
PRO,旋转轴(轴1)P1 待机原位点,MiddleAxis_P1_Position,359300,,,,,,,,,,,
PRO,进出轴(轴3)P1待机原位点,InOutAxis_P1_Position,1000,,,,,,,,,,,
PRO,压紧轴(轴4)P1待机原位点,CompressAxis_P1_Position,28000,,,,,,,,,,,
PRO,是否使用定位气缸,IsHasLocationCylinder,0,,,,,,,,,,,
PRO,是否有左右侧门,IsHasDoorLimit,1,,,,,,,,,,,
PRO,是否使用压紧轴(1=使用),IsHasCompress_Axis,1,,,,, ,, ,,,,
PRO,气压检测IO关闭需要持续的时间,AirCheckSeconds,3,,,,,,, ,,,,
,,,,,,,,,,
PRO,预警温度,WarnTemperate,80,,,,,,,,,,,
PRO,预警湿度,WarnHumidity,80,,,,,,,,,,,
PRO,(轴一)旋转轴目标速度,MiddleAxis_TargetSpeed,250,,,,,,,,,,,
PRO,(轴一)旋转轴加速度,MiddleAxis_AddSpeed,1000,,,,,,,,,,,
PRO,(轴一)旋转轴减速度,MiddleAxis_DelSpeed,1000,,,,,,,,,,,
PRO,(轴一)旋转轴原点低速度,MiddleAxis_HomeLowSpeed,80,,,,,,,,,,,
PRO,(轴一)旋转轴原点高速,MiddleAxis_HomeHighSpeed,60,,,,,,,,,,,
PRO,(轴一)旋转轴原点加速度,MiddleAxis_HomeAddSpeed,50,,,,,,,,,,,
PRO,(轴二)升降轴轴目标速度,UpdownAxis_TargetSpeed,150,,,,,,,,,,,
PRO,(轴二)升降轴轴加速度,UpdownAxis_AddSpeed,400,,,,,,,,,,,
PRO,(轴二)升降轴轴减速度,UpdownAxis_DelSpeed,400,,,,,,,,,,,
PRO,(轴二)升降轴轴原点低速度,UpdownAxis_HomeLowSpeed,100,,,,,,,,,,,
PRO,(轴二)升降轴轴原点高速,UpdownAxis_HomeHighSpeed,200,,,,,,,,,,,
PRO,(轴二)升降轴轴原点加速度,UpdownAxis_HomeAddSpeed,200,,,,,,,,,,,
PRO,(轴三)进出轴目标速度,InoutAxis_TargetSpeed,100,,,,,,,,,,,
PRO,(轴三)进出轴加速度,InoutAxis_AddSpeed,300,,,,,,,,,,,
PRO,(轴三)进出轴减速度,InoutAxis_DelSpeed,300,,,,,,,,,,,
PRO,(轴三)进出轴原点低速,InoutAxis_HomeLowSpeed,20,,,,,,,,,,,
PRO,(轴三)进出轴原点高速,InoutAxis_HomeHighSpeed,60,,,,,,,,,,,
PRO,(轴三)进出轴原点加速度,InoutAxis_HomeAddSpeed,200,,,,,,,,,,,
PRO,(轴四)压紧轴目标速度,CompAxis_TargetSpeed,100,,,,,,,,,,,
PRO,(轴四)压紧轴加速度,CompAxis_AddSpeed,300,,,,,,,,,,,
PRO,(轴四)压紧轴减速度,CompAxis_DelSpeed,300,,,,,,,,,,,
PRO,(轴四)压紧轴原点低速,CompAxis_HomeLowSpeed,20,,,,,,,,,,,
PRO,(轴四)压紧轴原点高速,CompAxis_HomeHighSpeed,60,,,,,,,,,,,
PRO,(轴四)压紧轴原点加速度,CompAxis_HomeAddSpeed,200,,,,,,,,,,,
,,,,,,,,,,
PRO,升降轴(轴2)P1速度,UpDownAxis_P1_Speed,1000,,,,,,,,,,,
PRO,升降轴(轴2)P2速度,UpDownAxis_P2_Speed,600,,,,,,,,,,,
PRO,升降轴(轴2)P3速度,UpDownAxis_P3_Speed,1000,,,,,,,,,,,
PRO,升降轴(轴2)P4速度,UpDownAxis_P4_Speed,100,,,,,,,,,,,
PRO,升降轴(轴2)P5速度,UpDownAxis_P5_Speed,1000,,,,,,,,,,,
PRO,升降轴(轴2)P6速度,UpDownAxis_P6_Speed,100,,,,,,,,,,,
PRO,升降轴(轴2)P7速度,UpDownAxis_P7_Speed,100,,,,,, ,,,,,
PRO,升降轴(轴2)P8速度,UpDownAxis_P8_Speed,100,,,,,,,,,,,
PRO,旋转轴(轴1)P1速度,MiddleAxis_P1_Speed,500,,,,,,,,,,,
PRO,旋转轴(轴1)P2速度,MiddleAxis_P2_Speed,500,,,,,,,,,,,
PRO,进出轴(轴3)P1速度,InOutAxis_P1_Speed,500,,,,,,,,,,,
PRO,进出轴(轴3)P2速度,InOutAxis_P2_Speed,500,,,,,,,,,,,
PRO,进出轴(轴3)P3速度,InOutAxis_P3_Speed,500,,,,,,,,,,,
PRO,压紧轴(轴4)P1速度,CompAxis_P1_Speed,800,,,,,,,,,,,
PRO,压紧轴(轴4)P2速度,CompAxis_P2_Speed,800,,,,,,,,,,,
PRO,压紧轴(轴4)P3速度,CompAxis_P3_Speed,800,,,,,,,,,,,
PRO,(轴一)旋转轴停止时可误差的脉冲数的最小值,MiddleAxis_ErrorCountMin,10,,,,,,,,,,,
PRO,(轴二)升降轴轴停止时可误差的脉冲数的最小值,UpdownAxis_ErrorCountMin,10,,,,,, ,,,,,
PRO,(轴三)进出轴停止时可误差的脉冲数的最小值,InoutAxis_ErrorCountMin,10,,,,,,,,,,,
PRO,(轴一)旋转轴停止时可误差的脉冲数的最大值,MiddleAxis_ErrorCountMax,1000,,,,,,,,,,,
PRO,(轴二)升降轴轴停止时可误差的脉冲数的最大值,UpdownAxis_ErrorCountMax,1000,,,,,,,,,,,
PRO,(轴三)进出轴停止时可误差的脉冲数的最大值,InoutAxis_ErrorCountMax,1000,,,,,,,,,,,
PRO,出入库多少次,会自动重置旋转轴,Box_ResetMCount,1000,,,,,,,,,,,
PRO,出入库多少次,会自动重置所有轴操作,Box_ResetACount,100,,,,,,,,,,,
PRO,IO信号超时时间(毫秒),IOSingle_TimerOut,10000,,,,,,,,,,,
PRO,是否使用料盘检测信号,IsUse_Tray_Check,0,,,,,, ,,,,,
PRO,(轴一)旋转轴最小限位,MiddleAxis_PositionMin,0,,,,,,,,,,,
PRO,(轴二)升降轴最小限位,UpdownAxis_PositionMin,0,,,,,,,,,,,
PRO,(轴三)进出轴最小限位,InoutAxis_PositionMin,0,,,,,,,,,,,
PRO,(轴一)旋转轴最大限位,MiddleAxis_PositionMax,0,,,,,,,,,,,
PRO,(轴二)升降轴最大限位,UpdownAxis_PositionMax,0,,,,,,,,,,,
PRO,(轴三)进出轴最大限位,InoutAxis_PositionMax,0,,,,,,,,,,,
PRO,需要吹气的温度(温度标准),Max_Temperature,0,,,,,,,,,,,
PRO,需要吹气的湿度(湿度标准),Max_Humidity,10,,,,,,,,,,,
PRO,每次吹气的时间(分钟),BlowAir_Time,10,,,,,,,,,,,
PRO,两次吹气间隔(分钟),BlowAir_Interval,10,,,,,,, ,,,,
PRO,温湿度端口号,Humiture_Port,COM5,,,,,,,,,,,
,,,,,,,,, ,
,,,,,,,,, ,
类型,分类编号,说明,名称,属性值,设备名称,电器定义,目标速度,加速度,减速度,回零低速,回零高速,回零加速度,脉冲最小误差,脉冲最大误差,脉冲最小限位,脉冲最大限位
AXIS,0,(轴一)旋转轴,Middle_Axis,1,HC,,250,1000,1000,60,80,50,10,100,0,0
AXIS,0,(轴二)升降轴轴,UpDown_Axis,2,HC,,150,400,400,100,200,200,10,100,0,0
AXIS,0,(轴三)进出轴,InOut_Axis,3,HC,,100,300,300,20,60,200,10,100,0,0
AXIS,0,(轴四)压紧轴,Comp_Axis,4,HC,,100,300,300,20,60,200,10,100,0,0
,,,,,,,,,,,,,,,,
PRO,0,升降轴(轴2)进料口取料点 P1,UpDownAxis_DoorOPosition_P1,304500,,,,,,,,,,,,
PRO,0,升降轴(轴2)进料口出料前点 P2,UpDownAxis_DoorIPosition_P2,325300,,,,,,,,,,,,
PRO,0,升降轴(轴2)进料口取料缓冲点 P7,UpDownAxis_DoorOBPosition_P7,325300,,,,,,,,,,,,
PRO,0,升降轴(轴2)进料口出料缓冲点 P8,UpDownAxis_DoorIBPosition_P8,304500,,,,,,,,,,,,
PRO,0,旋转轴(轴1)P1 待机原位点,MiddleAxis_P1_Position,359300,,,,,,,,,,,,
PRO,0,进出轴(轴3)P1待机原位点,InOutAxis_P1_Position,1000,,,,,,,,,,,,
PRO,0,压紧轴(轴4)P1待机原位点,CompressAxis_P1_Position,28000,,,,,,,,,,,,
,,,,,,,,,,,,,,,,
PRO,0,升降轴(轴2)P1速度,UpDownAxis_P1_Speed,1000,,,,,,,,,,,,
PRO,0,升降轴(轴2)P2速度,UpDownAxis_P2_Speed,600,,,,,,,,,,,,
PRO,0,升降轴(轴2)P3速度,UpDownAxis_P3_Speed,1000,,,,,,,,,,,,
PRO,0,升降轴(轴2)P4速度,UpDownAxis_P4_Speed,100,,,,,,,,,,,,
PRO,0,升降轴(轴2)P5速度,UpDownAxis_P5_Speed,1000,,,,,,,,,,,,
PRO,0,升降轴(轴2)P6速度,UpDownAxis_P6_Speed,100,,,,,,,,,,,,
PRO,0,升降轴(轴2)P7速度,UpDownAxis_P7_Speed,100,,,,,,,,,,,,
PRO,0,升降轴(轴2)P8速度,UpDownAxis_P8_Speed,100,,,,,,,,,,,,
PRO,0,旋转轴(轴1)P1速度,MiddleAxis_P1_Speed,500,,,,,,,,,,,,
PRO,0,旋转轴(轴1)P2速度,MiddleAxis_P2_Speed,500,,,,,,,,,,,,
PRO,0,进出轴(轴3)P1速度,InOutAxis_P1_Speed,500,,,,,,,,,,,,
PRO,0,进出轴(轴3)P2速度,InOutAxis_P2_Speed,500,,,,,,,,,,,,
PRO,0,进出轴(轴3)P3速度,InOutAxis_P3_Speed,500,,,,,,,,,,,,
PRO,0,压紧轴(轴4)P1速度,CompAxis_P1_Speed,800,,,,,,,,,,,,
PRO,0,压紧轴(轴4)P2速度,CompAxis_P2_Speed,800,,,,,,,,,,,,
PRO,0,压紧轴(轴4)P3速度,CompAxis_P3_Speed,800,,,,,,,,,,,,
PRO,0,出入库多少次,会自动重置旋转轴,Box_ResetMCount,1000,,,,,,,,,,,,
PRO,0,出入库多少次,会自动重置所有轴操作,Box_ResetACount,100,,,,,,,,,,,,
PRO,0,IO信号超时时间(毫秒),IOSingle_TimerOut,10000,,,,,,,,,,,,
PRO,0,是否使用料盘检测信号,IsUse_Tray_Check,0,,,,,,,,,,,,
PRO,0,是否调试状态,ISDebug,0,,,,,,,,,,,,
PRO,,每次吹气的时间(分钟),BlowAir_Time,10,,,
PRO,,两次吹气间隔(分钟),BlowAir_Interval,10,,,
类型,说明,名称,属性值,设备名称,默认值,描述,电器定义,代码定义,SlaveID,
PRO,IO模块对应的DI数量,IO_DILength,192.168.202.21#8,,,,,,,,,,,
PRO,模块对应的DO数量,IO_DOLength,192.168.202.21#8,,,,,,,,,,,
PRO,是否有仓门,HasDoor,1,,,,,,,,,,,
PRO,IO模块IP,PRO_AOI_IP_1,192.168.202.21,,,,,,,,,,,
,,,,,,,,,,
DI,急停,SuddenStop_BTN,0,PRO_AOI_IP_1,0,急停,X01,DI-01,0,
DI,复位,Reset_BTN,1,PRO_AOI_IP_1,0,复位,X02,DI-02,0,
DI,盘点,CheckPos,2,PRO_AOI_IP_1,0,盘点,X03,DI-03,0,
DI,料盘检测1(进料口),TrayCheck_Door,3,PRO_AOI_IP_1,0,料盘检测1(进料口),X04,DI-04,0,
DI,料盘检测2(料叉),TrayCheck_Fixture,4,PRO_AOI_IP_1,0,料盘检测2(料叉),X05,DI-05,0,
DI,气压检测,Airpressure_Check,5,PRO_AOI_IP_1,0,气压检测,X06,DI-06,0,
DI,进料口门上升端,Door_Up,6,PRO_AOI_IP_1,0,进料口门上升端,X07,DI-07,0,
DI,进料口门下降端,Door_Down,7,PRO_AOI_IP_1,0,进料口门下降端,X08,DI-08,0,
DO,自动指示灯,AutoRun_HddLed,0,PRO_AOI_IP_1,0,自动指示灯,Y01,DO-01,0,
DO,故障指示灯,Alarm_HddLed,1,PRO_AOI_IP_1,0,故障指示灯,Y02,DO-02,0,
DO,待机指示灯,RunSign_HddLed,2,PRO_AOI_IP_1,0,待机指示灯,Y03,DO-03,0,
DO,料仓运转ON,Run_Signal,3,PRO_AOI_IP_1,0,料仓运转ON,Y04,DO-04,0,
DO,轴2刹车电源ON,Axis_Brake,4,PRO_AOI_IP_1,0,轴2刹车电源ON,Y05,DO-05,0,
DO,料仓吹气SOL,StartOrStopBlow,5,PRO_AOI_IP_1,0,料仓吹气SOL,Y06,DO-06,0,
DO,进料口门上升SOL,Door_Up,6,PRO_AOI_IP_1,0,进料口门上升SOL,Y07,DO-07,0,
DO,进料口门下降SOL,Door_Down,7,PRO_AOI_IP_1,0,进料口门下降SOL,Y08,DO-08,0,
AXIS,(轴一)旋转轴,Middle_Axis,1,COM4,0,,,,,
AXIS,(轴二)升降轴轴,UpDown_Axis,2,COM4,0,,,,,
AXIS,(轴三)进出轴,InOut_Axis,3,COM4,0,,,,,
AXIS,(轴四)压紧轴,Comp_Axis,4,COM4,0,,,,,
PRO,升降轴 进料口取料点 P1,UpDownAxis_DoorOPosition_P1,304500,,,,,,,,,,,
PRO,升降轴 进料口出料前点 P2,UpDownAxis_DoorIPosition_P2,325300,,,,,,,,,,,
PRO,升降轴 进料口取料缓冲点 P7,UpDownAxis_DoorOBPosition_P7,325300,,,,,,,,,,,
PRO,升降轴 进料口出料缓冲点 P8,UpDownAxis_DoorIBPosition_P8,304500,,,,,,,,,,,
PRO,旋转轴(轴1)P1 待机原位点,MiddleAxis_P1_Position,359300,,,,,,,,,,,
PRO,进出轴(轴3)P1待机原位点,InOutAxis_P1_Position,1000,,,,,,,,,,,
PRO,压紧轴(轴4)P1待机原位点,CompressAxis_P1_Position,28000,,,,,,,,,,,
PRO,是否使用定位气缸,IsHasLocationCylinder,0,,,,,,,,,,,
PRO,是否有左右侧门,IsHasDoorLimit,1,,,,,,,,,,,
PRO,是否使用压紧轴(1=使用),IsHasCompress_Axis,1,,,,, ,, ,,,,
PRO,气压检测IO关闭需要持续的时间,AirCheckSeconds,3,,,,,,, ,,,,
,,,,,,,,,,
PRO,预警温度,WarnTemperate,80,,,,,,,,,,,
PRO,预警湿度,WarnHumidity,80,,,,,,,,,,,
PRO,(轴一)旋转轴目标速度,MiddleAxis_TargetSpeed,250,,,,,,,,,,,
PRO,(轴一)旋转轴加速度,MiddleAxis_AddSpeed,1000,,,,,,,,,,,
PRO,(轴一)旋转轴减速度,MiddleAxis_DelSpeed,1000,,,,,,,,,,,
PRO,(轴一)旋转轴原点低速度,MiddleAxis_HomeLowSpeed,80,,,,,,,,,,,
PRO,(轴一)旋转轴原点高速,MiddleAxis_HomeHighSpeed,60,,,,,,,,,,,
PRO,(轴一)旋转轴原点加速度,MiddleAxis_HomeAddSpeed,50,,,,,,,,,,,
PRO,(轴二)升降轴轴目标速度,UpdownAxis_TargetSpeed,150,,,,,,,,,,,
PRO,(轴二)升降轴轴加速度,UpdownAxis_AddSpeed,400,,,,,,,,,,,
PRO,(轴二)升降轴轴减速度,UpdownAxis_DelSpeed,400,,,,,,,,,,,
PRO,(轴二)升降轴轴原点低速度,UpdownAxis_HomeLowSpeed,100,,,,,,,,,,,
PRO,(轴二)升降轴轴原点高速,UpdownAxis_HomeHighSpeed,200,,,,,,,,,,,
PRO,(轴二)升降轴轴原点加速度,UpdownAxis_HomeAddSpeed,200,,,,,,,,,,,
PRO,(轴三)进出轴目标速度,InoutAxis_TargetSpeed,100,,,,,,,,,,,
PRO,(轴三)进出轴加速度,InoutAxis_AddSpeed,300,,,,,,,,,,,
PRO,(轴三)进出轴减速度,InoutAxis_DelSpeed,300,,,,,,,,,,,
PRO,(轴三)进出轴原点低速,InoutAxis_HomeLowSpeed,20,,,,,,,,,,,
PRO,(轴三)进出轴原点高速,InoutAxis_HomeHighSpeed,60,,,,,,,,,,,
PRO,(轴三)进出轴原点加速度,InoutAxis_HomeAddSpeed,200,,,,,,,,,,,
PRO,(轴四)压紧轴目标速度,CompAxis_TargetSpeed,100,,,,,,,,,,,
PRO,(轴四)压紧轴加速度,CompAxis_AddSpeed,300,,,,,,,,,,,
PRO,(轴四)压紧轴减速度,CompAxis_DelSpeed,300,,,,,,,,,,,
PRO,(轴四)压紧轴原点低速,CompAxis_HomeLowSpeed,20,,,,,,,,,,,
PRO,(轴四)压紧轴原点高速,CompAxis_HomeHighSpeed,60,,,,,,,,,,,
PRO,(轴四)压紧轴原点加速度,CompAxis_HomeAddSpeed,200,,,,,,,,,,,
,,,,,,,,,,
PRO,升降轴(轴2)P1速度,UpDownAxis_P1_Speed,1000,,,,,,,,,,,
PRO,升降轴(轴2)P2速度,UpDownAxis_P2_Speed,600,,,,,,,,,,,
PRO,升降轴(轴2)P3速度,UpDownAxis_P3_Speed,1000,,,,,,,,,,,
PRO,升降轴(轴2)P4速度,UpDownAxis_P4_Speed,100,,,,,,,,,,,
PRO,升降轴(轴2)P5速度,UpDownAxis_P5_Speed,1000,,,,,,,,,,,
PRO,升降轴(轴2)P6速度,UpDownAxis_P6_Speed,100,,,,,,,,,,,
PRO,升降轴(轴2)P7速度,UpDownAxis_P7_Speed,100,,,,,, ,,,,,
PRO,升降轴(轴2)P8速度,UpDownAxis_P8_Speed,100,,,,,,,,,,,
PRO,旋转轴(轴1)P1速度,MiddleAxis_P1_Speed,500,,,,,,,,,,,
PRO,旋转轴(轴1)P2速度,MiddleAxis_P2_Speed,500,,,,,,,,,,,
PRO,进出轴(轴3)P1速度,InOutAxis_P1_Speed,500,,,,,,,,,,,
PRO,进出轴(轴3)P2速度,InOutAxis_P2_Speed,500,,,,,,,,,,,
PRO,进出轴(轴3)P3速度,InOutAxis_P3_Speed,500,,,,,,,,,,,
PRO,压紧轴(轴4)P1速度,CompAxis_P1_Speed,800,,,,,,,,,,,
PRO,压紧轴(轴4)P2速度,CompAxis_P2_Speed,800,,,,,,,,,,,
PRO,压紧轴(轴4)P3速度,CompAxis_P3_Speed,800,,,,,,,,,,,
PRO,(轴一)旋转轴停止时可误差的脉冲数的最小值,MiddleAxis_ErrorCountMin,10,,,,,,,,,,,
PRO,(轴二)升降轴轴停止时可误差的脉冲数的最小值,UpdownAxis_ErrorCountMin,10,,,,,, ,,,,,
PRO,(轴三)进出轴停止时可误差的脉冲数的最小值,InoutAxis_ErrorCountMin,10,,,,,,,,,,,
PRO,(轴一)旋转轴停止时可误差的脉冲数的最大值,MiddleAxis_ErrorCountMax,1000,,,,,,,,,,,
PRO,(轴二)升降轴轴停止时可误差的脉冲数的最大值,UpdownAxis_ErrorCountMax,1000,,,,,,,,,,,
PRO,(轴三)进出轴停止时可误差的脉冲数的最大值,InoutAxis_ErrorCountMax,1000,,,,,,,,,,,
PRO,出入库多少次,会自动重置旋转轴,Box_ResetMCount,1000,,,,,,,,,,,
PRO,出入库多少次,会自动重置所有轴操作,Box_ResetACount,100,,,,,,,,,,,
PRO,IO信号超时时间(毫秒),IOSingle_TimerOut,10000,,,,,,,,,,,
PRO,是否使用料盘检测信号,IsUse_Tray_Check,0,,,,,, ,,,,,
PRO,(轴一)旋转轴最小限位,MiddleAxis_PositionMin,0,,,,,,,,,,,
PRO,(轴二)升降轴最小限位,UpdownAxis_PositionMin,0,,,,,,,,,,,
PRO,(轴三)进出轴最小限位,InoutAxis_PositionMin,0,,,,,,,,,,,
PRO,(轴一)旋转轴最大限位,MiddleAxis_PositionMax,0,,,,,,,,,,,
PRO,(轴二)升降轴最大限位,UpdownAxis_PositionMax,0,,,,,,,,,,,
PRO,(轴三)进出轴最大限位,InoutAxis_PositionMax,0,,,,,,,,,,,
PRO,需要吹气的温度(温度标准),Max_Temperature,0,,,,,,,,,,,
PRO,需要吹气的湿度(湿度标准),Max_Humidity,10,,,,,,,,,,,
PRO,每次吹气的时间(分钟),BlowAir_Time,10,,,,,,,,,,,
PRO,两次吹气间隔(分钟),BlowAir_Interval,10,,,,,,, ,,,,
PRO,温湿度端口号,Humiture_Port,COM5,,,,,,,,,,,
,,,,,,,,, ,
,,,,,,,,, ,
类型,分类编号,说明,名称,属性值,设备名称,电器定义,
,,,,,,,
DI,0,急停,SuddenStop_BTN,0,HC,X00,
DI,0,复位,Reset_BTN,1,HC,X01,
DI,0,气压检测,Airpressure_Check,2,HC,X02,
DI,1,左料仓进料口料盘检测,TrayCheck_Door,3,HC,X03,
DI,1,左料仓料叉料盘检测,TrayCheck_Fixture,4,HC,X04,
DI,1,左料仓进料口门上升端,Door_Up,5,HC,X05,
DI,1,左料仓进料口门下降端,Door_Down,6,HC,X06,
DI,1,左料仓激光检测,CheckPos,7,HC,X07,
DI,2,右料仓进料口料盘检测,TrayCheck_Door,8,HC,X08,
DI,2,右料仓料叉料盘检测,TrayCheck_Fixture,9,HC,X09,
DI,2,右料仓进料口门上升端,Door_Up,10,HC,X10,
DI,2,右料仓进料口门下降端,Door_Down,11,HC,X11,
DI,2,右料仓激光检测,CheckPos,12,HC,X12,
,,,,13,HC,X13,
,,,,14,HC,X14,
,,,,15,HC,X15,
,,,,,,,
DO,0,自动指示灯,AutoRun_HddLed,0,HC,Y01,
DO,0,故障指示灯,Alarm_HddLed,1,HC,Y02,
DO,0,待机指示灯,RunSign_HddLed,2,HC,Y03,
DO,0,报警蜂鸣器,Alarm_Buzzer,3,HC,Y04,
DO,1,左料仓进料口门上升SOL,Door_Up,4,HC,Y05,
DO,1,左料仓进料口门下降SOL,Door_Down,5,HC,Y06,
DO,2,右料仓进料口门上升SOL,Door_Up,6,HC,Y07,
DO,2,右料仓进料口门下降SOL,Door_Down,7,HC,Y08,
DO,0,设备照明ON,Device_Led,8,HC,Y09,
,,,,9,HC,Y10,
,,,,10,HC,Y11,
,,,,11,HC,Y12,
,,,,12,HC,Y13,
,,,,13,HC,Y14,
,,,,14,HC,Y15,
,,,,15,HC,Y16,
,,,,,,,
PRO,,需要吹气的温度(温度标准),Max_Temperature,0,,,
PRO,,需要吹气的湿度(湿度标准),Max_Humidity,10,,,
PRO,,每次吹气的时间(分钟),BlowAir_Time,10,,,
PRO,,两次吹气间隔(分钟),BlowAir_Interval,10,,,
PRO,,温湿度端口号,Humiture_Port,COM5,,,
,,,,,,,
PRO,,气压检测IO关闭需要持续的时间,AirCheckSeconds,3,,,
PRO,,预警温度,WarnTemperate,80,,,
PRO,,预警湿度,WarnHumidity,80,,,
......@@ -11,37 +11,22 @@ using System.Threading;
using System.Threading.Tasks;
namespace OnlineStore.DeviceLibrary
{
/// <summary>
/// 流水线自动料仓-Box类
/// </summary>
{
public partial class BoxBean : KTK_Store
{
private static bool IsIntSlvBlock = false;
/// <summary>
/// 开始运行
/// </summary>
public static bool IsRun = false;
public string CID = "";
public BoxConfig Config;
/// <summary>
/// 记录最后一次 出库的posID,出库完成发送给服务器之后清除
/// </summary>
public string lastPosId = "";
public StoreStatus lastPosIdStatus = StoreStatus.StoreOnline;
/// <summary>
/// 轴列表
/// </summary>
public List<ConfigMoveAxis> moveAxisList = new List<ConfigMoveAxis>();
/// <summary>
/// 轴报警信息
/// </summary>
private Dictionary<string, AxisAlarmInfo> AxisAlarmCodeMap = new Dictionary<string, AxisAlarmInfo>();
/// <summary>
/// 是否有压紧轴
/// </summary>
public bool IsHasCompress_Axis = true;
private bool UseCompress_Axis = true;
//public ScanSocket scanSocket = new ScanSocket();
private System.Timers.Timer serverConnectTimer = new System.Timers.Timer();
private System.Timers.Timer IoCheckTimer = new System.Timers.Timer();
......@@ -69,7 +54,7 @@ namespace OnlineStore.DeviceLibrary
//添加调试
IsDebug = ConfigAppSettings.GetIntValue(Setting_Init.IsInDebug).Equals(1);
IsHasCompress_Axis = config.IsHasCompress_Axis.Equals(1);
UseCompress_Axis = true;
Name = ("料仓BOX_" + config.DeviceID + " ").ToUpper();
this.DeviceID = config.DeviceID;
this.Config = config;
......@@ -90,7 +75,7 @@ namespace OnlineStore.DeviceLibrary
}
IOManager.Init();
IOManager.instance.ConnectionIOList(Config.DIODeviceNameList);
//IOManager.instance.ConnectionIOList(Config.DIODeviceNameList);
mainTimer.Enabled = false;
int isAuto = ConfigAppSettings.GetIntValue(Setting_Init.App_AutoRun);
......@@ -148,7 +133,6 @@ namespace OnlineStore.DeviceLibrary
/// </summary>
public void MoveAxisConfig()
{
BoxConfig.ConfigAxis(Config);
moveAxisList = new List<ConfigMoveAxis>();
moveAxisList.Add(Config.Middle_Axis);
......@@ -160,11 +144,9 @@ namespace OnlineStore.DeviceLibrary
this.AxisAlarmCodeMap.Add(Config.InOut_Axis.GetNameStr(), new AxisAlarmInfo());
this.AxisAlarmCodeMap.Add(this.Config.Middle_Axis.GetNameStr(), new AxisAlarmInfo());
if (Config.IsHasCompress_Axis.Equals(1))
{
moveAxisList.Add(Config.Comp_Axis);
this.AxisAlarmCodeMap.Add(this.Config.Comp_Axis.GetNameStr(), new AxisAlarmInfo());
}
moveAxisList.Add(Config.Comp_Axis);
this.AxisAlarmCodeMap.Add(this.Config.Comp_Axis.GetNameStr(), new AxisAlarmInfo());
}
/// <summary>
......@@ -183,7 +165,7 @@ namespace OnlineStore.DeviceLibrary
IO_VALUE airCheck = IOManager.IOValue(IO_Type.Airpressure_Check);
//if (suddenBtn == IO_VALUE.HIGH)
if (suddenBtn.Equals(IO_VALUE.HIGH) && (airCheck.Equals(IO_VALUE.HIGH) || Config.HasDoor.Equals(0)))
if (suddenBtn.Equals(IO_VALUE.HIGH) && (airCheck.Equals(IO_VALUE.HIGH)))
{
//lastAirValue = airCheck;
lastAirCloseTime = DateTime.Now;
......@@ -196,7 +178,7 @@ namespace OnlineStore.DeviceLibrary
storeRunStatus = StoreRunStatus.HomeMoving;
storeStatus = StoreStatus.ResetMove;
//启动温湿度服务器
HumitureController.Init(Config.Humiture_Port);
HumitureController.Init(StoreManager.Config.Humiture_Port);
LineConnect.StartConnect();
ReturnHome();
......@@ -211,11 +193,11 @@ namespace OnlineStore.DeviceLibrary
{
if (suddenBtn.Equals(IO_VALUE.LOW))
{
LogUtil.error( " (" + Name + ")启动出现错误:急停没开 !启动失败!");
LogUtil.error(" (" + Name + ")启动出现错误:急停没开 !启动失败!");
}
else
{
LogUtil.error( " (" + Name + ")启动出现错误:没有气压信号 !启动失败!");
LogUtil.error(" (" + Name + ")启动出现错误:没有气压信号 !启动失败!");
}
return false;
}
......@@ -287,18 +269,10 @@ namespace OnlineStore.DeviceLibrary
LogUtil.info( Name + "复位时打开轴失败,需要再次复位,直接报警停止复位");
return;
}
if (IsHasCompress_Axis || Config.IsHasLocationCylinder.Equals(0))
{
InoutStartReset();
}
else
{
LogUtil.info( Name + "开始复位:先定位气缸下降");
// 复位和回原点要等轴3进出轴ORG亮了以后才能返回其他轴
MoveInfo.NextMoveStep(StoreMoveStep.BOX_H_LocationCylinderBack);
LocationDownAndWait();
}
isInPro = false;
}
private void InoutStartReset()
......@@ -358,7 +332,7 @@ namespace OnlineStore.DeviceLibrary
LogUtil.info( Name + "复位中: 压紧轴,旋转轴,上下轴开始 原点返回");
MoveInfo.NextMoveStep(StoreMoveStep.BOX_H_OtherAxisBack);
MoveInfo.TimeOutSeconds = 100;
if (IsHasCompress_Axis)
if (UseCompress_Axis)
{
ACAxisHomeMove(Config.Comp_Axis);
}
......@@ -388,7 +362,7 @@ namespace OnlineStore.DeviceLibrary
case StoreMoveStep.BOX_M_H_TOP1_InOutToP1:
MoveInfo.NextMoveStep(StoreMoveStep.BOX_M_H_TOP1_CompressHome);
LogUtil.info( Name + "到待机状态,压紧轴回原点,关闭舱门");
if (IsHasCompress_Axis)
if (UseCompress_Axis)
{
ACAxisHomeMove(Config.Comp_Axis);
}
......@@ -419,7 +393,7 @@ namespace OnlineStore.DeviceLibrary
private void ComMoveToPosition(int targetPosition, int targetSpeed)
{
if (IsHasCompress_Axis)
if (UseCompress_Axis)
{
ACAxisMove(Config.Comp_Axis, targetPosition, targetSpeed);
}
......@@ -434,9 +408,7 @@ namespace OnlineStore.DeviceLibrary
return false;
}
public void OpenDoor(bool IsWait = true)
{
if (Config.HasDoor.Equals(1))
{
{
Thread.Sleep(60);
IOManager.IOMove(IO_Type.Door_Down, IO_VALUE.LOW);
IOManager.IOMove(IO_Type.Door_Up, IO_VALUE.HIGH);
......@@ -444,21 +416,17 @@ namespace OnlineStore.DeviceLibrary
{
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Down, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Up, IO_VALUE.HIGH));
}
}
}
}
public void CloseDoor(bool IsWait = true)
{
if (Config.HasDoor.Equals(1))
{
{
IOManager.IOMove(IO_Type.Door_Down, IO_VALUE.HIGH);
IOManager.IOMove(IO_Type.Door_Up, IO_VALUE.LOW);
if (IsWait)
{
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Down, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Up, IO_VALUE.LOW));
}
}
}
}
/// <summary>
......@@ -506,7 +474,7 @@ namespace OnlineStore.DeviceLibrary
//复位和回原点要等轴3进出轴ORG亮了以后才能返回其他轴
LogUtil.info( Name + "原点返回中 :压紧轴,旋转轴,上下轴开始原点返回");
MoveInfo.NextMoveStep(StoreMoveStep.BOX_H_OtherAxisBack);
if (IsHasCompress_Axis)
if (UseCompress_Axis)
{
ACAxisHomeMove(Config.Comp_Axis);
}
......@@ -662,7 +630,7 @@ namespace OnlineStore.DeviceLibrary
LineConnect.StopConnect();
IOManager.instance.CloseAllDO();
if (IsHasCompress_Axis)
if (UseCompress_Axis)
{
//ShuoKeControls.ClosePort();
}
......@@ -758,49 +726,6 @@ namespace OnlineStore.DeviceLibrary
IsChongfu = false;
InProcess = false;
}
private IO_VALUE preAirValue = IO_VALUE.HIGH;
private void AirCheckProcess()
{
if (Config.HasDoor.Equals(0))
{
return;
}
IO_VALUE currAirValue = IOManager.IOValue(IO_Type.Airpressure_Check);
if (isInSuddenDown)
{
return;
}
if (isNoAirCheck)
{
return;
}
if (currAirValue.Equals(IO_VALUE.LOW))
{
//判断是否持续了3秒
if (preAirValue.Equals(IO_VALUE.LOW))
{
TimeSpan span = DateTime.Now - lastAirCloseTime;
if (span.TotalSeconds > Config.AirCheckSeconds)
{
WarnMsg = "未检测到气压信号";
preAirValue = IO_VALUE.LOW;
LogUtil.info("已持续【" + FormUtil.GetSpanStr(span) + "】未检测到气压信号,报警");
Alarm(StoreAlarmType.NoAirCheck, "2", WarnMsg, StoreMoveType.None);
return;
}
}
else
{
lastAirCloseTime = DateTime.Now;
isNoAirCheck = false;
}
}
else
{
isNoAirCheck = false;
}
preAirValue = currAirValue;
}
private void ShowTimeLog(string info)
{
if (IsChongfu)
......@@ -941,7 +866,7 @@ namespace OnlineStore.DeviceLibrary
//急停按钮
if (suddenBtn.Equals(IO_VALUE.LOW))
{
AirCheckProcess();
//AirCheckProcess();
}
else if (resetBtn.Equals(IO_VALUE.HIGH))
{
......@@ -1174,22 +1099,8 @@ namespace OnlineStore.DeviceLibrary
ACServerManager.SuddenStop(Config.Middle_Axis.DeviceName, Config.Middle_Axis.GetAxisValue());
ACServerManager.SuddenStop(Config.UpDown_Axis.DeviceName, Config.UpDown_Axis.GetAxisValue());
ACServerManager.SuddenStop(Config.InOut_Axis.DeviceName, Config.InOut_Axis.GetAxisValue());
if (IsHasCompress_Axis)
{
ACServerManager.SuddenStop(Config.Comp_Axis.DeviceName, Config.Comp_Axis.GetAxisValue());
//ShuoKeControls.SuddownStop(Config.CompressAxis_Slv);
}
else
{
if (Config.IsHasLocationCylinder >= 1)
{
//定位气缸停止
IOManager.IOMove(IO_Type.LocationCylinder_Down, IO_VALUE.LOW);
IOManager.IOMove(IO_Type.LocationCylinder_Up, IO_VALUE.LOW);
}
}
ACServerManager.SuddenStop(Config.Comp_Axis.DeviceName, Config.Comp_Axis.GetAxisValue());
CloseAllAxis();
LogUtil.info( Name + "StopMove");
......
......@@ -477,23 +477,14 @@ namespace OnlineStore.DeviceLibrary
CodeMsg = "入库[" + posId + "]叉子取料后退后,未检测到料叉有料";
LogUtil.error(CodeMsg);
}
if (IsHasCompress_Axis || Config.IsHasLocationCylinder.Equals(0))
{
InStoreLog("入库:SI_09 移动到库位点,旋转轴至P2(库位点)[" + moveP.Middle_P2 + "], 升降轴至P3(库位入库前点)[" + moveP.UpDown_P3 + "] ");
MoveInfo.NextMoveStep(StoreMoveStep.SI_09_MoveToBag);
ACAxisMove(Config.Middle_Axis, moveP.Middle_P2, Config.MiddleAxis_P2_Speed);
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P3, Config.UpDownAxis_P3_Speed);
//关闭舱门
//IOManager.IOMove(IO_Type.Door_Down, IO_VALUE.HIGH);
//IOManager.IOMove(IO_Type.Door_Up, IO_VALUE.LOW);
CloseDoor(false);
}
else
{
InStoreLog("入库:SI_08 定位气缸伸出 ");
MoveInfo.NextMoveStep(StoreMoveStep.SI_08_LocationCylinder_Up);
LocationUpAndWait();
}
}
else if (MoveInfo.MoveStep == StoreMoveStep.SI_08_LocationCylinder_Up)
{
......@@ -508,18 +499,11 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.MoveStep == StoreMoveStep.SI_09_MoveToBag)
{
if (IsHasCompress_Axis || Config.IsHasLocationCylinder.Equals(0))
{
InStoreLog("入库:SI_11 叉子进入库位中,进出轴至P3(库位取放料点) [" + moveP.InOut_P3 + "]");
MoveInfo.NextMoveStep(StoreMoveStep.SI_11_DeviceToBag);
ACAxisMove(Config.InOut_Axis, moveP.InOut_P3, Config.InOutAxis_P3_Speed);
}
else
{
InStoreLog("入库:SI_10 定位气缸退回 ");
MoveInfo.NextMoveStep(StoreMoveStep.SI_10_LocationCylinder_Down);
LocationDownAndWait();
}
}
else if (MoveInfo.MoveStep == StoreMoveStep.SI_10_LocationCylinder_Down)
{
......@@ -939,30 +923,7 @@ namespace OnlineStore.DeviceLibrary
//}
//return false;
}
private void LocationUpAndWait()
{
if (Config.IsHasLocationCylinder >= 1)
{
IOManager.IOMove(IO_Type.LocationCylinder_Up, IO_VALUE.HIGH);
IOManager.IOMove(IO_Type.LocationCylinder_Down, IO_VALUE.LOW);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LocationCylinder_Up, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LocationCylinder_Down, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LocationCylinder2_Up, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LocationCylinder2_Down, IO_VALUE.LOW));
}
}
private void LocationDownAndWait()
{
if (Config.IsHasLocationCylinder >= 1)
{
IOManager.IOMove(IO_Type.LocationCylinder_Down, IO_VALUE.HIGH);
IOManager.IOMove(IO_Type.LocationCylinder_Up, IO_VALUE.LOW);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LocationCylinder_Down, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LocationCylinder_Up, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LocationCylinder2_Down, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LocationCylinder2_Up, IO_VALUE.LOW));
}
}
#endregion
public List<InOutPosInfo> waitOutStoreList = new List<InOutPosInfo>();
public object waitOutListLock = "";
......
......@@ -27,7 +27,7 @@ namespace OnlineStore.DeviceLibrary
public Dictionary<int, BoxConfig> BoxConfigMap { get; set; }
public Dictionary<int, BoxBean> BoxMap = new Dictionary<int, BoxBean>();
public BaseConfig Config { get; set; }
public StoreConfig Config { get; set; }
#region 初始化
internal bool canStart = false;
......@@ -48,7 +48,7 @@ namespace OnlineStore.DeviceLibrary
Name = (" Store_" + Config.CID + " ").ToUpper();
List<string> ioList = new List<string>();
AddDeviceName(ioList, Config.DIODeviceNameList);
//AddDeviceName(ioList, Config.DIODeviceNameList);
foreach (BoxConfig config in configList.Values)
......@@ -56,7 +56,7 @@ namespace OnlineStore.DeviceLibrary
BoxBean equip = new BoxBean(config);
//增加站号名称
AddDeviceName(ioList, config.DIODeviceNameList);
//AddDeviceName(ioList, config.DIODeviceNameList);
BoxMap.Add(config.DeviceID, equip);
BoxConfigMap.Add(config.DeviceID, config);
}
......@@ -325,6 +325,49 @@ namespace OnlineStore.DeviceLibrary
BusyMoveProcess();
}
}
private IO_VALUE preAirValue = IO_VALUE.HIGH;
private void AirCheckProcess()
{
IO_VALUE currAirValue = IOManager.IOValue(IO_Type.Airpressure_Check);
if (isInSuddenDown)
{
return;
}
if (isNoAirCheck)
{
return;
}
if (currAirValue.Equals(IO_VALUE.LOW))
{
//判断是否持续了3秒
if (preAirValue.Equals(IO_VALUE.LOW))
{
TimeSpan span = DateTime.Now - lastAirCloseTime;
if (span.TotalSeconds > Config.AirCheckSeconds)
{
WarnMsg = "未检测到气压信号";
preAirValue = IO_VALUE.LOW;
LogUtil.info("已持续【" + FormUtil.GetSpanStr(span) + "】未检测到气压信号,报警");
Alarm(StoreAlarmType.NoAirCheck, "2", WarnMsg, StoreMoveType.None);
return;
}
}
else
{
lastAirCloseTime = DateTime.Now;
isNoAirCheck = false;
}
}
else
{
isNoAirCheck = false;
}
preAirValue = currAirValue;
}
public override void StopMove()
{
foreach (BoxBean equip in this.BoxMap.Values)
......
......@@ -50,6 +50,8 @@ namespace OnlineStore.DeviceLibrary
{
try
{
BaseConfig.SubDIList = new Dictionary<int, Dictionary<string, ConfigIO>>();
BaseConfig.SubDOList = new Dictionary<int, Dictionary<string, ConfigIO>>();
BaseConfig.ProIOIpMap = new Dictionary<string, string>();
if (!isInit)
{
......@@ -68,7 +70,7 @@ namespace OnlineStore.DeviceLibrary
LogUtil.info("配置的料仓 count=" + count + ",开始加载料仓配置");
string appPath = Application.StartupPath;
string CID = ConfigAppSettings.GetValue(Setting_Init.Store_CID);
Dictionary<int, BoxConfig> boxConfig = new Dictionary<int, BoxConfig>();
Dictionary<int, BoxConfig> BoxList = new Dictionary<int, BoxConfig>();
string linefilePath = appPath + ConfigAppSettings.GetValue(Setting_Init.Store_ConfigPath);
Config = CSVConfigReader.LoadStoreConfig(0, CID, "Line", linefilePath);
......@@ -81,9 +83,10 @@ namespace OnlineStore.DeviceLibrary
string config = appPath + moveEquipConfig.Replace(".csv", "_" + nameStr + ".csv");
string storeIdConfig = Setting_Init.Store_CID + "_" + i;
string boxCid = ConfigAppSettings.GetValue(storeIdConfig);
BoxConfig moveConfig = CSVConfigReader.LoadBoxConfig(i, boxCid, "BOX", config);
//AllConfigMap.Add(i, moveConfig);
boxConfig.Add(i, moveConfig);
BoxConfig boxConfig = CSVConfigReader.LoadBoxConfig(i, boxCid, "BOX", config);
boxConfig.SetIO(0);
boxConfig.SetIO(i);
BoxList.Add(i, boxConfig);
}
string positionConfigFile = appPath + ConfigAppSettings.GetValue(Setting_Init.Store_Position_Config);
if (count > 1 || (!File.Exists(positionConfigFile)))
......@@ -100,7 +103,7 @@ namespace OnlineStore.DeviceLibrary
CSVPositionReader<ACStorePosition>.AddCSVFile(positionConfigFile);
}
LogUtil.info("加载料仓完成!");
Store = new StoreBean(Config, boxConfig);
Store = new StoreBean(Config, BoxList);
}
}
catch (Exception ex)
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace OnlineStore.DeviceLibrary
{
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace OnlineStore.DeviceLibrary
{
/// <summary>
/// 托盘信息
/// </summary>
public class FixtureInfo
{
private int codeNum;
private int inOrOut;
public FixtureInfo(int codeNum, bool isFull, int inOrOut, int bagWidth)
{
this.codeNum = codeNum;
this.IsFull = isFull;
this.inOrOut = inOrOut;
BagWidth = bagWidth;
}
/// <summary>
/// 夹具编码值(1-6)
/// </summary>
public int TrayCode { get; set; }
/// <summary>
/// 是否有料盘,true=有料盘
/// </summary>
public bool IsFull { get; set; }
/// <summary>
/// 出库还是入库(有料盘时才有此操作)0=无操作,1=入库,2=出库
/// </summary>
public int InOrOutStore { get; set; }
/// <summary>
/// 如果是出库,需要记录盘宽,七寸小盘可以累积到托盘上
/// 只有出库才会有值
/// </summary>
public int BagWidth { get; set; }
}
}
......@@ -53,7 +53,7 @@
<Compile Include="storeConfig\config\BoxConfig.cs" />
<Compile Include="storeConfig\config\StoreConfig.cs" />
<Compile Include="storeConfig\config\StoreType.cs" />
<Compile Include="storeConfig\config\Store_IO_Type.cs" />
<Compile Include="storeConfig\config\IO_Type.cs" />
<Compile Include="CSVAttribute.cs" />
<Compile Include="storeConfig\CSVConfigReader.cs" />
<Compile Include="position\CSVPositionReader.cs" />
......
......@@ -82,9 +82,10 @@ namespace OnlineStore.LoadCSVLibrary
{
type = typeof(ConfigMoveAxis);
}
Dictionary<string, string> proTitleMap = getProAttributeMap(type);
ConfigBase bllIns = (ConfigBase)type.Assembly.CreateInstance(type.FullName);
bllIns.ConfigStr = line;
//取得属性集合
PropertyInfo[] props = type.GetProperties();
......
......@@ -4,15 +4,13 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace OnlineStore.LoadCSVLibrary
{
/// <summary>
/// 基础的属性配置
/// </summary>
public class ConfigBase
{
{
/// <summary>
/// DI=输入IO,DO=输出IO,PRO=属性,AXIS=轴
/// </summary>
......@@ -33,26 +31,25 @@ namespace OnlineStore.LoadCSVLibrary
/// </summary>
[CSVAttribute("属性值")]
public string ProValue { get; set; }
/// <summary>
/// 分类编号
/// </summary>
[CSVAttribute("分类编号")]
public int SubType { get; set; }
public string ConfigStr { get; set; }
public virtual int GetValue()
{
if (ProValue.Equals(""))
{
return -1;
}
return Convert.ToInt32(ProValue);
}
public override string ToString()
{
return "ConfigBase。" + "类型:" + ProType + ",说明:" + Explain + ",名称:" + ProName + ",属性值:" + ProValue;
// return "ConfigBase。" + "类型:" + ProType + ",说明:" + Explain + ",名称:" + ProName + ",属性值:" + ProVale;
return ConfigStr;
}
public virtual void CheckField()
{
if (String.IsNullOrEmpty(ProType) || String.IsNullOrEmpty(ProName) || String.IsNullOrEmpty(ProValue))
if (String.IsNullOrEmpty(ProType) || String.IsNullOrEmpty(ProName) || String.IsNullOrEmpty(ProValue))
{
throw new CVSFieldNotMatchingExection(ToString() + ",【类型:ProType】【名称:ProName】【属性值:ProVale】必须配置值!");
throw new CVSFieldNotMatchingExection(ConfigStr + ",【类型:" + ProType + "】【名称:" + ProName + "】【属性值:" + ProValue + "】必须配置值!");
}
}
}
......@@ -62,60 +59,48 @@ namespace OnlineStore.LoadCSVLibrary
public class ConfigMoveAxis : ConfigBase
{
/// <summary>
/// 使用AC伺服时表示串口号,使用康泰克运动版表示板卡名称
/// </summary>
[CSVAttribute("设备名称")]
public string DeviceName { get; set; }
/// <summary>
/// 待机位置
/// 伺服ON的Do信号
/// </summary>
//[CSVAttribute("默认值")]
public int DefaultPosition { get; set; }
public string ServerOnDO = "";
/// <summary>
/// 目标速度
/// 伺服刹车信号
/// </summary>
//[CSVAttribute("目标速度")]
public string BreakOnDO = "";
[CSVAttribute("设备名称")]
public string DeviceName { get; set; }
[CSVAttribute("目标速度")]
public int TargetSpeed { get; set; }
/// <summary>
/// 加速度
/// </summary>
//[CSVAttribute("加速时间")]
[CSVAttribute("加速度")]
public short AddSpeed { get; set; }
/// <summary>
/// 减速度
/// </summary>
//[CSVAttribute("减速时间")]
[CSVAttribute("减速度")]
public short DelSpeed { get; set; }
[CSVAttribute("回零低速")]
public int HomeLowSpeed { get; set; }
[CSVAttribute("回零高速")]
public int HomeHighSpeed { get; set; }
[CSVAttribute("回零加速度")]
public int HomeAddSpeed { get; set; }
/// <summary>
/// 可以误差的脉冲范围的最小值
/// </summary>
[CSVAttribute("脉冲最小误差")]
public int CanErrorCountMin { get; set; }
/// <summary>
/// 可以误差的脉冲范围的最大值
/// </summary>
[CSVAttribute("脉冲最大误差")]
public int CanErrorCountMax { get; set; }
/// <summary>
/// 出入库目标值(只有出入库过程中才会有效)
/// </summary>
public int TargetPosition { get; set; }
///// <summary>
///// 速度倍率
///// </summary>
//public int ResolveSpeed { get; set; }
/// <summary>
/// 最小位置
/// </summary>
[CSVAttribute("脉冲最小限位")]
public int PositionMin { get; set; }
/// <summary>
/// 最大位置
/// </summary>
[CSVAttribute("脉冲最大限位")]
public int PositionMax { get; set; }
public int TargetPosition { get; set; }
public string GetNameStr()
{
return DeviceName + "_" + GetAxisValue();
......@@ -128,68 +113,46 @@ namespace OnlineStore.LoadCSVLibrary
}
return false;
}
public bool PositionIsHasLimit(){
public bool PositionIsHasLimit()
{
if (PositionMin.Equals(PositionMax))
{
return false;
} return true;
}
return true;
}
/// <summary>
/// 下拉列表显示
/// </summary>
public string DisplayStr
{
get {
return Explain + "(" + ProName + ")";
get
{
return Explain + "(" + ProName + ")";
}
set
{
}
}
public override int GetValue()
{
return GetAxisValue();
}
/// <summary>
/// 使用康泰克板卡表示轴编号,使用Ac伺服电机表示伺服地址
/// </summary>
/// <returns></returns>
public short GetAxisValue()
{
{
if (ProValue.Equals("") || ProValue.Equals("-1"))
{
{
return -1;
}
return (short)Convert.ToInt32(ProValue);
}
public override string ToString()
{
return "ConfigMoveAxis。" + "类型:" + ProType + ",说明:" + Explain + ",名称:" + ProName + ",属性值:" + ProValue + ",设备名称:" + DeviceName;
}
public override void CheckField()
{
if (String.IsNullOrEmpty( ProType) || String.IsNullOrEmpty( ProName ) || String.IsNullOrEmpty( DeviceName ) || String.IsNullOrEmpty( ProValue ))
{
throw new CVSFieldNotMatchingExection(ToString() + ",【类型:ProType】【名称:ProName】【属性值:ProVale】【设备名称:DeviceName】必须配置值!");
}
}
public bool IsMyAxis(string DeviceName, int AxisNo)
{
int AxisValue = GetAxisValue();
if (DeviceName.Equals(DeviceName) && AxisValue.Equals(AxisNo))
if (String.IsNullOrEmpty(ProType) || String.IsNullOrEmpty(ProName) || String.IsNullOrEmpty(DeviceName) || String.IsNullOrEmpty(ProValue))
{
return true;
throw new CVSFieldNotMatchingExection(ConfigStr + ",【类型:ProType】【名称:ProName】【属性值:ProVale】【设备名称:DeviceName】必须配置值!");
}
return false;
}
}
/// <summary>
/// io配置
/// </summary>
public class ConfigIO : ConfigBase
{
public ConfigIO()
......@@ -197,9 +160,7 @@ namespace OnlineStore.LoadCSVLibrary
SlaveID = 0;
}
private string IP = "";
/// <summary>
/// 设备IP
/// </summary>
public string IO_IP
{
get
......@@ -212,56 +173,38 @@ namespace OnlineStore.LoadCSVLibrary
}
else
{
IP = DeviceName;
return DeviceName;
}
}
return IP;
}
}
/// <summary>
/// 设备名称
/// </summary>
[CSVAttribute("设备名称")]
public string DeviceName { get; set; }
/// <summary>
/// 描述
/// </summary>
[CSVAttribute("描述")]
public string Describe { get; set; }
/// <summary>
/// 电器定义
/// </summary>
[CSVAttribute("电器定义")]
public string ElectricalDefinition { get; set; }
/// <summary>
/// 代码定义
/// </summary>
[CSVAttribute("代码定义")]
public string CodeDefinition { get; set; }
/// <summary>
/// 默认值
/// </summary>
[CSVAttribute("默认值")]
public int DefaultValue { get; set; }
/// <summary>
/// SlaveID
/// </summary>
[CSVAttribute("SlaveID") ]
[CSVAttribute("SlaveID")]
public byte SlaveID { get; set; }
private int IoValue = -10;
public string DisplayStr
{
get
{
return ElectricalDefinition + "_" + Explain + "(" + ProName+")";
return ElectricalDefinition + "-" + Explain + "-" + ProName + "";
}
set
{
}
}
ushort value = 0;
public ushort GetIOAddr()
{
ushort value = 0;
if (value > 0)
{
return value;
}
try
{
value = (ushort)Convert.ToInt32(ProValue);
......@@ -273,15 +216,11 @@ namespace OnlineStore.LoadCSVLibrary
return value;
}
public override string ToString()
{
return "ConfigIO。" + ProType + "," + Explain + "," + ProName + ",属性值:" + ProValue + ",设备名称:" + DeviceName + ",描述:" + Describe + ",电器定义:" + ElectricalDefinition + ",代码定义:" + CodeDefinition + "";
}
public override void CheckField()
{
if (String.IsNullOrEmpty(ProType) || String.IsNullOrEmpty(ProName) || String.IsNullOrEmpty(DeviceName) || String.IsNullOrEmpty(ProValue))
{
throw new CVSFieldNotMatchingExection(ToString() + ",【类型:ProType】【名称:ProName】【属性值:ProVale】【设备名称:DeviceName】必须配置值!");
throw new CVSFieldNotMatchingExection(ConfigStr + ",【类型:ProType】【名称:ProName】【属性值:ProVale】【设备名称:DeviceName】必须配置值!");
}
}
}
......@@ -294,32 +233,4 @@ namespace OnlineStore.LoadCSVLibrary
public static string PRO = "PRO";
}
public static class ConfigItemName
{
/// <summary>
/// 上下转动轴
/// </summary>
public static string UpDown_Axis = "UpDown_Axis";
/// <summary>
/// 中转伝动轴 Middle_Axis
/// </summary>
public static string Middle_Axis = "Middle_Axis";
/// <summary>
/// 中轴移动速度 MiddleAxis_Move_Speed
/// </summary>
public static string MiddleAxis_Move_Speed = "MiddleAxis_Move_Speed";
/// <summary>
/// 上下轴普通速度 Updown_Move_Speed
/// </summary>
public static string Updown_Move_Speed = "Updown_Move_Speed";
/// <summary>
/// 上下轴慢速度 Updown_Move_Speed_Low
/// </summary>
public static string Updown_Move_Speed_Low = "Updown_Move_Speed_Low";
/// <summary>
/// 温湿度传感器地址 Temperate_ServerAddress
/// </summary>
public static string Temperate_ServerAddress = "Temperate_ServerAddress";
}
}
......@@ -10,80 +10,51 @@ namespace OnlineStore.LoadCSVLibrary
{
public class BaseConfig
{
public static Dictionary<int, Dictionary<string, ConfigIO>> SubDIList { get; set; }
public static Dictionary<int, Dictionary<string, ConfigIO>> SubDOList { get; set; }
public static Dictionary<string, string> ProIOIpMap = null;
public const string IOIP_Str = "PRO_AOI_IP";
/// <summary>
/// ID
/// </summary>
public int DeviceID { get; set; }
/// <summary>
/// 编号,与服务器通信的唯一标识
/// </summary>
public string CID { get; set; }
/// <summary>
/// 料层类型
/// </summary>
public string StoreType { get; set; }
/// <summary>
/// 配置文件路径
/// </summary>
public string DType { get; set; }
public string ConfigFilePath { get; set; }
/// <summary>
/// 输入IO配置
/// 手动料仓输入Io列表,key=对应的坐标位置的positionNum
/// </summary>
public Dictionary<String, ConfigIO> DIList { get; set; }
/// <summary>
/// 输出IO配置
/// 手动料仓输出Io列表,key=对应的坐标位置的positionNum
/// </summary>
public Dictionary<String, ConfigIO> DOList { get; set; }
/// <summary>
/// 料仓所有用到的IO卡名称
/// </summary>
public List<string> DIODeviceNameList { get; set; }
/// <summary>
/// 料仓所有用到的运动卡名称
/// </summary>
public List<string> SMCDeviceNameList { get; set; }
/// <summary>
/// 必须拥有的DI列表
/// </summary>
protected List<string> MustHaveDIList { get; set; }
/// <summary>
/// 必须拥有的DO列表
/// </summary>
protected List<string> MustHaveDOList { get; set; }
public List<string> IOIPList { get; set; }
protected virtual void initMustHavePro()
{
MustHaveDIList = new List<string>();
MustHaveDOList = new List<string>();
}
public BaseConfig()
{
initMustHavePro();
}
public BaseConfig(int id, string cid, string type, string filepath)
public BaseConfig(int id, string CID,string type, string filepath)
{
initMustHavePro();
MustHaveDIList = new List<string>();
MustHaveDOList = new List<string>();
this.DType = type;
this.DeviceID = id;
this.CID = cid;
this.StoreType = type;
this.CID = CID;
this.ConfigFilePath = filepath;
}
public virtual void LoadConfig(List<ConfigBase> configList)
{
List<string> ioTypeList = IO_Type.GetTypeList();
StringBuilder builder = new StringBuilder("\r\n");
StringBuilder proBuilder = new StringBuilder("\r\n");
DIList = new Dictionary<string, ConfigIO>();
DOList = new Dictionary<string, ConfigIO>();
DIODeviceNameList = new List<string>();
SMCDeviceNameList = new List<string>();
// SubDIList = new Dictionary<int, Dictionary<string, ConfigIO>>();
// SubDOList = new Dictionary<int, Dictionary<string, ConfigIO>>();
IOIPList = new List<string>();
//取得属性集合
PropertyInfo[] props = GetType().GetProperties();
Dictionary<string, string> proMap = CSVReaderBase.getConfigProAttributeMap(GetType());
......@@ -91,89 +62,135 @@ namespace OnlineStore.LoadCSVLibrary
List<string> checkProList = new List<string>(proMap.Keys);//用来检测attribute属性都应该要配置值
foreach (ConfigBase con in configList)
{
if (con.ProType == ConfigItemType.AXIS || con.ProType == ConfigItemType.PRO)
try
{
if (proMap.ContainsKey(con.ProName))
if (con.ProType == ConfigItemType.AXIS || con.ProType == ConfigItemType.PRO)
{
string proName = proMap[con.ProName];
checkProList.Remove(con.ProName);
PropertyInfo prop = props.First(c => c.Name == proName);//获取同名属性
if (prop != null)
if (proMap.ContainsKey(con.ProName))
{
if (con.ProType == ConfigItemType.AXIS)
string proName = proMap[con.ProName];
checkProList.Remove(con.ProName);
PropertyInfo prop = props.First(c => c.Name == proName);//获取同名属性
if (prop != null)
{
//如果属性存在
prop.SetValue(this, Convert.ChangeType(con, prop.PropertyType), null);//赋值****在这里需要考虑类型问题
ConfigMoveAxis axis = (ConfigMoveAxis)con;
if (!SMCDeviceNameList.Contains(axis.DeviceName) && axis.GetAxisValue() >= 0)
if (con.ProType == ConfigItemType.AXIS)
{
//如果属性存在
prop.SetValue(this, Convert.ChangeType(con, prop.PropertyType), null);//赋值****在这里需要考虑类型问题
ConfigMoveAxis axis = (ConfigMoveAxis)con;
}
else if (con.ProType == ConfigItemType.PRO)
{
SMCDeviceNameList.Add(axis.DeviceName);
prop.SetValue(this, Convert.ChangeType(con.ProValue, prop.PropertyType), null);//赋值
}
}
else if (con.ProType == ConfigItemType.PRO)
else
{
prop.SetValue(this, Convert.ChangeType(con.ProValue, prop.PropertyType), null);//赋值
LogUtil.error("配置文件:" + this.ConfigFilePath + ",属性名=" + con.ProName + "的属性未找到匹配字段!");
}
}
else if (!ProIOIpMap.ContainsKey(con.ProName) && con.ProName.ToUpper().Contains(IOIP_Str.ToUpper()))
{
ProIOIpMap.Add(con.ProName, con.ProValue);
}
else
{
AddProBuffer(con, proBuilder);
LogUtil.error("配置文件:" + this.ConfigFilePath + ",属性名=" + con.ProName + "的属性未找到匹配字段!");
}
}
else if (!ProIOIpMap.ContainsKey(con.ProName) && con.ProName.ToUpper().Contains(IOIP_Str))
else if (con.ProType == ConfigItemType.DI)
{
ProIOIpMap.Add(con.ProName, con.ProValue);
if (!DIODeviceNameList.Contains(con.ProValue))
ConfigIO io = (ConfigIO)con;
if (!IOIPList.Contains(io.IO_IP) && io.GetIOAddr() >= 0)
{
DIODeviceNameList.Add(con.ProValue);
IOIPList.Add(io.IO_IP);
}
}
else
{
LogUtil.error("配置文件:" + this.ConfigFilePath + ",属性名=" + con.ProName + "的属性未找到匹配字段!");
}
}
else if (con.ProType == ConfigItemType.DI)
{
if (IO_Type.GetTypeList().Contains(con.ProName))
{
ConfigIO io = (ConfigIO)con;
if (!DIODeviceNameList.Contains(io.DeviceName) && (io.GetIOAddr() >= 0 || io.GetIOAddr() >= 0)&&io.DeviceName.Contains(IOIP_Str).Equals(false))
if (DIList.ContainsKey(io.ProName))
{
DIODeviceNameList.Add(io.DeviceName);
LogUtil.debug("配置DI:[" + io.ToString() + "] ProName重复 ");
}
this.DIList.Add(con.ProName, io);
}
else
{
LogUtil.error("配置文件:" + this.ConfigFilePath + ",属性名=" + con.ProName + "的属性未找到匹配字段!");
else
{
this.DIList.Add(con.ProName, io);
}
if (!SubDIList.ContainsKey(io.SubType))
{
SubDIList.Add(io.SubType, new Dictionary<string, ConfigIO>());
}
if (SubDIList[io.SubType].ContainsKey(io.ProName))
{
LogUtil.debug("配置DI:[" + io.ToString() + "] ProName重复 ");
}
else
{
SubDIList[io.SubType].Add(io.ProName, io);
}
if (!ioTypeList.Contains(con.ProName))
{
AddBuffer(con, builder);
}
}
}
else if (con.ProType == ConfigItemType.DO)
{
if (IO_Type.GetTypeList().Contains(con.ProName))
else if (con.ProType == ConfigItemType.DO)
{
ConfigIO io = (ConfigIO)con;
if (!DIODeviceNameList.Contains(io.DeviceName) && io.GetIOAddr() >= 0 && io.DeviceName.Contains(IOIP_Str).Equals(false))
if (!IOIPList.Contains(io.IO_IP) && io.GetIOAddr() >= 0)
{
DIODeviceNameList.Add(io.DeviceName);
IOIPList.Add(io.IO_IP);
}
if (DOList.ContainsKey(io.ProName))
{
LogUtil.debug("配置DO:[" + io.ToString() + "] ProName重复 ");
}
else
{
this.DOList.Add(con.ProName, io);
}
if (!SubDOList.ContainsKey(io.SubType))
{
SubDOList.Add(io.SubType, new Dictionary<string, ConfigIO>());
}
if (SubDOList[io.SubType].ContainsKey(io.ProName))
{
LogUtil.debug("配置DO:[" + io.ToString() + "] ProName重复 ");
}
else
{
SubDOList[io.SubType].Add(io.ProName, io);
}
if (!ioTypeList.Contains(con.ProName))
{
AddBuffer(con, builder);
}
this.DOList.Add(con.ProName, io);
}
else
{
LogUtil.error("配置文件:" + this.ConfigFilePath + ",属性名=" + con.ProName + "的属性未找到匹配字段!");
}
}
catch (Exception ex)
{
LogUtil.error("解析配置【" + con.ConfigStr + "】出错:" + ex.ToString());
}
}
if (String.IsNullOrEmpty(proBuilder.ToString()).Equals(false) && proBuilder.ToString().Equals("\r\n").Equals(false))
{
LogUtil.error(proBuilder.ToString());
}
if (String.IsNullOrEmpty(builder.ToString()).Equals(false) && builder.ToString().Equals("\r\n").Equals(false))
{
LogUtil.error(builder.ToString());
}
if (checkProList.Count >= 0)
{
//常规属性检测
foreach (string str in checkProList)
{
PropertyInfo prop = props.First(c => c.Name == str);//获取同名属性
//判断是否必须要配置
//判断是否必须要配置
object[] array = prop.GetCustomAttributes(false);
if (array.Length > 0)
{
......@@ -182,7 +199,7 @@ namespace OnlineStore.LoadCSVLibrary
{
if (att.IsMust)
{
throw new CVSFieldNotMatchingExection(this.ToString() + "的属性" + str + "必须配置值!");
throw new CVSFieldNotMatchingExection(this.ToString() + "的属性【" + str + "】必须配置值!");
}
else
{
......@@ -197,29 +214,63 @@ namespace OnlineStore.LoadCSVLibrary
}
}
}
}
}
}
}
private void AddProBuffer(ConfigBase con, StringBuilder builder)
{
// /// <summary>
// /// PRO 是否使用定位气缸 IsHasLocationCylinder 0
// /// </summary>
//[ConfigProAttribute("IsHasLocationCylinder")]
//public int IsHasLocationCylinder { get; set; }
builder.Append(" /// <summary>\r\n");
builder.Append(" /// " + con.ConfigStr + "\r\n");
builder.Append(" /// </summary>\r\n");
builder.Append(" [ConfigProAttribute(\"" + con.ProName + "\")]\r\n");
builder.Append(" public int " + con.ProName + " { get; set; }\r\n");
}
private void AddBuffer(ConfigBase con, StringBuilder builder)
{
builder.Append(" /// <summary>\r\n");
builder.Append(" /// " + con.ConfigStr + "\r\n");
builder.Append(" /// </summary>\r\n");
builder.Append(" public static string " + con.ProName + "=\"" + con.ProName + "\";\r\n");
}
public void SetIO(int subType)
{
Dictionary<string, ConfigIO> doList = new Dictionary<string, ConfigIO>();
Dictionary<string, ConfigIO> diList = new Dictionary<string, ConfigIO>();
//DI检测
foreach (string di in MustHaveDIList)
if (BaseConfig.SubDIList.ContainsKey(subType))
{
diList = BaseConfig.SubDIList[subType];
}
if (BaseConfig.SubDOList.ContainsKey(subType))
{
doList = BaseConfig.SubDOList[subType];
}
ConfigIO nsc = null;
foreach (string key in diList.Keys)
{
DIList.Add(key, diList[key]);
if (!IOIPList.Contains(diList[key].IO_IP))
{
if (!DIList.ContainsKey(di))
{
throw new CVSFieldNotMatchingExection(this.ToString() + "的DI属性" + di + "必须配置值!");
}
IOIPList.Add(diList[key].IO_IP);
}
}
foreach (string key in doList.Keys)
{
DOList.Add(key, doList[key]);
//DO检测
foreach (string io in MustHaveDOList)
if (!IOIPList.Contains(doList[key].IO_IP))
{
if (!this.DOList.ContainsKey(io))
{
throw new CVSFieldNotMatchingExection(this.ToString() + "的DO属性" + io + "必须配置值!");
}
IOIPList.Add(doList[key].IO_IP);
}
}
}
}
public ConfigIO getWaitIO(string ioType)
{
if (DIList.ContainsKey(ioType))
......
......@@ -17,153 +17,31 @@ namespace OnlineStore.LoadCSVLibrary
{
}
/// <summary>
/// 预警温度
/// </summary>
[ConfigProAttribute("WarnTemperate")]
public int WarnTemperate { get; set; }
/// <summary>
/// 预警湿度
/// </summary>
[ConfigProAttribute("WarnHumidity")]
public int WarnHumidity { get; set; }
/// <summary>
/// 气压检测IO关闭需要持续的时间(=3表示需要关闭三秒以上才算关闭)
/// </summary>
[ConfigProAttribute("AirCheckSeconds")]
public int AirCheckSeconds { get; set; }
/// <summary>
/// IsHasCompress_Axis是否使用压紧轴
/// </summary>
[ConfigProAttribute("IsHasCompress_Axis")]
public int IsHasCompress_Axis { get; set; }
/// <summary>
/// PRO 是否使用定位气缸 IsHasLocationCylinder 0
/// </summary>
[ConfigProAttribute("IsHasLocationCylinder")]
public int IsHasLocationCylinder { get; set; }
/// <summary>
/// PRO 是否有左右侧门 IsHasDoorLimit 0
/// </summary>
[ConfigProAttribute("IsHasDoorLimit")]
public int IsHasDoorLimit { get; set; }
/// <summary>
/// PRO 扫码枪IP Scanner_Ip 192.168.200.13
/// </summary>
[ConfigProAttribute("Scanner_Ip",false)]
public string Scanner_Ip { get; set; }
/// <summary>
/// PRO 扫码枪端口号 Scanner_Port 51236
/// </summary>
[ConfigProAttribute("Scanner_Port",false)]
public int Scanner_Port { get; set; }
/// <summary>
/// PRO (轴一)旋转轴原点目标速度 MiddleAxis_TargetSpeed 30000
/// </summary>
[ConfigProAttribute("MiddleAxis_TargetSpeed")]
public int MiddleAxis_TargetSpeed { get; set; }
/// <summary>
/// PRO (轴一)旋转轴加速度 MiddleAxis_AddSpeed 500
/// </summary>
[ConfigProAttribute("MiddleAxis_AddSpeed")]
public short MiddleAxis_AddSpeed { get; set; }
/// <summary>
/// PRO (轴一)旋转轴减速度 MiddleAxis_DelSpeed 500
/// </summary>
[ConfigProAttribute("MiddleAxis_DelSpeed")]
public short MiddleAxis_DelSpeed { get; set; }
/// <summary>
/// PRO (轴二)升降轴轴原点目标速度 UpdownAxis_TargetSpeed 120000
/// </summary>
[ConfigProAttribute("UpdownAxis_TargetSpeed")]
public int UpdownAxis_TargetSpeed { get; set; }
/// <summary>
/// PRO (轴二)升降轴轴加速度 UpdownAxis_AddSpeed 200
/// </summary>
[ConfigProAttribute("UpdownAxis_AddSpeed")]
public short UpdownAxis_AddSpeed { get; set; }
/// <summary>
/// PRO (轴二)升降轴轴减速度 UpdownAxis_DelSpeed 200
/// </summary>
[ConfigProAttribute("UpdownAxis_DelSpeed")]
public short UpdownAxis_DelSpeed { get; set; }
/// <summary>
/// PRO (轴三)进出轴原点目标速度 InoutAxis_TargetSpeed 12000
/// </summary>
[ConfigProAttribute("InoutAxis_TargetSpeed")]
public int InoutAxis_TargetSpeed { get; set; }
/// <summary>
/// PRO (轴三)进出轴加速度 InoutAxis_AddSpeed 200
/// </summary>
[ConfigProAttribute("InoutAxis_AddSpeed")]
public short InoutAxis_AddSpeed { get; set; }
/// <summary>
/// PRO (轴三)进出轴减速度 InoutAxis_DelSpeed 200
/// </summary>
[ConfigProAttribute("InoutAxis_DelSpeed")]
public short InoutAxis_DelSpeed { get; set; }
/// <summary>
/// PRO (轴一)旋转轴原点低速度 MiddleAxis_HomeLowSpeed 50
/// </summary>
[ConfigProAttribute("MiddleAxis_HomeLowSpeed")]
public short MiddleAxis_HomeLowSpeed { get; set; }
/// <summary>
/// PRO (轴一)旋转轴原点高速 MiddleAxis_HomeHighSpeed 100
/// </summary>
[ConfigProAttribute("MiddleAxis_HomeHighSpeed")]
public short MiddleAxis_HomeHighSpeed { get; set; }
/// <summary>
/// PRO (轴一)旋转轴原点加速度 MiddleAxis_HomeAddSpeed 30
///轴2升降轴 运动上下轴
/// </summary>
[ConfigProAttribute("MiddleAxis_HomeAddSpeed")]
public short MiddleAxis_HomeAddSpeed { get; set; }
[ConfigProAttribute("UpDown_Axis")]
public ConfigMoveAxis UpDown_Axis { get; set; }
/// <summary>
/// PRO (轴二)升降轴轴原点低速度 UpdownAxis_HomeLowSpeed 50
/// 轴1旋转轴 运动中轴
/// </summary>
[ConfigProAttribute("UpdownAxis_HomeLowSpeed")]
public short UpdownAxis_HomeLowSpeed { get; set; }
[ConfigProAttribute("Middle_Axis")]
public ConfigMoveAxis Middle_Axis { get; set; }
/// <summary>
/// PRO (轴二)升降轴轴原点高速 UpdownAxis_HomeHighSpeed 100
/// 轴3进出轴
/// </summary>
[ConfigProAttribute("UpdownAxis_HomeHighSpeed")]
public short UpdownAxis_HomeHighSpeed { get; set; }
[ConfigProAttribute("InOut_Axis")]
public ConfigMoveAxis InOut_Axis { get; set; }
/// <summary>
/// PRO (轴二)升降轴轴原点加速度 UpdownAxis_HomeAddSpeed 30
/// 轴3压紧轴
/// </summary>
[ConfigProAttribute("UpdownAxis_HomeAddSpeed")]
public short UpdownAxis_HomeAddSpeed { get; set; }
[ConfigProAttribute("Comp_Axis")]
public ConfigMoveAxis Comp_Axis { get; set; }
/// <summary>
/// PRO (轴三)进出轴原点低速 InoutAxis_HomeLowSpeed 50
/// </summary>
[ConfigProAttribute("InoutAxis_HomeLowSpeed")]
public short InoutAxis_HomeLowSpeed { get; set; }
/// <summary>
/// PRO (轴三)进出轴原点高速 InoutAxis_HomeHighSpeed 100
/// </summary>
[ConfigProAttribute("InoutAxis_HomeHighSpeed")]
public short InoutAxis_HomeHighSpeed { get; set; }
/// <summary>
/// PRO (轴三)进出轴原点加速度 InoutAxis_HomeAddSpeed 30
/// </summary>
[ConfigProAttribute("InoutAxis_HomeAddSpeed")]
public short InoutAxis_HomeAddSpeed { get; set; }
/// <summary>
/// PRO 升降轴(轴2)P1速度 UpDownAxis_P1_Speed
/// </summary>
[ConfigProAttribute("UpDownAxis_P1_Speed")]
......@@ -237,39 +115,7 @@ namespace OnlineStore.LoadCSVLibrary
[ConfigProAttribute("InOutAxis_P3_Speed")]
public int InOutAxis_P3_Speed { get; set; }
/// <summary>
/// PRO (轴一)旋转轴停止时可误差的脉冲数的最小值 MiddleAxis_ErrorCountMin 200
/// </summary>
[ConfigProAttribute("MiddleAxis_ErrorCountMin")]
public int MiddleAxis_ErrorCountMin { get; set; }
/// <summary>
/// PRO (轴二)升降轴轴停止时可误差的脉冲数的最小值 UpdownAxis_ErrorCountMin 200
/// </summary>
[ConfigProAttribute("UpdownAxis_ErrorCountMin")]
public int UpdownAxis_ErrorCountMin { get; set; }
/// <summary>
/// PRO (轴三)进出轴停止时可误差的脉冲数的最小值 InoutAxis_ErrorCountMin 200
/// </summary>
[ConfigProAttribute("InoutAxis_ErrorCountMin")]
public int InoutAxis_ErrorCountMin { get; set; }
/// <summary>
/// PRO (轴一)旋转轴停止时可误差的脉冲数的最大值 MiddleAxis_ErrorCountMax 500
/// </summary>
[ConfigProAttribute("MiddleAxis_ErrorCountMax")]
public int MiddleAxis_ErrorCountMax { get; set; }
/// <summary>
/// PRO (轴二)升降轴轴停止时可误差的脉冲数的最大值 UpdownAxis_ErrorCountMax 500
/// </summary>
[ConfigProAttribute("UpdownAxis_ErrorCountMax")]
public int UpdownAxis_ErrorCountMax { get; set; }
/// <summary>
/// PRO (轴三)进出轴停止时可误差的脉冲数的最大值 InoutAxis_ErrorCountMax 500
/// </summary>
[ConfigProAttribute("InoutAxis_ErrorCountMax")]
public int InoutAxis_ErrorCountMax { get; set; }
/// <summary>
/// PRO,BOX出入库次数多少次时,会自动重置旋转轴,Box_ResetMCount,10,,,,,
/// </summary>
......@@ -333,118 +179,9 @@ namespace OnlineStore.LoadCSVLibrary
public int IsUse_Tray_Check { get; set; }
/// <summary>
///轴2升降轴 运动上下轴
/// </summary>
[ConfigProAttribute("UpDown_Axis")]
public ConfigMoveAxis UpDown_Axis { get; set; }
/// <summary>
/// 轴1旋转轴 运动中轴
/// </summary>
[ConfigProAttribute("Middle_Axis")]
public ConfigMoveAxis Middle_Axis { get; set; }
/// <summary>
/// 轴3进出轴
/// </summary>
[ConfigProAttribute("InOut_Axis")]
public ConfigMoveAxis InOut_Axis { get; set; }
/// <summary>
/// 轴3压紧轴
/// </summary>
[ConfigProAttribute("Comp_Axis")]
public ConfigMoveAxis Comp_Axis { get; set; }
/// <summary>
/// PRO (轴四)压紧轴目标速度 CompAxis_TargetSpeed 100
/// </summary>
[ConfigProAttribute("CompAxis_TargetSpeed")]
public int CompAxis_TargetSpeed { get; set; }
/// <summary>
/// PRO (轴四)压紧轴加速度 CompAxis_AddSpeed 300
/// </summary>
[ConfigProAttribute("CompAxis_AddSpeed")]
public short CompAxis_AddSpeed { get; set; }
/// <summary>
/// PRO (轴四)压紧轴减速度 CompAxis_DelSpeed 300
/// </summary>
[ConfigProAttribute("CompAxis_DelSpeed")]
public short CompAxis_DelSpeed { get; set; }
/// <summary>
/// PRO (轴四)压紧轴原点低速 CompAxis_HomeLowSpeed 20
/// </summary>
[ConfigProAttribute("CompAxis_HomeLowSpeed")]
public int CompAxis_HomeLowSpeed { get; set; }
/// <summary>
/// PRO (轴四)压紧轴原点高速 CompAxis_HomeHighSpeed 60
/// </summary>
[ConfigProAttribute("CompAxis_HomeHighSpeed")]
public int CompAxis_HomeHighSpeed { get; set; }
/// <summary>
/// PRO (轴四)压紧轴原点加速度 CompAxis_HomeAddSpeed 200
/// </summary>
[ConfigProAttribute("CompAxis_HomeAddSpeed")]
public int CompAxis_HomeAddSpeed { get; set; }
/// <summary>
/// PRO (轴一)旋转轴最小限位 MiddleAxis_PositionMin
/// </summary>
[ConfigProAttribute("MiddleAxis_PositionMin", false)]
public int MiddleAxis_PositionMin { get; set; }
/// <summary>
/// PRO (轴二)升降轴最小限位 UpdownAxis_PositionMin
/// </summary>
[ConfigProAttribute("UpdownAxis_PositionMin", false)]
public int UpdownAxis_PositionMin { get; set; }
/// <summary>
/// PRO (轴三)进出轴最小限位 InoutAxis_PositionMin
/// </summary>
[ConfigProAttribute("InoutAxis_PositionMin", false)]
public int InoutAxis_PositionMin { get; set; }
/// <summary>
/// PRO (轴一)旋转轴最大限位 MiddleAxis_PositionMax
/// </summary>
[ConfigProAttribute("MiddleAxis_PositionMax", false)]
public int MiddleAxis_PositionMax { get; set; }
/// <summary>
/// PRO (轴二)升降轴最大限位 UpdownAxis_PositionMax
/// </summary>
[ConfigProAttribute("UpdownAxis_PositionMax", false)]
public int UpdownAxis_PositionMax { get; set; }
/// <summary>
/// PRO (轴三)进出轴最大限位 InoutAxis_PositionMax
/// </summary>
[ConfigProAttribute("InoutAxis_PositionMax", false)]
/// <summary>
/// PRO 需要吹气的温度(温度标准) Max_Temperature 10
/// </summary>
[ConfigProAttribute("Max_Temperature", false)]
public int Max_Temperature { get; set; }
/// <summary>
/// PRO 需要吹气的湿度(湿度标准) Max_Humidity 10
/// </summary>
[ConfigProAttribute("Max_Humidity", false)]
public int Max_Humidity { get; set; }
/// <summary>
/// PRO 每次吹气的时间(分钟) BlowAir_Time 10
/// </summary>
[ConfigProAttribute("BlowAir_Time", false)]
public int BlowAir_Time { get; set; }
/// <summary>
/// PRO 两次吹气间隔(分钟) BlowAir_Interval 10
/// </summary>
[ConfigProAttribute("BlowAir_Interval", false)]
public int BlowAir_Interval { get; set; }
public int InoutAxis_PositionMax { get; set; }
/// <summary>
/// PRO,温湿度端口号,Humiture_Port,COM1,,,,,,,
/// </summary>
[ConfigProAttribute("Humiture_Port", true )]
public string Humiture_Port { get; set; }
/// <summary>
......@@ -465,166 +202,85 @@ namespace OnlineStore.LoadCSVLibrary
/// <summary>
/// PRO IO模块对应的DI数量 IO_DILength 192.168.200.10#16;192.168.200.11#4
/// PRO 每次吹气的时间(分钟) BlowAir_Time 10
/// </summary>
[ConfigProAttribute("IO_DILength")]
public string IO_DILength { get; set; }
[ConfigProAttribute("BlowAir_Time", false)]
public int BlowAir_Time { get; set; }
/// <summary>
/// PRO 模块对应的DO数量 IO_DOLength 192.168.200.10#16;192.168.200.11#4
/// PRO 两次吹气间隔(分钟) BlowAir_Interval 10
/// </summary>
[ConfigProAttribute("IO_DOLength")]
public string IO_DOLength { get; set; }
[ConfigProAttribute("BlowAir_Interval", false)]
public int BlowAir_Interval { get; set; }
/// <summary>
/// PRO 是否有仓门 HasDoor 1
/// PRO,0,是否调试状态,ISDebug,0,,,,,,,,,,,,
/// </summary>
[ConfigProAttribute("HasDoor")]
public int HasDoor { get; set; }
protected override void initMustHavePro()
{
MustHaveDIList = new List<string>();
MustHaveDOList = new List<string>();
MustHaveDIList.Add(IO_Type.SuddenStop_BTN);
MustHaveDIList.Add(IO_Type.Reset_BTN);
MustHaveDIList.Add(IO_Type.DoorLimit);
MustHaveDIList.Add(IO_Type.Airpressure_Check);
MustHaveDIList.Add(IO_Type.TrayCheck_Door);
MustHaveDIList.Add(IO_Type.TrayCheck_Fixture);
MustHaveDIList.Add(IO_Type.Door_Up);
MustHaveDIList.Add(IO_Type.Door_Down);
MustHaveDOList.Add(IO_Type.AutoRun_HddLed);
MustHaveDOList.Add(IO_Type.Alarm_HddLed);
MustHaveDOList.Add(IO_Type.RunSign_HddLed);
MustHaveDOList.Add(IO_Type.StartOrStopBlow);
MustHaveDOList.Add(IO_Type.Run_Signal);
MustHaveDOList.Add(IO_Type.Door_Up);
MustHaveDOList.Add(IO_Type.Door_Down);
MustHaveDOList.Add(IO_Type.Axis_Brake);
}
public static void ConfigAxis(BoxConfig Config)
{
Config.Middle_Axis.TargetSpeed = Config.MiddleAxis_TargetSpeed;
Config.Middle_Axis.AddSpeed = Config.MiddleAxis_AddSpeed;
Config.Middle_Axis.DelSpeed = Config.MiddleAxis_DelSpeed;
Config.Middle_Axis.HomeAddSpeed = Config.MiddleAxis_HomeAddSpeed;
Config.Middle_Axis.HomeHighSpeed = Config.MiddleAxis_HomeHighSpeed;
Config.Middle_Axis.HomeLowSpeed = Config.MiddleAxis_HomeLowSpeed;
Config.InOut_Axis.TargetSpeed = Config.InoutAxis_TargetSpeed;
Config.InOut_Axis.DelSpeed = Config.InoutAxis_AddSpeed;
Config.InOut_Axis.AddSpeed = Config.InoutAxis_DelSpeed;
Config.InOut_Axis.HomeAddSpeed = Config.InoutAxis_HomeAddSpeed;
Config.InOut_Axis.HomeHighSpeed = Config.InoutAxis_HomeHighSpeed;
Config.InOut_Axis.HomeLowSpeed = Config.InoutAxis_HomeLowSpeed;
Config.UpDown_Axis.TargetSpeed = Config.UpdownAxis_TargetSpeed;
Config.UpDown_Axis.AddSpeed = Config.UpdownAxis_AddSpeed;
Config.UpDown_Axis.DelSpeed = Config.UpdownAxis_DelSpeed;
Config.UpDown_Axis.HomeAddSpeed = Config.UpdownAxis_HomeAddSpeed;
Config.UpDown_Axis.HomeHighSpeed = Config.UpdownAxis_HomeHighSpeed;
Config.UpDown_Axis.HomeLowSpeed = Config.UpdownAxis_HomeLowSpeed;
Config.Comp_Axis.TargetSpeed = Config.CompAxis_TargetSpeed;
Config.Comp_Axis.AddSpeed = Config.CompAxis_AddSpeed;
Config.Comp_Axis.DelSpeed = Config.CompAxis_DelSpeed;
Config.Comp_Axis.HomeAddSpeed = Config.CompAxis_HomeAddSpeed;
Config.Comp_Axis.HomeHighSpeed = Config.CompAxis_HomeHighSpeed;
Config.Comp_Axis.HomeLowSpeed = Config.CompAxis_HomeLowSpeed;
Config.Middle_Axis.CanErrorCountMin = Config.MiddleAxis_ErrorCountMin;
Config.InOut_Axis.CanErrorCountMin = Config.InoutAxis_ErrorCountMin;
Config.UpDown_Axis.CanErrorCountMin = Config.UpdownAxis_ErrorCountMin;
Config.Middle_Axis.CanErrorCountMax = Config.MiddleAxis_ErrorCountMax;
Config.InOut_Axis.CanErrorCountMax = Config.InoutAxis_ErrorCountMax;
Config.UpDown_Axis.CanErrorCountMax = Config.UpdownAxis_ErrorCountMax;
Config.Middle_Axis.PositionMin = Config.MiddleAxis_PositionMin;
Config.Middle_Axis.PositionMax = Config.MiddleAxis_PositionMax;
Config.InOut_Axis.PositionMin = Config.InoutAxis_PositionMin;
Config.InOut_Axis.PositionMax = Config.InoutAxis_PositionMax;
Config.UpDown_Axis.PositionMin = Config.UpdownAxis_PositionMin;
Config.UpDown_Axis.PositionMax = Config.UpdownAxis_PositionMax;
//Config.InOut_Axis.ResolveSpeed = Config.InoutAxis_ResolveSpeed;
//Config.UpDown_Axis.ResolveSpeed = Config.UpdownAxis_ResolveSpeed;
//Config.Middle_Axis.ResolveSpeed = Config.MiddleAxis_ResolveSpeed;
Config.Middle_Axis.DefaultPosition = Config.MiddleAxis_P1_Position;
Config.InOut_Axis.DefaultPosition = Config.InOutAxis_P1_Position;
Config.UpDown_Axis.DefaultPosition = Config.UpDownAxis_DoorOPosition_P1;
Config.Comp_Axis.DefaultPosition = Config.CompressAxis_P1_Position;
Config.Comp_Axis.CanErrorCountMax = 1000;
Config.Comp_Axis.CanErrorCountMin = 10;
Config.Comp_Axis.PositionMin = 0;
Config.Comp_Axis.PositionMax = 0;
}
[ConfigProAttribute("ISDebug")]
public int ISDebug { get; set; }
private Dictionary<string, ushort> DILengthMap = null;
private Dictionary<string, ushort> DOLengthMap = null;
public ushort GetDILength(string ip)
{
try
{
if (DILengthMap == null)
{
DILengthMap = new Dictionary<string, ushort>();
string[] arrayList = IO_DILength.Split(';');
foreach (string str in arrayList)
{
string[] arrStr = str.Split('#');
if (arrStr.Length == 2)
{
string ioip = arrStr[0];
ushort length = Convert.ToUInt16(arrStr[1]);
DILengthMap.Add(ioip, length);
}
}
}
}
catch (Exception ex)
{
}
if (DILengthMap.ContainsKey(ip))
{
return DILengthMap[ip];
}
return 16;
//try
//{
// if (DILengthMap == null)
// {
// DILengthMap = new Dictionary<string, ushort>();
// string[] arrayList = IO_DILength.Split(';');
// foreach (string str in arrayList)
// {
// string[] arrStr = str.Split('#');
// if (arrStr.Length == 2)
// {
// string ioip = arrStr[0];
// ushort length = Convert.ToUInt16(arrStr[1]);
// DILengthMap.Add(ioip, length);
// }
// }
// }
//}
//catch (Exception ex)
//{
//}
//if (DILengthMap.ContainsKey(ip))
//{
// return DILengthMap[ip];
//}
//return 16;
}
public ushort GetDOLength(string ip)
{
try
{
if (DOLengthMap == null)
{
DOLengthMap = new Dictionary<string, ushort>();
string[] arrayList = IO_DOLength.Split(';');
foreach (string str in arrayList)
{
string[] arrStr = str.Split('#');
if (arrStr.Length == 2)
{
string ioip = arrStr[0];
ushort length = Convert.ToUInt16(arrStr[1]);
DOLengthMap.Add(ioip, length);
}
}
}
}
catch (Exception ex)
{
}
if (DOLengthMap.ContainsKey(ip))
{
return DOLengthMap[ip];
}
return 16;
//try
//{
// if (DOLengthMap == null)
// {
// DOLengthMap = new Dictionary<string, ushort>();
// string[] arrayList = IO_DOLength.Split(';');
// foreach (string str in arrayList)
// {
// string[] arrStr = str.Split('#');
// if (arrStr.Length == 2)
// {
// string ioip = arrStr[0];
// ushort length = Convert.ToUInt16(arrStr[1]);
// DOLengthMap.Add(ioip, length);
// }
// }
// }
//}
//catch (Exception ex)
//{
//}
//if (DOLengthMap.ContainsKey(ip))
//{
// return DOLengthMap[ip];
//}
//return 16;
}
}
......
......@@ -120,7 +120,14 @@ namespace OnlineStore.LoadCSVLibrary
public static string DoorLimit = "DoorLimit";
/// <summary>
/// DO,0,报警蜂鸣器,Alarm_Buzzer,3,HC,Y04,
/// </summary>
public static string Alarm_Buzzer = "Alarm_Buzzer";
/// <summary>
/// DO,0,设备照明ON,Device_Led,8,HC,Y09,
/// </summary>
public static string Device_Led = "Device_Led";
}
public enum IO_VALUE
......
......@@ -14,11 +14,61 @@ namespace OnlineStore.LoadCSVLibrary
public StoreConfig(int id, string cid, string type, string filepath)
: base(id, cid, type, filepath)
{
} /// <summary>
/// PRO IO信号超时时间(毫秒) IOSingle_TimerOut 5000
/// </summary>
}
/// <summary>
/// 预警温度
/// </summary>
[ConfigProAttribute("WarnTemperate")]
public int WarnTemperate { get; set; }
/// <summary>
/// 预警湿度
/// </summary>
[ConfigProAttribute("WarnHumidity")]
public int WarnHumidity { get; set; }
/// <summary>
/// 气压检测IO关闭需要持续的时间(=3表示需要关闭三秒以上才算关闭)
/// </summary>
[ConfigProAttribute("AirCheckSeconds")]
public int AirCheckSeconds { get; set; }
/// <summary>
/// PRO IO信号超时时间(毫秒) IOSingle_TimerOut 5000
/// </summary>
[ConfigProAttribute("IOSingle_TimerOut", false)]
public int IOSingle_TimerOut { get; set; }
/// <summary>
/// PRO 需要吹气的温度(温度标准) Max_Temperature 10
/// </summary>
[ConfigProAttribute("Max_Temperature", false)]
public int Max_Temperature { get; set; }
/// <summary>
/// PRO 需要吹气的湿度(湿度标准) Max_Humidity 10
/// </summary>
[ConfigProAttribute("Max_Humidity", false)]
public int Max_Humidity { get; set; }
/// <summary>
/// PRO 每次吹气的时间(分钟) BlowAir_Time 10
/// </summary>
[ConfigProAttribute("BlowAir_Time", false)]
public int BlowAir_Time { get; set; }
/// <summary>
/// PRO 两次吹气间隔(分钟) BlowAir_Interval 10
/// </summary>
[ConfigProAttribute("BlowAir_Interval", false)]
public int BlowAir_Interval { get; set; }
public int InoutAxis_PositionMax { get; set; }
/// <summary>
/// PRO,温湿度端口号,Humiture_Port,COM1,,,,,,,
/// </summary>
[ConfigProAttribute("Humiture_Port", true)]
public string Humiture_Port { get; set; }
public ushort GetDOLength(string ioIp)
{
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!