Commit 10be948a 几米阳光

代码修改

1 个父辈 e1c28beb
正在显示 37 个修改的文件 包含 431 行增加4939 行删除
......@@ -51,27 +51,27 @@
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(39, 91);
this.label1.Location = new System.Drawing.Point(39, 77);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(89, 12);
this.label1.Size = new System.Drawing.Size(107, 20);
this.label1.TabIndex = 0;
this.label1.Text = "(轴一)旋转轴";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(39, 145);
this.label2.Location = new System.Drawing.Point(39, 131);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(89, 12);
this.label2.Size = new System.Drawing.Size(107, 20);
this.label2.TabIndex = 1;
this.label2.Text = "(轴二)升降轴";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(39, 198);
this.label3.Location = new System.Drawing.Point(39, 184);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(89, 12);
this.label3.Size = new System.Drawing.Size(107, 20);
this.label3.TabIndex = 2;
this.label3.Text = "(轴三)进出轴";
//
......@@ -80,16 +80,16 @@
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(39, 233);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(89, 12);
this.label4.Size = new System.Drawing.Size(107, 20);
this.label4.TabIndex = 3;
this.label4.Text = "(轴四)压紧轴";
this.label4.Visible = false;
//
// btnMiddleMove
//
this.btnMiddleMove.Location = new System.Drawing.Point(293, 79);
this.btnMiddleMove.Location = new System.Drawing.Point(266, 70);
this.btnMiddleMove.Name = "btnMiddleMove";
this.btnMiddleMove.Size = new System.Drawing.Size(107, 31);
this.btnMiddleMove.Size = new System.Drawing.Size(131, 36);
this.btnMiddleMove.TabIndex = 4;
this.btnMiddleMove.Text = "旋转轴+(顺时针)";
this.btnMiddleMove.UseVisualStyleBackColor = true;
......@@ -99,38 +99,38 @@
//
// txtMiddleSpeed
//
this.txtMiddleSpeed.Location = new System.Drawing.Point(150, 86);
this.txtMiddleSpeed.Location = new System.Drawing.Point(150, 75);
this.txtMiddleSpeed.Name = "txtMiddleSpeed";
this.txtMiddleSpeed.Size = new System.Drawing.Size(108, 21);
this.txtMiddleSpeed.Size = new System.Drawing.Size(108, 26);
this.txtMiddleSpeed.TabIndex = 5;
//
// txtUpDownSpeed
//
this.txtUpDownSpeed.Location = new System.Drawing.Point(150, 140);
this.txtUpDownSpeed.Location = new System.Drawing.Point(150, 129);
this.txtUpDownSpeed.Name = "txtUpDownSpeed";
this.txtUpDownSpeed.Size = new System.Drawing.Size(108, 21);
this.txtUpDownSpeed.Size = new System.Drawing.Size(108, 26);
this.txtUpDownSpeed.TabIndex = 6;
//
// txtInOutSpeed
//
this.txtInOutSpeed.Location = new System.Drawing.Point(150, 193);
this.txtInOutSpeed.Location = new System.Drawing.Point(150, 182);
this.txtInOutSpeed.Name = "txtInOutSpeed";
this.txtInOutSpeed.Size = new System.Drawing.Size(108, 21);
this.txtInOutSpeed.Size = new System.Drawing.Size(108, 26);
this.txtInOutSpeed.TabIndex = 7;
//
// txtComSpeed
//
this.txtComSpeed.Location = new System.Drawing.Point(150, 228);
this.txtComSpeed.Name = "txtComSpeed";
this.txtComSpeed.Size = new System.Drawing.Size(108, 21);
this.txtComSpeed.Size = new System.Drawing.Size(108, 26);
this.txtComSpeed.TabIndex = 8;
this.txtComSpeed.Visible = false;
//
// btnUpDownMove
//
this.btnUpDownMove.Location = new System.Drawing.Point(293, 133);
this.btnUpDownMove.Location = new System.Drawing.Point(266, 124);
this.btnUpDownMove.Name = "btnUpDownMove";
this.btnUpDownMove.Size = new System.Drawing.Size(107, 31);
this.btnUpDownMove.Size = new System.Drawing.Size(131, 36);
this.btnUpDownMove.TabIndex = 9;
this.btnUpDownMove.Text = "升降轴+(下降)";
this.btnUpDownMove.UseVisualStyleBackColor = true;
......@@ -139,9 +139,9 @@
//
// btnInOutMove
//
this.btnInOutMove.Location = new System.Drawing.Point(293, 186);
this.btnInOutMove.Location = new System.Drawing.Point(266, 177);
this.btnInOutMove.Name = "btnInOutMove";
this.btnInOutMove.Size = new System.Drawing.Size(107, 31);
this.btnInOutMove.Size = new System.Drawing.Size(131, 36);
this.btnInOutMove.TabIndex = 10;
this.btnInOutMove.Text = "进出轴+(前进)";
this.btnInOutMove.UseVisualStyleBackColor = true;
......@@ -174,9 +174,9 @@
//
// btnInOutMovej
//
this.btnInOutMovej.Location = new System.Drawing.Point(421, 186);
this.btnInOutMovej.Location = new System.Drawing.Point(401, 177);
this.btnInOutMovej.Name = "btnInOutMovej";
this.btnInOutMovej.Size = new System.Drawing.Size(107, 31);
this.btnInOutMovej.Size = new System.Drawing.Size(131, 36);
this.btnInOutMovej.TabIndex = 14;
this.btnInOutMovej.Text = "进出轴-(后退)";
this.btnInOutMovej.UseVisualStyleBackColor = true;
......@@ -185,9 +185,9 @@
//
// btnUpDownMovej
//
this.btnUpDownMovej.Location = new System.Drawing.Point(421, 133);
this.btnUpDownMovej.Location = new System.Drawing.Point(401, 124);
this.btnUpDownMovej.Name = "btnUpDownMovej";
this.btnUpDownMovej.Size = new System.Drawing.Size(107, 31);
this.btnUpDownMovej.Size = new System.Drawing.Size(131, 36);
this.btnUpDownMovej.TabIndex = 13;
this.btnUpDownMovej.Text = "升降轴-(上升)";
this.btnUpDownMovej.UseVisualStyleBackColor = true;
......@@ -196,9 +196,9 @@
//
// btnMiddleMovej
//
this.btnMiddleMovej.Location = new System.Drawing.Point(421, 79);
this.btnMiddleMovej.Location = new System.Drawing.Point(401, 70);
this.btnMiddleMovej.Name = "btnMiddleMovej";
this.btnMiddleMovej.Size = new System.Drawing.Size(107, 31);
this.btnMiddleMovej.Size = new System.Drawing.Size(131, 36);
this.btnMiddleMovej.TabIndex = 12;
this.btnMiddleMovej.Text = "旋转轴-(逆时针)";
this.btnMiddleMovej.UseVisualStyleBackColor = true;
......@@ -209,7 +209,7 @@
//
this.button1.Location = new System.Drawing.Point(402, 253);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(126, 30);
this.button1.Size = new System.Drawing.Size(126, 37);
this.button1.TabIndex = 16;
this.button1.Text = "关闭";
this.button1.UseVisualStyleBackColor = true;
......@@ -217,7 +217,7 @@
//
// FrmAxisDebug
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(558, 318);
this.Controls.Add(this.button1);
......
......@@ -230,11 +230,7 @@ namespace OnlineStore.ACSingleStore
{
this.Close();
}
private void btnMiddleMove_Click(object sender, EventArgs e)
{
}
private void FrmAxisDebug_Shown(object sender, EventArgs e)
{
......
......@@ -43,9 +43,10 @@
//
// FrmBase
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.ClientSize = new System.Drawing.Size(300, 300);
this.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "FrmBase";
this.Text = "FrmBase";
......
......@@ -77,6 +77,7 @@
this.groupBox1.Controls.Add(this.label6);
this.groupBox1.Controls.Add(this.btnWriteSingleDO);
this.groupBox1.Controls.Add(this.cmbWriteIO);
this.groupBox1.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.groupBox1.Location = new System.Drawing.Point(19, 25);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(344, 478);
......@@ -86,10 +87,10 @@
//
// btnLocationDown
//
this.btnLocationDown.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnLocationDown.Location = new System.Drawing.Point(201, 280);
this.btnLocationDown.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnLocationDown.Location = new System.Drawing.Point(164, 384);
this.btnLocationDown.Name = "btnLocationDown";
this.btnLocationDown.Size = new System.Drawing.Size(117, 27);
this.btnLocationDown.Size = new System.Drawing.Size(117, 40);
this.btnLocationDown.TabIndex = 251;
this.btnLocationDown.Text = "定位气缸下降";
this.btnLocationDown.UseVisualStyleBackColor = true;
......@@ -97,10 +98,10 @@
//
// btnLocationUp
//
this.btnLocationUp.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnLocationUp.Location = new System.Drawing.Point(68, 280);
this.btnLocationUp.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnLocationUp.Location = new System.Drawing.Point(31, 384);
this.btnLocationUp.Name = "btnLocationUp";
this.btnLocationUp.Size = new System.Drawing.Size(117, 27);
this.btnLocationUp.Size = new System.Drawing.Size(117, 40);
this.btnLocationUp.TabIndex = 250;
this.btnLocationUp.Text = "定位气缸上升";
this.btnLocationUp.UseVisualStyleBackColor = true;
......@@ -108,10 +109,10 @@
//
// btnCloseDoor
//
this.btnCloseDoor.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnCloseDoor.Location = new System.Drawing.Point(201, 247);
this.btnCloseDoor.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnCloseDoor.Location = new System.Drawing.Point(164, 332);
this.btnCloseDoor.Name = "btnCloseDoor";
this.btnCloseDoor.Size = new System.Drawing.Size(117, 27);
this.btnCloseDoor.Size = new System.Drawing.Size(117, 40);
this.btnCloseDoor.TabIndex = 249;
this.btnCloseDoor.Text = "关闭仓门";
this.btnCloseDoor.UseVisualStyleBackColor = true;
......@@ -119,10 +120,10 @@
//
// btnOpenDoor
//
this.btnOpenDoor.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnOpenDoor.Location = new System.Drawing.Point(68, 247);
this.btnOpenDoor.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnOpenDoor.Location = new System.Drawing.Point(31, 332);
this.btnOpenDoor.Name = "btnOpenDoor";
this.btnOpenDoor.Size = new System.Drawing.Size(117, 27);
this.btnOpenDoor.Size = new System.Drawing.Size(117, 40);
this.btnOpenDoor.TabIndex = 248;
this.btnOpenDoor.Text = "打开仓门";
this.btnOpenDoor.UseVisualStyleBackColor = true;
......@@ -131,43 +132,43 @@
// label3
//
this.label3.AutoSize = true;
this.label3.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label3.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label3.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label3.Location = new System.Drawing.Point(194, 83);
this.label3.Location = new System.Drawing.Point(194, 99);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(47, 12);
this.label3.Size = new System.Drawing.Size(62, 20);
this.label3.TabIndex = 247;
this.label3.Text = "选择DO:";
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// txtSlaveId
//
this.txtSlaveId.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtSlaveId.Location = new System.Drawing.Point(79, 80);
this.txtSlaveId.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtSlaveId.Location = new System.Drawing.Point(79, 94);
this.txtSlaveId.MaxLength = 10;
this.txtSlaveId.Name = "txtSlaveId";
this.txtSlaveId.Size = new System.Drawing.Size(101, 21);
this.txtSlaveId.Size = new System.Drawing.Size(101, 26);
this.txtSlaveId.TabIndex = 246;
this.txtSlaveId.Text = "0";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label2.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label2.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label2.Location = new System.Drawing.Point(21, 85);
this.label2.Location = new System.Drawing.Point(21, 101);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(47, 12);
this.label2.Size = new System.Drawing.Size(57, 20);
this.label2.TabIndex = 245;
this.label2.Text = "SlaveId";
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// btnReadAllDo
//
this.btnReadAllDo.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnReadAllDo.Location = new System.Drawing.Point(199, 214);
this.btnReadAllDo.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnReadAllDo.Location = new System.Drawing.Point(164, 280);
this.btnReadAllDo.Name = "btnReadAllDo";
this.btnReadAllDo.Size = new System.Drawing.Size(117, 27);
this.btnReadAllDo.Size = new System.Drawing.Size(117, 40);
this.btnReadAllDo.TabIndex = 245;
this.btnReadAllDo.Text = "读取所有DO";
this.btnReadAllDo.UseVisualStyleBackColor = true;
......@@ -176,19 +177,20 @@
// chbAutoRead
//
this.chbAutoRead.AutoSize = true;
this.chbAutoRead.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.chbAutoRead.Location = new System.Drawing.Point(196, 21);
this.chbAutoRead.Name = "chbAutoRead";
this.chbAutoRead.Size = new System.Drawing.Size(84, 16);
this.chbAutoRead.Size = new System.Drawing.Size(99, 24);
this.chbAutoRead.TabIndex = 244;
this.chbAutoRead.Text = "自动读取IO";
this.chbAutoRead.UseVisualStyleBackColor = true;
//
// btnReadAllDi
//
this.btnReadAllDi.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnReadAllDi.Location = new System.Drawing.Point(66, 214);
this.btnReadAllDi.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnReadAllDi.Location = new System.Drawing.Point(31, 280);
this.btnReadAllDi.Name = "btnReadAllDi";
this.btnReadAllDi.Size = new System.Drawing.Size(117, 27);
this.btnReadAllDi.Size = new System.Drawing.Size(117, 40);
this.btnReadAllDi.TabIndex = 244;
this.btnReadAllDi.Text = "读取所有DI";
this.btnReadAllDi.UseVisualStyleBackColor = true;
......@@ -196,10 +198,10 @@
//
// btnReadIO
//
this.btnReadIO.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnReadIO.Location = new System.Drawing.Point(66, 182);
this.btnReadIO.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnReadIO.Location = new System.Drawing.Point(31, 228);
this.btnReadIO.Name = "btnReadIO";
this.btnReadIO.Size = new System.Drawing.Size(117, 27);
this.btnReadIO.Size = new System.Drawing.Size(117, 40);
this.btnReadIO.TabIndex = 243;
this.btnReadIO.Text = "读取IO状态";
this.btnReadIO.UseVisualStyleBackColor = true;
......@@ -207,32 +209,32 @@
//
// txtDOIndex
//
this.txtDOIndex.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtDOIndex.Location = new System.Drawing.Point(79, 49);
this.txtDOIndex.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtDOIndex.Location = new System.Drawing.Point(79, 56);
this.txtDOIndex.MaxLength = 10;
this.txtDOIndex.Name = "txtDOIndex";
this.txtDOIndex.Size = new System.Drawing.Size(101, 21);
this.txtDOIndex.Size = new System.Drawing.Size(101, 26);
this.txtDOIndex.TabIndex = 242;
this.txtDOIndex.Text = "0";
//
// txtDoName
//
this.txtDoName.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtDoName.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtDoName.Location = new System.Drawing.Point(79, 18);
this.txtDoName.MaxLength = 10;
this.txtDoName.Name = "txtDoName";
this.txtDoName.Size = new System.Drawing.Size(101, 21);
this.txtDoName.Size = new System.Drawing.Size(101, 26);
this.txtDoName.TabIndex = 241;
this.txtDoName.Text = "0";
//
// label17
//
this.label17.AutoSize = true;
this.label17.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label17.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label17.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label17.Location = new System.Drawing.Point(21, 25);
this.label17.Name = "label17";
this.label17.Size = new System.Drawing.Size(47, 12);
this.label17.Size = new System.Drawing.Size(53, 20);
this.label17.TabIndex = 240;
this.label17.Text = "设备IP:";
this.label17.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
......@@ -240,33 +242,33 @@
// label14
//
this.label14.AutoSize = true;
this.label14.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label14.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label14.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label14.Location = new System.Drawing.Point(27, 55);
this.label14.Location = new System.Drawing.Point(27, 62);
this.label14.Name = "label14";
this.label14.Size = new System.Drawing.Size(41, 12);
this.label14.Size = new System.Drawing.Size(51, 20);
this.label14.TabIndex = 239;
this.label14.Text = "地址:";
this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// txtWriteTime
//
this.txtWriteTime.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtWriteTime.Location = new System.Drawing.Point(232, 144);
this.txtWriteTime.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtWriteTime.Location = new System.Drawing.Point(244, 171);
this.txtWriteTime.MaxLength = 10;
this.txtWriteTime.Name = "txtWriteTime";
this.txtWriteTime.Size = new System.Drawing.Size(84, 21);
this.txtWriteTime.Size = new System.Drawing.Size(84, 26);
this.txtWriteTime.TabIndex = 238;
this.txtWriteTime.Text = "0";
//
// label5
//
this.label5.AutoSize = true;
this.label5.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label5.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label5.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label5.Location = new System.Drawing.Point(169, 153);
this.label5.Location = new System.Drawing.Point(169, 174);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(59, 12);
this.label5.Size = new System.Drawing.Size(69, 20);
this.label5.TabIndex = 237;
this.label5.Text = "定时(ms):";
this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
......@@ -275,35 +277,35 @@
//
this.cmbWriteValue.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;
this.cmbWriteValue.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbWriteValue.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.cmbWriteValue.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.cmbWriteValue.FormattingEnabled = true;
this.cmbWriteValue.Items.AddRange(new object[] {
"0",
"1"});
this.cmbWriteValue.Location = new System.Drawing.Point(79, 143);
this.cmbWriteValue.Location = new System.Drawing.Point(79, 171);
this.cmbWriteValue.Name = "cmbWriteValue";
this.cmbWriteValue.Size = new System.Drawing.Size(84, 22);
this.cmbWriteValue.Size = new System.Drawing.Size(84, 27);
this.cmbWriteValue.TabIndex = 236;
this.cmbWriteValue.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.cmbWriteValue_DrawItem);
//
// label6
//
this.label6.AutoSize = true;
this.label6.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label6.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label6.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label6.Location = new System.Drawing.Point(21, 153);
this.label6.Location = new System.Drawing.Point(21, 174);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(47, 12);
this.label6.Size = new System.Drawing.Size(54, 20);
this.label6.TabIndex = 235;
this.label6.Text = "写入值:";
this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// btnWriteSingleDO
//
this.btnWriteSingleDO.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnWriteSingleDO.Location = new System.Drawing.Point(199, 183);
this.btnWriteSingleDO.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnWriteSingleDO.Location = new System.Drawing.Point(164, 228);
this.btnWriteSingleDO.Name = "btnWriteSingleDO";
this.btnWriteSingleDO.Size = new System.Drawing.Size(117, 27);
this.btnWriteSingleDO.Size = new System.Drawing.Size(117, 40);
this.btnWriteSingleDO.TabIndex = 232;
this.btnWriteSingleDO.Text = "写入DO";
this.btnWriteSingleDO.UseVisualStyleBackColor = true;
......@@ -314,11 +316,11 @@
this.cmbWriteIO.DisplayMember = "ProName";
this.cmbWriteIO.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;
this.cmbWriteIO.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbWriteIO.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.cmbWriteIO.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.cmbWriteIO.FormattingEnabled = true;
this.cmbWriteIO.Location = new System.Drawing.Point(22, 107);
this.cmbWriteIO.Location = new System.Drawing.Point(22, 132);
this.cmbWriteIO.Name = "cmbWriteIO";
this.cmbWriteIO.Size = new System.Drawing.Size(279, 22);
this.cmbWriteIO.Size = new System.Drawing.Size(279, 27);
this.cmbWriteIO.TabIndex = 234;
this.cmbWriteIO.ValueMember = "ProName";
this.cmbWriteIO.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.cmbWriteIO_DrawItem);
......
......@@ -236,25 +236,25 @@ namespace OnlineStore.ACSingleStore
}
private void btnOpenDoor_Click(object sender, EventArgs e)
{
boxBean.KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.HIGH);
boxBean.KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.LOW);
boxBean.KNDIOMove(IO_Type.Door_Up, IO_VALUE.HIGH);
boxBean.KNDIOMove(IO_Type.Door_Down, IO_VALUE.LOW);
}
private void btnCloseDoor_Click(object sender, EventArgs e)
{
boxBean.KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.HIGH);
boxBean.KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.LOW);
boxBean.KNDIOMove(IO_Type.Door_Down, IO_VALUE.HIGH);
boxBean.KNDIOMove(IO_Type.Door_Up, IO_VALUE.LOW);
}
private void btnLocationUp_Click(object sender, EventArgs e)
{
boxBean.KNDIOMove(Store_IO_Type.LocationCylinder_Down, IO_VALUE.LOW);
boxBean.KNDIOMove(Store_IO_Type.LocationCylinder_Up, IO_VALUE.HIGH);
boxBean.KNDIOMove(IO_Type.LocationCylinder_Down, IO_VALUE.LOW);
boxBean.KNDIOMove(IO_Type.LocationCylinder_Up, IO_VALUE.HIGH);
}
private void btnLocationDown_Click(object sender, EventArgs e)
{
boxBean.KNDIOMove(Store_IO_Type.LocationCylinder_Down, IO_VALUE.HIGH);
boxBean.KNDIOMove(Store_IO_Type.LocationCylinder_Up, IO_VALUE.LOW);
boxBean.KNDIOMove(IO_Type.LocationCylinder_Down, IO_VALUE.HIGH);
boxBean.KNDIOMove(IO_Type.LocationCylinder_Up, IO_VALUE.LOW);
}
private void FrmIOStatus_Shown(object sender, EventArgs e)
......
......@@ -60,7 +60,7 @@
this.txtPwd.MaxLength = 100;
this.txtPwd.Name = "txtPwd";
this.txtPwd.PasswordChar = '*';
this.txtPwd.Size = new System.Drawing.Size(100, 21);
this.txtPwd.Size = new System.Drawing.Size(100, 26);
this.txtPwd.TabIndex = 5;
//
// txtUserName
......@@ -69,7 +69,7 @@
this.txtUserName.Location = new System.Drawing.Point(145, 32);
this.txtUserName.MaxLength = 100;
this.txtUserName.Name = "txtUserName";
this.txtUserName.Size = new System.Drawing.Size(100, 21);
this.txtUserName.Size = new System.Drawing.Size(100, 26);
this.txtUserName.TabIndex = 4;
//
// btnCancel
......@@ -77,7 +77,7 @@
this.btnCancel.Anchor = System.Windows.Forms.AnchorStyles.None;
this.btnCancel.Location = new System.Drawing.Point(170, 148);
this.btnCancel.Name = "btnCancel";
this.btnCancel.Size = new System.Drawing.Size(75, 23);
this.btnCancel.Size = new System.Drawing.Size(84, 33);
this.btnCancel.TabIndex = 3;
this.btnCancel.Text = "取消(&C)";
this.btnCancel.UseVisualStyleBackColor = true;
......@@ -88,7 +88,7 @@
this.btnLogin.Anchor = System.Windows.Forms.AnchorStyles.None;
this.btnLogin.Location = new System.Drawing.Point(72, 148);
this.btnLogin.Name = "btnLogin";
this.btnLogin.Size = new System.Drawing.Size(75, 23);
this.btnLogin.Size = new System.Drawing.Size(84, 33);
this.btnLogin.TabIndex = 2;
this.btnLogin.Text = "登录(&L)";
this.btnLogin.UseVisualStyleBackColor = true;
......@@ -100,7 +100,7 @@
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(84, 78);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(41, 12);
this.label2.Size = new System.Drawing.Size(51, 20);
this.label2.TabIndex = 1;
this.label2.Text = "密码:";
//
......@@ -110,13 +110,13 @@
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(72, 41);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(53, 12);
this.label1.Size = new System.Drawing.Size(65, 20);
this.label1.TabIndex = 0;
this.label1.Text = "用户名:";
//
// FrmLogin
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(793, 397);
this.Controls.Add(this.panel1);
......
......@@ -224,7 +224,7 @@
this.groupBox5.Controls.Add(this.label46);
this.groupBox5.Controls.Add(this.cmbAxisList);
this.groupBox5.Controls.Add(this.label49);
this.groupBox5.Location = new System.Drawing.Point(621, 85);
this.groupBox5.Location = new System.Drawing.Point(621, 71);
this.groupBox5.Name = "groupBox5";
this.groupBox5.Size = new System.Drawing.Size(653, 203);
this.groupBox5.TabIndex = 216;
......@@ -244,9 +244,10 @@
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(24, 165);
this.label2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label2.Location = new System.Drawing.Point(19, 166);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(65, 12);
this.label2.Size = new System.Drawing.Size(68, 17);
this.label2.TabIndex = 277;
this.label2.Text = "原点方向:";
//
......@@ -257,16 +258,16 @@
this.cmbAxisHomeType.Items.AddRange(new object[] {
"正方向",
"负方向"});
this.cmbAxisHomeType.Location = new System.Drawing.Point(95, 161);
this.cmbAxisHomeType.Location = new System.Drawing.Point(95, 159);
this.cmbAxisHomeType.Name = "cmbAxisHomeType";
this.cmbAxisHomeType.Size = new System.Drawing.Size(88, 20);
this.cmbAxisHomeType.Size = new System.Drawing.Size(88, 28);
this.cmbAxisHomeType.TabIndex = 276;
//
// label7
//
this.label7.AutoSize = true;
this.label7.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label7.Location = new System.Drawing.Point(9, 108);
this.label7.Location = new System.Drawing.Point(7, 108);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(80, 17);
this.label7.TabIndex = 254;
......@@ -276,7 +277,7 @@
//
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(9, 137);
this.label8.Location = new System.Drawing.Point(7, 137);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(80, 17);
this.label8.TabIndex = 255;
......@@ -314,10 +315,10 @@
//
// lblCountPulse
//
this.lblCountPulse.Location = new System.Drawing.Point(95, 134);
this.lblCountPulse.Location = new System.Drawing.Point(95, 128);
this.lblCountPulse.Name = "lblCountPulse";
this.lblCountPulse.ReadOnly = true;
this.lblCountPulse.Size = new System.Drawing.Size(87, 21);
this.lblCountPulse.Size = new System.Drawing.Size(87, 26);
this.lblCountPulse.TabIndex = 38;
//
// txtASpeed
......@@ -333,14 +334,14 @@
this.txtASpeed.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.txtASpeed.Size = new System.Drawing.Size(86, 23);
this.txtASpeed.TabIndex = 251;
this.txtASpeed.Text = "1000";
this.txtASpeed.Text = "30";
//
// lblOutPulse
//
this.lblOutPulse.Location = new System.Drawing.Point(95, 105);
this.lblOutPulse.Location = new System.Drawing.Point(95, 97);
this.lblOutPulse.Name = "lblOutPulse";
this.lblOutPulse.ReadOnly = true;
this.lblOutPulse.Size = new System.Drawing.Size(87, 21);
this.lblOutPulse.Size = new System.Drawing.Size(87, 26);
this.lblOutPulse.TabIndex = 30;
//
// label47
......@@ -453,7 +454,7 @@
this.txtAPosition.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.txtAPosition.Size = new System.Drawing.Size(86, 23);
this.txtAPosition.TabIndex = 244;
this.txtAPosition.Text = "1000";
this.txtAPosition.Text = "30";
//
// label48
//
......@@ -486,7 +487,7 @@
// txtAxisValue
//
this.txtAxisValue.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtAxisValue.Location = new System.Drawing.Point(95, 76);
this.txtAxisValue.Location = new System.Drawing.Point(95, 71);
this.txtAxisValue.MaxLength = 10;
this.txtAxisValue.Name = "txtAxisValue";
this.txtAxisValue.Size = new System.Drawing.Size(87, 21);
......@@ -496,7 +497,7 @@
// txtAxisDeviceName
//
this.txtAxisDeviceName.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtAxisDeviceName.Location = new System.Drawing.Point(95, 47);
this.txtAxisDeviceName.Location = new System.Drawing.Point(95, 45);
this.txtAxisDeviceName.MaxLength = 10;
this.txtAxisDeviceName.Name = "txtAxisDeviceName";
this.txtAxisDeviceName.Size = new System.Drawing.Size(87, 21);
......@@ -508,7 +509,7 @@
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(33, 47);
this.label45.Location = new System.Drawing.Point(31, 50);
this.label45.Name = "label45";
this.label45.Size = new System.Drawing.Size(56, 17);
this.label45.TabIndex = 240;
......@@ -520,7 +521,7 @@
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(21, 79);
this.label46.Location = new System.Drawing.Point(19, 79);
this.label46.Name = "label46";
this.label46.Size = new System.Drawing.Size(68, 17);
this.label46.TabIndex = 239;
......@@ -547,7 +548,7 @@
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(29, 21);
this.label49.Location = new System.Drawing.Point(27, 21);
this.label49.Name = "label49";
this.label49.Size = new System.Drawing.Size(60, 17);
this.label49.TabIndex = 233;
......@@ -589,18 +590,18 @@
this.groupBox3.Controls.Add(this.label25);
this.groupBox3.Controls.Add(this.comboBoxPortName);
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(621, 494);
this.groupBox3.Location = new System.Drawing.Point(621, 477);
this.groupBox3.Name = "groupBox3";
this.groupBox3.Size = new System.Drawing.Size(653, 149);
this.groupBox3.Size = new System.Drawing.Size(653, 166);
this.groupBox3.TabIndex = 255;
this.groupBox3.TabStop = false;
this.groupBox3.Text = "硕科步进电机驱动器";
//
// btnRelMove
//
this.btnRelMove.Location = new System.Drawing.Point(308, 51);
this.btnRelMove.Location = new System.Drawing.Point(308, 50);
this.btnRelMove.Name = "btnRelMove";
this.btnRelMove.Size = new System.Drawing.Size(105, 25);
this.btnRelMove.Size = new System.Drawing.Size(105, 30);
this.btnRelMove.TabIndex = 96;
this.btnRelMove.Text = "相对运动";
this.btnRelMove.UseVisualStyleBackColor = true;
......@@ -626,9 +627,9 @@
//
// btnGetPosition
//
this.btnGetPosition.Location = new System.Drawing.Point(426, 51);
this.btnGetPosition.Location = new System.Drawing.Point(426, 50);
this.btnGetPosition.Name = "btnGetPosition";
this.btnGetPosition.Size = new System.Drawing.Size(105, 25);
this.btnGetPosition.Size = new System.Drawing.Size(105, 30);
this.btnGetPosition.TabIndex = 93;
this.btnGetPosition.Text = "查询位置";
this.btnGetPosition.UseVisualStyleBackColor = true;
......@@ -675,9 +676,9 @@
//
// btnVolMove
//
this.btnVolMove.Location = new System.Drawing.Point(191, 81);
this.btnVolMove.Location = new System.Drawing.Point(191, 80);
this.btnVolMove.Name = "btnVolMove";
this.btnVolMove.Size = new System.Drawing.Size(105, 25);
this.btnVolMove.Size = new System.Drawing.Size(105, 30);
this.btnVolMove.TabIndex = 88;
this.btnVolMove.Text = "匀速运动";
this.btnVolMove.UseVisualStyleBackColor = true;
......@@ -685,9 +686,9 @@
//
// btnClose
//
this.btnClose.Location = new System.Drawing.Point(426, 19);
this.btnClose.Location = new System.Drawing.Point(426, 18);
this.btnClose.Name = "btnClose";
this.btnClose.Size = new System.Drawing.Size(105, 25);
this.btnClose.Size = new System.Drawing.Size(105, 30);
this.btnClose.TabIndex = 87;
this.btnClose.Text = "关闭串口";
this.btnClose.UseVisualStyleBackColor = true;
......@@ -695,9 +696,9 @@
//
// btnOpen
//
this.btnOpen.Location = new System.Drawing.Point(308, 20);
this.btnOpen.Location = new System.Drawing.Point(308, 19);
this.btnOpen.Name = "btnOpen";
this.btnOpen.Size = new System.Drawing.Size(105, 25);
this.btnOpen.Size = new System.Drawing.Size(105, 30);
this.btnOpen.TabIndex = 86;
this.btnOpen.Text = "打开串口";
this.btnOpen.UseVisualStyleBackColor = true;
......@@ -705,9 +706,9 @@
//
// btnStatusSearch
//
this.btnStatusSearch.Location = new System.Drawing.Point(309, 81);
this.btnStatusSearch.Location = new System.Drawing.Point(309, 80);
this.btnStatusSearch.Name = "btnStatusSearch";
this.btnStatusSearch.Size = new System.Drawing.Size(105, 25);
this.btnStatusSearch.Size = new System.Drawing.Size(105, 30);
this.btnStatusSearch.TabIndex = 85;
this.btnStatusSearch.Text = "查询运动状态";
this.btnStatusSearch.UseVisualStyleBackColor = true;
......@@ -733,9 +734,9 @@
//
// btnHomeMove
//
this.btnHomeMove.Location = new System.Drawing.Point(192, 113);
this.btnHomeMove.Location = new System.Drawing.Point(192, 112);
this.btnHomeMove.Name = "btnHomeMove";
this.btnHomeMove.Size = new System.Drawing.Size(105, 25);
this.btnHomeMove.Size = new System.Drawing.Size(105, 30);
this.btnHomeMove.TabIndex = 12;
this.btnHomeMove.Text = "原点返回";
this.btnHomeMove.UseVisualStyleBackColor = true;
......@@ -743,9 +744,9 @@
//
// btnClearPosition
//
this.btnClearPosition.Location = new System.Drawing.Point(426, 83);
this.btnClearPosition.Location = new System.Drawing.Point(426, 82);
this.btnClearPosition.Name = "btnClearPosition";
this.btnClearPosition.Size = new System.Drawing.Size(105, 25);
this.btnClearPosition.Size = new System.Drawing.Size(105, 30);
this.btnClearPosition.TabIndex = 11;
this.btnClearPosition.Text = "清理位置";
this.btnClearPosition.UseVisualStyleBackColor = true;
......@@ -753,9 +754,9 @@
//
// btnStop
//
this.btnStop.Location = new System.Drawing.Point(308, 113);
this.btnStop.Location = new System.Drawing.Point(308, 112);
this.btnStop.Name = "btnStop";
this.btnStop.Size = new System.Drawing.Size(105, 24);
this.btnStop.Size = new System.Drawing.Size(105, 29);
this.btnStop.TabIndex = 10;
this.btnStop.Text = "紧急停止";
this.btnStop.UseVisualStyleBackColor = true;
......@@ -763,9 +764,9 @@
//
// btnLineAbsMove
//
this.btnLineAbsMove.Location = new System.Drawing.Point(192, 51);
this.btnLineAbsMove.Location = new System.Drawing.Point(192, 50);
this.btnLineAbsMove.Name = "btnLineAbsMove";
this.btnLineAbsMove.Size = new System.Drawing.Size(105, 25);
this.btnLineAbsMove.Size = new System.Drawing.Size(105, 30);
this.btnLineAbsMove.TabIndex = 9;
this.btnLineAbsMove.Text = "绝对运动";
this.btnLineAbsMove.UseVisualStyleBackColor = true;
......@@ -813,7 +814,7 @@
this.groupBox1.Controls.Add(this.label43);
this.groupBox1.Controls.Add(this.label42);
this.groupBox1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.groupBox1.Location = new System.Drawing.Point(621, 297);
this.groupBox1.Location = new System.Drawing.Point(621, 279);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(414, 193);
this.groupBox1.TabIndex = 217;
......@@ -1094,9 +1095,10 @@
// label9
//
this.label9.AutoSize = true;
this.label9.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label9.Location = new System.Drawing.Point(28, 70);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(89, 12);
this.label9.Size = new System.Drawing.Size(92, 17);
this.label9.TabIndex = 220;
this.label9.Text = "入库间隔仓位:";
//
......@@ -1104,7 +1106,7 @@
//
this.txtJiange.Location = new System.Drawing.Point(123, 65);
this.txtJiange.Name = "txtJiange";
this.txtJiange.Size = new System.Drawing.Size(37, 21);
this.txtJiange.Size = new System.Drawing.Size(37, 26);
this.txtJiange.TabIndex = 221;
this.txtJiange.Text = "3";
//
......@@ -1866,14 +1868,14 @@
// 轴卡点动ToolStripMenuItem
//
this.轴卡点动ToolStripMenuItem.Name = "轴卡点动ToolStripMenuItem";
this.轴卡点动ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.轴卡点动ToolStripMenuItem.Size = new System.Drawing.Size(124, 22);
this.轴卡点动ToolStripMenuItem.Text = "轴卡点动";
this.轴卡点动ToolStripMenuItem.Click += new System.EventHandler(this.轴卡点动ToolStripMenuItem_Click);
//
// 扫码测试ToolStripMenuItem
//
this.扫码测试ToolStripMenuItem.Name = "扫码测试ToolStripMenuItem";
this.扫码测试ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.扫码测试ToolStripMenuItem.Size = new System.Drawing.Size(124, 22);
this.扫码测试ToolStripMenuItem.Text = "扫码测试";
this.扫码测试ToolStripMenuItem.Click += new System.EventHandler(this.扫码测试ToolStripMenuItem_Click);
//
......@@ -1889,14 +1891,14 @@
// 开启DEBUGToolStripMenuItem
//
this.开启DEBUGToolStripMenuItem.Name = "开启DEBUGToolStripMenuItem";
this.开启DEBUGToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.开启DEBUGToolStripMenuItem.Size = new System.Drawing.Size(142, 22);
this.开启DEBUGToolStripMenuItem.Text = "开启DEBUG";
this.开启DEBUGToolStripMenuItem.Click += new System.EventHandler(this.开启DEBUGToolStripMenuItem_Click);
//
// 清理日志ToolStripMenuItem
//
this.清理日志ToolStripMenuItem.Name = "清理日志ToolStripMenuItem";
this.清理日志ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.清理日志ToolStripMenuItem.Size = new System.Drawing.Size(142, 22);
this.清理日志ToolStripMenuItem.Text = "清理日志";
this.清理日志ToolStripMenuItem.Click += new System.EventHandler(this.清理日志ToolStripMenuItem_Click);
//
......@@ -1905,7 +1907,7 @@
this.lblThisSta.AutoSize = true;
this.lblThisSta.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lblThisSta.ForeColor = System.Drawing.Color.Red;
this.lblThisSta.Location = new System.Drawing.Point(621, 47);
this.lblThisSta.Location = new System.Drawing.Point(621, 41);
this.lblThisSta.Name = "lblThisSta";
this.lblThisSta.Size = new System.Drawing.Size(65, 19);
this.lblThisSta.TabIndex = 216;
......@@ -1920,7 +1922,7 @@
this.groupBox4.Controls.Add(this.txtPosition3);
this.groupBox4.Controls.Add(this.txtPosition2);
this.groupBox4.Controls.Add(this.txtPosition1);
this.groupBox4.Location = new System.Drawing.Point(1042, 297);
this.groupBox4.Location = new System.Drawing.Point(1042, 279);
this.groupBox4.Name = "groupBox4";
this.groupBox4.Size = new System.Drawing.Size(232, 193);
this.groupBox4.TabIndex = 267;
......@@ -1942,7 +1944,7 @@
this.chb3.AutoSize = true;
this.chb3.Location = new System.Drawing.Point(21, 104);
this.chb3.Name = "chb3";
this.chb3.Size = new System.Drawing.Size(72, 16);
this.chb3.Size = new System.Drawing.Size(84, 24);
this.chb3.TabIndex = 271;
this.chb3.Text = "轴三位置";
this.chb3.UseVisualStyleBackColor = true;
......@@ -1952,7 +1954,7 @@
this.chb2.AutoSize = true;
this.chb2.Location = new System.Drawing.Point(21, 68);
this.chb2.Name = "chb2";
this.chb2.Size = new System.Drawing.Size(72, 16);
this.chb2.Size = new System.Drawing.Size(84, 24);
this.chb2.TabIndex = 270;
this.chb2.Text = "轴二位置";
this.chb2.UseVisualStyleBackColor = true;
......@@ -1962,7 +1964,7 @@
this.chb1.AutoSize = true;
this.chb1.Location = new System.Drawing.Point(21, 32);
this.chb1.Name = "chb1";
this.chb1.Size = new System.Drawing.Size(72, 16);
this.chb1.Size = new System.Drawing.Size(84, 24);
this.chb1.TabIndex = 269;
this.chb1.Text = "轴一位置";
this.chb1.UseVisualStyleBackColor = true;
......@@ -1971,21 +1973,21 @@
//
this.txtPosition3.Location = new System.Drawing.Point(109, 99);
this.txtPosition3.Name = "txtPosition3";
this.txtPosition3.Size = new System.Drawing.Size(87, 21);
this.txtPosition3.Size = new System.Drawing.Size(87, 26);
this.txtPosition3.TabIndex = 268;
//
// txtPosition2
//
this.txtPosition2.Location = new System.Drawing.Point(109, 64);
this.txtPosition2.Name = "txtPosition2";
this.txtPosition2.Size = new System.Drawing.Size(87, 21);
this.txtPosition2.Size = new System.Drawing.Size(87, 26);
this.txtPosition2.TabIndex = 266;
//
// txtPosition1
//
this.txtPosition1.Location = new System.Drawing.Point(109, 27);
this.txtPosition1.Name = "txtPosition1";
this.txtPosition1.Size = new System.Drawing.Size(87, 21);
this.txtPosition1.Size = new System.Drawing.Size(87, 26);
this.txtPosition1.TabIndex = 265;
//
// FrmStoreBox
......
......@@ -50,12 +50,12 @@ namespace OnlineStore.ACSingleStore
cmbAxisList.ValueMember = "Explain";
cmbAxisList.SelectedIndex = 0;
KTKSAStorePostion ktkPosition = null;
ACStorePosition ktkPosition = null;
if (store.PositionNumList.Count > 0)
{
cmbPosition.DataSource = store.PositionNumList;
cmbPosition.SelectedIndex = 0;
ktkPosition = CSVPositionReader<KTKSAStorePostion>.GetPositon(cmbPosition.Text);
ktkPosition = CSVPositionReader<ACStorePosition>.GetPositon(cmbPosition.Text);
//store.PositionNumList = positionNumList;
}
......@@ -249,10 +249,10 @@ namespace OnlineStore.ACSingleStore
}
lblWarnMsg.Text = store.WarnMsg;
if (store.KNDIOValue(Store_IO_Type.Left_Door_LimitSingle).Equals(IO_VALUE.LOW))
if (store.KNDIOValue(IO_Type.Left_Door_LimitSingle).Equals(IO_VALUE.LOW))
{
lblWarnMsg.Text = lblWarnMsg.Text + " 左侧门未关";
} if (store.KNDIOValue(Store_IO_Type.Right_Door_LimitSingle).Equals(IO_VALUE.LOW))
} if (store.KNDIOValue(IO_Type.Right_Door_LimitSingle).Equals(IO_VALUE.LOW))
{
lblWarnMsg.Text = lblWarnMsg.Text + " 右侧门未关";
}
......@@ -403,7 +403,7 @@ namespace OnlineStore.ACSingleStore
if (cmbPosition.SelectedIndex >= 0)
{
string selectPositionNum = cmbPosition.Text;
KTKSAStorePostion ktkPosition = CSVPositionReader<KTKSAStorePostion>.GetPositon(selectPositionNum);
ACStorePosition ktkPosition = CSVPositionReader<ACStorePosition>.GetPositon(selectPositionNum);
if (ktkPosition != null)
{
......@@ -514,7 +514,7 @@ namespace OnlineStore.ACSingleStore
{
//料仓格子位置保存
string selectPositionNum = cmbPosition.Text;
KTKSAStorePostion ktkPosition = CSVPositionReader<KTKSAStorePostion>.GetPositon(selectPositionNum);
ACStorePosition ktkPosition = CSVPositionReader<ACStorePosition>.GetPositon(selectPositionNum);
if (ktkPosition != null)
{
ktkPosition.MiddleAxis_Position_P2 = FormUtil.GetIntValue(txtMiddleP2);
......@@ -542,7 +542,7 @@ namespace OnlineStore.ACSingleStore
{
positionConfigFile = appPath + ConfigAppSettings.GetValue(Setting_Init.Store_Position_Config, "_" + store.StoreID.ToString());
}
bool result = CSVPositionReader<KTKSAStorePostion>.SavePostion(positionConfigFile, ktkPosition);
bool result = CSVPositionReader<ACStorePosition>.SavePostion(positionConfigFile, ktkPosition);
if (!result)
{
MessageBox.Show("保存位置失败!");
......@@ -891,7 +891,7 @@ namespace OnlineStore.ACSingleStore
private void 料仓运转ONToolStripMenuItem_Click(object sender, EventArgs e)
{
//store.RunAxis();
store.KNDIOMove(Store_IO_Type.Run_Sign, IO_VALUE.HIGH);
store.KNDIOMove(IO_Type.Run_Sign, IO_VALUE.HIGH);
Thread.Sleep(1000);
//打开三个轴
foreach (ConfigMoveAxis SlvAddr in store.moveAxisList)
......@@ -925,8 +925,8 @@ namespace OnlineStore.ACSingleStore
private void 打开舱门ToolStripMenuItem_Click(object sender, EventArgs e)
{
store.KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.HIGH);
store.KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.LOW);
store.KNDIOMove(IO_Type.Door_Up, IO_VALUE.HIGH);
store.KNDIOMove(IO_Type.Door_Down, IO_VALUE.LOW);
}
private void 料仓运转OFFToolStripMenuItem_Click(object sender, EventArgs e)
......@@ -936,13 +936,13 @@ namespace OnlineStore.ACSingleStore
ACServerManager.ServoOff(SlvAddr.DeviceName, SlvAddr.GetAxisValue());
}
store.KNDIOMove(Store_IO_Type.Run_Sign, IO_VALUE.LOW);
store.KNDIOMove(IO_Type.Run_Sign, IO_VALUE.LOW);
}
private void 关闭仓门ToolStripMenuItem_Click(object sender, EventArgs e)
{
store.KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.HIGH);
store.KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.LOW);
store.KNDIOMove(IO_Type.Door_Down, IO_VALUE.HIGH);
store.KNDIOMove(IO_Type.Door_Up, IO_VALUE.LOW);
}
private void 回待机点ToolStripMenuItem_Click(object sender, EventArgs e)
......
......@@ -124,7 +124,7 @@
<value>107, 16</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>95</value>
<value>25</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
......
......@@ -69,6 +69,7 @@
<Compile Include="PanasonicServo\ACCMDManager.cs" />
<Compile Include="PanasonicServo\ACServerManager.cs" />
<Compile Include="PanasonicServo\ACServerManager_Partial.cs" />
<Compile Include="store\LineMoveP.cs" />
<Compile Include="store\LineAlarm.cs">
<SubType>Code</SubType>
</Compile>
......@@ -79,7 +80,6 @@
<Compile Include="ShuoKe\ShuoKeControls.cs" />
<Compile Include="store\model\AxisAlarmInfo.cs" />
<Compile Include="store\model\FixtureCodeInfo.cs" />
<Compile Include="store\KTKLinePosition.cs" />
<Compile Include="store\KTK_DeviceBase.cs" />
<Compile Include="store\InOrOutStoreParam.cs">
<SubType>Code</SubType>
......@@ -88,7 +88,6 @@
<Compile Include="store\model\StoreMoveInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="store\StoreBase.cs" />
<Compile Include="store\KTK_Store.cs" />
<Compile Include="store\StoreManager.cs">
<SubType>Code</SubType>
......@@ -126,20 +125,6 @@
<None Include="StoreConfig\AC\StoreConfig.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="StoreConfig\SA\linePositions.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="StoreConfig\SA\StoreConfig.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<None Include="StoreConfig\SA-boshi\linePositions.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="StoreConfig\SA-boshi\StoreConfig.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
......
......@@ -251,16 +251,16 @@ namespace OnlineStore.DeviceLibrary
date = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_WriteRegisters, "4638", string.Format("{0:X2}", Math.Abs(speed / 2)), 1);
SendData(portName, date);
Thread.Sleep(100);
if (speed > 0)
{
byte[] data = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_WriteRegisters, ACCMDManager.BlockNo, ACCMDManager.Block_HomeMove0, 2);
SendData(portName, data);
}
else
{
//if (speed > 0)
//{
// byte[] data = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_WriteRegisters, ACCMDManager.BlockNo, ACCMDManager.Block_HomeMove0, 2);
// SendData(portName, data);
//}
//else
//{
byte[] data = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_WriteRegisters, ACCMDManager.BlockNo, ACCMDManager.Block_HomeMove1, 2);
SendData(portName, data);
}
//}
Thread.Sleep(100);
OpenSTB(portName, slvAddr);
......
......@@ -28,48 +28,46 @@ AXIS,(轴一)旋转轴,Middle_Axis,1,COM1,0,,,,
AXIS,(轴二)升降轴轴,UpDown_Axis,1,COM2,0,,,,
AXIS,(轴三)进出轴,InOut_Axis,1,COM3,0,,,,
PRO,温湿度传感器地址,Temperate_ServerAddress,192.168.0.14,,,,,,
PRO,升降轴 进料口取料点 P1,UpDownAxis_DoorOPosition_P1,-886000,,,,,,
PRO,升降轴 进料口出料前点 P2,UpDownAxis_DoorIPosition_P2,-900000,,,,,,
PRO,升降轴 进料口取料缓冲点 P7,UpDownAxis_DoorOBPosition_P7,-900000,,,,,,
PRO,升降轴 进料口出料缓冲点 P8,UpDownAxis_DoorIBPosition_P8,-886000,,,,,,
,进出轴进料口取料点 P2,InOutAxis_DoorPosition_P2,9000,,,,,,
PRO,旋转轴(轴1)P1 待机原位点,MiddleAxis_P1_Position,219200,,,,,,
PRO,升降轴 进料口取料点 P1,UpDownAxis_DoorOPosition_P1,-886,,,,,,
PRO,升降轴 进料口出料前点 P2,UpDownAxis_DoorIPosition_P2,-900,,,,,,
PRO,升降轴 进料口取料缓冲点 P7,UpDownAxis_DoorOBPosition_P7,-900,,,,,,
PRO,升降轴 进料口出料缓冲点 P8,UpDownAxis_DoorIBPosition_P8,-886,,,,,,
,进出轴进料口取料点 P2,InOutAxis_DoorPosition_P2,9,,,,,,
PRO,旋转轴(轴1)P1 待机原位点,MiddleAxis_P1_Position,219,,,,,,
PRO,进出轴(轴3)P1待机原位点,InOutAxis_P1_Position,0,,,,,,
PRO,押金轴(轴4)P1待机原位点,CompressAxis_P1_Position,360000,,,,,,
PRO,押金轴(轴4)P1待机原位点,CompressAxis_P1_Position,360,,,,,,
,,,,,,,,,
PRO,是否使用压紧轴(1=使用),IsHasCompress_Axis,1,,,,, ,
PRO,设备是否处于调试状态(1=调试,0=正常),IsInDebug,0,,,,,,
PRO,气压检测IO关闭需要持续的时间,AirCheckSeconds,3,,,,,,
PRO,扫码枪IP,Scanner_Ip,192.168.0.24,,,,,,
PRO,扫码枪端口号,Scanner_Port,51236,,,,,,
PRO,温湿度传感器地址,TemperateServer_Port,9001,,,,,,
PRO,预警温度,WarnTemperate,80,,,,,,
PRO,预警湿度,WarnHumidity,80,,,,,,
PRO,(轴一)旋转轴原点目标速度,MiddleAxis_TargetSpeed,9000,,,,,,
PRO,(轴一)旋转轴原点开始速度,MiddleAxis_StartSpeed,3000,,,,,,
PRO,(轴一)旋转轴加速时间,MiddleAxis_AccelTime,500,,,,,,
PRO,(轴一)旋转轴减速时间,MiddleAxis_DecelTime,500,,,,,,
PRO,(轴二)升降轴轴原点目标速度,UpdownAxis_TargetSpeed,12000,,,,,,
PRO,(轴二)升降轴轴原点开始速度,UpdownAxis_StartSpeed,4500,,,,,,
PRO,(轴二)升降轴轴加速时间,UpdownAxis_AccelTime,200,,,,,,
PRO,(轴二)升降轴轴减速时间,UpdownAxis_DecelTime,200,,,,,,
PRO,(轴三)进出轴原点目标速度,InoutAxis_TargetSpeed,3600,,,,,,
PRO,(轴三)进出轴原点开始速度,InoutAxis_StartSpeed,1200,,,,,,
PRO,(轴三)进出轴加速时间,InoutAxis_AccelTime,200,,,,,,
PRO,(轴三)进出轴减速时间,InoutAxis_DecelTime,200,,,,,,
PRO,升降轴(轴2)P1速度,UpDownAxis_P1_Speed,130000,,,,,,
PRO,升降轴(轴2)P2速度,UpDownAxis_P2_Speed,130000,,,,,,
PRO,升降轴(轴2)P3速度,UpDownAxis_P3_Speed,130000,,,,,,
PRO,升降轴(轴2)P4速度,UpDownAxis_P4_Speed,20000,,,,,,
PRO,升降轴(轴2)P5速度,UpDownAxis_P5_Speed,130000,,,,,,
PRO,升降轴(轴2)P6速度,UpDownAxis_P6_Speed,20000,,,,,,
PRO,升降轴(轴2)P7速度,UpDownAxis_P7_Speed,20000,,,,,,
PRO,升降轴(轴2)P8速度,UpDownAxis_P8_Speed,20000,,,,,,
PRO,旋转轴(轴1)P1速度,MiddleAxis_P1_Speed,100000,,,,,,
PRO,旋转轴(轴1)P2速度,MiddleAxis_P2_Speed,100000,,,,,,
PRO,进出轴(轴3)P1速度,InOutAxis_P1_Speed,20000,,,,,,
PRO,进出轴(轴3)P2速度,InOutAxis_P2_Speed,20000,,,,,,
PRO,进出轴(轴3)P3速度,InOutAxis_P3_Speed,20000,,,,,,
PRO,(轴一)旋转轴原点目标速度,MiddleAxis_TargetSpeed,30,,,,,,
PRO,(轴一)旋转轴原点开始速度,MiddleAxis_StartSpeed,30,,,,,,
PRO,(轴一)旋转轴加速时间,MiddleAxis_AccelTime,10,,,,,,
PRO,(轴一)旋转轴减速时间,MiddleAxis_DecelTime,10,,,,,,
PRO,(轴二)升降轴轴原点目标速度,UpdownAxis_TargetSpeed,50,,,,,,
PRO,(轴二)升降轴轴原点开始速度,UpdownAxis_StartSpeed,50,,,,,,
PRO,(轴二)升降轴轴加速时间,UpdownAxis_AccelTime,10,,,,,,
PRO,(轴二)升降轴轴减速时间,UpdownAxis_DecelTime,10,,,,,,
PRO,(轴三)进出轴原点目标速度,InoutAxis_TargetSpeed,50,,,,,,
PRO,(轴三)进出轴原点开始速度,InoutAxis_StartSpeed,50,,,,,,
PRO,(轴三)进出轴加速时间,InoutAxis_AccelTime,10,,,,,,
PRO,(轴三)进出轴减速时间,InoutAxis_DecelTime,10,,,,,,
PRO,升降轴(轴2)P1速度,UpDownAxis_P1_Speed,130,,,,,,
PRO,升降轴(轴2)P2速度,UpDownAxis_P2_Speed,130,,,,,,
PRO,升降轴(轴2)P3速度,UpDownAxis_P3_Speed,130,,,,,,
PRO,升降轴(轴2)P4速度,UpDownAxis_P4_Speed,20,,,,,,
PRO,升降轴(轴2)P5速度,UpDownAxis_P5_Speed,130,,,,,,
PRO,升降轴(轴2)P6速度,UpDownAxis_P6_Speed,20,,,,,,
PRO,升降轴(轴2)P7速度,UpDownAxis_P7_Speed,20,,,,,,
PRO,升降轴(轴2)P8速度,UpDownAxis_P8_Speed,20,,,,,,
PRO,旋转轴(轴1)P1速度,MiddleAxis_P1_Speed,100,,,,,,
PRO,旋转轴(轴1)P2速度,MiddleAxis_P2_Speed,100,,,,,,
PRO,进出轴(轴3)P1速度,InOutAxis_P1_Speed,20,,,,,,
PRO,进出轴(轴3)P2速度,InOutAxis_P2_Speed,20,,,,,,
PRO,进出轴(轴3)P3速度,InOutAxis_P3_Speed,20,,,,,,
PRO,(轴一)旋转轴停止时可误差的脉冲数的最小值,MiddleAxis_ErrorCountMin,10,,,,,,
PRO,(轴二)升降轴轴停止时可误差的脉冲数的最小值,UpdownAxis_ErrorCountMin,10,,,,,,
PRO,(轴三)进出轴停止时可误差的脉冲数的最小值,InoutAxis_ErrorCountMin,10,,,,,,
......
类型,说明,名称,属性值,设备名称,默认值,描述,电器定义,代码定义,SlaveID
DI,急停,SuddenStop_BTN,200,192.168.0.10,0,急停,X01,DI-01,0
DI,复位,Reset_BTN,201,192.168.0.10,0,复位,X02,DI-02,0
DI,自动,AutoRun_Single,202,192.168.0.10,0,自动,X03,DI-03,0
DI,气压检测,Airpressure_Check,203,192.168.0.10,0,气压检测,X04,DI-04,0
DI,料盘检测1,TrayCheck_1,204,192.168.0.10,0,料盘检测1,X05,DI-05,0
,料盘检测2,TrayCheck_2,205,192.168.0.10,0,料盘检测2,X06,DI-06,0
DI,进料口门上升端,Door_Up,206,192.168.0.10,0,进料口门上升端,X07,DI-07,0
DI,进料口门下降端,Door_Down,207,192.168.0.10,0,进料口门下降端,X08,DI-08,0
DI,定位气缸上升端,LocationCylinder_Up,208,192.168.0.10,0,定位气缸上升端,X09,DI-09,0
DI,定位气缸下降端,LocationCylinder_Down,209,192.168.0.10,0,定位气缸下降端,X10,DI-10,0
DI,左侧门限位,Left_Door_LimitSingle,210,192.168.0.10,0,左侧门限位,X11,DI-11,0
DI,右侧门限位,Right_Door_LimitSingle,211,192.168.0.10,0,右侧门限位,X12,DI-12,0
DI,料盘检测3,TrayCheck_3,212,192.168.0.10,0,料盘检测3,X13,DI-13,0
,料盘检测4,TrayCheck_4,213,192.168.0.10,0,料盘检测4,X14,DI-14,0
DO,自动指示灯,AutoRun_HddLed,100,192.168.0.10,0,自动指示灯,Y01,DO-01,0
DO,故障指示灯,Alarm_HddLed,101,192.168.0.10,0,故障指示灯,Y02,DO-02,0
DO,待机指示灯,RunSign_HddLed,102,192.168.0.10,0,待机指示灯,Y03,DO-03,0
DO,吹气SOL ON,StartOrStopBlow,103,192.168.0.10,0,吹气SOL ON,Y04,DO-04,0
DO,料仓运转ON,Run_Sign,104,192.168.0.10,0,料仓运转ON,Y05,DO-05,0
DO,上下轴刹车,Axis_Brake,105,192.168.0.10,0,上下轴刹车,Y06,DO-06,0
DO,进料口门上升SOL,Door_Up,106,192.168.0.10,0,进料口门上升SOL,Y07,DO-07,0
DO,进料口门下降SOL,Door_Down,107,192.168.0.10,0,进料口门下降SOL,Y08,DO-08,0
DO,定位上升SOL,LocationCylinder_Up,108,192.168.0.10,0,定位上升SOL,Y09,DO-09,0
DO,定位下降SOL,LocationCylinder_Down,109,192.168.0.10,0,定位下降SOL,Y10,DO-10,0
DO,摄像机光源,CameraLight_Power,110,192.168.0.10,0,摄像机光源,Y11,DO-11,0
AXIS,(轴一)旋转轴,Middle_Axis,1,SMC000,0,,,,
AXIS,(轴二)升降轴轴,UpDown_Axis,2,SMC000,0,,,,
AXIS,(轴三)进出轴,InOut_Axis,3,SMC000,0,,,,
PRO,温湿度传感器地址,Temperate_ServerAddress,192.168.0.14#192.168.0.15#192.168.0.16,,,,,,
PRO,升降轴 进料口取料点 P1,UpDownAxis_DoorOPosition_P1,-484800,,,,,,
PRO,升降轴 进料口出料前点 P2,UpDownAxis_DoorIPosition_P2,-498000,,,,,,
PRO,升降轴 进料口取料缓冲点 P7,UpDownAxis_DoorOBPosition_P7,-498000,,,,,,
PRO,升降轴 进料口出料缓冲点 P8,UpDownAxis_DoorIBPosition_P8,-484800,,,,,,
,进出轴进料口取料点 P2,InOutAxis_DoorPosition_P2,9000,,,,,,
PRO,旋转轴(轴1)P1 待机原位点,MiddleAxis_P1_Position,229190,,,,,,
PRO,进出轴(轴3)P1待机原位点,InOutAxis_P1_Position,0,,,,,,
PRO,押金轴(轴4)P1待机原位点,CompressAxis_P1_Position,-30000,,,,,,
,,,,,,,,,
PRO,是否使用压紧轴(1=使用),IsHasCompress_Axis,1,,,,, ,
PRO,设备是否处于调试状态(1=调试,0=正常),IsInDebug,0,,,,,,
PRO,气压检测IO关闭需要持续的时间,AirCheckSeconds,3,,,,,,
PRO,扫码枪IP,Scanner_Ip,192.168.0.24,,,,,,
PRO,扫码枪端口号,Scanner_Port,51236,,,,,,
PRO,温湿度传感器服务器端口号,TemperateServer_Port,9001,,,,,,
PRO,预警温度,WarnTemperate,80,,,,,,
PRO,预警湿度,WarnHumidity,80,,,,,,
PRO,(轴一)旋转轴原点目标速度,MiddleAxis_TargetSpeed,9000,,,,,,
PRO,(轴一)旋转轴原点开始速度,MiddleAxis_StartSpeed,3000,,,,,,
PRO,(轴一)旋转轴加速时间,MiddleAxis_AccelTime,500,,,,,,
PRO,(轴一)旋转轴减速时间,MiddleAxis_DecelTime,500,,,,,,
PRO,(轴二)升降轴轴原点目标速度,UpdownAxis_TargetSpeed,12000,,,,,,
PRO,(轴二)升降轴轴原点开始速度,UpdownAxis_StartSpeed,4500,,,,,,
PRO,(轴二)升降轴轴加速时间,UpdownAxis_AccelTime,200,,,,,,
PRO,(轴二)升降轴轴减速时间,UpdownAxis_DecelTime,200,,,,,,
PRO,(轴三)进出轴原点目标速度,InoutAxis_TargetSpeed,1800,,,,,,
PRO,(轴三)进出轴原点开始速度,InoutAxis_StartSpeed,600,,,,,,
PRO,(轴三)进出轴加速时间,InoutAxis_AccelTime,10,,,,,,
PRO,(轴三)进出轴减速时间,InoutAxis_DecelTime,10,,,,,,
PRO,升降轴(轴2)P1速度,UpDownAxis_P1_Speed,80000,,,,,,
PRO,升降轴(轴2)P2速度,UpDownAxis_P2_Speed,80000,,,,,,
PRO,升降轴(轴2)P3速度,UpDownAxis_P3_Speed,80000,,,,,,
PRO,升降轴(轴2)P4速度,UpDownAxis_P4_Speed,8000,,,,,,
PRO,升降轴(轴2)P5速度,UpDownAxis_P5_Speed,80000,,,,,,
PRO,升降轴(轴2)P6速度,UpDownAxis_P6_Speed,8000,,,,,,
PRO,升降轴(轴2)P7速度,UpDownAxis_P7_Speed,8000,,,,,,
PRO,升降轴(轴2)P8速度,UpDownAxis_P8_Speed,8000,,,,,,
PRO,旋转轴(轴1)P1速度,MiddleAxis_P1_Speed,80000,,,,,,
PRO,旋转轴(轴1)P2速度,MiddleAxis_P2_Speed,80000,,,,,,
PRO,进出轴(轴3)P1速度,InOutAxis_P1_Speed,20000,,,,,,
PRO,进出轴(轴3)P2速度,InOutAxis_P2_Speed,20000,,,,,,
PRO,进出轴(轴3)P3速度,InOutAxis_P3_Speed,20000,,,,,,
PRO,(轴一)旋转轴停止时可误差的脉冲数的最小值,MiddleAxis_ErrorCountMin,10,,,,,,
PRO,(轴二)升降轴轴停止时可误差的脉冲数的最小值,UpdownAxis_ErrorCountMin,10,,,,,,
PRO,(轴三)进出轴停止时可误差的脉冲数的最小值,InoutAxis_ErrorCountMin,10,,,,,,
PRO,(轴一)旋转轴停止时可误差的脉冲数的最大值,MiddleAxis_ErrorCountMax,5000,,,,,,
PRO,(轴二)升降轴轴停止时可误差的脉冲数的最大值,UpdownAxis_ErrorCountMax,5000,,,,,,
PRO,(轴三)进出轴停止时可误差的脉冲数的最大值,InoutAxis_ErrorCountMax,5000,,,,,,
PRO,出入库多少次,会自动重置旋转轴,Box_ResetMCount,1000,,,,,,
PRO,出入库多少次,会自动重置所有轴操作,Box_ResetACount,100,,,,,,
PRO,(轴一)旋转轴速度倍率,MiddleAxis_ResolveSpeed,10,,,,,,
PRO,(轴二)升降轴速度倍率,UpdownAxis_ResolveSpeed,20,,,,,,
PRO,(轴三)进出轴速度倍率,InoutAxis_ResolveSpeed,10,,,,,,
PRO,IO信号超时时间(毫秒),IOSingle_TimerOut,10000,,,,,,
PRO,是否使用料盘检测信号,IsUse_Tray_Check,0,,,,,,
,,,,,,,,,
PRO,硕科步进电机(压紧轴)控制端口号,CompressAxis_PortName,COM4,,,,,,
PRO,硕科步进电机(压紧轴)控制波特率,CompressAxis_PortBaudrate,9600,,,,,,
PRO,硕科步进电机(压紧轴)控制奇偶校验,CompressAxis_PortParity,0,,,,,,
PRO,硕科步进电机(压紧轴)控制停止位,CompressAxis_StopBits,1,,,,,,
PRO,硕科步进电机(压紧轴)控制初速度,CompressAxis_StartSpeed,15000,,,,,,
PRO,硕科步进电机(压紧轴)控制最大速度,CompressAxis_MaxSpeed,50000,,,,,,
PRO,硕科步进电机(压紧轴)控制末速度,CompressAxis_EndSpeed,30000,,,,,,
PRO,硕科步进电机(压紧轴)控制加速度,CompressAxis_AddSpeed,15000,,,,,,
PRO,硕科步进电机(压紧轴)控制减速度,CompressAxis_DelSpeed,15000,,,,,,
PRO,硕科步进电机(压紧轴)控制归零速度(原点返回速度),CompressAxis_HomeSpeed,15000,,,,,,
PRO,硕科步进电机轴地址(压紧轴),CompressAxis_Slv,1,,,,,,
,,,,,,,,,
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,扫码枪类型:0=默认扫码枪;1=摄像机识别,Scanner_Type,1,,,,,,
PRO,需要吹气的湿度(湿度标准),Max_Humidity,10,,,,,,
PRO,每次吹气的时间(分钟),BlowAir_Time,10,,,,,,
PRO,两次吹气间隔(分钟),BlowAir_Interval,10,,,,,,
位置,优先级,高度,宽度,料仓ID,中轴位置P2,升降轴库位出料前点P5,升降轴库位出料缓冲点P6,升降轴库位入料前点P3,升降轴库位入料缓冲点P4,进出轴库位点取料点P3,压紧轴压紧点P2,压紧轴压紧前点P3,进出轴进料口取料点P2,升降轴进料口出料前点P2,升降轴进料口取料缓冲点P7
1#SA1_1_2_2:1,149,65,325,1,228600,-828700,-840700,-840700,-828700,94000,-92000,-20000,97000,-494500,-494500
1#SA1_1_2_2:2,149,65,325,1,228600,-828700,-840700,-840700,-828700,94000,-92000,-20000,97000,-494500,-494500
1#SA1_1_2_2:3,149,65,325,1,228600,-828700,-840700,-840700,-828700,94000,-92000,-20000,97000,-494500,-494500
1#SA1_1_2_2:4,149,65,325,1,228600,-828700,-840700,-840700,-828700,94000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_1_2_3:1,148,65,325,1,228600,-884900,-894900,-894900,-884900,94000,-92000,-20000,97000,-494500,-494500
1#SA1_1_2_3:2,148,65,325,1,228600,-884900,-894900,-894900,-884900,94000,-92000,-20000,97000,-494500,-494500
1#SA1_1_2_3:3,148,65,325,1,228600,-884900,-894900,-894900,-884900,94000,-92000,-20000,97000,-494500,-494500
1#SA1_1_2_3:4,148,65,325,1,228600,-884900,-894900,-894900,-884900,94000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_1_2_4:1,147,65,325,1,228600,-939100,-949100,-949100,-939100,94000,-92000,-20000,97000,-494500,-494500
1#SA1_1_2_4:2,147,65,325,1,228600,-939100,-949100,-949100,-939100,94000,-92000,-20000,97000,-494500,-494500
1#SA1_1_2_4:3,147,65,325,1,228600,-939100,-949100,-949100,-939100,94000,-92000,-20000,97000,-494500,-494500
1#SA1_1_2_4:4,147,65,325,1,228600,-939100,-949100,-949100,-939100,94000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_1_2_5:1,146,65,325,1,228600,-993300,-1003300,-1003300,-993300,94000,-92000,-20000,97000,-494500,-494500
1#SA1_1_2_5:2,146,65,325,1,228600,-993300,-1003300,-1003300,-993300,94000,-92000,-20000,97000,-494500,-494500
1#SA1_1_2_5:3,146,65,325,1,228600,-993300,-1003300,-1003300,-993300,94000,-92000,-20000,97000,-494500,-494500
1#SA1_1_2_5:4,146,65,325,1,228600,-993300,-1003300,-1003300,-993300,94000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_1_2_6:1,145,65,325,1,228600,-1047500,-1057500,-1057500,-1047500,94000,-92000,-20000,97000,-494500,-494500
1#SA1_1_2_6:2,145,65,325,1,228600,-1047500,-1057500,-1057500,-1047500,94000,-92000,-20000,97000,-494500,-494500
1#SA1_1_2_6:3,145,65,325,1,228600,-1047500,-1057500,-1057500,-1047500,94000,-92000,-20000,97000,-494500,-494500
1#SA1_1_2_6:4,145,65,325,1,228600,-1047500,-1057500,-1057500,-1047500,94000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_1_2_7:1,144,65,325,1,228600,-1101700,-1111700,-1111700,-1101700,94000,-92000,-20000,97000,-494500,-494500
1#SA1_1_2_7:2,144,65,325,1,228600,-1101700,-1111700,-1111700,-1101700,94000,-92000,-20000,97000,-494500,-494500
1#SA1_1_2_7:3,144,65,325,1,228600,-1101700,-1111700,-1111700,-1101700,94000,-92000,-20000,97000,-494500,-494500
1#SA1_1_2_7:4,144,65,325,1,228600,-1101700,-1111700,-1111700,-1101700,94000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_1_2_8:1,143,65,325,1,228600,-1155900,-1165900,-1165900,-1155900,94000,-92000,-20000,97000,-494500,-494500
1#SA1_1_2_8:2,143,65,325,1,228600,-1155900,-1165900,-1165900,-1155900,94000,-92000,-20000,97000,-494500,-494500
1#SA1_1_2_8:3,143,65,325,1,228600,-1155900,-1165900,-1165900,-1155900,94000,-92000,-20000,97000,-494500,-494500
1#SA1_1_2_8:4,143,65,325,1,228600,-1155900,-1165900,-1165900,-1155900,94000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,
1#SA1_2_1_1:1,137,45,420,1,113900,-7000,-23000,-23000,-7000,90000,-175000,-100000,97000,-494500,-494500
1#SA1_2_1_2:1,138,45,420,1,113900,-52900,-68900,-68900,-52900,90000,-175000,-100000,97000,-494500,-494500
1#SA1_2_1_3:1,139,45,420,1,113900,-98700,-114700,-114700,-98700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_2_1_4:1,140,45,420,1,113900,-144200,-160200,-160200,-144200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_2_1_5:1,141,45,420,1,113900,-189700,-205700,-205700,-189700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_2_1_6:1,142,45,420,1,113900,-235200,-251200,-251200,-235200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_2_1_7:1,143,45,420,1,113900,-280700,-296700,-296700,-280700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_2_1_8:1,144,45,420,1,113900,-326200,-342200,-342200,-326200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_2_1_9:1,145,45,420,1,113900,-371700,-387700,-387700,-371700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_2_1_10:1,146,45,420,1,113900,-417200,-433200,-433200,-417200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_2_1_11:1,147,45,420,1,113900,-462700,-478700,-478700,-462700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_2_1_12:1,148,45,420,1,113900,-508200,-524200,-524200,-508200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_2_1_13:1,149,45,420,1,113900,-553700,-569700,-569700,-553700,90000,-175000,-100000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_2_2_1:1,150,45,420,1,113900,-598200,-614200,-614200,-598200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_2_2_2:1,149,45,420,1,113900,-643700,-659700,-659700,-643700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_2_2_3:1,148,45,420,1,113900,-689200,-705200,-705200,-689200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_2_2_4:1,147,45,420,1,113900,-734700,-750700,-750700,-734700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_2_2_5:1,146,45,420,1,113900,-780200,-796200,-796200,-780200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_2_2_6:1,145,45,420,1,113900,-825700,-841700,-841700,-825700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_2_2_7:1,144,45,420,1,113900,-871200,-887200,-887200,-871200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_2_2_8:1,143,45,420,1,113900,-916700,-932700,-932700,-916700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_2_2_9:1,142,45,420,1,113900,-962200,-978200,-978200,-962200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_2_2_10:1,141,45,420,1,113900,-1007700,-1023700,-1023700,-1007700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_2_2_11:1,140,45,420,1,113900,-1053200,-1069200,-1069200,-1053200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_2_2_12:1,139,45,420,1,113900,-1098700,-1114700,-1114700,-1098700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_2_2_13:1,138,45,420,1,113900,-1144200,-1160200,-1160200,-1144200,90000,-175000,-100000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_3_1_1:1,137,45,420,1,-1320,-7000,-23000,-23000,-7000,90000,-175000,-100000,97000,-494500,-494500
1#SA1_3_1_2:1,138,45,420,1,-1320,-52900,-68900,-68900,-52900,90000,-175000,-100000,97000,-494500,-494500
1#SA1_3_1_3:1,139,45,420,1,-1320,-98700,-114700,-114700,-98700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_3_1_4:1,140,45,420,1,-1320,-144200,-160200,-160200,-144200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_3_1_5:1,141,45,420,1,-1320,-189700,-205700,-205700,-189700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_3_1_6:1,142,45,420,1,-1320,-235200,-251200,-251200,-235200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_3_1_7:1,143,45,420,1,-1320,-280700,-296700,-296700,-280700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_3_1_8:1,144,45,420,1,-1320,-326200,-342200,-342200,-326200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_3_1_9:1,145,45,420,1,-1320,-371700,-387700,-387700,-371700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_3_1_10:1,146,45,420,1,-1320,-417200,-433200,-433200,-417200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_3_1_11:1,147,45,420,1,-1320,-462700,-478700,-478700,-462700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_3_1_12:1,148,45,420,1,-1320,-508200,-524200,-524200,-508200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_3_1_13:1,149,45,420,1,-1320,-553700,-569700,-569700,-553700,90000,-175000,-100000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_3_2_1:1,150,65,325,1,-1320,-611300,-621300,-621300,-611300,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_1:2,150,65,325,1,-1320,-611300,-621300,-621300,-611300,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_1:3,150,65,325,1,-1320,-611300,-621300,-621300,-611300,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_1:4,150,65,325,1,-1320,-611300,-621300,-621300,-611300,95000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_3_2_2:1,149,65,325,1,-1320,-666000,-676000,-676000,-666000,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_2:2,149,65,325,1,-1320,-666000,-676000,-676000,-666000,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_2:3,149,65,325,1,-1320,-666000,-676000,-676000,-666000,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_2:4,149,65,325,1,-1320,-666000,-676000,-676000,-666000,95000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_3_2_3:1,148,65,325,1,-1320,-719600,-729600,-729600,-719600,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_3:2,148,65,325,1,-1320,-719600,-729600,-729600,-719600,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_3:3,148,65,325,1,-1320,-719600,-729600,-729600,-719600,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_3:4,148,65,325,1,-1320,-719600,-729600,-729600,-719600,95000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_3_2_4:1,147,65,325,1,-1320,-773800,-783800,-783800,-773800,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_4:2,147,65,325,1,-1320,-773800,-783800,-783800,-773800,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_4:3,147,65,325,1,-1320,-773800,-783800,-783800,-773800,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_4:4,147,65,325,1,-1320,-773800,-783800,-783800,-773800,95000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_3_2_5:1,146,65,325,1,-1320,-828000,-838000,-838000,-828000,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_5:2,146,65,325,1,-1320,-828000,-838000,-838000,-828000,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_5:3,146,65,325,1,-1320,-828000,-838000,-838000,-828000,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_5:4,146,65,325,1,-1320,-828000,-838000,-838000,-828000,95000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_3_2_6:1,145,65,325,1,-1320,-882200,-892200,-892200,-882200,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_6:2,145,65,325,1,-1320,-882200,-892200,-892200,-882200,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_6:3,145,65,325,1,-1320,-882200,-892200,-892200,-882200,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_6:4,145,65,325,1,-1320,-882200,-892200,-892200,-882200,95000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_3_2_7:1,144,65,325,1,-1320,-936400,-946400,-946400,-936400,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_7:2,144,65,325,1,-1320,-936400,-946400,-946400,-936400,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_7:3,144,65,325,1,-1320,-936400,-946400,-946400,-936400,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_7:4,144,65,325,1,-1320,-936400,-946400,-946400,-936400,95000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_3_2_8:1,143,65,325,1,-1320,-990600,-1000600,-1000600,-990600,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_8:2,143,65,325,1,-1320,-990600,-1000600,-1000600,-990600,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_8:3,143,65,325,1,-1320,-990600,-1000600,-1000600,-990600,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_8:4,143,65,325,1,-1320,-990600,-1000600,-1000600,-990600,95000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_3_2_9:1,142,65,325,1,-1320,-1044800,-1054800,-1054800,-1044800,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_9:2,142,65,325,1,-1320,-1044800,-1054800,-1054800,-1044800,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_9:3,142,65,325,1,-1320,-1044800,-1054800,-1054800,-1044800,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_9:4,142,65,325,1,-1320,-1044800,-1054800,-1054800,-1044800,95000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_3_2_10:1,141,65,325,1,-1320,-1099000,-1109000,-1109000,-1099000,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_10:2,141,65,325,1,-1320,-1099000,-1109000,-1109000,-1099000,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_10:3,141,65,325,1,-1320,-1099000,-1109000,-1109000,-1099000,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_10:4,141,65,325,1,-1320,-1099000,-1109000,-1109000,-1099000,95000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_3_2_11:1,140,65,325,1,-1320,-1153200,-1163200,-1163200,-1153200,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_11:2,140,65,325,1,-1320,-1153200,-1163200,-1163200,-1153200,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_11:3,140,65,325,1,-1320,-1153200,-1163200,-1163200,-1153200,95000,-92000,-20000,97000,-494500,-494500
1#SA1_3_2_11:4,140,65,325,1,-1320,-1153200,-1163200,-1163200,-1153200,95000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,
1#SA1_4_1_1:1,137,45,420,1,459800,-7000,-23000,-23000,-7000,90000,-175000,-100000,97000,-494500,-494500
1#SA1_4_1_2:1,138,45,420,1,459800,-52900,-68900,-68900,-52900,90000,-175000,-100000,97000,-494500,-494500
1#SA1_4_1_3:1,139,45,420,1,459800,-98700,-114700,-114700,-98700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_4_1_4:1,140,45,420,1,459800,-144200,-160200,-160200,-144200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_4_1_5:1,141,45,420,1,459800,-189700,-205700,-205700,-189700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_4_1_6:1,142,45,420,1,459800,-235200,-251200,-251200,-235200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_4_1_7:1,143,45,420,1,459800,-280700,-296700,-296700,-280700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_4_1_8:1,144,45,420,1,459800,-326200,-342200,-342200,-326200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_4_1_9:1,145,45,420,1,459800,-371700,-387700,-387700,-371700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_4_1_10:1,146,45,420,1,459800,-417200,-433200,-433200,-417200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_4_1_11:1,147,45,420,1,459800,-462700,-478700,-478700,-462700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_4_1_12:1,148,45,420,1,459800,-508200,-524200,-524200,-508200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_4_1_13:1,149,45,420,1,459800,-553700,-569700,-569700,-553700,90000,-175000,-100000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_4_2_1:1,150,65,325,1,459800,-611300,-621300,-621300,-611300,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_1:2,150,65,325,1,459800,-611300,-621300,-621300,-611300,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_1:3,150,65,325,1,459800,-611300,-621300,-621300,-611300,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_1:4,150,65,325,1,459800,-611300,-621300,-621300,-611300,95000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_4_2_2:1,149,65,325,1,459800,-666000,-676000,-676000,-666000,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_2:2,149,65,325,1,459800,-666000,-676000,-676000,-666000,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_2:3,149,65,325,1,459800,-666000,-676000,-676000,-666000,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_2:4,149,65,325,1,459800,-666000,-676000,-676000,-666000,95000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_4_2_3:1,148,65,325,1,459800,-719600,-729600,-729600,-719600,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_3:2,148,65,325,1,459800,-719600,-729600,-729600,-719600,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_3:3,148,65,325,1,459800,-719600,-729600,-729600,-719600,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_3:4,148,65,325,1,459800,-719600,-729600,-729600,-719600,95000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_4_2_4:1,147,65,325,1,459800,-773800,-783800,-783800,-773800,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_4:2,147,65,325,1,459800,-773800,-783800,-783800,-773800,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_4:3,147,65,325,1,459800,-773800,-783800,-783800,-773800,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_4:4,147,65,325,1,459800,-773800,-783800,-783800,-773800,95000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_4_2_5:1,146,65,325,1,459800,-828000,-838000,-838000,-828000,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_5:2,146,65,325,1,459800,-828000,-838000,-838000,-828000,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_5:3,146,65,325,1,459800,-828000,-838000,-838000,-828000,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_5:4,146,65,325,1,459800,-828000,-838000,-838000,-828000,95000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_4_2_6:1,145,65,325,1,459800,-882200,-892200,-892200,-882200,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_6:2,145,65,325,1,459800,-882200,-892200,-892200,-882200,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_6:3,145,65,325,1,459800,-882200,-892200,-892200,-882200,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_6:4,145,65,325,1,459800,-882200,-892200,-892200,-882200,95000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_4_2_7:1,144,65,325,1,459800,-936400,-946400,-946400,-936400,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_7:2,144,65,325,1,459800,-936400,-946400,-946400,-936400,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_7:3,144,65,325,1,459800,-936400,-946400,-946400,-936400,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_7:4,144,65,325,1,459800,-936400,-946400,-946400,-936400,95000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_4_2_8:1,143,65,325,1,459800,-990600,-1000600,-1000600,-990600,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_8:2,143,65,325,1,459800,-990600,-1000600,-1000600,-990600,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_8:3,143,65,325,1,459800,-990600,-1000600,-1000600,-990600,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_8:4,143,65,325,1,459800,-990600,-1000600,-1000600,-990600,95000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_4_2_9:1,142,65,325,1,459800,-1044800,-1054800,-1054800,-1044800,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_9:2,142,65,325,1,459800,-1044800,-1054800,-1054800,-1044800,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_9:3,142,65,325,1,459800,-1044800,-1054800,-1054800,-1044800,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_9:4,142,65,325,1,459800,-1044800,-1054800,-1054800,-1044800,95000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_4_2_10:1,141,65,325,1,459800,-1099000,-1109000,-1109000,-1099000,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_10:2,141,65,325,1,459800,-1099000,-1109000,-1109000,-1099000,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_10:3,141,65,325,1,459800,-1099000,-1109000,-1109000,-1099000,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_10:4,141,65,325,1,459800,-1099000,-1109000,-1109000,-1099000,95000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_4_2_11:1,140,65,325,1,459800,-1153200,-1163200,-1163200,-1153200,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_11:2,140,65,325,1,459800,-1153200,-1163200,-1163200,-1153200,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_11:3,140,65,325,1,459800,-1153200,-1163200,-1163200,-1153200,95000,-92000,-20000,97000,-494500,-494500
1#SA1_4_2_11:4,140,65,325,1,459800,-1153200,-1163200,-1163200,-1153200,95000,-92000,-20000,97000,-494500,-494500
,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,
1#SA1_5_1_1:1,137,45,420,1,345000,-7000,-23000,-23000,-7000,90000,-175000,-100000,97000,-494500,-494500
1#SA1_5_1_2:1,138,45,420,1,345000,-52900,-68900,-68900,-52900,90000,-175000,-100000,97000,-494500,-494500
1#SA1_5_1_3:1,139,45,420,1,345000,-98700,-114700,-114700,-98700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_5_1_4:1,140,45,420,1,345000,-144200,-160200,-160200,-144200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_5_1_5:1,141,45,420,1,345000,-189700,-205700,-205700,-189700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_5_1_6:1,142,45,420,1,345000,-235200,-251200,-251200,-235200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_5_1_7:1,143,45,420,1,345000,-280700,-296700,-296700,-280700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_5_1_8:1,144,45,420,1,345000,-326200,-342200,-342200,-326200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_5_1_9:1,145,45,420,1,345000,-371700,-387700,-387700,-371700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_5_1_10:1,146,45,420,1,345000,-417200,-433200,-433200,-417200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_5_1_11:1,147,45,420,1,345000,-462700,-478700,-478700,-462700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_5_1_12:1,148,45,420,1,345000,-508200,-524200,-524200,-508200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_5_1_13:1,149,45,420,1,345000,-553700,-569700,-569700,-553700,90000,-175000,-100000,97000,-494500,-494500
,,,,,,,,,,,,,,,
1#SA1_5_2_1:1,150,45,420,1,345000,-598200,-614200,-614200,-598200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_5_2_2:1,149,45,420,1,345000,-643700,-659700,-659700,-643700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_5_2_3:1,148,45,420,1,345000,-689200,-705200,-705200,-689200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_5_2_4:1,147,45,420,1,345000,-734700,-750700,-750700,-734700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_5_2_5:1,146,45,420,1,345000,-780200,-796200,-796200,-780200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_5_2_6:1,145,45,420,1,345000,-825700,-841700,-841700,-825700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_5_2_7:1,144,45,420,1,345000,-871200,-887200,-887200,-871200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_5_2_8:1,143,45,420,1,345000,-916700,-932700,-932700,-916700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_5_2_9:1,142,45,420,1,345000,-962200,-978200,-978200,-962200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_5_2_10:1,141,45,420,1,345000,-1007700,-1023700,-1023700,-1007700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_5_2_11:1,140,45,420,1,345000,-1053200,-1069200,-1069200,-1053200,90000,-175000,-100000,97000,-494500,-494500
1#SA1_5_2_12:1,139,45,420,1,345000,-1098700,-1114700,-1114700,-1098700,90000,-175000,-100000,97000,-494500,-494500
1#SA1_5_2_13:1,138,45,420,1,345000,-1144200,-1160200,-1160200,-1144200,90000,-175000,-100000,97000,-494500,-494500
类型,说明,名称,属性值,设备名称,默认值,描述,电器定义,代码定义,SlaveID
DI,急停,SuddenStop_BTN,200,192.168.0.10,0,急停,X01,DI-01,0
DI,复位,Reset_BTN,201,192.168.0.10,0,复位,X02,DI-02,0
DI,自动,AutoRun_Single,202,192.168.0.10,0,自动,X03,DI-03,0
DI,气压检测,Airpressure_Check,203,192.168.0.10,0,气压检测,X04,DI-04,0
DI,料盘检测1,TrayCheck_1,204,192.168.0.10,0,料盘检测1,X05,DI-05,0
DI,料盘检测2,TrayCheck_2,205,192.168.0.10,0,料盘检测2,X06,DI-06,0
DI,进料口门上升端,Door_Up,206,192.168.0.10,0,进料口门上升端,X07,DI-07,0
DI,进料口门下降端,Door_Down,207,192.168.0.10,0,进料口门下降端,X08,DI-08,0
DI,定位气缸上升端,LocationCylinder_Up,208,192.168.0.10,0,定位气缸上升端,X09,DI-09,0
DI,定位气缸下降端,LocationCylinder_Down,209,192.168.0.10,0,定位气缸下降端,X10,DI-10,0
DI,左侧门限位,Left_Door_LimitSingle,210,192.168.0.10,0,左侧门限位,X11,DI-11,0
DI,右侧门限位,Right_Door_LimitSingle,211,192.168.0.10,0,右侧门限位,X12,DI-12,0
DI,料盘检测3,TrayCheck_3,212,192.168.0.10,0,料盘检测3,X13,DI-13,0
DI,料盘检测4,TrayCheck_4,213,192.168.0.10,0,料盘检测4,X14,DI-14,0
DO,自动指示灯,AutoRun_HddLed,100,192.168.0.10,0,自动指示灯,Y01,DO-01,0
DO,故障指示灯,Alarm_HddLed,101,192.168.0.10,0,故障指示灯,Y02,DO-02,0
DO,待机指示灯,RunSign_HddLed,102,192.168.0.10,0,待机指示灯,Y03,DO-03,0
DO,吹气SOL ON,StartOrStopBlow,103,192.168.0.10,0,吹气SOL ON,Y04,DO-04,0
DO,料仓运转ON,Run_Sign,104,192.168.0.10,0,料仓运转ON,Y05,DO-05,0
DO,上下轴刹车,Axis_Brake,105,192.168.0.10,0,上下轴刹车,Y06,DO-06,0
DO,进料口门上升SOL,Door_Up,106,192.168.0.10,0,进料口门上升SOL,Y07,DO-07,0
DO,进料口门下降SOL,Door_Down,107,192.168.0.10,0,进料口门下降SOL,Y08,DO-08,0
DO,定位上升SOL,LocationCylinder_Up,108,192.168.0.10,0,定位上升SOL,Y09,DO-09,0
DO,定位下降SOL,LocationCylinder_Down,109,192.168.0.10,0,定位下降SOL,Y10,DO-10,0
AXIS,(轴一)旋转轴,Middle_Axis,1,SMC000,0,,,,
AXIS,(轴二)升降轴轴,UpDown_Axis,2,SMC000,0,,,,
AXIS,(轴三)进出轴,InOut_Axis,3,SMC000,0,,,,
PRO,温湿度传感器地址,Temperate_ServerAddress,192.168.0.14,,,,,,
PRO,升降轴 进料口取料点 P1,UpDownAxis_DoorOPosition_P1,-886000,,,,,,
PRO,升降轴 进料口出料前点 P2,UpDownAxis_DoorIPosition_P2,-900000,,,,,,
PRO,升降轴 进料口取料缓冲点 P7,UpDownAxis_DoorOBPosition_P7,-900000,,,,,,
PRO,升降轴 进料口出料缓冲点 P8,UpDownAxis_DoorIBPosition_P8,-886000,,,,,,
,进出轴进料口取料点 P2,InOutAxis_DoorPosition_P2,9000,,,,,,
PRO,旋转轴(轴1)P1 待机原位点,MiddleAxis_P1_Position,219200,,,,,,
PRO,进出轴(轴3)P1待机原位点,InOutAxis_P1_Position,0,,,,,,
PRO,押金轴(轴4)P1待机原位点,CompressAxis_P1_Position,360000,,,,,,
,,,,,,,,,
PRO,是否使用压紧轴(1=使用),IsHasCompress_Axis,1,,,,, ,
PRO,设备是否处于调试状态(1=调试,0=正常),IsInDebug,0,,,,,,
PRO,气压检测IO关闭需要持续的时间,AirCheckSeconds,3,,,,,,
PRO,扫码枪IP,Scanner_Ip,192.168.0.24,,,,,,
PRO,扫码枪端口号,Scanner_Port,51236,,,,,,
PRO,温湿度传感器地址,TemperateServer_Port,9001,,,,,,
PRO,预警温度,WarnTemperate,80,,,,,,
PRO,预警湿度,WarnHumidity,80,,,,,,
PRO,(轴一)旋转轴原点目标速度,MiddleAxis_TargetSpeed,9000,,,,,,
PRO,(轴一)旋转轴原点开始速度,MiddleAxis_StartSpeed,3000,,,,,,
PRO,(轴一)旋转轴加速时间,MiddleAxis_AccelTime,500,,,,,,
PRO,(轴一)旋转轴减速时间,MiddleAxis_DecelTime,500,,,,,,
PRO,(轴二)升降轴轴原点目标速度,UpdownAxis_TargetSpeed,12000,,,,,,
PRO,(轴二)升降轴轴原点开始速度,UpdownAxis_StartSpeed,4500,,,,,,
PRO,(轴二)升降轴轴加速时间,UpdownAxis_AccelTime,200,,,,,,
PRO,(轴二)升降轴轴减速时间,UpdownAxis_DecelTime,200,,,,,,
PRO,(轴三)进出轴原点目标速度,InoutAxis_TargetSpeed,3600,,,,,,
PRO,(轴三)进出轴原点开始速度,InoutAxis_StartSpeed,1200,,,,,,
PRO,(轴三)进出轴加速时间,InoutAxis_AccelTime,200,,,,,,
PRO,(轴三)进出轴减速时间,InoutAxis_DecelTime,200,,,,,,
PRO,升降轴(轴2)P1速度,UpDownAxis_P1_Speed,130000,,,,,,
PRO,升降轴(轴2)P2速度,UpDownAxis_P2_Speed,130000,,,,,,
PRO,升降轴(轴2)P3速度,UpDownAxis_P3_Speed,130000,,,,,,
PRO,升降轴(轴2)P4速度,UpDownAxis_P4_Speed,20000,,,,,,
PRO,升降轴(轴2)P5速度,UpDownAxis_P5_Speed,130000,,,,,,
PRO,升降轴(轴2)P6速度,UpDownAxis_P6_Speed,20000,,,,,,
PRO,升降轴(轴2)P7速度,UpDownAxis_P7_Speed,20000,,,,,,
PRO,升降轴(轴2)P8速度,UpDownAxis_P8_Speed,20000,,,,,,
PRO,旋转轴(轴1)P1速度,MiddleAxis_P1_Speed,100000,,,,,,
PRO,旋转轴(轴1)P2速度,MiddleAxis_P2_Speed,100000,,,,,,
PRO,进出轴(轴3)P1速度,InOutAxis_P1_Speed,20000,,,,,,
PRO,进出轴(轴3)P2速度,InOutAxis_P2_Speed,20000,,,,,,
PRO,进出轴(轴3)P3速度,InOutAxis_P3_Speed,20000,,,,,,
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,(轴一)旋转轴速度倍率,MiddleAxis_ResolveSpeed,10,,,,,,
PRO,(轴二)升降轴速度倍率,UpdownAxis_ResolveSpeed,20,,,,,,
PRO,(轴三)进出轴速度倍率,InoutAxis_ResolveSpeed,10,,,,,,
PRO,IO信号超时时间(毫秒),IOSingle_TimerOut,10000,,,,,,
PRO,是否使用料盘检测信号,IsUse_Tray_Check,0,,,,,,
,,,,,,,,,
PRO,硕科步进电机(压紧轴)控制端口号,CompressAxis_PortName,COM3,,,,,,
PRO,硕科步进电机(压紧轴)控制波特率,CompressAxis_PortBaudrate,9600,,,,,,
PRO,硕科步进电机(压紧轴)控制奇偶校验,CompressAxis_PortParity,0,,,,,,
PRO,硕科步进电机(压紧轴)控制停止位,CompressAxis_StopBits,1,,,,,,
PRO,硕科步进电机(压紧轴)控制初速度,CompressAxis_StartSpeed,50000,,,,,,
PRO,硕科步进电机(压紧轴)控制最大速度,CompressAxis_MaxSpeed,200000,,,,,,
PRO,硕科步进电机(压紧轴)控制末速度,CompressAxis_EndSpeed,70000,,,,,,
PRO,硕科步进电机(压紧轴)控制加速度,CompressAxis_AddSpeed,50000,,,,,,
PRO,硕科步进电机(压紧轴)控制减速度,CompressAxis_DelSpeed,50000,,,,,,
PRO,硕科步进电机(压紧轴)控制归零速度(原点返回速度),CompressAxis_HomeSpeed,50000,,,,,,
PRO,硕科步进电机轴地址(压紧轴),CompressAxis_Slv,1,,,,,,
,,,,,,,,,
PRO,(轴一)旋转轴最小限位,MiddleAxis_PositionMin,0,,,,,,
PRO,(轴二)升降轴最小限位,UpdownAxis_PositionMin,0,,,,,,
PRO,(轴三)进出轴最小限位,InoutAxis_PositionMin,0,,,,,,
PRO,(轴一)旋转轴最大限位,MiddleAxis_PositionMax,0,,,,,,
PRO,(轴二)升降轴最大限位,UpdownAxis_PositionMax,0,,,,,,
PRO,(轴三)进出轴最大限位,InoutAxis_PositionMax,0,,,,,,
位置,优先级,高度,宽度,料仓ID,中轴位置P2,升降轴库位出料前点P5,升降轴库位出料缓冲点P6,升降轴库位入料前点P3,升降轴库位入料缓冲点P4,进出轴库位点取料点P3,压紧轴压紧点P2,压紧轴压紧前点P3,进出轴进料口取料点P2
1#SA1_1_1_1,,,,,,,,,,,,,
1#SA1_1_1_2,,,,,,,,,,,,,
1#SA1_1_1_3,,,,,,,,,,,,,
1#SA1_1_1_4,,,,,,,,,,,,,
1#SA1_1_1_5,,,,,,,,,,,,,
1#SA1_1_1_6,,,,,,,,,,,,,
1#SA1_1_1_7,,,,,,,,,,,,,
1#SA1_1_1_8,,,,,,,,,,,,,
1#SA1_1_1_9,,,,,,,,,,,,,
1#SA1_1_1_10,,,,,,,,,,,,,
1#SA1_1_2_1,10,12,7,1,219400,-1216750,-1230750,-1230750,-1216750,46000,210000,360000,52217
1#SA1_1_2_2,10,12,7,1,219400,-1267400,-1281400,-1281400,-1267400,46000,210000,360000,52217
1#SA1_1_2_3,10,12,7,1,219400,-1312550,-1326550,-1326550,-1312550,46000,210000,360000,52217
1#SA1_1_2_4,10,12,7,1,219400,-1356000,-1370000,-1370000,-1356000,46000,210000,360000,52217
1#SA1_1_2_5,10,12,7,1,219400,-1399850,-1413850,-1413850,-1399850,46000,210000,360000,52217
1#SA1_1_2_6,10,12,7,1,219400,-1443400,-1457400,-1457400,-1443400,46000,210000,360000,52217
1#SA1_1_2_7,10,12,7,1,219400,-1486950,-1500950,-1500950,-1486950,46000,210000,360000,52217
1#SA1_1_2_8,10,12,7,1,219400,-1530500,-1544500,-1544500,-1530500,46000,210000,360000,52217
1#SA1_1_2_9,10,12,7,1,219400,-1574050,-1588050,-1588050,-1574050,46000,210000,360000,52217
1#SA1_1_2_10,10,12,7,1,219400,-1617600,-1631600,-1631600,-1617600,46000,210000,360000,52217
1#SA1_1_2_11,10,12,7,1,219400,-1661150,-1675150,-1675150,-1661150,46000,210000,360000,52217
1#SA1_1_2_12,10,12,7,1,219400,-1704700,-1718700,-1718700,-1704700,46000,210000,360000,52217
1#SA1_1_2_13,10,12,7,1,219400,-1748250,-1762250,-1762250,-1748250,46000,210000,360000,52217
1#SA1_1_2_14,10,12,7,1,219400,-1791800,-1805800,-1805800,-1791800,46000,210000,360000,52217
1#SA1_1_2_15,10,12,7,1,219400,-1835350,-1849350,-1849350,-1835350,46000,210000,360000,52217
1#SA1_1_2_16,10,12,7,1,219400,-1878900,-1892900,-1892900,-1878900,46000,210000,360000,52217
1#SA1_1_2_17,10,12,7,1,219400,-1922450,-1936450,-1936450,-1922450,46000,210000,360000,52217
1#SA1_1_2_18,10,12,7,1,219400,-1966000,-1980000,-1980000,-1966000,46000,210000,360000,52217
1#SA1_1_2_19,10,12,7,1,219400,-2009550,-2023550,-2023550,-2009550,46000,210000,360000,52217
1#SA1_1_2_20,10,12,7,1,219400,-2053100,-2067100,-2067100,-2053100,46000,210000,360000,52217
1#SA1_1_2_21,10,12,7,1,219400,-2096650,-2110650,-2110650,-2096650,46000,210000,360000,52217
1#SA1_1_2_22,10,12,7,1,219400,-2140200,-2154200,-2154200,-2140200,46000,210000,360000,52217
1#SA1_2_1_1,10,12,7,1,1000,,,,,46000,210000,360000,52217
1#SA1_2_1_2,10,12,7,1,1000,,,,,46000,210000,360000,52217
1#SA1_2_1_3,10,12,7,1,1000,,,,,46000,210000,360000,52217
1#SA1_2_1_4,10,12,7,1,1000,,,,,46000,210000,360000,52217
1#SA1_2_1_5,10,12,7,1,1000,,,,,46000,210000,360000,52217
1#SA1_2_1_6,10,12,7,1,1000,,,,,46000,210000,360000,52217
1#SA1_2_1_7,10,12,7,1,1000,,,,,46000,210000,360000,52217
1#SA1_2_1_8,10,12,7,1,1000,,,,,46000,210000,360000,52217
1#SA1_2_1_9,10,12,7,1,1000,,,,,46000,210000,360000,52217
1#SA1_2_1_10,10,12,7,1,1000,,,,,46000,210000,360000,52217
1#SA1_2_1_11,10,12,7,1,1000,,,,,46000,210000,360000,52217
1#SA1_2_1_12,10,12,7,1,1000,,,,,46000,210000,360000,52217
1#SA1_2_1_13,10,12,7,1,1000,,,,,46000,210000,360000,52217
1#SA1_2_1_14,10,12,7,1,1000,,,,,46000,210000,360000,52217
1#SA1_2_1_15,10,12,7,1,1000,,,,,46000,210000,360000,52217
1#SA1_2_1_16,10,12,7,1,1000,,,,,46000,210000,360000,52217
1#SA1_2_1_17,10,12,7,1,1000,,,,,46000,210000,360000,52217
1#SA1_2_2_1,10,16,7,1,147000,-1093300,-1105300,-1105300,-1093300,46000,210000,360000,52217
1#SA1_2_2_2,10,16,7,1,147020,-1129500,-1141500,-1141500,-1129500,46000,210000,360000,52217
1#SA1_2_2_3,10,16,7,1,147040,-1166500,-1178500,-1178500,-1166500,46000,210000,360000,52217
1#SA1_2_2_4,10,16,7,1,147060,-1203000,-1215000,-1215000,-1203000,46000,210000,360000,52217
1#SA1_2_2_5,10,16,7,1,147080,-1238000,-1250000,-1250000,-1238000,46000,210000,360000,52217
1#SA1_2_2_6,10,16,7,1,147100,-1276000,-1288000,-1288000,-1276000,46000,210000,360000,52217
1#SA1_2_2_7,10,16,7,1,147120,-1311900,-1323900,-1323900,-1311900,46000,210000,360000,52217
1#SA1_2_2_8,10,16,7,1,147140,-1348800,-1360800,-1360800,-1348800,46000,210000,360000,52217
1#SA1_2_2_9,10,16,7,1,147160,-1384000,-1396000,-1396000,-1384000,46000,210000,360000,52217
1#SA1_2_2_10,10,16,7,1,147180,-1420700,-1432700,-1432700,-1420700,46000,210000,360000,52217
1#SA1_2_2_11,10,16,7,1,147200,-1456950,-1468950,-1468950,-1456950,46000,210000,360000,52217
1#SA1_2_2_12,10,16,7,1,147220,-1493200,-1505200,-1505200,-1493200,46000,210000,360000,52217
1#SA1_2_2_13,10,16,7,1,147240,-1529450,-1541450,-1541450,-1529450,46000,210000,360000,52217
1#SA1_2_2_14,10,16,7,1,147260,-1565700,-1577700,-1577700,-1565700,46000,210000,360000,52217
1#SA1_2_2_15,10,16,7,1,147280,-1601950,-1613950,-1613950,-1601950,46000,210000,360000,52217
1#SA1_2_2_16,10,16,7,1,147300,-1638200,-1650200,-1650200,-1638200,46000,210000,360000,52217
1#SA1_2_2_17,10,16,7,1,147320,-1674450,-1686450,-1686450,-1674450,46000,210000,360000,52217
1#SA1_2_2_18,10,16,7,1,147340,-1710700,-1722700,-1722700,-1710700,46000,210000,360000,52217
1#SA1_2_2_19,10,16,7,1,147360,-1746950,-1758950,-1758950,-1746950,46000,210000,360000,52217
1#SA1_2_2_20,10,16,7,1,147380,-1783200,-1795200,-1795200,-1783200,46000,210000,360000,52217
1#SA1_2_2_21,10,16,7,1,147400,-1819450,-1831450,-1831450,-1819450,46000,210000,360000,52217
1#SA1_2_2_22,10,16,7,1,147420,-1855700,-1867700,-1867700,-1855700,46000,210000,360000,52217
1#SA1_2_2_23,10,16,7,1,147440,-1891950,-1903950,-1903950,-1891950,46000,210000,360000,52217
1#SA1_2_2_24,10,16,7,1,147460,-1928200,-1940200,-1940200,-1928200,46000,210000,360000,52217
1#SA1_2_2_25,10,16,7,1,147480,-1964450,-1976450,-1976450,-1964450,46000,210000,360000,52217
1#SA1_2_2_26,10,16,7,1,147500,-2000700,-2012700,-2012700,-2000700,46000,210000,360000,52217
1#SA1_2_2_27,10,16,7,1,147520,-2036950,-2048950,-2048950,-2036950,46000,210000,360000,52217
1#SA1_2_2_28,10,16,7,1,147540,-2073200,-2085200,-2085200,-2073200,46000,210000,360000,52217
1#SA1_2_2_29,10,16,7,1,147560,-2109450,-2121450,-2121450,-2109450,46000,210000,360000,52217
1#SA1_2_2_30,10,16,7,1,147580,-2145700,-2157700,-2157700,-2145700,46000,210000,360000,52217
1#SA1_3_1_1,10,12,7,1,73600,-8000,-24000,-24000,-8000,46000,210000,360000,52217
1#SA1_3_1_2,10,12,7,1,73700,-71500,-87500,-87500,-71500,46000,210000,360000,52217
1#SA1_3_1_3,10,12,7,1,73800,-135000,-151000,-151000,-135000,46000,210000,360000,52217
1#SA1_3_1_4,10,12,7,1,73900,-198500,-214500,-214500,-198500,46000,210000,360000,52217
1#SA1_3_1_5,10,12,7,1,74000,-262000,-278000,-278000,-262000,46000,210000,360000,52217
1#SA1_3_1_6,10,12,7,1,74100,-325500,-341500,-341500,-325500,46000,210000,360000,52217
1#SA1_3_1_7,10,12,7,1,74200,-389000,-405000,-405000,-389000,46000,210000,360000,52217
1#SA1_3_1_8,10,12,7,1,74300,-452500,-468500,-468500,-452500,46000,210000,360000,52217
1#SA1_3_1_9,10,12,7,1,74400,-516000,-532000,-532000,-516000,46000,210000,360000,52217
1#SA1_3_1_10,10,12,7,1,74500,-579500,-595500,-595500,-579500,46000,210000,360000,52217
1#SA1_3_1_11,10,12,7,1,74600,-643000,-659000,-659000,-643000,46000,210000,360000,52217
1#SA1_3_1_12,10,12,7,1,74700,-706500,-722500,-722500,-706500,46000,210000,360000,52217
1#SA1_3_1_13,10,12,7,1,74800,-770000,-786000,-786000,-770000,46000,210000,360000,52217
1#SA1_3_1_14,10,12,7,1,74900,-833500,-849500,-849500,-833500,46000,210000,360000,52217
1#SA1_3_1_15,10,12,7,1,75000,-897000,-913000,-913000,-897000,46000,210000,360000,52217
1#SA1_3_1_16,10,12,7,1,75100,-960500,-976500,-976500,-960500,46000,210000,360000,52217
1#SA1_3_1_17,10,12,7,1,75200,-1024000,-1040000,-1040000,-1024000,46000,210000,360000,52217
1#SA1_3_2_1,10,12,7,1,75000,-1089500,-1105500,-1105500,-1089500,46000,210000,360000,52217
1#SA1_3_2_2,10,12,7,1,75000,-1153000,-1169000,-1169000,-1153000,46000,210000,360000,52217
1#SA1_3_2_3,10,12,7,1,75000,-1216500,-1232500,-1232500,-1216500,46000,210000,360000,52217
1#SA1_3_2_4,10,12,7,1,75200,-1280000,-1296000,-1296000,-1280000,46000,210000,360000,52217
1#SA1_3_2_5,10,12,7,1,75200,-1343500,-1359500,-1359500,-1343500,46000,210000,360000,52217
1#SA1_3_2_6,10,12,7,1,75200,-1407000,-1423000,-1423000,-1407000,46000,210000,360000,52217
1#SA1_3_2_7,10,12,7,1,75200,-1470500,-1486500,-1486500,-1470500,46000,210000,360000,52217
1#SA1_3_2_8,10,12,7,1,75200,-1534000,-1550000,-1550000,-1534000,46000,210000,360000,52217
1#SA1_3_2_9,10,12,7,1,75200,-1597500,-1613500,-1613500,-1597500,46000,210000,360000,52217
1#SA1_3_2_10,10,12,7,1,75000,-1661000,-1677000,-1677000,-1661000,46000,210000,360000,52217
1#SA1_3_2_11,10,12,7,1,75000,-1724500,-1740500,-1740500,-1724500,46000,210000,360000,52217
1#SA1_3_2_12,10,12,7,1,75000,-1788000,-1804000,-1804000,-1788000,46000,210000,360000,52217
1#SA1_3_2_13,10,12,7,1,75000,-1851500,-1867500,-1867500,-1851500,46000,210000,360000,52217
1#SA1_3_2_14,10,12,7,1,74800,-1915000,-1931000,-1931000,-1915000,46000,210000,360000,52217
1#SA1_3_2_15,10,12,7,1,74800,-1978500,-1994500,-1994500,-1978500,46000,210000,360000,52217
1#SA1_3_2_16,10,12,7,1,74800,-2042000,-2058000,-2058000,-2042000,46000,210000,360000,52217
1#SA1_3_2_17,10,12,7,1,74800,-2105500,-2121500,-2121500,-2105500,46000,210000,360000,52217
1#SA1_4_1_1,10,12,7,1,1100,-8000,-24000,-24000,-8000,46000,210000,360000,52217
1#SA1_4_1_2,10,12,7,1,1200,-71500,-87500,-87500,-71500,46000,210000,360000,52217
1#SA1_4_1_3,10,12,7,1,1300,-135000,-151000,-151000,-135000,46000,210000,360000,52217
1#SA1_4_1_4,10,12,7,1,1400,-198500,-214500,-214500,-198500,46000,210000,360000,52217
1#SA1_4_1_5,10,12,7,1,1500,-262000,-278000,-278000,-262000,46000,210000,360000,52217
1#SA1_4_1_6,10,12,7,1,1600,-325500,-341500,-341500,-325500,46000,210000,360000,52217
1#SA1_4_1_7,10,12,7,1,1700,-389000,-405000,-405000,-389000,46000,210000,360000,52217
1#SA1_4_1_8,10,12,7,1,1800,-452500,-468500,-468500,-452500,46000,210000,360000,52217
1#SA1_4_1_9,10,12,7,1,1900,-516000,-532000,-532000,-516000,46000,210000,360000,52217
1#SA1_4_1_10,10,12,7,1,2000,-579500,-595500,-595500,-579500,46000,210000,360000,52217
1#SA1_4_1_11,10,12,7,1,2100,-643000,-659000,-659000,-643000,46000,210000,360000,52217
1#SA1_4_1_12,10,12,7,1,2200,-706500,-722500,-722500,-706500,46000,210000,360000,52217
1#SA1_4_1_13,10,12,7,1,2300,-770000,-786000,-786000,-770000,46000,210000,360000,52217
1#SA1_4_1_14,10,12,7,1,2400,-833500,-849500,-849500,-833500,46000,210000,360000,52217
1#SA1_4_1_15,10,12,7,1,2500,-897000,-913000,-913000,-897000,46000,210000,360000,52217
1#SA1_4_1_16,10,12,7,1,2600,-960500,-976500,-976500,-960500,46000,210000,360000,52217
1#SA1_4_1_17,10,12,7,1,2700,-1024000,-1040000,-1040000,-1024000,46000,210000,360000,52217
1#SA1_4_2_1,10,12,7,1,2500,-1093500,-1105500,-1105500,-1093500,46000,210000,360000,52217
1#SA1_4_2_2,10,12,7,1,2490,-1126000,-1138000,-1138000,-1128000,46000,210000,360000,52217
1#SA1_4_2_3,10,12,7,1,2480,-1158500,-1170500,-1170500,-1160500,46000,210000,360000,52217
1#SA1_4_2_4,10,12,7,1,2470,-1191000,-1203000,-1203000,-1193000,46000,210000,360000,52217
1#SA1_4_2_5,10,12,7,1,2460,-1223500,-1235500,-1235500,-1225500,46000,210000,360000,52217
1#SA1_4_2_6,10,12,7,1,2450,-1256000,-1268000,-1268000,-1258000,46000,210000,360000,52217
1#SA1_4_2_7,10,12,7,1,2440,-1288500,-1300500,-1300500,-1290500,46000,210000,360000,52217
1#SA1_4_2_8,10,12,7,1,2430,-1321000,-1333000,-1333000,-1323000,46000,210000,360000,52217
1#SA1_4_2_9,10,12,7,1,2420,-1353500,-1365500,-1365500,-1355500,46000,210000,360000,52217
1#SA1_4_2_10,10,12,7,1,2410,-1386000,-1398000,-1398000,-1388000,46000,210000,360000,52217
1#SA1_4_2_11,10,12,7,1,2400,-1418500,-1430500,-1430500,-1420500,46000,210000,360000,52217
1#SA1_4_2_12,10,12,7,1,2390,-1451000,-1463000,-1463000,-1453000,46000,210000,360000,52217
1#SA1_4_2_13,10,12,7,1,2380,-1483500,-1495500,-1495500,-1485500,46000,210000,360000,52217
1#SA1_4_2_14,10,12,7,1,2370,-1516000,-1528000,-1528000,-1518000,46000,210000,360000,52217
1#SA1_4_2_15,10,12,7,1,2360,-1548500,-1560500,-1560500,-1550500,46000,210000,360000,52217
1#SA1_4_2_16,10,12,7,1,2350,-1581000,-1593000,-1593000,-1583000,46000,210000,360000,52217
1#SA1_4_2_17,10,12,7,1,2340,-1613500,-1625500,-1625500,-1615500,46000,210000,360000,52217
1#SA1_4_2_18,10,12,7,1,2330,-1646000,-1658000,-1658000,-1648000,46000,210000,360000,52217
1#SA1_4_2_19,10,12,7,1,2320,-1678500,-1690500,-1690500,-1680500,46000,210000,360000,52217
1#SA1_4_2_20,10,12,7,1,2310,-1711000,-1723000,-1723000,-1713000,46000,210000,360000,52217
1#SA1_4_2_21,10,12,7,1,2300,-1743500,-1755500,-1755500,-1745500,46000,210000,360000,52217
1#SA1_4_2_22,10,12,7,1,2290,-1776000,-1788000,-1788000,-1778000,46000,210000,360000,52217
1#SA1_4_2_23,10,12,7,1,2280,-1808500,-1820500,-1820500,-1810500,46000,210000,360000,52217
1#SA1_4_2_24,10,12,7,1,2270,-1841000,-1853000,-1853000,-1843000,46000,210000,360000,52217
1#SA1_4_2_25,10,12,7,1,2260,-1873500,-1885500,-1885500,-1875500,46000,210000,360000,52217
1#SA1_4_2_26,10,12,7,1,2250,-1906000,-1918000,-1918000,-1908000,46000,210000,360000,52217
1#SA1_4_2_27,10,12,7,1,2240,-1938500,-1950500,-1950500,-1940500,46000,210000,360000,52217
1#SA1_4_2_28,10,12,7,1,2230,-1971000,-1983000,-1983000,-1973000,46000,210000,360000,52217
1#SA1_4_2_29,10,12,7,1,2220,-2003500,-2015500,-2015500,-2005500,46000,210000,360000,52217
1#SA1_4_2_30,10,12,7,1,2210,-2036000,-2048000,-2048000,-2038000,46000,210000,360000,52217
1#SA1_4_2_31,10,12,7,1,2200,-2068500,-2080500,-2080500,-2070500,46000,210000,360000,52217
1#SA1_4_2_32,10,12,7,1,2190,-2101000,-2113000,-2113000,-2103000,46000,210000,360000,52217
1#SA1_4_2_33,10,12,7,1,2180,-2133500,-2145500,-2145500,-2135500,46000,210000,360000,52217
1#SA1_5_1_1,10,12,7,1,505500,-8000,-24000,-24000,-8000,46000,210000,360000,52217
1#SA1_5_1_2,10,12,7,1,505600,-71500,-87500,-87500,-71500,46000,210000,360000,52217
1#SA1_5_1_3,10,12,7,1,505700,-135000,-151000,-151000,-135000,46000,210000,360000,52217
1#SA1_5_1_4,10,12,7,1,505800,-198500,-214500,-214500,-198500,46000,210000,360000,52217
1#SA1_5_1_5,10,12,7,1,505900,-262000,-278000,-278000,-262000,46000,210000,360000,52217
1#SA1_5_1_6,10,12,7,1,506000,-325500,-341500,-341500,-325500,46000,210000,360000,52217
1#SA1_5_1_7,10,12,7,1,506100,-389000,-405000,-405000,-389000,46000,210000,360000,52217
1#SA1_5_1_8,10,12,7,1,506200,-452500,-468500,-468500,-452500,46000,210000,360000,52217
1#SA1_5_1_9,10,12,7,1,506300,-516000,-532000,-532000,-516000,46000,210000,360000,52217
1#SA1_5_1_10,10,12,7,1,506400,-579500,-595500,-595500,-579500,46000,210000,360000,52217
1#SA1_5_1_11,10,12,7,1,506500,-643000,-659000,-659000,-643000,46000,210000,360000,52217
1#SA1_5_1_12,10,12,7,1,506600,-706500,-722500,-722500,-706500,46000,210000,360000,52217
1#SA1_5_1_13,10,12,7,1,506700,-770000,-786000,-786000,-770000,46000,210000,360000,52217
1#SA1_5_1_14,10,12,7,1,506800,-833500,-849500,-849500,-833500,46000,210000,360000,52217
1#SA1_5_1_15,10,12,7,1,506900,-897000,-913000,-913000,-897000,46000,210000,360000,52217
1#SA1_5_1_16,10,12,7,1,507000,-960500,-976500,-976500,-960500,46000,210000,360000,52217
1#SA1_5_1_17,10,12,7,1,507100,-1024000,-1040000,-1040000,-1024000,46000,210000,360000,52217
1#SA1_5_2_1,10,12,7,1,507000,-1089500,-1105500,-1105500,-1089500,46000,210000,360000,52217
1#SA1_5_2_2,10,12,7,1,506900,-1153000,-1169000,-1169000,-1153000,46000,210000,360000,52217
1#SA1_5_2_3,10,12,7,1,506860,-1216500,-1232500,-1232500,-1216500,46000,210000,360000,52217
1#SA1_5_2_4,10,12,7,1,506820,-1280000,-1296000,-1296000,-1280000,46000,210000,360000,52217
1#SA1_5_2_5,10,12,7,1,506780,-1343500,-1359500,-1359500,-1343500,46000,210000,360000,52217
1#SA1_5_2_6,10,12,7,1,506740,-1407000,-1423000,-1423000,-1407000,46000,210000,360000,52217
1#SA1_5_2_7,10,12,7,1,506700,-1470500,-1486500,-1486500,-1470500,46000,210000,360000,52217
1#SA1_5_2_8,10,12,7,1,506660,-1534000,-1550000,-1550000,-1534000,46000,210000,360000,52217
1#SA1_5_2_9,10,12,7,1,506620,-1597500,-1613500,-1613500,-1597500,46000,210000,360000,52217
1#SA1_5_2_10,10,12,7,1,506580,-1661000,-1677000,-1677000,-1661000,46000,210000,360000,52217
1#SA1_5_2_11,10,12,7,1,506540,-1724500,-1740500,-1740500,-1724500,46000,210000,360000,52217
1#SA1_5_2_12,10,12,7,1,506500,-1788000,-1804000,-1804000,-1788000,46000,210000,360000,52217
1#SA1_5_2_13,10,12,7,1,506460,-1851500,-1867500,-1867500,-1851500,46000,210000,360000,52217
1#SA1_5_2_14,10,12,7,1,506420,-1915000,-1931000,-1931000,-1915000,46000,210000,360000,52217
1#SA1_5_2_15,10,12,7,1,506380,-1978500,-1994500,-1994500,-1978500,46000,210000,360000,52217
1#SA1_5_2_16,10,12,7,1,506340,-2042000,-2058000,-2058000,-2042000,46000,210000,360000,52217
1#SA1_5_2_17,10,12,7,1,506300,-2105500,-2121500,-2121500,-2105500,46000,210000,360000,52217
1#SA1_6_1_1,10,12,7,1,433300,-8000,-24000,-24000,-8000,46000,210000,360000,52217
1#SA1_6_1_2,10,12,7,1,433390,-71500,-87500,-87500,-71500,46000,210000,360000,52217
1#SA1_6_1_3,10,12,7,1,433480,-135000,-151000,-151000,-135000,46000,210000,360000,52217
1#SA1_6_1_4,10,12,7,1,433570,-198500,-214500,-214500,-198500,46000,210000,360000,52217
1#SA1_6_1_5,10,12,7,1,433660,-262000,-278000,-278000,-262000,46000,210000,360000,52217
1#SA1_6_1_6,10,12,7,1,433750,-325500,-341500,-341500,-325500,46000,210000,360000,52217
1#SA1_6_1_7,10,12,7,1,433840,-389000,-405000,-405000,-389000,46000,210000,360000,52217
1#SA1_6_1_8,10,12,7,1,433930,-452500,-468500,-468500,-452500,46000,210000,360000,52217
1#SA1_6_1_9,10,12,7,1,434020,-516000,-532000,-532000,-516000,46000,210000,360000,52217
1#SA1_6_1_10,10,12,7,1,434110,-579500,-595500,-595500,-579500,46000,210000,360000,52217
1#SA1_6_1_11,10,12,7,1,434200,-643000,-659000,-659000,-643000,46000,210000,360000,52217
1#SA1_6_1_12,10,12,7,1,434290,-706500,-722500,-722500,-706500,46000,210000,360000,52217
1#SA1_6_1_13,10,12,7,1,434380,-770000,-786000,-786000,-770000,46000,210000,360000,52217
1#SA1_6_1_14,10,12,7,1,434470,-833500,-849500,-849500,-833500,46000,210000,360000,52217
1#SA1_6_1_15,10,12,7,1,434560,-897000,-913000,-913000,-897000,46000,210000,360000,52217
1#SA1_6_1_16,10,12,7,1,434650,-960500,-976500,-976500,-960500,46000,210000,360000,52217
1#SA1_6_1_17,10,12,7,1,434740,-1024000,-1040000,-1040000,-1024000,46000,210000,360000,52217
1#SA1_6_2_1,10,8,7,1,1000,-1094000,-1106000,-1106000,-1094000,46000,0,110000,52217
1#SA1_6_2_2,10,8,7,1,1000,-1120000,-1132000,-1132000,-1120000,46000,0,110000,52217
1#SA1_6_2_3,10,8,7,1,1000,-1148000,-1160000,-1160000,-1148000,46000,0,110000,52217
1#SA1_6_2_4,10,8,7,1,1000,-1177000,-1189000,-1189000,-1177000,46000,0,110000,52217
1#SA1_6_2_5,10,8,7,1,1000,-1206000,-1218000,-1218000,-1206000,46000,0,110000,52217
1#SA1_6_2_6,10,8,7,1,1000,-1235100,-1247100,-1247100,-1235100,46000,0,110000,52217
1#SA1_6_2_7,10,8,7,1,1000,-1264200,-1276200,-1276200,-1264200,46000,0,110000,52217
1#SA1_6_2_8,10,8,7,1,1000,-1293300,-1305300,-1305300,-1293300,46000,0,110000,52217
1#SA1_6_2_9,10,8,7,1,1000,-1322400,-1334400,-1334400,-1322400,46000,0,110000,52217
1#SA1_6_2_10,10,8,7,1,1000,-1351500,-1363500,-1363500,-1351500,46000,0,110000,52217
1#SA1_6_2_11,10,8,7,1,1000,-1380600,-1392600,-1392600,-1380600,46000,0,110000,52217
1#SA1_6_2_12,10,8,7,1,1000,-1409700,-1421700,-1421700,-1409700,46000,0,110000,52217
1#SA1_6_2_13,10,8,7,1,1000,-1438800,-1450800,-1450800,-1438800,46000,0,110000,52217
1#SA1_6_2_14,10,8,7,1,1000,-1467900,-1479900,-1479900,-1467900,46000,0,110000,52217
1#SA1_6_2_15,10,8,7,1,1000,-1497000,-1509000,-1509000,-1497000,46000,0,110000,52217
1#SA1_6_2_16,10,8,7,1,1000,-1526100,-1538100,-1538100,-1526100,46000,0,110000,52217
1#SA1_6_2_17,10,8,7,1,1000,-1555200,-1567200,-1567200,-1555200,46000,0,110000,52217
1#SA1_6_2_18,10,8,7,1,1000,-1584300,-1596300,-1596300,-1584300,46000,0,110000,52217
1#SA1_6_2_19,10,8,7,1,1000,-1613400,-1625400,-1625400,-1613400,46000,0,110000,52217
1#SA1_6_2_20,10,8,7,1,1000,-1642500,-1654500,-1654500,-1642500,46000,0,110000,52217
1#SA1_6_2_21,10,8,7,1,1000,-1671600,-1683600,-1683600,-1671600,46000,0,110000,52217
1#SA1_6_2_22,10,8,7,1,1000,-1700700,-1712700,-1712700,-1700700,46000,0,110000,52217
1#SA1_6_2_23,10,8,7,1,1000,-1729800,-1741800,-1741800,-1729800,46000,0,110000,52217
1#SA1_6_2_24,10,8,7,1,1000,-1758900,-1770900,-1770900,-1758900,46000,0,110000,52217
1#SA1_6_2_25,10,8,7,1,1000,-1788000,-1800000,-1800000,-1788000,46000,0,110000,52217
1#SA1_6_2_26,10,8,7,1,1000,-1817100,-1829100,-1829100,-1817100,46000,0,110000,52217
1#SA1_6_2_27,10,8,7,1,1000,-1846200,-1858200,-1858200,-1846200,46000,0,110000,52217
1#SA1_6_2_28,10,8,7,1,1000,-1875300,-1887300,-1887300,-1875300,46000,0,110000,52217
1#SA1_6_2_29,10,8,7,1,1000,-1904400,-1916400,-1916400,-1904400,46000,0,110000,52217
1#SA1_6_2_30,10,8,7,1,1000,-1933500,-1945500,-1945500,-1933500,46000,0,110000,52217
1#SA1_6_2_31,10,8,7,1,1000,-1962600,-1974600,-1974600,-1962600,46000,0,110000,52217
1#SA1_6_2_32,10,8,7,1,1000,-1991700,-2003700,-2003700,-1991700,46000,0,110000,52217
1#SA1_6_2_33,10,8,7,1,1000,-2020800,-2032800,-2032800,-2020800,46000,0,110000,52217
1#SA1_6_2_34,10,8,7,1,1000,-2049900,-2061900,-2061900,-2049900,46000,0,110000,52217
1#SA1_6_2_35,10,8,7,1,1000,-2079000,-2091000,-2091000,-2079000,46000,0,110000,52217
1#SA1_6_2_36,10,8,7,1,1000,-2108100,-2120100,-2120100,-2108100,46000,0,110000,52217
1#SA1_6_2_37,10,8,7,1,1000,-2137200,-2149200,-2149200,-2137200,46000,0,110000,52217
1#SA1_7_1_1,10,12,7,1,361100,-8000,-24000,-24000,-8000,46000,210000,360000,52217
1#SA1_7_1_2,10,12,7,1,361220,-71000,-87000,-87000,-71000,46000,210000,360000,52217
1#SA1_7_1_3,10,12,7,1,361340,-134000,-150000,-150000,-134000,46000,210000,360000,52217
1#SA1_7_1_4,10,12,7,1,361460,-197500,-213500,-213500,-197500,46000,210000,360000,52217
1#SA1_7_1_5,10,12,7,1,361580,-261000,-277000,-277000,-261000,46000,210000,360000,52217
1#SA1_7_1_6,10,12,7,1,361700,-324500,-340500,-340500,-324500,46000,210000,360000,52217
1#SA1_7_1_7,10,12,7,1,361820,-388000,-404000,-404000,-388000,46000,210000,360000,52217
1#SA1_7_1_8,10,12,7,1,361940,-451500,-467500,-467500,-451500,46000,210000,360000,52217
1#SA1_7_1_9,10,12,7,1,362060,-515000,-531000,-531000,-515000,46000,210000,360000,52217
1#SA1_7_1_10,10,12,7,1,362180,-578500,-594500,-594500,-578500,46000,210000,360000,52217
1#SA1_7_1_11,10,12,7,1,362300,-642000,-658000,-658000,-642000,46000,210000,360000,52217
1#SA1_7_1_12,10,12,7,1,362420,-705500,-721500,-721500,-705500,46000,210000,360000,52217
1#SA1_7_1_13,10,12,7,1,362540,-769000,-785000,-785000,-769000,46000,210000,360000,52217
1#SA1_7_1_14,10,12,7,1,362660,-832500,-848500,-848500,-832500,46000,210000,360000,52217
1#SA1_7_1_15,10,12,7,1,362780,-896000,-912000,-912000,-896000,46000,210000,360000,52217
1#SA1_7_1_16,10,12,7,1,362900,-959500,-975500,-975500,-959500,46000,210000,360000,52217
1#SA1_7_1_17,10,12,7,1,363020,-1023000,-1039000,-1039000,-1023000,46000,210000,360000,52217
1#SA1_7_2_1,10,8,7,1,363020,-1094000,-1106000,-1106000,-1094000,46000,0,110000,52217
1#SA1_7_2_2,10,8,7,1,363020,-1120000,-1132000,-1132000,-1120000,46000,0,110000,52217
1#SA1_7_2_3,10,8,7,1,363020,-1148000,-1160000,-1160000,-1148000,46000,0,110000,52217
1#SA1_7_2_4,10,8,7,1,363020,-1177000,-1189000,-1189000,-1177000,46000,0,110000,52217
1#SA1_7_2_5,10,8,7,1,363020,-1206000,-1218000,-1218000,-1206000,46000,0,110000,52217
1#SA1_7_2_6,10,8,7,1,363020,-1235100,-1247100,-1247100,-1235100,46000,0,110000,52217
1#SA1_7_2_7,10,8,7,1,363020,-1264200,-1276200,-1276200,-1264200,46000,0,110000,52217
1#SA1_7_2_8,10,8,7,1,363020,-1293300,-1305300,-1305300,-1293300,46000,0,110000,52217
1#SA1_7_2_9,10,8,7,1,363020,-1322400,-1334400,-1334400,-1322400,46000,0,110000,52217
1#SA1_7_2_10,10,8,7,1,363020,-1351500,-1363500,-1363500,-1351500,46000,0,110000,52217
1#SA1_7_2_11,10,8,7,1,363020,-1380600,-1392600,-1392600,-1380600,46000,0,110000,52217
1#SA1_7_2_12,10,8,7,1,363020,-1409700,-1421700,-1421700,-1409700,46000,0,110000,52217
1#SA1_7_2_13,10,8,7,1,363020,-1438800,-1450800,-1450800,-1438800,46000,0,110000,52217
1#SA1_7_2_14,10,8,7,1,363020,-1467900,-1479900,-1479900,-1467900,46000,0,110000,52217
1#SA1_7_2_15,10,8,7,1,363020,-1497000,-1509000,-1509000,-1497000,46000,0,110000,52217
1#SA1_7_2_16,10,8,7,1,363020,-1526100,-1538100,-1538100,-1526100,46000,0,110000,52217
1#SA1_7_2_17,10,8,7,1,363020,-1555200,-1567200,-1567200,-1555200,46000,0,110000,52217
1#SA1_7_2_18,10,8,7,1,363020,-1584300,-1596300,-1596300,-1584300,46000,0,110000,52217
1#SA1_7_2_19,10,8,7,1,363020,-1613400,-1625400,-1625400,-1613400,46000,0,110000,52217
1#SA1_7_2_20,10,8,7,1,363020,-1642500,-1654500,-1654500,-1642500,46000,0,110000,52217
1#SA1_7_2_21,10,8,7,1,363020,-1671600,-1683600,-1683600,-1671600,46000,0,110000,52217
1#SA1_7_2_22,10,8,7,1,363020,-1700700,-1712700,-1712700,-1700700,46000,0,110000,52217
1#SA1_7_2_23,10,8,7,1,363020,-1729800,-1741800,-1741800,-1729800,46000,0,110000,52217
1#SA1_7_2_24,10,8,7,1,363020,-1758900,-1770900,-1770900,-1758900,46000,0,110000,52217
1#SA1_7_2_25,10,8,7,1,363020,-1788000,-1800000,-1800000,-1788000,46000,0,110000,52217
1#SA1_7_2_26,10,8,7,1,363020,-1817100,-1829100,-1829100,-1817100,46000,0,110000,52217
1#SA1_7_2_27,10,8,7,1,363020,-1846200,-1858200,-1858200,-1846200,46000,0,110000,52217
1#SA1_7_2_28,10,8,7,1,363020,-1875300,-1887300,-1887300,-1875300,46000,0,110000,52217
1#SA1_7_2_29,10,8,7,1,363020,-1904400,-1916400,-1916400,-1904400,46000,0,110000,52217
1#SA1_7_2_30,10,8,7,1,363020,-1933500,-1945500,-1945500,-1933500,46000,0,110000,52217
1#SA1_7_2_31,10,8,7,1,363020,-1962600,-1974600,-1974600,-1962600,46000,0,110000,52217
1#SA1_7_2_32,10,8,7,1,363020,-1991700,-2003700,-2003700,-1991700,46000,0,110000,52217
1#SA1_7_2_33,10,8,7,1,363220,-2020800,-2032800,-2032800,-2020800,46000,0,110000,52217
1#SA1_7_2_34,10,8,7,1,363220,-2049900,-2061900,-2061900,-2049900,46000,0,110000,52217
1#SA1_7_2_35,10,8,7,1,363220,-2079000,-2091000,-2091000,-2079000,46000,0,110000,52217
1#SA1_7_2_36,10,8,7,1,363220,-2108100,-2120100,-2120100,-2108100,46000,0,110000,52217
1#SA1_7_2_37,10,8,7,1,363220,-2137200,-2149200,-2149200,-2137200,46000,0,110000,52217
1#SA1_8_1_1,10,12,7,1,1000,-8000,-24000,-24000,-8000,46000,210000,360000,52217
1#SA1_8_1_2,10,12,7,1,1000,-71500,-87500,-87500,-71500,46000,210000,360000,52217
1#SA1_8_1_3,10,12,7,1,1000,-135000,-151000,-151000,-135000,46000,210000,360000,52217
1#SA1_8_1_4,10,12,7,1,1000,-198500,-214500,-214500,-198500,46000,210000,360000,52217
1#SA1_8_1_5,10,12,7,1,1000,-262000,-278000,-278000,-262000,46000,210000,360000,52217
1#SA1_8_1_6,10,12,7,1,1000,-325500,-341500,-341500,-325500,46000,210000,360000,52217
1#SA1_8_1_7,10,12,7,1,1000,-389000,-405000,-405000,-389000,46000,210000,360000,52217
1#SA1_8_1_8,10,12,7,1,1000,-452500,-468500,-468500,-452500,46000,210000,360000,52217
1#SA1_8_1_9,10,12,7,1,1000,-516000,-532000,-532000,-516000,46000,210000,360000,52217
1#SA1_8_1_10,10,12,7,1,1000,-579500,-595500,-595500,-579500,46000,210000,360000,52217
1#SA1_8_1_11,10,12,7,1,1000,-643000,-659000,-659000,-643000,46000,210000,360000,52217
1#SA1_8_1_12,10,12,7,1,1000,-706500,-722500,-722500,-706500,46000,210000,360000,52217
1#SA1_8_1_13,10,12,7,1,1000,-770000,-786000,-786000,-770000,46000,210000,360000,52217
1#SA1_8_1_14,10,12,7,1,1000,-833500,-849500,-849500,-833500,46000,210000,360000,52217
1#SA1_8_1_15,10,12,7,1,1000,-897000,-913000,-913000,-897000,46000,210000,360000,52217
1#SA1_8_1_16,10,12,7,1,1000,-960500,-976500,-976500,-960500,46000,210000,360000,52217
1#SA1_8_1_17,10,12,7,1,1000,-1024000,-1040000,-1040000,-1024000,46000,210000,360000,52217
1#SA1_8_2_1,10,8,7,1,1000,-1094000,-1106000,-1106000,-1094000,46000,0,110000,52217
1#SA1_8_2_2,10,8,7,1,1000,-1120000,-1132000,-1132000,-1120000,46000,0,110000,52217
1#SA1_8_2_3,10,8,7,1,1000,-1148000,-1160000,-1160000,-1148000,46000,0,110000,52217
1#SA1_8_2_4,10,8,7,1,1000,-1177000,-1189000,-1189000,-1177000,46000,0,110000,52217
1#SA1_8_2_5,10,8,7,1,1000,-1206000,-1218000,-1218000,-1206000,46000,0,110000,52217
1#SA1_8_2_6,10,8,7,1,1000,-1235100,-1247100,-1247100,-1235100,46000,0,110000,52217
1#SA1_8_2_7,10,8,7,1,1000,-1264200,-1276200,-1276200,-1264200,46000,0,110000,52217
1#SA1_8_2_8,10,8,7,1,1000,-1293300,-1305300,-1305300,-1293300,46000,0,110000,52217
1#SA1_8_2_9,10,8,7,1,1000,-1322400,-1334400,-1334400,-1322400,46000,0,110000,52217
1#SA1_8_2_10,10,8,7,1,1000,-1351500,-1363500,-1363500,-1351500,46000,0,110000,52217
1#SA1_8_2_11,10,8,7,1,1000,-1380600,-1392600,-1392600,-1380600,46000,0,110000,52217
1#SA1_8_2_12,10,8,7,1,1000,-1409700,-1421700,-1421700,-1409700,46000,0,110000,52217
1#SA1_8_2_13,10,8,7,1,1000,-1438800,-1450800,-1450800,-1438800,46000,0,110000,52217
1#SA1_8_2_14,10,8,7,1,1000,-1467900,-1479900,-1479900,-1467900,46000,0,110000,52217
1#SA1_8_2_15,10,8,7,1,1000,-1497000,-1509000,-1509000,-1497000,46000,0,110000,52217
1#SA1_8_2_16,10,8,7,1,1000,-1526100,-1538100,-1538100,-1526100,46000,0,110000,52217
1#SA1_8_2_17,10,8,7,1,1000,-1555200,-1567200,-1567200,-1555200,46000,0,110000,52217
1#SA1_8_2_18,10,8,7,1,1000,-1584300,-1596300,-1596300,-1584300,46000,0,110000,52217
1#SA1_8_2_19,10,8,7,1,1000,-1613400,-1625400,-1625400,-1613400,46000,0,110000,52217
1#SA1_8_2_20,10,8,7,1,1000,-1642500,-1654500,-1654500,-1642500,46000,0,110000,52217
1#SA1_8_2_21,10,8,7,1,1000,-1671600,-1683600,-1683600,-1671600,46000,0,110000,52217
1#SA1_8_2_22,10,8,7,1,1000,-1700700,-1712700,-1712700,-1700700,46000,0,110000,52217
1#SA1_8_2_23,10,8,7,1,1000,-1729800,-1741800,-1741800,-1729800,46000,0,110000,52217
1#SA1_8_2_24,10,8,7,1,1000,-1758900,-1770900,-1770900,-1758900,46000,0,110000,52217
1#SA1_8_2_25,10,8,7,1,1000,-1788000,-1800000,-1800000,-1788000,46000,0,110000,52217
1#SA1_8_2_26,10,8,7,1,1000,-1817100,-1829100,-1829100,-1817100,46000,0,110000,52217
1#SA1_8_2_27,10,8,7,1,1000,-1846200,-1858200,-1858200,-1846200,46000,0,110000,52217
1#SA1_8_2_28,10,8,7,1,1000,-1875300,-1887300,-1887300,-1875300,46000,0,110000,52217
1#SA1_8_2_29,10,8,7,1,1000,-1904400,-1916400,-1916400,-1904400,46000,0,110000,52217
1#SA1_8_2_30,10,8,7,1,1000,-1933500,-1945500,-1945500,-1933500,46000,0,110000,52217
1#SA1_8_2_31,10,8,7,1,1000,-1962600,-1974600,-1974600,-1962600,46000,0,110000,52217
1#SA1_8_2_32,10,8,7,1,1000,-1991700,-2003700,-2003700,-1991700,46000,0,110000,52217
1#SA1_8_2_33,10,8,7,1,1000,-2020800,-2032800,-2032800,-2020800,46000,0,110000,52217
1#SA1_8_2_34,10,8,7,1,1000,-2049900,-2061900,-2061900,-2049900,46000,0,110000,52217
1#SA1_8_2_35,10,8,7,1,1000,-2079000,-2091000,-2091000,-2079000,46000,0,110000,52217
1#SA1_8_2_36,10,8,7,1,1000,-2108100,-2120100,-2120100,-2108100,46000,0,110000,52217
1#SA1_8_2_37,10,8,7,1,1000,-2137200,-2149200,-2149200,-2137200,46000,0,110000,52217
......@@ -71,7 +71,7 @@ namespace OnlineStore.DeviceLibrary
if (File.Exists(positionConfigFile))
{
LogUtil.info(LOGGER, "加载位置文件:" + positionConfigFile);
CSVPositionReader<KTKSAStorePostion>.ReloadCSVFile(positionConfigFile);
CSVPositionReader<ACStorePosition>.ReloadCSVFile(positionConfigFile);
}
AC_SA_BoxBean storeBean = new AC_SA_BoxBean((AC_SA_Config)storeConfig);
storeBean.CID = CID;
......
......@@ -60,9 +60,9 @@ namespace OnlineStore.DeviceLibrary
moveAxisList = new List<ConfigMoveAxis>();
MoveAxisConfig();
List<KTKSAStorePostion> positionList = CSVPositionReader<KTKSAStorePostion>.getPositionList();
List<ACStorePosition> positionList = CSVPositionReader<ACStorePosition>.getPositionList();
PositionNumList = new List<string>();
foreach (KTKSAStorePostion position in positionList)
foreach (ACStorePosition position in positionList)
{
if (position.StoreId.Equals(StoreID))
{
......@@ -84,12 +84,12 @@ namespace OnlineStore.DeviceLibrary
Thread.Sleep(300);
//默认三个灯都亮
KNDIOMove(Store_IO_Type.Alarm_HddLed, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.AutoRun_HddLed, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.RunSign_HddLed, IO_VALUE.HIGH);
KNDIOMove(IO_Type.Alarm_HddLed, IO_VALUE.HIGH);
KNDIOMove(IO_Type.AutoRun_HddLed, IO_VALUE.HIGH);
KNDIOMove(IO_Type.RunSign_HddLed, IO_VALUE.HIGH);
}
private void CheckPositionLimit(KTKSAStorePostion position)
private void CheckPositionLimit(ACStorePosition position)
{
try
{
......@@ -219,8 +219,8 @@ namespace OnlineStore.DeviceLibrary
alarmType = StoreAlarmType.None;
//急停按钮和气压检测需要一起判断
IO_VALUE suddenBtn = KNDIOValue(Store_IO_Type.SuddenStop_BTN);
IO_VALUE airCheck = KNDIOValue(Store_IO_Type.Airpressure_Check);
IO_VALUE suddenBtn = KNDIOValue(IO_Type.SuddenStop_BTN);
IO_VALUE airCheck = KNDIOValue(IO_Type.Airpressure_Check);
if (suddenBtn == IO_VALUE.HIGH && airCheck == IO_VALUE.HIGH)
{
......@@ -266,9 +266,9 @@ namespace OnlineStore.DeviceLibrary
WarnMsg = "";
CurrInOutACount = 0;
CurrInOutCount = 0;
KNDIOMove(Store_IO_Type.Alarm_HddLed, IO_VALUE.LOW);
KNDIOMove(Store_IO_Type.AutoRun_HddLed, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.RunSign_HddLed, IO_VALUE.LOW);
KNDIOMove(IO_Type.Alarm_HddLed, IO_VALUE.LOW);
KNDIOMove(IO_Type.AutoRun_HddLed, IO_VALUE.HIGH);
KNDIOMove(IO_Type.RunSign_HddLed, IO_VALUE.LOW);
storeRunStatus = StoreRunStatus.HomeMoving;
StoreMove.NewMove(StoreMoveType.ReturnHome);
......@@ -301,8 +301,8 @@ namespace OnlineStore.DeviceLibrary
LogUtil.info(LOGGER, StoreName + "到待机状态,进出轴到P1,判断叉子没有料盘");
ACAxisMove(Config.InOut_Axis, Config.InOutAxis_P1_Position, Config.InOutAxis_P1_Speed, Config.InOut_Axis.StartSpeed);
//判断叉子没有料盘
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.TrayCheck_3, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.TrayCheck_4, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.TrayCheck_3, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.TrayCheck_4, IO_VALUE.LOW));
}
public override void Reset()
{
......@@ -317,11 +317,11 @@ namespace OnlineStore.DeviceLibrary
CurrInOutCount = 0;
CurrInOutACount = 0;
KNDIOMove(Store_IO_Type.Alarm_HddLed, IO_VALUE.LOW);
KNDIOMove(IO_Type.Alarm_HddLed, IO_VALUE.LOW);
Thread.Sleep(100);
KNDIOMove(Store_IO_Type.AutoRun_HddLed, IO_VALUE.HIGH);
KNDIOMove(IO_Type.AutoRun_HddLed, IO_VALUE.HIGH);
Thread.Sleep(100);
KNDIOMove(Store_IO_Type.RunSign_HddLed, IO_VALUE.LOW);
KNDIOMove(IO_Type.RunSign_HddLed, IO_VALUE.LOW);
Thread.Sleep(100);
//复位之前先停止运行
if (isNeedClearAuto)
......@@ -361,10 +361,10 @@ namespace OnlineStore.DeviceLibrary
LogUtil.info(LOGGER, StoreName + "开始重置:先定位气缸下降");
// 重置和回原点要等轴3进出轴ORG亮了以后才能返回其他轴
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_LocationCylinderBack);
KNDIOMove(Store_IO_Type.LocationCylinder_Down, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.LocationCylinder_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Up, IO_VALUE.LOW));
KNDIOMove(IO_Type.LocationCylinder_Down, IO_VALUE.HIGH);
KNDIOMove(IO_Type.LocationCylinder_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LocationCylinder_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LocationCylinder_Up, IO_VALUE.LOW));
}
}
......@@ -401,13 +401,13 @@ namespace OnlineStore.DeviceLibrary
AxisCountClear(Config.InOut_Axis);
ACAxisMove(Config.InOut_Axis, Config.InOutAxis_P1_Position, Config.InOutAxis_P1_Speed, Config.InOut_Axis.StartSpeed);
//判断叉子没有料盘
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.TrayCheck_3, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.TrayCheck_4, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.TrayCheck_3, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.TrayCheck_4, IO_VALUE.LOW));
//关闭舱门
KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Up, IO_VALUE.LOW));
KNDIOMove(IO_Type.Door_Down, IO_VALUE.HIGH);
KNDIOMove(IO_Type.Door_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Up, IO_VALUE.LOW));
break;
case StoreMoveStep.BOX_H_InOutToP1:
//如果此时轴三还在报警,需要提示错误并等待
......@@ -457,10 +457,10 @@ namespace OnlineStore.DeviceLibrary
ShuoKeControls.HomeMove(Config.CompressAxis_Slv, 0);
StoreMove.WaitList.Add(WaitResultInfo.WaitShuoKe(Config.CompressAxis_Slv, 0, true));
//关闭舱门
KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Up, IO_VALUE.LOW));
KNDIOMove(IO_Type.Door_Down, IO_VALUE.HIGH);
KNDIOMove(IO_Type.Door_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Up, IO_VALUE.LOW));
break;
case StoreMoveStep.BOX_M_H_TOP1_CompressHome:
StoreMove.NextMoveStep(StoreMoveStep.BOX_M_H_TOP1_OtherAxisToP1);
......@@ -517,13 +517,13 @@ namespace OnlineStore.DeviceLibrary
AxisCountClear(Config.InOut_Axis);
ACAxisMove(Config.InOut_Axis, Config.InOutAxis_P1_Position, Config.InOutAxis_P1_Speed, Config.InOut_Axis.StartSpeed);
//判断叉子没有料盘
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.TrayCheck_3, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.TrayCheck_4, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.TrayCheck_3, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.TrayCheck_4, IO_VALUE.LOW));
//关闭舱门
KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Up, IO_VALUE.LOW));
KNDIOMove(IO_Type.Door_Down, IO_VALUE.HIGH);
KNDIOMove(IO_Type.Door_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Up, IO_VALUE.LOW));
break;
case StoreMoveStep.BOX_H_InOutToP1:
......@@ -574,7 +574,7 @@ namespace OnlineStore.DeviceLibrary
public void RunAxis()
{
KNDIOMove(Store_IO_Type.Run_Sign, IO_VALUE.HIGH);
KNDIOMove(IO_Type.Run_Sign, IO_VALUE.HIGH);
Thread.Sleep(100);
//打开所有轴
foreach (ConfigMoveAxis moveAxis in moveAxisList)
......@@ -591,7 +591,7 @@ namespace OnlineStore.DeviceLibrary
ACServerManager.ServoOn(portName, slvAddr);
}
KNDIOMove(Store_IO_Type.Axis_Brake, IO_VALUE.HIGH);
KNDIOMove(IO_Type.Axis_Brake, IO_VALUE.HIGH);
}
/// <summary>
/// 打开所有轴
......@@ -634,7 +634,7 @@ namespace OnlineStore.DeviceLibrary
private void CloseAllAxis()
{
KNDIOMove(Store_IO_Type.Axis_Brake, IO_VALUE.LOW);
KNDIOMove(IO_Type.Axis_Brake, IO_VALUE.LOW);
foreach (ConfigMoveAxis axis in moveAxisList)
{
ACServerManager.ServoOff(axis.DeviceName, axis.GetAxisValue());
......@@ -642,7 +642,7 @@ namespace OnlineStore.DeviceLibrary
ACServerManager.ColsePort(axis.DeviceName);
}
Thread.Sleep(100);
KNDIOMove(Store_IO_Type.Run_Sign, IO_VALUE.LOW);
KNDIOMove(IO_Type.Run_Sign, IO_VALUE.LOW);
}
private int GetAlarmCodeByAxis(ConfigMoveAxis axis)
......@@ -758,33 +758,33 @@ namespace OnlineStore.DeviceLibrary
if (IsNotScanCode || storeRunStatus.Equals(StoreRunStatus.HomeMoving) || storeRunStatus.Equals(StoreRunStatus.Reset))
{
//开机执行中时黄灯闪烁
if (KNDIOValue(Store_IO_Type.RunSign_HddLed).Equals(IO_VALUE.HIGH))
if (KNDIOValue(IO_Type.RunSign_HddLed).Equals(IO_VALUE.HIGH))
{
KNDIOMove(Store_IO_Type.RunSign_HddLed, IO_VALUE.LOW);
KNDIOMove(IO_Type.RunSign_HddLed, IO_VALUE.LOW);
}
else
{
KNDIOMove(Store_IO_Type.RunSign_HddLed, IO_VALUE.HIGH);
KNDIOMove(IO_Type.RunSign_HddLed, IO_VALUE.HIGH);
}
}
else
{
if (KNDIOValue(Store_IO_Type.RunSign_HddLed).Equals( IO_VALUE.HIGH))
if (KNDIOValue(IO_Type.RunSign_HddLed).Equals( IO_VALUE.HIGH))
{
KNDIOMove(Store_IO_Type.RunSign_HddLed, IO_VALUE.LOW);
KNDIOMove(IO_Type.RunSign_HddLed, IO_VALUE.LOW);
}
}
//路灯亮
//出入库执行中,绿灯闪烁
if ((StoreMove.MoveType.Equals(StoreMoveType.InStore) || StoreMove.MoveType.Equals(StoreMoveType.OutStore)) && KNDIOValue(Store_IO_Type.AutoRun_HddLed).Equals(IO_VALUE.HIGH))
if ((StoreMove.MoveType.Equals(StoreMoveType.InStore) || StoreMove.MoveType.Equals(StoreMoveType.OutStore)) && KNDIOValue(IO_Type.AutoRun_HddLed).Equals(IO_VALUE.HIGH))
{
KNDIOMove(Store_IO_Type.AutoRun_HddLed, IO_VALUE.LOW);
KNDIOMove(IO_Type.AutoRun_HddLed, IO_VALUE.LOW);
}
else
{
if (KNDIOValue(Store_IO_Type.AutoRun_HddLed).Equals(IO_VALUE.LOW))
if (KNDIOValue(IO_Type.AutoRun_HddLed).Equals(IO_VALUE.LOW))
{
KNDIOMove(Store_IO_Type.AutoRun_HddLed, IO_VALUE.HIGH);
KNDIOMove(IO_Type.AutoRun_HddLed, IO_VALUE.HIGH);
}
}
bool isNeedAlarmLed = false;
......@@ -796,16 +796,16 @@ namespace OnlineStore.DeviceLibrary
if (isNeedAlarmLed)
{
if (KNDIOValue(Store_IO_Type.Alarm_HddLed).Equals( IO_VALUE.LOW))
if (KNDIOValue(IO_Type.Alarm_HddLed).Equals( IO_VALUE.LOW))
{
KNDIOMove(Store_IO_Type.Alarm_HddLed, IO_VALUE.HIGH);
KNDIOMove(IO_Type.Alarm_HddLed, IO_VALUE.HIGH);
}
}
else
{
if (KNDIOValue(Store_IO_Type.Alarm_HddLed).Equals( IO_VALUE.HIGH))
if (KNDIOValue(IO_Type.Alarm_HddLed).Equals( IO_VALUE.HIGH))
{
KNDIOMove(Store_IO_Type.Alarm_HddLed, IO_VALUE.LOW);
KNDIOMove(IO_Type.Alarm_HddLed, IO_VALUE.LOW);
}
}
}
......@@ -822,7 +822,7 @@ namespace OnlineStore.DeviceLibrary
if (storeRunStatus.Equals(StoreRunStatus.Wait))
{
//取新的Io状态
IO_VALUE autoSingle = KNDIOValue(Store_IO_Type.AutoRun_Single);
IO_VALUE autoSingle = KNDIOValue(IO_Type.AutoRun_Single);
if (ConfigAppSettings.GetIntValue(Setting_Init.App_AutoRun) == 1)
{
if (autoSingle.Equals(IO_VALUE.HIGH) && lastAutoRun.Equals(IO_VALUE.LOW))
......@@ -849,8 +849,8 @@ namespace OnlineStore.DeviceLibrary
else if (storeRunStatus >= StoreRunStatus.HomeMoving)
{
//取新的Io状态
IO_VALUE suddenBtn = KNDIOValue(Store_IO_Type.SuddenStop_BTN);
IO_VALUE resetBtn = KNDIOValue(Store_IO_Type.Reset_BTN);
IO_VALUE suddenBtn = KNDIOValue(IO_Type.SuddenStop_BTN);
IO_VALUE resetBtn = KNDIOValue(IO_Type.Reset_BTN);
//急停按钮
if (suddenBtn.Equals(IO_VALUE.LOW))
......@@ -889,7 +889,7 @@ namespace OnlineStore.DeviceLibrary
}
}
}
IO_VALUE airCheck = KNDIOValue(Store_IO_Type.Airpressure_Check);
IO_VALUE airCheck = KNDIOValue(IO_Type.Airpressure_Check);
//气压检测按钮灭三秒以上才算关闭
if (airCheck == IO_VALUE.LOW && (!isInSuddenDown))
{
......@@ -942,8 +942,8 @@ namespace OnlineStore.DeviceLibrary
{ //判断是否需要出入库
if (StoreMove.MoveType.Equals(StoreMoveType.None))
{
IO_VALUE checkIO = KNDIOValue(Store_IO_Type.TrayCheck_1);
IO_VALUE checkIO2 = KNDIOValue(Store_IO_Type.TrayCheck_2);
IO_VALUE checkIO = KNDIOValue(IO_Type.TrayCheck_1);
IO_VALUE checkIO2 = KNDIOValue(IO_Type.TrayCheck_2);
//判断料门口是否有料
if ((checkIO.Equals(IO_VALUE.HIGH)) && checkIO2.Equals(IO_VALUE.HIGH))
{
......@@ -1151,12 +1151,12 @@ namespace OnlineStore.DeviceLibrary
else
{
//定位气缸停止
KNDIOMove(Store_IO_Type.LocationCylinder_Down, IO_VALUE.LOW);
KNDIOMove(Store_IO_Type.LocationCylinder_Up, IO_VALUE.LOW);
KNDIOMove(IO_Type.LocationCylinder_Down, IO_VALUE.LOW);
KNDIOMove(IO_Type.LocationCylinder_Up, IO_VALUE.LOW);
}
LogUtil.info(LOGGER, StoreName + "StopMove");
KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.LOW);
KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.LOW);
KNDIOMove(IO_Type.Door_Down, IO_VALUE.LOW);
KNDIOMove(IO_Type.Door_Up, IO_VALUE.LOW);
Thread.Sleep(100);
}
......@@ -1247,7 +1247,7 @@ namespace OnlineStore.DeviceLibrary
int storeId = int.Parse(posArray[0]);
//根据发送的posId获取位置列表
KTKSAStorePostion position = CSVPositionReader<KTKSAStorePostion>.GetPositon(posId);
ACStorePosition position = CSVPositionReader<ACStorePosition>.GetPositon(posId);
if (position == null)
{ //出入库没有找到服务器发送的库位,需要打印日志方便查询原因
WarnMsg = "入库未找到库位:二维码【" + message + "】库位【" + posId + "】 ";
......@@ -1423,7 +1423,7 @@ namespace OnlineStore.DeviceLibrary
int storeId = int.Parse(posArray[0]);
//根据发送的posId获取位置列表
KTKSAStorePostion position = CSVPositionReader<KTKSAStorePostion>.GetPositon(posId);
ACStorePosition position = CSVPositionReader<ACStorePosition>.GetPositon(posId);
if (position == null)
{
//出入库没有找到服务器发送的库位,需要打印日志方便查询原因
......@@ -1460,6 +1460,7 @@ namespace OnlineStore.DeviceLibrary
{
ConfigIO configIo = Config.StoreDOList[ioType];
KNDManager.WriteSingleDO(configIo.DeviceName, configIo.SlaveID, configIo.GetIOAddr(), ioValue);
Thread.Sleep(60);
}
else
{
......
......@@ -44,7 +44,7 @@ namespace OnlineStore.DeviceLibrary
if (param.MoveP == null)
{
LineMoveP p = new LineMoveP();
KTKSAStorePostion position = param.GetKTKSAPosition();
ACStorePosition position = param.GetACPosition();
if (position == null)
{
LogUtil.error(LOGGER, StoreName + "出入库时发现param中取到的Position=null,没有库位不能执行出入库");
......@@ -232,8 +232,8 @@ namespace OnlineStore.DeviceLibrary
//料盘检测
InStoreLog(" 入库【" + posId + "】处理:(SI_00_TrayCheck 检测料盘信号");
StoreMove.NextMoveStep(StoreMoveStep.SI_00_TrayCheck);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.TrayCheck_1, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.TrayCheck_2, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.TrayCheck_1, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.TrayCheck_2, IO_VALUE.HIGH));
}
else
{
......@@ -243,10 +243,10 @@ namespace OnlineStore.DeviceLibrary
StoreMove.NextMoveStep(StoreMoveStep.SI_02_InOutAxisHome);
//打开门 ,门上升
KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.LOW);
KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.HIGH);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Down, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Up, IO_VALUE.HIGH));
KNDIOMove(IO_Type.Door_Down, IO_VALUE.LOW);
KNDIOMove(IO_Type.Door_Up, IO_VALUE.HIGH);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Down, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Up, IO_VALUE.HIGH));
//ACAxisMove(Config.InOut_Axis, param.MoveP.InOut_P1, Config.InOutAxis_P1_Speed, Config.InOut_Axis.StartSpeed);
InOutBackToP1(param.MoveP.InOut_P1);
}
......@@ -255,10 +255,10 @@ namespace OnlineStore.DeviceLibrary
InStoreLog(" 入库处理:(SI_01_LocationCylinderDown 定位气缸下降");
StoreMove.NextMoveStep(StoreMoveStep.SI_01_LocationCylinderDown);
KNDIOMove(Store_IO_Type.LocationCylinder_Up, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.LocationCylinder_Down, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Up, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Down, IO_VALUE.LOW));
KNDIOMove(IO_Type.LocationCylinder_Up, IO_VALUE.HIGH);
KNDIOMove(IO_Type.LocationCylinder_Down, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LocationCylinder_Up, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LocationCylinder_Down, IO_VALUE.LOW));
}
}
}
......@@ -293,10 +293,10 @@ namespace OnlineStore.DeviceLibrary
StoreMove.NextMoveStep(StoreMoveStep.SI_02_InOutAxisHome);
//打开门 ,门上升
KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.LOW);
KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.HIGH);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Down, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Up, IO_VALUE.HIGH));
KNDIOMove(IO_Type.Door_Down, IO_VALUE.LOW);
KNDIOMove(IO_Type.Door_Up, IO_VALUE.HIGH);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Down, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Up, IO_VALUE.HIGH));
//ACAxisMove(Config.InOut_Axis, moveP.InOut_P1, Config.InOutAxis_P1_Speed, Config.InOut_Axis.StartSpeed);
InOutBackToP1(moveP.InOut_P1);
}
......@@ -304,10 +304,10 @@ namespace OnlineStore.DeviceLibrary
{
InStoreLog(" 入库处理:(SI_01_LocationCylinderDown 定位气缸下降");
StoreMove.NextMoveStep(StoreMoveStep.SI_01_LocationCylinderDown);
KNDIOMove(Store_IO_Type.LocationCylinder_Down, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.LocationCylinder_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Up, IO_VALUE.LOW));
KNDIOMove(IO_Type.LocationCylinder_Down, IO_VALUE.HIGH);
KNDIOMove(IO_Type.LocationCylinder_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LocationCylinder_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LocationCylinder_Up, IO_VALUE.LOW));
}
}
......@@ -319,10 +319,10 @@ namespace OnlineStore.DeviceLibrary
InOutBackToP1(moveP.InOut_P1);
//打开门 ,门上升
KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.LOW);
KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.HIGH);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Down, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Up, IO_VALUE.HIGH));
KNDIOMove(IO_Type.Door_Down, IO_VALUE.LOW);
KNDIOMove(IO_Type.Door_Up, IO_VALUE.HIGH);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Down, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Up, IO_VALUE.HIGH));
//ACAxisMove(Config.InOut_Axis, moveP.InOut_P1, Config.InOutAxis_P1_Speed, Config.InOut_Axis.StartSpeed);
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_02_InOutAxisHome)
......@@ -389,17 +389,17 @@ namespace OnlineStore.DeviceLibrary
ACAxisMove(Config.Middle_Axis, moveP.Middle_P2, Config.MiddleAxis_P2_Speed, Config.Middle_Axis.StartSpeed);
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P3, Config.UpDownAxis_P3_Speed, Config.UpDown_Axis.StartSpeed);
//关闭舱门
KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.LOW);
KNDIOMove(IO_Type.Door_Down, IO_VALUE.HIGH);
KNDIOMove(IO_Type.Door_Up, IO_VALUE.LOW);
}
else
{
InStoreLog(" 入库处理:(SI_08_LocationCylinder_Up 定位气缸伸出 (有压紧轴的不需要此步骤)开始");
StoreMove.NextMoveStep(StoreMoveStep.SI_08_LocationCylinder_Up);
KNDIOMove(Store_IO_Type.LocationCylinder_Down, IO_VALUE.LOW);
KNDIOMove(Store_IO_Type.LocationCylinder_Up, IO_VALUE.HIGH);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Down, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Up, IO_VALUE.HIGH));
KNDIOMove(IO_Type.LocationCylinder_Down, IO_VALUE.LOW);
KNDIOMove(IO_Type.LocationCylinder_Up, IO_VALUE.HIGH);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LocationCylinder_Down, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LocationCylinder_Up, IO_VALUE.HIGH));
}
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_08_LocationCylinder_Up)
......@@ -409,8 +409,8 @@ namespace OnlineStore.DeviceLibrary
ACAxisMove(Config.Middle_Axis, moveP.Middle_P2, Config.MiddleAxis_P1_Speed, Config.Middle_Axis.StartSpeed);
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P3, Config.UpDownAxis_P3_Speed, Config.UpDown_Axis.StartSpeed);
//关闭舱门
KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.LOW);
KNDIOMove(IO_Type.Door_Down, IO_VALUE.HIGH);
KNDIOMove(IO_Type.Door_Up, IO_VALUE.LOW);
//StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Down, IO_VALUE.HIGH));
//StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Up, IO_VALUE.LOW));
}
......@@ -427,15 +427,15 @@ namespace OnlineStore.DeviceLibrary
InStoreLog(" 入库处理:(SI_10_LocationCylinder_Down 定位气缸退回 (有压紧轴的不需要此步骤) )开始");
StoreMove.NextMoveStep(StoreMoveStep.SI_10_LocationCylinder_Down);
KNDIOMove(Store_IO_Type.LocationCylinder_Down, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.LocationCylinder_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Up, IO_VALUE.LOW));
KNDIOMove(IO_Type.LocationCylinder_Down, IO_VALUE.HIGH);
KNDIOMove(IO_Type.LocationCylinder_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LocationCylinder_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LocationCylinder_Up, IO_VALUE.LOW));
}
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_10_LocationCylinder_Down)
{
KNDIOMove(Store_IO_Type.LocationCylinder_Down, IO_VALUE.LOW);
KNDIOMove(IO_Type.LocationCylinder_Down, IO_VALUE.LOW);
InStoreLog(" 入库处理:(SI_11_DeviceToBag 叉子进入库位中,轴3( 叉子) 至P3(库位取放料点))开始");
StoreMove.NextMoveStep(StoreMoveStep.SI_11_DeviceToBag);
ACAxisMove(Config.InOut_Axis, moveP.InOut_P3, Config.InOutAxis_P3_Speed, Config.InOut_Axis.StartSpeed);
......@@ -481,10 +481,10 @@ namespace OnlineStore.DeviceLibrary
ACAxisMove(Config.Middle_Axis, moveP.Middle_P1, Config.MiddleAxis_P1_Speed, Config.Middle_Axis.StartSpeed);
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P1, Config.UpDownAxis_P1_Speed, Config.UpDown_Axis.StartSpeed);
//关闭门
KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Up, IO_VALUE.LOW));
KNDIOMove(IO_Type.Door_Down, IO_VALUE.HIGH);
KNDIOMove(IO_Type.Door_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Up, IO_VALUE.LOW));
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_14_GoBack)
{
......@@ -533,19 +533,19 @@ namespace OnlineStore.DeviceLibrary
//ACAxisMove(Config.InOut_Axis, StoreMove.MoveParam.MoveP.InOut_P1, Config.InOutAxis_P1_Speed, Config.InOut_Axis.StartSpeed);
InOutBackToP1(StoreMove.MoveParam.MoveP.InOut_P1);
//打开舱门
KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Up, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Down, IO_VALUE.LOW));
KNDIOMove(IO_Type.Door_Up, IO_VALUE.HIGH);
KNDIOMove(IO_Type.Door_Down, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Up, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Down, IO_VALUE.LOW));
}
else
{
StoreMove.NextMoveStep(StoreMoveStep.SO_01_LocationCylinderDown);
OutStoreLog(" 出库处理:(SO_01_LocationCylinderDown 定位气缸下降");
KNDIOMove(Store_IO_Type.LocationCylinder_Down, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.LocationCylinder_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Up, IO_VALUE.LOW));
KNDIOMove(IO_Type.LocationCylinder_Down, IO_VALUE.HIGH);
KNDIOMove(IO_Type.LocationCylinder_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LocationCylinder_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LocationCylinder_Up, IO_VALUE.LOW));
//CylinderMove(StoreMove, Store_IO_Type.LocationCylinder_Up, Store_IO_Type.LocationCylinder_Down);
}
}
......@@ -626,20 +626,20 @@ namespace OnlineStore.DeviceLibrary
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P2, Config.UpDownAxis_P2_Speed, Config.UpDown_Axis.StartSpeed);
ACAxisMove(Config.Middle_Axis, moveP.Middle_P1, Config.MiddleAxis_P1_Speed, Config.Middle_Axis.StartSpeed);
//打开舱门
KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Up, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Down, IO_VALUE.LOW));
KNDIOMove(IO_Type.Door_Up, IO_VALUE.HIGH);
KNDIOMove(IO_Type.Door_Down, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Up, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Down, IO_VALUE.LOW));
}
else
{
StoreMove.NextMoveStep(StoreMoveStep.SO_07_LocationCylinder_Up);
OutStoreLog(" 出库处理: (SO_07_LocationCylinder_Up定位气缸伸出(有压紧轴的不需要此步骤),,定位气缸伸出 )开始");
//同时运动,电缸移动至入料口的上端位置 旋转电机2反转
KNDIOMove(Store_IO_Type.LocationCylinder_Down, IO_VALUE.LOW);
KNDIOMove(Store_IO_Type.LocationCylinder_Up, IO_VALUE.HIGH);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Down, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Up, IO_VALUE.HIGH));
KNDIOMove(IO_Type.LocationCylinder_Down, IO_VALUE.LOW);
KNDIOMove(IO_Type.LocationCylinder_Up, IO_VALUE.HIGH);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LocationCylinder_Down, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LocationCylinder_Up, IO_VALUE.HIGH));
}
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_07_LocationCylinder_Up)
......@@ -649,8 +649,8 @@ namespace OnlineStore.DeviceLibrary
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P2, Config.UpDownAxis_P2_Speed, Config.UpDown_Axis.StartSpeed);
ACAxisMove(Config.Middle_Axis, moveP.Middle_P1, Config.MiddleAxis_P1_Speed, Config.Middle_Axis.StartSpeed);
//此处需要等待box门口没有盘
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.TrayCheck_1, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.TrayCheck_2, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.TrayCheck_1, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.TrayCheck_2, IO_VALUE.LOW));
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_08_ToDoorPosition)
......@@ -665,10 +665,10 @@ namespace OnlineStore.DeviceLibrary
{
StoreMove.NextMoveStep(StoreMoveStep.SO_09_LocationCylinder_Down);
OutStoreLog(" 出库处理:(SO_09_LocationCylinder_Down定位气缸退回(有压紧轴的不需要此步骤),,定位气缸退回 )开始");
KNDIOMove(Store_IO_Type.LocationCylinder_Down, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.LocationCylinder_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Up, IO_VALUE.LOW));
KNDIOMove(IO_Type.LocationCylinder_Down, IO_VALUE.HIGH);
KNDIOMove(IO_Type.LocationCylinder_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LocationCylinder_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LocationCylinder_Up, IO_VALUE.LOW));
}
}
//此处需要等待移栽没有工作,才能把盘放入出料口
......@@ -702,10 +702,10 @@ namespace OnlineStore.DeviceLibrary
StoreMove.NextMoveStep(StoreMoveStep.SO_13_GoBack);
OutStoreLog(" 出库处理:(SO_13_GoBack升降轴返回,, 轴2至P1( 待机点))开始,关闭舱门!");
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P1, Config.UpDownAxis_P1_Speed, Config.UpDown_Axis.StartSpeed);
KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.LOW);
KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.HIGH);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Up, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Down, IO_VALUE.HIGH));
KNDIOMove(IO_Type.Door_Up, IO_VALUE.LOW);
KNDIOMove(IO_Type.Door_Down, IO_VALUE.HIGH);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Up, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Down, IO_VALUE.HIGH));
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_13_GoBack)
{
......
using HalconDotNet;
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace OnlineStore.DeviceLibrary
{
/// <summary>
/// 流水线自动料仓-Box类
/// </summary>
public partial class KTK_SA_BoxBean : KTK_Store
{ /// <summary>
/// 开始运行
/// </summary>
public static bool IsRun = false;
public string CID = "";
public KTK_SA_Config 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<ConfigMoveAxis, AxisAlarmInfo> AxisAlarmCodeMap = new Dictionary<ConfigMoveAxis, AxisAlarmInfo>();
/// <summary>
/// 湿度标准,超过后需要报警
/// </summary>
private float Max_Humidity = 0;
/// <summary>
/// 温度标准,超过后需要报警
/// </summary>
private float Max_Temperature = 0;
/// <summary>
/// 是否有压紧轴
/// </summary>
public bool IsHasCompress_Axis = true;
private System.Timers.Timer serverConnectTimer = new System.Timers.Timer();
private System.Timers.Timer ledTimer = new System.Timers.Timer();
public KTK_SA_BoxBean(KTK_SA_Config config)
{
Init();
serverConnectTimer = new System.Timers.Timer();
serverConnectTimer.Interval = 500;
serverConnectTimer.AutoReset = true;
serverConnectTimer.Enabled = false;
serverConnectTimer.Elapsed += server_connect_timer_Tick;
ledTimer.Interval = 500;
ledTimer.Enabled = false;
ledTimer.AutoReset = true;
ledTimer.Elapsed += ledTimer_Elapsed;
//添加调试
if (config.IsInDebug == 1)
{
IsDebug = true;
}
StoreName = ("料仓BOX_" + config.Id + " ").ToUpper();
this.StoreID = config.Id;
this.Config = config;
this.DIList = config.StoreDIList;
this.DOList = config.StoreDOList;
moveAxisList = new List<ConfigMoveAxis>();
MoveAxisConfig();
List<KTKSAStorePostion> positionList = CSVPositionReader<KTKSAStorePostion>.getPositionList();
PositionNumList = new List<string>();
foreach (KTKSAStorePostion position in positionList)
{
if (position.StoreId.Equals(StoreID))
{
CheckPositionLimit(position);
PositionNumList.Add(position.PositionNum);
}
}
//初始化摄像机配置
HDevelopExport.LoadConfig();
//初始化 //连接设备
KNDManager.ConnectionKND(Config.DIODeviceNameList);
//初始化板卡
DeviceControl.InitDevice(Config.SMCDeviceNameList, new List<string>());
timersTimer.Enabled = false;
int isAuto = ConfigAppSettings.GetIntValue(Setting_Init.App_AutoRun);
if (isAuto == 1)
{
timersTimer.Enabled = true;
}
Thread.Sleep(300);
//默认三个灯都亮
KNDIOMove(Store_IO_Type.Alarm_HddLed, IO_VALUE.LOW);
KNDIOMove(Store_IO_Type.AutoRun_HddLed, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.RunSign_HddLed, IO_VALUE.HIGH);
ThreadPool.SetMaxThreads(5, 5);
}
private void CheckPositionLimit(KTKSAStorePostion position)
{
try
{
if (Config.Middle_Axis.PositionIsHasLimit())
{
int mMin = Config.Middle_Axis.PositionMin;
int mMax = Config.Middle_Axis.PositionMax;
if (mMin > position.MiddleAxis_Position_P2 || mMax < position.MiddleAxis_Position_P2)
{
LogUtil.error(position.PositionNum + " MiddleAxis_Position_P2位置超出" + Config.Middle_Axis.Explain + "上下限(" + mMin + "-" + mMax + ")");
return;
}
}
if (Config.InOut_Axis.PositionIsHasLimit())
{
int iMin = Config.InOut_Axis.PositionMin;
int iMax = Config.InOut_Axis.PositionMax;
if (iMin > position.InOutAxis_DoorPosition_P2 || iMax < position.InOutAxis_DoorPosition_P2)
{
LogUtil.error(position.PositionNum + " InOutAxis_DoorPosition_P2位置超出" + Config.InOut_Axis.Explain + "上下限(" + iMin + "-" + iMax + ")");
return;
}
if (iMin > position.InOutAxis_Position_P3 || iMax < position.InOutAxis_Position_P3)
{
LogUtil.error(position.PositionNum + " InOutAxis_Position_P3位置超出" + Config.InOut_Axis.Explain + "上下限(" + iMin + "-" + iMax + ")");
return;
}
}
if (Config.UpDown_Axis.PositionIsHasLimit())
{
int uMin = Config.UpDown_Axis.PositionMin;
int uMax = Config.UpDown_Axis.PositionMax;
if (uMin > position.UpDownAxis_IHPosition_P3 || uMax < position.UpDownAxis_IHPosition_P3)
{
LogUtil.error(position.PositionNum + " UpDownAxis_IHPosition_P3位置超出" + Config.UpDown_Axis.Explain + "上下限(" + uMin + "-" + uMax + ")");
return;
}
if (uMin > position.UpDownAxis_ILPosition_P4 || uMax < position.UpDownAxis_ILPosition_P4)
{
LogUtil.error(position.PositionNum + " UpDownAxis_ILPosition_P4位置超出" + Config.UpDown_Axis.Explain + "上下限(" + uMin + "-" + uMax + ")");
return;
}
if (uMin > position.UpDownAxis_OHPosition_P5 || uMax < position.UpDownAxis_OHPosition_P5)
{
LogUtil.error(position.PositionNum + " UpDownAxis_OHPosition_P5位置超出" + Config.UpDown_Axis.Explain + "上下限(" + uMin + "-" + uMax + ")");
return;
}
if (uMin > position.UpDownAxis_OLPosition_P6 || uMax < position.UpDownAxis_OLPosition_P6)
{
LogUtil.error(position.PositionNum + " UpDownAxis_OLPosition_P6位置超出" + Config.UpDown_Axis.Explain + "上下限(" + uMin + "-" + uMax + ")");
return;
}
}
}
catch (Exception ex)
{
LogUtil.error("验证" + position.PositionNum + "的位置范围出错:" + ex.ToString());
}
}
/// <summary>
/// 配置速度,加减速时间
/// </summary>
public void MoveAxisConfig()
{
Config.Middle_Axis.StartSpeed = Config.MiddleAxis_StartSpeed;
Config.Middle_Axis.TargetSpeed = Config.MiddleAxis_TargetSpeed;
Config.Middle_Axis.AccelTime = Config.MiddleAxis_AccelTime;
Config.Middle_Axis.DecelTime = Config.MiddleAxis_DecelTime;
Config.InOut_Axis.StartSpeed = Config.InoutAxis_StartSpeed;
Config.InOut_Axis.TargetSpeed = Config.InoutAxis_TargetSpeed;
Config.InOut_Axis.DecelTime = Config.InoutAxis_DecelTime;
Config.InOut_Axis.AccelTime = Config.InoutAxis_AccelTime;
Config.UpDown_Axis.StartSpeed = Config.UpdownAxis_StartSpeed;
Config.UpDown_Axis.TargetSpeed = Config.UpdownAxis_TargetSpeed;
Config.UpDown_Axis.AccelTime = Config.UpdownAxis_AccelTime;
Config.UpDown_Axis.DecelTime = Config.UpdownAxis_DecelTime;
Config.Middle_Axis.CanErrorCountMin = Config.MiddleAxis_ErrorCountMin;
Config.InOut_Axis.CanErrorCountMin = Config.MiddleAxis_ErrorCountMin;
Config.UpDown_Axis.CanErrorCountMin = Config.MiddleAxis_ErrorCountMin;
Config.Middle_Axis.CanErrorCountMax = Config.MiddleAxis_ErrorCountMax;
Config.InOut_Axis.CanErrorCountMax = Config.MiddleAxis_ErrorCountMax;
Config.UpDown_Axis.CanErrorCountMax = Config.MiddleAxis_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;
moveAxisList = new List<ConfigMoveAxis>();
moveAxisList.Add(Config.UpDown_Axis);
moveAxisList.Add(Config.InOut_Axis);
moveAxisList.Add(Config.Middle_Axis);
this.AxisAlarmCodeMap = new Dictionary<ConfigMoveAxis, AxisAlarmInfo>();
this.AxisAlarmCodeMap.Add(Config.UpDown_Axis, new AxisAlarmInfo());
this.AxisAlarmCodeMap.Add(Config.InOut_Axis, new AxisAlarmInfo());
this.AxisAlarmCodeMap.Add(this.Config.Middle_Axis, new AxisAlarmInfo());
}
/// <summary>
/// 开始运行
/// </summary>
public override bool StartRun()
{
LogUtil.info(LOGGER, StoreName + "开始启动,启动时间:" + StartTime.ToString());
if (ShuoKeControls.isRun == false && (!SAStoreManager.OpenShuoKe(this)))
{
LogUtil.info(StoreName + "打开驱动器串口失败,启动失败!");
return false;
}
autoNext = false;
timersTimer.Enabled = false;
alarmType = StoreAlarmType.None;
//急停按钮和气压检测需要一起判断
IO_VALUE suddenBtn = KNDIOValue(Store_IO_Type.SuddenStop_BTN);
IO_VALUE airCheck = KNDIOValue(Store_IO_Type.Airpressure_Check);
if (suddenBtn == IO_VALUE.HIGH && airCheck == IO_VALUE.HIGH)
//if (suddenBtn == IO_VALUE.HIGH )
{
lastAirValue = airCheck;
lastAirCloseTime = DateTime.Now;
RunAxis();
//打开所有轴
if (!OpenAllAxis())
{
return false;
}
storeRunStatus = StoreRunStatus.HomeMoving;
//启动温湿度服务器
HumitureServer.StartTemperateServer(Config.TemperateServer_Port);
if (Config.Scanner_Type.Equals(1))
{
//TODO 启动扫码枪
}
else
{
//启动扫码枪
if (!isScannerRun)
{
StartScanner(Config.Scanner_Ip, Config.Scanner_Port);
}
}
ledTimer.Enabled = true;
ReturnHome();
StartTime = DateTime.Now;
timersTimer.Enabled = true;
serverConnectTimer.Enabled = true;
IsRun = true;
return true;
}
else
{
if (suddenBtn.Equals(IO_VALUE.LOW))
{
LogUtil.error(LOGGER, " (" + StoreName + ")启动出现错误:急停没开 !启动失败!");
}
else
{
LogUtil.error(LOGGER, " (" + StoreName + ")启动出现错误:没有气压信号 !启动失败!");
}
return false;
}
}
#region 原点返回和重置处理
private void ReturnHome()
{
WarnMsg = "";
CurrInOutACount = 0;
CurrInOutCount = 0;
KNDIOMove(Store_IO_Type.Alarm_HddLed, IO_VALUE.LOW);
KNDIOMove(Store_IO_Type.AutoRun_HddLed, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.RunSign_HddLed, IO_VALUE.LOW);
Thread.Sleep(100);
IsInBlowing = false;
KNDIOMove(Store_IO_Type.StartOrStopBlow, IO_VALUE.LOW);
storeRunStatus = StoreRunStatus.HomeMoving;
StoreMove.NewMove(StoreMoveType.ReturnHome);
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_InOutBack);
AxisHomeMove(Config.InOut_Axis);
LogUtil.info(LOGGER, StoreName + "开始原点返回,先把进出轴回原点");
//设置速度
SetShuokeSpeed();
StoreMove.WaitList.Add(WaitResultInfo.WaitTime(2000));
}
public void SetShuokeSpeed()
{
ShuoKeControls.SetSpeed(Config.CompressAxis_Slv, ShuoKeCMD.SetAddSpeed, Config.CompressAxis_AddSpeed);
Thread.Sleep(100);
ShuoKeControls.SetSpeed(Config.CompressAxis_Slv, ShuoKeCMD.SetDelSpeed, Config.CompressAxis_DelSpeed);
Thread.Sleep(100);
ShuoKeControls.SetSpeed(Config.CompressAxis_Slv, ShuoKeCMD.SetEndSpeed, Config.CompressAxis_EndSpeed);
Thread.Sleep(100);
ShuoKeControls.SetSpeed(Config.CompressAxis_Slv, ShuoKeCMD.SetHomeSpeed, Config.CompressAxis_HomeSpeed);
Thread.Sleep(100);
ShuoKeControls.SetSpeed(Config.CompressAxis_Slv, ShuoKeCMD.SetMaxSpeed, Config.CompressAxis_MaxSpeed);
Thread.Sleep(100);
ShuoKeControls.SetSpeed(Config.CompressAxis_Slv, ShuoKeCMD.SetStartSpeed, Config.CompressAxis_StartSpeed);
}
public void MoveToP1()
{
HDevelopExport.CloseAllCamera();
//压紧轴回原点,叉子回到P1,关闭门旋转轴和升降轴回到P1
StoreMove.NewMove(StoreMoveType.StoreReset);
StoreMove.NextMoveStep(StoreMoveStep.BOX_M_H_TOP1_InOutToP1);
LogUtil.info(LOGGER, StoreName + "到待机状态,进出轴到P1,判断叉子没有料盘");
AxisMove(Config.InOut_Axis, Config.InOutAxis_P1_Position, Config.InOutAxis_P1_Speed, Config.InOut_Axis.StartSpeed);
//判断叉子没有料盘
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.TrayCheck_3, IO_VALUE.LOW));
if (Config.StoreDIList.ContainsKey(Store_IO_Type.TrayCheck_4))
{
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.TrayCheck_4, IO_VALUE.LOW));
}
}
public override void Reset()
{
Reset(true);
}
/// <summary>
/// 重置
/// </summary>
/// <param name="isNeedClearAuto">是否需要清理自动出入库</param>
public void Reset(bool isNeedClearAuto)
{
CurrInOutCount = 0;
CurrInOutACount = 0;
KNDIOMove(Store_IO_Type.Alarm_HddLed, IO_VALUE.LOW);
Thread.Sleep(100);
KNDIOMove(Store_IO_Type.AutoRun_HddLed, IO_VALUE.HIGH);
Thread.Sleep(100);
KNDIOMove(Store_IO_Type.RunSign_HddLed, IO_VALUE.LOW);
Thread.Sleep(100);
//复位之前先停止运行
if (isNeedClearAuto)
{
autoNext = false;
}
KTKSMCManager.StopMove(Config.Middle_Axis.DeviceName, Config.Middle_Axis.GetAxisValue());
KTKSMCManager.StopMove(Config.UpDown_Axis.DeviceName, Config.UpDown_Axis.GetAxisValue());
KTKSMCManager.StopMove(Config.InOut_Axis.DeviceName, Config.InOut_Axis.GetAxisValue());
isInSuddenDown = false;
isNoAirCheck = false;
alarmType = StoreAlarmType.None;
storeRunStatus = StoreRunStatus.Reset;
storeStatus = StoreStatus.ResetMove;
StoreMove.NewMove(StoreMoveType.StoreReset);
WarnMsg = "";
RunAxis();
//打开四个轴
if (!OpenAllAxis())
{
LogUtil.info(LOGGER, StoreName + "重置时打开轴失败,需要再次复位,直接报警停止复位");
}
HDevelopExport.CloseAllCamera();
if (IsHasCompress_Axis)
{
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_InOutBack);
LogUtil.info(LOGGER, StoreName + "开始重置,先把进出轴回原点");
AxisHomeMove(Config.InOut_Axis);
//硕科压紧轴回原点
SetShuokeSpeed();
StoreMove.WaitList.Add(WaitResultInfo.WaitTime(2000));
}
else
{
LogUtil.info(LOGGER, StoreName + "开始重置:先定位气缸下降");
// 重置和回原点要等轴3进出轴ORG亮了以后才能返回其他轴
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_LocationCylinderBack);
KNDIOMove(Store_IO_Type.LocationCylinder_Down, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.LocationCylinder_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Up, IO_VALUE.LOW));
}
}
/// <summary>
/// 重置处理
/// </summary>
protected override void ResetProcess()
{
if (StoreMove.IsInWait)
{
CheckWait();
}
if (StoreMove.IsInWait)
{
return;
}
switch (StoreMove.MoveStep)
{
case StoreMoveStep.BOX_H_LocationCylinderBack:
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_InOutBack);
LogUtil.info(LOGGER, StoreName + "重置中,进出轴回原点");
//重置和回原点要等轴3进出轴ORG亮了以后才能返回其他轴
AxisHomeMove(Config.InOut_Axis);
break;
case StoreMoveStep.BOX_H_InOutBack:
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_InOutBackWait);
LogUtil.info(LOGGER, StoreName + "重置中 ,进出轴已经回原点 ,等待1000毫秒清空位置");
StoreMove.WaitList.Add(WaitResultInfo.WaitTime(1000));
break;
case StoreMoveStep.BOX_H_InOutBackWait:
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_InOutToP1);
LogUtil.info(LOGGER, StoreName + "重置中 ,进出轴已经回原点 , 并且进出轴退回P1点,关闭舱门,判断叉子没料盘");
//进出轴原点返回完成,将进出轴的位置设置=0
AxisCountClear(Config.InOut_Axis);
AxisMove(Config.InOut_Axis, Config.InOutAxis_P1_Position, Config.InOutAxis_P1_Speed, Config.InOut_Axis.StartSpeed);
//判断叉子没有料盘
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.TrayCheck_3, IO_VALUE.LOW));
if (Config.StoreDIList.ContainsKey(Store_IO_Type.TrayCheck_4))
{
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.TrayCheck_4, IO_VALUE.LOW));
}
//关闭舱门
KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Up, IO_VALUE.LOW));
break;
case StoreMoveStep.BOX_H_InOutToP1:
//如果此时轴三还在报警,需要提示错误并等待
if (KTKSMCManager.GetAlarmIO(Config.InOut_Axis.DeviceName, Config.InOut_Axis.GetAxisValue()).Equals(IO_VALUE.HIGH))
{
LogUtil.error(LOGGER, "进出轴报警!重置失败,请检查!");
}
//重置和回原点要等轴3进出轴ORG亮了以后才能返回其他轴
LogUtil.info(LOGGER, StoreName + "重置中: 压紧轴,旋转轴,上下轴开始 原点返回");
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_OtherAxisBack);
ShuoKeControls.HomeMove(Config.CompressAxis_Slv, 1);
StoreMove.WaitList.Add(WaitResultInfo.WaitShuoKe(Config.CompressAxis_Slv, 1, true));
AxisHomeMove(Config.Middle_Axis);
AxisHomeMove(Config.UpDown_Axis);
break;
case StoreMoveStep.BOX_H_OtherAxisBack:
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_WaitAxisCountClear);
LogUtil.info(LOGGER, StoreName + "重置中:等待1500后清理 轴的位置!");
StoreMove.WaitList.Add(WaitResultInfo.WaitTime(1500));
break;
case StoreMoveStep.BOX_H_WaitAxisCountClear:
LogUtil.info(LOGGER, StoreName + "重置中:压紧轴,旋转轴,上下轴计数器清空!");
AxisCountClear(Config.Middle_Axis);
AxisCountClear(Config.UpDown_Axis);
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_MiddleAxisToP1);
LogUtil.info(LOGGER, StoreName + "重置中:旋转轴运动到P1,上下轴走到P1 !");
AxisMove(Config.Middle_Axis, Config.MiddleAxis_P1_Position, Config.MiddleAxis_P1_Speed, Config.Middle_Axis.StartSpeed);
AxisMove(Config.UpDown_Axis, Config.UpDownAxis_DoorOPosition_P1, Config.UpDownAxis_P1_Speed, Config.UpDown_Axis.StartSpeed);
//打开摄像机
HDevelopExport.OpenAllCamera();
break;
case StoreMoveStep.BOX_H_MiddleAxisToP1:
LogUtil.info(LOGGER, StoreName + "重置完成");
storeRunStatus = StoreRunStatus.Runing;
StoreMove.EndMove();
storeStatus = StoreStatus.StoreOnline;
if (alarmType.Equals(StoreAlarmType.None))
{
WarnMsg = "";
}
break;
case StoreMoveStep.BOX_M_H_TOP1_InOutToP1:
StoreMove.NextMoveStep(StoreMoveStep.BOX_M_H_TOP1_CompressHome);
LogUtil.info(LOGGER, StoreName + "到待机状态,压紧轴回原点,关闭舱门");
ShuoKeControls.HomeMove(Config.CompressAxis_Slv, 1);
StoreMove.WaitList.Add(WaitResultInfo.WaitShuoKe(Config.CompressAxis_Slv, 0, true));
//关闭舱门
KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Up, IO_VALUE.LOW));
break;
case StoreMoveStep.BOX_M_H_TOP1_CompressHome:
StoreMove.NextMoveStep(StoreMoveStep.BOX_M_H_TOP1_OtherAxisToP1);
LogUtil.info(LOGGER, StoreName + "重置中:旋转轴运动到P1,上下轴走到P1, !");
AxisMove(Config.Middle_Axis, Config.MiddleAxis_P1_Position, Config.MiddleAxis_P1_Speed, Config.Middle_Axis.StartSpeed);
AxisMove(Config.UpDown_Axis, Config.UpDownAxis_DoorOPosition_P1, Config.UpDownAxis_P1_Speed, Config.UpDown_Axis.StartSpeed);
//打开摄像机
HDevelopExport.OpenAllCamera();
break;
case StoreMoveStep.BOX_M_H_TOP1_OtherAxisToP1:
LogUtil.info(LOGGER, StoreName + "到待机状态完成");
StoreMove.EndMove();
storeStatus = StoreStatus.StoreOnline;
storeRunStatus = StoreRunStatus.Runing;
if (alarmType.Equals(StoreAlarmType.None))
{
WarnMsg = "";
}
break;
default: break;
}
}
/// <summary>
/// 原点返回处理
/// </summary>
protected override void ReturnHomeProcess()
{
if (StoreMove.IsInWait)
{
CheckWait();
}
if (StoreMove.IsInWait)
{
return;
}
switch (StoreMove.MoveStep)
{
case StoreMoveStep.BOX_H_LocationCylinderBack:
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_InOutBack);
LogUtil.info(LOGGER, StoreName + "原点返回中,进出轴回原点");
//重置和回原点要等轴3进出轴ORG亮了以后才能返回其他轴
AxisHomeMove(Config.InOut_Axis);
break;
case StoreMoveStep.BOX_H_InOutBack:
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_InOutBackWait);
LogUtil.info(LOGGER, StoreName + "原点返回中 ,进出轴已经回原点 ,等待1000毫秒清空位置");
StoreMove.WaitList.Add(WaitResultInfo.WaitTime(1000));
break;
case StoreMoveStep.BOX_H_InOutBackWait:
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_InOutToP1);
LogUtil.info(LOGGER, StoreName + "原点返回中,进出轴已经回原点, 进出轴退回P1点,关闭仓门,检测叉子没有料盘");
//进出轴原点返回完成,将进出轴的位置设置=0
AxisCountClear(Config.InOut_Axis);
AxisMove(Config.InOut_Axis, Config.InOutAxis_P1_Position, Config.InOutAxis_P1_Speed, Config.InOut_Axis.StartSpeed);
//判断叉子没有料盘
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.TrayCheck_3, IO_VALUE.LOW));
if (Config.StoreDIList.ContainsKey(Store_IO_Type.TrayCheck_4))
{
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.TrayCheck_4, IO_VALUE.LOW));
}
//关闭舱门
KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Up, IO_VALUE.LOW));
break;
case StoreMoveStep.BOX_H_InOutToP1:
//如果此时轴三还在报警,需要提示错误并等待
if (KTKSMCManager.GetAlarmIO(Config.InOut_Axis.DeviceName, Config.InOut_Axis.GetAxisValue()).Equals(IO_VALUE.HIGH))
{
WarnMsg = "进出轴报警!重置失败,请检查!";
LogUtil.error(LOGGER, "进出轴报警!重置失败,请检查!");
}
//重置和回原点要等轴3进出轴ORG亮了以后才能返回其他轴
LogUtil.info(LOGGER, StoreName + "原点返回中 :压紧轴,旋转轴,上下轴开始原点返回");
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_OtherAxisBack);
ShuoKeControls.HomeMove(Config.CompressAxis_Slv, 1);
StoreMove.WaitList.Add(WaitResultInfo.WaitShuoKe(Config.CompressAxis_Slv, 0, true));
AxisHomeMove(Config.Middle_Axis);
AxisHomeMove(Config.UpDown_Axis);
break;
case StoreMoveStep.BOX_H_OtherAxisBack:
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_WaitAxisCountClear);
LogUtil.info(LOGGER, StoreName + "原点返回中:等待1500后清理压紧轴,旋转轴,上下轴的位置!");
StoreMove.WaitList.Add(WaitResultInfo.WaitTime(1500));
break;
case StoreMoveStep.BOX_H_WaitAxisCountClear:
LogUtil.info(LOGGER, StoreName + "原点返回中:压紧轴,旋转轴,上下轴计数器清空!");
AxisCountClear(Config.Middle_Axis);
AxisCountClear(Config.UpDown_Axis);
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_MiddleAxisToP1);
LogUtil.info(LOGGER, StoreName + "原点返回中:旋转轴运动到P1,上下轴到P1!");
AxisMove(Config.Middle_Axis, Config.MiddleAxis_P1_Position, Config.MiddleAxis_P1_Speed, Config.Middle_Axis.StartSpeed);
AxisMove(Config.UpDown_Axis, Config.UpDownAxis_DoorOPosition_P1, Config.UpDownAxis_P1_Speed, Config.UpDown_Axis.StartSpeed);
//打开摄像机
HDevelopExport.OpenAllCamera();
break;
case StoreMoveStep.BOX_H_MiddleAxisToP1:
LogUtil.info(LOGGER, StoreName + "原点返回完成");
storeRunStatus = StoreRunStatus.Runing;
StoreMove.EndMove();
storeStatus = StoreStatus.StoreOnline;
WarnMsg = "";
break;
default: break;
}
}
#endregion
public void RunAxis()
{
KNDIOMove(Store_IO_Type.Run_Sign, IO_VALUE.HIGH);
Thread.Sleep(100);
//打开所有轴
foreach (ConfigMoveAxis moveAxis in moveAxisList)
{
KTKSMCManager.InitAxis(moveAxis.DeviceName, moveAxis.GetAxisValue());
KTKSMCManager.ClearAlarm(moveAxis.DeviceName, moveAxis.GetAxisValue());
KTKSMCManager.OpenOrCloseAxis(moveAxis, 1);
}
Thread.Sleep(100);
KNDIOMove(Store_IO_Type.Axis_Brake, IO_VALUE.HIGH);
}
/// <summary>
/// 打开所有轴
/// </summary>
/// <returns></returns>
private bool OpenAllAxis()
{
//判断轴是否正常
foreach (ConfigMoveAxis axis in moveAxisList)
{
//IN7
IO_VALUE in7Value = KTKSMCManager.WGetDigitalIn(axis.DeviceName, axis.GetAxisValue(), 7);
//报警
IO_VALUE alarmIo = KTKSMCManager.GetAlarmIO(axis.DeviceName, axis.GetAxisValue());
if (in7Value == IO_VALUE.HIGH && alarmIo == IO_VALUE.LOW)
{
LogUtil.info(LOGGER, StoreName + "成功打开轴:" + axis.Explain);
}
else
{
//清理报警,再重新打开一次
LogUtil.info(LOGGER, StoreName + "第一次打开轴" + axis.Explain + "失败,先清理一下报警,再重新打开一次");
KTKSMCManager.ClearAlarm(axis.DeviceName, axis.GetAxisValue());
System.Threading.Thread.Sleep(1200);
KTKSMCManager.OpenOrCloseAxis(axis, 1);
//IN7
in7Value = KTKSMCManager.WGetDigitalIn(axis.DeviceName, axis.GetAxisValue(), 7);
//报警
alarmIo = KTKSMCManager.GetAlarmIO(axis.DeviceName, axis.GetAxisValue());
if (in7Value == IO_VALUE.HIGH && alarmIo == IO_VALUE.LOW)
{
LogUtil.info(LOGGER, StoreName + "清理报警后重新打卡轴成功:" + axis.Explain);
}
else
{
KTKSMCManager.OpenOrCloseAxis(axis, 0);
int alarmCode = GetAlarmCodeByAxis(axis);
WarnMsg = StoreName + "打开轴" + axis.Explain + "失败 ";
LogUtil.info(LOGGER, StoreName + " 打开轴" + axis.Explain + "失败,in7Value=" + in7Value + ",alarmIo=" + alarmIo + ",直接关闭轴");
Alarm(StoreAlarmType.AxisAlarm, GetAlarmCodeByAxis(axis).ToString(), WarnMsg, StoreMove.MoveType);
return false;
}
}
}
return true;
}
private void CloseAllAxis()
{
foreach (ConfigMoveAxis axis in moveAxisList)
{
KTKSMCManager.OpenOrCloseAxis(axis, 0);
}
KNDIOMove(Store_IO_Type.Run_Sign, IO_VALUE.LOW);
Thread.Sleep(100);
KNDIOMove(Store_IO_Type.Axis_Brake, IO_VALUE.LOW);
}
private int GetAlarmCodeByAxis(ConfigMoveAxis axis)
{
int alarmCode = LineAlarm.InOutAxisAlarm;
int axisType = axis.GetAxisValue() % 4;
if (axisType == 1)
{
alarmCode = LineAlarm.MiddleAxisAlarm;
}
else if (axisType == 2)
{
alarmCode = LineAlarm.UpDownAxisAlarm;
}
else if (axisType == 3)
{
alarmCode = LineAlarm.InOutAxisAlarm;
}
else
{
alarmCode = LineAlarm.CompressAxisAlarm;
}
return alarmCode;
}
/// <summary>
/// 停止运行
/// </summary>
public override void StopRun()
{
autoNext = false;
serverConnectTimer.Enabled = false;
ledTimer.Enabled = false;
StopMove();
storeRunStatus = StoreRunStatus.Wait;
timersTimer.Enabled = false;
CloseAllAxis();
TimeSpan span = DateTime.Now - StartTime;
IsRun = false;
if (IsInBlowing)
{
Thread.Sleep(100);
KNDIOMove(Store_IO_Type.StartOrStopBlow, IO_VALUE.LOW);
IsInBlowing = false;
LastEndBlowTime = DateTime.Now;
}
KNDManager.CloseAllDO();
ShuoKeControls.ClosePort();
HumitureServer.StopTemperateServer();
if (Config.Scanner_Type.Equals(1))
{
//TODO 停止扫码枪
}
else
{
StopScanner();
}
LogUtil.info(LOGGER, StoreName + ",停止运行,总运行时间:" + span.ToString());
}
public override void Alarm(StoreAlarmType alarmType, string alarmDetial, string alarmMsg, StoreMoveType storeMoveType)
{
SaveAlarmInfo(alarmType, alarmDetial, alarmMsg, storeMoveType);
autoNext = false;
if (this.alarmType.Equals(alarmType) && alarmType != StoreAlarmType.SuddenStop && alarmType != StoreAlarmType.NoAirCheck)
{
return;
}
LogUtil.error(LOGGER, StoreName + "XXXXXXXXXXXXXXXXXXXX 报警,报警类型:" + alarmType);
if (alarmType != StoreAlarmType.IoSingleTimeOut)
{
StopMove();
}
this.alarmType = alarmType;
if (alarmType == StoreAlarmType.AxisAlarm)
{
LogUtil.error(LOGGER, StoreName + "轴报警,关闭轴,打开报警灯");
CloseAllAxis();
}
else if (alarmType == StoreAlarmType.SuddenStop)
{
isInSuddenDown = true;
LogUtil.error(LOGGER, StoreName + "收到急停信号,关闭所有轴卡,关闭所有IO,停止所有运动");
CloseAllAxis();
StoreMove.EndMove();
storeStatus = StoreStatus.SuddenStop;
}
else if (alarmType.Equals(StoreAlarmType.NoAirCheck))
{
isNoAirCheck = true;
LogUtil.error(LOGGER, StoreName + " 未检测到气压信号 ,关闭所有轴卡,关闭所有IO,停止所有运动");
CloseAllAxis();
StoreMove.EndMove();
storeStatus = StoreStatus.SuddenStop;
}
}
private bool InProcess = false;
protected override void timersTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
if (InProcess)
{
return;
}
try
{
InProcess = true;
IoCheckProcess();
TimerProcess();
}
catch (Exception ex)
{
LOGGER.Error(StoreName + "Timer定时处理出错:" + ex.ToString());
}
InProcess = false;
}
private bool ledInProcess = false;
void ledTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
if (ledInProcess)
{
return;
}
try
{
ledInProcess = true;
//灯处理
LedProcess();
}
catch (Exception ex)
{
LOGGER.Error(StoreName + "LED定时处理出错:" + ex.ToString());
}
ledInProcess = false;
}
private void LedProcess()
{
try
{
if (storeRunStatus.Equals(StoreRunStatus.Wait))
{
return;
}
DateTime time = DateTime.Now;
//黄灯
if (IsNotScanCode || storeRunStatus.Equals(StoreRunStatus.HomeMoving) || storeRunStatus.Equals(StoreRunStatus.Reset))
{
//开机执行中时黄灯闪烁
if (KNDIOValue(Store_IO_Type.RunSign_HddLed).Equals(IO_VALUE.HIGH))
{
Thread.Sleep(60);
KNDIOMove(Store_IO_Type.RunSign_HddLed, IO_VALUE.LOW);
}
else
{
Thread.Sleep(60);
KNDIOMove(Store_IO_Type.RunSign_HddLed, IO_VALUE.HIGH);
}
}
else
{
if (KNDIOValue(Store_IO_Type.RunSign_HddLed).Equals(IO_VALUE.HIGH))
{
Thread.Sleep(60);
KNDIOMove(Store_IO_Type.RunSign_HddLed, IO_VALUE.LOW);
}
}
//绿灯亮
//出入库执行中,绿灯闪烁
if ((StoreMove.MoveType.Equals(StoreMoveType.InStore) || StoreMove.MoveType.Equals(StoreMoveType.OutStore)) && KNDIOValue(Store_IO_Type.AutoRun_HddLed).Equals(IO_VALUE.HIGH))
{
Thread.Sleep(60);
KNDIOMove(Store_IO_Type.AutoRun_HddLed, IO_VALUE.LOW);
}
else
{
if (KNDIOValue(Store_IO_Type.AutoRun_HddLed).Equals(IO_VALUE.LOW))
{
Thread.Sleep(60);
KNDIOMove(Store_IO_Type.AutoRun_HddLed, IO_VALUE.HIGH);
}
}
bool isNeedAlarmLed = false;
//报警灯
if (!alarmType.Equals(StoreAlarmType.None) || isNoAirCheck || isInSuddenDown || TempOrHumidityIsAlarm)
{
isNeedAlarmLed = true;
}
if (isNeedAlarmLed)
{
if (KNDIOValue(Store_IO_Type.Alarm_HddLed).Equals(IO_VALUE.LOW))
{
Thread.Sleep(60);
KNDIOMove(Store_IO_Type.Alarm_HddLed, IO_VALUE.HIGH);
}
}
else
{
if (KNDIOValue(Store_IO_Type.Alarm_HddLed).Equals(IO_VALUE.HIGH))
{
Thread.Sleep(60);
KNDIOMove(Store_IO_Type.Alarm_HddLed, IO_VALUE.LOW);
}
}
}
catch (Exception ex)
{
LOGGER.Error(StoreName + "灯处理定时器出错:", ex);
}
}
private IO_VALUE lastReset = IO_VALUE.LOW;
private IO_VALUE lastAirValue = IO_VALUE.LOW;
public void IoCheckProcess()
{
DateTime time = DateTime.Now;
if (storeRunStatus.Equals(StoreRunStatus.Wait))
{
//取新的Io状态
IO_VALUE resetValue = KNDIOValue(Store_IO_Type.Reset_BTN);
if (ConfigAppSettings.GetIntValue(Setting_Init.App_AutoRun) == 1)
{
if (resetValue.Equals(IO_VALUE.HIGH) && lastReset.Equals(IO_VALUE.LOW))
{
//没有启动时收到复位按钮,相当于启动按钮
LogUtil.info(LOGGER, StoreName + "没有启动时收到复位按钮,相当于启动按钮,开始调用启动方法!");
bool result = StartRun();
if (result.Equals(false))
{
LogUtil.error("料仓启动失败,重新打卡定时器等待下次启动!");
int isAuto = ConfigAppSettings.GetIntValue(Setting_Init.App_AutoRun);
if (isAuto == 1)
{
timersTimer.Enabled = true;
}
}
}
lastReset = resetValue;
return;
}
lastReset = resetValue;
}
//判断急停
else if (storeRunStatus >= StoreRunStatus.HomeMoving)
{
//取新的Io状态
IO_VALUE suddenBtn = KNDIOValue(Store_IO_Type.SuddenStop_BTN);
IO_VALUE resetBtn = KNDIOValue(Store_IO_Type.Reset_BTN);
//急停按钮
if (suddenBtn.Equals(IO_VALUE.LOW))
{
if (isInSuddenDown.Equals(false))
{
isInSuddenDown = true;
LogUtil.error(LOGGER, StoreName + "收到急停信号,报警急停");
WarnMsg = StoreName + "收到急停信号,报警急停";
//报警时会关闭所有轴
Alarm(StoreAlarmType.SuddenStop, "1", WarnMsg, StoreMoveType.None);
}
}
else if (resetBtn.Equals(IO_VALUE.HIGH))
{
//收到复位信号,若报警直接复位,若不报警且无操作,回到待机点
if (alarmType.Equals(StoreAlarmType.None) && isInSuddenDown.Equals(false) && isNoAirCheck.Equals(false))
{
if (StoreMove.MoveType.Equals(StoreMoveType.None))
{
LogUtil.info(LOGGER, "收到复位信号但是没有报警,且当前无操作,只回到待机点");
MoveToP1();
}
else
{
LogUtil.info(LOGGER, "收到复位信号但是已经在" + StoreMove.MoveType + "处理中,且无报警,不处理");
//WarnMsg = "收到复位信号但是已经在" + StoreMove.MoveType + "处理中,且无报警,不处理";
}
}
else
{
//收到复位信号
LogUtil.info(LOGGER, "收到复位信号,自动复位");
WarnMsg = "收到复位信号,自动复位";
Reset();
}
}
}
IO_VALUE airCheck = KNDIOValue(Store_IO_Type.Airpressure_Check);
//气压检测按钮灭三秒以上才算关闭
if (airCheck == IO_VALUE.LOW && (!isInSuddenDown))
{
int checkSenconds = Config.AirCheckSeconds;
LogUtil.info(LOGGER, StoreName + "未检测到气压信号,判断未检测到信号持续的时间是否" + checkSenconds + "以上!");
//判断是否持续
if (lastAirValue == IO_VALUE.LOW)
{
if ((!isNoAirCheck) && (DateTime.Now - lastAirCloseTime).TotalSeconds > checkSenconds)
{
isNoAirCheck = true;
//没有了气压检测信号
LogUtil.error(LOGGER, StoreName + " 未检测到气压信号!");
WarnMsg = StoreName + " 未检测到气压信号";
//报警时会关闭所有轴
Alarm(StoreAlarmType.NoAirCheck, "2", WarnMsg, StoreMoveType.None);
}
}
else
{
lastAirValue = airCheck;
lastAirCloseTime = DateTime.Now;
isNoAirCheck = false;
}
}
else
{
lastAirValue = airCheck;
lastAirCloseTime = DateTime.Now;
isNoAirCheck = false;
}
//检查运动轴报警
if (storeRunStatus >= StoreRunStatus.HomeMoving && (!isInSuddenDown))
{
CheckAxisAlarm();
}
}
public void TimerProcess()
{
try
{
DateTime time = DateTime.Now;
if (StoreMove.MoveType != StoreMoveType.None)
{
isWaitScan = false;
IsNotScanCode = false;
IsScanCode = false;
BusyMoveProcess();
}
else if (storeRunStatus.Equals(StoreRunStatus.Runing))
{ //判断是否需要出入库
if (StoreMove.MoveType.Equals(StoreMoveType.None))
{
IO_VALUE checkIO = KNDIOValue(Store_IO_Type.TrayCheck_1);
IO_VALUE checkIO2 = IO_VALUE.HIGH;
if (Config.StoreDIList.ContainsKey(Store_IO_Type.TrayCheck_2))
{
checkIO2 = KNDIOValue(Store_IO_Type.TrayCheck_2);
}
//需要扫码入库
if (((checkIO.Equals(IO_VALUE.HIGH)) && checkIO2.Equals(IO_VALUE.HIGH))
|| (KNDIOValue(Store_IO_Type.AutoRun_Single).Equals(IO_VALUE.HIGH)))
{
//打开光源
if (KNDIOValue(Store_IO_Type.CameraLight_Power).Equals(IO_VALUE.LOW))
{
Thread.Sleep(60);
KNDIOMove(Store_IO_Type.CameraLight_Power, IO_VALUE.HIGH);
}
//不需要验证是否扫码,服务器会通知扫码
//if (IsScanCode)
//{
// return;
//}
////检测到料盘,等待1.5秒后扫码
//if (isWaitScan)
//{
// TimeSpan span = DateTime.Now - StartWaitScanTime;
// //检测料盘扫码的时间改为300毫秒
// if (span.TotalMilliseconds > 300)
// {
// isWaitScan = false;
// IsScanCode = true;
// LogUtil.info(StoreName + "检测到料盘信号且等待300毫秒,开始扫码");
// if (Config.Scanner_Type.Equals(1))
// {
// //TODO 开始扫码
// IsTestCamera = false;
// GetCameraCode();
// }
// else
// {
// BeginScannering();
// }
// }
//}
//else
//{
// isWaitScan = true;
// StartWaitScanTime = DateTime.Now;
//}
}
else
{
isWaitScan = false;
//不再扫码中,并且开了光源,关闭光源
if (!IsScanCode)
{
if (KNDIOValue(Store_IO_Type.CameraLight_Power).Equals(IO_VALUE.HIGH))
{
Thread.Sleep(60);
KNDIOMove(Store_IO_Type.CameraLight_Power, IO_VALUE.LOW);
}
}
}
}
AutoResetProcess();
IOTimeOutProcess();
}
}
catch (Exception ex)
{
LOGGER.Error(StoreName + "定时处理出错", ex);
}
}
private DateTime preIoTimerOutTime = DateTime.Now;
/// <summary>
/// io检测异常
/// </summary>
private void IOTimeOutProcess()
{
try
{
TimeSpan span = DateTime.Now - preIoTimerOutTime;
if (span.TotalSeconds > 1)
{
preIoTimerOutTime = DateTime.Now;
if (!alarmType.Equals(StoreAlarmType.IoSingleTimeOut))
{
return;
}
if (storeRunStatus < StoreRunStatus.Runing)
{
return;
}
if (isInSuddenDown || isNoAirCheck)
{
return;
}
//若BOX和移栽都没有在等待Io的过程中则此Io超时异常可能已经处理过
if (StoreMove.IsInWait == false)
{
LogUtil.info(StoreName + "之前有IO超时异常【" + alarmInfo.alarmDetail + "】,但是当前已经没有在等待中,清理信号超时异常!");
alarmType = StoreAlarmType.None;
WarnMsg = "";
}
}
}
catch (Exception ex)
{
LogUtil.error(LOGGER, "IOTimeOutProcess出错:" + ex.ToString());
}
}
/// <summary>
/// 超过配置次数时需要重置
/// </summary>
private void AutoResetProcess()
{
try
{
if (CurrInOutACount >= this.Config.Box_ResetACount)
{
if (storeRunStatus < StoreRunStatus.Runing || StoreMove.MoveType == StoreMoveType.InStore || StoreMove.MoveType == StoreMoveType.OutStore)
{
LogUtil.info(LOGGER, StoreName + "已经累计出入库" + CurrInOutACount + "次,当时当前正在忙碌中暂不重置");
}
else
{
LogUtil.info(LOGGER, StoreName + "已经累计出入库" + CurrInOutACount + "次,需要重置一下");
Reset();
}
}
else if (CurrInOutCount >= this.Config.Box_ResetMCount)
{
if (storeRunStatus < StoreRunStatus.Runing || StoreMove.MoveType == StoreMoveType.InStore || StoreMove.MoveType == StoreMoveType.OutStore)
{
LogUtil.info(LOGGER, StoreName + "已经累计出入库" + CurrInOutCount + "次,当时当前正在忙碌中暂不重置旋转轴");
}
else
{
LogUtil.info(LOGGER, StoreName + "已经累计出入库" + CurrInOutCount + "次,需要重置一下旋转轴");
}
}
else
{
FixtureCodeInfo currInOutFixture = null;
lock (waitOutListLock)
{
if (waitOutStoreList.Count > 0 && CanStarInOut())
{
currInOutFixture = waitOutStoreList[0];
waitOutStoreList.RemoveAt(0);
}
}
if (currInOutFixture != null)
{ //出库
if (currInOutFixture.WareNum.Equals(""))
{
LogUtil.info(LOGGER, StoreName + "开始执行排队中的出库【" + currInOutFixture.ToStr() + "】");
StartOutStoreMove(new InOutStoreParam("", currInOutFixture.PosId, currInOutFixture.plateH, currInOutFixture.plateW));
}
}
}
}
catch (Exception ex)
{
LogUtil.error(LOGGER, "处理出入库排队列表出错:" + ex.ToString());
}
}
/// <summary>
/// 重置中轴
/// </summary>
private void ResetMiddleAxis(bool isNeedClearAuto)
{
//CurrInOutCount = 0;
////复位之前先停止运行
//if (isNeedClearAuto)
//{
// autoNext = false;
//}
//StopMove();
//storeRunStatus = StoreRunStatus.Reset;
//StoreMove.NewMove(StoreMoveType.StoreReset);
//StoreMove.NextMoveStep(StoreMoveStep.BOX_M_H_InOutToP1);
//LogUtil.info(LOGGER, StoreName + "重置(旋转轴),进出轴先回P1");
//AxisMove(Config.InOut_Axis, Config.InOutAxis_P1_Position, Config.InOutAxis_P1_Speed, Config.InOut_Axis.StartSpeed);
}
/// <summary>
/// 判断是否报警,返回 true表示报警 报警检测2秒钟检测一次
/// </summary>
/// <returns></returns>
private DateTime checkAlarmTime = DateTime.Now;
public bool CheckAxisAlarm()
{
TimeSpan span = DateTime.Now - checkAlarmTime;
if (span.TotalSeconds < 2)
{
return false;
}
checkAlarmTime = DateTime.Now;
bool isInAlarm = false;
foreach (ConfigMoveAxis axisInfo in moveAxisList)
{
AxisAlarmInfo info = AxisAlarmCodeMap[axisInfo];
short axis = axisInfo.GetAxisValue();
string deviceName = axisInfo.DeviceName;
int alarmIo = (int)KTKSMCManager.GetAlarmIO(deviceName, axis);
if (alarmIo == 1)
{
WarnMsg = StoreName + " 运动轴" + axisInfo.Explain + "报警";
if (info.AlarmIoValue != alarmIo)
{
LogUtil.error(LOGGER, WarnMsg);
int alarmCode = GetAlarmCodeByAxis(axisInfo);
//GetLineBean().SendAlarmCode(StoreID, alarmCode);
info.AlarmIoValue = alarmIo;
//TODO 记录报警状态,不能出入库
}
Alarm(StoreAlarmType.AxisAlarm, GetAlarmCodeByAxis(axisInfo).ToString(), WarnMsg, StoreMoveType.None);
isInAlarm = true;
}
else
{
if (info.AlarmIoValue != alarmIo)
{
LogUtil.error(LOGGER, StoreName + " 运动轴 " + axisInfo.Explain + ",报警已解除!");
info.AlarmIoValue = alarmIo;
//TODO 更改为正常联机状态
}
}
}
//判断报警状态
return isInAlarm;
}
/// <summary>
/// 停止所有运行
/// </summary>
public override void StopMove()
{
//运动版停止
KTKSMCManager.StopMove(Config.Middle_Axis.DeviceName, Config.Middle_Axis.GetAxisValue());
KTKSMCManager.StopMove(Config.UpDown_Axis.DeviceName, Config.UpDown_Axis.GetAxisValue());
KTKSMCManager.StopMove(Config.InOut_Axis.DeviceName, Config.InOut_Axis.GetAxisValue());
if (IsHasCompress_Axis)
{
ShuoKeControls.SuddownStop(Config.CompressAxis_Slv);
}
else
{
//定位气缸停止
KNDIOMove(Store_IO_Type.LocationCylinder_Down, IO_VALUE.LOW);
KNDIOMove(Store_IO_Type.LocationCylinder_Up, IO_VALUE.LOW);
}
LogUtil.info(LOGGER, StoreName + "StopMove");
KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.LOW);
KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.LOW);
Thread.Sleep(100);
HDevelopExport.CloseAllCamera();
}
/// <summary>
/// 判断是可以开始出入库(当前在忙碌状态则需要排队等待)
/// </summary>
/// <returns></returns>
public bool CanStarInOut()
{
if (isInSuddenDown || isNoAirCheck ||
(!storeRunStatus.Equals(StoreRunStatus.Runing))
|| storeStatus.Equals(StoreStatus.InStoreExecute) || storeStatus.Equals(StoreStatus.OutStoreExecute)
|| storeStatus.Equals(StoreStatus.InStoreEnd) || storeStatus.Equals(StoreStatus.OutStoreBoxEnd))
{
return false;
}
return true;
}
#region 扫码枪代码
public bool IsTestCamera = false;
private System.Timers.Timer scanTimer = null;
public void GetCameraCode()
{
if (IsTestCamera && IsInScan())
//if (IsTestCamera && IsScanCode)
{
LogUtil.info("上次扫码还未执行完毕,请稍后!");
return;
}
if (scanTimer == null)
{
scanTimer = new System.Timers.Timer();
scanTimer.Interval = 10;
scanTimer.AutoReset = false;
scanTimer.Enabled = false;
scanTimer.Elapsed += scanTimer_Elapsed;
}
scanTimer.Enabled = true;
}
public static Dictionary<string, List<string>> codeMap = new Dictionary<string, List<string>>();
public static object codeMapLock = "";
private void scanTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
DateTime date = DateTime.Now;
scanTimer.Enabled = false;
//打开光源
KNDIOMove(Store_IO_Type.CameraLight_Power, IO_VALUE.HIGH);
LogUtil.debug("扫码中:结束打开光源 ,已耗时:" + (DateTime.Now - date).ToString());
//打开所有摄像机
foreach (string cameraName in HDevelopExport.cameraNameList)
{
if (!HDevelopExport.IsOpen(cameraName))
{
HDevelopExport.OpenCamera(cameraName);
LogUtil.debug("扫码中:结束打开摄像机[" + cameraName + "],已耗时:" + (DateTime.Now - date).ToString());
}
}
List<string> codeList = new List<string>();
Dictionary<string, int> hasList = new Dictionary<string, int>();
//int maxCodeCount = 10;
string spiltStr = "##";
string message = "";
try
{
int cindex = 0;
codeMap = new Dictionary<string, List<string>>();
foreach (string cameraName in HDevelopExport.cameraNameList)
{
cindex++;
int cameraIndex = cindex;
string newName = cameraName;
HObject ho_Image = HDevelopExport.GrabImage(newName);
LogUtil.debug("扫码中:结束摄像机[" + newName + "] 读取图片,已耗时:" + (DateTime.Now - date).ToString());
HObject image = ho_Image;
List<object> param = new List<object>() { image, cameraIndex, cameraName };
ThreadPool.QueueUserWorkItem(new WaitCallback(HDevelopExport.GetCode), param);
ho_Image = null;
}
//等待两个图片都识别完成,大概需要15秒,等待30秒还未结束直接结束
Thread.Sleep(500);
int i = 0;
int needCount = cindex;
for (; i < 80; i++)
{
if (codeMap.Count >= needCount)
{
break;
}
Thread.Sleep(100);
}
LogUtil.info("扫码中:结束等待识别二维码,循环次数i=" + i + ",已耗时:" + (DateTime.Now - date).ToString());
//如果等待300次,超时,需要关闭摄像机
if (i >= 80)
{
LogUtil.info("扫码中:等待时间超时,关闭所有摄像机");
HDevelopExport.CloseAllCamera();
}
foreach (List<string> codeArray in codeMap.Values)
{
//List<string> codeArray = HDevelopExport.GetCode(ho_Image, cindex);
if (codeArray != null && codeArray.Count > 0)
{
foreach (string str in codeArray)
{
string[] array = str.Split('=');
string code = array[1];
if (array.Length >= 1)
{
if (!hasList.ContainsKey(code))
{
hasList.Add(code, codeList.Count);
codeList.Add(str);
}
else
{
//替换原来的
int index = hasList[code];
if (codeList.Count > index)
{
LOGGER.Info(StoreName + "重复二维码【" + codeList[index] + "】【" + str + "】,使用【" + str + "】");
codeList[index] = str;
}
}
}
}
}
}
}
catch (Exception ex)
{
LogUtil.error(StoreName + "从摄像机获取二维码出错:" + ex.ToString());
LogUtil.error(StoreName + "关闭摄像机");
HDevelopExport.CloseAllCamera();
}
finally
{
//不关闭摄像机
//HDevelopExport.CloseCamera();
}
//不需要 关闭光源
// KNDIOMove(Store_IO_Type.CameraLight_Power, IO_VALUE.LOW);
foreach (string str in codeList)
{
message = message + str + spiltStr;
}
LogUtil.info("扫码中 开始从服务器获取库位,共耗时:" + (DateTime.Now - date).ToString());
onCodeReceived(message);
}
private bool isWaitScan = false;
private DateTime StartWaitScanTime = DateTime.Now;
private bool IsNotScanCode = false;
private bool IsScanCode = false;
/// <summary>
/// 扫码枪数据接收
/// </summary>
/// <param name="message"></param>
protected override void onCodeReceived(string message)
{
try
{
message = ScanCodeManager.ReplaceCode(message);
if (message.Equals("") || string.IsNullOrEmpty(message))
{
IsNotScanCode = true;
IsScanCode = false;
//LogUtil.info(LOGGER, StoreName + "没有收到二维码信息,请重新放入料盘");
//return;
}
IsNotScanCode = false;
if (storeRunStatus.Equals(StoreRunStatus.Wait) && IsTestCamera.Equals(false))
{
LogUtil.info(LOGGER, StoreName + "暂未开启,不需要发送服务器");
IsScanCode = false;
return;
}
LogUtil.info(LOGGER, StoreName + "收到二维码<< " + message + ",发送给服务器获取入库PosID");
//发送扫码内容到服务器进行入库操作
Operation operation = getLineBoxStatus();
operation.op = 4;
operation.data = new Dictionary<string, string>() { { "code", message }, { "boxId", StoreID.ToString() } };
string server = ConfigAppSettings.GetValue(Setting_Init.http_server);
Operation resultOperation = HttpHelper.Post(StoreManager.GetPostApi(server), operation, false);
if (resultOperation == null)
{
LogUtil.info(LOGGER, StoreName + "二维码【" + message + "】没有收到服务器反馈!");
IsScanCode = false;
return;
}
else if (!string.IsNullOrEmpty(resultOperation.msg))
{
//如果有提示消息,直接显示提示
LogUtil.info(LOGGER, StoreName + "服务器反馈 二维码【" + message + "】 :" + resultOperation.msg);
IsScanCode = false;
return;
}
if (IsTestCamera)
{
LogUtil.info(LOGGER, StoreName + " 测试扫码,【" + message + "】 收到服务器命令,OP=" + resultOperation.op);
return;
}
IsScanCode = false;
if (resultOperation.op > 0)
{
LogUtil.info(LOGGER, StoreName + "收到服务器命令,OP=" + resultOperation.op);
}
if (resultOperation.op.Equals(1))
{
ProcessInStoreCMD(resultOperation, message);
}
else if (resultOperation.op.Equals(2))
{
ProcessOutStoreCMD(resultOperation);
}
else if (resultOperation.op.Equals(4))
{
ServerScanProcess(resultOperation);
}
else if (resultOperation.op.Equals(5))
{
ProcessHumidityCMD(resultOperation);
}
}
catch (Exception ex)
{
IsScanCode = false;
LOGGER.Error(StoreName + ex.StackTrace);
}
}
private void ProcessHumidityCMD(Operation resultOperation)
{
Dictionary<string, string> data = resultOperation.data;
if (data != null && data.ContainsKey(ParamDefine.maxHumidity) && data.ContainsKey(ParamDefine.maxTemperature))
{
string maxHumidity = data[ParamDefine.maxHumidity];
string maxTemp = data[ParamDefine.maxTemperature];
LogUtil.info(LOGGER, "收到服务器温湿度预警值:maxHumidity=" + maxHumidity + ",maxTemperature=" + maxTemp);
try
{
this.Max_Humidity = (float)Convert.ToDouble(maxHumidity);
this.Max_Temperature = (float)Convert.ToDouble(maxTemp);
LogUtil.info(LOGGER, "保存温湿度预警值:Max_Humidity=" + Max_Humidity + ",Max_Temperature=" + Max_Temperature);
}
catch (Exception ex)
{
LogUtil.error("转换温湿度失败:" + ex.ToString());
}
}
}
private DateTime LastScanTime = DateTime.Now;
private bool IsInScan()
{
if (!IsScanCode)
{
return false;
}
TimeSpan span = DateTime.Now - LastScanTime;
if (span.TotalSeconds > 60)
{
//大于60秒表示超时了,可以重新开始扫码
return false ;
} return true;
}
/// <summary>
/// 收到服务器消息扫码入库
/// </summary>
/// <param name="resultOperation"></param>
private void ServerScanProcess(Operation resultOperation)
{
//判断当前是否忙碌中
if (StoreMove.MoveType.Equals(StoreMoveType.None) && IsInScan().Equals(false))
//if (StoreMove.MoveType.Equals(StoreMoveType.None) && IsScanCode.Equals(false))
{
LogUtil.info(LOGGER, StoreName + "收到服务器扫码命令,开始扫码");
isWaitScan = false;
IsScanCode = true;
LastScanTime = DateTime.Now;
IsTestCamera = false;
GetCameraCode();
}
else
{
if (IsScanCode)
{
LogUtil.info(LOGGER, StoreName + "收到服务器扫码命令,扫码失败,已在扫码中");
WarnMsg = "已经在扫码中";
}
else if (StoreMove.MoveType.Equals(StoreMoveType.ReturnHome))
{
LogUtil.info(LOGGER, StoreName + "收到服务器扫码命令,扫码失败,正在原点返回中");
WarnMsg = "扫码失败,正在原点返回中";
}
else if (StoreMove.MoveType.Equals(StoreMoveType.StoreReset))
{
LogUtil.info(LOGGER, StoreName + "收到服务器扫码命令,扫码失败,正在复位中");
WarnMsg = "扫码失败,正在复位中";
}
else if (StoreMove.MoveType.Equals(StoreMoveType.InStore))
{
LogUtil.info(LOGGER, StoreName + "收到服务器扫码命令,扫码失败,正在入库执行中");
WarnMsg = "扫码失败,正在入库执行中";
}
else if (StoreMove.MoveType.Equals(StoreMoveType.OutStore))
{
LogUtil.info(LOGGER, StoreName + "收到服务器扫码命令,扫码失败,正在出库执行中");
WarnMsg = "扫码失败,正在出库执行中";
}
}
}
private void ProcessInStoreCMD(Operation resultOperation, string message)
{
Dictionary<string, string> data = resultOperation.data;
if (data != null && data.ContainsKey(ParamDefine.posId) && data.ContainsKey(ParamDefine.plateH) && data.ContainsKey(ParamDefine.plateW))
{
//服务器返回时有:posId库位编号,plateW:料盘宽度,plateH:料盘高度,
//postId格式BoxId#位置
string posId = data[ParamDefine.posId];
string plateW = data[ParamDefine.plateW];
string plateH = data[ParamDefine.plateH];
string[] posArray = posId.Split('#');
if (!(posArray.Length == 2))
{
WarnMsg = StoreName + "入库库位格式错误:二维码【" + message + "】库位【" + posId + "】";
LogUtil.error(LOGGER, "服务器反馈 入库库位格式错误:二维码【" + message + "】库位【" + posId + "】");
LogUtil.info(LOGGER, "服务器反馈 入库库位格式错误:二维码【" + message + "】库位【" + posId + "】");
return;
}
int storeId = int.Parse(posArray[0]);
//根据发送的posId获取位置列表
KTKSAStorePostion position = CSVPositionReader<KTKSAStorePostion>.GetPositon(posId);
if (position == null)
{ //出入库没有找到服务器发送的库位,需要打印日志方便查询原因
WarnMsg = "入库未找到库位:二维码【" + message + "】库位【" + posId + "】 ";
LogUtil.error(LOGGER, "收到服务器入库命令:入库未找到库位:二维码【" + message + "】库位【" + posId + "】");
LogUtil.info(LOGGER, "收到服务器入库命令:入库未找到库位:二维码【" + message + "】库位【" + posId + "】");
return;
}
//TODO:判断BOX是否处于可以入库状态,如果调试或急停中,需要返回给服务器;
if (CanStarInOut())
{
InOutStoreParam param = new InOutStoreParam(message, posId, plateH, plateW, 0);
StartInStoreMove(param);
//如果当前正在出入库中,需要记录下来,等待空闲时执行
LogUtil.info(LOGGER, StoreName + " 收到服务器入库命令:库位号【" + posId + "】二维码【" + message + "】 开始入库!");
}
else
{
LogUtil.info(LOGGER, StoreName + " 收到服务器入库命令:库位号【" + posId + "】二维码【" + message + "】 正在忙碌中,无法入库!");
}
}
}
private void ProcessOutStoreCMD(Operation resultOperation)
{
Dictionary<string, string> data = resultOperation.data;
if (data != null && data.ContainsKey(ParamDefine.posId)
&& data.ContainsKey(ParamDefine.plateH) && data.ContainsKey(ParamDefine.plateW))
{
string posIdStr = data[ParamDefine.posId];
string plateWStr = data[ParamDefine.plateW];
string plateHStr = data[ParamDefine.plateH];
LogUtil.info(LOGGER, "收到服务器出库消息:poaIs=" + posIdStr + ",platew=" + plateWStr + ",plateh=" + plateHStr);
char splitChar = '|';
string[] posIdArray = posIdStr.Split(splitChar);
string[] plateWArray = plateWStr.Split(splitChar);
string[] plateHArray = plateHStr.Split(splitChar);
int index = -1;
foreach (string posId in posIdArray)
{
index++;
string plateW = plateWArray[index];
string plateH = plateHArray[index];
string[] posArray = posId.Split('#');
if (posArray.Length != 2)
{
WarnMsg = StoreName + "出库格式错误:库位号【" + posId + "】";
LogUtil.error(LOGGER, "收到服务器出库命令:库位号【" + posId + "】格式错误");
continue;
}
int storeId = int.Parse(posArray[0]);
//根据发送的posId获取位置列表
KTKSAStorePostion position = CSVPositionReader<KTKSAStorePostion>.GetPositon(posId);
if (position == null)
{
//出入库没有找到服务器发送的库位,需要打印日志方便查询原因
WarnMsg = StoreName + "出库未找库位:【" + posId + "】";
LogUtil.error(LOGGER, "收到服务器出库命令:未找到【" + posId + "】的库位信息");
continue;
}
else
{
if (CanStarInOut())
{
StartOutStoreMove(new InOutStoreParam("", posId, position));
}
else
{
LogUtil.error(LOGGER, "收到服务器出库命令:出库【" + posId + "】失败,当前在忙碌中");
}
}
}
}
}
#endregion
#region 与服务器通信定时器,每1秒向服务器通知一次状态,同时执行出库操作
private bool isInProcess = false;
public void server_connect_timer_Tick(object sender, EventArgs e)
{
if (isInProcess)
{
return;
}
//温湿度处理
HumidityProcess();
isInProcess = true;
if (SAStoreManager.IsConnectServer)
{
try
{
SendLineStatus();
}
catch (Exception ex)
{
LOGGER.Error("定时给服务器发送消息出错:", ex);
}
}
isInProcess = false;
}
private bool IsInBlowing = false;
private DateTime LastBeginBlowTime = DateTime.Now;
private DateTime LastEndBlowTime = new DateTime(1997, 1, 1);
private DateTime preLogTime = DateTime.Now;
private bool TempOrHumidityIsAlarm = false;
private float StartBlowValue =(float) ConfigAppSettings.GetNumValue(Setting_Init.StartBlowValue);
private float StopBlowValue = (float)ConfigAppSettings.GetNumValue(Setting_Init.StopBlowValue);
private void HumidityProcess()
{
try
{
if ((DateTime.Now - preLogTime).TotalSeconds > 10)
{
preLogTime = DateTime.Now;
//用最大的湿度判断是否需要吹气,开始吹气的值=发过来的值-4
//温湿度
ASTemperateParam param = HumitureServer.GetTemperateParam(Config.GetTempAddrList());
double humidity = 0;
double temp = 0;
if (param != null)
{
humidity = param.Humidity;
temp = param.Temperate;
LOGGER.Info("当前湿度:" + humidity.ToString());
}
double currMaxHumidity = HumitureServer.GetMaxTemperate(Config.GetTempAddrList());
float startBlowHumidity = Max_Humidity - StartBlowValue;
float stopBlowHumidity = Max_Humidity - StopBlowValue;
//判断是否需要吹气
if (startBlowHumidity > 0 && startBlowHumidity < currMaxHumidity && IsInBlowing.Equals(false))
{
//判断是否距离上次结束指定的时间
TimeSpan span = DateTime.Now - LastEndBlowTime;
if (span.TotalMinutes > this.Config.BlowAir_Interval)
{
LOGGER.Info("当前最大湿度:" + currMaxHumidity.ToString() + ",开始吹气湿度:" + startBlowHumidity + ",当前不在吹气中,且间隔超过" + Config.BlowAir_Interval + "分钟,开始吹气!");
IsInBlowing = true;
Thread.Sleep(100);
KNDIOMove(Store_IO_Type.StartOrStopBlow, IO_VALUE.HIGH);
LastBeginBlowTime = DateTime.Now;
LastEndBlowTime = DateTime.Now;
}
}
if (IsInBlowing && stopBlowHumidity > currMaxHumidity)
{
LOGGER.Info("当前最大湿度:" + currMaxHumidity.ToString() + ",停止吹气湿度:" + stopBlowHumidity + ",停止吹气!");
IsInBlowing = false;
Thread.Sleep(100);
KNDIOMove(Store_IO_Type.StartOrStopBlow, IO_VALUE.LOW);
LastEndBlowTime = DateTime.Now;
}
if (IsInBlowing)
{
//判断是否需要结束吹气
TimeSpan span = DateTime.Now - LastBeginBlowTime;
if (span.TotalMinutes > this.Config.BlowAir_Time)
{
LOGGER.Info("已经吹气" + span.TotalMinutes + "分钟,超过配置的吹气时间" + Config.BlowAir_Time + "分钟,停止吹气!");
IsInBlowing = false;
Thread.Sleep(100);
KNDIOMove(Store_IO_Type.StartOrStopBlow, IO_VALUE.LOW);
LastEndBlowTime = DateTime.Now;
}
}
//如果开始吹气并且当前达到报警值
if (IsInBlowing.Equals(true) && humidity > Max_Humidity)
{
TempOrHumidityIsAlarm = true;
}
else
{
TempOrHumidityIsAlarm = false;
}
//如果湿度没有报警,温度达到范围也需要报警
if (temp > Max_Temperature && Max_Temperature > 0)
{
LOGGER.Info("当前温度【" + param.Temperate + "】超过最高温度【" + Max_Temperature + "】,开始报警!");
TempOrHumidityIsAlarm = true;
Thread.Sleep(100);
KNDIOMove(Store_IO_Type.StartOrStopBlow, IO_VALUE.LOW);
}
else if (temp < Max_Temperature)
{
if (IsInBlowing.Equals(false) && TempOrHumidityIsAlarm)
{
LOGGER.Info("不在吹气中,且当前温度【" + param.Temperate + "】低于【" + Max_Temperature + "】,关闭报警!");
TempOrHumidityIsAlarm = false;
Thread.Sleep(100);
KNDIOMove(Store_IO_Type.StartOrStopBlow, IO_VALUE.LOW);
}
}
}
}
catch (Exception ex)
{
LOGGER.Error(StoreName + "HumidityProcess出错:" + ex.ToString());
}
}
/// <summary>
/// 获取整个料仓的状态
/// </summary>
public Operation getLineBoxStatus()
{
//构建发送给服务器的对象
Operation lineOperation = new Operation();
lineOperation.msg = "";
lineOperation.alarmList = new List<AlarmInfo>();
lineOperation.cid = CID;
lineOperation.seq = ConfigAppSettings.nextSeq();
lineOperation.status = 1;
if (WarnMsg != "")
{
lineOperation.status = (int)StoreStatus.Warning;
lineOperation.msg = WarnMsg;
}
else if (IsRun)
{
lineOperation.status = (int)StoreStatus.StoreOnline;
}
lineOperation.status = (int)StoreStatus.StoreOnline;
BoxStatus boxStatus = new BoxStatus();
boxStatus.boxId = StoreID;
//状态
boxStatus.status = (int)storeStatus;
if (IsDebug)
{
boxStatus.status = (int)StoreStatus.Debugging;
}
boxStatus.msg = WarnMsg;
lineOperation.msg = WarnMsg;
if (lineOperation.msg.Equals(""))
{
if (IsInBlowing)
{
lineOperation.msg = "湿度报警中";
}
else if (TempOrHumidityIsAlarm)
{
lineOperation.msg = "温度报警中";
}
}
WarnMsg = "";
//状态
boxStatus.status = (int)storeStatus;
if (IsDebug)
{
boxStatus.status = (int)StoreStatus.Debugging;
}
else if (storeStatus.Equals(StoreStatus.OutStoreBoxEnd) || storeStatus.Equals(StoreStatus.InStoreEnd))
{
boxStatus.data.Add(ParamDefine.posId, lastPosId);
}
else if (!lastPosId.Equals(""))
{
boxStatus.data.Add(ParamDefine.posId, lastPosId);
boxStatus.status = (int)lastPosIdStatus;
if (lastPosId != "")
{
LogUtil.info(LOGGER, "给服务器发送出入库完成消息:" + StoreName + ",status【" + lastPosIdStatus + "】posId【" + lastPosId + "】");
}
lastPosId = "";
}
//温湿度
ASTemperateParam param = HumitureServer.GetTemperateParam(Config.GetTempAddrList());
if (param != null)
{
boxStatus.humidity = param.Humidity.ToString();
boxStatus.temperature = param.Temperate.ToString();
}
lineOperation.boxStatus.Add(StoreID, boxStatus);
if (!alarmType.Equals(StoreAlarmType.None))
{
lineOperation.alarmList.Add(alarmInfo);
}
return lineOperation;
}
public void SendLineStatus()
{
//构建发送给服务器的对象
Operation lineOperation = getLineBoxStatus();
//如果还没湿度范围,先获取
if (Max_Humidity <= 0 || (Max_Temperature <= 0))
{
lineOperation.op = 5;
LogUtil.info(LOGGER, StoreName + "没有湿度预警范围,需要从服务器获取,发送OP=" + lineOperation.op);
}
string server = ConfigAppSettings.GetValue(Setting_Init.http_server);
Operation resultOperation = HttpHelper.Post(StoreManager.GetPostApi(server), lineOperation, false);
//发送状态信息到服务器
if (resultOperation == null || (resultOperation.op.Equals(0)))
{
//判断服务端是否返回出库操作
return;
}
LogUtil.info(LOGGER, StoreName + "收到服务器命令,OP=" + resultOperation.op);
if (resultOperation.op.Equals(1))
{
ProcessInStoreCMD(resultOperation, "");
}
else if (resultOperation.op.Equals(2))
{
ProcessOutStoreCMD(resultOperation);
}
else if (resultOperation.op.Equals(4))
{
ServerScanProcess(resultOperation);
}
else if (resultOperation.op.Equals(5))
{
ProcessHumidityCMD(resultOperation);
}
}
#endregion
#region KNDIO
public void KNDIOMove(string ioType, IO_VALUE ioValue)
{
if (Config.StoreDOList.ContainsKey(ioType))
{
ConfigIO configIo = Config.StoreDOList[ioType];
KNDManager.WriteSingleDO(configIo.DeviceName, configIo.SlaveID, configIo.GetIOAddr(), ioValue);
}
else
{
LogUtil.error(LOGGER, StoreName + "没有DO=" + ioType);
}
}
public IO_VALUE KNDIOValue(string ioType)
{
IO_VALUE ioValue = IO_VALUE.LOW;
if (Config.StoreDIList.ContainsKey(ioType))
{
ConfigIO configIo = Config.StoreDIList[ioType];
ioValue = KNDManager.GetDIValue(configIo.DeviceName, configIo.SlaveID, configIo.GetIOAddr());
//UpdateDoValue(ioType, ioValue);
}
else if (Config.StoreDOList.ContainsKey(ioType))
{
ConfigIO configIo = Config.StoreDOList[ioType];
ioValue = KNDManager.GetDOValue(configIo.DeviceName, configIo.SlaveID, configIo.GetIOAddr());
}
else
{
LogUtil.error(LOGGER, StoreName + "没有DO=" + ioType);
}
return ioValue;
}
#endregion
}
}
\ No newline at end of file
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace OnlineStore.DeviceLibrary
{
partial class KTK_SA_BoxBean
{
#region 自动出入库参数
/// <summary>
/// 料仓内所有的位置列表
/// </summary>
public List<string> PositionNumList = new List<string>();
/// <summary>
/// 入库完成后自动出库,出库完成后自动入库
/// </summary>
public bool autoNext = false;
/// <summary>
/// 自动出入库间隔
/// </summary>
public int autoJiange = 3;
public int autoPositionIndex = 0;
public string autoMsg = "";
#endregion
#region 出入库参数
/// <summary>
/// 当前出入库的次数,超过配置的数量时,需要自动重置一下,再进行出入库
/// </summary>
private int CurrInOutCount = 0;
private int CurrInOutACount = 0;
private bool LoadParamPosition(InOutStoreParam param)
{
if (param == null)
{
return false;
}
//加载位置
if (param.MoveP == null)
{
LineMoveP p = new LineMoveP();
KTKSAStorePostion position = param.GetKTKSAPosition();
if (position == null)
{
LogUtil.error(LOGGER, StoreName + "出入库时发现param中取到的Position=null,没有库位不能执行出入库");
return false;
}
p.ComPress_P1 = Config.CompressAxis_P1_Position;
p.InOut_P1 = Config.InOutAxis_P1_Position;
p.Middle_P1 = Config.MiddleAxis_P1_Position;
p.InOut_P2 = position.InOutAxis_DoorPosition_P2;
//p.UpDown_P1 = position.UpDownAxis_DoorOPosition_P1;
//p.UpDown_P8 = position.UpDownAxis_DoorIBPosition_P8;
p.UpDown_P2 = position.UpDownAxis_DoorIPosition_P2;
p.UpDown_P7 = position.UpDownAxis_DoorOBPosition_P7;
//p.InOut_P2 = Config.InOutAxis_DoorPosition_P2;
p.UpDown_P1 = Config.UpDownAxis_DoorOPosition_P1;
p.UpDown_P8 = Config.UpDownAxis_DoorIBPosition_P8;
//p.UpDown_P2 = Config.UpDownAxis_DoorIPosition_P2;
//p.UpDown_P7 = Config.UpDownAxis_DoorOBPosition_P7;
p.ComPress_P2 = position.CompressAxis_Position_P2;
p.ComPress_P3 = position.CompressAxis_CPosition_P3;
p.InOut_P3 = position.InOutAxis_Position_P3;
p.Middle_P2 = position.MiddleAxis_Position_P2;
p.UpDown_P3 = position.UpDownAxis_IHPosition_P3;
p.UpDown_P4 = position.UpDownAxis_ILPosition_P4;
p.UpDown_P5 = position.UpDownAxis_OHPosition_P5;
p.UpDown_P6 = position.UpDownAxis_OLPosition_P6;
param.MoveP = p;
return true;
}
return true;
}
#endregion
#region 出入库结果验证
private void InOutBackToP1(int InOut_P1)
{
AxisMove(Config.InOut_Axis, InOut_P1, Config.InOutAxis_P1_Speed, Config.InOut_Axis.StartSpeed);
StoreMove.WaitList.Add(WaitResultInfo.WaitAxisOrg(Config.InOut_Axis,IO_VALUE.HIGH));
}
private void CheckWait()
{
List<WaitResultInfo> list = StoreMove.WaitList;
//当等待超过一分钟时,需要打印提示
TimeSpan span = DateTime.Now - StoreMove.LastSetpTime;
if (span.TotalMinutes > 5)
{
WarnMsg = StoreName + "等待超时【" + StoreMove.MoveType + "】【" + StoreMove.MoveStep + "】已等待【" + span.TotalMinutes + "】分钟,";
foreach (WaitResultInfo wait in list)
{
WarnMsg = WarnMsg + "\r\n" + wait.ToStr();
}
LogUtil.error(LOGGER, WarnMsg, 12);
Alarm(StoreAlarmType.IoSingleTimeOut,"",WarnMsg,StoreMove.MoveType);
}
if (list.Count > 0)
{
bool isOk = true;
foreach (WaitResultInfo wait in list)
{
if (wait.WaitType == 1)
{
if (wait.IsHomeMove)
{
if ((!HomeMoveIsEnd(wait.AxisInfo)))
{
isOk = false;
break;
}
}
else
{
string msg = "";
bool isEnd = AxisMoveIsEnd(wait.AxisInfo, wait.TargetPosition, wait.TargetSpeed, out msg);
if (!msg.Equals(""))
{
isOk = false;
WarnMsg = msg;
Alarm(StoreAlarmType.AxisMoveError, GetAlarmCodeByAxis(wait.AxisInfo).ToString(), WarnMsg, StoreMove.MoveType);
break;
}
else if (!isEnd)
{
isOk = false;
break;
}
}
}
else if (wait.WaitType == 2)
{
if (!KNDIOValue(wait.IoType).Equals(wait.IoValue))
{
//if (wait.IoType.Equals(Store_IO_Type.Door_Down) || wait.IoType.Equals(Store_IO_Type.Door_Up))
//{
// LogUtil.error(LOGGER, StoreName + wait.IoType + "暂时不需要等待");
//}
//else
//{
//一分钟还未检测到
if (span.TotalMilliseconds > Config.IOSingle_TimerOut)
{
ConfigIO io = Config.getWaitIO(wait.IoType);
WarnMsg = StoreName + " 等待信号" + io.DisplayStr + "=" + wait.IoValue + "超时!";
//SendAlarmCode(StoreID, LineAlarm.IoNotOk, wait.IoType);
Alarm(StoreAlarmType.IoSingleTimeOut, io.ElectricalDefinition, WarnMsg, StoreMove.MoveType);
LogUtil.error(LOGGER, StoreName + wait.IoType + "等待信号(" + io.DisplayStr + "=" + wait.IoValue + ") 超时", 14);
}
isOk = false;
break;
//}
}
}
else if (wait.WaitType == 3)
{
if (span.TotalMilliseconds < wait.TimeMSeconds)
{
isOk = false;
break;
}
}
else if (wait.WaitType == 5)
{
if (wait.IsHomeMove)
{
if (!ShuoKeControls.IsHomeMoveEnd(wait.SlvAddr, StoreMove.LastSetpTime))
{
ShuoKeControls.GetStatus(wait.SlvAddr);
isOk = false;
break;
}
else if (StoreMove.OneWaitCanEndStep)
{
isOk = true; break;
}
}
else
{
if (!ShuoKeControls.IsMoveEnd(wait.SlvAddr, StoreMove.LastSetpTime))
{
ShuoKeControls.GetStatus(wait.SlvAddr);
isOk = false;
break;
}
else if (StoreMove.OneWaitCanEndStep)
{
isOk = true; break;
}
}
}
else if (wait.WaitType == 6)
{
IO_VALUE orgValue = KTKSMCManager.GetOrgValue(wait.AxisInfo.DeviceName, wait.AxisInfo.GetAxisValue());
if (!orgValue.Equals(wait.IoValue))
{
isOk = false;
break;
}
else if (StoreMove.OneWaitCanEndStep)
{
isOk = true;
break;
}
}
}
if (isOk)
{
StoreMove.EndStepWait();
}
}
else
{
StoreMove.EndStepWait();
}
}
#endregion
#region 入库
/// <summary>
/// 开始入库移动移动
/// </summary>
public void StartInStoreMove(InOutStoreParam param, bool isNeedCheckIO)
{
string posId = param != null ? param.PositionNum : "";
if (storeRunStatus == StoreRunStatus.Runing)
{
if (!LoadParamPosition(param))
{
LogUtil.error(LOGGER, StoreName + " 启动一个 入库运动出错,找不到库位信息");
return;
}
LogUtil.info(LOGGER, StoreName + " 入库【" + posId + "】处理:启动新的入库,目标位置【" + param.PositionNum + "】", storeMoveColor);
storeRunStatus = StoreRunStatus.Busy;
storeStatus = StoreStatus.InStoreExecute;
StoreMove.NewMove(StoreMoveType.InStore, param);
if (isNeedCheckIO)
{
//料盘检测
InStoreLog(" 入库【" + posId + "】处理:(SI_00_TrayCheck 检测料盘信号");
StoreMove.NextMoveStep(StoreMoveStep.SI_00_TrayCheck);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.TrayCheck_1, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.TrayCheck_2, IO_VALUE.HIGH));
}
else
{
if (IsHasCompress_Axis)
{
InStoreLog(" 入库处理:(SI_02_InOutAxisHome 进出轴(叉子)动作至P1, 打开舱门");
StoreMove.NextMoveStep(StoreMoveStep.SI_02_InOutAxisHome);
//打开门 ,门上升
KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.LOW);
KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.HIGH);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Down, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Up, IO_VALUE.HIGH));
//AxisMove(Config.InOut_Axis, param.MoveP.InOut_P1, Config.InOutAxis_P1_Speed, Config.InOut_Axis.StartSpeed);
InOutBackToP1(param.MoveP.InOut_P1);
}
else
{
InStoreLog(" 入库处理:(SI_01_LocationCylinderDown 定位气缸下降");
StoreMove.NextMoveStep(StoreMoveStep.SI_01_LocationCylinderDown);
KNDIOMove(Store_IO_Type.LocationCylinder_Up, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.LocationCylinder_Down, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Up, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Down, IO_VALUE.LOW));
}
}
}
else
{
LogUtil.error(LOGGER, StoreName + " 启动一个 入库【" + posId + "】运动出错,当前状态,storeStatus=" + storeRunStatus);
}
}
/// <summary>
/// 开始入库移动移动
/// </summary>
public override void StartInStoreMove(InOutStoreParam param)
{
StartInStoreMove(param, false);
}
protected override void InStoreProcess()
{
LineMoveP moveP = StoreMove.MoveParam.MoveP;
if (StoreMove.IsInWait)
{
CheckWait();
}
if (StoreMove.IsInWait)
{
return;
}
if (StoreMove.MoveStep == StoreMoveStep.SI_00_TrayCheck)
{
if (IsHasCompress_Axis)
{
InStoreLog(" 入库处理:(SI_02_InOutAxisHome 进出轴(叉子)动作至P1,打开舱门");
StoreMove.NextMoveStep(StoreMoveStep.SI_02_InOutAxisHome);
//打开门 ,门上升
KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.LOW);
KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.HIGH);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Down, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Up, IO_VALUE.HIGH));
//AxisMove(Config.InOut_Axis, moveP.InOut_P1, Config.InOutAxis_P1_Speed, Config.InOut_Axis.StartSpeed);
InOutBackToP1(moveP.InOut_P1);
}
else
{
InStoreLog(" 入库处理:(SI_01_LocationCylinderDown 定位气缸下降");
StoreMove.NextMoveStep(StoreMoveStep.SI_01_LocationCylinderDown);
KNDIOMove(Store_IO_Type.LocationCylinder_Down, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.LocationCylinder_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Up, IO_VALUE.LOW));
}
}
if (StoreMove.MoveStep == StoreMoveStep.SI_01_LocationCylinderDown)
{
InStoreLog(" 入库处理:(SI_02_InOutAxisHome 进出轴(叉子)动作至P1,打开舱门");
StoreMove.NextMoveStep(StoreMoveStep.SI_02_InOutAxisHome);
//AxisMove(Config.InOut_Axis, moveP.InOut_P1, Config.InOutAxis_P1_Speed, Config.InOut_Axis.StartSpeed);
InOutBackToP1(moveP.InOut_P1);
//打开门 ,门上升
KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.LOW);
KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.HIGH);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Down, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Up, IO_VALUE.HIGH));
//AxisMove(Config.InOut_Axis, moveP.InOut_P1, Config.InOutAxis_P1_Speed, Config.InOut_Axis.StartSpeed);
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_02_InOutAxisHome)
{
InStoreLog(" 入库处理:(SI_03_ReturnHome 所有轴先回到待机点,轴2、轴1 动作到P1,,轴4动作至P3");
StoreMove.NextMoveStep(StoreMoveStep.SI_03_ReturnHome);
if (IsHasCompress_Axis)
{
ShuoKeControls.AbsMove(Config.CompressAxis_Slv, moveP.ComPress_P3);
StoreMove.WaitList.Add(WaitResultInfo.WaitShuoKe(Config.CompressAxis_Slv, moveP.ComPress_P3, false));
}
AxisMove(Config.UpDown_Axis, moveP.UpDown_P1, Config.UpDownAxis_P1_Speed, Config.UpDown_Axis.StartSpeed);
AxisMove(Config.Middle_Axis, moveP.Middle_P1, Config.MiddleAxis_P1_Speed, Config.Middle_Axis.StartSpeed);
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_03_ReturnHome)
{
if (IsHasCompress_Axis)
{
InStoreLog(" 入库处理:(SI_04_CompressWare 压紧物品(有压紧轴的才需要此步骤),轴4( 压紧) 至P3(压紧前点))开始");
StoreMove.NextMoveStep(StoreMoveStep.SI_04_CompressWare);
ShuoKeControls.AbsMove(Config.CompressAxis_Slv, moveP.ComPress_P3);
StoreMove.WaitList.Add(WaitResultInfo.WaitShuoKe(Config.CompressAxis_Slv, moveP.ComPress_P3, false));
}
else
{
InStoreLog(" 入库处理:(SI_05_DeviceToDoor 叉子进入入料口,轴3( 叉子) 至P2( 进料口取料点)),打开光源,开始");
StoreMove.NextMoveStep(StoreMoveStep.SI_05_DeviceToDoor);
Thread.Sleep(100);
KNDIOMove(Store_IO_Type.CameraLight_Power, IO_VALUE.HIGH);
AxisMove(Config.InOut_Axis, moveP.InOut_P2, Config.InOutAxis_P2_Speed, Config.InOut_Axis.StartSpeed);
}
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_04_CompressWare)
{
InStoreLog(" 入库处理:(SI_05_DeviceToDoor 叉子进入入料口,轴3( 叉子) 至P2( 进料口取料点)),打开光源,开始");
StoreMove.NextMoveStep(StoreMoveStep.SI_05_DeviceToDoor);
Thread.Sleep(100);
KNDIOMove(Store_IO_Type.CameraLight_Power, IO_VALUE.HIGH);
AxisMove(Config.InOut_Axis, moveP.InOut_P2, Config.InOutAxis_P2_Speed, Config.InOut_Axis.StartSpeed);
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_05_DeviceToDoor)
{
InStoreLog(" 入库处理:(SI_06_DoorWarToDevice 把物品放入叉子上,轴4( 压紧) 至P2(压紧点))开始,等待一秒后,轴2( 上下) 至P7( 进料口取料缓冲点))开始");
StoreMove.NextMoveStep(StoreMoveStep.SI_06_DoorWarToDevice);
if (IsHasCompress_Axis)
{
ShuoKeControls.AbsMove(Config.CompressAxis_Slv, moveP.ComPress_P2);
StoreMove.WaitList.Add(WaitResultInfo.WaitShuoKe(Config.CompressAxis_Slv, moveP.ComPress_P2, false));
//AxisMove(Config.Compress_Axis, moveP.ComPress_P2, Config.CompressAxis_P2_Speed, Config.Compress_Axis.StartSpeed);
System.Threading.Thread.Sleep(600);
}
AxisMove(Config.UpDown_Axis, moveP.UpDown_P7, Config.UpDownAxis_P7_Speed, Config.UpDown_Axis.StartSpeed);
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_06_DoorWarToDevice)
{
InStoreLog(" 入库处理:(SI_07_DeviceBackFromDoor 叉子 从入料口抽出,轴3( 叉子) 至P1( 待机点))开始");
StoreMove.NextMoveStep(StoreMoveStep.SI_07_DeviceBackFromDoor);
InOutBackToP1(moveP.InOut_P1);
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_07_DeviceBackFromDoor)
{
if (IsHasCompress_Axis)
{
InStoreLog(" 入库处理:(SI_09_MoveToBag 移动到库位点,轴1( 转盘) 至P2( 库位点)轴2(上下) 至P3(库位入库前点)),关闭舱门,关闭光源,开始");
StoreMove.NextMoveStep(StoreMoveStep.SI_09_MoveToBag);
AxisMove(Config.Middle_Axis, moveP.Middle_P2, Config.MiddleAxis_P2_Speed, Config.Middle_Axis.StartSpeed);
AxisMove(Config.UpDown_Axis, moveP.UpDown_P3, Config.UpDownAxis_P3_Speed, Config.UpDown_Axis.StartSpeed);
//关闭舱门
KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.LOW);
Thread.Sleep(100);
KNDIOMove(Store_IO_Type.CameraLight_Power, IO_VALUE.LOW);
}
else
{
InStoreLog(" 入库处理:(SI_08_LocationCylinder_Up 定位气缸伸出 (有压紧轴的不需要此步骤),开始");
StoreMove.NextMoveStep(StoreMoveStep.SI_08_LocationCylinder_Up);
KNDIOMove(Store_IO_Type.LocationCylinder_Down, IO_VALUE.LOW);
KNDIOMove(Store_IO_Type.LocationCylinder_Up, IO_VALUE.HIGH);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Down, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Up, IO_VALUE.HIGH));
}
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_08_LocationCylinder_Up)
{
InStoreLog(" 入库处理:(SI_09_MoveToBag 移动到库位点,轴1( 转盘) 至P2( 库位点)轴2(上下) 至P3(库位入库前点)),关闭舱门 ,关闭光源, 开始");
StoreMove.NextMoveStep(StoreMoveStep.SI_09_MoveToBag);
AxisMove(Config.Middle_Axis, moveP.Middle_P2, Config.MiddleAxis_P1_Speed, Config.Middle_Axis.StartSpeed);
AxisMove(Config.UpDown_Axis, moveP.UpDown_P3, Config.UpDownAxis_P3_Speed, Config.UpDown_Axis.StartSpeed);
//关闭舱门
KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.LOW);
Thread.Sleep(100);
KNDIOMove(Store_IO_Type.CameraLight_Power, IO_VALUE.HIGH);
//StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Down, IO_VALUE.HIGH));
//StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Up, IO_VALUE.LOW));
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_09_MoveToBag)
{
if (IsHasCompress_Axis)
{
InStoreLog(" 入库处理:(SI_11_DeviceToBag 叉子进入库位中,轴3( 叉子) 至P3(库位取放料点))开始");
StoreMove.NextMoveStep(StoreMoveStep.SI_11_DeviceToBag);
AxisMove(Config.InOut_Axis, moveP.InOut_P3, Config.InOutAxis_P3_Speed, Config.InOut_Axis.StartSpeed);
}
else
{
InStoreLog(" 入库处理:(SI_10_LocationCylinder_Down 定位气缸退回 (有压紧轴的不需要此步骤) )开始");
StoreMove.NextMoveStep(StoreMoveStep.SI_10_LocationCylinder_Down);
KNDIOMove(Store_IO_Type.LocationCylinder_Down, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.LocationCylinder_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Up, IO_VALUE.LOW));
}
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_10_LocationCylinder_Down)
{
KNDIOMove(Store_IO_Type.LocationCylinder_Down, IO_VALUE.LOW);
InStoreLog(" 入库处理:(SI_11_DeviceToBag 叉子进入库位中,轴3( 叉子) 至P3(库位取放料点))开始");
StoreMove.NextMoveStep(StoreMoveStep.SI_11_DeviceToBag);
AxisMove(Config.InOut_Axis, moveP.InOut_P3, Config.InOutAxis_P3_Speed, Config.InOut_Axis.StartSpeed);
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_11_DeviceToBag)
{
InStoreLog(" 入库处理:(SI_12_PutWareToBag 放下物品,轴2( 上下) 至P4( 库位入料缓冲点)轴4( 压紧) 至P3( 压紧前点))开始!");
StoreMove.NextMoveStep(StoreMoveStep.SI_12_PutWareToBag);
if (IsHasCompress_Axis)
{
ShuoKeControls.AbsMove(Config.CompressAxis_Slv, moveP.ComPress_P3);
StoreMove.WaitList.Add(WaitResultInfo.WaitShuoKe(Config.CompressAxis_Slv, moveP.ComPress_P3, false));
//AxisMove(Config.Compress_Axis, moveP.ComPress_P3, Config.CompressAxis_P3_Speed, Config.Compress_Axis.StartSpeed);
}
AxisMove(Config.UpDown_Axis, moveP.UpDown_P4, Config.UpDownAxis_P4_Speed, Config.UpDown_Axis.StartSpeed);
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_12_PutWareToBag)
{
InStoreLog(" 入库处理:(SI_13_DeviceBackFromBag 叉子从库位中返回,轴3( 叉子) 动作至P1( 待机点))开始!");
// 5= 入仓位完成(料仓Box把料盘放入对应的库位中,装置还未恢复原始状态)
string posId = StoreMove.MoveParam != null ? StoreMove.MoveParam.PositionNum : "";
lastPosId = posId;
lastPosIdStatus = StoreStatus.InStoreEnd;
storeStatus = StoreStatus.InStoreEnd;
//手动发给服务器状态,防止没有手动
//SendLineStatus(StoreID, posId, StoreStatus.InStoreEnd);
StoreMove.NextMoveStep(StoreMoveStep.SI_13_DeviceBackFromBag);
//AxisMove(Config.InOut_Axis, moveP.InOut_P1, Config.InOutAxis_P1_Speed, Config.InOut_Axis.StartSpeed);
InOutBackToP1(moveP.InOut_P1);
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_13_DeviceBackFromBag)
{
InStoreLog(" 入库处理:(SI_14_GoBack 返回待机点,轴2/轴1/轴4动作至P1( 待机点)),检测门关闭,开始!");
StoreMove.NextMoveStep(StoreMoveStep.SI_14_GoBack);
if (IsHasCompress_Axis)
{
ShuoKeControls.AbsMove(Config.CompressAxis_Slv, moveP.ComPress_P1);
StoreMove.WaitList.Add(WaitResultInfo.WaitShuoKe(Config.CompressAxis_Slv, moveP.ComPress_P1, false));
//AxisMove(Config.Compress_Axis, moveP.ComPress_P1, Config.CompressAxis_P1_Speed, Config.Compress_Axis.StartSpeed);
}
AxisMove(Config.Middle_Axis, moveP.Middle_P1, Config.MiddleAxis_P1_Speed, Config.Middle_Axis.StartSpeed);
AxisMove(Config.UpDown_Axis, moveP.UpDown_P1, Config.UpDownAxis_P1_Speed, Config.UpDown_Axis.StartSpeed);
//关闭门
KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Up, IO_VALUE.LOW));
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_14_GoBack)
{
string posId = StoreMove.MoveParam != null ? StoreMove.MoveParam.PositionNum : "";
LogUtil.info(LOGGER, StoreName + " 入库【" + posId + "】处理: 整个入库流程结束!", storeMoveColor);
//MoveEndEvent.Invoke(StoreID, StoreMoveType.InStore, StoreMove.MoveParam);//触发完成事件
StoreMove.EndMove();
storeRunStatus = StoreRunStatus.Runing;
//设备连接,入库后,BOX恢复原始状态
storeStatus = StoreStatus.StoreOnline;
InOutEndProcess(StoreMoveType.InStore);
}
else
{
LogUtil.info(LOGGER, StoreName + " 入库处理,moveStatus=" + StoreMove.MoveStep + ",没有对应的处理!");
}
}
#endregion
#region 出库
/// <summary>
/// 开始出库运动
/// </summary>
public override void StartOutStoreMove(InOutStoreParam param)
{
string posId = param != null ? param.PositionNum : "";
if (storeRunStatus == StoreRunStatus.Runing)
{
if (!LoadParamPosition(param))
{
LogUtil.error(LOGGER, StoreName + " 启动一个 出库【" + posId + "】运动出错,找不到库位信息");
return;
}
storeStatus = StoreStatus.OutStoreExecute;
LogUtil.info(LOGGER, StoreName + " 出库处理:启动一个出库【" + posId + "】 开始处理 ", storeMoveColor);
storeRunStatus = StoreRunStatus.Busy;
StoreMove.NewMove(StoreMoveType.OutStore, param);
if (IsHasCompress_Axis)
{
StoreMove.NextMoveStep(StoreMoveStep.SO_02_DeviceBack);
OutStoreLog(" 出库处理:(SO_02_DeviceBack 叉子先运动到P1 ,打开舱门 开始");
//AxisMove(Config.InOut_Axis, StoreMove.MoveParam.MoveP.InOut_P1, Config.InOutAxis_P1_Speed, Config.InOut_Axis.StartSpeed);
InOutBackToP1(StoreMove.MoveParam.MoveP.InOut_P1);
//打开舱门
//KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.HIGH);
//KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.LOW);
//StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Up, IO_VALUE.HIGH));
//StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Down, IO_VALUE.LOW));
}
else
{
StoreMove.NextMoveStep(StoreMoveStep.SO_01_LocationCylinderDown);
OutStoreLog(" 出库处理:(SO_01_LocationCylinderDown 定位气缸下降");
KNDIOMove(Store_IO_Type.LocationCylinder_Down, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.LocationCylinder_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Up, IO_VALUE.LOW));
//CylinderMove(StoreMove, Store_IO_Type.LocationCylinder_Up, Store_IO_Type.LocationCylinder_Down);
}
}
else
{
LogUtil.error(LOGGER, StoreName + " 启动一个 出库运动出错,当前状态,storeStatus=" + storeRunStatus);
}
}
protected override void OutStoreProcess()
{
LineMoveP moveP = StoreMove.MoveParam.MoveP;
if (StoreMove.IsInWait)
{
CheckWait();
}
if (StoreMove.IsInWait)
{
return;
}
if (StoreMove.MoveStep == StoreMoveStep.SO_01_LocationCylinderDown)
{
StoreMove.NextMoveStep(StoreMoveStep.SO_02_DeviceBack);
OutStoreLog(" 出库处理:(SO_02_DeviceBack 叉子先运动到P1 开始");
//AxisMove(Config.InOut_Axis, StoreMove.MoveParam.MoveP.InOut_P1, Config.InOutAxis_P1_Speed, Config.InOut_Axis.StartSpeed);
InOutBackToP1(StoreMove.MoveParam.MoveP.InOut_P1);
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_02_DeviceBack)
{
StoreMove.NextMoveStep(StoreMoveStep.SO_03_ToBagPosition);
OutStoreLog(" 出库处理:(SO_03_ToBagPosition 所有轴运行到库位, 轴4( 压紧) 至P3(压紧前点) ,轴1( 转盘) 至P2( 库位点),轴2(上下) 至P5(库位出库前点) ) 开始");
if (IsHasCompress_Axis)
{
ShuoKeControls.AbsMove(Config.CompressAxis_Slv, moveP.ComPress_P3);
StoreMove.WaitList.Add(WaitResultInfo.WaitShuoKe(Config.CompressAxis_Slv, moveP.ComPress_P3, false));
//AxisMove(Config.Compress_Axis, StoreMove.MoveParam.MoveP.ComPress_P3, Config.CompressAxis_P3_Speed, Config.Compress_Axis.StartSpeed);
}
AxisMove(Config.Middle_Axis, StoreMove.MoveParam.MoveP.Middle_P2, Config.MiddleAxis_P2_Speed, Config.Middle_Axis.StartSpeed);
AxisMove(Config.UpDown_Axis, StoreMove.MoveParam.MoveP.UpDown_P5, Config.UpDownAxis_P5_Speed, Config.UpDown_Axis.StartSpeed);
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_03_ToBagPosition)
{
StoreMove.NextMoveStep(StoreMoveStep.SO_04_DeviceToBag);
OutStoreLog(" 出库处理:(SO_04_DeviceToBag叉子进入库位中, 轴3( 叉子) 至P3(库位取放料点))开始");
AxisMove(Config.InOut_Axis, moveP.InOut_P3, Config.InOutAxis_P3_Speed, Config.InOut_Axis.StartSpeed);
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_04_DeviceToBag)
{
OutStoreLog(" 出库处理:(SO_05_BagWareToDevice库位的物品放入叉子上,轴2( 上下) 至P6( 库位出料缓冲点),轴4( 压紧) 至P2(压紧点))开始");
StoreMove.NextMoveStep(StoreMoveStep.SO_05_BagWareToDevice);
//电缸微动至对应料盘的上端位置
if (IsHasCompress_Axis)
{
ShuoKeControls.AbsMove(Config.CompressAxis_Slv, moveP.ComPress_P2);
StoreMove.WaitList.Add(WaitResultInfo.WaitShuoKe(Config.CompressAxis_Slv, moveP.ComPress_P2, false));
//AxisMove(Config.Compress_Axis, moveP.ComPress_P2, Config.CompressAxis_P2_Speed, Config.Compress_Axis.StartSpeed);
}
AxisMove(Config.UpDown_Axis, moveP.UpDown_P6, Config.UpDownAxis_P6_Speed, Config.UpDown_Axis.StartSpeed);
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_05_BagWareToDevice)
{
StoreMove.NextMoveStep(StoreMoveStep.SO_06_BagDeviceBack);
OutStoreLog(" 出库处理:(SO_06_BagDeviceBack,叉子从 库位返回,轴3( 叉子) 至P1( 待机点))开始");
//AxisMove(Config.InOut_Axis, moveP.InOut_P1, Config.InOutAxis_P1_Speed, Config.InOut_Axis.StartSpeed);
InOutBackToP1(moveP.InOut_P1);
//把库位的物品放到取到叉子上之后是出仓完成
string posId = StoreMove.MoveParam != null ? StoreMove.MoveParam.PositionNum : "";
lastPosId = posId;
lastPosIdStatus = StoreStatus.OutStoreBoxEnd;
storeStatus = StoreStatus.OutStoreBoxEnd;
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_06_BagDeviceBack)
{
if (IsHasCompress_Axis)
{
StoreMove.NextMoveStep(StoreMoveStep.SO_08_ToDoorPosition);
OutStoreLog(" 出库处理: (SO_08_ToDoorPosition所有设备运行到门,,轴1( 转盘) 至P1( 待机点)轴2( 上下) 至P2( 进料口出料前点)),打开舱门 开始");
AxisMove(Config.UpDown_Axis, moveP.UpDown_P2, Config.UpDownAxis_P2_Speed, Config.UpDown_Axis.StartSpeed);
AxisMove(Config.Middle_Axis, moveP.Middle_P1, Config.MiddleAxis_P1_Speed, Config.Middle_Axis.StartSpeed);
//打开舱门
Thread.Sleep(100);
KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Up, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Down, IO_VALUE.LOW));
//此处需要等待box门口没有盘
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.TrayCheck_1, IO_VALUE.LOW));
if (Config.StoreDIList.ContainsKey(Store_IO_Type.TrayCheck_2))
{
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.TrayCheck_2, IO_VALUE.LOW));
}
}
else
{
StoreMove.NextMoveStep(StoreMoveStep.SO_07_LocationCylinder_Up);
OutStoreLog(" 出库处理: (SO_07_LocationCylinder_Up定位气缸伸出(有压紧轴的不需要此步骤),,定位气缸伸出 )开始");
//同时运动,电缸移动至入料口的上端位置 旋转电机2反转
KNDIOMove(Store_IO_Type.LocationCylinder_Down, IO_VALUE.LOW);
KNDIOMove(Store_IO_Type.LocationCylinder_Up, IO_VALUE.HIGH);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Down, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Up, IO_VALUE.HIGH));
}
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_07_LocationCylinder_Up)
{
StoreMove.NextMoveStep(StoreMoveStep.SO_08_ToDoorPosition);
OutStoreLog(" 出库处理: (SO_08_ToDoorPosition所有设备运行到门,,轴1( 转盘) 至P1( 待机点)轴2( 上下) 至P2( 进料口出料前点)),打开舱门,开始");
AxisMove(Config.UpDown_Axis, moveP.UpDown_P2, Config.UpDownAxis_P2_Speed, Config.UpDown_Axis.StartSpeed);
AxisMove(Config.Middle_Axis, moveP.Middle_P1, Config.MiddleAxis_P1_Speed, Config.Middle_Axis.StartSpeed);
//此处需要等待box门口没有盘
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.TrayCheck_1, IO_VALUE.LOW));
if (Config.StoreDIList.ContainsKey(Store_IO_Type.TrayCheck_2))
{
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.TrayCheck_2, IO_VALUE.LOW));
}
//打开舱门
KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Up, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Down, IO_VALUE.LOW));
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_08_ToDoorPosition)
{
if (IsHasCompress_Axis)
{
StoreMove.NextMoveStep(StoreMoveStep.SO_10_DeviceToDoor);
OutStoreLog(" 出库处理:(SO_10_DeviceToDoor叉子进出料口,,轴3( 叉子) 至P2( 进料口取料点)),打开光源,开始");
Thread.Sleep(100);
KNDIOMove(Store_IO_Type.CameraLight_Power, IO_VALUE.HIGH);
AxisMove(Config.InOut_Axis, moveP.InOut_P2, Config.InOutAxis_P2_Speed, Config.InOut_Axis.StartSpeed);
}
else
{
StoreMove.NextMoveStep(StoreMoveStep.SO_09_LocationCylinder_Down);
OutStoreLog(" 出库处理:(SO_09_LocationCylinder_Down定位气缸退回(有压紧轴的不需要此步骤),,定位气缸退回 )开始");
KNDIOMove(Store_IO_Type.LocationCylinder_Down, IO_VALUE.HIGH);
KNDIOMove(Store_IO_Type.LocationCylinder_Up, IO_VALUE.LOW);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.LocationCylinder_Up, IO_VALUE.LOW));
}
}
//此处需要等待移栽没有工作,才能把盘放入出料口
else if (StoreMove.MoveStep == StoreMoveStep.SO_09_LocationCylinder_Down)
{
OutStoreLog(" 出库处理:(SO_10_DeviceToDoor叉子进出料口,,轴3( 叉子) 至P2( 进料口取料点)),打开光源,开始");
Thread.Sleep(100);
KNDIOMove(Store_IO_Type.CameraLight_Power, IO_VALUE.HIGH);
StoreMove.NextMoveStep(StoreMoveStep.SO_10_DeviceToDoor);
AxisMove(Config.InOut_Axis, moveP.InOut_P2, Config.InOutAxis_P2_Speed, Config.InOut_Axis.StartSpeed);
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_10_DeviceToDoor)
{
OutStoreLog(" 出库处理:(SO_11_DevicePutWare把物品放下,,轴2( 上下) 至P8( 进料口出料缓冲点)轴4( 压紧) 至P1( 待机点)) 开始!");
StoreMove.NextMoveStep(StoreMoveStep.SO_11_DevicePutWare);
if (IsHasCompress_Axis)
{
ShuoKeControls.AbsMove(Config.CompressAxis_Slv, moveP.ComPress_P1);
StoreMove.WaitList.Add(WaitResultInfo.WaitShuoKe(Config.CompressAxis_Slv, moveP.ComPress_P1, false));
}
AxisMove(Config.UpDown_Axis, moveP.UpDown_P8, Config.UpDownAxis_P8_Speed, Config.UpDown_Axis.StartSpeed);
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_11_DevicePutWare)
{
StoreMove.NextMoveStep(StoreMoveStep.SO_12_DeviceOutFromDoor);
OutStoreLog(" 出库处理:(SO_12_DeviceOutFromDoor叉子从出料口返回,,轴3( 叉子) 动作至P1( 待机点))开始!");
InOutBackToP1(moveP.InOut_P1);
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_12_DeviceOutFromDoor)
{
StoreMove.NextMoveStep(StoreMoveStep.SO_13_GoBack);
OutStoreLog(" 出库处理:(SO_13_GoBack升降轴返回,, 轴2至P1( 待机点))开始,关闭舱门!");
AxisMove(Config.UpDown_Axis, moveP.UpDown_P1, Config.UpDownAxis_P1_Speed, Config.UpDown_Axis.StartSpeed);
KNDIOMove(Store_IO_Type.Door_Up, IO_VALUE.LOW);
KNDIOMove(Store_IO_Type.Door_Down, IO_VALUE.HIGH);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Up, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(Store_IO_Type.Door_Down, IO_VALUE.HIGH));
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_13_GoBack)
{
string posId = StoreMove.MoveParam != null ? StoreMove.MoveParam.PositionNum : "";
storeStatus = StoreStatus.StoreOnline;
LogUtil.info(LOGGER, StoreName + " 出库【" + posId + "】处理: 整个出库流程结束,关闭光源!", storeMoveColor);
KNDIOMove(Store_IO_Type.CameraLight_Power, IO_VALUE.LOW);
StoreMove.EndMove();
storeRunStatus = StoreRunStatus.Runing;
InOutEndProcess(StoreMoveType.OutStore);
}
else
{
LogUtil.error(LOGGER, StoreName + " 出库处理,moveStatus=" + StoreMove.MoveStep + ",没有对应的处理!");
}
}
#endregion
public List<FixtureCodeInfo> waitOutStoreList = new List<FixtureCodeInfo>();
public object waitOutListLock = "";
public void AddWaitOutInfo(FixtureCodeInfo code)
{
lock (waitOutListLock)
{
waitOutStoreList.Add(code);
}
}
private void InOutEndProcess(StoreMoveType storeMoveType)
{
try
{
CurrInOutCount++;
CurrInOutACount++;
//是否自动进入出库状态
if (!autoNext)
{
return;
}
if (storeMoveType.Equals(StoreMoveType.InStore))
{
int newIndex = autoPositionIndex - 1;
if (autoJiange == 0)
{
newIndex = autoPositionIndex;
}
if (newIndex < 0)
{
autoNext = false;
autoMsg = "自动出入库结束!";
LogUtil.info(LOGGER, StoreName + "下一个索引不存在,自动 出入库结束!");
}
else
{
autoPositionIndex = newIndex;
string posid = PositionNumList[autoPositionIndex];
//判断是否需要重置
if (CurrInOutACount >= Config.Box_ResetACount)
{
LogUtil.info(LOGGER, StoreName + "自动进入下一个出库:posid=" + posid + ",当时已经出入库" + CurrInOutACount + "次,需要重置BOX,先把出库信息存入排队列表中");
Reset(false);
autoMsg = "自动出库:" + posid;
AddWaitOutInfo(new FixtureCodeInfo(0, "", posid));
}
else if (CurrInOutCount >= Config.Box_ResetMCount)
{
LogUtil.info(LOGGER, StoreName + "自动进入下一个出库:posid=" + posid + ",当时已经出入库" + CurrInOutCount + "次,需要重置BOX旋转轴,先把出库信息存入排队列表中");
ResetMiddleAxis(false);
autoMsg = "自动出库:" + posid;
AddWaitOutInfo(new FixtureCodeInfo(0, "", posid));
}
else
{
LogUtil.info(LOGGER, StoreName + "自动进入下一个出库:posid=" + posid);
autoMsg = "自动出库:" + posid;
StartOutStoreMove(new InOutStoreParam("", posid));
}
}
}
else if (storeMoveType.Equals(StoreMoveType.OutStore))
{
int newIndex = autoPositionIndex - autoJiange;
if (newIndex < 0)
{
autoNext = false;
autoMsg = "自动出入库结束!";
LogUtil.info(LOGGER, StoreName + "下一个索引不存在,自动 出入库结束!");
}
else
{
string posid = PositionNumList[newIndex];
//判断是否需要重置
if (CurrInOutACount >= Config.Box_ResetACount)
{
LogUtil.info(LOGGER, StoreName + "自动进入下一个入库:posid=" + posid + ",当时已经出入库" + CurrInOutACount + "次,需要重置BOX,先把入库信息存入排队列表中");
Reset(false);
autoMsg = "自动入库:" + posid;
AddWaitOutInfo(new FixtureCodeInfo(0, "AAAA", posid));
}
else if (CurrInOutCount >= Config.Box_ResetMCount)
{
LogUtil.info(LOGGER, StoreName + "自动进入下一个出库:posid=" + posid + ",当时已经出入库" + CurrInOutCount + "次,需要重置BOX旋转轴,先把出库信息存入排队列表中");
ResetMiddleAxis(false);
autoMsg = "自动入库:" + posid;
AddWaitOutInfo(new FixtureCodeInfo(0, "AAAA", posid));
}
else
{
LogUtil.info(LOGGER, StoreName + "自动进入下一个入库:posid=" + posid);
autoMsg = "自动入库:" + posid;
StartInStoreMove(new InOutStoreParam("AAAA", posid));
}
}
}
}
catch (Exception ex)
{
LogUtil.error(LOGGER, ex.ToString());
}
}
private void InStoreLog(string msg)
{
string posId = StoreMove.MoveParam != null ? StoreMove.MoveParam.PositionNum : "";
LogUtil.info(LOGGER, StoreName + "【" + posId + "】" + msg, storeMoveColor);
}
private void OutStoreLog(string msg)
{
string posId = StoreMove.MoveParam != null ? StoreMove.MoveParam.PositionNum : "";
LogUtil.info(LOGGER, StoreName + "【" + posId + "】" + msg, storeMoveColor);
}
}
}
using log4net;
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace OnlineStore.DeviceLibrary
{
public class SAStoreManager
{
public static readonly ILog LOGGER = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public static KTK_SA_BoxBean store = null;
private static bool isInit = false;
public static bool IsConnectServer = true;
public SAStoreManager()
{
}
public static void CheckEnum(Type type)
{
if (type.IsEnum)
{
List<int> valueList = new List<int>();
foreach (int item in Enum.GetValues(type))
{
if (valueList.Contains(item))
{
LogUtil.error(LOGGER, type.Name + "枚举值:" + item + "重复存在,请检查代码!");
Application.Exit();
break;
}
valueList.Add(item);
}
}
}
public static KTK_SA_BoxBean InitStore()
{
try
{
if (!isInit)
{
string server = ConfigAppSettings.GetValue(Setting_Init.http_server);
if (server.Equals(""))
{
IsConnectServer = false;
}
else
{
IsConnectServer = true;
}
CheckEnum(typeof(StoreMoveStep));
CheckEnum(typeof(StoreStatus));
CheckEnum(typeof(StoreRunStatus));
isInit = true;
string storeType = ConfigAppSettings.GetValue(Setting_Init.Store_Type);
LogUtil.info(LOGGER, "配置的料仓 类型=" + storeType + ",开始加载料仓配置");
if (storeType == StoreType.RC_KTK_SA)
{
string appPath = Application.StartupPath;
string lineType = ConfigAppSettings.GetValue(Setting_Init.Store_Type);
string CID = ConfigAppSettings.GetValue(Setting_Init.Store_CID);
string linefilePath = appPath + ConfigAppSettings.GetValue(Setting_Init.Store_ConfigPath);
StoreConfig storeConfig = CSVConfigReader.LoadConfig(1, CID, StoreType.RC_KTK_SA, linefilePath);
string positionConfigFile = appPath + ConfigAppSettings.GetValue(Setting_Init.Store_Position_Config);
if (File.Exists(positionConfigFile))
{
LogUtil.info(LOGGER, "加载位置文件:" + positionConfigFile);
CSVPositionReader<KTKSAStorePostion>.ReloadCSVFile(positionConfigFile);
}
KTK_SA_BoxBean storeBean = new KTK_SA_BoxBean((KTK_SA_Config)storeConfig);
storeBean.CID = CID;
LogUtil.info(LOGGER, "加载料仓完成!");
store = storeBean;
return store;
}
}
}
catch (Exception ex)
{
LOGGER.Error("出错:", ex);
MessageBox.Show(ex.ToString(), "加载配置错误(请检查配置)");
Application.Exit();
}
return store;
}
/// <summary>
/// 修改了料仓配置,更新缓存,更新配置文件(只能更新PRO的配置)
/// </summary>
/// <param name="kTK_LA_Store_Config"></param>
public static void UpdateBoxConfig(KTK_SA_Config storeConfig)
{
try
{
//位置配置到文件中
string appPath = Application.StartupPath;
string configFile = appPath + ConfigAppSettings.GetValue(Setting_Init.Store_ConfigPath);
bool result = CSVConfigReader.SaveBoxPosition(configFile, storeConfig);
if (!result)
{
LOGGER.Error("保存配置文件失败:" + configFile);
}
store.Config = storeConfig;
store.MoveAxisConfig();
}
catch (Exception ex)
{
LOGGER.Error("出错:", ex);
}
}
public static bool OpenShuoKe(KTK_SA_BoxBean box)
{
//打开硕科步进驱动器端口
Parity parity = (Parity)box.Config.CompressAxis_PortParity;
StopBits bit = (StopBits)box.Config.CompressAxis_StopBits;
bool result = ShuoKeControls.InitPort(box.Config.CompressAxis_PortName, box.Config.CompressAxis_PortBaudrate,
box.Config.CompressAxis_PortParity, 8, bit);
if (result)
{
LogUtil.info(box.StoreName + "打开硕科步进控制器【" + box.Config.CompressAxis_PortName + "】成功");
return true;
}
else
{
LogUtil.error(LOGGER, box.StoreName + "打开硕科步进控制器【" + box.Config.CompressAxis_PortName + "】失败,启动失败!");
return false;
}
}
}
}
......@@ -20,79 +20,5 @@ namespace OnlineStore.DeviceLibrary
}
public enum IO_TYPE {
/// <summary>
/// 输入io
/// </summary>
DI = 1,
/// <summary>
/// 输出io
/// </summary>
DO = 2,
/// <summary>
/// 扩展板卡输入IO
/// </summary>
EC_DI = 3,
/// <summary>
/// 扩展板卡输出Io
/// </summary>
EC_DO = 4,
/// <summary>
/// 轴IO
/// </summary>
AXIS_IO=5,
/// <summary>
/// 轴MontionIO
/// </summary>
AXIS_MONTION_IO=6,
/// <summary>
/// 康泰克输入IO
/// </summary>
KTK_DI=10,
/// <summary>
/// 康泰克输出IO
/// </summary>
KTK_DO=11,
}
//public class IOUtil
//{
// /// <summary>
// /// Io状态转为二进制字符串的长度
// /// </summary>
// public static int IOStrLength = 16;
// public static int TypeValue = 1000;
// //根据枚举获得类型和索引
// public static IO_TYPE GetIoType(PCI_IO io)
// {
// return (IO_TYPE)((int)io / TypeValue);
// }
// public static int GetIoIndex(PCI_IO io)
// {
// return (int)io % TypeValue;
// }
// //根据枚举获得类型和索引
// public static IO_TYPE GetIoType(PCI_AXIS_IO io)
// {
// return (IO_TYPE)((int)io / TypeValue);
// }
// public static int GetIoIndex(PCI_AXIS_IO io)
// {
// return (int)io % TypeValue;
// }
// public static PCI_IO ToPCIIO(IO_TYPE type, int index)
// {
// return (PCI_IO)((int)type * TypeValue + index);
// }
//}
}
......@@ -18,11 +18,9 @@ namespace OnlineStore.DeviceLibrary
public static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public InOutStoreParam()
{
KTKStoreP = null;
ACStoreP = null;
this.WareNumber = "";
MoveP = null;
KTKSAStoreP = null;
MoveP = null;
}
/// <summary>
/// 新建一个对象
......@@ -31,7 +29,7 @@ namespace OnlineStore.DeviceLibrary
/// <param name="position">仓位号</param>
public InOutStoreParam(string wareNo, string posId)
{
KTKStoreP = null;
ACStoreP = null;
WareNumber = wareNo;
PositionNum = posId;
MoveP = null;
......@@ -39,7 +37,7 @@ namespace OnlineStore.DeviceLibrary
}
public InOutStoreParam(string wareNo, string posId,string plateH,string plateW)
{
KTKStoreP = null;
ACStoreP = null;
WareNumber = wareNo;
PositionNum = posId;
MoveP = null;
......@@ -49,7 +47,7 @@ namespace OnlineStore.DeviceLibrary
}
public InOutStoreParam(string wareNo, string posId, string plateH, string plateW,int trayCode)
{
KTKStoreP = null;
ACStoreP = null;
WareNumber = wareNo;
PositionNum = posId;
MoveP = null;
......@@ -61,81 +59,39 @@ namespace OnlineStore.DeviceLibrary
public InOutStoreParam(string wareNo, string posId, LineMoveP linePosition)
{
KTKStoreP = null;
ACStoreP = null;
WareNumber = wareNo;
PositionNum = posId;
MoveP = linePosition;
IsSolderPaste = false;
}
public InOutStoreParam(string wareNo, string posId, KTKSAStorePostion movep)
public InOutStoreParam(string wareNo, string posId, ACStorePosition movep)
{
KTKStoreP = null;
DBMoveP = null;
ACStoreP = movep;
WareNumber = wareNo;
PositionNum = posId;
MoveP = null;
KTKSAStoreP = movep;
IsSolderPaste = false;
}
public InOutStoreParam(string wareNo, string posId, DoubleLineMoveP linePosition)
{
KTKStoreP = null;
WareNumber = wareNo;
PositionNum = posId;
DBMoveP = linePosition;
MoveP = null;
IsSolderPaste = false;
}
private KTKStorePostion KTKStoreP = null;
private ACStorePosition ACStoreP = null;
public KTKStorePostion GetKTKPosition()
public ACStorePosition GetACPosition()
{
try
{
if (KTKStoreP == null)
if (ACStoreP == null)
{
KTKStoreP = CSVPositionReader<KTKStorePostion>.GetPositon(PositionNum);
ACStoreP = CSVPositionReader<ACStorePosition>.GetPositon(PositionNum);
}
}
catch (Exception ex)
{
LogUtil.error(log, "出入库获取库位信息GetKTKPosition出错:" + ex.ToString());
}
return KTKStoreP;
}
private DoublePosition DBStoreP = null;
public DoublePosition GetDBPostion()
{
try
{
if (DBStoreP == null)
{
DBStoreP = CSVPositionReader<DoublePosition>.GetPositon(PositionNum);
}
}
catch (Exception ex)
{
LogUtil.error(log, "出入库获取库位信息GetDBPostion出错:" + ex.ToString());
}
return DBStoreP;
}
private KTKSAStorePostion KTKSAStoreP = null;
public KTKSAStorePostion GetKTKSAPosition()
{
try
{
if (KTKSAStoreP == null)
{
KTKSAStoreP = CSVPositionReader<KTKSAStorePostion>.GetPositon(PositionNum);
}
}
catch (Exception ex)
{
LogUtil.error(log, "出入库获取库位信息GetKTKSAPosition出错:" + ex.ToString());
}
return KTKSAStoreP;
return ACStoreP;
}
/// <summary>
/// 物品二维码信息
/// </summary>
......@@ -162,8 +118,7 @@ namespace OnlineStore.DeviceLibrary
/// 是否是放入锡膏(在线料仓才需要此字段)
/// </summary>
public bool IsSolderPaste { get; set; }
public DoubleLineMoveP DBMoveP { get; set; }
}
}
......@@ -6,33 +6,7 @@ using System.Text;
namespace OnlineStore.DeviceLibrary
{
/// <summary>
/// 双层料仓的移动信息(电钢上下运动,康泰克旋转)
/// </summary>
public class DoubleLineMoveP
{
/// <summary>
/// 电钢门高位
/// </summary>
public int DooHighPosition { get; set; }
/// <summary>
/// 电钢门低位
/// </summary>
public int DoorLowPosition { get; set; }
/// <summary>
/// 库位高点
/// </summary>
public int BagHighPosition { get; set; }
/// <summary>
/// 库位低点
/// </summary>
public int BagLowPosition { get; set; }
/// <summary>
/// 库位中轴位置
/// </summary>
public int MiddleAxisPosition { get; set; }
}
/// <summary>
/// 康泰克料仓的移动信息
/// </summary>
......
//using log4net;
//using System;
//using System.Collections.Generic;
//using System.Drawing;
//using System.Linq;
//using System.Text;
//
//using OnlineStore.Common;
//using OnlineStore.LoadCSVLibrary;
//namespace OnlineStore.DeviceLibrary
//{
// public abstract class StoreBase
// {
// public static readonly ILog LOGGER = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
// /// <summary>
// /// 料仓ID唯一
// /// </summary>
// public int StoreId { get; set; }
// /// <summary>
// /// 开始运行的时间
// /// </summary>
// public DateTime StartTime { get; set; }
// /// <summary>
// /// 日志颜色
// /// </summary>
// public static Color storeMoveColor = Color.Blue;
// public DateTime statusTime = DateTime.Now;
// /// <summary>
// /// 伺服运行时间列表,key=轴,key=开始时间,value=结束时间
// /// </summary>
// public Dictionary<int, Dictionary<DateTime, DateTime>> AxisRunTimeMap = new Dictionary<int, Dictionary<DateTime, DateTime>>();
// public DateTime middleAxisLastStartTime;
// public DateTime updownAxisLastStartTime;
// /// <summary>
// /// 上下轴报警状态
// /// </summary>
// public int UpDownAxisAlarmCode = 0;
// /// <summary>
// /// 料仓中轴报警状态
// /// </summary>
// public int MiddleAxisAlarmCode = 0;
// /// <summary>
// /// 定时器
// /// </summary>
// protected System.Timers.Timer timersTimer;
// /// <summary>
// /// 料仓状态
// /// </summary>
// protected StoreRunStatus storerunstatus = StoreRunStatus.Wait;
// /// <summary>
// /// 移动信息
// /// </summary>
// public StoreMoveInfo StoreMove = null;
// /// <summary>
// /// 料仓配置信息
// /// </summary>
// public StoreConfig Config { get; set; }
// public string StoreName()
// {
// return "ID=" + Config.Id + ",CID+" + Config.CID;
// }
// public StoreStatus storeStatus = StoreStatus.StoreOnline;
// /// <summary>
// /// 料仓状态
// /// </summary>
// public StoreRunStatus storeRunStatus
// {
// get
// {
// return storerunstatus;
// }
// set
// {
// StoreRunStatus oldStatus = storerunstatus;
// storerunstatus = value;
// statusTime = DateTime.Now;
// }
// }
// public StoreBase()
// {
// }
// public StoreBase(StoreConfig config)
// {
// this.StoreId = config.Id;
// this.Config = config;
// StoreMove = new StoreMoveInfo(StoreId);
// }
// /// <summary>
// /// 定时任务
// /// </summary>
// protected abstract void timersTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e);
// /// <summary>
// /// 复位
// /// </summary>
// public abstract void Reset();
// /// <summary>
// /// 报警
// /// </summary>
// /// <param name="alarmType"></param>
// public abstract void Alarm(StoreAlarmType alarmType);
// /// <summary>
// /// 停止运动
// /// </summary>
// public abstract void StopMove();
// /// <summary>
// /// 上下移动(根据料仓类型,为电钢移动或者运动轴运动)
// /// </summary>
// /// <param name="abs"></param>
// public abstract void UpDownAxisMove(AbsMoveParam abs);
// /// <summary>
// /// 中轴运动
// /// </summary>
// /// <param name="abs"></param>
// public abstract void MiddleAxisMove(AbsMoveParam abs);
// /// <summary>
// /// 出仓流程处理
// /// </summary>
// protected abstract void OutStoreProcess();
// /// <summary>
// /// 入仓流程处理
// /// </summary>
// protected abstract void InStoreProcess();
// /// <summary>
// /// 判断急停是否开着,开着表示可以运行
// /// </summary>
// /// <returns></returns>
// public abstract Boolean IsCanStart();
// /// <summary>
// /// 开始运行
// /// </summary>
// public abstract void StartRun();
// /// <summary>
// /// 停止运行
// /// </summary>
// public abstract void StopRun();
// /// <summary>
// /// 初始化
// /// </summary>
// public virtual void Init()
// {
// StoreMove = new StoreMoveInfo(this.StoreId);
// timersTimer = new System.Timers.Timer();
// timersTimer.Enabled = false;
// timersTimer.Interval = 100;
// timersTimer.Elapsed += timersTimer_Elapsed;
// timersTimer.AutoReset = true;
// }
// /// <summary>
// /// 运动处理
// /// </summary>
// public virtual void BusyMoveProcess()
// {
// if (StoreMove.MoveType == StoreMoveType.InStore)
// {
// InStoreProcess();
// }
// else if (StoreMove.MoveType == StoreMoveType.OutStore)
// {
// OutStoreProcess();
// }
// }
// /// <summary>
// /// 开始入库移动移动
// /// </summary>
// public abstract void StartInStoreMove(InOutStoreParam param);
// /// <summary>
// /// 开始出库运动
// /// </summary>
// public abstract void StartOutStoreMove(InOutStoreParam param);
// /// <summary>
// /// 开始或者停止吹吹气,通过io来判断
// /// </summary>
// /// <param name="start"></param>
// public abstract void StartOrStopBlow(bool start);
// /// <summary>
// /// io控制的运动(取料叉子运动,门上下移动)
// /// </summary>
// /// <param name="moveType">运行方式</param>
// /// <param name="ioValue">1=开始,0=停止</param>
// public abstract void DeviceIoMove(Store_IO_Type moveType, IO_VALUE ioValue);
// /// <summary>
// /// 获取io控制的运动当前的指示灯状态
// /// </summary>
// public abstract IO_VALUE GetDeviceIoStatus(Store_IO_Type moveType);
// /// <summary>
// /// 中轴轴定点运动结束处理
// /// </summary>
// public virtual void MiddleMoveEnd(int moveType, int AxisNo, int targetPosition)
// {
// StoreMoveInfo move = StoreMove;
// if (middleAxisLastStartTime != null && middleAxisLastStartTime.Year > 1)
// {
// Dictionary<DateTime,DateTime> moveTimeMap=null;
// if (AxisRunTimeMap.ContainsKey(AxisNo))
// {
// moveTimeMap = AxisRunTimeMap[AxisNo];
// }
// else
// {
// moveTimeMap = new Dictionary<DateTime, DateTime>();
// AxisRunTimeMap.Add(AxisNo, moveTimeMap);
// }
// if (!moveTimeMap.ContainsKey(middleAxisLastStartTime))
// {
// moveTimeMap.Add(middleAxisLastStartTime, DateTime.Now);
// LOGGER.Info("storeId=" + StoreId + ",伺服运动结束,开始时间" + middleAxisLastStartTime.ToString() + ",结束时间" + DateTime.Now.ToString());
// middleAxisLastStartTime.AddYears(-1 * middleAxisLastStartTime.Year+1);
// }
// AxisRunTimeMap.Remove(AxisNo);
// AxisRunTimeMap.Add(AxisNo, moveTimeMap);
// }
// if (moveType == 0)
// {
// //if (move.moveStatus == StoreMoveStep.InStoreReadyMove
// // || move.moveStatus == StoreMoveStep.MoveToRoom
// // || move.moveStatus == StoreMoveStep.MoveOutFromRoom
// // || move.moveStatus == StoreMoveStep.OutStoreReadyMove
// // )
// {
// move.MoveResult++;
// }
// }
// else if (moveType == 1)
// {
// //if (storeRunStatus == StoreRunStatus.Reset)
// //{
// // StoreMove.MoveResult--;
// // if (StoreMove.MoveResult == 0)
// // {
// // storeRunStatus = StoreRunStatus.Runing;
// // }
// //}
// }
// }
// /// <summary>
// /// 获取料仓运行的时间
// /// </summary>
// /// <returns></returns>
// public TimeSpan GetStoreRunTime()
// {
// if (StartTime != null)
// {
// return DateTime.Now - StartTime;
// }
// else
// {
// return new TimeSpan(0);
// }
// }
// /// <summary>
// /// 获取轴已运行时间
// /// </summary>
// /// <returns></returns>
// public TimeSpan GetAxisRunTime(int axisNo)
// {
// TimeSpan span = new TimeSpan(0);
// if (AxisRunTimeMap.ContainsKey(axisNo))
// {
// Dictionary<DateTime, DateTime> moveMap = AxisRunTimeMap[axisNo];
// if (moveMap != null && moveMap.Count > 0)
// {
// foreach (DateTime key in moveMap.Keys)
// {
// span += moveMap[key] - key;
// }
// }
// }
// return span;
// }
// public abstract string GetTemperateAddress();
// public abstract bool IsMyAxis(string deviceName, int AxisNo);
// }
//}
......@@ -48,8 +48,6 @@
<ItemGroup>
<Compile Include="CSVExection.cs" />
<Compile Include="position\ACSAStorePosition.cs" />
<Compile Include="position\DoublePosition.cs" />
<Compile Include="position\KTKSAStorePostion.cs" />
<Compile Include="storeConfig\ConfigItemBase.cs" />
<Compile Include="storeConfig\ConfigProAttribute.cs" />
<Compile Include="storeConfig\config\AC_SA_Config.cs" />
......@@ -62,7 +60,6 @@
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="storeConfig\config\StoreConfig.cs" />
<Compile Include="position\StorePostionBase.cs" />
<Compile Include="position\KTKStorePostion.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
......
......@@ -4,12 +4,12 @@ using System.Linq;
using System.Text;
namespace OnlineStore.LoadCSVLibrary.position
namespace OnlineStore.LoadCSVLibrary
{
/// <summary>
/// 松下伺服485控制,单台料仓
/// </summary>
public class ACSAStorePosition : StorePostionBase
public class ACStorePosition : StorePostionBase
{ /// <summary>
/// 对应的料仓ID(流水线料仓需要用此字段区分哪个BOX)
/// </summary>
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace OnlineStore.LoadCSVLibrary
{
public class DoublePosition : StorePostionBase
{ /// <summary>
/// 对应的料仓ID(流水线料仓需要用此字段区分哪个BOX)
/// </summary>
[CSVAttribute("料仓ID")]
public int StoreId { get; set; }
/// <summary>
///电钢高位
/// </summary>
[CSVAttribute("电钢高位")]
public int StellHigh { get; set; }
/// <summary>
///电钢低位
/// </summary>
[CSVAttribute("电钢低位")]
public int StellLow { get; set; }
/// <summary>
/// 出库中轴位置
/// </summary>
[CSVAttribute("出库中轴位置")]
public int MiddleOutPosition { get; set; }
/// <summary>
/// 入库中轴位置
/// </summary>
[CSVAttribute("入库中轴位置")]
public int MiddleInPosition { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace OnlineStore.LoadCSVLibrary
{
/// <summary>
/// KTK单台料仓
/// </summary>
public class KTKSAStorePostion : StorePostionBase
{
/// <summary>
/// 对应的料仓ID(流水线料仓需要用此字段区分哪个BOX)
/// </summary>
[CSVAttribute("料仓ID")]
public int StoreId { get; set; }
/// <summary>
/// 中轴位置(旋转轴库位点)P2
/// </summary>
[CSVAttribute("中轴位置P2")]
public int MiddleAxis_Position_P2 { get; set; }
/// <summary>
/// 升降轴(库位出料前点)P5
/// </summary>
[CSVAttribute("升降轴库位出料前点P5")]
public int UpDownAxis_OHPosition_P5 { get; set; }
/// <summary>
/// 升降轴(库位出料缓冲点)P6
/// </summary>
[CSVAttribute("升降轴库位出料缓冲点P6")]
public int UpDownAxis_OLPosition_P6 { get; set; }
/// <summary>
/// 升降轴(库位入料前点)P3
/// </summary>
[CSVAttribute("升降轴库位入料前点P3")]
public int UpDownAxis_IHPosition_P3 { get; set; }
/// <summary>
/// 升降轴(库位入料缓冲点)P4
/// </summary>
[CSVAttribute("升降轴库位入料缓冲点P4")]
public int UpDownAxis_ILPosition_P4 { get; set; }
/// <summary>
/// 进出轴(库位点取料点)P3
/// </summary>
[CSVAttribute("进出轴库位点取料点P3")]
public int InOutAxis_Position_P3 { get; set; }
/// <summary>
/// 压紧轴(压紧点)P2
/// </summary>
[CSVAttribute("压紧轴压紧点P2")]
public int CompressAxis_Position_P2 { get; set; }
/// <summary>
/// 压紧轴(压紧前点)P3
/// </summary>
[CSVAttribute("压紧轴压紧前点P3")]
public int CompressAxis_CPosition_P3 { get; set; }
/// <summary>
/// 轴3(进出轴) 进料口取料点P2
/// </summary>
[CSVAttribute("进出轴进料口取料点P2")]
public int InOutAxis_DoorPosition_P2 { get; set; }
///// <summary>
///// 轴2( 升降轴) 进料口取料点 P1
///// </summary>
//[CSVAttribute("升降轴进料口取料点P1")]
//public int UpDownAxis_DoorOPosition_P1 { get; set; }
///// <summary>
///// 轴2( 升降轴) 进料口出料缓冲点P8
///// </summary>
//[CSVAttribute("升降轴进料口出料缓冲点P8")]
//public int UpDownAxis_DoorIBPosition_P8 { get; set; }
/// <summary>
/// 轴2( 升降轴) 进料口出料前点P2
/// </summary>
[CSVAttribute("升降轴进料口出料前点P2")]
public int UpDownAxis_DoorIPosition_P2 { get; set; }
/// <summary>
/// 轴2( 升降轴) 进料口取料缓冲点P7
/// </summary>
[CSVAttribute("升降轴进料口取料缓冲点P7")]
public int UpDownAxis_DoorOBPosition_P7 { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace OnlineStore.LoadCSVLibrary
{
/// <summary>
/// 流水线料仓,使用ktk运动版的配置
/// </summary>
public class KTKStorePostion : StorePostionBase
{
/// <summary>
/// 对应的料仓ID(流水线料仓需要用此字段区分哪个BOX)
/// </summary>
[CSVAttribute("料仓ID")]
public int StoreId { get; set; }
/// <summary>
/// 中轴位置(旋转轴库位点)P2
/// </summary>
[CSVAttribute("中轴位置P2")]
public int MiddleAxis_Position_P2 { get; set; }
/// <summary>
/// 升降轴(库位出料前点)P5
/// </summary>
[CSVAttribute("升降轴库位出料前点P5")]
public int UpDownAxis_OHPosition_P5 { get; set; }
/// <summary>
/// 升降轴(库位出料缓冲点)P6
/// </summary>
[CSVAttribute("升降轴库位出料缓冲点P6")]
public int UpDownAxis_OLPosition_P6 { get; set; }
/// <summary>
/// 升降轴(库位入料前点)P3
/// </summary>
[CSVAttribute("升降轴库位入料前点P3")]
public int UpDownAxis_IHPosition_P3 { get; set; }
/// <summary>
/// 升降轴(库位入料缓冲点)P4
/// </summary>
[CSVAttribute("升降轴库位入料缓冲点P4")]
public int UpDownAxis_ILPosition_P4 { get; set; }
/// <summary>
/// 进出轴(库位点取料点)P3
/// </summary>
[CSVAttribute("进出轴库位点取料点P3")]
public int InOutAxis_Position_P3 { get; set; }
/// <summary>
/// 压紧轴(压紧点)P2
/// </summary>
[CSVAttribute("压紧轴压紧点P2")]
public int CompressAxis_Position_P2 { get; set; }
/// <summary>
/// 压紧轴(压紧前点)P3
/// </summary>
[CSVAttribute("压紧轴压紧前点P3")]
public int CompressAxis_CPosition_P3 { get; set; }
}
}
......@@ -16,16 +16,7 @@ namespace OnlineStore.LoadCSVLibrary
: base(id, cid, type, filepath)
{
}
/// <summary>
/// 扫码枪IP
/// </summary>
[ConfigProAttribute("Scanner_Ip")]
public string Scanner_Ip { get; set; }
/// <summary>
/// 扫码枪端口
/// </summary>
[ConfigProAttribute("Scanner_Port")]
public int Scanner_Port { get; set; }
/// <summary>
/// 温湿度传感器地址
/// </summary>
......@@ -422,34 +413,34 @@ namespace OnlineStore.LoadCSVLibrary
{
MustHaveDIList = new List<string>();
MustHaveDOList = new List<string>();
MustHaveDIList.Add(Store_IO_Type.SuddenStop_BTN);
MustHaveDIList.Add(Store_IO_Type.Reset_BTN);
MustHaveDIList.Add(Store_IO_Type.AutoRun_Single);
MustHaveDIList.Add(Store_IO_Type.Airpressure_Check);
MustHaveDIList.Add(Store_IO_Type.TrayCheck_1);
MustHaveDIList.Add(Store_IO_Type.TrayCheck_2);
MustHaveDIList.Add(Store_IO_Type.TrayCheck_3);
MustHaveDIList.Add(Store_IO_Type.TrayCheck_4);
MustHaveDIList.Add(Store_IO_Type.Door_Up);
MustHaveDIList.Add(Store_IO_Type.Door_Down);
MustHaveDIList.Add(Store_IO_Type.LocationCylinder_Down);
MustHaveDIList.Add(Store_IO_Type.LocationCylinder_Up);
MustHaveDIList.Add(Store_IO_Type.Left_Door_LimitSingle);
MustHaveDIList.Add(Store_IO_Type.Right_Door_LimitSingle);
MustHaveDOList.Add(Store_IO_Type.AutoRun_HddLed);
MustHaveDOList.Add(Store_IO_Type.Alarm_HddLed);
MustHaveDOList.Add(Store_IO_Type.RunSign_HddLed);
MustHaveDOList.Add(Store_IO_Type.StartOrStopBlow);
MustHaveDOList.Add(Store_IO_Type.Run_Sign);
MustHaveDOList.Add(Store_IO_Type.Door_Up);
MustHaveDOList.Add(Store_IO_Type.Door_Down);
MustHaveDOList.Add(Store_IO_Type.LocationCylinder_Down);
MustHaveDOList.Add(Store_IO_Type.LocationCylinder_Up);
MustHaveDOList.Add(Store_IO_Type.Axis_Brake);
MustHaveDOList.Add(Store_IO_Type.CameraLight_Power);
MustHaveDIList.Add(IO_Type.SuddenStop_BTN);
MustHaveDIList.Add(IO_Type.Reset_BTN);
MustHaveDIList.Add(IO_Type.AutoRun_Single);
MustHaveDIList.Add(IO_Type.Airpressure_Check);
MustHaveDIList.Add(IO_Type.TrayCheck_1);
MustHaveDIList.Add(IO_Type.TrayCheck_2);
MustHaveDIList.Add(IO_Type.TrayCheck_3);
MustHaveDIList.Add(IO_Type.TrayCheck_4);
MustHaveDIList.Add(IO_Type.Door_Up);
MustHaveDIList.Add(IO_Type.Door_Down);
MustHaveDIList.Add(IO_Type.LocationCylinder_Down);
MustHaveDIList.Add(IO_Type.LocationCylinder_Up);
MustHaveDIList.Add(IO_Type.Left_Door_LimitSingle);
MustHaveDIList.Add(IO_Type.Right_Door_LimitSingle);
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_Sign);
MustHaveDOList.Add(IO_Type.Door_Up);
MustHaveDOList.Add(IO_Type.Door_Down);
MustHaveDOList.Add(IO_Type.LocationCylinder_Down);
MustHaveDOList.Add(IO_Type.LocationCylinder_Up);
MustHaveDOList.Add(IO_Type.Axis_Brake);
MustHaveDOList.Add(IO_Type.CameraLight_Power);
}
}
}
......@@ -120,7 +120,7 @@ namespace OnlineStore.LoadCSVLibrary
}
else if (con.ProType == ConfigItemType.DI)
{
if (Store_IO_Type.GetTypeList().Contains(con.ProName))
if (IO_Type.GetTypeList().Contains(con.ProName))
{
ConfigIO io = (ConfigIO)con;
if (!DIODeviceNameList.Contains(io.DeviceName) && (io.GetIOValue() >= 0 || io.GetIOAddr() >= 0))
......@@ -136,7 +136,7 @@ namespace OnlineStore.LoadCSVLibrary
}
else if (con.ProType == ConfigItemType.DO)
{
if (Store_IO_Type.GetTypeList().Contains(con.ProName))
if (IO_Type.GetTypeList().Contains(con.ProName))
{
ConfigIO io = (ConfigIO)con;
if (!DIODeviceNameList.Contains(io.DeviceName) && io.GetIOValue() >= 0)
......
......@@ -8,33 +8,33 @@ namespace OnlineStore.LoadCSVLibrary
{
public class StoreType
{
/// <summary>
/// 双层在线料仓(电钢,康泰克板子,康奈德IO模块)料仓总配置
/// </summary>
public static string RC_DB_LINE = "RC_DB_LINE";
/// <summary>
/// 双层在线料仓(电钢,康泰克板子,康奈德IO模块)单个料仓配置
/// </summary>
public static string RC_DB_LA = "RC_DB_LA";
/// <summary>
/// 单台自动料仓 锁孔板PLC
/// </summary>
public static string RC_PLC_SM = "RC_PLC_SM";
///// <summary>
///// 双层在线料仓(电钢,康泰克板子,康奈德IO模块)料仓总配置
///// </summary>
//public static string RC_DB_LINE = "RC_DB_LINE";
///// <summary>
///// 双层在线料仓(电钢,康泰克板子,康奈德IO模块)单个料仓配置
///// </summary>
//public static string RC_DB_LA = "RC_DB_LA";
///// <summary>
///// 单台自动料仓 锁孔板PLC
///// </summary>
//public static string RC_PLC_SM = "RC_PLC_SM";
/// <summary>
/// 康泰克流水线料仓_子料仓
/// </summary>
public static string RC_KTK_LA = "RC_KTK_LA";
///// <summary>
///// 康泰克流水线料仓_子料仓
///// </summary>
//public static string RC_KTK_LA = "RC_KTK_LA";
/// <summary>
/// 康泰克流水线料仓_流水线
/// </summary>
public static string RC_KTK_LINE = "RC_KTK_LINE";
///// <summary>
///// 康泰克流水线料仓_流水线
///// </summary>
//public static string RC_KTK_LINE = "RC_KTK_LINE";
/// <summary>
/// 康泰克单台料仓
/// </summary>
public static string RC_KTK_SA = "RC_KTK_SA";
///// <summary>
///// 康泰克单台料仓
///// </summary>
//public static string RC_KTK_SA = "RC_KTK_SA";
/// <summary>
/// 松下伺服485通信单台料仓
/// </summary>
......
......@@ -8,7 +8,7 @@ using System.Text;
namespace OnlineStore.LoadCSVLibrary
{
public class Store_IO_Type
public class IO_Type
{
private static List<string> TypeList = null;
public static List<string> GetTypeList()
......@@ -16,7 +16,7 @@ namespace OnlineStore.LoadCSVLibrary
if (TypeList == null)
{
TypeList = new List<string>();
var p = typeof(Store_IO_Type).GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static);
var p = typeof(IO_Type).GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static);
foreach (var item in p)
{
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!