Commit 09f0b0cf LN

界面修改:DO列表无内容。点动选择速度无效果。

出入库时:托架必须在后退端
出入库时:增加料架信号检测验证(可勾选)
回原点时:前后轴和升降轴不能同时运动。先回升降轴,再回前后轴
1 个父辈 60c16229
...@@ -30,7 +30,8 @@ ...@@ -30,7 +30,8 @@
<!--温控器类型,0=壁挂王字壳温湿度变送器,1=妙昕温湿度记录仪--> <!--温控器类型,0=壁挂王字壳温湿度变送器,1=妙昕温湿度记录仪-->
<add key="HumitureControllerType" value="0" /> <add key="HumitureControllerType" value="0" />
<add key="UseAIOBOX" value="1" /> <add key="UseAIOBOX" value="1" />
<!--是否启用物料检测信号-->
<add key ="UseTrayCheck" value ="0"/>
<!--是否调试状态--> <!--是否调试状态-->
<add key="IsInDebug" value="1" /> <add key="IsInDebug" value="1" />
</appSettings> </appSettings>
......
...@@ -406,14 +406,13 @@ ...@@ -406,14 +406,13 @@
// cmbWriteIO // cmbWriteIO
// //
this.cmbWriteIO.DisplayMember = "ProName"; this.cmbWriteIO.DisplayMember = "ProName";
this.cmbWriteIO.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;
this.cmbWriteIO.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 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("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.cmbWriteIO.FormattingEnabled = true; this.cmbWriteIO.FormattingEnabled = true;
this.cmbWriteIO.ItemHeight = 22; this.cmbWriteIO.ItemHeight = 17;
this.cmbWriteIO.Location = new System.Drawing.Point(17, 25); this.cmbWriteIO.Location = new System.Drawing.Point(17, 25);
this.cmbWriteIO.Name = "cmbWriteIO"; this.cmbWriteIO.Name = "cmbWriteIO";
this.cmbWriteIO.Size = new System.Drawing.Size(358, 28); this.cmbWriteIO.Size = new System.Drawing.Size(358, 25);
this.cmbWriteIO.TabIndex = 234; this.cmbWriteIO.TabIndex = 234;
this.cmbWriteIO.ValueMember = "ProName"; this.cmbWriteIO.ValueMember = "ProName";
this.cmbWriteIO.SelectedIndexChanged += new System.EventHandler(this.cmbWriteIO_SelectedIndexChanged_1); this.cmbWriteIO.SelectedIndexChanged += new System.EventHandler(this.cmbWriteIO_SelectedIndexChanged_1);
......
...@@ -68,7 +68,7 @@ namespace OnlineStore.ACSquareStore ...@@ -68,7 +68,7 @@ namespace OnlineStore.ACSquareStore
DOControlList.Add(ioValue.ProName, control); DOControlList.Add(ioValue.ProName, control);
} }
this.SuspendLayout(); //此处为不闪屏,一定要有的! this.SuspendLayout(); //此处为不闪屏,一定要有的!
cmbWriteIO.DataSource = new List<ConfigIO>(boxBean.Config.StoreDOList.Values); cmbWriteIO.DataSource = new List<ConfigIO>(boxBean.Config.StoreDOList.Values);
cmbWriteIO.ValueMember = "ProName"; cmbWriteIO.ValueMember = "ProName";
cmbWriteIO.DisplayMember = "DisplayStr"; cmbWriteIO.DisplayMember = "DisplayStr";
......
...@@ -170,6 +170,7 @@ ...@@ -170,6 +170,7 @@
this.button4 = new System.Windows.Forms.Button(); this.button4 = new System.Windows.Forms.Button();
this.btnClearL = new System.Windows.Forms.Button(); this.btnClearL = new System.Windows.Forms.Button();
this.btnLogDebug = new System.Windows.Forms.Button(); this.btnLogDebug = new System.Windows.Forms.Button();
this.chbUseTrayCheck = new System.Windows.Forms.CheckBox();
this.groupAxis.SuspendLayout(); this.groupAxis.SuspendLayout();
this.groupBox1.SuspendLayout(); this.groupBox1.SuspendLayout();
this.groupInout.SuspendLayout(); this.groupInout.SuspendLayout();
...@@ -1624,7 +1625,7 @@ ...@@ -1624,7 +1625,7 @@
this.chbDebug.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.chbDebug.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.chbDebug.AutoSize = true; this.chbDebug.AutoSize = true;
this.chbDebug.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.chbDebug.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.chbDebug.Location = new System.Drawing.Point(808, 12); this.chbDebug.Location = new System.Drawing.Point(845, 12);
this.chbDebug.Name = "chbDebug"; this.chbDebug.Name = "chbDebug";
this.chbDebug.Size = new System.Drawing.Size(84, 24); this.chbDebug.Size = new System.Drawing.Size(84, 24);
this.chbDebug.TabIndex = 271; this.chbDebug.TabIndex = 271;
...@@ -1863,6 +1864,7 @@ ...@@ -1863,6 +1864,7 @@
// //
// tabPage4 // tabPage4
// //
this.tabPage4.Controls.Add(this.chbUseTrayCheck);
this.tabPage4.Controls.Add(this.btnStoreExit); this.tabPage4.Controls.Add(this.btnStoreExit);
this.tabPage4.Controls.Add(this.chbDebug); this.tabPage4.Controls.Add(this.chbDebug);
this.tabPage4.Controls.Add(this.btnStoreHome); this.tabPage4.Controls.Add(this.btnStoreHome);
...@@ -2074,6 +2076,19 @@ ...@@ -2074,6 +2076,19 @@
this.btnLogDebug.UseVisualStyleBackColor = true; this.btnLogDebug.UseVisualStyleBackColor = true;
this.btnLogDebug.Click += new System.EventHandler(this.开启DEBUGToolStripMenuItem_Click); this.btnLogDebug.Click += new System.EventHandler(this.开启DEBUGToolStripMenuItem_Click);
// //
// chbUseTrayCheck
//
this.chbUseTrayCheck.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.chbUseTrayCheck.AutoSize = true;
this.chbUseTrayCheck.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.chbUseTrayCheck.Location = new System.Drawing.Point(699, 12);
this.chbUseTrayCheck.Name = "chbUseTrayCheck";
this.chbUseTrayCheck.Size = new System.Drawing.Size(112, 24);
this.chbUseTrayCheck.TabIndex = 272;
this.chbUseTrayCheck.Text = "启用物料检测";
this.chbUseTrayCheck.UseVisualStyleBackColor = true;
this.chbUseTrayCheck.CheckedChanged += new System.EventHandler(this.chbUseTrayCheck_CheckedChanged);
//
// FrmStoreBox // FrmStoreBox
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
...@@ -2265,6 +2280,7 @@ ...@@ -2265,6 +2280,7 @@
private System.Windows.Forms.Button btnOpenRDoor; private System.Windows.Forms.Button btnOpenRDoor;
private System.Windows.Forms.Button btnOpenLDoor; private System.Windows.Forms.Button btnOpenLDoor;
private System.Windows.Forms.ComboBox cmbHumpPort; private System.Windows.Forms.ComboBox cmbHumpPort;
private System.Windows.Forms.CheckBox chbUseTrayCheck;
} }
} }
...@@ -60,6 +60,7 @@ namespace OnlineStore.ACSquareStore ...@@ -60,6 +60,7 @@ namespace OnlineStore.ACSquareStore
{ {
cmbHumpPort.SelectedIndex = 0; cmbHumpPort.SelectedIndex = 0;
} }
chbUseTrayCheck.Checked = StoreManager.UseShelfCheck;
// txtTempPort.Text = store.Config.Humiture_Port; // txtTempPort.Text = store.Config.Humiture_Port;
LoadOk = true; LoadOk = true;
...@@ -1188,8 +1189,8 @@ namespace OnlineStore.ACSquareStore ...@@ -1188,8 +1189,8 @@ namespace OnlineStore.ACSquareStore
{ {
DebugStatus(false); DebugStatus(false);
} }
} }
private void chbDebug_CheckedChanged(object sender, EventArgs e) private void chbDebug_CheckedChanged(object sender, EventArgs e)
{ {
if (!LoadOk) if (!LoadOk)
...@@ -1223,7 +1224,7 @@ namespace OnlineStore.ACSquareStore ...@@ -1223,7 +1224,7 @@ namespace OnlineStore.ACSquareStore
} }
} }
} }
} }
private void btnUpdown_Click(object sender, EventArgs e) private void btnUpdown_Click(object sender, EventArgs e)
{ {
string PortName = store.Config.UpDown_Axis.DeviceName; string PortName = store.Config.UpDown_Axis.DeviceName;
...@@ -1289,5 +1290,20 @@ namespace OnlineStore.ACSquareStore ...@@ -1289,5 +1290,20 @@ namespace OnlineStore.ACSquareStore
BtnMove(btnOpenRDoor, "右侧门锁-打开", "右侧门锁-关闭", IO_Type.RightDoor_Close); BtnMove(btnOpenRDoor, "右侧门锁-打开", "右侧门锁-关闭", IO_Type.RightDoor_Close);
} }
private void chbUseTrayCheck_CheckedChanged(object sender, EventArgs e)
{
if (!LoadOk)
{
return;
}
if (chbUseTrayCheck.Checked.Equals(StoreManager.UseShelfCheck))
{
return;
}
StoreManager.UseShelfCheck = chbUseTrayCheck.Checked;
ConfigAppSettings.SaveValue(Setting_Init.UseTrayCheck, chbUseTrayCheck.Checked ? 1 : 0);
LogUtil.info("点击:启用物料检测 = " + chbUseTrayCheck.Checked);
}
} }
} }
...@@ -31,9 +31,9 @@ ...@@ -31,9 +31,9 @@
新建分支ACSquareStore,做为方仓项目。 新建分支ACSquareStore,做为方仓项目。
方仓三个轴: 方仓三个轴:
伺服X轴 1 前原点后正限 伺服X轴 -前后轴 1 前原点后正限
伺服Z轴 2 下原点上正限 伺服Z轴-升降轴 2 下原点上正限
伺服Y轴 3 中间原点前正限后负限 伺服Y轴-进出轴 3 中间原点前正限后负限
三个温湿度: 三个温湿度:
温湿度1 单接com2 温湿度1 单接com2
温湿度2 单接com3 温湿度2 单接com3
...@@ -41,3 +41,17 @@ ...@@ -41,3 +41,17 @@
20200320 20200320
轴名称修改:X轴-前后轴,Y轴-进出轴。 轴名称修改:X轴-前后轴,Y轴-进出轴。
需需修改?
回原点时:前后轴和升降轴不能同时运动。先回升降轴,再回前后轴
出入库时:托架必须在后退端
出入库时:增加料架信号检测验证(可勾选)
界面修改:DO列表无内容。点动选择速度无效果。
需要增加电池?伺服回好原点之后不需要每次回原点。
20200325修改:
界面修改:DO列表无内容。点动选择速度无效果。
出入库时:托架必须在后退端
出入库时:增加料架信号检测验证(可勾选)
回原点时:前后轴和升降轴不能同时运动。先回升降轴,再回前后轴
...@@ -89,7 +89,10 @@ namespace OnlineStore.Common ...@@ -89,7 +89,10 @@ namespace OnlineStore.Common
public static string Tool_P6_Offset = "Tool_P6_Offset"; public static string Tool_P6_Offset = "Tool_P6_Offset";
public static string Tool_TargetSpeed= "Tool_TargetSpeed"; public static string Tool_TargetSpeed= "Tool_TargetSpeed";
public static string Tool_TargetPosition= "Tool_TargetPosition"; public static string Tool_TargetPosition= "Tool_TargetPosition";
public static string UseTrayCheck = "UseTrayCheck";
} }
} }
...@@ -8,18 +8,18 @@ using System.Text; ...@@ -8,18 +8,18 @@ using System.Text;
using System.Threading; using System.Threading;
namespace OnlineStore.DeviceLibrary namespace OnlineStore.DeviceLibrary
{ {
/// <summary> /// <summary>
/// 外部调用的接口放在此文件中 /// 外部调用的接口放在此文件中
/// </summary> /// </summary>
public partial class ACServerManager public partial class ACServerManager
{ {
public static bool IsShowMsg = false ; public static bool IsShowMsg = false;
private static int SleepMSendons = 20; private static int SleepMSendons = 20;
private static int ReviceOutTimeMS = 100; private static int ReviceOutTimeMS = 100;
private static Dictionary<string, Dictionary<string, int>> ComAddrValue = new Dictionary<string, Dictionary<string, int>>(); private static Dictionary<string, Dictionary<string, int>> ComAddrValue = new Dictionary<string, Dictionary<string, int>>();
private static string mapObj = ""; private static string mapObj = "";
private static int GetAddrValue(string portName, int slvAddr, string addr) private static int GetAddrValue(string portName, int slvAddr, string addr)
{ {
int value = -1; int value = -1;
...@@ -137,8 +137,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -137,8 +137,8 @@ namespace OnlineStore.DeviceLibrary
ColsePort(key); ColsePort(key);
} }
} }
/// <summary> /// <summary>
/// 是否成功打开伺服 /// 是否成功打开伺服
/// </summary> /// </summary>
...@@ -146,15 +146,15 @@ namespace OnlineStore.DeviceLibrary ...@@ -146,15 +146,15 @@ namespace OnlineStore.DeviceLibrary
{ {
if (!serialBeanMap.ContainsKey(portName)) if (!serialBeanMap.ContainsKey(portName))
{ {
return false ; return false;
} }
PreReadCoilAddr = ACCMDManager.ServerOn_Addr; PreReadCoilAddr = ACCMDManager.ServerOn_Addr;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_ReadCoil, PreReadCoilAddr, "0000", 1); byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_ReadCoil, PreReadCoilAddr, "0000", 1);
//SendData(portName,dataArray); //SendData(portName,dataArray);
byte[] reviceData = SendCommand(portName, dataArray, ReviceOutTimeMS, 6); byte[] reviceData = SendCommand(portName, dataArray, ReviceOutTimeMS, 6);
int result= GetCoilData(portName, reviceData, PreReadCoilAddr); int result = GetCoilData(portName, reviceData, PreReadCoilAddr);
//TODO //TODO
return result>=1; return result >= 1;
} }
/// <summary> /// <summary>
/// 是否原点返回完成 /// 是否原点返回完成
...@@ -162,23 +162,25 @@ namespace OnlineStore.DeviceLibrary ...@@ -162,23 +162,25 @@ namespace OnlineStore.DeviceLibrary
public static bool IsHomeMoveEnd(string portName, int slvAddr) public static bool IsHomeMoveEnd(string portName, int slvAddr)
{ {
int status = GetHomeEndStatus(portName, slvAddr); int status = GetHomeEndStatus(portName, slvAddr);
if (status >= 1) bool isOk = ACServerManager.GetBusyStatus(portName, slvAddr).Equals(0);
if (status >= 1 && isOk)
{ {
return true; return true;
} return false; }
return false;
} }
public static void InitSlvAddr(string portName, int slvAddr) public static void InitSlvAddr(string portName, int slvAddr)
{ {
InitSlvAddr(portName, slvAddr, 100, 30, 30 ); InitSlvAddr(portName, slvAddr, 100, 30, 30);
//InitSlvAddr(portName, slvAddr, 100, 30, 30, 100, 50, 30); //InitSlvAddr(portName, slvAddr, 100, 30, 30, 100, 50, 30);
} }
//把数字转换为四位的字符串 //把数字转换为四位的字符串
public static string SpeedToStr(int speed,int length) public static string SpeedToStr(int speed, int length)
{ {
string str = String.Format("{0:X}", speed); string str = String.Format("{0:X}", speed);
return str.PadLeft(length, '0'); return str.PadLeft(length, '0');
} }
public static void InitSlvAddr(string portName, int slvAddr,int targetSpeed,int addSpeed,int delSpeed ) public static void InitSlvAddr(string portName, int slvAddr, int targetSpeed, int addSpeed, int delSpeed)
//public static void InitSlvAddr(string portName, int slvAddr,int targetSpeed,int addSpeed,int delSpeed,int homeHighSpeed,int homeLowSpeed,int homeAddSpeed) //public static void InitSlvAddr(string portName, int slvAddr,int targetSpeed,int addSpeed,int delSpeed,int homeHighSpeed,int homeLowSpeed,int homeAddSpeed)
{ {
LogUtil.info("开始初始化伺服【" + portName + "】【" + slvAddr + "】"); LogUtil.info("开始初始化伺服【" + portName + "】【" + slvAddr + "】");
...@@ -187,10 +189,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -187,10 +189,10 @@ namespace OnlineStore.DeviceLibrary
string slvAddrStr = string.Format(strFromat, slvAddr); string slvAddrStr = string.Format(strFromat, slvAddr);
//block0=原点返回,正方向 //block0=原点返回,正方向
string str0 = slvAddrStr + "104800 000408 00000420 00000000 ffff"; string str0 = slvAddrStr + "104800 000408 00000420 00000000 ffff";
SendStrAndSleep(portName, str0, sleep); SendStrAndSleep(portName, str0, sleep);
//block1=原点返回,反方向 //block1=原点返回,反方向
string str1 = slvAddrStr + "104804 000408 04000420 00000000 ffff"; string str1 = slvAddrStr + "104804 000408 04000420 00000000 ffff";
SendStrAndSleep(portName, str1, sleep); SendStrAndSleep(portName, str1, sleep);
//block2=绝对位置运动 //block2=绝对位置运动
string str2 = slvAddrStr + "104808 000408 10000211EC78FFFF ffff"; string str2 = slvAddrStr + "104808 000408 10000211EC78FFFF ffff";
SendStrAndSleep(portName, str2, sleep); SendStrAndSleep(portName, str2, sleep);
...@@ -233,7 +235,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -233,7 +235,7 @@ namespace OnlineStore.DeviceLibrary
public static void UpdateEEPROM(string portName, int slvAddr) public static void UpdateEEPROM(string portName, int slvAddr)
{ {
string addr = ACCMDManager.EEPROM_Param_Addr; string addr = ACCMDManager.EEPROM_Param_Addr;
string data = "6173"; string data = "6173";
int length = 2; int length = 2;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_WriteRegisters, addr, data, length); byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_WriteRegisters, addr, data, length);
SendData(portName, dataArray, 5); SendData(portName, dataArray, 5);
...@@ -259,13 +261,13 @@ namespace OnlineStore.DeviceLibrary ...@@ -259,13 +261,13 @@ namespace OnlineStore.DeviceLibrary
SendData(portName, dataArray); SendData(portName, dataArray);
} }
public static void RelMove(string portName, int slvAddr, int position,int targetSpeed) public static void RelMove(string portName, int slvAddr, int position, int targetSpeed)
{ {
//先更新速度 //先更新速度
string slvAddrStr = string.Format(strFromat, slvAddr); string slvAddrStr = string.Format(strFromat, slvAddr);
string v1 = slvAddrStr + "064601 " + SpeedToStr(targetSpeed, 4) + " ffff"; string v1 = slvAddrStr + "064601 " + SpeedToStr(targetSpeed, 4) + " ffff";
SendStrAndSleep(portName, v1,SleepMSendons); SendStrAndSleep(portName, v1, SleepMSendons);
RelMove(portName, slvAddr, position); RelMove(portName, slvAddr, position);
} }
public static void RelMove(string portName, int slvAddr, int position) public static void RelMove(string portName, int slvAddr, int position)
...@@ -307,8 +309,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -307,8 +309,8 @@ namespace OnlineStore.DeviceLibrary
} }
data = ACCMDManager.buildCheckData(data, data.Length - 2); data = ACCMDManager.buildCheckData(data, data.Length - 2);
SendData(portName, data); SendData(portName, data);
System.Threading.Thread.Sleep(SleepMSendons); System.Threading.Thread.Sleep(SleepMSendons);
UpdateBlock(portName, slvAddr, ACCMDManager.Block_RelMove); UpdateBlock(portName, slvAddr, ACCMDManager.Block_RelMove);
OpenAndCloseSTB(portName, slvAddr); OpenAndCloseSTB(portName, slvAddr);
} }
...@@ -323,8 +325,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -323,8 +325,8 @@ namespace OnlineStore.DeviceLibrary
int isHomeEnd = GetHomeEndStatus(portName, slvAddr); int isHomeEnd = GetHomeEndStatus(portName, slvAddr);
if (isHomeEnd.Equals(1)) if (isHomeEnd.Equals(1))
{ {
int value = 2000; int value = 2000;
LogUtil.info("轴【" + portName +"_"+slvAddr +"】原点返回时发现原点已亮且回过原点,需要先相对走" + value); LogUtil.info("轴【" + portName + "_" + slvAddr + "】原点返回时发现原点已亮且回过原点,需要先相对走" + value);
RelMove(portName, slvAddr, value); RelMove(portName, slvAddr, value);
bool isStop = false; bool isStop = false;
for (int i = 0; i <= 10; i++) for (int i = 0; i <= 10; i++)
...@@ -345,10 +347,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -345,10 +347,10 @@ namespace OnlineStore.DeviceLibrary
} }
else else
{ {
int volSpeed =Math.Abs( speed / 5); int volSpeed = Math.Abs(speed / 5);
int time = 1500; int time = 1500;
LogUtil.info("轴【" + portName + "_" + slvAddr + "】原点返回时发现原点已亮但未回过原点,先匀速向上走"+time+",速度["+ volSpeed + "]" ); LogUtil.info("轴【" + portName + "_" + slvAddr + "】原点返回时发现原点已亮但未回过原点,先匀速向上走" + time + ",速度[" + volSpeed + "]");
//需要匀速向上走 //需要匀速向上走
ACServerManager.SpeedMove(portName, slvAddr, volSpeed); ACServerManager.SpeedMove(portName, slvAddr, volSpeed);
Thread.Sleep(time); Thread.Sleep(time);
...@@ -357,7 +359,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -357,7 +359,7 @@ namespace OnlineStore.DeviceLibrary
Thread.Sleep(100); Thread.Sleep(100);
} }
} }
}catch(Exception ex) }catch (Exception ex)
{ {
LogUtil.error("轴【" + portName + "_" + slvAddr + "】原点返回前验证是否在原点出错:" + ex.StackTrace); LogUtil.error("轴【" + portName + "_" + slvAddr + "】原点返回前验证是否在原点出错:" + ex.StackTrace);
} }
...@@ -368,8 +370,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -368,8 +370,9 @@ namespace OnlineStore.DeviceLibrary
} }
public static void SetSpeed(string portName, int slvAddr, int speed) public static void SetSpeed(string portName, int slvAddr, int speed)
{ {
speed = Math.Abs(speed);
int preSpeed = GetAddrValue(portName, slvAddr, ACCMDManager.Speed_Addr); int preSpeed = GetAddrValue(portName, slvAddr, ACCMDManager.Speed_Addr);
if ((preSpeed.Equals(-1)) || (!preSpeed.Equals(Math.Abs(speed)))) if ((preSpeed.Equals(-1)) || (!preSpeed.Equals(speed)))
{ {
string v1 = slvAddr + "064601 " + ACServerManager.SpeedToStr(speed, 4) + " ffff"; string v1 = slvAddr + "064601 " + ACServerManager.SpeedToStr(speed, 4) + " ffff";
LogUtil.debug("轴【" + portName + "_" + slvAddr + "】更新速度为【" + speed + "】,发送数据【" + v1 + "】"); LogUtil.debug("轴【" + portName + "_" + slvAddr + "】更新速度为【" + speed + "】,发送数据【" + v1 + "】");
...@@ -386,20 +389,20 @@ namespace OnlineStore.DeviceLibrary ...@@ -386,20 +389,20 @@ namespace OnlineStore.DeviceLibrary
LogUtil.error("轴【" + portName + "_" + slvAddr + "】更新速度为【" + speed + "】,发送数据【" + v1 + "】,第【" + i + "】次失败"); LogUtil.error("轴【" + portName + "_" + slvAddr + "】更新速度为【" + speed + "】,发送数据【" + v1 + "】,第【" + i + "】次失败");
Thread.Sleep(SleepMSendons); Thread.Sleep(SleepMSendons);
} }
} }
UpdateAddrValue(portName, slvAddr, ACCMDManager.Speed_Addr, Math.Abs(speed)); UpdateAddrValue(portName, slvAddr, ACCMDManager.Speed_Addr, speed);
Thread.Sleep(SleepMSendons); Thread.Sleep(SleepMSendons);
} }
} }
public static void SpeedMove(string portName, int slvAddr, int speed) public static void SpeedMove(string portName, int slvAddr, int speed)
{ {
SetSpeed(portName, slvAddr, speed); SetSpeed(portName, slvAddr, speed);
if (speed > 0) if (speed > 0)
{ {
UpdateBlock(portName, slvAddr, ACCMDManager.Block_VolMove0); UpdateBlock(portName, slvAddr, ACCMDManager.Block_VolMove0);
} }
else else
{ {
UpdateBlock(portName, slvAddr, ACCMDManager.Block_VolMove1); UpdateBlock(portName, slvAddr, ACCMDManager.Block_VolMove1);
} }
//Thread.Sleep(SleepMSendons); //Thread.Sleep(SleepMSendons);
...@@ -425,13 +428,13 @@ namespace OnlineStore.DeviceLibrary ...@@ -425,13 +428,13 @@ namespace OnlineStore.DeviceLibrary
//先更新速度 //先更新速度
string slvAddrStr = string.Format(strFromat, slvAddr); string slvAddrStr = string.Format(strFromat, slvAddr);
int preSpeed = GetAddrValue(portName,slvAddr, ACCMDManager.Speed_Addr); int preSpeed = GetAddrValue(portName, slvAddr, ACCMDManager.Speed_Addr);
if ((preSpeed.Equals(-1)) || (!preSpeed.Equals(targetSpeed))) if ((preSpeed.Equals(-1)) || (!preSpeed.Equals(targetSpeed)))
{ {
//速度 V1 =100 //速度 V1 =100
string v1 = slvAddrStr + "064601 " + SpeedToStr(targetSpeed, 4) + " ffff"; string v1 = slvAddrStr + "064601 " + SpeedToStr(targetSpeed, 4) + " ffff";
SendStrAndSleep(portName, v1, SleepMSendons); SendStrAndSleep(portName, v1, SleepMSendons);
UpdateAddrValue(portName,slvAddr, ACCMDManager.Speed_Addr, targetSpeed); UpdateAddrValue(portName, slvAddr, ACCMDManager.Speed_Addr, targetSpeed);
} }
//绝对运动 //绝对运动
AbsMove(portName, slvAddr, targetPosition); AbsMove(portName, slvAddr, targetPosition);
...@@ -484,3 +487,4 @@ namespace OnlineStore.DeviceLibrary ...@@ -484,3 +487,4 @@ namespace OnlineStore.DeviceLibrary
} }
} }
} }
...@@ -209,7 +209,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -209,7 +209,7 @@ namespace OnlineStore.DeviceLibrary
storeRunStatus = StoreRunStatus.HomeMoving; storeRunStatus = StoreRunStatus.HomeMoving;
StoreMove.NewMove(StoreMoveType.ReturnHome); StoreMove.NewMove(StoreMoveType.ReturnHome);
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_InOutBack); StoreMove.NextMoveStep(StoreMoveStep.SH_12_InOutBack);
ACAxisHomeMove(Config.InOut_Axis); ACAxisHomeMove(Config.InOut_Axis);
LogUtil.info(LOGGER, StoreName + "开始原点返回,先把进出轴回原点"); LogUtil.info(LOGGER, StoreName + "开始原点返回,先把进出轴回原点");
...@@ -217,14 +217,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -217,14 +217,11 @@ namespace OnlineStore.DeviceLibrary
} }
public void MoveToP1() public void MoveToP1()
{ {
//压紧轴回原点,叉子回到P1,关闭门前后轴和升降轴回到P1 //叉子回到P1,关闭门前后轴和升降轴回到P1
StoreMove.NewMove(StoreMoveType.StoreReset); StoreMove.NewMove(StoreMoveType.StoreReset);
StoreMove.NextMoveStep(StoreMoveStep.BOX_M_H_TOP1_InOutToP1); StoreMove.NextMoveStep(StoreMoveStep.SP1_01_InOutToP1);
LogUtil.info(LOGGER, StoreName + "到待机状态,进出轴到P1,判断叉子没有料盘"); LogUtil.info(LOGGER, StoreName + "到待机状态,进出轴到P1");
ACAxisMove(Config.InOut_Axis, Config.InOutAxis_P1_Position, Config.InOutAxis_P1_Speed); ACAxisMove(Config.InOut_Axis, Config.InOutAxis_P1_Position, Config.InOutAxis_P1_Speed);
//ComBeforeHomeMove();
//判断叉子没有料盘
//StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.TrayCheck_Fixture, IO_VALUE.LOW));
} }
public override void Reset(bool isNeedClearAuto = true) public override void Reset(bool isNeedClearAuto = true)
...@@ -274,7 +271,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -274,7 +271,7 @@ namespace OnlineStore.DeviceLibrary
LeftShlefMove.Stop(); LeftShlefMove.Stop();
RightShelfMove.Stop(); RightShelfMove.Stop();
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_InOutBack); StoreMove.NextMoveStep(StoreMoveStep.SH_12_InOutBack);
LogUtil.info(LOGGER, StoreName + "复位中,进出轴开始原点返回"); LogUtil.info(LOGGER, StoreName + "复位中,进出轴开始原点返回");
ACAxisHomeMove(Config.InOut_Axis); ACAxisHomeMove(Config.InOut_Axis);
StoreMove.WaitList.Add(WaitResultInfo.WaitTime(2000)); StoreMove.WaitList.Add(WaitResultInfo.WaitTime(2000));
...@@ -299,26 +296,26 @@ namespace OnlineStore.DeviceLibrary ...@@ -299,26 +296,26 @@ namespace OnlineStore.DeviceLibrary
} }
switch (StoreMove.MoveStep) switch (StoreMove.MoveStep)
{ {
case StoreMoveStep.BOX_H_LocationCylinderBack: case StoreMoveStep.SH_10_LocationCylinderBack:
InoutStartReset(); InoutStartReset();
break; break;
case StoreMoveStep.BOX_H_InOutMove: case StoreMoveStep.SH_11_InOutMove:
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_InOutBack); StoreMove.NextMoveStep(StoreMoveStep.SH_12_InOutBack);
ACAxisHomeMove(Config.InOut_Axis); ACAxisHomeMove(Config.InOut_Axis);
LogUtil.info(LOGGER, StoreName + logName+ " 进出轴开始原点返回"); LogUtil.info(LOGGER, StoreName + logName + " 进出轴开始原点返回");
StoreMove.WaitList.Add(WaitResultInfo.WaitTime(2000)); StoreMove.WaitList.Add(WaitResultInfo.WaitTime(2000));
break; break;
case StoreMoveStep.BOX_H_InOutBack: case StoreMoveStep.SH_12_InOutBack:
Thread.Sleep(200); Thread.Sleep(200);
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_InOutToP1); StoreMove.NextMoveStep(StoreMoveStep.SH_13_InOutToP1);
LogUtil.info(LOGGER, StoreName + logName + " 进出轴到待机点P1,关闭左右两侧门"); LogUtil.info(LOGGER, StoreName + logName + " 进出轴到待机点P1,关闭左右两侧门");
//进出轴原点返回完成,将进出轴的位置设置=0 //进出轴原点返回完成,将进出轴的位置设置=0
AxisCountClear(Config.InOut_Axis); AxisCountClear(Config.InOut_Axis);
ACAxisMove(Config.InOut_Axis, Config.InOutAxis_P1_Position, Config.InOutAxis_P1_Speed); ACAxisMove(Config.InOut_Axis, Config.InOutAxis_P1_Position, Config.InOutAxis_P1_Speed);
CloseDoor(1,StoreMove); CloseDoor(1, StoreMove);
CloseDoor(2,StoreMove); CloseDoor(2, StoreMove);
break; break;
case StoreMoveStep.BOX_H_InOutToP1: case StoreMoveStep.SH_13_InOutToP1:
//如果此时轴三还在报警,需要提示错误并等待 //如果此时轴三还在报警,需要提示错误并等待
if (ACServerManager.GetAlarmStatus(Config.InOut_Axis.DeviceName, Config.InOut_Axis.GetAxisValue()) > 0) if (ACServerManager.GetAlarmStatus(Config.InOut_Axis.DeviceName, Config.InOut_Axis.GetAxisValue()) > 0)
{ {
...@@ -326,23 +323,28 @@ namespace OnlineStore.DeviceLibrary ...@@ -326,23 +323,28 @@ namespace OnlineStore.DeviceLibrary
} }
//复位和回原点要等轴3进出轴ORG亮了以后才能返回其他轴 //复位和回原点要等轴3进出轴ORG亮了以后才能返回其他轴
LogUtil.info(LOGGER, StoreName + logName + " 压紧轴,前后轴,升降轴开始 原点返回 ,左右托盘前进"); LogUtil.info(LOGGER, StoreName + logName + " 前后轴,升降轴开始 原点返回 ,左右托盘前进");
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_OtherAxisBack); StoreMove.NextMoveStep(StoreMoveStep.SH_14_UpdownBack);
StoreMove.TimeOutSeconds = 100; StoreMove.TimeOutSeconds = 100;
ACAxisHomeMove(Config.Middle_Axis);
ACAxisHomeMove(Config.UpDown_Axis); ACAxisHomeMove(Config.UpDown_Axis);
ShelfForward(1); ShelfForward(1);
ShelfForward(2); ShelfForward(2);
break; break;
case StoreMoveStep.BOX_H_OtherAxisBack: case StoreMoveStep.SH_14_UpdownBack:
StoreMove.NextMoveStep(StoreMoveStep.SH_15_MiddleBack);
StoreMove.TimeOutSeconds = 100;
ACAxisHomeMove(Config.Middle_Axis);
break;
case StoreMoveStep.SH_15_MiddleBack:
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_MiddleAxisToP1); StoreMove.NextMoveStep(StoreMoveStep.SH_16_OtherAxisToP1);
LogUtil.info(LOGGER, StoreName + logName + " 前后轴运动到P1,升降轴走到P1,压紧轴到P1!"); LogUtil.info(LOGGER, StoreName + logName + " 前后轴运动到P1,升降轴走到P1,托架前进到位");
ACAxisMove(Config.Middle_Axis, Config.MiddleAxis_P1_Position, Config.MiddleAxis_P1_Speed); ACAxisMove(Config.Middle_Axis, Config.MiddleAxis_P1_Position, Config.MiddleAxis_P1_Speed);
ACAxisMove(Config.UpDown_Axis, Config.UpDownAxis_DoorO_P1, Config.UpDownAxis_P1_Speed); ACAxisMove(Config.UpDown_Axis, Config.UpDownAxis_DoorO_P1, Config.UpDownAxis_P1_Speed);
ShelfForward(1, StoreMove);
ShelfForward(2, StoreMove);
break; break;
case StoreMoveStep.BOX_H_MiddleAxisToP1: case StoreMoveStep.SH_16_OtherAxisToP1:
LogUtil.info(LOGGER, StoreName + "复位完成"); LogUtil.info(LOGGER, StoreName + "复位完成");
storeRunStatus = StoreRunStatus.Runing; storeRunStatus = StoreRunStatus.Runing;
StoreMove.EndMove(); StoreMove.EndMove();
...@@ -353,21 +355,26 @@ namespace OnlineStore.DeviceLibrary ...@@ -353,21 +355,26 @@ namespace OnlineStore.DeviceLibrary
} }
break; break;
case StoreMoveStep.BOX_M_H_TOP1_InOutToP1: case StoreMoveStep.SP1_01_InOutToP1:
StoreMove.NextMoveStep(StoreMoveStep.BOX_M_H_TOP1_CompressHome); StoreMove.NextMoveStep(StoreMoveStep.SP1_02_CloseDoor);
LogUtil.info(LOGGER, StoreName + "到待机状态,压紧轴回原点,关闭左右两侧门"); LogUtil.info(LOGGER, StoreName + "到待机状态,关闭左右两侧门,托架前进");
CloseDoor(1, StoreMove); CloseDoor(1, StoreMove);
CloseDoor(2, StoreMove); CloseDoor(2, StoreMove);
break; break;
case StoreMoveStep.BOX_M_H_TOP1_CompressHome: case StoreMoveStep.SP1_02_CloseDoor:
StoreMove.NextMoveStep(StoreMoveStep.BOX_M_H_TOP1_OtherAxisToP1); StoreMove.NextMoveStep(StoreMoveStep.SP1_03_OtherAxisToP1);
LogUtil.info(LOGGER, StoreName + "到待机状态:前后轴运动到P1,升降轴走到P1,压紧轴到P1,左右托架前进"); LogUtil.info(LOGGER, StoreName + "到待机状态:升降轴走到P1,前后轴到P1");
ACAxisMove(Config.Middle_Axis, Config.MiddleAxis_P1_Position, Config.MiddleAxis_P1_Speed);
ACAxisMove(Config.UpDown_Axis, Config.UpDownAxis_DoorO_P1, Config.UpDownAxis_P1_Speed); ACAxisMove(Config.UpDown_Axis, Config.UpDownAxis_DoorO_P1, Config.UpDownAxis_P1_Speed);
ShelfForward(1); ACAxisMove(Config.Middle_Axis, Config.MiddleAxis_P1_Position, Config.MiddleAxis_P1_Speed);
ShelfForward(2);
break; break;
case StoreMoveStep.BOX_M_H_TOP1_OtherAxisToP1: case StoreMoveStep.SP1_03_OtherAxisToP1:
StoreMove.NextMoveStep(StoreMoveStep.SP1_04_ShelfForward);
LogUtil.info(LOGGER, StoreName + "到待机状态:托架前进");
ShelfForward(1, StoreMove);
ShelfForward(2, StoreMove);
break;
case StoreMoveStep.SP1_04_ShelfForward:
LogUtil.info(LOGGER, StoreName + "到待机状态完成"); LogUtil.info(LOGGER, StoreName + "到待机状态完成");
StoreMove.EndMove(); StoreMove.EndMove();
storeStatus = StoreStatus.StoreOnline; storeStatus = StoreStatus.StoreOnline;
...@@ -376,6 +383,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -376,6 +383,7 @@ namespace OnlineStore.DeviceLibrary
{ {
WarnMsg = ""; WarnMsg = "";
} }
break; break;
default: break; default: break;
...@@ -1441,8 +1449,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -1441,8 +1449,8 @@ namespace OnlineStore.DeviceLibrary
{ {
if (storeRunStatus.Equals(StoreRunStatus.Runing) && IOManager.IOValue(IO_Type.TrayCheck_Fixture).Equals(IO_VALUE.HIGH)) if (storeRunStatus.Equals(StoreRunStatus.Runing) && IOManager.IOValue(IO_Type.TrayCheck_Fixture).Equals(IO_VALUE.HIGH))
{ {
boxStatus.msg = "叉子料盘检测有料,请检查"; boxStatus.msg = "货叉物料检测有料,请检查";
lineOperation.msg = "叉子料盘检测有料,请检查"; lineOperation.msg = "货叉物料检测有料,请检查";
} }
} }
CodeMsg = ""; CodeMsg = "";
......
...@@ -176,7 +176,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -176,7 +176,7 @@ namespace OnlineStore.DeviceLibrary
{ {
wait.IsEnd = IOManager.IOValue(wait.IoType).Equals(wait.IoValue); wait.IsEnd = IOManager.IOValue(wait.IoType).Equals(wait.IoValue);
int timeOutMs = Config.IOSingle_TimerOut; int timeOutMs = Config.IOSingle_TimerOut;
if (StoreMove.MoveStep.Equals(StoreMoveStep.SO_14_WaitTake)) if (StoreMove.MoveStep.Equals(StoreMoveStep.SO_15_WaitTake))
{ {
timeOutMs = 650000; timeOutMs = 650000;
} }
...@@ -188,12 +188,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -188,12 +188,7 @@ namespace OnlineStore.DeviceLibrary
LogUtil.error(LOGGER, StoreName + wait.IoType + "等待信号(" + io.DisplayStr + "=" + wait.IoValue + ") 超时", 14); LogUtil.error(LOGGER, StoreName + wait.IoType + "等待信号(" + io.DisplayStr + "=" + wait.IoValue + ") 超时", 14);
isOk = false; isOk = false;
break; break;
} }
//else if ((!wait.IsEnd) && StoreMove.MoveStep.Equals(StoreMoveStep.SO_14_WaitTake) && LineConnect.CanReSend())
//{
// //判断是否需要重发入库结束命令
// SendOutStoreEnd(StoreMove);
//}
TimeSpan rwSpan = DateTime.Now - preRWTime; TimeSpan rwSpan = DateTime.Now - preRWTime;
if (!wait.IsEnd && rwSpan.TotalSeconds > 5 && span.TotalSeconds > 6) if (!wait.IsEnd && rwSpan.TotalSeconds > 5 && span.TotalSeconds > 6)
...@@ -263,7 +258,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -263,7 +258,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary> /// <summary>
/// 开始入库移动移动 /// 开始入库移动移动
/// </summary> /// </summary>
public void StartInStoreMove(InOutParam param, bool isNeedCheckIO) public override void StartInStoreMove(InOutParam param)
{ {
startInStoreTime = DateTime.Now; startInStoreTime = DateTime.Now;
string posId = param != null ? param.PosInfo.PosId : ""; string posId = param != null ? param.PosInfo.PosId : "";
...@@ -276,13 +271,13 @@ namespace OnlineStore.DeviceLibrary ...@@ -276,13 +271,13 @@ namespace OnlineStore.DeviceLibrary
} }
if (IOManager.IOValue(IO_Type.TrayCheck_Fixture).Equals(IO_VALUE.HIGH)) if (IOManager.IOValue(IO_Type.TrayCheck_Fixture).Equals(IO_VALUE.HIGH))
{ {
LogUtil.error(LOGGER, StoreName + " 启动入库【" + posId + "】出错,叉子料盘检测有料"); LogUtil.error(LOGGER, StoreName + " 启动入库【" + posId + "】出错,货叉物料检测有料");
return; return;
} }
string doorMsg = DoorIsClose(); string doorMsg = DoorIsClose();
if (!String.IsNullOrEmpty(doorMsg)) if (!String.IsNullOrEmpty(doorMsg))
{ {
LogUtil.error(LOGGER, StoreName + " 启动入库【" + posId + "】出错, "+ doorMsg); LogUtil.error(LOGGER, StoreName + " 启动入库【" + posId + "】出错, " + doorMsg);
return; return;
} }
...@@ -290,9 +285,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -290,9 +285,9 @@ namespace OnlineStore.DeviceLibrary
storeRunStatus = StoreRunStatus.Busy; storeRunStatus = StoreRunStatus.Busy;
storeStatus = StoreStatus.InStoreExecute; storeStatus = StoreStatus.InStoreExecute;
StoreMove.NewMove(StoreMoveType.InStore, param); StoreMove.NewMove(StoreMoveType.InStore, param);
if (isNeedCheckIO)
{ if (StoreManager.UseShelfCheck)
//料盘检测 { //料盘检测
InStoreLog(" 入库:SI_00 检测料盘信号"); InStoreLog(" 入库:SI_00 检测料盘信号");
StoreMove.NextMoveStep(StoreMoveStep.SI_00_TrayCheck); StoreMove.NextMoveStep(StoreMoveStep.SI_00_TrayCheck);
if (param.PosInfo.ShelfType.Equals(1)) if (param.PosInfo.ShelfType.Equals(1))
...@@ -302,7 +297,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -302,7 +297,7 @@ namespace OnlineStore.DeviceLibrary
else else
{ {
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.RightShelf_Check, IO_VALUE.HIGH)); StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.RightShelf_Check, IO_VALUE.HIGH));
} }
} }
else else
{ {
...@@ -314,14 +309,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -314,14 +309,6 @@ namespace OnlineStore.DeviceLibrary
LogUtil.error(LOGGER, StoreName + " 启动【" + posId + "】入库出错,当前状态,storeStatus=" + storeRunStatus); LogUtil.error(LOGGER, StoreName + " 启动【" + posId + "】入库出错,当前状态,storeStatus=" + storeRunStatus);
} }
} }
/// <summary>
/// 开始入库移动移动
/// </summary>
public override void StartInStoreMove(InOutParam param)
{
StartInStoreMove(param, false);
}
private void SI_02_Move() private void SI_02_Move()
{ {
InStoreLog("入库:SI_02_ 进出轴(叉子)动作至P1,关闭门锁=" + StoreMove.MoveParam.PosInfo.ShelfType); InStoreLog("入库:SI_02_ 进出轴(叉子)动作至P1,关闭门锁=" + StoreMove.MoveParam.PosInfo.ShelfType);
...@@ -348,17 +335,15 @@ namespace OnlineStore.DeviceLibrary ...@@ -348,17 +335,15 @@ namespace OnlineStore.DeviceLibrary
else if (StoreMove.MoveStep == StoreMoveStep.SI_02_InOutAxisHome) else if (StoreMove.MoveStep == StoreMoveStep.SI_02_InOutAxisHome)
{ {
InStoreLog("入库:SI_03 所有轴回到待机点,轴2、轴1 动作到P1,,轴4动作至P3,托架后退"); InStoreLog("入库:SI_03 升降轴,前进轴 动作到P1 ,托架后退");
StoreMove.NextMoveStep(StoreMoveStep.SI_03_ReturnHome); StoreMove.NextMoveStep(StoreMoveStep.SI_03_ReturnHome);
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P1, Config.UpDownAxis_P1_Speed); ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P1, Config.UpDownAxis_P1_Speed);
ACAxisMove(Config.Middle_Axis, moveP.Middle_P1, Config.MiddleAxis_P1_Speed); ACAxisMove(Config.Middle_Axis, moveP.Middle_P1, Config.MiddleAxis_P1_Speed);
ShelfBack(StoreMove.MoveParam.PosInfo.ShelfType); ShelfBack(StoreMove.MoveParam.PosInfo.ShelfType, StoreMove);
} }
else if (StoreMove.MoveStep == StoreMoveStep.SI_03_ReturnHome) else if (StoreMove.MoveStep == StoreMoveStep.SI_03_ReturnHome)
{ {
//判断仓门是否打开
InStoreLog("入库:SI_05 叉子进入入料口,进出轴至P2(进料口取料点) "); InStoreLog("入库:SI_05 叉子进入入料口,进出轴至P2(进料口取料点) ");
StoreMove.NextMoveStep(StoreMoveStep.SI_05_DeviceToDoor); StoreMove.NextMoveStep(StoreMoveStep.SI_05_DeviceToDoor);
ACAxisMove(Config.InOut_Axis, StoreMove.MoveParam.MoveP.InOut_P2, Config.InOutAxis_P2_Speed); ACAxisMove(Config.InOut_Axis, StoreMove.MoveParam.MoveP.InOut_P2, Config.InOutAxis_P2_Speed);
...@@ -367,28 +352,46 @@ namespace OnlineStore.DeviceLibrary ...@@ -367,28 +352,46 @@ namespace OnlineStore.DeviceLibrary
{ {
//NeedCheckSafetyLight = 0; //NeedCheckSafetyLight = 0;
InStoreLog("入库:SI_06 拿物品, 升降轴至P7(进料口取料缓冲点) "); InStoreLog("入库:SI_06 拿物品, 升降轴至P7(进料口取料缓冲点) ");
StoreMove.NextMoveStep(StoreMoveStep.SI_06_DoorWarToDevice); StoreMove.NextMoveStep(StoreMoveStep.SI_06_UpdownAxisUp);
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P7, Config.UpDownAxis_P7_Speed); ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P7, Config.UpDownAxis_P7_Speed);
} }
else if (StoreMove.MoveStep == StoreMoveStep.SI_06_DoorWarToDevice) else if (StoreMove.MoveStep == StoreMoveStep.SI_06_UpdownAxisUp)
{ {
InStoreLog("入库:SI_07 叉子 从入料口抽出,进出轴至P1(待机点) "); InStoreLog("入库:SI_07 叉子 从入料口抽出,进出轴至P1(待机点) ");
StoreMove.NextMoveStep(StoreMoveStep.SI_07_DeviceBackFromDoor); StoreMove.NextMoveStep(StoreMoveStep.SI_07_InoutBack);
InOutBackToP1(moveP.InOut_P1); InOutBackToP1(moveP.InOut_P1);
} }
else if (StoreMove.MoveStep == StoreMoveStep.SI_07_DeviceBackFromDoor) else if (StoreMove.MoveStep == StoreMoveStep.SI_07_InoutBack)
{ {
InStoreLog("入库:SI_08 判断是否拿到物料");
StoreMove.NextMoveStep(StoreMoveStep.SI_08_WaitShelfDI);
if (StoreManager.UseShelfCheck)
{
if (StoreMove.MoveParam.PosInfo.ShelfType.Equals(1))
{
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LeftShelf_Check, IO_VALUE.LOW));
}
else
{
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.RightShelf_Check, IO_VALUE.LOW));
}
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.TrayCheck_Fixture, IO_VALUE.HIGH));
}
}
//判断是否拿到料
else if (StoreMove.MoveStep == StoreMoveStep.SI_08_WaitShelfDI)
{
InStoreLog("入库:SI_09 移动到库位点,前后轴至P2(库位点),升降轴至P3(库位入库前点) "); InStoreLog("入库:SI_09 移动到库位点,前后轴至P2(库位点),升降轴至P3(库位入库前点) ");
StoreMove.NextMoveStep(StoreMoveStep.SI_09_MoveToBag); StoreMove.NextMoveStep(StoreMoveStep.SI_09_MoveToBag);
ACAxisMove(Config.Middle_Axis, moveP.Middle_P2, Config.MiddleAxis_P2_Speed); ACAxisMove(Config.Middle_Axis, moveP.Middle_P2, Config.MiddleAxis_P2_Speed);
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P3, Config.UpDownAxis_P3_Speed); ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P3, Config.UpDownAxis_P3_Speed);
} }
else if (StoreMove.MoveStep == StoreMoveStep.SI_09_MoveToBag) else if (StoreMove.MoveStep == StoreMoveStep.SI_09_MoveToBag)
{ {
InStoreLog("入库:SI_11 叉子进入库位中,进出轴至P4(库位取放料点) "); InStoreLog("入库:SI_11 叉子进入库位中,进出轴至P4(库位取放料点) ");
StoreMove.NextMoveStep(StoreMoveStep.SI_11_DeviceToBag); StoreMove.NextMoveStep(StoreMoveStep.SI_11_DeviceToBag);
ACAxisMove(Config.InOut_Axis, moveP.InOut_P4, Config.InOutAxis_P4_Speed); ACAxisMove(Config.InOut_Axis, moveP.InOut_P4, Config.InOutAxis_P4_Speed);
} }
else if (StoreMove.MoveStep == StoreMoveStep.SI_11_DeviceToBag) else if (StoreMove.MoveStep == StoreMoveStep.SI_11_DeviceToBag)
{ {
InStoreLog("入库:SI_12 放下物品,升降轴至P4(库位入料缓冲点), "); InStoreLog("入库:SI_12 放下物品,升降轴至P4(库位入料缓冲点), ");
...@@ -413,13 +416,22 @@ namespace OnlineStore.DeviceLibrary ...@@ -413,13 +416,22 @@ namespace OnlineStore.DeviceLibrary
} }
else if (StoreMove.MoveStep == StoreMoveStep.SI_13_DeviceBackFromBag) else if (StoreMove.MoveStep == StoreMoveStep.SI_13_DeviceBackFromBag)
{ {
InStoreLog("入库:SI_14 返回待机点,轴2/轴1 动作至P1(待机点)) ,托架前进"); InStoreLog("入库:SI_14 检查叉子物料检测信号=low");
StoreMove.NextMoveStep(StoreMoveStep.SI_14_GoBack); StoreMove.NextMoveStep(StoreMoveStep.SI_14_CheckTrayIsGo);
if (StoreManager.UseShelfCheck)
{
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.TrayCheck_Fixture, IO_VALUE.LOW));
}
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_14_CheckTrayIsGo)
{
InStoreLog("入库:SI_15 升降轴,前后轴返回待机点 ,托架前进");
StoreMove.NextMoveStep(StoreMoveStep.SI_15_GoBack);
ACAxisMove(Config.Middle_Axis, moveP.Middle_P1, Config.MiddleAxis_P1_Speed); ACAxisMove(Config.Middle_Axis, moveP.Middle_P1, Config.MiddleAxis_P1_Speed);
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P1, Config.UpDownAxis_P1_Speed); ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P1, Config.UpDownAxis_P1_Speed);
ShelfForward(StoreMove.MoveParam.PosInfo.ShelfType); ShelfForward(StoreMove.MoveParam.PosInfo.ShelfType);
} }
else if (StoreMove.MoveStep == StoreMoveStep.SI_14_GoBack) else if (StoreMove.MoveStep == StoreMoveStep.SI_15_GoBack)
{ {
TimeSpan span = DateTime.Now - startInStoreTime; TimeSpan span = DateTime.Now - startInStoreTime;
string posId = StoreMove.MoveParam != null ? StoreMove.MoveParam.PosInfo.PosId : ""; string posId = StoreMove.MoveParam != null ? StoreMove.MoveParam.PosInfo.PosId : "";
...@@ -456,7 +468,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -456,7 +468,7 @@ namespace OnlineStore.DeviceLibrary
} }
if (IOManager.IOValue(IO_Type.TrayCheck_Fixture).Equals(IO_VALUE.HIGH)) if (IOManager.IOValue(IO_Type.TrayCheck_Fixture).Equals(IO_VALUE.HIGH))
{ {
LogUtil.error(LOGGER, StoreName + " 启动出库【" + posId + "】出错,叉子料盘检测有料"); LogUtil.error(LOGGER, StoreName + " 启动出库【" + posId + "】出错,货叉物料检测有料");
return false; return false;
} }
string doorMsg = DoorIsClose(); string doorMsg = DoorIsClose();
...@@ -525,10 +537,19 @@ namespace OnlineStore.DeviceLibrary ...@@ -525,10 +537,19 @@ namespace OnlineStore.DeviceLibrary
lastPosId = posId; lastPosId = posId;
lastPosIdStatus = StoreStatus.OutStoreBoxEnd; lastPosIdStatus = StoreStatus.OutStoreBoxEnd;
storeStatus = StoreStatus.OutStoreBoxEnd; storeStatus = StoreStatus.OutStoreBoxEnd;
} }
else if (StoreMove.MoveStep == StoreMoveStep.SO_06_BagDeviceBack) else if (StoreMove.MoveStep == StoreMoveStep.SO_06_BagDeviceBack)
{ {
StoreMove.NextMoveStep(StoreMoveStep.SO_07_CheckHasTray);
OutStoreLog("出库:SO_07 判断是否拿到料");
if (StoreManager.UseShelfCheck)
{
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.TrayCheck_Fixture, IO_VALUE.HIGH));
}
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_07_CheckHasTray)
{
if (IOManager.IOValue(IO_Type.TrayCheck_Fixture).Equals(IO_VALUE.LOW)) if (IOManager.IOValue(IO_Type.TrayCheck_Fixture).Equals(IO_VALUE.LOW))
{ {
string posId = StoreMove.MoveParam != null ? StoreMove.MoveParam.PosInfo.PosId : ""; string posId = StoreMove.MoveParam != null ? StoreMove.MoveParam.PosInfo.PosId : "";
...@@ -540,7 +561,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -540,7 +561,7 @@ namespace OnlineStore.DeviceLibrary
OutStoreLog("出库:SO_08 走到料门口,前后轴至P1(待机点)升降轴至P2(进料口出料前点), 托架后退 "); OutStoreLog("出库:SO_08 走到料门口,前后轴至P1(待机点)升降轴至P2(进料口出料前点), 托架后退 ");
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P2, Config.UpDownAxis_P2_Speed); ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P2, Config.UpDownAxis_P2_Speed);
ACAxisMove(Config.Middle_Axis, moveP.Middle_P1, Config.MiddleAxis_P1_Speed); ACAxisMove(Config.Middle_Axis, moveP.Middle_P1, Config.MiddleAxis_P1_Speed);
ShelfBack(StoreMove.MoveParam.PosInfo.ShelfType); ShelfBack(StoreMove.MoveParam.PosInfo.ShelfType, StoreMove);
} }
else if (StoreMove.MoveStep == StoreMoveStep.SO_08_ToDoorPosition) else if (StoreMove.MoveStep == StoreMoveStep.SO_08_ToDoorPosition)
...@@ -576,39 +597,31 @@ namespace OnlineStore.DeviceLibrary ...@@ -576,39 +597,31 @@ namespace OnlineStore.DeviceLibrary
} }
else if (StoreMove.MoveStep == StoreMoveStep.SO_12_DeviceOutFromDoor) else if (StoreMove.MoveStep == StoreMoveStep.SO_12_DeviceOutFromDoor)
{ {
StoreMove.NextMoveStep(StoreMoveStep.SO_13_GoBack); StoreMove.NextMoveStep(StoreMoveStep.SO_13_CheckShelfDI);
OutStoreLog("出库:SO_13 升降轴返回,轴2至P1(待机点) ,托架前进,打开门锁"); OutStoreLog("出库:SO_13 判断物料信号是否正确 ");
if (StoreManager.UseShelfCheck)
{
if (StoreMove.MoveParam.PosInfo.ShelfType.Equals(1))
{
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LeftShelf_Check, IO_VALUE.HIGH));
}
else
{
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.RightShelf_Check, IO_VALUE.HIGH));
}
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.TrayCheck_Fixture, IO_VALUE.LOW));
}
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_13_CheckShelfDI)
{
StoreMove.NextMoveStep(StoreMoveStep.SO_14_GoBack);
OutStoreLog("出库:SO_14 升降轴到P1(待机点) ,托架前进,打开门锁");
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P1, Config.UpDownAxis_P1_Speed); ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P1, Config.UpDownAxis_P1_Speed);
OpenDoor(StoreMove.MoveParam.PosInfo.ShelfType); OpenDoor(StoreMove.MoveParam.PosInfo.ShelfType);
ShelfForward(StoreMove.MoveParam.PosInfo.ShelfType); ShelfForward(StoreMove.MoveParam.PosInfo.ShelfType, StoreMove);
//发送消息给流水线 }
//SendOutStoreEnd(StoreMove); else if (StoreMove.MoveStep == StoreMoveStep.SO_14_GoBack)
} {
else if (StoreMove.MoveStep == StoreMoveStep.SO_13_GoBack)
{
// int OutStoreWaitSeconds = ConfigAppSettings.GetIntValue(Setting_Init.OutStoreWaitSeconds);
// if (OutStoreWaitSeconds <= 0)
// {
// OutStoreWaitSeconds = 600;
// }
// int ms = OutStoreWaitSeconds * 1000;
// StoreMove.NextMoveStep(StoreMoveStep.SO_14_WaitTake);
// OutStoreLog("出库:SO_14_WaitTake 等待拿走物品,最多等待" + OutStoreWaitSeconds + "秒");
// StoreMove.WaitList.Add(WaitResultInfo.WaitTime(ms));
// if (StoreMove.MoveParam.PosInfo.ShelfType.Equals(1))
// {
// StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LeftShelf_Check, IO_VALUE.LOW));
// }
// else
// {
// StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.RightShelf_Check, IO_VALUE.LOW));
// }
// // StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.TrayCheck_Door, IO_VALUE.LOW));
// // StoreMove.WaitList.Add(WaitResultInfo.WaitHeight(0));
// StoreMove.OneWaitCanEndStep = true;
//}
//else if (StoreMove.MoveStep == StoreMoveStep.SO_14_WaitTake)
//{
TimeSpan span = DateTime.Now - startOutStoreTime; TimeSpan span = DateTime.Now - startOutStoreTime;
string posId = StoreMove.MoveParam != null ? StoreMove.MoveParam.PosInfo.PosId : ""; string posId = StoreMove.MoveParam != null ? StoreMove.MoveParam.PosInfo.PosId : "";
......
...@@ -23,6 +23,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -23,6 +23,8 @@ namespace OnlineStore.DeviceLibrary
public static Box_Config Config = null; public static Box_Config Config = null;
private static bool isInit = false; private static bool isInit = false;
public static bool IsConnectServer = !ConfigAppSettings.GetValue(Setting_Init.http_server).Equals(""); public static bool IsConnectServer = !ConfigAppSettings.GetValue(Setting_Init.http_server).Equals("");
public static bool UseShelfCheck = ConfigAppSettings.GetIntValue(Setting_Init.UseTrayCheck).Equals(1);
public StoreManager() public StoreManager()
{ {
} }
......
using OnlineStore.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace OnlineStore.DeviceLibrary
{
public class LineConnect
{
private static int ClientKeepSecond = 10;
private static TcpClient client = null;
public static List<string> WaitInStoreList = new List<string>();
public static void StartConnect()
{
Task.Factory.StartNew(delegate
{
string lineServer = ConfigAppSettings.GetValue(Setting_Init.LineServerIp);
int linePort = ConfigAppSettings.GetIntValue(Setting_Init.LineServerPort);
if (lineServer.Equals(""))
{
LogUtil.error("未配置流水线地址,不需要连接");
return;
}
client = new TcpClient();
bool result = client.StartConnect(lineServer, linePort, HandlerMsg, 2000);
});
}
public static void StopConnect()
{
if (client != null)
{
client.close();
}
}
private static int seq = 1;
public static int nextSeq()
{
if (seq.Equals(Int32.MaxValue))
{
LogUtil.info("seq当前值:" + seq + ",重置seq=0");
seq = 0;
}
Interlocked.Increment(ref seq);
return seq;
}
public static void SendHeart(StoreSendBean store)
{
if (client == null)
{
return;
}
try
{
store.Cmd = cmd_heart;
string heartMsg = ToParamStr(store);
client.send(heartMsg);
} catch (Exception ex)
{
LogUtil.error("SendHeart 出错:" + ex.ToString());
}
}
private static DateTime LastOutStoreEndTime = DateTime.Now;
public static void OutStoreEnd(StoreSendBean store)
{
if (client == null)
{
return;
}
try
{
LastOutStoreEndTime = DateTime.Now;
store.Cmd = cmd_outend;
string msg = ToParamStr(store);
LogUtil.info("OutStoreEnd:" + msg);
client.send(msg);
}
catch (Exception ex)
{
LogUtil.error("OutStoreEnd 出错:" + ex.ToString());
}
}
private static string ToParamStr(StoreSendBean store)
{
return JsonHelper.SerializeObject(store)+"\r";
}
private static void HandlerMsg(string message)
{
try
{
message = message.Replace("\r", "");
StoreReviceBean reviceInfo = JsonHelper.DeserializeJsonToObject<StoreReviceBean>(message);
//string[] msgArray = message.Split(cmd_spilt);
if (reviceInfo == null)
{
LogUtil.debug("收到消息:" + message + ",解析失败");
}
else
{
string cmd = reviceInfo.Cmd;
CanOutStore = reviceInfo.CanOutStore.Equals(1);
LastUpdateTime = DateTime.Now;
if (cmd.Equals(cmd_startIn))
{
LogUtil.info("收到流水线入库消息:" + message);
StoreManager.Store.ReviceLineInStoreCMD(reviceInfo.PosId, reviceInfo.PlateH, reviceInfo.PlateW, reviceInfo.WareCode);
}
else if (cmd.Equals(cmd_updateDebug))
{
int isDebug = reviceInfo.IsDebug;
LogUtil.info("收到流水线更改调试状态=" + isDebug);
StoreManager.Store.IsDebug = isDebug.Equals(1) ? true : false;
ConfigAppSettings.SaveValue(Setting_Init.IsInDebug, isDebug);
LogUtil.info("切换调试状态= " + isDebug + ";");
}
else if (cmd.Equals(cmd_checStartIn))
{
LogUtil.info("收到流水线入库库位验证消息:" + message);
//if (LineConnect.WaitInStoreList.Contains(reviceInfo.PosId))
//{
// LogUtil.error(" LineConnect.WaitInStoreList已存在库位【" + reviceInfo.PosId + "】先移除在验证");
// LineConnect.WaitInStoreList.Remove(reviceInfo.PosId);
//}
bool result = StoreManager.Store.ReviceLineCheckInStoreCMD(reviceInfo.PosId, reviceInfo.PlateH, reviceInfo.PlateW, reviceInfo.WareCode);
if (result && (!WaitInStoreList.Contains(reviceInfo.PosId)))
{
LineConnect.WaitInStoreList.Add(reviceInfo.PosId);
}
}
}
}
catch (Exception ex)
{
LogUtil.error("处理流水线消息【"+ message +"】出错:" +ex.ToString() );
}
}
public static char cmd_spilt = ';';
public static string cmd_heart = "heart";
private static string cmd_outend = "outend";
private static string cmd_startIn = "starIn";
private static string cmd_updateDebug = "updateDebug";
private static bool CanOutStore = false;
public static DateTime LastUpdateTime = new DateTime(0);
public static string cmd_checStartIn = "cmd_checStartIn";
public static bool IsConnect()
{
if (client == null)
{
return false;
}
if (client.IsRun()&& client.IsConnected())
{
return true;
}
return false ;
}
public static bool CanStartOut()
{
TimeSpan span = DateTime.Now - LastUpdateTime;
if (span.TotalSeconds < ClientKeepSecond && CanOutStore)
{
return true;
}
return false;
}
/// <summary>
/// 是否可以重发消息
/// </summary>
/// <returns></returns>
public static bool CanReSend()
{
TimeSpan span = DateTime.Now - LastOutStoreEndTime;
if (span.TotalSeconds > 8)
{
return true;
}
return false;
}
}
public class StoreReviceBean
{
public string Cmd = "";
public int CanOutStore = 0;
public string PosId = "";
public string PlateH = "0";
public string PlateW = "0";
public string WareCode = "";
public int IsDebug = 0;
}
public class StoreSendBean
{
public StoreSendBean(int id, string cid, int ss, int runs, int doorHasTray, int alarmType)
{
this.StoreId = id;
this.Cid = cid;
this.SStatus = ss;
this.SRunStatus = runs;
this.DoorHasTray = doorHasTray;
this.AlarmType = alarmType;
this.Seq = LineConnect.nextSeq();
this.WaitInStoreList = new List<string>(LineConnect.WaitInStoreList);
this.data = new Dictionary<string, string>();
// WaitInStoreList.Add("1#AC1_1_1");
}
public string Cmd =LineConnect. cmd_heart;
public int StoreId = 0;
public string Cid = "";
public int Seq = 0;
public int SStatus = 0;
public int SRunStatus = 0;
public int DoorHasTray = 0;
public int AlarmType = 0;
public List<string> WaitInStoreList = new List<string>();
public Dictionary<string, string> data = new Dictionary<string, string>();
//public string PosId = "";
//public string PlateH = "0";
//public string PlateW = "0";
///// <summary>
///// urgentReel: true 表示紧急料,需要出到料串上
///// </summary>
//public bool urgentReel = false;
///// <summary>
///// cutReel: true 表示分盘料,需要出到料串上
///// </summary>
//public bool cutReel = false;
///// <summary>
///// smallReel: true 小料(7x8),放置到小料架上
///// </summary>
//public bool smallReel = false;
///// <summary>
///// rfid: 分配的料架RFID
///// </summary>
//public string rfid = "";
///// <summary>
///// rfidLoc: 料架的架位,值为 - 1时,可以自由分配皮带线,
///// 小料时,架位为1 - 46优先走1 / 2号皮带线,47 - 92优先走3 / 4号皮带线,
///// 70,71,72时只能分配到3 / 4号皮带线;
///// 大料时,架位1 - 6优先走1 / 2号皮带线, 7 - 12优先走3/ 4号皮带线
///// </summary>
//public int rfidLoc = 0;
}
}
using log4net; 
using OnlineStore.Common;
using OnlineStore.DeviceLibrary;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace OnlineStore.DeviceLibrary namespace OnlineStore.DeviceLibrary
{ {
/// <summary> /// <summary>
/// 等待启动/已经停止,初始化完成, 正常运行中,可以进行新的处理,忙碌,重置 /// 等待启动/已经停止,初始化完成, 正常运行中,可以进行新的处理,忙碌,重置
/// </summary> /// </summary>
...@@ -24,15 +11,15 @@ namespace OnlineStore.DeviceLibrary ...@@ -24,15 +11,15 @@ namespace OnlineStore.DeviceLibrary
/// 等待启动/已经停止 /// 等待启动/已经停止
/// </summary> /// </summary>
Wait = 0, Wait = 0,
///// <summary> /// <summary>
///// 初始化 ,原点返回状态中,只有流水线使用 /// 初始化 ,原点返回状态中,只有流水线使用
///// </summary> /// </summary>
HomeMoving = 1, HomeMoving = 1,
/// <summary> /// <summary>
/// 设备正在重置中,请稍后 /// 设备正在重置中,请稍后
/// </summary> /// </summary>
Reset = 2, Reset = 2,
/// <summary> /// <summary>
/// 正常运行中,可以进行新的处理 /// 正常运行中,可以进行新的处理
/// </summary> /// </summary>
...@@ -59,7 +46,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -59,7 +46,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary> /// <summary>
///2=急停中 ///2=急停中
/// </summary> /// </summary>
SuddenStop = 2, SuddenStop = 2,
/// <summary> /// <summary>
/// 3=故障中 /// 3=故障中
/// </summary> /// </summary>
...@@ -71,15 +58,15 @@ namespace OnlineStore.DeviceLibrary ...@@ -71,15 +58,15 @@ namespace OnlineStore.DeviceLibrary
/// <summary> /// <summary>
/// 5=设备调试中 /// 5=设备调试中
/// </summary> /// </summary>
Debugging = 5, Debugging = 5,
/// <summary> /// <summary>
/// 6=入库执行中 /// 6=入库执行中
/// </summary> /// </summary>
InStoreExecute = 6, InStoreExecute = 6,
/// <summary> /// <summary>
/// 7= 入仓位完成(料仓Box把料盘放入对应的库位中,装置还未恢复原始状态) /// 7= 入仓位完成(料仓Box把料盘放入对应的库位中,装置还未恢复原始状态)
/// </summary> /// </summary>
InStoreEnd = 7, InStoreEnd = 7,
/// <summary> /// <summary>
/// 8=入库失败 /// 8=入库失败
/// </summary> /// </summary>
...@@ -103,7 +90,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -103,7 +90,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary> /// <summary>
/// 重置中(原点返回和重置都发此状态) /// 重置中(原点返回和重置都发此状态)
/// </summary> /// </summary>
ResetMove=13, ResetMove = 13,
} }
/// <summary> /// <summary>
...@@ -117,133 +104,127 @@ namespace OnlineStore.DeviceLibrary ...@@ -117,133 +104,127 @@ namespace OnlineStore.DeviceLibrary
Wait = 0, Wait = 0,
#region 料仓原点返回和重置步骤 #region 料仓原点返回和重置步骤
/// <summary> /// <summary>
/// 料仓原点返回和重置步骤,,定位气缸下降 /// 复位,,定位气缸下降
/// </summary> /// </summary>
BOX_H_LocationCylinderBack=010, SH_10_LocationCylinderBack = 010,
/// <summary>
/// 料仓原点返回和重置步骤,轴三先相对走3000
/// </summary>
BOX_H_InOutMove=011,
/// <summary> /// <summary>
/// 料仓原点返回和重置步骤,,轴三进出轴先返回原点 /// 复位,轴三先相对走3000
/// </summary> /// </summary>
BOX_H_InOutBack = 012, SH_11_InOutMove = 011,
/// <summary> /// <summary>
/// 料仓原点返回和重置步骤,,轴三返回P1 /// 复位,,轴三进出轴先返回原
/// </summary> /// </summary>
BOX_H_InOutToP1 = 013, SH_12_InOutBack = 012,
/// <summary> /// <summary>
/// 料仓原点返回和重置步骤,,升降轴,前后轴,压紧轴原点返回 /// 复位,,轴三返回P1点
/// </summary> /// </summary>
BOX_H_OtherAxisBack = 014, SH_13_InOutToP1 = 013,
///// <summary>
///// 清理轴位置
///// </summary>
//BOX_H_WaitAxisCountClear = 015,
/// <summary> /// <summary>
/// 前后轴返回P1 /// 复位,,升降轴,原点返回
/// </summary> /// </summary>
BOX_H_MiddleAxisToP1=016, SH_14_UpdownBack = 014,
/// <summary> /// <summary>
/// 叉子先退回P1 /// 复位,前后轴原点返回
/// </summary> /// </summary>
BOX_M_H_InOutToP1=018, SH_15_MiddleBack = 015,
/// <summary> /// <summary>
/// 前后轴回原点 /// 复位:前后轴返回P1
/// </summary> /// </summary>
BOX_M_H_MiddleAxisHome = 019, SH_16_OtherAxisToP1 = 016,
/// <summary> /// <summary>
/// 前后轴等待清理位置 /// 复位:叉子走到P1
/// </summary> /// </summary>
BOX_M_H_MiddleWait = 020, SP1_01_InOutToP1 = 031,
/// <summary> /// <summary>
/// 叉子走到P1 /// 复位:关闭门
/// </summary> /// </summary>
BOX_M_H_TOP1_InOutToP1 = 030, SP1_02_CloseDoor = 032,
/// <summary> /// <summary>
/// 压紧轴回原点 /// 复位:升降轴到P1
/// </summary> /// </summary>
BOX_M_H_TOP1_CompressHome = 031, SP1_03_OtherAxisToP1 = 033,
/// <summary> /// <summary>
/// 关闭门,前后轴到P1,升降轴到P1 /// 复位:前后轴到P1
/// </summary> /// </summary>
BOX_M_H_TOP1_OtherAxisToP1 = 032, SP1_04_ShelfForward = 034,
#endregion #endregion
#region 料仓内部出库步骤 #region 料仓内部出库步骤
/// <summary> /// <summary>
///料仓出库,,定位气缸下降 ///出库:叉子先运动到P1
/// </summary>
// SO_01_LocationCylinderDown=101,
/// <summary>
///料仓出库:叉子先运动到P1
/// </summary> /// </summary>
SO_02_DeviceBack = 102, SO_02_DeviceBack = 102,
/// <summary> /// <summary>
/// 料仓出库,,前后轴至P2(库位点),升降轴至P5(库位出库前点) ,托架后退) /// 出库:前后轴至P2(库位点),升降轴至P5(库位出库前点) ,托架后退)
/// </summary> /// </summary>
SO_03_ToBagPosition = 103, SO_03_ToBagPosition = 103,
/// <summary> /// <summary>
/// 料仓出库,,叉子进入库位中, 轴3( 叉子) 至P3(库位取放料点) /// 出库:叉子进入库位中, 轴3( 叉子) 至P3(库位取放料点)
/// </summary> /// </summary>
SO_04_DeviceToBag = 104, SO_04_DeviceToBag = 104,
/// <summary> /// <summary>
///料仓出库,, 库位的物品放入叉子上,轴2( 上下) 至P6( 库位出料缓冲点),轴4( 压紧) 至P2(压紧点) ///出库: 库位的物品放入叉子上,轴2( 上下) 至P6( 库位出料缓冲点),轴4( 压紧) 至P2(压紧点)
/// </summary> /// </summary>
SO_05_BagWareToDevice = 105, SO_05_BagWareToDevice = 105,
/// <summary> /// <summary>
///料仓出库,,叉子从 库位返回,轴3( 叉子) 至P1( 待机点) ///出库:叉子从 库位返回,轴3( 叉子) 至P1( 待机点)
/// </summary> /// </summary>
SO_06_BagDeviceBack = 106, SO_06_BagDeviceBack = 106,
/// <summary> /// <summary>
/// 料仓出库,定位气缸伸出(有压紧轴的不需要此步骤),,定位气缸伸出 Y103-1/PCI5O1-83) Y103-2/PCI5O1-90) Y103-3/PCI5O1-95) 伸出到位 /// 出库:检测叉子是否有料
/// </summary> /// </summary>
// SO_07_LocationCylinder_Up = 107, SO_07_CheckHasTray = 107,
/// <summary> /// <summary>
/// 料仓出库,,所有设备运行到门,,轴1( 转盘) 至P1( 待机点)轴2( 上下) 至P2( 进料口出料前点) /// 出库:所有设备运行到门,,轴1( 转盘) 至P1( 待机点)轴2( 上下) 至P2( 进料口出料前点)
/// </summary> /// </summary>
SO_08_ToDoorPosition = 108, SO_08_ToDoorPosition = 108,
/// <summary> /// <summary>
/// 料仓出库,定位气缸退回(有压紧轴的不需要此步骤),,定位气缸退回(Y104-1/PCI5O1-84) (Y104-2/PCI5O1-91) (Y104-2/PCI5O1-96) 退回到位
/// </summary>
// SO_09_LocationCylinder_Down = 109,
/// <summary>
/// 等待门口无料盘 /// 等待门口无料盘
/// </summary> /// </summary>
SO_09_WaitNoTray=115, SO_09_WaitNoTray = 109,
/// <summary> /// <summary>
/// 料仓出库,,叉子进出料口,,轴3( 叉子) 至P2( 进料口取料点) /// 出库:叉子进出料口,,轴3( 叉子) 至P2( 进料口取料点)
/// /// </summary> /// /// </summary>
SO_10_DeviceToDoor = 110, SO_10_DeviceToDoor = 110,
/// <summary> /// <summary>
/// 料仓出库,,把物品放下,,轴2( 上下) 至P8( 进料口出料缓冲点)轴4( 压紧) 至P1( 待机点) /// 出库:把物品放下,,轴2( 上下) 至P8( 进料口出料缓冲点)轴4( 压紧) 至P1( 待机点)
/// </summary> /// </summary>
SO_11_DevicePutWare = 111, SO_11_DevicePutWare = 111,
/// <summary> /// <summary>
/// 料仓出库,,叉子从出料口返回,,轴3( 叉子) 动作至P1( 待机点) /// 出库:叉子从出料口返回,,轴3( 叉子) 动作至P1( 待机点)
/// </summary> /// </summary>
SO_12_DeviceOutFromDoor = 112, SO_12_DeviceOutFromDoor = 112,
/// <summary> /// <summary>
/// 料仓出库,,升降轴返回,, 轴2至P1( 待机点) /// 出库:判断物料信号
/// </summary>
SO_13_CheckShelfDI = 113,
/// <summary>
/// 出库:升降轴返回,, 轴2至P1( 待机点)
/// </summary> /// </summary>
SO_13_GoBack = 113, SO_14_GoBack = 114,
/// <summary> /// <summary>
/// 等待拿走物品 /// 等待拿走物品
/// </summary> /// </summary>
SO_14_WaitTake=114, SO_15_WaitTake = 115,
#endregion #endregion
...@@ -251,11 +232,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -251,11 +232,8 @@ namespace OnlineStore.DeviceLibrary
/// <summary> /// <summary>
/// 入库检测 /// 入库检测
/// </summary> /// </summary>
SI_00_TrayCheck=200, SI_00_TrayCheck = 200,
///// <summary>
///// 入库,。定位气缸下降
///// </summary>
//SI_01_LocationCylinderDown=201,
/// <summary> /// <summary>
/// 入库。。进出轴(叉子)先返回P1,关闭门锁 /// 入库。。进出轴(叉子)先返回P1,关闭门锁
/// </summary> /// </summary>
...@@ -264,10 +242,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -264,10 +242,7 @@ namespace OnlineStore.DeviceLibrary
/// 入库。。所有轴先回到待机点,轴2、轴1 动作到P1, 托架后退 /// 入库。。所有轴先回到待机点,轴2、轴1 动作到P1, 托架后退
/// </summary> /// </summary>
SI_03_ReturnHome = 203, SI_03_ReturnHome = 203,
///// <summary>
///// 入库。。压紧物品(有压紧轴的才需要此步骤),轴4( 压紧) 至P3(压紧前点)
///// </summary>
//SI_04_CompressWare = 204,
/// <summary> /// <summary>
/// 入库。。叉子进入入料口,轴3( 叉子) 至P2( 进料口取料点) /// 入库。。叉子进入入料口,轴3( 叉子) 至P2( 进料口取料点)
/// </summary> /// </summary>
...@@ -275,24 +250,23 @@ namespace OnlineStore.DeviceLibrary ...@@ -275,24 +250,23 @@ namespace OnlineStore.DeviceLibrary
/// <summary> /// <summary>
/// 入库。。把物品放入叉子上,轴2( 上下) 至P7( 进料口取料缓冲点) /// 入库。。把物品放入叉子上,轴2( 上下) 至P7( 进料口取料缓冲点)
/// </summary> /// </summary>
SI_06_DoorWarToDevice = 206, SI_06_UpdownAxisUp = 206,
/// <summary> /// <summary>
/// 入库。。叉子 从入料口抽出,轴3( 叉子) 至P1( 待机点) /// 入库。。叉子 从入料口抽出,轴3( 叉子) 至P1( 待机点)
/// </summary> /// </summary>
SI_07_DeviceBackFromDoor = 207, SI_07_InoutBack = 207,
///// <summary>
///// 入库。。,定位气缸伸出 (有压紧轴的不需要此步骤)
///// </summary>
//SI_08_LocationCylinder_Up = 208,
/// <summary> /// <summary>
/// 入库。。移动到库位点,轴1( 转盘) 至P2( 库位点)轴2(上下) 至P3(库位入库前点) /// 入库。。等待物料信号到位
/// </summary> /// </summary>
SI_09_MoveToBag = 209, SI_08_WaitShelfDI = 208,
/// <summary> /// <summary>
/// 入库。。定位气缸退回 (有压紧轴的不需要此步骤 /// 入库。。移动到库位点,轴1( 转盘) 至P2( 库位点)轴2(上下) 至P3(库位入库前点
/// </summary> /// </summary>
// SI_10_LocationCylinder_Down = 210, SI_09_MoveToBag = 209,
/// <summary> /// <summary>
/// 入库。。叉子进入库位中, 进出轴至P4(库位取放料点) /// 入库。。叉子进入库位中, 进出轴至P4(库位取放料点)
/// </summary> /// </summary>
...@@ -305,10 +279,15 @@ namespace OnlineStore.DeviceLibrary ...@@ -305,10 +279,15 @@ namespace OnlineStore.DeviceLibrary
/// 入库。。叉子从库位中返回,轴3( 叉子) 动作至P1( 待机点) /// 入库。。叉子从库位中返回,轴3( 叉子) 动作至P1( 待机点)
/// </summary> /// </summary>
SI_13_DeviceBackFromBag = 213, SI_13_DeviceBackFromBag = 213,
/// <summary>
/// 入库。判断料叉物料检测信号是否消失
/// </summary>
SI_14_CheckTrayIsGo = 214,
/// <summary> /// <summary>
/// 入库。。返回待机点,轴2/轴1/轴4动作至P1( 待机点))开始 /// 入库。。返回待机点,轴2/轴1/轴4动作至P1( 待机点))开始
/// </summary> /// </summary>
SI_14_GoBack = 214, SI_15_GoBack = 215,
#endregion #endregion
...@@ -342,426 +321,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -342,426 +321,7 @@ namespace OnlineStore.DeviceLibrary
#endregion #endregion
#region 流水线入仓操作
/// <summary>
/// 流水线入仓,开始扫码 扫描枪触发,数据处理
/// </summary>
LI_Scannering = 10001,
/// <summary>
/// 流水线入仓,料仓号及库位号发送, 夹具号编码记忆(X5,X6.X7)数据接收
/// </summary>
LI_WaitServerResult = 10002,
/// <summary>
/// 等待100毫秒后再放行
/// </summary>
LI_00_Wait100 = 10003,
/// <summary>
/// 阻挡气缸0-2下降
/// </summary>
LI_01_StopCylinder2Down = 10004,
/// <summary>
/// 检测夹具检测1=0 ) 开始
/// </summary>
LI_02_FixtureCheck = 10005,
/// <summary>
/// 阻挡气缸0-2上升
/// </summary>
LI_03_StopCylinder2Up = 10006,
/// <summary>
/// 阻挡气缸0-1下降
/// </summary>
LI_04_StopCylinder1Down = 10007,
#endregion
#region 流水线出库操作
/// <summary>
/// 流水线出库,等待100毫秒之后在放行
/// </summary>
LO_00_Wait100 = 11000,
/// <summary>
/// 流水线出库,阻挡气缸0-2下降
/// </summary>
LO_01_StopCylinder2Down = 11001,
/// <summary>
/// 流水线出库, 检测夹具检测1=0
/// </summary>
LO_02_FixtureCheck = 11002,
/// <summary>
/// 流水线出库,阻挡气缸0-2上升( Y13=0)
/// </summary>
LO_03_StopCylinder2Up = 11003,
/// <summary>
/// 阻挡气缸0-1下降(Y12=1)
/// </summary>
LO_04_StopCylinder1Up = 11004,
#endregion
#region 移栽装置出入库共同模块
/// <summary>
///移载(流水线)装置出入库处理,, 阻挡气缸1-1下降( Y14=1)
/// </summary>
MIO_01_StopCylinder1Down = 3081,
/// <summary>
///移载(流水线)装置出入库处理,,夹具检测1-4=1
/// </summary>
MIO_02_FixtureCheck = 3082,
/// <summary>
///移载(流水线)装置出入库处理,,阻挡气缸1-1上升( Y14=0)
/// </summary>
MIO_03_StopCylinder2Down = 3083,
/// <summary>
/// 检测夹具检测IO1=1
/// </summary>
MIO_04_Check1High = 3084,
/// <summary>
/// 等待一秒钟
/// </summary>
MIO_05_WaitTime = 3085,
/// <summary>
///移载(流水线)装置出入库处理,,顶 升 气缸 上 升 (Y17 =0/Y1 16 =1 )检测X17=0X16=1
/// </summary>
MIO_06_TopCylinderUp = 3086,
/// <summary>
/// 此处 顶升气缸上升时等待一秒钟,再下降,现在看起来没有升到位就下降
/// </summary>
MIO_07_TopCylinderUpWait = 3087,
/// <summary>
/// 等待StoreMove完成当前操作开始入库
/// </summary>
MIO_08_WaitInStore=3088,
/// <summary>
/// 等待StoreMove移走料盘开始放托盘通过
/// </summary>
MIO_09_WaitLetFixtureGo=3089,
#endregion
#region 移栽装置出库处理
/// <summary>
/// 移载(流水线)装置出库处理, 检测夹具编码并记忆,托盘 是空盘,并且BOX在出库等待中,开始移栽料盘
/// </summary>
MO_05_CodeRember = 3105,
/// <summary>
/// 移载(流水线)装置出库处理,, ,顶升气缸1下降(Y16=0/Y17=1)
/// </summary>
MO_09_TopCylinder_Down = 3109,
/// <summary>
/// 移载(流水线)装置出库处理,, 阻挡气缸1-2下降( Y15=1)
/// </summary>
MO_10_StopCylinder2_Down = 3110,
/// <summary>
/// 移载(流水线)装置出库处理,, 夹具检测1-4=0,
/// </summary>
MO_11_Tray_Check = 3111,
/// <summary>
/// 移载(流水线)装置出库处理,,阻挡气缸1-1下降( Y14=1)阻挡气缸1-2上升( Y15=0)
/// </summary>
MO_12_StopCylinder_Back = 3112,
/// <summary>
/// 移栽装置出库处理。。前后气缸1前进
/// </summary>
MO_51_BeforeAfterCylinderBefore = 3151,
/// <summary>
/// 移栽装置出库处理。。 上下气缸1下降(Y22=0/Y23=1)
/// </summary>
MO_52_UpDownCylinderDown = 3152,
/// <summary>
/// 移栽装置出库处理。。 上下气缸1下降后,等待0.3秒再夹紧,防止没有下降到位就夹紧操作
/// </summary>
MO_53_UpDownCylinderDownWait = 3153,
/// <summary>
/// 移栽装置出库处理。 夹料气缸1夹紧( Y25=0/Y24=1)
/// </summary>
MO_54_ClampCylinderSlack = 3154,
/// <summary>
/// 移栽装置出库处理。。 上下气缸1上升(Y22=1/Y23=0)
/// </summary>
MO_55_UpDownCylinderUp = 3155,
/// <summary>
/// 移栽装置出库处理。。 前后气缸1后退( Y20=0/Y21=1)
/// </summary>
MO_56_BeforeAfterCylinderAfter = 3156,
/// <summary>
/// 移载(流水线)装置出库处理,,, 上下气缸1下降(Y22=0/Y23=1)
/// </summary>
MO_58_UpDownCylinderDown = 3158,
/// <summary>
/// 移载(流水线)装置出库处理,, 夹料气缸1放松( Y25=1/Y24=0)
/// </summary>
MO_59_ClampCylinderTighten = 3159,
/// <summary>
/// 移载(流水线)装置出库处理,, ,上下气缸1上升(Y22=1/Y23=0)
/// </summary>
MO_60_UpDownCylinderUp = 3160,
#endregion
#region 移载装置入库处理
/// <summary>
///移载装置入库处理,,检测 夹具编码( X1 3,X14,X15)
/// </summary>
MI_05_CodeCheck = 3005,
/// <summary>
/// 移载装置入库处理,,等待box等待状态才能继续操作
/// </summary>
MI_10_WaitBox=3006,
/// <summary>
///移载装置入库处理,,编码与仓位一致,,上下气缸1下降(Y22=0/Y23=1)
/// </summary>
MI_07_UpDownCylinderDown = 3007,
/// <summary>
///移载装置入库处理,,编码与仓位一致,,上下气缸1下降后,等待0.3秒,防止没有 下降到位就夹紧
/// </summary>
MI_07_UpDownCylinderDownWait = 3024,
/// <summary>
///移载装置入库处理,, 夹料气缸1夹紧( Y25=0/Y24=1)
/// </summary>
MI_08_ClampCylinderSlack = 3008,
/// <summary>
///移载装置入库处理,, 上下气缸1上升(Y22=1/Y23=0)
/// </summary>
MI_09_UpDownCylinderUp = 3009,
/// <summary>
///移载装置入库处理,, ,前后气缸1前进( Y20=1/Y21=0)
/// </summary>
MI_10_BeforeAfterCylinderBefore = 3010,
/// <summary>
///移载装置入库处理,, 上下气缸1下降(Y22=0/Y23=1)
/// </summary>
MI_11_UpDownCylinderDown = 3011,
/// <summary>
///移载装置入库处理,, ,夹料气缸1放松( Y25=1/Y24=0)
/// </summary>
MI_12_ClampCylinderTighten = 3012,
/// <summary>
///移载装置入库处理,, 上下气缸1上升(Y22=1/Y23=0)
/// </summary>
MI_13_UpdownCylinderUp = 3013,
/// <summary>
///移载装置入库处理,, ,前后气缸1后退( Y20=0/Y21=1)
/// </summary>
MI_14_BeforeAfterCylinderAfter = 3014,
/// <summary>
///移载装置入库处理,, 检测到X102-1=1送料流程完成
/// </summary>
MI_15_SendEnd = 3015,
/// <summary>
///移载装置入库处理,,编码不一致,,顶升气缸1下降(Y16=0/Y17=1)
/// </summary>
MI_20_TopCylinderDown = 3020,
/// <summary>
///移载装置入库处理,,阻挡气缸1-2下降( Y15=1),
/// </summary>
MI_21_StopCylinderDown = 3021,
/// <summary>
///移载装置入库处理,检测Check4=0,
/// </summary>
MI_22_FixtureCheck_Low = 3022,
/// <summary>
///移载装置入库处理,,,阻挡气缸1-2 上升( Y15=0),等待200毫秒
/// </summary>
MI_23_StopCylinderReset = 3023,
#endregion
//后面的是双层料仓的类型 值从20000开始
#region 双层流水线调宽和处理
/// <summary>
/// 双层料仓流水线模块 。检测到板子进入,打开流水线
/// </summary>
LINEIN_OpenLine = 20000,
/// <summary>
/// 双层料仓流水线模块 。等待下位机要料信号=High
/// </summary>
LINEIN_WaitOutSingle = 20001,
/// <summary>
/// 双层料仓流水线模块 。检测到出料口信号=Low
/// </summary>
LINEIN_WaitOutSingleLow = 20002,
/// <summary>
/// 关闭皮带
/// </summary>
LINEIN_CloseLine=20003,
/// <summary>
/// 等待下位机要料信号
/// </summary>
LINEIN_WatiMachineSingle=20004,
/// <summary>
/// 双层料仓流水线模块 。线体调宽回原点
/// </summary>
LINECW_LineReturnHome = 20010,
/// <summary>
/// 双层料仓流水线模块 。线体调宽回原点
/// </summary>
LINECW_LineChangeWidth = 20011,
/// <summary>
/// 流水线原点返回,设置速度
/// </summary>
LINEH_SetSpeed_001 = 20020,
/// <summary>
/// 流水线原点返回,反反向走到20000
/// </summary>
LINEH_RevertMove_002 = 20021,
/// <summary>
/// 流水线原点返回,开始原点返回
/// </summary>
LINEH_LineHome_003= 20022,
#endregion
#region 在线料仓入库处理
/// <summary>
///在线双层料仓:入仓: 等待料盘进入
/// </summary>
DB_SI_00_WaitIO = 20100,
/// <summary>
///在线双层料仓:入仓:扫描二维码中
/// </summary>
DB_SI_01_Scanning = 20101,
/// <summary>
/// 在线双层料仓:入仓:根据二维码从服务器获取仓位号
/// </summary>
DB_SI_02_GetBoxNum = 20102,
/// <summary>
///在线双层料仓: 同时动作
/// 电缸运行到入料口下方的位置 , 料仓旋转到对应的位置
/// </summary>
DB_SI_03_InStoreReadyMove = 20103,
/// <summary>
/// 在线双层料仓:入仓:(取料叉子进入料口)、
/// </summary>
DB_SI_04_TakeDeviceToDoor = 20104,
/// <summary>
/// 在线双层料仓:入仓:(电缸稍微移动到料口上端位置),
/// </summary>
DB_SI_05_ModbusUpToDoor = 20105,
/// <summary>
///在线双层料仓: 取出料盘
/// </summary>
DB_SI_06_TakeSITray = 20106,
/// <summary>
/// 在线双层料仓:入仓(电缸运行到对应仓位的下方,,旋转电机2正转)
/// </summary>
DB_SI_07_MoveToRoom = 20107,
/// <summary>
/// 在线双层料仓:入仓(取料叉子进入仓位)
/// </summary>
DB_SI_08_TakeDeviceToRoom = 20108,
/// <summary>
///在线双层料仓: 入仓(电缸微动至对应料仓的下端位置)
/// </summary>
DB_SI_09_PutToRoom = 20109,
/// <summary>
/// 在线双层料仓:从仓位出来
/// </summary>
DB_SI_10_SIFromRoom = 20110,
/// <summary>
///在线双层料仓: 旋转电机2反转,回到中间等待位置
/// </summary>
DB_SI_11_MoveSIFromRoom = 20111,
/// <summary>
/// 在线双层料仓:关闭仓门
/// </summary>
DB_SI_12_CloseDoor = 20112,
#endregion
#region 在线料仓出库处理
/// <summary>
///在线双层料仓:: 出库处理:等待执行出库
/// </summary>
DB_SO_00_WaitStart = 20200,
/// <summary>
///在线双层料仓:
/// </summary>
DB_SO_01_Scanning = 20201,
/// <summary>
/// 在线双层料仓:
/// </summary>
DB_SO_02_GetBoxNum = 20202,
/// <summary>
///在线双层料仓:出库执行 同时动作
/// 电缸运行到入料口下方的位置 ,料仓旋转到对应的位置,旋转电机2正传
/// </summary>
DB_SO_03_ReadyMove = 20203,
/// <summary>
/// 在线双层料仓: 出仓:(取料叉子进入料仓)叉子前进
/// </summary>
DB_SO_04_TakeDeviceToDoor = 20204,
/// <summary>
/// 在线双层料仓: 出仓:(电缸稍微移动到料仓上端位置)
/// </summary>
DB_SO_05_ModbusUpToDoor = 20205,
/// <summary>
///在线双层料仓: 取出料盘,叉子后退
/// </summary>
DB_SO_06_TakeOutTray = 20206,
/// <summary>
/// 在线双层料仓: 出库执行(电缸移动至入料口的上端位置 旋转电机2正转)
/// </summary>
DB_SO_07_MoveToRoom = 20207,
/// <summary>
/// 在线双层料仓:出库执行 (叉子前进)
/// </summary>
DB_SO_08_TakeDeviceToRoom = 20208,
/// <summary>
///在线双层料仓: 出库执行 (电缸微动至对应料口的下端位置)
/// </summary>
DB_SO_09_PutToRoom = 20209,
/// <summary>
/// 在线双层料仓:出库执行 叉子后退
/// </summary>
DB_SO_10_OutFromRoom = 20210,
/// <summary>
/// 在线双层料仓:等待物料到达
/// </summary>
DB_SO_11_WaitTrayToDoor= 20211,
/// <summary>
/// 在线双层料仓:等待拿走料盘
/// </summary>
DB_SO_12_WaitTrayLeave = 20212,
///// <summary>
/////在线双层料仓:出库执行 旋转电机2反转,回到中间等待位置
///// </summary>
//DB_SO_11_MoveOutFromRoom = 20211,
///// <summary>
///// 在线双层料仓:出库执行(关闭仓门
///// </summary>
//DB_SO_CloseDoor = 20213,
#endregion
/// <summary>
/// 在线双层料仓:回原点:叉子退回
/// </summary>
DB_H_01_ForkBack = 20301,
/// <summary>
/// 在线双层料仓:回原点:同时动作:转盘低速旋转 , 电缸回到原位 ,( I/O点控制) 旋转气缸旋回
/// </summary>
DB_H_02_BackHome= 20302,
/// <summary>
/// 在线双层料仓:回原点:旋回完成
/// </summary>
DB_H_03_BackEnd = 20303,
/// <summary>
/// 在线双层料仓:回原点:原点开关点亮,原点开关点亮,旋回端开关点亮,,转盘停止 ,电缸停止, 清理电钢和转盘的位置信息
/// </summary>
DB_H_04_ClearPosition = 20304,
} }
public enum StoreAlarmType public enum StoreAlarmType
...@@ -773,7 +333,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -773,7 +333,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary> /// <summary>
/// 轴报警 /// 轴报警
/// </summary> /// </summary>
AxisAlarm = 1, AxisAlarm = 1,
/// <summary> /// <summary>
/// 收到急停 /// 收到急停
/// </summary> /// </summary>
...@@ -793,6 +353,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -793,6 +353,6 @@ namespace OnlineStore.DeviceLibrary
/// <summary> /// <summary>
/// 电钢报警 /// 电钢报警
/// </summary> /// </summary>
StellAlarm=50, StellAlarm = 50,
} }
} }
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!