Commit 09dde46d LN

1

1 个父辈 73b57b24
......@@ -9,12 +9,6 @@
AIOBOX操作类
</summary>
</member>
<member name="F:Asa.IOModule.AIOBOX._unrevdRemote">
<summary>
暂停次数
WriteDO 命令非常多时,暂停一次发送 ReadDI 或 ReadDO
</summary>
</member>
<member name="F:Asa.IOModule.AIOBOX.SEND_SLEEP">
<summary>
每条命令发送的间隔
......@@ -22,13 +16,12 @@
小于30时,会出现接收数据连包的情况
</summary>
</member>
<member name="F:Asa.IOModule.AIOBOX.LISTEN_SLEEP">
<member name="F:Asa.IOModule.AIOBOX.PORT">
<summary>
监听网络接收数据的间隔
必须小于SEND_SLEEP
ModBus端口
</summary>
</member>
<member name="T:Asa.IOModule.AIOBOX.DI_Changed">
<member name="T:Asa.IOModule.AIOBOX.DIO_Changed">
<summary>
自动读取DI委托
</summary>
......@@ -40,19 +33,12 @@
自动读取DI事件触发
</summary>
</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">
<summary>
自动读取DO事件触发
</summary>
</member>
<member name="T:Asa.IOModule.AIOBOX.AI_Changed">
<member name="T:Asa.IOModule.AIOBOX.AIO_Changed">
<summary>
自动读取AI委托
</summary>
......@@ -64,13 +50,6 @@
自动读取AI事件触发
</summary>
</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">
<summary>
自动读取AO事件触发
......@@ -86,11 +65,6 @@
IP地址
</summary>
</member>
<member name="P:Asa.IOModule.AIOBOX.Port">
<summary>
ModBus端口
</summary>
</member>
<member name="P:Asa.IOModule.AIOBOX.IsConn">
<summary>
是否连接
......@@ -101,35 +75,11 @@
错误信息
</summary>
</member>
<member name="P:Asa.IOModule.AIOBOX.LogOutDir">
<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">
<member name="M:Asa.IOModule.AIOBOX.LogPath(System.String)">
<summary>
自动读取DO间隔
日志路径,连接前设置路径会自动保存日志
</summary>
<param name="path">文件夹路径</param>
</member>
<member name="M:Asa.IOModule.AIOBOX.SetInput(Asa.IOModule.Box_Type,System.Int32)">
<summary>
......@@ -197,6 +147,12 @@
<param name="sta"></param>
<returns></returns>
</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)">
<summary>
读取单个DI输入状态(ON/OFF)
......@@ -292,20 +248,17 @@
读取所有DO状态,功能码1
</summary>
<param name="buff"></param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadDI(System.Byte[])">
<summary>
读取所有DI状态,功能码2
</summary>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadAI(System.Byte[])">
<summary>
读取所有AI的值,功能码4
</summary>
<param name="buff"></param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.Command">
<summary>
......@@ -373,5 +326,46 @@
闭合,打开,高电平
</summary>
</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>
</doc>
......@@ -175,8 +175,7 @@ namespace OnlineStore.AssemblyLine
}
}
}
private void FrmStoreIOStatus_Load(object sender, EventArgs e)
{
chbDebug.Checked = equipBean.IsDebug;
......@@ -200,26 +199,20 @@ namespace OnlineStore.AssemblyLine
ConfigIO io = (ConfigIO)cmbWriteIO.Items[e.Index];
e.Graphics.DrawString(io.DisplayStr, e.Font, new SolidBrush(e.ForeColor), e.Bounds.X, e.Bounds.Y + 3);
}
}
}
private void btnReadIO_Click(object sender, EventArgs e)
{
ReadIOList();
}
internal void FormStatus(bool isStart)
internal override void FormStatus(bool isStart)
{
btnStart.Enabled = !isStart;
btnStop.Enabled = true;
btnReset.Enabled = isStart;
//btnInStore.Enabled = isStart;
btnOutStore.Enabled = isStart;
}
}
private void FrmIOStatus_Shown(object sender, EventArgs e)
{
timer1.Start();
......@@ -227,16 +220,17 @@ namespace OnlineStore.AssemblyLine
private void btnStart_Click(object sender, EventArgs e)
{
if (equipBean.runStatus.Equals(LineRunStatus.Wait))
{
bool result = equipBean.StartRun(true);
if (result)
{
FormStatus(true);
}
}
StartDebug();
}
private void btnStop_Click(object sender, EventArgs e)
{
StopRun();
}
private void btnReset_Click(object sender, EventArgs e)
{
Reset();
}
private void chbDebug_CheckedChanged(object sender, EventArgs e)
{
if (!IsLoad)
......@@ -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)
{
......
......@@ -85,5 +85,52 @@ namespace OnlineStore.AssemblyLine
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
e.Graphics.DrawString(io.DisplayStr, e.Font, new SolidBrush(e.ForeColor), e.Bounds.X, e.Bounds.Y + 3);
}
}
private void btnReadIO_Click(object sender, EventArgs e)
{
ReadIOList();
}
internal void FormStatus(bool isStart)
}
internal override void FormStatus(bool isStart)
{
btnStart.Enabled = !isStart;
btnStop.Enabled = true;
......@@ -277,14 +273,16 @@ namespace OnlineStore.AssemblyLine
private void btnStart_Click(object sender, EventArgs e)
{
if (equipBean.runStatus.Equals(LineRunStatus.Wait))
{
bool result = equipBean.StartRun(true);
if (result)
{
FormStatus(true);
}
}
StartDebug();
}
private void btnStop_Click(object sender, EventArgs e)
{
StopRun();
}
private void btnReset_Click(object sender, EventArgs e)
{
Reset();
}
private void chbDebug_CheckedChanged(object sender, EventArgs e)
......@@ -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)
{
BtnMove(btnLocationCylinder, "SL定位气缸上升", "SL定位气缸下降", IO_Type.SL_LocationCylinder_Down, IO_Type.SL_LocationCylinder_Up);
......
......@@ -223,6 +223,7 @@
this.tableLayoutPanel2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tableLayoutPanel2.AutoScroll = true;
this.tableLayoutPanel2.ColumnCount = 1;
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel2.Location = new System.Drawing.Point(5, 14);
......@@ -250,6 +251,7 @@
this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tableLayoutPanel1.AutoScroll = true;
this.tableLayoutPanel1.ColumnCount = 1;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.Location = new System.Drawing.Point(6, 14);
......
......@@ -236,7 +236,7 @@ namespace OnlineStore.AssemblyLine
{
ReadIOList();
}
internal void FormStatus(bool isStart)
internal override void FormStatus(bool isStart)
{
btnStart.Enabled = !isStart;
btnStop.Enabled = true;
......@@ -253,14 +253,15 @@ namespace OnlineStore.AssemblyLine
private void btnStart_Click(object sender, EventArgs e)
{
if (equipBean.runStatus.Equals(LineRunStatus.Wait))
{
bool result = equipBean.StartRun(true);
if (result)
{
FormStatus(true);
}
}
StartDebug();
}
private void btnStop_Click(object sender, EventArgs e)
{
StopRun();
}
private void btnReset_Click(object sender, EventArgs e)
{
Reset();
}
private void chbDebug_CheckedChanged(object sender, EventArgs e)
......@@ -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)
{
BtnMove(btnStop1Up, "阻挡1下降", "阻挡1上升", IO_Type.StopCylinder_Down1);
......
......@@ -173,9 +173,7 @@ namespace OnlineStore.AssemblyLine
selectControl = newControl;
}
}
}
}
private void FrmStoreIOStatus_Load(object sender, EventArgs e)
{
if (equipBean.UseAxis)
......@@ -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);
}
}
private void btnReadIO_Click(object sender, EventArgs e)
{
ReadIOList();
}
}
internal void FormStatus(bool isStart)
internal override void FormStatus(bool isStart)
{
btnStart.Enabled = !isStart;
btnStop.Enabled = true;
......@@ -242,16 +236,16 @@ namespace OnlineStore.AssemblyLine
private void btnStart_Click(object sender, EventArgs e)
{
if (equipBean.runStatus.Equals(LineRunStatus.Wait))
{
bool result = equipBean.StartRun(true);
if (result)
{
FormStatus(true);
}
}
StartDebug();
}
private void btnStop_Click(object sender, EventArgs e)
{
StopRun();
}
private void btnReset_Click(object sender, EventArgs e)
{
Reset();
}
private void chbDebug_CheckedChanged(object sender, EventArgs e)
{
if (!IsLoad)
......@@ -301,29 +295,8 @@ namespace OnlineStore.AssemblyLine
{
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)
{
BtnMove(btnStop1Up, "阻挡1下降", "阻挡1上升", IO_Type.StopCylinder_Down1);
......
......@@ -36,24 +36,102 @@ namespace OnlineStore.DeviceLibrary
/// 开始运行
/// </summary>
public override bool StartRun(bool isDebug = false)
{
preTrayNum = 0;
currTrayNum = 0;
mainTimer.Enabled = false;
{
if (CanStartRun().Equals(false))
{
return false ;
}
mainTimer.Stop();
MoveInfo.EndMove();
SecondMoveInfo.EndMove();
lineStatus = LineStatus.StoreOnline;
//TODO 调试时暂时注释
lineStatus = LineStatus.StoreOnline;
runStatus = LineRunStatus.HomeMoving;
bool result = ReturnHome();
if (result && isDebug)
LogInfo("开始原点返回: (重置灯状态,定位气缸下降 )开始");
MoveInfo.NewMove(LineMoveType.ReturnHome);
StartReset();
if ( isDebug)
{
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>
......@@ -110,25 +188,26 @@ namespace OnlineStore.DeviceLibrary
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入口或者中间有料盘,出口无料盘,转动皮带三
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);
}
}
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)))
{
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)))
{
StartLineRun(IO_Type.DLine_Run2, IO_Type.DLine_Location_Check2);
......@@ -143,112 +222,12 @@ namespace OnlineStore.DeviceLibrary
{
IOMove(IO_Type.DLine_RunAlarm, 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)
else if (IOValue(IO_Type.DLine_RunAlarm).Equals(IO_VALUE.LOW))
{
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;
}
IOMove(IO_Type.DLine_RunAlarm, IO_VALUE.HIGH);
}
}
/// <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)
{
return false;
......
......@@ -35,7 +35,7 @@ namespace OnlineStore.DeviceLibrary
/// 升降轴
/// </summary>
public AxisBean UpdownAxis = null;
protected abstract void ReturnHomeProcess();
protected virtual void StopMoveProcess()
{
}
......@@ -74,7 +74,7 @@ namespace OnlineStore.DeviceLibrary
OutStoreProcess();
break;
case LineMoveType.ReturnHome:
ReturnHomeProcess();
ResetProcess();
break;
case LineMoveType.Reset:
......@@ -95,7 +95,7 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.MoveType == LineMoveType.ReturnHome)
{
ReturnHomeProcess();
ResetProcess();
}
else if (MoveInfo.MoveType == LineMoveType.Reset)
{
......@@ -167,6 +167,24 @@ namespace OnlineStore.DeviceLibrary
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)
{
if (baseConfig.DType.Equals(DeviceType.MoveEquip) || baseConfig.DType.Equals(DeviceType.ProvidingEquip))
......
......@@ -33,115 +33,45 @@ namespace OnlineStore.DeviceLibrary
MoveInfo = new LineMoveInfo(DeviceID, "入料-" + DeviceID + "-Move");
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>
public override void StopRun()
{
if (mainTimer != null)
{
mainTimer.Enabled = false;
}
StopMove();
runStatus = LineRunStatus.Wait;
}
public override void TimerProcess()
public override bool StartRun(bool isDebug = false)
{
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 (CanStartRun().Equals(false))
{
if (LineManager.Line.CanProcessLine()&&SecondMoveInfo.MoveType.Equals(LineMoveType.None))
{
StartCheckFixture();
}
if (MoveInfo.MoveType.Equals(LineMoveType.None)&&Config.IsCanOut.Equals(false))
{
StartInStoreP();
}
return false;
}
IOTimeOutProcess();
}
/// <summary>
/// 入料装置原点返回
/// </summary>
public bool ReturnHome()
{
mainTimer.Stop();
StopMove();
if (RunAxis(true, BatchAxis) && RunAxis(true, UpdownAxis))
{
alarmType = LineAlarmType.None;
runStatus = LineRunStatus.HomeMoving;
mainTimer.Enabled = false;
MoveInfo.EndMove();
SecondMoveInfo.EndMove();
lineStatus = LineStatus.StoreOnline;
runStatus = LineRunStatus.HomeMoving;
LogInfo("开始原点返回: ");
MoveInfo.NewMove(LineMoveType.ReturnHome);
StartReset();
if (isDebug)
{
mainTimer.Start();
}
return true;
}return false;
}
return false;
}
/// <summary>
/// 入料装置重置
/// </summary>
public override bool Reset()
{
WarnMsg = "";
StopMove();
if (RunAxis(true, BatchAxis) && RunAxis(true, UpdownAxis))
{
......@@ -155,6 +85,8 @@ namespace OnlineStore.DeviceLibrary
}
private void StartReset()
{
ResetClearData();
lineStatus = LineStatus.ResetMove;
LogInfo(MoveInfo.MoveType + ":FR_01_StopCylinderMove:放料阻挡气缸上升,顶升气缸下降");
IOMove(IO_Type.SL_HddLed, IO_VALUE.HIGH);
MoveInfo.NextMoveStep(LineMoveStep.FR_01_StopCylinderMove);
......@@ -167,18 +99,12 @@ namespace OnlineStore.DeviceLibrary
}
isInPro = false;
}
/// <summary>
/// 重置处理
/// 复位处理
/// </summary>
protected override void ResetProcess()
{
ReturnHomeProcess();
}
/// <summary>
/// 原点返回处理
/// </summary>
protected override void ReturnHomeProcess()
{
if (MoveInfo.IsInWait)
{
CheckWait(MoveInfo);
......@@ -242,8 +168,8 @@ namespace OnlineStore.DeviceLibrary
}
}
}
public override void StopMove()
internal override void StopMove()
{
MoveInfo.EndMove();
SecondMoveInfo.EndMove();
......@@ -264,9 +190,68 @@ namespace OnlineStore.DeviceLibrary
IOMove(IO_Type.SL_Buffer_StopDown, IO_VALUE.LOW);
IOMove(IO_Type.SL_Out_StopDown, 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>
......
......@@ -162,25 +162,35 @@ namespace OnlineStore.DeviceLibrary
#endregion
public override bool StartRun(bool isDebug=false)
{
public string CanStart()
{
if (!canStart)
{
SetWarnMsg("启动失败:设备未初始化完成");
return false;
return "启动失败:设备未初始化完成" ;
}
if (MoveEquipMap == null)
{
SetWarnMsg("启动失败:未加载到移栽信息");
return false;
return "启动失败:未加载到移栽信息";
}
if (IOValue(IO_Type.SuddenStop_BTN).Equals(IO_VALUE.LOW))
{
SetWarnMsg("启动失败:急停未开");
return "启动失败:急停未开";
}
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
{
......@@ -819,7 +829,7 @@ namespace OnlineStore.DeviceLibrary
#endregion
public override void StopMove()
internal override void StopMove()
{
foreach (MoveEquip equip in this.AllEquipMap.Values)
......
......@@ -48,146 +48,40 @@ namespace OnlineStore.DeviceLibrary
public override bool StartRun(bool isDebug=false)
{
preTrayNum = 0;
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))
if (CanStartRun().Equals(false))
{
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);
}
return false;
}
}
public bool ReturnHome()
{
mainTimer.Stop();
if (!RunAxis(true, UpdownAxis))
{
return false;
}
alarmType = LineAlarmType.None;
runStatus = LineRunStatus.HomeMoving;
mainTimer.Enabled = false;
MoveInfo.EndMove();
SecondMoveInfo.EndMove();
runStatus = LineRunStatus.HomeMoving;
LogInfo("开始原点返回: (上下气缸回原点,阻挡1气缸上升 )开始");
MoveInfo.NewMove(LineMoveType.ReturnHome);
StartReset();
if ( isDebug)
{
mainTimer.Enabled = true;
}
return true;
}
public override bool Reset()
{
WarnMsg = "";
//如果正在出库中,需要减去托盘号
if (MoveInfo.MoveType.Equals(LineMoveType.OutStore))
{
LogInfo("重置之前发现在出库执行中,减去托盘数;");
//减去需要的盘数
TrayManager.DelNeedEmptyTrayNum();
MoveInfo.EndMove();
}
{
StopMove();
if (!RunAxis(true, UpdownAxis))
{
return false;
}
alarmType = LineAlarmType.None;
//重置时清理盘号,从头开始判断
preTrayNum = 0;
currTrayNum = 0;
}
LogInfo("开始重置:清空托盘号,(上下气缸回原点,阻挡1气缸上升 )开始;");
runStatus = LineRunStatus.Reset;
SecondMoveInfo.EndMove();
MoveInfo.NewMove(LineMoveType.Reset);
......@@ -197,6 +91,8 @@ namespace OnlineStore.DeviceLibrary
private void StartReset()
{
ResetClearData();
lineStatus = LineStatus.ResetMove;
//移载装置原点状态:顶升气缸下降端,前后气缸后退端,上下气缸上升端,夹料气缸放松端,阻挡气缸输入=0
UpdownHomeMove();
// CylinderMove(MoveInfo, IO_Type.UpDownCylinder_Down, IO_Type.UpDownCylinder_Up);
......@@ -265,15 +161,11 @@ namespace OnlineStore.DeviceLibrary
}
}
}
protected override void ReturnHomeProcess()
{
ResetProcess();
}
/// <summary>
/// 停止运动
/// </summary>
public override void StopMove()
internal override void StopMove()
{
//如果正在出库中,需要减去托盘号
if (MoveInfo.MoveType.Equals(LineMoveType.OutStore))
......@@ -287,9 +179,7 @@ namespace OnlineStore.DeviceLibrary
SecondMoveInfo.EndMove();
LogInfo("停止运动:(上下气缸上升端,阻挡气缸输入=0 )开始 ");
//MoveInfo.NewMove(LineMoveType.StopMove);
//MoveInfo.NextMoveStep(LineMoveStep.MH_UpDownCylinder_Up);
UpdownUpMove();
CylinderMove(MoveInfo, IO_Type.TopCylinder_UP, IO_Type.TopCylinder_Down);
IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.LOW);
......@@ -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 上下气缸伺服运动
private void UpdownUpMove()
{
if (UseAxis)
......
......@@ -47,102 +47,48 @@ namespace OnlineStore.DeviceLibrary
public override bool StartRun(bool isDebug=false)
{
preTrayNum = 0;
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))
if (CanStartRun().Equals(false))
{
LineBean lineBean = LineManager.Line;
if (LineManager.Line.CanProcessLine())
{
StartCheckFixture();
}
return false;
}
IOTimeOutProcess();
}
public bool ReturnHome()
{
if (!RunAxis(true, UpdownAxis))
{
return false;
}
WarnMsg = "";
mainTimer.Stop();
alarmType = LineAlarmType.None;
runStatus = LineRunStatus.HomeMoving;
LogInfo("开始原点返回: (上下气上升,阻挡气缸上升 )开始");
SecondMoveInfo.EndMove();
mainTimer.Enabled = false;
MoveInfo.EndMove();
MoveInfo.NewMove(LineMoveType.ReturnHome);
SecondMoveInfo.EndMove();
runStatus = LineRunStatus.HomeMoving;
LogInfo("开始原点返回: (上下气上升,阻挡气缸上升 )开始");
MoveInfo.NewMove(LineMoveType.ReturnHome);
StartReset();
return true;
}
if ( isDebug)
{
mainTimer.Enabled = true;
}
return true ;
}
public override bool Reset()
{
StopMove();
if (!RunAxis(true, UpdownAxis))
{
return false;
}
WarnMsg = "";
alarmType = LineAlarmType.None;
preTrayNum = 0;
currTrayNum = 0;
LogInfo("开始重置:清理盘号,(上下气上升,阻挡气缸上升 )开始 ");
}
LogInfo("开始重置:清理盘号,(上下气上升,阻挡气缸上升 )开始 ");
runStatus = LineRunStatus.Reset;
MoveInfo.EndMove();
SecondMoveInfo.EndMove();
MoveInfo.NewMove(LineMoveType.Reset);
StartReset();
StartReset();
return true;
}
private void StartReset()
{
ResetClearData();
lineStatus = LineStatus.ResetMove;
MoveInfo.NextMoveStep(LineMoveStep.MH_UpDownCylinder_Up);
// CylinderMove(MoveInfo, IO_Type.UpDownCylinder_Down, IO_Type.UpDownCylinder_Up);
UpdownHomeMove();
......@@ -206,30 +152,62 @@ namespace OnlineStore.DeviceLibrary
default: break;
}
}
}
protected override void ReturnHomeProcess()
{
ResetProcess();
}
public override void StopMove()
}
internal override void StopMove()
{
MoveInfo.EndMove();
SecondMoveInfo.EndMove();
runStatus = LineRunStatus.Busy;
LogInfo("停止运动:(上下气缸上升 ,阻挡气缸输入=0,顶升气缸下降 ) ");
//MoveInfo.NewMove(LineMoveType.StopMove);
//MoveInfo.NextMoveStep(LineMoveStep.MH_UpDownCylinder_Up);
// CylinderMove(MoveInfo, IO_Type.UpDownCylinder_Down, IO_Type.UpDownCylinder_Up);
if (UseAxis)
{
UpdownAxis.SuddenStop();
}
CylinderMove(MoveInfo, IO_Type.TopCylinder_UP, IO_Type.TopCylinder_Down);
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)
{
return false;
......
......@@ -131,7 +131,7 @@ namespace OnlineStore.DeviceLibrary
//DI主动上传
aioBox.AutoReadInput(true);
aioBox.AutoReadOutput(true, DOMS);
aioBox.LogOut = true;
aioBox.DI_Changed_Event += AioBox_DI_Changed_Event; ;
aioBox.DO_Changed_Event += AioBox_DO_Changed_Event;
......
......@@ -197,16 +197,13 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 停止所有运动
/// </summary>
public abstract void StopMove( );
internal abstract void StopMove( );
/// <summary>
/// 重置处理
/// </summary>
protected abstract void ResetProcess();
///// <summary>
///// 原点返回处理
///// </summary>
//protected abstract void ReturnHomeProcess();
/// <summary>
/// 初始化
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!