Commit 09dde46d LN

1

1 个父辈 73b57b24
...@@ -9,12 +9,6 @@ ...@@ -9,12 +9,6 @@
AIOBOX操作类 AIOBOX操作类
</summary> </summary>
</member> </member>
<member name="F:Asa.IOModule.AIOBOX._unrevdRemote">
<summary>
暂停次数
WriteDO 命令非常多时,暂停一次发送 ReadDI 或 ReadDO
</summary>
</member>
<member name="F:Asa.IOModule.AIOBOX.SEND_SLEEP"> <member name="F:Asa.IOModule.AIOBOX.SEND_SLEEP">
<summary> <summary>
每条命令发送的间隔 每条命令发送的间隔
...@@ -22,13 +16,12 @@ ...@@ -22,13 +16,12 @@
小于30时,会出现接收数据连包的情况 小于30时,会出现接收数据连包的情况
</summary> </summary>
</member> </member>
<member name="F:Asa.IOModule.AIOBOX.LISTEN_SLEEP"> <member name="F:Asa.IOModule.AIOBOX.PORT">
<summary> <summary>
监听网络接收数据的间隔 ModBus端口
必须小于SEND_SLEEP
</summary> </summary>
</member> </member>
<member name="T:Asa.IOModule.AIOBOX.DI_Changed"> <member name="T:Asa.IOModule.AIOBOX.DIO_Changed">
<summary> <summary>
自动读取DI委托 自动读取DI委托
</summary> </summary>
...@@ -40,19 +33,12 @@ ...@@ -40,19 +33,12 @@
自动读取DI事件触发 自动读取DI事件触发
</summary> </summary>
</member> </member>
<member name="T:Asa.IOModule.AIOBOX.DO_Changed">
<summary>
自动读取DO委托
</summary>
<param name="box">AIOBOX</param>
<param name="sta">所有DO状态</param>
</member>
<member name="E:Asa.IOModule.AIOBOX.DO_Changed_Event"> <member name="E:Asa.IOModule.AIOBOX.DO_Changed_Event">
<summary> <summary>
自动读取DO事件触发 自动读取DO事件触发
</summary> </summary>
</member> </member>
<member name="T:Asa.IOModule.AIOBOX.AI_Changed"> <member name="T:Asa.IOModule.AIOBOX.AIO_Changed">
<summary> <summary>
自动读取AI委托 自动读取AI委托
</summary> </summary>
...@@ -64,13 +50,6 @@ ...@@ -64,13 +50,6 @@
自动读取AI事件触发 自动读取AI事件触发
</summary> </summary>
</member> </member>
<member name="T:Asa.IOModule.AIOBOX.AO_Changed">
<summary>
自动读取AO委托
</summary>
<param name="box">AIOBOX</param>
<param name="val">所有AO的值</param>
</member>
<member name="E:Asa.IOModule.AIOBOX.AO_Changed_Event"> <member name="E:Asa.IOModule.AIOBOX.AO_Changed_Event">
<summary> <summary>
自动读取AO事件触发 自动读取AO事件触发
...@@ -86,11 +65,6 @@ ...@@ -86,11 +65,6 @@
IP地址 IP地址
</summary> </summary>
</member> </member>
<member name="P:Asa.IOModule.AIOBOX.Port">
<summary>
ModBus端口
</summary>
</member>
<member name="P:Asa.IOModule.AIOBOX.IsConn"> <member name="P:Asa.IOModule.AIOBOX.IsConn">
<summary> <summary>
是否连接 是否连接
...@@ -101,35 +75,11 @@ ...@@ -101,35 +75,11 @@
错误信息 错误信息
</summary> </summary>
</member> </member>
<member name="P:Asa.IOModule.AIOBOX.LogOutDir"> <member name="M:Asa.IOModule.AIOBOX.LogPath(System.String)">
<summary>
日志输出目录
</summary>
</member>
<member name="P:Asa.IOModule.AIOBOX.LogOut">
<summary>
错误日志输出,默认true
</summary>
</member>
<member name="P:Asa.IOModule.AIOBOX.InputCount">
<summary>
输入总数
</summary>
</member>
<member name="P:Asa.IOModule.AIOBOX.OutputCount">
<summary>
输出总数
</summary>
</member>
<member name="P:Asa.IOModule.AIOBOX.InputReadSleep">
<summary>
自动读取DI间隔
</summary>
</member>
<member name="P:Asa.IOModule.AIOBOX.OutputReadSleep">
<summary> <summary>
自动读取DO间隔 日志路径,连接前设置路径会自动保存日志
</summary> </summary>
<param name="path">文件夹路径</param>
</member> </member>
<member name="M:Asa.IOModule.AIOBOX.SetInput(Asa.IOModule.Box_Type,System.Int32)"> <member name="M:Asa.IOModule.AIOBOX.SetInput(Asa.IOModule.Box_Type,System.Int32)">
<summary> <summary>
...@@ -197,6 +147,12 @@ ...@@ -197,6 +147,12 @@
<param name="sta"></param> <param name="sta"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Asa.IOModule.AIOBOX.ReverseStatus(Asa.IOModule.Box_Sta@)">
<summary>
相反状态(ON/OFF)
</summary>
<param name="sta"></param>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadDI(System.Int32)"> <member name="M:Asa.IOModule.AIOBOX.ReadDI(System.Int32)">
<summary> <summary>
读取单个DI输入状态(ON/OFF) 读取单个DI输入状态(ON/OFF)
...@@ -292,20 +248,17 @@ ...@@ -292,20 +248,17 @@
读取所有DO状态,功能码1 读取所有DO状态,功能码1
</summary> </summary>
<param name="buff"></param> <param name="buff"></param>
<returns></returns>
</member> </member>
<member name="M:Asa.IOModule.AIOBOX.ReadDI(System.Byte[])"> <member name="M:Asa.IOModule.AIOBOX.ReadDI(System.Byte[])">
<summary> <summary>
读取所有DI状态,功能码2 读取所有DI状态,功能码2
</summary> </summary>
<returns></returns>
</member> </member>
<member name="M:Asa.IOModule.AIOBOX.ReadAI(System.Byte[])"> <member name="M:Asa.IOModule.AIOBOX.ReadAI(System.Byte[])">
<summary> <summary>
读取所有AI的值,功能码4 读取所有AI的值,功能码4
</summary> </summary>
<param name="buff"></param> <param name="buff"></param>
<returns></returns>
</member> </member>
<member name="M:Asa.IOModule.AIOBOX.Command"> <member name="M:Asa.IOModule.AIOBOX.Command">
<summary> <summary>
...@@ -373,5 +326,46 @@ ...@@ -373,5 +326,46 @@
闭合,打开,高电平 闭合,打开,高电平
</summary> </summary>
</member> </member>
<member name="T:Asa.IOModule.LogFile">
<summary>
日志操作类
</summary>
</member>
<member name="M:Asa.IOModule.LogFile.#ctor(System.String)">
<summary>
日志
</summary>
<param name="path">文件夹路径</param>
</member>
<member name="M:Asa.IOModule.LogFile.Close">
<summary>
关闭文件
</summary>
</member>
<member name="M:Asa.IOModule.LogFile.OutError(System.String)">
<summary>
输出错误
</summary>
<param name="s"></param>
</member>
<member name="M:Asa.IOModule.LogFile.OutInfo(System.String)">
<summary>
输出信息
</summary>
<param name="s"></param>
</member>
<member name="M:Asa.IOModule.LogFile.OutData(System.String,System.Byte[])">
<summary>
输出数据
</summary>
<param name="tr"></param>
<param name="buff"></param>
</member>
<member name="M:Asa.IOModule.LogFile.OutData(System.String)">
<summary>
输出数据
</summary>
<param name="s"></param>
</member>
</members> </members>
</doc> </doc>
...@@ -175,8 +175,7 @@ namespace OnlineStore.AssemblyLine ...@@ -175,8 +175,7 @@ namespace OnlineStore.AssemblyLine
} }
} }
} }
private void FrmStoreIOStatus_Load(object sender, EventArgs e) private void FrmStoreIOStatus_Load(object sender, EventArgs e)
{ {
chbDebug.Checked = equipBean.IsDebug; chbDebug.Checked = equipBean.IsDebug;
...@@ -200,26 +199,20 @@ namespace OnlineStore.AssemblyLine ...@@ -200,26 +199,20 @@ namespace OnlineStore.AssemblyLine
ConfigIO io = (ConfigIO)cmbWriteIO.Items[e.Index]; ConfigIO io = (ConfigIO)cmbWriteIO.Items[e.Index];
e.Graphics.DrawString(io.DisplayStr, e.Font, new SolidBrush(e.ForeColor), e.Bounds.X, e.Bounds.Y + 3); e.Graphics.DrawString(io.DisplayStr, e.Font, new SolidBrush(e.ForeColor), e.Bounds.X, e.Bounds.Y + 3);
} }
} }
private void btnReadIO_Click(object sender, EventArgs e) private void btnReadIO_Click(object sender, EventArgs e)
{ {
ReadIOList(); ReadIOList();
} }
internal void FormStatus(bool isStart) internal override void FormStatus(bool isStart)
{ {
btnStart.Enabled = !isStart; btnStart.Enabled = !isStart;
btnStop.Enabled = true; btnStop.Enabled = true;
btnReset.Enabled = isStart; btnReset.Enabled = isStart;
//btnInStore.Enabled = isStart; //btnInStore.Enabled = isStart;
btnOutStore.Enabled = isStart; btnOutStore.Enabled = isStart;
} }
private void FrmIOStatus_Shown(object sender, EventArgs e) private void FrmIOStatus_Shown(object sender, EventArgs e)
{ {
timer1.Start(); timer1.Start();
...@@ -227,16 +220,17 @@ namespace OnlineStore.AssemblyLine ...@@ -227,16 +220,17 @@ namespace OnlineStore.AssemblyLine
private void btnStart_Click(object sender, EventArgs e) private void btnStart_Click(object sender, EventArgs e)
{ {
if (equipBean.runStatus.Equals(LineRunStatus.Wait)) StartDebug();
{ }
bool result = equipBean.StartRun(true); private void btnStop_Click(object sender, EventArgs e)
if (result) {
{ StopRun();
FormStatus(true); }
} private void btnReset_Click(object sender, EventArgs e)
} {
Reset();
} }
private void chbDebug_CheckedChanged(object sender, EventArgs e) private void chbDebug_CheckedChanged(object sender, EventArgs e)
{ {
if (!IsLoad) if (!IsLoad)
...@@ -290,26 +284,6 @@ namespace OnlineStore.AssemblyLine ...@@ -290,26 +284,6 @@ namespace OnlineStore.AssemblyLine
private void btnStop_Click(object sender, EventArgs e)
{
try
{
equipBean.StopMove();
}
catch (Exception ex)
{
LogUtil.error( "出错:" + ex.StackTrace);
}
}
private void btnReset_Click(object sender, EventArgs e)
{
if (equipBean.runStatus>(LineRunStatus.Wait))
{
equipBean.Reset();
}
}
private void btnCloseAll_Click(object sender, EventArgs e) private void btnCloseAll_Click(object sender, EventArgs e)
{ {
......
...@@ -85,5 +85,52 @@ namespace OnlineStore.AssemblyLine ...@@ -85,5 +85,52 @@ namespace OnlineStore.AssemblyLine
btn.BackColor = Color.SkyBlue; btn.BackColor = Color.SkyBlue;
} }
} }
protected void StartDebug()
{
if (equipBase.runStatus.Equals(LineRunStatus.Wait))
{
bool result = equipBase.StartRun(true);
if (result)
{
FormStatus(true);
}
}
else
{
MessageBox.Show(equipBase.Name + "已启动,不能重复启动");
}
}
protected void StopRun()
{
try
{
if (equipBase.runStatus >= LineRunStatus.HomeMoving)
{
equipBase.StopRun();
}
else
{
MessageBox.Show("请先启动设备");
}
}
catch (Exception ex)
{
LogUtil.error("出错:" + ex.StackTrace);
}
}
protected void Reset()
{
if (equipBase.runStatus >= (LineRunStatus.HomeMoving))
{
equipBase.Reset();
}
else
{
MessageBox.Show("请先启动设备");
}
}
internal virtual void FormStatus(bool status)
{
}
} }
} }
...@@ -253,16 +253,12 @@ namespace OnlineStore.AssemblyLine ...@@ -253,16 +253,12 @@ namespace OnlineStore.AssemblyLine
e.Graphics.DrawString(io.DisplayStr, e.Font, new SolidBrush(e.ForeColor), e.Bounds.X, e.Bounds.Y + 3); e.Graphics.DrawString(io.DisplayStr, e.Font, new SolidBrush(e.ForeColor), e.Bounds.X, e.Bounds.Y + 3);
} }
} }
private void btnReadIO_Click(object sender, EventArgs e) private void btnReadIO_Click(object sender, EventArgs e)
{ {
ReadIOList(); ReadIOList();
} }
internal override void FormStatus(bool isStart)
internal void FormStatus(bool isStart)
{ {
btnStart.Enabled = !isStart; btnStart.Enabled = !isStart;
btnStop.Enabled = true; btnStop.Enabled = true;
...@@ -277,14 +273,16 @@ namespace OnlineStore.AssemblyLine ...@@ -277,14 +273,16 @@ namespace OnlineStore.AssemblyLine
private void btnStart_Click(object sender, EventArgs e) private void btnStart_Click(object sender, EventArgs e)
{ {
if (equipBean.runStatus.Equals(LineRunStatus.Wait)) StartDebug();
{ }
bool result = equipBean.StartRun(true); private void btnStop_Click(object sender, EventArgs e)
if (result) {
{ StopRun();
FormStatus(true); }
}
} private void btnReset_Click(object sender, EventArgs e)
{
Reset();
} }
private void chbDebug_CheckedChanged(object sender, EventArgs e) private void chbDebug_CheckedChanged(object sender, EventArgs e)
...@@ -350,27 +348,6 @@ namespace OnlineStore.AssemblyLine ...@@ -350,27 +348,6 @@ namespace OnlineStore.AssemblyLine
} }
} }
private void btnStop_Click(object sender, EventArgs e)
{
try
{
equipBean.StopMove();
}
catch (Exception ex)
{
LogUtil.error("出错:" + ex.StackTrace);
}
}
private void btnReset_Click(object sender, EventArgs e)
{
if (equipBean.runStatus > (LineRunStatus.Wait))
{
equipBean.Reset();
}
}
private void btnLocationCylinder_Click(object sender, EventArgs e) private void btnLocationCylinder_Click(object sender, EventArgs e)
{ {
BtnMove(btnLocationCylinder, "SL定位气缸上升", "SL定位气缸下降", IO_Type.SL_LocationCylinder_Down, IO_Type.SL_LocationCylinder_Up); BtnMove(btnLocationCylinder, "SL定位气缸上升", "SL定位气缸下降", IO_Type.SL_LocationCylinder_Down, IO_Type.SL_LocationCylinder_Up);
......
...@@ -223,6 +223,7 @@ ...@@ -223,6 +223,7 @@
this.tableLayoutPanel2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.tableLayoutPanel2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.tableLayoutPanel2.AutoScroll = true;
this.tableLayoutPanel2.ColumnCount = 1; this.tableLayoutPanel2.ColumnCount = 1;
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel2.Location = new System.Drawing.Point(5, 14); this.tableLayoutPanel2.Location = new System.Drawing.Point(5, 14);
...@@ -250,6 +251,7 @@ ...@@ -250,6 +251,7 @@
this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.tableLayoutPanel1.AutoScroll = true;
this.tableLayoutPanel1.ColumnCount = 1; this.tableLayoutPanel1.ColumnCount = 1;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.Location = new System.Drawing.Point(6, 14); this.tableLayoutPanel1.Location = new System.Drawing.Point(6, 14);
......
...@@ -236,7 +236,7 @@ namespace OnlineStore.AssemblyLine ...@@ -236,7 +236,7 @@ namespace OnlineStore.AssemblyLine
{ {
ReadIOList(); ReadIOList();
} }
internal void FormStatus(bool isStart) internal override void FormStatus(bool isStart)
{ {
btnStart.Enabled = !isStart; btnStart.Enabled = !isStart;
btnStop.Enabled = true; btnStop.Enabled = true;
...@@ -253,14 +253,15 @@ namespace OnlineStore.AssemblyLine ...@@ -253,14 +253,15 @@ namespace OnlineStore.AssemblyLine
private void btnStart_Click(object sender, EventArgs e) private void btnStart_Click(object sender, EventArgs e)
{ {
if (equipBean.runStatus.Equals(LineRunStatus.Wait)) StartDebug();
{ }
bool result = equipBean.StartRun(true); private void btnStop_Click(object sender, EventArgs e)
if (result) {
{ StopRun();
FormStatus(true); }
} private void btnReset_Click(object sender, EventArgs e)
} {
Reset();
} }
private void chbDebug_CheckedChanged(object sender, EventArgs e) private void chbDebug_CheckedChanged(object sender, EventArgs e)
...@@ -326,25 +327,7 @@ namespace OnlineStore.AssemblyLine ...@@ -326,25 +327,7 @@ namespace OnlineStore.AssemblyLine
} }
} }
private void btnStop_Click(object sender, EventArgs e)
{
try
{
equipBean.StopMove();
}
catch (Exception ex)
{
LogUtil.error("出错:" + ex.StackTrace);
}
}
private void btnReset_Click(object sender, EventArgs e)
{
if (equipBean.runStatus > (LineRunStatus.Wait))
{
equipBean.Reset();
}
}
private void btnStop1Up_Click(object sender, EventArgs e) private void btnStop1Up_Click(object sender, EventArgs e)
{ {
BtnMove(btnStop1Up, "阻挡1下降", "阻挡1上升", IO_Type.StopCylinder_Down1); BtnMove(btnStop1Up, "阻挡1下降", "阻挡1上升", IO_Type.StopCylinder_Down1);
......
...@@ -173,9 +173,7 @@ namespace OnlineStore.AssemblyLine ...@@ -173,9 +173,7 @@ namespace OnlineStore.AssemblyLine
selectControl = newControl; selectControl = newControl;
} }
} }
} }
private void FrmStoreIOStatus_Load(object sender, EventArgs e) private void FrmStoreIOStatus_Load(object sender, EventArgs e)
{ {
if (equipBean.UseAxis) if (equipBean.UseAxis)
...@@ -216,17 +214,13 @@ namespace OnlineStore.AssemblyLine ...@@ -216,17 +214,13 @@ namespace OnlineStore.AssemblyLine
e.Graphics.DrawString(io.DisplayStr, e.Font, new SolidBrush(e.ForeColor), e.Bounds.X, e.Bounds.Y + 3); e.Graphics.DrawString(io.DisplayStr, e.Font, new SolidBrush(e.ForeColor), e.Bounds.X, e.Bounds.Y + 3);
} }
} }
private void btnReadIO_Click(object sender, EventArgs e) private void btnReadIO_Click(object sender, EventArgs e)
{ {
ReadIOList(); ReadIOList();
} }
internal void FormStatus(bool isStart) internal override void FormStatus(bool isStart)
{ {
btnStart.Enabled = !isStart; btnStart.Enabled = !isStart;
btnStop.Enabled = true; btnStop.Enabled = true;
...@@ -242,16 +236,16 @@ namespace OnlineStore.AssemblyLine ...@@ -242,16 +236,16 @@ namespace OnlineStore.AssemblyLine
private void btnStart_Click(object sender, EventArgs e) private void btnStart_Click(object sender, EventArgs e)
{ {
if (equipBean.runStatus.Equals(LineRunStatus.Wait)) StartDebug();
{ }
bool result = equipBean.StartRun(true); private void btnStop_Click(object sender, EventArgs e)
if (result) {
{ StopRun();
FormStatus(true); }
} private void btnReset_Click(object sender, EventArgs e)
} {
Reset();
} }
private void chbDebug_CheckedChanged(object sender, EventArgs e) private void chbDebug_CheckedChanged(object sender, EventArgs e)
{ {
if (!IsLoad) if (!IsLoad)
...@@ -301,29 +295,8 @@ namespace OnlineStore.AssemblyLine ...@@ -301,29 +295,8 @@ namespace OnlineStore.AssemblyLine
{ {
MessageBox.Show("未启动或不在空闲中,无法入库测试!"); MessageBox.Show("未启动或不在空闲中,无法入库测试!");
} }
} }
private void btnStop_Click(object sender, EventArgs e)
{
try
{
equipBean.StopMove();
}
catch (Exception ex)
{
LogUtil.error( "出错:" + ex.StackTrace);
}
}
private void btnReset_Click(object sender, EventArgs e)
{
if (equipBean.runStatus>(LineRunStatus.Wait))
{
equipBean.Reset();
}
}
private void btnStop1Up_Click(object sender, EventArgs e) private void btnStop1Up_Click(object sender, EventArgs e)
{ {
BtnMove(btnStop1Up, "阻挡1下降", "阻挡1上升", IO_Type.StopCylinder_Down1); BtnMove(btnStop1Up, "阻挡1下降", "阻挡1上升", IO_Type.StopCylinder_Down1);
......
...@@ -36,24 +36,102 @@ namespace OnlineStore.DeviceLibrary ...@@ -36,24 +36,102 @@ namespace OnlineStore.DeviceLibrary
/// 开始运行 /// 开始运行
/// </summary> /// </summary>
public override bool StartRun(bool isDebug = false) public override bool StartRun(bool isDebug = false)
{ {
preTrayNum = 0; if (CanStartRun().Equals(false))
currTrayNum = 0; {
mainTimer.Enabled = false; return false ;
}
mainTimer.Stop();
MoveInfo.EndMove(); MoveInfo.EndMove();
SecondMoveInfo.EndMove(); SecondMoveInfo.EndMove();
lineStatus = LineStatus.StoreOnline; lineStatus = LineStatus.StoreOnline;
//TODO 调试时暂时注释
runStatus = LineRunStatus.HomeMoving; runStatus = LineRunStatus.HomeMoving;
bool result = ReturnHome(); LogInfo("开始原点返回: (重置灯状态,定位气缸下降 )开始");
if (result && isDebug) MoveInfo.NewMove(LineMoveType.ReturnHome);
StartReset();
if ( isDebug)
{ {
mainTimer.Enabled = true; mainTimer.Enabled = true;
} }
return result; return true ;
}
/// <summary>
/// 出料装置重置
/// </summary>
public override bool Reset()
{
StopMove();
LogInfo("开始重置: (重置灯状态,定位气缸下降 )开始;");
runStatus = LineRunStatus.Reset;
MoveInfo.NewMove(LineMoveType.Reset);
StartReset();
return true;
}
private void StartReset()
{
ResetClearData();
lineStatus = LineStatus.ResetMove;
MoveInfo.NextMoveStep(LineMoveStep.DL_R_CylinderDown);
CylinderMove(MoveInfo, IO_Type.SeparateDevice_Up, IO_Type.SeparateDevice_Down);
IOMove(IO_Type.DLine_RunStatus, IO_VALUE.HIGH);
IOMove(IO_Type.DLine_RunAlarm, IO_VALUE.LOW);
if (IsDebug)
{
mainTimer.Start();
}
isInPro = false;
}
/// <summary>
/// 复位处理
/// </summary>
protected override void ResetProcess()
{
if (MoveInfo.IsInWait)
{
CheckWait(MoveInfo);
}
else if (SecondMoveInfo.IsInWait)
{
CheckWait(SecondMoveInfo);
}
if (!MoveInfo.IsInWait && !SecondMoveInfo.IsInWait)
{
switch (MoveInfo.MoveStep)
{
case LineMoveStep.DL_R_CylinderDown:
LogInfo(MoveInfo.MoveType + "完成!");
runStatus = LineRunStatus.Runing;
MoveInfo.EndMove();
SecondMoveInfo.EndMove();
break;
default: break;
}
}
} }
/// <summary>
/// 停止运动
/// </summary>
internal override void StopMove()
{
runStatus = LineRunStatus.Busy;
MoveInfo.EndMove();
SecondMoveInfo.EndMove();
StopLineRun();
LogInfo("停止运动:(定位气缸下降,皮带线停转 )开始 ");
CylinderMove(null, IO_Type.SeparateDevice_Up, IO_Type.SeparateDevice_Down);
IOMove(IO_Type.DLine_Run1, IO_VALUE.LOW);
IOMove(IO_Type.DLine_Run2, IO_VALUE.LOW);
IOMove(IO_Type.DLine_Run3, IO_VALUE.LOW);
IOMove(IO_Type.SeparateDevice_Run, IO_VALUE.LOW);
}
/// <summary> /// <summary>
/// 停止运行 /// 停止运行
/// </summary> /// </summary>
...@@ -110,25 +188,26 @@ namespace OnlineStore.DeviceLibrary ...@@ -110,25 +188,26 @@ namespace OnlineStore.DeviceLibrary
BusyMoveProcess(); BusyMoveProcess();
//判断流水线打开了才可以运行 //判断流水线打开了才可以运行
if (runStatus.Equals(LineRunStatus.Runing)&&alarmType.Equals(LineAlarm.None)) { if (runStatus.Equals(LineRunStatus.Runing) && alarmType.Equals(LineAlarm.None))
{
//判断是否需要入库 //判断是否需要入库
if (IOValue(IO_Type.DLine_Exit_Check3).Equals(IO_VALUE.LOW)&& LineRuning.Equals(false)) if (IOValue(IO_Type.DLine_Exit_Check3).Equals(IO_VALUE.LOW) && LineRuning.Equals(false))
{ {
//皮带3入口或者中间有料盘,出口无料盘,转动皮带三 //皮带3入口或者中间有料盘,出口无料盘,转动皮带三
if ((IOValue(IO_Type.DLine_Entry_Check3).Equals(IO_VALUE.HIGH) || IOValue(IO_Type.DLine_Middle_Check3).Equals(IO_VALUE.HIGH))) if ((IOValue(IO_Type.DLine_Entry_Check3).Equals(IO_VALUE.HIGH) || IOValue(IO_Type.DLine_Middle_Check3).Equals(IO_VALUE.HIGH)))
{ {
StartLineRun(IO_Type.DLine_Run3, IO_Type.DLine_Location_Check3); StartLineRun(IO_Type.DLine_Run3, IO_Type.DLine_Location_Check3);
} }
} }
if (IOValue(IO_Type.DLine_Entry_Check3).Equals(IO_VALUE.LOW) && LineRuning.Equals(false)&& MoveInfo.MoveType.Equals(LineMoveType.None)) if (IOValue(IO_Type.DLine_Entry_Check3).Equals(IO_VALUE.LOW) && LineRuning.Equals(false) && MoveInfo.MoveType.Equals(LineMoveType.None))
{ {
if ((IOValue(IO_Type.DLine_Entry_Check1).Equals(IO_VALUE.HIGH) || IOValue(IO_Type.DLine_Exit_Check1).Equals(IO_VALUE.HIGH))) if ((IOValue(IO_Type.DLine_Entry_Check1).Equals(IO_VALUE.HIGH) || IOValue(IO_Type.DLine_Exit_Check1).Equals(IO_VALUE.HIGH)))
{ {
StartLineRun(IO_Type.DLine_Run1, IO_Type.DLine_Location_Check1); StartLineRun(IO_Type.DLine_Run1, IO_Type.DLine_Location_Check1);
} }
} }
if (IOValue(IO_Type.DLine_Middle_Check3).Equals(IO_VALUE.LOW) && LineRuning.Equals(false)&& SecondMoveInfo.MoveType.Equals(LineMoveType.None)) if (IOValue(IO_Type.DLine_Middle_Check3).Equals(IO_VALUE.LOW) && LineRuning.Equals(false) && SecondMoveInfo.MoveType.Equals(LineMoveType.None))
{ {
if ((IOValue(IO_Type.DLine_Entry_Check2).Equals(IO_VALUE.HIGH) || IOValue(IO_Type.DLine_Exit_Check2).Equals(IO_VALUE.HIGH))) if ((IOValue(IO_Type.DLine_Entry_Check2).Equals(IO_VALUE.HIGH) || IOValue(IO_Type.DLine_Exit_Check2).Equals(IO_VALUE.HIGH)))
{ {
StartLineRun(IO_Type.DLine_Run2, IO_Type.DLine_Location_Check2); StartLineRun(IO_Type.DLine_Run2, IO_Type.DLine_Location_Check2);
...@@ -143,112 +222,12 @@ namespace OnlineStore.DeviceLibrary ...@@ -143,112 +222,12 @@ namespace OnlineStore.DeviceLibrary
{ {
IOMove(IO_Type.DLine_RunAlarm, IO_VALUE.LOW); IOMove(IO_Type.DLine_RunAlarm, IO_VALUE.LOW);
} }
else if(IOValue(IO_Type.DLine_RunAlarm).Equals(IO_VALUE.LOW)) else if (IOValue(IO_Type.DLine_RunAlarm).Equals(IO_VALUE.LOW))
{
IOMove(IO_Type.DLine_RunAlarm, IO_VALUE.HIGH);
}
}
/// <summary>
/// 出料装置原点返回
/// </summary>
public bool ReturnHome()
{
mainTimer.Stop();
MoveInfo.EndMove();
SecondMoveInfo.EndMove();
alarmType = LineAlarmType.None;
runStatus = LineRunStatus.HomeMoving;
LogInfo("开始原点返回: (重置灯状态,定位气缸下降 )开始");
MoveInfo.NewMove(LineMoveType.ReturnHome);
StartReset();
return true;
}
/// <summary>
/// 出料装置重置
/// </summary>
public override bool Reset()
{
WarnMsg = "";
MoveInfo.EndMove();
SecondMoveInfo.EndMove();
alarmType = LineAlarmType.None;
LogInfo("开始重置: (重置灯状态,定位气缸下降 )开始;");
runStatus = LineRunStatus.Reset;
MoveInfo.NewMove(LineMoveType.Reset);
StartReset();
return true;
}
private void StartReset()
{
MoveInfo.NextMoveStep(LineMoveStep.DL_R_CylinderDown);
CylinderMove(MoveInfo, IO_Type.SeparateDevice_Up, IO_Type.SeparateDevice_Down);
IOMove(IO_Type.DLine_RunStatus, IO_VALUE.HIGH);
IOMove(IO_Type.DLine_RunAlarm, IO_VALUE.LOW);
if (IsDebug)
{
mainTimer.Start();
}
isInPro = false;
}
/// <summary>
/// 重置处理
/// </summary>
protected override void ResetProcess()
{
ReturnHomeProcess();
}
/// <summary>
/// 原点返回处理
/// </summary>
protected override void ReturnHomeProcess()
{
if (MoveInfo.IsInWait)
{
CheckWait(MoveInfo);
}
else if (SecondMoveInfo.IsInWait)
{ {
CheckWait(SecondMoveInfo); IOMove(IO_Type.DLine_RunAlarm, IO_VALUE.HIGH);
}
if (!MoveInfo.IsInWait && !SecondMoveInfo.IsInWait)
{
switch (MoveInfo.MoveStep)
{
case LineMoveStep.DL_R_CylinderDown:
LogInfo(MoveInfo.MoveType + "完成!");
runStatus = LineRunStatus.Runing;
MoveInfo.EndMove();
SecondMoveInfo.EndMove();
break;
default: break;
}
} }
} }
/// <summary>
/// 停止运动
/// </summary>
public override void StopMove()
{
runStatus = LineRunStatus.Busy;
MoveInfo.EndMove();
SecondMoveInfo.EndMove();
StopLineRun();
LogInfo("停止运动:(定位气缸下降,皮带线停转 )开始 ");
CylinderMove(null, IO_Type.SeparateDevice_Up, IO_Type.SeparateDevice_Down);
IOMove(IO_Type.DLine_Run1, IO_VALUE.LOW);
IOMove(IO_Type.DLine_Run2, IO_VALUE.LOW);
IOMove(IO_Type.DLine_Run3, IO_VALUE.LOW);
IOMove(IO_Type.SeparateDevice_Run, IO_VALUE.LOW);
}
public override bool StartInStoreMove(InOutParam param) public override bool StartInStoreMove(InOutParam param)
{ {
return false; return false;
......
...@@ -35,7 +35,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -35,7 +35,7 @@ namespace OnlineStore.DeviceLibrary
/// 升降轴 /// 升降轴
/// </summary> /// </summary>
public AxisBean UpdownAxis = null; public AxisBean UpdownAxis = null;
protected abstract void ReturnHomeProcess();
protected virtual void StopMoveProcess() protected virtual void StopMoveProcess()
{ {
} }
...@@ -74,7 +74,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -74,7 +74,7 @@ namespace OnlineStore.DeviceLibrary
OutStoreProcess(); OutStoreProcess();
break; break;
case LineMoveType.ReturnHome: case LineMoveType.ReturnHome:
ReturnHomeProcess(); ResetProcess();
break; break;
case LineMoveType.Reset: case LineMoveType.Reset:
...@@ -95,7 +95,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -95,7 +95,7 @@ namespace OnlineStore.DeviceLibrary
} }
else if (MoveInfo.MoveType == LineMoveType.ReturnHome) else if (MoveInfo.MoveType == LineMoveType.ReturnHome)
{ {
ReturnHomeProcess(); ResetProcess();
} }
else if (MoveInfo.MoveType == LineMoveType.Reset) else if (MoveInfo.MoveType == LineMoveType.Reset)
{ {
...@@ -167,6 +167,24 @@ namespace OnlineStore.DeviceLibrary ...@@ -167,6 +167,24 @@ namespace OnlineStore.DeviceLibrary
LogUtil.error("IOTimeOutProcess出错:" + ex.ToString()); LogUtil.error("IOTimeOutProcess出错:" + ex.ToString());
} }
} }
protected bool CanStartRun()
{
string canResult = LineManager.Line.CanStart();
if (String.IsNullOrEmpty(canResult).Equals(false))
{
LogUtil.error(Name + "" + canResult);
WarnMsg = canResult;
return false;
}
return true;
}
protected void ResetClearData()
{
WarnMsg = "";
alarmType = LineAlarmType.None;
preTrayNum = 0;
currTrayNum = 0;
}
public void ChangeDebug(bool isDebug) public void ChangeDebug(bool isDebug)
{ {
if (baseConfig.DType.Equals(DeviceType.MoveEquip) || baseConfig.DType.Equals(DeviceType.ProvidingEquip)) if (baseConfig.DType.Equals(DeviceType.MoveEquip) || baseConfig.DType.Equals(DeviceType.ProvidingEquip))
......
...@@ -33,115 +33,45 @@ namespace OnlineStore.DeviceLibrary ...@@ -33,115 +33,45 @@ namespace OnlineStore.DeviceLibrary
MoveInfo = new LineMoveInfo(DeviceID, "入料-" + DeviceID + "-Move"); MoveInfo = new LineMoveInfo(DeviceID, "入料-" + DeviceID + "-Move");
SecondMoveInfo = new LineMoveInfo(DeviceID, "入料-" + DeviceID + "-SecondMove"); SecondMoveInfo = new LineMoveInfo(DeviceID, "入料-" + DeviceID + "-SecondMove");
} }
/// <summary>
/// 开始运行
/// </summary>
public override bool StartRun(bool isDebug = false )
{
mainTimer.Enabled = false;
MoveInfo.EndMove();
lineStatus = LineStatus.StoreOnline;
//TODO 调试时暂时注释
runStatus = LineRunStatus.HomeMoving;
bool result = ReturnHome();
if (result&&isDebug)
{
mainTimer.Enabled = true;
}
return result;
}
/// <summary> /// <summary>
/// 停止运行 /// 开始运行
/// </summary> /// </summary>
public override void StopRun() public override bool StartRun(bool isDebug = false)
{
if (mainTimer != null)
{
mainTimer.Enabled = false;
}
StopMove();
runStatus = LineRunStatus.Wait;
}
public override void TimerProcess()
{ {
if (IOValue(IO_Type.SL_SuddenStop_BTN).Equals(IO_VALUE.LOW)) if (CanStartRun().Equals(false))
{
WarnMsg = Name + "收到急停信号";
LogUtil.error(WarnMsg);
Alarm(LineAlarmType.SuddenStop);
return;
}
if (IOValue(IO_Type.SL_Reset_BTN).Equals(IO_VALUE.HIGH))
{
if (alarmType.Equals(LineAlarmType.None))
{
if (MoveInfo.MoveType.Equals(LineMoveType.None))
{
LogUtil.error(Name + "收到复位信号,当前无报警,不需要复位");
}
else
{
LogUtil.error(Name + "收到复位信号,当前无报警,正在" + MoveInfo.MoveType + "处理中,不需要复位");
}
}
else
{
LogUtil.info(Name + "收到复位信号,开始复位");
Reset();
}
return;
}
BusyMoveProcess();
//判断流水线打开了才可以运行
if (MoveInfo.MoveType.Equals(LineMoveType.None))
{ {
if (LineManager.Line.CanProcessLine()&&SecondMoveInfo.MoveType.Equals(LineMoveType.None)) return false;
{
StartCheckFixture();
}
if (MoveInfo.MoveType.Equals(LineMoveType.None)&&Config.IsCanOut.Equals(false))
{
StartInStoreP();
}
} }
IOTimeOutProcess();
}
/// <summary>
/// 入料装置原点返回
/// </summary>
public bool ReturnHome()
{
mainTimer.Stop();
StopMove();
if (RunAxis(true, BatchAxis) && RunAxis(true, UpdownAxis)) if (RunAxis(true, BatchAxis) && RunAxis(true, UpdownAxis))
{ {
mainTimer.Enabled = false;
MoveInfo.EndMove();
alarmType = LineAlarmType.None; SecondMoveInfo.EndMove();
runStatus = LineRunStatus.HomeMoving; lineStatus = LineStatus.StoreOnline;
runStatus = LineRunStatus.HomeMoving;
LogInfo("开始原点返回: "); LogInfo("开始原点返回: ");
MoveInfo.NewMove(LineMoveType.ReturnHome); MoveInfo.NewMove(LineMoveType.ReturnHome);
StartReset(); StartReset();
if (isDebug)
{
mainTimer.Start();
}
return true; return true;
}return false; }
return false;
} }
/// <summary> /// <summary>
/// 入料装置重置 /// 入料装置重置
/// </summary> /// </summary>
public override bool Reset() public override bool Reset()
{ {
WarnMsg = "";
StopMove(); StopMove();
if (RunAxis(true, BatchAxis) && RunAxis(true, UpdownAxis)) if (RunAxis(true, BatchAxis) && RunAxis(true, UpdownAxis))
{ {
...@@ -155,6 +85,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -155,6 +85,8 @@ namespace OnlineStore.DeviceLibrary
} }
private void StartReset() private void StartReset()
{ {
ResetClearData();
lineStatus = LineStatus.ResetMove;
LogInfo(MoveInfo.MoveType + ":FR_01_StopCylinderMove:放料阻挡气缸上升,顶升气缸下降"); LogInfo(MoveInfo.MoveType + ":FR_01_StopCylinderMove:放料阻挡气缸上升,顶升气缸下降");
IOMove(IO_Type.SL_HddLed, IO_VALUE.HIGH); IOMove(IO_Type.SL_HddLed, IO_VALUE.HIGH);
MoveInfo.NextMoveStep(LineMoveStep.FR_01_StopCylinderMove); MoveInfo.NextMoveStep(LineMoveStep.FR_01_StopCylinderMove);
...@@ -167,18 +99,12 @@ namespace OnlineStore.DeviceLibrary ...@@ -167,18 +99,12 @@ namespace OnlineStore.DeviceLibrary
} }
isInPro = false; isInPro = false;
} }
/// <summary> /// <summary>
/// 重置处理 /// 复位处理
/// </summary> /// </summary>
protected override void ResetProcess() protected override void ResetProcess()
{ {
ReturnHomeProcess();
}
/// <summary>
/// 原点返回处理
/// </summary>
protected override void ReturnHomeProcess()
{
if (MoveInfo.IsInWait) if (MoveInfo.IsInWait)
{ {
CheckWait(MoveInfo); CheckWait(MoveInfo);
...@@ -242,8 +168,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -242,8 +168,8 @@ namespace OnlineStore.DeviceLibrary
} }
} }
} }
public override void StopMove() internal override void StopMove()
{ {
MoveInfo.EndMove(); MoveInfo.EndMove();
SecondMoveInfo.EndMove(); SecondMoveInfo.EndMove();
...@@ -264,9 +190,68 @@ namespace OnlineStore.DeviceLibrary ...@@ -264,9 +190,68 @@ namespace OnlineStore.DeviceLibrary
IOMove(IO_Type.SL_Buffer_StopDown, IO_VALUE.LOW); IOMove(IO_Type.SL_Buffer_StopDown, IO_VALUE.LOW);
IOMove(IO_Type.SL_Out_StopDown, IO_VALUE.LOW); IOMove(IO_Type.SL_Out_StopDown, IO_VALUE.LOW);
IOMove(IO_Type.SL_OutLine_Run, IO_VALUE.LOW); IOMove(IO_Type.SL_OutLine_Run, IO_VALUE.LOW);
} }
/// <summary>
/// 停止运行
/// </summary>
public override void StopRun()
{
if (mainTimer != null)
{
mainTimer.Enabled = false;
}
StopMove();
runStatus = LineRunStatus.Wait;
}
public override void TimerProcess()
{
if (IOValue(IO_Type.SL_SuddenStop_BTN).Equals(IO_VALUE.LOW))
{
WarnMsg = Name + "收到急停信号";
LogUtil.error(WarnMsg);
Alarm(LineAlarmType.SuddenStop);
return;
}
if (IOValue(IO_Type.SL_Reset_BTN).Equals(IO_VALUE.HIGH))
{
if (alarmType.Equals(LineAlarmType.None))
{
if (MoveInfo.MoveType.Equals(LineMoveType.None))
{
LogUtil.error(Name + "收到复位信号,当前无报警,不需要复位");
}
else
{
LogUtil.error(Name + "收到复位信号,当前无报警,正在" + MoveInfo.MoveType + "处理中,不需要复位");
}
}
else
{
LogUtil.info(Name + "收到复位信号,开始复位");
Reset();
}
return;
}
BusyMoveProcess();
//判断流水线打开了才可以运行
if (MoveInfo.MoveType.Equals(LineMoveType.None))
{
if (LineManager.Line.CanProcessLine() && SecondMoveInfo.MoveType.Equals(LineMoveType.None))
{
StartCheckFixture();
}
if (MoveInfo.MoveType.Equals(LineMoveType.None) && Config.IsCanOut.Equals(false))
{
StartInStoreP();
}
}
IOTimeOutProcess();
}
/// <summary> /// <summary>
/// 下降所有阻挡气缸 /// 下降所有阻挡气缸
/// </summary> /// </summary>
......
...@@ -162,25 +162,35 @@ namespace OnlineStore.DeviceLibrary ...@@ -162,25 +162,35 @@ namespace OnlineStore.DeviceLibrary
#endregion #endregion
public override bool StartRun(bool isDebug=false) public string CanStart()
{ {
if (!canStart) if (!canStart)
{ {
SetWarnMsg("启动失败:设备未初始化完成"); return "启动失败:设备未初始化完成" ;
return false;
} }
if (MoveEquipMap == null) if (MoveEquipMap == null)
{ {
SetWarnMsg("启动失败:未加载到移栽信息"); return "启动失败:未加载到移栽信息";
return false;
} }
if (IOValue(IO_Type.SuddenStop_BTN).Equals(IO_VALUE.LOW)) if (IOValue(IO_Type.SuddenStop_BTN).Equals(IO_VALUE.LOW))
{ {
SetWarnMsg("启动失败:急停未开"); return "启动失败:急停未开";
} }
else if (IOValue(IO_Type.Airpressure_Check).Equals(IO_VALUE.LOW)) else if (IOValue(IO_Type.Airpressure_Check).Equals(IO_VALUE.LOW))
{ {
SetWarnMsg("启动失败:没有气压信号"); return "启动失败:没有气压信号";
}
return "";
}
public override bool StartRun(bool isDebug=false)
{
string result = CanStart();
if (String.IsNullOrEmpty(result).Equals(false))
{
SetWarnMsg(result);
return false;
} }
else else
{ {
...@@ -819,7 +829,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -819,7 +829,7 @@ namespace OnlineStore.DeviceLibrary
#endregion #endregion
public override void StopMove() internal override void StopMove()
{ {
foreach (MoveEquip equip in this.AllEquipMap.Values) foreach (MoveEquip equip in this.AllEquipMap.Values)
......
...@@ -48,146 +48,40 @@ namespace OnlineStore.DeviceLibrary ...@@ -48,146 +48,40 @@ namespace OnlineStore.DeviceLibrary
public override bool StartRun(bool isDebug=false) public override bool StartRun(bool isDebug=false)
{ {
preTrayNum = 0; if (CanStartRun().Equals(false))
currTrayNum = 0;
mainTimer.Enabled = false;
MoveInfo.EndMove();
SecondMoveInfo.EndMove();
lineStatus = LineStatus.StoreOnline;
runStatus = LineRunStatus.HomeMoving;
bool result = ReturnHome();
if (result&&isDebug)
{
mainTimer.Enabled = true;
}
return result;
}
public override void StopRun()
{
preTrayNum = 0;
currTrayNum = 0;
if (mainTimer != null)
{
mainTimer.Enabled = false;
}
StopMove();
//停止运行时,把所有IO 置零
IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.LOW);
IOMove(IO_Type.StopCylinder_Down2, IO_VALUE.LOW);
IOMove(IO_Type.TopCylinder_UP, IO_VALUE.LOW);
IOMove(IO_Type.TopCylinder_Down, IO_VALUE.LOW);
IOMove(IO_Type.BeforeAfterCylinder_Before, IO_VALUE.LOW);
IOMove(IO_Type.BeforeAfterCylinder_After, IO_VALUE.LOW);
IOMove(IO_Type.UpDownCylinder_Up, IO_VALUE.LOW);
IOMove(IO_Type.UpDownCylinder_Down, IO_VALUE.LOW);
IOMove(IO_Type.ClampCylinder_Slack, IO_VALUE.LOW);
IOMove(IO_Type.ClampCylinder_Tighten, IO_VALUE.LOW);
runStatus = LineRunStatus.Wait;
}
public override void TimerProcess()
{
BusyMoveProcess();
//判断流水线打开了才可以运行
if (SecondMoveInfo.MoveType.Equals(LineMoveType.None))
{
if (LineManager.Line.CanProcessLine())
{
// LogUtil.info("StartCheckFixture");
StartCheckFixture();
}
}
IOTimeOutProcess();
OutStoreListPro();
}
/// <summary>
/// 出库队列处理
/// </summary>
private void OutStoreListPro()
{
//料仓出库完成,进仓装置开始出库检测
if (IsDebug.Equals(false) && MoveInfo.MoveType.Equals(LineMoveType.None) && runStatus.Equals(LineRunStatus.Runing))
{ {
InOutParam waitOutParma = null; return false;
lock (waitOutListLock)
{
if (waitOutStoreList.Count > 0)
{
waitOutParma = waitOutStoreList[0];
waitOutStoreList.RemoveAt(0);
}
}
if (waitOutParma != null)
{
LogUtil.info(Name + "开始 执行排队中的出库【" + waitOutParma.ToStr() + "】");
//出库
bool result = StartOutStoreMove(waitOutParma);
if (!result)
{
LogUtil.info(Name + " 执行排队中的出库【" + waitOutParma.ToStr() + "】失败,重新加入等待队列");
AddWaitOutInfo(waitOutParma);
}
}
}
}
public void AddWaitOutInfo(InOutParam param)
{
lock (waitOutListLock)
{
//判断是否已经加入,不重复加
List<InOutParam> paramList = (from m in waitOutStoreList where m.PosId.Equals(param.PosId) select m).ToList<InOutParam>();
if (paramList.Count > 0)
{
LogUtil.error(Name + "出库【" + param.ToStr() + "】加入等待出库队列失败,此库位已存在列表中");
}
else
{
waitOutStoreList.Add(param);
}
} }
}
public bool ReturnHome()
{
mainTimer.Stop();
if (!RunAxis(true, UpdownAxis)) if (!RunAxis(true, UpdownAxis))
{ {
return false; return false;
} }
alarmType = LineAlarmType.None; mainTimer.Enabled = false;
runStatus = LineRunStatus.HomeMoving; MoveInfo.EndMove();
SecondMoveInfo.EndMove();
runStatus = LineRunStatus.HomeMoving;
LogInfo("开始原点返回: (上下气缸回原点,阻挡1气缸上升 )开始"); LogInfo("开始原点返回: (上下气缸回原点,阻挡1气缸上升 )开始");
MoveInfo.NewMove(LineMoveType.ReturnHome); MoveInfo.NewMove(LineMoveType.ReturnHome);
StartReset();
if ( isDebug)
{
mainTimer.Enabled = true;
}
return true; return true;
} }
public override bool Reset() public override bool Reset()
{ {
WarnMsg = ""; StopMove();
//如果正在出库中,需要减去托盘号
if (MoveInfo.MoveType.Equals(LineMoveType.OutStore))
{
LogInfo("重置之前发现在出库执行中,减去托盘数;");
//减去需要的盘数
TrayManager.DelNeedEmptyTrayNum();
MoveInfo.EndMove();
}
if (!RunAxis(true, UpdownAxis)) if (!RunAxis(true, UpdownAxis))
{ {
return false; return false;
} }
alarmType = LineAlarmType.None;
//重置时清理盘号,从头开始判断
preTrayNum = 0;
currTrayNum = 0;
LogInfo("开始重置:清空托盘号,(上下气缸回原点,阻挡1气缸上升 )开始;"); LogInfo("开始重置:清空托盘号,(上下气缸回原点,阻挡1气缸上升 )开始;");
runStatus = LineRunStatus.Reset; runStatus = LineRunStatus.Reset;
SecondMoveInfo.EndMove(); SecondMoveInfo.EndMove();
MoveInfo.NewMove(LineMoveType.Reset); MoveInfo.NewMove(LineMoveType.Reset);
...@@ -197,6 +91,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -197,6 +91,8 @@ namespace OnlineStore.DeviceLibrary
private void StartReset() private void StartReset()
{ {
ResetClearData();
lineStatus = LineStatus.ResetMove;
//移载装置原点状态:顶升气缸下降端,前后气缸后退端,上下气缸上升端,夹料气缸放松端,阻挡气缸输入=0 //移载装置原点状态:顶升气缸下降端,前后气缸后退端,上下气缸上升端,夹料气缸放松端,阻挡气缸输入=0
UpdownHomeMove(); UpdownHomeMove();
// CylinderMove(MoveInfo, IO_Type.UpDownCylinder_Down, IO_Type.UpDownCylinder_Up); // CylinderMove(MoveInfo, IO_Type.UpDownCylinder_Down, IO_Type.UpDownCylinder_Up);
...@@ -265,15 +161,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -265,15 +161,11 @@ namespace OnlineStore.DeviceLibrary
} }
} }
} }
protected override void ReturnHomeProcess()
{
ResetProcess();
}
/// <summary> /// <summary>
/// 停止运动 /// 停止运动
/// </summary> /// </summary>
public override void StopMove() internal override void StopMove()
{ {
//如果正在出库中,需要减去托盘号 //如果正在出库中,需要减去托盘号
if (MoveInfo.MoveType.Equals(LineMoveType.OutStore)) if (MoveInfo.MoveType.Equals(LineMoveType.OutStore))
...@@ -287,9 +179,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -287,9 +179,7 @@ namespace OnlineStore.DeviceLibrary
SecondMoveInfo.EndMove(); SecondMoveInfo.EndMove();
LogInfo("停止运动:(上下气缸上升端,阻挡气缸输入=0 )开始 "); LogInfo("停止运动:(上下气缸上升端,阻挡气缸输入=0 )开始 ");
//MoveInfo.NewMove(LineMoveType.StopMove);
//MoveInfo.NextMoveStep(LineMoveStep.MH_UpDownCylinder_Up);
UpdownUpMove(); UpdownUpMove();
CylinderMove(MoveInfo, IO_Type.TopCylinder_UP, IO_Type.TopCylinder_Down); CylinderMove(MoveInfo, IO_Type.TopCylinder_UP, IO_Type.TopCylinder_Down);
IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.LOW); IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.LOW);
...@@ -297,8 +187,94 @@ namespace OnlineStore.DeviceLibrary ...@@ -297,8 +187,94 @@ namespace OnlineStore.DeviceLibrary
} }
public override void StopRun()
{
if (mainTimer != null)
{
mainTimer.Enabled = false;
}
StopMove();
//停止运行时,把所有IO 置零
IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.LOW);
IOMove(IO_Type.StopCylinder_Down2, IO_VALUE.LOW);
IOMove(IO_Type.TopCylinder_UP, IO_VALUE.LOW);
IOMove(IO_Type.TopCylinder_Down, IO_VALUE.LOW);
IOMove(IO_Type.BeforeAfterCylinder_Before, IO_VALUE.LOW);
IOMove(IO_Type.BeforeAfterCylinder_After, IO_VALUE.LOW);
IOMove(IO_Type.UpDownCylinder_Up, IO_VALUE.LOW);
IOMove(IO_Type.UpDownCylinder_Down, IO_VALUE.LOW);
IOMove(IO_Type.ClampCylinder_Slack, IO_VALUE.LOW);
IOMove(IO_Type.ClampCylinder_Tighten, IO_VALUE.LOW);
runStatus = LineRunStatus.Wait;
}
public override void TimerProcess()
{
BusyMoveProcess();
//判断流水线打开了才可以运行
if (SecondMoveInfo.MoveType.Equals(LineMoveType.None))
{
if (LineManager.Line.CanProcessLine())
{
// LogUtil.info("StartCheckFixture");
StartCheckFixture();
}
}
IOTimeOutProcess();
OutStoreListPro();
}
/// <summary>
/// 出库队列处理
/// </summary>
private void OutStoreListPro()
{
//料仓出库完成,进仓装置开始出库检测
if (IsDebug.Equals(false) && MoveInfo.MoveType.Equals(LineMoveType.None) && runStatus.Equals(LineRunStatus.Runing))
{
InOutParam waitOutParma = null;
lock (waitOutListLock)
{
if (waitOutStoreList.Count > 0)
{
waitOutParma = waitOutStoreList[0];
waitOutStoreList.RemoveAt(0);
}
}
if (waitOutParma != null)
{
LogUtil.info(Name + "开始 执行排队中的出库【" + waitOutParma.ToStr() + "】");
//出库
bool result = StartOutStoreMove(waitOutParma);
if (!result)
{
LogUtil.info(Name + " 执行排队中的出库【" + waitOutParma.ToStr() + "】失败,重新加入等待队列");
AddWaitOutInfo(waitOutParma);
}
}
}
}
public void AddWaitOutInfo(InOutParam param)
{
lock (waitOutListLock)
{
//判断是否已经加入,不重复加
List<InOutParam> paramList = (from m in waitOutStoreList where m.PosId.Equals(param.PosId) select m).ToList<InOutParam>();
if (paramList.Count > 0)
{
LogUtil.error(Name + "出库【" + param.ToStr() + "】加入等待出库队列失败,此库位已存在列表中");
}
else
{
waitOutStoreList.Add(param);
}
}
}
#region 上下气缸伺服运动 #region 上下气缸伺服运动
private void UpdownUpMove() private void UpdownUpMove()
{ {
if (UseAxis) if (UseAxis)
......
...@@ -47,102 +47,48 @@ namespace OnlineStore.DeviceLibrary ...@@ -47,102 +47,48 @@ namespace OnlineStore.DeviceLibrary
public override bool StartRun(bool isDebug=false) public override bool StartRun(bool isDebug=false)
{ {
preTrayNum = 0; if (CanStartRun().Equals(false))
currTrayNum = 0;
mainTimer.Enabled = false;
MoveInfo.EndMove();
SecondMoveInfo.EndMove();
lineStatus = LineStatus.StoreOnline;
//TODO 调试时暂时注释
runStatus = LineRunStatus.HomeMoving;
bool result = ReturnHome();
if (result&&isDebug)
{
mainTimer.Enabled = true;
}
return result;
}
public override void StopRun()
{
if (mainTimer != null)
{
mainTimer.Enabled = false;
}
StopMove();
CloseAxis(UpdownAxis);
//停止运行时,把所有IO 置零
IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.LOW);
IOMove(IO_Type.StopCylinder_Down2, IO_VALUE.LOW);
IOMove(IO_Type.TopCylinder_UP, IO_VALUE.LOW);
IOMove(IO_Type.TopCylinder_Down, IO_VALUE.LOW);
IOMove(IO_Type.BeforeAfterCylinder_Before, IO_VALUE.LOW);
IOMove(IO_Type.BeforeAfterCylinder_After, IO_VALUE.LOW);
IOMove(IO_Type.UpDownCylinder_Up, IO_VALUE.LOW);
IOMove(IO_Type.UpDownCylinder_Down, IO_VALUE.LOW);
IOMove(IO_Type.ClampCylinder_Slack, IO_VALUE.LOW);
IOMove(IO_Type.ClampCylinder_Tighten, IO_VALUE.LOW);
runStatus = LineRunStatus.Wait;
}
public override void TimerProcess()
{
BusyMoveProcess();
//判断流水线打开了才可以运行
if (SecondMoveInfo.MoveType.Equals(LineMoveType.None))
{ {
LineBean lineBean = LineManager.Line; return false;
if (LineManager.Line.CanProcessLine())
{
StartCheckFixture();
}
} }
IOTimeOutProcess();
}
public bool ReturnHome()
{
if (!RunAxis(true, UpdownAxis)) if (!RunAxis(true, UpdownAxis))
{ {
return false; return false;
} }
WarnMsg = "";
mainTimer.Stop(); mainTimer.Enabled = false;
alarmType = LineAlarmType.None;
runStatus = LineRunStatus.HomeMoving;
LogInfo("开始原点返回: (上下气上升,阻挡气缸上升 )开始");
SecondMoveInfo.EndMove();
MoveInfo.EndMove(); MoveInfo.EndMove();
MoveInfo.NewMove(LineMoveType.ReturnHome); SecondMoveInfo.EndMove();
runStatus = LineRunStatus.HomeMoving;
LogInfo("开始原点返回: (上下气上升,阻挡气缸上升 )开始");
MoveInfo.NewMove(LineMoveType.ReturnHome);
StartReset(); StartReset();
return true; if ( isDebug)
} {
mainTimer.Enabled = true;
}
return true ;
}
public override bool Reset() public override bool Reset()
{ {
StopMove();
if (!RunAxis(true, UpdownAxis)) if (!RunAxis(true, UpdownAxis))
{ {
return false; return false;
} }
WarnMsg = ""; LogInfo("开始重置:清理盘号,(上下气上升,阻挡气缸上升 )开始 ");
alarmType = LineAlarmType.None;
preTrayNum = 0;
currTrayNum = 0;
LogInfo("开始重置:清理盘号,(上下气上升,阻挡气缸上升 )开始 ");
runStatus = LineRunStatus.Reset; runStatus = LineRunStatus.Reset;
MoveInfo.EndMove();
SecondMoveInfo.EndMove();
MoveInfo.NewMove(LineMoveType.Reset); MoveInfo.NewMove(LineMoveType.Reset);
StartReset(); StartReset();
return true; return true;
} }
private void StartReset() private void StartReset()
{ {
ResetClearData();
lineStatus = LineStatus.ResetMove;
MoveInfo.NextMoveStep(LineMoveStep.MH_UpDownCylinder_Up); MoveInfo.NextMoveStep(LineMoveStep.MH_UpDownCylinder_Up);
// CylinderMove(MoveInfo, IO_Type.UpDownCylinder_Down, IO_Type.UpDownCylinder_Up); // CylinderMove(MoveInfo, IO_Type.UpDownCylinder_Down, IO_Type.UpDownCylinder_Up);
UpdownHomeMove(); UpdownHomeMove();
...@@ -206,30 +152,62 @@ namespace OnlineStore.DeviceLibrary ...@@ -206,30 +152,62 @@ namespace OnlineStore.DeviceLibrary
default: break; default: break;
} }
} }
} }
protected override void ReturnHomeProcess()
{ internal override void StopMove()
ResetProcess();
}
public override void StopMove()
{ {
MoveInfo.EndMove(); MoveInfo.EndMove();
SecondMoveInfo.EndMove(); SecondMoveInfo.EndMove();
runStatus = LineRunStatus.Busy; runStatus = LineRunStatus.Busy;
LogInfo("停止运动:(上下气缸上升 ,阻挡气缸输入=0,顶升气缸下降 ) "); LogInfo("停止运动:(上下气缸上升 ,阻挡气缸输入=0,顶升气缸下降 ) ");
//MoveInfo.NewMove(LineMoveType.StopMove);
//MoveInfo.NextMoveStep(LineMoveStep.MH_UpDownCylinder_Up);
// CylinderMove(MoveInfo, IO_Type.UpDownCylinder_Down, IO_Type.UpDownCylinder_Up);
if (UseAxis) if (UseAxis)
{ {
UpdownAxis.SuddenStop(); UpdownAxis.SuddenStop();
} }
CylinderMove(MoveInfo, IO_Type.TopCylinder_UP, IO_Type.TopCylinder_Down); CylinderMove(MoveInfo, IO_Type.TopCylinder_UP, IO_Type.TopCylinder_Down);
IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.LOW); IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.LOW);
IOMove(IO_Type.StopCylinder_Down2, IO_VALUE.LOW); IOMove(IO_Type.StopCylinder_Down2, IO_VALUE.LOW);
} }
public override void StopRun()
{
if (mainTimer != null)
{
mainTimer.Enabled = false;
}
StopMove();
CloseAxis(UpdownAxis);
//停止运行时,把所有IO 置零
IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.LOW);
IOMove(IO_Type.StopCylinder_Down2, IO_VALUE.LOW);
IOMove(IO_Type.TopCylinder_UP, IO_VALUE.LOW);
IOMove(IO_Type.TopCylinder_Down, IO_VALUE.LOW);
IOMove(IO_Type.BeforeAfterCylinder_Before, IO_VALUE.LOW);
IOMove(IO_Type.BeforeAfterCylinder_After, IO_VALUE.LOW);
IOMove(IO_Type.UpDownCylinder_Up, IO_VALUE.LOW);
IOMove(IO_Type.UpDownCylinder_Down, IO_VALUE.LOW);
IOMove(IO_Type.ClampCylinder_Slack, IO_VALUE.LOW);
IOMove(IO_Type.ClampCylinder_Tighten, IO_VALUE.LOW);
runStatus = LineRunStatus.Wait;
}
public override void TimerProcess()
{
BusyMoveProcess();
//判断流水线打开了才可以运行
if (SecondMoveInfo.MoveType.Equals(LineMoveType.None))
{
LineBean lineBean = LineManager.Line;
if (LineManager.Line.CanProcessLine())
{
StartCheckFixture();
}
}
IOTimeOutProcess();
}
public override bool StartInStoreMove(InOutParam param) public override bool StartInStoreMove(InOutParam param)
{ {
return false; return false;
......
...@@ -131,7 +131,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -131,7 +131,7 @@ namespace OnlineStore.DeviceLibrary
//DI主动上传 //DI主动上传
aioBox.AutoReadInput(true); aioBox.AutoReadInput(true);
aioBox.AutoReadOutput(true, DOMS); aioBox.AutoReadOutput(true, DOMS);
aioBox.LogOut = true;
aioBox.DI_Changed_Event += AioBox_DI_Changed_Event; ; aioBox.DI_Changed_Event += AioBox_DI_Changed_Event; ;
aioBox.DO_Changed_Event += AioBox_DO_Changed_Event; aioBox.DO_Changed_Event += AioBox_DO_Changed_Event;
......
...@@ -197,16 +197,13 @@ namespace OnlineStore.DeviceLibrary ...@@ -197,16 +197,13 @@ namespace OnlineStore.DeviceLibrary
/// <summary> /// <summary>
/// 停止所有运动 /// 停止所有运动
/// </summary> /// </summary>
public abstract void StopMove( ); internal abstract void StopMove( );
/// <summary> /// <summary>
/// 重置处理 /// 重置处理
/// </summary> /// </summary>
protected abstract void ResetProcess(); protected abstract void ResetProcess();
///// <summary>
///// 原点返回处理
///// </summary>
//protected abstract void ReturnHomeProcess();
/// <summary> /// <summary>
/// 初始化 /// 初始化
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!