Commit 0a1cfbd1 张东亮

错开出口料串与倒数第二个料串的时间点

1 个父辈 67b1a1ae
......@@ -55,7 +55,7 @@
自动读取AO事件触发
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.#ctor">
<member name="M:Asa.IOModule.AIOBOX.#ctor(System.String)">
<summary>
AIOBOX
</summary>
......@@ -70,18 +70,6 @@
是否连接
</summary>
</member>
<member name="P:Asa.IOModule.AIOBOX.ErrInfo">
<summary>
错误信息
</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>
设置输入端
......@@ -286,6 +274,11 @@
监听结果线程
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.TestMethod">
<summary>
测试方法锁
</summary>
</member>
<member name="T:Asa.IOModule.Box_Type">
<summary>
IO模块类型
......@@ -326,62 +319,5 @@
闭合,打开,高电平
</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="T:Asa.IOModule.LogFile">
<summary>
日志操作类
</summary>
</member>
<member name="M:Asa.IOModule.LogFile.#ctor(System.String,System.String)">
<summary>
日志
</summary>
<param name="path">文件夹路径</param>
<param name="ip"></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>
......@@ -9,7 +9,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>OnlineStore.Common</RootNamespace>
<AssemblyName>Common</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
......
......@@ -45,7 +45,21 @@
<conversionPattern value="[%date][%t]%-5p %m%n" />
</layout>
</appender>
<appender name="AIOBOX" type="log4net.Appender.RollingFileAppender">
<file value="logs/aio/AIOBOX.log"/>
<param name="Encoding" value="UTF-8" />
<param name="MaxSizeRollBackups" value="15"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="yyyy-MM-dd"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%date][%t]%-5p %m%n" />
</layout>
</appender>
<logger name="AIOBOX">
<level value="Info" />
<appender-ref ref="AIOBOX" />
</logger>
<logger name="RollingLogFileAppender">
<level value="Info" />
<appender-ref ref="RollingLogFileAppender" />
......
......@@ -86,7 +86,7 @@ namespace OnlineStore.DeviceLibrary
{
aioBox = new AIOBOX();
aioBox.LogPath(Application.StartupPath + @"\logs\aio\", LogType.OnlyError);
//aioBox.LogPath(Application.StartupPath + @"\logs\aio\", LogType.OnlyError);
aioBox.IP = ioIp;
aioBox.SetInput(Asa.IOModule.Box_Type.DI, DILength);
......@@ -99,7 +99,7 @@ namespace OnlineStore.DeviceLibrary
aioBox.DI_Changed_Event += AioBox_DI_Changed_Event; ;
aioBox.DO_Changed_Event += AioBox_DO_Changed_Event;
LogUtil.info("开始连接:" + logName + ":" + aioBox.ErrInfo);
LogUtil.info("开始连接:" + logName);
aioBox.Connect();
AIOMap.Add(ioIp, aioBox);
......@@ -268,7 +268,7 @@ namespace OnlineStore.DeviceLibrary
bool result = aioBox.WriteDO(StartAddress, GetBox_Sta(onOff));
if (!result)
{
LogUtil.error("AIO WriteSingleDO [" + ioIp + "] [" + StartAddress + "] 失败:" + aioBox.ErrInfo);
LogUtil.error("AIO WriteSingleDO [" + ioIp + "] [" + StartAddress + "] 失败");
}
}
else
......@@ -466,17 +466,17 @@ namespace OnlineStore.DeviceLibrary
return aioBox;
}
//public override bool IsConnect(string ip)
//{
// if (AIOMap.ContainsKey(ip))
// {
// if (AIOMap[ip].IsConn)
// {
// return true;
// }
// return false;
// }
// return false;
//}
public bool IsConnect(string ip)
{
if (AIOMap.ContainsKey(ip))
{
if (AIOMap[ip].IsConn)
{
return true;
}
return false;
}
return false;
}
}
}
......@@ -14,7 +14,41 @@ namespace OnlineStore.DeviceLibrary
public abstract void ConnectionIOList(List<string> dIODeviceNameList);
static Dictionary<string, bool> conStateIO = new Dictionary<string, bool>();
public static void GetConnectionState()
{
try
{
AIOBOXManager manager = (AIOBOXManager)instance;
foreach (var item in manager.AIOMap)
{
if (conStateIO.ContainsKey(item.Key))
{
if (!item.Value.IsConn.Equals(conStateIO[item.Key]))
{
conStateIO[item.Key] = item.Value.IsConn;
if (item.Value.IsConn)
{
LogUtil.info("IO连接成功");
}
else
{
LogUtil.info("IO连接断开");
}
}
}
else
{
conStateIO.Add(item.Key, item.Value.IsConn);
}
}
}
catch (Exception e)
{
LogUtil.error("GetConnectionState", e);
}
}
#region KNDIO
public static void IOMove(string ioType, IO_VALUE ioValue)
{
......
......@@ -302,17 +302,17 @@ namespace OnlineStore.DeviceLibrary
//如果出口无料架,持续1000以上,放开阻挡放出一个料架
//每次放料架时间间隔3秒
if (IOManager.IOValue(IO_Type.L2_StopCheck).Equals(IO_VALUE.HIGH) &&
IOManager.IOValue(IO_Type.L2_OutCheck).Equals(IO_VALUE.LOW) && span.TotalSeconds > 3)
IOManager.IOValue(IO_Type.L2_OutCheck).Equals(IO_VALUE.LOW) && span.TotalSeconds > 5)
{
//如果出料线体出口无料架,放一个料架到出口
if (LineManager.checkWatch(ol_noshelfWatch, 1000))
if (LineManager.checkWatch(ol_noshelfWatch, 1000) && AgvClient.GetAction(Config.L2_AgvName).Equals(ClientAction.None))
{
IOManager.CIOMove(IO_Type.L2_OutStopDown, IO_VALUE.LOW);
LogUtil.info(" 出料线体出口无料架,下降 [" + IO_Type.L2_StopDown + "] [" + StopDownMS + "] 秒");
ol_lastSendShelfTime = DateTime.Now;
StopIOMove(IO_Type.L2_StopDown, StopDownMS);
}
}
}
else if (span.TotalMilliseconds > StopDownMS)
{
ol_noshelfWatch.Stop();
......@@ -329,9 +329,9 @@ namespace OnlineStore.DeviceLibrary
IOManager.IOValue(IO_Type.L3_OutCheck).Equals(IO_VALUE.LOW) && span.TotalSeconds > 3)
{
//如果出料线体出口无料架,放一个料架到出口
if (LineManager.checkWatch(ol_noshelfWatch1, 1000))
if (LineManager.checkWatch(ol_noshelfWatch1, 1000) && AgvClient.GetAction(Config.L3_AgvName).Equals(ClientAction.None))
{
IOManager.CIOMove(IO_Type.L1_OutStopDown, IO_VALUE.LOW);
IOManager.CIOMove(IO_Type.L3_OutStopDown, IO_VALUE.LOW);
LogUtil.info(" 空料串线体出口无料架,下降 [" + IO_Type.L3_StopDown + "] [" + StopDownMS + "] 秒");
ol_lastSendShelfTime1 = DateTime.Now;
StopIOMove(IO_Type.L3_StopDown, StopDownMS);
......@@ -398,16 +398,13 @@ namespace OnlineStore.DeviceLibrary
//出口信号需要持续1秒钟
if (IOManager.IOValue(IO_Type.L2_OutCheck).Equals(IO_VALUE.HIGH) && span.TotalSeconds > 60)
{
//if (LastOutShelfId.Equals("000").Equals(false))
if (LineManager.checkWatch(il_outstopCheckWarch, 1000))
{
if (LineManager.checkWatch(il_outstopCheckWarch, 1000))
{
il_lastCallAgvTime = DateTime.Now;
//StopIOMove(IO_Type.InL_OutStopDown, StopDownMS);
il_lastCallAgvTime = DateTime.Now;
//StopIOMove(IO_Type.InL_OutStopDown, StopDownMS);
LogUtil.info(" 出料线体出口有料架" + LastOutShelfId + ",呼叫agv小车[" + Config.L2_AgvName + "] [NeedLeave] ");
AgvClient.NeedLeave(Config.L2_AgvName, "B#");
}
//LogUtil.info(" 出料线体出口有料架" + LastOutShelfId + ",呼叫agv小车[" + Config.L2_AgvName + "] [NeedLeave] ");
AgvClient.NeedLeave(Config.L2_AgvName, "B#");
}
}
else if (span.TotalMilliseconds > StopDownMS)
......@@ -441,7 +438,7 @@ namespace OnlineStore.DeviceLibrary
il_lastCallAgvTime2 = DateTime.Now;
//StopIOMove(IO_Type.InL_OutStopDown, StopDownMS);
LogUtil.info(" 空料串线体出口有料架" + LastOutShelfId + ",呼叫agv小车[" + Config.L3_AgvName + "] [NeedLeave] ");
//LogUtil.info(" 空料串线体出口有料架" + LastOutShelfId + ",呼叫agv小车[" + Config.L3_AgvName + "] [NeedLeave] ");
AgvClient.NeedLeave(Config.L3_AgvName, "B#");
}
}
......@@ -518,7 +515,7 @@ namespace OnlineStore.DeviceLibrary
public void IoCheckProcess()
{
DateTime time = DateTime.Now;
IOManager.GetConnectionState();
if (runStatus.Equals(RunStatus.Wait))
{
//获取新的Io状态
......
......@@ -244,6 +244,7 @@ namespace OnlineStore.DeviceLibrary
IOManager.IOMove(IO_Type.L1_Run, IO_VALUE.LOW);
IOManager.IOMove(IO_Type.L2_Run, IO_VALUE.LOW);
IOManager.IOMove(IO_Type.L3_Run, IO_VALUE.LOW);
LogUtil.info("链条关闭");
}
else
{
......@@ -252,6 +253,7 @@ namespace OnlineStore.DeviceLibrary
IOManager.IOMove(IO_Type.L1_Run, IO_VALUE.HIGH);
IOManager.IOMove(IO_Type.L2_Run, IO_VALUE.HIGH);
IOManager.IOMove(IO_Type.L3_Run, IO_VALUE.HIGH);
LogUtil.info("链条开启");
};
}
#endregion
......
......@@ -88,9 +88,9 @@ namespace OnlineStore.DeviceLibrary
UpdateAction(id, Asa.ClientAction.Ready);
if (id.Equals(LineManager.Config.L1_AgvName))
{
LineManager.DISTLine.UpdateSleep(false);
if (IOManager.IOValue(IO_Type.L1_InCheck).Equals(IO_VALUE.LOW))
{
IOManager.CIOMove(IO_Type.L1_Run, IO_VALUE.HIGH);
Task.Factory.StartNew(delegate
{
SetStatus(id, "", ClientAction.MayEnter);
......@@ -108,14 +108,14 @@ namespace OnlineStore.DeviceLibrary
}
//两秒后改为离开状态
Thread.Sleep(3000);
Thread.Sleep(5000);
LogUtil.info(logName + " ,调用 FinishEnter ");
SetStatus(id, "", ClientAction.FinishEnter);
Thread.Sleep(5000);
LogUtil.info(logName + " ,处理结束 更新状态为None ");
SetStatus(id, "", ClientAction.None);
LineManager.DISTLine.UpdateSleep(false);
});
}
else
......@@ -130,13 +130,27 @@ namespace OnlineStore.DeviceLibrary
string shefId = LineManager.DISTLine.LastOutShelfId;
if (IOManager.IOValue(IO_Type.L2_OutCheck).Equals(IO_VALUE.HIGH))
{
LineManager.DISTLine.UpdateSleep(false);
IOManager.CIOMove(IO_Type.L2_Run, IO_VALUE.HIGH);
//agvClient.MayLeave(id);
SetStatus(id, shefId, ClientAction.MayLeave);
LineManager.DISTLine.StopIOMove(IO_Type.L2_OutStopDown, 2000);
//LineManager.DISTLine.StopIOMove(IO_Type.L2_OutStopDown, 2000);
IOManager.CIOMove(IO_Type.L2_OutStopDown, IO_VALUE.HIGH);
LogUtil.info(logName + "下降 L2_OutStopDown , " + shefId);
Task.Factory.StartNew(delegate
{
try
{
WaitUtil.Wait(10000, delegate
{
IOManager.CIOMove(IO_Type.L2_OutStopDown, IOManager.IOValue(IO_Type.L2_OutCheck));
return IOManager.IOValue(IO_Type.L2_OutCheck).Equals(IO_VALUE.LOW);
}, "等待L2_OutCheck=Low");
}
catch (Exception ex)
{
LogUtil.error(logName + ":" + ex.ToString());
}
IOManager.CIOMove(IO_Type.L2_OutStopDown, IO_VALUE.LOW);
//两秒后改为离开状态
Thread.Sleep(5000);
LogUtil.info(logName + " ,调用 FinishLeave " + shefId);
......@@ -147,6 +161,7 @@ namespace OnlineStore.DeviceLibrary
LogUtil.info(logName + " ,处理结束 更新状态为None ");
SetStatus(id, "", ClientAction.None);
});
LineManager.DISTLine.UpdateSleep(false);
}
else
{
......@@ -159,14 +174,25 @@ namespace OnlineStore.DeviceLibrary
string shefId = LineManager.DISTLine.LastOutShelfId;
if (IOManager.IOValue(IO_Type.L3_OutCheck).Equals(IO_VALUE.HIGH))
{
LineManager.DISTLine.UpdateSleep(false);
LineManager.DISTLine.StopIOMove(IO_Type.L3_OutStopDown, 1500);
//agvClient.MayLeave(id);
SetStatus(id, shefId, ClientAction.MayLeave);
LogUtil.info(logName + "下降 L3_OutStopDown , " + shefId);
IOManager.CIOMove(IO_Type.L3_Run, IO_VALUE.HIGH);
IOManager.CIOMove(IO_Type.L3_OutStopDown, IO_VALUE.HIGH);
Task.Factory.StartNew(delegate
{
try
{
WaitUtil.Wait(10000, delegate
{
IOManager.CIOMove(IO_Type.L3_OutStopDown, IOManager.IOValue(IO_Type.L3_OutCheck));
return IOManager.IOValue(IO_Type.L3_OutCheck).Equals(IO_VALUE.LOW);
}, "等待L3_OutCheck=Low");
}
catch (Exception ex)
{
LogUtil.error(logName + ":" + ex.ToString());
}
IOManager.CIOMove(IO_Type.L3_OutStopDown, IO_VALUE.LOW);
//两秒后改为离开状态
Thread.Sleep(5000);
LogUtil.info(logName + " ,调用 FinishLeave " + shefId);
......@@ -177,6 +203,7 @@ namespace OnlineStore.DeviceLibrary
LogUtil.info(logName + " ,处理结束 更新状态为None ");
SetStatus(id, "", ClientAction.None);
});
LineManager.DISTLine.UpdateSleep(false);
}
else
{
......
......@@ -9,7 +9,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>OnlineStore.LoadCSVLibrary</RootNamespace>
<AssemblyName>LoadCSVLibrary</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
......
......@@ -19,7 +19,7 @@ namespace UserFromControl.Properties {
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
......@@ -47,8 +47,8 @@ namespace UserFromControl.Properties {
}
/// <summary>
/// 使用此强类型资源类,为所有资源查找
/// 重写当前线程的 CurrentUICulture 属性
/// 重写当前线程的 CurrentUICulture 属性,对
/// 使用此强类型资源类的所有资源查找执行重写
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
......
......@@ -9,7 +9,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>UserFromControl</RootNamespace>
<AssemblyName>UserFromControl</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!