Commit 31374e12 LN

出料机构节拍优化。IO更新。

1 个父辈 f00a8cff
......@@ -6,19 +6,7 @@
<members>
<member name="T:Asa.IOModule.AIOBOX">
<summary>
AIOBOX操作类
</summary>
</member>
<member name="F:Asa.IOModule.AIOBOX.SEND_SLEEP">
<summary>
每条命令发送的间隔
不能小于15,会出现IO接收不到的情况
小于30时,会出现接收数据连包的情况
</summary>
</member>
<member name="F:Asa.IOModule.AIOBOX.PORT">
<summary>
ModBus端口
IO操作类
</summary>
</member>
<member name="T:Asa.IOModule.AIOBOX.DIO_Changed">
......@@ -38,31 +26,23 @@
自动读取DO事件触发
</summary>
</member>
<member name="T:Asa.IOModule.AIOBOX.AIO_Changed">
<member name="M:Asa.IOModule.AIOBOX.#ctor(Asa.IOModule.Box_Type,System.Int32,Asa.IOModule.Box_Type,System.Int32)">
<summary>
自动读取AI委托
</summary>
<param name="box">AIOBOX</param>
<param name="val">所有AI的值</param>
</member>
<member name="E:Asa.IOModule.AIOBOX.AI_Changed_Event">
<summary>
自动读取AI事件触发
IO操作类
</summary>
<param name="input">输入类型</param>
<param name="inputCount">输入数量</param>
<param name="output">输出类型</param>
<param name="outputCount">输出数量</param>
</member>
<member name="E:Asa.IOModule.AIOBOX.AO_Changed_Event">
<summary>
自动读取AO事件触发
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.#ctor">
<member name="P:Asa.IOModule.AIOBOX.IP">
<summary>
AIOBOX
IP地址
</summary>
</member>
<member name="P:Asa.IOModule.AIOBOX.IP">
<member name="P:Asa.IOModule.AIOBOX.Upload">
<summary>
IP地址
输入主动上传
</summary>
</member>
<member name="P:Asa.IOModule.AIOBOX.IsConn">
......@@ -75,41 +55,6 @@
错误信息
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.LogPath(System.String,Asa.IOModule.LogType)">
<summary>
日志路径,连接前设置路径会自动保存日志
</summary>
<param name="path">文件夹路径</param>
<param name="type">输出类型</param>
</member>
<member name="M:Asa.IOModule.AIOBOX.SetInput(Asa.IOModule.Box_Type,System.Int32)">
<summary>
设置输入端
</summary>
<param name="type">类型</param>
<param name="count">数量</param>
</member>
<member name="M:Asa.IOModule.AIOBOX.SetOutput(Asa.IOModule.Box_Type,System.Int32)">
<summary>
设置输出端
</summary>
<param name="type">类型</param>
<param name="count">数量</param>
</member>
<member name="M:Asa.IOModule.AIOBOX.AutoIP(System.String)">
<summary>
自动获取IP地址,未连接前使用,必须在同一网段
</summary>
<param name="localIP">本地IP地址</param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.CheckIP(System.String)">
<summary>
检查IP地址
</summary>
<param name="ip"></param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.Connect">
<summary>
连接
......@@ -120,26 +65,6 @@
关闭连接
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.AutoReadInput(System.Boolean,System.Int32)">
<summary>
自动读取输入端并触发事件(主动上传数据 = 禁止)
</summary>
<param name="read">是否自动读取</param>
<param name="sleep">间隔,必须大于等于15ms</param>
</member>
<member name="M:Asa.IOModule.AIOBOX.AutoReadInput(System.Boolean)">
<summary>
自动读取输入端并触发事件(主动上传数据 = 使能)
</summary>
<param name="read">是否自动读取</param>
</member>
<member name="M:Asa.IOModule.AIOBOX.AutoReadOutput(System.Boolean,System.Int32)">
<summary>
自动读取输出端,触发事件
</summary>
<param name="read">是否自动读取</param>
<param name="sleep">间隔,必须大于等于15ms</param>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReverseStatus(Asa.IOModule.Box_Sta)">
<summary>
相反状态(ON/OFF)
......@@ -221,75 +146,68 @@
<param name="sta"></param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.GetLocalIP">
<summary>
获取本地IPv4地址
</summary>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.Send">
<summary>
发送命令线程
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.Receive">
<member name="M:Asa.IOModule.AIOBOX.GetReadDI_Command">
<summary>
接收命令线程
获取ReadDI的命令
</summary>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadSingle(System.Byte[])">
<summary>
读取写入单个DO,功能码5
</summary>
<param name="buff"></param>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadDO(System.Byte[])">
<member name="M:Asa.IOModule.AIOBOX.GetReadDO_Command">
<summary>
读取所有DO状态,功能码1
获取ReadDO的命令
</summary>
<param name="buff"></param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadDI(System.Byte[])">
<member name="M:Asa.IOModule.AIOBOX.Listen">
<summary>
读取所有DI状态,功能码2
监听网络线程
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadAI(System.Byte[])">
<member name="M:Asa.IOModule.AIOBOX.CommandProcess(System.Byte[])">
<summary>
读取所有AI的值,功能码4
接收到的命令处理方法,(task多线程)
</summary>
<param name="buff"></param>
<param name="cmd"></param>
</member>
<member name="M:Asa.IOModule.AIOBOX.Command">
<member name="M:Asa.IOModule.AIOBOX.Reconn">
<summary>
命令,前7个字节
重连线程
</summary>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.TriggerDIO">
<member name="M:Asa.IOModule.AIOBOX.Open">
<summary>
触发DIO改变事件
打开socket建立连接
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.AutoReadInput">
<member name="M:Asa.IOModule.AIOBOX.CheckIP(System.String)">
<summary>
自动读取输入端线程
检查IP地址
</summary>
<param name="ip"></param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.AutoReadOutput">
<member name="M:Asa.IOModule.AIOBOX.AutoIP(System.String)">
<summary>
自动读取输出端线程
自动获取IP地址,未连接前使用,必须在同一网段
</summary>
<param name="localIP">本地IP地址</param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.Listen">
<member name="M:Asa.IOModule.AIOBOX.GetIP">
<summary>
监听结果线程
获取IO模块IP地址
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.TestMethod">
<member name="M:Asa.IOModule.AIOBOX.Command">
<summary>
测试方法锁
命令,前7个字节
</summary>
<returns></returns>
</member>
<member name="T:Asa.IOModule.Box_Type">
<summary>
......@@ -331,26 +249,6 @@
闭合,打开,高电平
</summary>
</member>
<member name="T:Asa.IOModule.LogType">
<summary>
日志类型
</summary>
</member>
<member name="F:Asa.IOModule.LogType.OnlyError">
<summary>
仅错误信息
</summary>
</member>
<member name="F:Asa.IOModule.LogType.All">
<summary>
所有
</summary>
</member>
<member name="F:Asa.IOModule.LogType.WriteDO">
<summary>
写入DO
</summary>
</member>
<member name="T:Asa.IOModule.LogFile">
<summary>
日志操作类
......
......@@ -840,6 +840,8 @@ namespace OnlineStore.DeviceLibrary
public bool IsReviceInPosId(MoveEquip moveEquip, string posId)
{
bool isReviceInfo = false;
try
{
if (moveEquip.MoveInfo.MoveType.Equals(LineMoveType.InStore) && moveEquip.MoveInfo.MoveParam != null && moveEquip.MoveInfo.MoveParam.PosId.Equals(posId))
{
LogInfo(" IsReviceInPosId 正在入库中:" + MoveInfo.MoveParam.ToStr());
......@@ -857,6 +859,10 @@ namespace OnlineStore.DeviceLibrary
}
}
}
}catch(Exception ex)
{
LogUtil.error("IsReviceInPosId【"+ posId + "】出错:" + ex.ToString());
}
return isReviceInfo;
}
#endregion
......
......@@ -310,7 +310,18 @@ namespace OnlineStore.DeviceLibrary
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_05_WaitTime);
LogUtil.info(Name + "托盘 【" + currTrayNum + "】【" + outMsg + "】需要出料" + SecondMoveInfo.SLog + ":" + param.ToStr() + " 等待可以开始移栽 ");
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitProvidingEquipCanOut());//等待
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitProvidingEquipCanOut());
//等待
CylinderMove(null, IO_Type.TopCylinder_Down, IO_Type.TopCylinder_UP);
if (Config.SidesWayNum.Equals(4) && LineManager.Line.SwCanUpMove(1))
{
CheckLog("托盘阻挡 " + SecondMoveInfo.SLog + " 顶升气缸上升,同时横移1处的顶升也可以上升 ");
LineManager.Line.CylinderMove(null, IO_Type.SW1_TopCylinder_Down, IO_Type.SW1_TopCylinder_Up);
}
else
{
CheckLog("托盘阻挡 " + SecondMoveInfo.SLog + " 顶升气缸上升 ");
}
return;
}
......@@ -342,10 +353,12 @@ namespace OnlineStore.DeviceLibrary
return;
}
}
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_05_WaitTime))
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_05_WaitTime) && MoveInfo.MoveType.Equals(LineMoveType.None))
{
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_06_TopUp);
CylinderMove(SecondMoveInfo, IO_Type.TopCylinder_Down, IO_Type.TopCylinder_UP);
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_09_WaitLetFixtureGo);
CheckLog("托盘放行 " + SecondMoveInfo.SLog + "开始新的出料任务~" + SecondMoveInfo.MoveParam.ToStr() + ",开始移栽");
bool result = StartOutStoreMove(SecondMoveInfo.MoveParam);
CylinderMove(null, IO_Type.TopCylinder_Down, IO_Type.TopCylinder_UP);
if (Config.SidesWayNum.Equals(4) && LineManager.Line.SwCanUpMove(1))
{
CheckLog("托盘阻挡 " + SecondMoveInfo.SLog + " 顶升气缸上升,同时横移1处的顶升也可以上升 ");
......@@ -356,6 +369,18 @@ namespace OnlineStore.DeviceLibrary
CheckLog("托盘阻挡 " + SecondMoveInfo.SLog + " 顶升气缸上升 ");
}
//SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_06_TopUp);
//CylinderMove(SecondMoveInfo, IO_Type.TopCylinder_Down, IO_Type.TopCylinder_UP);
//if (Config.SidesWayNum.Equals(4) && LineManager.Line.SwCanUpMove(1))
//{
// CheckLog("托盘阻挡 " + SecondMoveInfo.SLog + " 顶升气缸上升,同时横移1处的顶升也可以上升 ");
// LineManager.Line.CylinderMove(null, IO_Type.SW1_TopCylinder_Down, IO_Type.SW1_TopCylinder_Up);
//}
//else
//{
// CheckLog("托盘阻挡 " + SecondMoveInfo.SLog + " 顶升气缸上升 ");
//}
}
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_06_TopUp))
{
......@@ -438,10 +463,17 @@ namespace OnlineStore.DeviceLibrary
lineStatus = LineStatus.OutStoreExecute;
MoveInfo.MoveParam = param;
MoveInfo.NewMove(LineMoveType.OutStore);
if (CylinderIsOk(IO_Type.BeforeAfterCylinder_Before, IO_Type.BeforeAfterCylinder_After))
{
PO_01_CylinderDown();
}
else
{
LogInfo("开始出料【" + posId + "】处理(移栽):PO_00_CylinderAfter, 前后气缸后退");
MoveInfo.NextMoveStep(LineMoveStep.PO_00_CylinderAfter);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
CylinderMove(MoveInfo, IO_Type.BeforeAfterCylinder_Before, IO_Type.BeforeAfterCylinder_After);
}
return true;
}
else
......@@ -450,17 +482,30 @@ namespace OnlineStore.DeviceLibrary
return false;
}
}
private void PO_01_CylinderDown()
{
MoveInfo.NextMoveStep(LineMoveStep.PO_01_CylinderDown);
OutLog(" " + MoveInfo.SLog + " : 上下气缸下降");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(300));
UpdownDownP2Move(MoveInfo.MoveParam.PlateH, MoveInfo.MoveParam.PlateW);
CylinderMove(MoveInfo, IO_Type.TopCylinder_Down, IO_Type.TopCylinder_UP);
if (Config.SidesWayNum.Equals(4) && LineManager.Line.SwCanUpMove(1))
{
OutLog(" 顶升气缸上升,同时横移1处的顶升也可以上升 ");
LineManager.Line.CylinderMove(null, IO_Type.SW1_TopCylinder_Down, IO_Type.SW1_TopCylinder_Up);
}
else
{
OutLog(" 顶升气缸上升 ");
}
}
protected override void OutStoreProcess()
{
if (MoveInfo.IsInWait)
{
CheckWait(MoveInfo);
}
//if (SecondMoveInfo.IsInWait)
//{
// CheckWait(SecondMoveInfo);
//}
if (MoveInfo.IsInWait)
{
return;
......@@ -468,10 +513,7 @@ namespace OnlineStore.DeviceLibrary
string posId = MoveInfo.MoveParam != null ? MoveInfo.MoveParam.PosId : "";
if (MoveInfo.MoveStep.Equals(LineMoveStep.PO_00_CylinderAfter))
{
MoveInfo.NextMoveStep(LineMoveStep.PO_01_CylinderDown);
OutLog(" " + MoveInfo.SLog + " : 上下气缸下降");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(200));
UpdownDownP2Move(MoveInfo.MoveParam.PlateH, MoveInfo.MoveParam.PlateW);
PO_01_CylinderDown();
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.PO_01_CylinderDown))
{
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!