Commit 500f3970 刘韬

1

1 个父辈 f3a0c8ca
......@@ -61,7 +61,7 @@ namespace DeviceLibrary
binding.AllowCookies = false;
Uri baseAddress = new Uri(Setting_Init.Device_StoreServerURL);
EndpointAddress endpointAddress = new EndpointAddress(baseAddress.ToString());
towerAppWSClient = new MydataWcfServiceTest.ServiceReference3.WSInterfaceClient(binding, endpointAddress);
towerAppWSClient = new MydataWcfServiceTest.ServiceReference2.TowerAppWSClient(binding, endpointAddress);
}
private void ServerConnectTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
......@@ -590,7 +590,7 @@ namespace DeviceLibrary
return true;
}
MydataWcfServiceTest.ServiceReference3.WSInterfaceClient towerAppWSClient;
MydataWcfServiceTest.ServiceReference2.TowerAppWSClient towerAppWSClient;
/// <summary>
/// 存储MyCronic料仓的剩余容量 7X8=1000;7X12=345;13X32=100;
/// </summary>
......
......@@ -179,9 +179,9 @@ namespace DeviceLibrary
{
try
{
VLog.Info("Host_UnknownMessageReceived:");
VLog.Info(e.Message.ToString());
VLog.Info(e.Message.GetReaderAtBodyContents().ToString());
VLog.Error("Host_UnknownMessageReceived:");
VLog.Error(e.Message.ToString());
//VLog.Error(e.Message.GetReaderAtBodyContents().ToString());
}
catch (Exception ex)
{
......@@ -216,7 +216,7 @@ namespace DeviceLibrary
binding.ReceiveTimeout = TimeSpan.FromMinutes(10);
Uri baseAddress = new Uri(Setting_Init.Device_StoreServerURL);
EndpointAddress endpointAddress = new EndpointAddress(baseAddress.ToString());
var towerAppWSClient = new MydataWcfServiceTest.ServiceReference3.WSInterfaceClient(binding, endpointAddress);
var towerAppWSClient = new MydataWcfServiceTest.ServiceReference2.TowerAppWSClient(binding, endpointAddress);
VLog.Info("开始查询 CarrierList");
var result = towerAppWSClient.XmlAction(VCmd.GetCarrierList);
VLog.Info("结束查询 CarrierList");
......
......@@ -55,7 +55,7 @@ namespace DeviceLibrary
if (!DeviceListByAddr.ContainsKey(nextaddr))
return true;
return DeviceListByAddr[nextaddr].FrontCheck(nextaddr);
return DeviceListByAddr[nextaddr].FrontFreeCheck(nextaddr);
}
public void StopMove(bool ServoOff = false)
{
......
......@@ -58,6 +58,7 @@ namespace DeviceLibrary
TrayStop_02,
TrayStop_03,
TrayStop_04,
TrayStop_CIIN,
TrayStop_05,
TrayStop_06,
TrayStop_07,
......
......@@ -108,7 +108,7 @@ namespace DeviceLibrary
/// deviceGroupName,RequestLoadInfo
/// </summary>
public static Dictionary<string, RequestLoadInfo> TrayRequest = new Dictionary<string, RequestLoadInfo>();
public static bool TryGetTrayRequest(string deviceGroupName,string rfid,out ReelParam reelParam)
public static bool TryGetTrayRequest(string deviceGroupName,string rfid, bool clearRequest,out ReelParam reelParam)
{
reelParam = null;
LogUtil.info($"[{deviceGroupName}] HasTrayRequest:{deviceGroupName},{rfid},{TrayRequest.ContainsKey(deviceGroupName)}");
......@@ -121,7 +121,8 @@ namespace DeviceLibrary
if (hasrequest)
{
reelParam = TrayRequest[deviceGroupName].LoadParam?.clone();
TrayRequest.Remove(deviceGroupName);
if (clearRequest)
TrayRequest.Remove(deviceGroupName);
return true;
}
else
......
using System;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
......@@ -16,8 +17,14 @@ namespace DeviceLibrary
void Stop();
void TrayRelease();
bool IsFree();
bool FrontCheck(int curaddr);
/// <summary>
/// 检测该地址的阻挡前检测是否为LOW
/// </summary>
/// <param name="curaddr"></param>
/// <returns></returns>
bool FrontFreeCheck(int curaddr);
void FrontStopProcess();
IO_VALUE IOValue(string ioType);
}
public enum DeviceStateE
......
......@@ -820,7 +820,7 @@ namespace DeviceLibrary
return c;
}
public bool FrontCheck(int curaddr)
public bool FrontFreeCheck(int curaddr)
{
throw new NotImplementedException();
}
......
......@@ -594,7 +594,7 @@ namespace DeviceLibrary
{
throw new NotImplementedException();
}
public bool FrontCheck(int curaddr)
public bool FrontFreeCheck(int curaddr)
{
if (DeviceGroup.addr_1 == curaddr)
return IOValue(IO_Type.Ls_A_Front_Check).Equals(IO_VALUE.LOW);
......
......@@ -220,7 +220,7 @@ namespace DeviceLibrary
}
//出库判断
else if (!trayInfo.HasLoad && TrayManager.TryGetTrayRequest(GroupName, CurrrentRFID,out ReelParam reelParam))
else if (!trayInfo.HasLoad && TrayManager.TryGetTrayRequest(GroupName, CurrrentRFID,true,out ReelParam reelParam))
{
if (IOValue(IO_Type.AMH_Reel_Check).Equals(IO_VALUE.LOW))
{
......@@ -664,7 +664,7 @@ namespace DeviceLibrary
return true;
}
public bool FrontCheck(int curaddr)
public bool FrontFreeCheck(int curaddr)
{
return IOValue(IO_Type.AMH_Front_Check).Equals(IO_VALUE.LOW);
}
......
......@@ -95,15 +95,15 @@ namespace DeviceLibrary
switch (MoveInfo.MoveStep)
{
case MoveStep.Wait:
if ((GroupName == "AMH-ML5-1" || GroupName == "AMH-ML5-2") && RobotManage.mainMachine.IOValue(IO_Type.ML5_DoorSafeCheck).Equals(IO_VALUE.LOW))
{
Msg.add(crc.GetString("Res0041","ML5料口门光栅被遮挡"), MsgLevel.warning);
if (!DoorSingnlSafeCheck())
return;
}
if (IOValue(IO_Type.MI_In_Check).Equals(IO_VALUE.HIGH))
{
MoveInfo.log("中间检测到托盘");
MoveInfo.NextMoveStep(MoveStep.TrayStop_04);
if (GroupName == "CI-IN")
MoveInfo.NextMoveStep(MoveStep.TrayStop_CIIN);
else
MoveInfo.NextMoveStep(MoveStep.TrayStop_04);
Location.ToLow(MoveInfo);
}
else if (IOValue(IO_Type.MI_Front_Check).Equals(IO_VALUE.HIGH))
......@@ -119,6 +119,18 @@ namespace DeviceLibrary
Msg.add(crc.GetString("Res0100.9451681e","入口长时间未检测到托盘,请检查."), MsgLevel.alarm);
}
break;
case MoveStep.TrayStop_CIIN:
if (IOValue(IO_Type.MI_In_Check).Equals(IO_VALUE.HIGH) && MoveInfo.IsTimeOut(1))
{
MoveInfo.NextMoveStep(MoveStep.TrayStop_03);
MoveInfo.log("确认为CI-IN物料");
}
else if (MoveInfo.IsTimeOut(2))
{
MoveInfo.NextMoveStep(MoveStep.TrayStop_04);
MoveInfo.log("确认为CI-IN错过物料");
}
break;
case MoveStep.TrayStop_01:
if (IOValue(IO_Type.MI_Front_Check).Equals(IO_VALUE.LOW))
{
......@@ -148,7 +160,7 @@ namespace DeviceLibrary
{
CurrrentRFID = Common.RfidFilter(data);
TrayManager.Process(MoveInfo, CurrrentRFID, DeviceGroup.addr_1, IOValue(IO_Type.MI_Reel_Check).Equals(IO_VALUE.HIGH)?1:0, out TrayInfo trayInfo);
var stop = TrayManager.TryGetTrayRequest(GroupName, CurrrentRFID, out _);
var stop = TrayManager.TryGetTrayRequest(GroupName, CurrrentRFID,false, out _);
MoveInfo.log($"CurrrentRFID:{CurrrentRFID},HasLoad:{trayInfo.HasLoad},MI_Reel_Check:{IOValue(IO_Type.MI_Reel_Check)},NeedStop:{stop},GroupName:{GroupName},TrayType:{trayInfo.TrayType}");
#region MI1,Mi2的情况判断
if ((GroupName == "AMH-MI1" || GroupName == "AMH-MI2") && trayInfo.TrayType == TrayTypeE.MTP1)
......@@ -248,6 +260,7 @@ namespace DeviceLibrary
#endregion
if (stop && !trayInfo.HasLoad)
{
TrayManager.ClearTrayRequest(GroupName);
if (IOValue(IO_Type.MI_Reel_Check).Equals(IO_VALUE.HIGH))
{
TrayManager.SetTrayError(CurrrentRFID);
......@@ -305,6 +318,7 @@ namespace DeviceLibrary
}
else
{
SRec.info(crc.GetString("Res0042","托盘挡停"), GroupName, crc.GetString("Res0025","载物托盘"), crc.GetString("Res0044","等待物料被接走"), CurrrentRFID, remoteLoad.RequestLoadInfo.LoadParam.WareCode);
MoveInfo.log($"{GroupName} 请求出库成功"+ remoteLoad.RequestLoadInfo.LoadParam.ToStr());
}
......@@ -334,11 +348,8 @@ namespace DeviceLibrary
Location.ToLow(MoveInfo);
break;
case MoveStep.TrayStop_05:
if ((GroupName == "AMH-ML5-1" || GroupName == "AMH-ML5-2") && RobotManage.mainMachine.IOValue(IO_Type.ML5_DoorSafeCheck).Equals(IO_VALUE.LOW))
{
Msg.add(crc.GetString("Res0041", "ML5料口门光栅被遮挡"), MsgLevel.warning);
if (!DoorSingnlSafeCheck())
return;
}
MoveInfo.NextMoveStep(MoveStep.TrayStop_06);
//IOMove(IO_Type.AMH_Tray_Stop, IO_VALUE.HIGH, IO_Type.MI_In_Check, IO_VALUE.LOW, StopDelayMS);
IOMove(IO_Type.AMH_Tray_Stop, IO_VALUE.HIGH);
......@@ -359,7 +370,7 @@ namespace DeviceLibrary
break;
case MoveStep.TrayStop_07:
MoveInfo.NextMoveStep(MoveStep.TrayStop_WaitLoadProcess);
if (GroupName != "AMH-MI1" && GroupName != "AMH-MI2" && GroupName != "CI")
if (GroupName != "AMH-MI1" && GroupName != "AMH-MI2" && GroupName != "CI-IN" && GroupName != "CI-OUT")
{
Location.ToHigh(MoveInfo);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
......@@ -373,7 +384,7 @@ namespace DeviceLibrary
//}
Msg.add(crc.GetString("Res0046","等待处理物料"),MsgLevel.info);
if (GroupName != "AMH-MI1" && GroupName != "AMH-MI2" && GroupName != "CI")
if (GroupName != "AMH-MI1" && GroupName != "AMH-MI2")
{
Msg.add(crc.GetString("Res0047","托盘上有物料,等待同步物料信息."), MsgLevel.info);
//if (result == RemoteResult.True && RobotManage.mainMachine.IOValue(IO_Type.ML5_DoorSafeCheck).Equals(IO_VALUE.HIGH))
......@@ -417,7 +428,7 @@ namespace DeviceLibrary
}
}
bool IsDoorSafe() {
if (GroupName == "AMH-ML5-1" || GroupName == "AMH-ML5-2")
if (GroupName == "AMH-ML5-1" || GroupName == "AMH-ML5-2" || GroupName == "CI-IN" || GroupName == "CI-OUT")
{
var remoteLoad = new RemoteLoad();
remoteLoad.Seq = Snowflake.Instance().GetId();
......@@ -439,11 +450,8 @@ namespace DeviceLibrary
Debug.WriteLine("Remote Timeout IsSafe:False");
return false;
}
else if (RobotManage.mainMachine.IOValue(IO_Type.ML5_DoorSafeCheck).Equals(IO_VALUE.LOW))
{
Msg.add(crc.GetString("Res0041", "ML5料口门光栅被遮挡"), MsgLevel.warning);
else if (!DoorSingnlSafeCheck())
return false;
}
else
{
Debug.WriteLine("Remote UnKnow:True");
......@@ -479,9 +487,8 @@ namespace DeviceLibrary
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(2000));
break;
case MoveStep.H01_HomeReset:
if ((GroupName == "AMH-ML5-1" || GroupName == "AMH-ML5-2") && RobotManage.mainMachine.IOValue(IO_Type.ML5_DoorSafeCheck).Equals(IO_VALUE.LOW))
if (!DoorSingnlSafeCheck())
{
Msg.add(crc.GetString("Res0041", "ML5料口门光栅被遮挡"), MsgLevel.warning);
break;
}
var dl = new string[] { "AMH-MI1", "AMH-MI2" };
......@@ -505,11 +512,6 @@ namespace DeviceLibrary
break;
case MoveStep.H02_HomeReset:
MoveInfo.NextMoveStep(MoveStep.H03_HomeReset);
if ((GroupName == "AMH-ML5-1" || GroupName == "AMH-ML5-2") && RobotManage.mainMachine.IOValue(IO_Type.ML5_DoorSafeCheck).Equals(IO_VALUE.LOW))
{
Msg.add(crc.GetString("Res0041","ML5料口门光栅被遮挡"), MsgLevel.warning);
break;
}
//IOMove(IO_Type.AMH_Tray_Stop, IO_VALUE.HIGH, IO_Type.MI_In_Check, IO_VALUE.LOW, StopDelayMS);
//MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.MI_In_Check,IO_VALUE.LOW));
break;
......@@ -534,9 +536,13 @@ namespace DeviceLibrary
return true;
}
public bool FrontCheck(int curaddr)
public bool FrontFreeCheck(int curaddr)
{
return IOValue(IO_Type.MI_Front_Check).Equals(IO_VALUE.LOW);
//CI-IN 没有前阻挡检测, 改用托盘检测
if (GroupName == "CI-IN")
return IOValue(IO_Type.MI_In_Check).Equals(IO_VALUE.LOW);
else
return IOValue(IO_Type.MI_Front_Check).Equals(IO_VALUE.LOW);
}
public void FrontStopProcess()
......@@ -546,5 +552,28 @@ namespace DeviceLibrary
IOMove(IO_Type.AMH_Front_Stop, IO_VALUE.LOW);
}
}
bool DoorSingnlSafeCheck()
{
if ((GroupName == "AMH-ML5-1" || GroupName == "AMH-ML5-2") &&
RobotManage.mainMachine.IOValue(IO_Type.ML5_DoorSafeCheck).Equals(IO_VALUE.LOW))
{
Msg.add(crc.GetString("Res0041", "ML5料口门光栅被遮挡"), MsgLevel.warning);
return false;
}
else if (GroupName == "CI-IN" &&
RobotManage.mainMachine.IOValue(IO_Type.CI_IN_DoorSafeCheck).Equals(IO_VALUE.HIGH))
{
Msg.add("点料机进料口门可能干涉", MsgLevel.warning);
return false;
}
else if (GroupName == "CI-OUT" &&
RobotManage.mainMachine.IOValue(IO_Type.CI_OUT_DoorSafeCheck).Equals(IO_VALUE.HIGH))
{
Msg.add("点料机进出口门可能干涉", MsgLevel.warning);
return false;
}
return true;
}
}
}
\ No newline at end of file
......@@ -29,6 +29,8 @@ DI,0,自动模式,AutoRun_Single,2,,X02,,,,,,,,,,
DI,0,气压检测,Airpressure_Check,3,,X03,,,,,,,,,,
DI,0,吸盘进气压力检测,Sucker_suction_detection,4,,X04,,,,,,,,,,
DI,0,ML5出入口安全检测,ML5_DoorSafeCheck,149,,X149,,,,,,,,,,
DI,0,点料机进料安全检测,CI_IN_DoorSafeCheck,100,,X100,,,,,,,,,,
DI,0,点料机出料安全检测,CI_OUT_DoorSafeCheck,101,,X101,,,,,,,,,,
,,,,,,,,,,,,,,,,
DI,0,LS1-1顶升上升端,Ls_A_Location_Up,5,LS1,X05,,,,,,,,,,
DI,0,LS1-1顶升下降端,Ls_A_Location_Down,6,LS1,X06,,,,,,,,,,
......
......@@ -49,7 +49,15 @@ namespace OnlineStore.LoadCSVLibrary
/// <summary>
/// DI,0,ML5出入口安全检测,ML5_DoorSafeCheck,149,,X149,,,,,,,,,,
/// </summary>
public static string ML5_DoorSafeCheck = "ML5_DoorSafeCheck";
public static string ML5_DoorSafeCheck = "ML5_DoorSafeCheck";
/// <summary>
/// DI,0,点料机进料安全检测,CI_IN_DoorSafeCheck,100,,X100,,,,,,,,,,
/// </summary>
public static string CI_IN_DoorSafeCheck = "CI_IN_DoorSafeCheck";
/// <summary>
/// DI,0,点料机出料安全检测,CI_OUT_DoorSafeCheck,101,,X101,,,,,,,,,,
/// </summary>
public static string CI_OUT_DoorSafeCheck = "CI_OUT_DoorSafeCheck";
/// <summary>
/// DO,0,LS3-2顶升上升端,Ls_B_Location_Up,116,HY3,X116,,,,,,,,,,
/// </summary>
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!