220Plc信息同步

master
1 year ago
parent f98c575c25
commit c4c1873adc

@ -166,10 +166,11 @@ namespace Khd.Core.Application
{ {
var wcsTask = _dbContext.WcsTask var wcsTask = _dbContext.WcsTask
.Where(t => (t.taskType == 32 || t.taskType == 48) && (t.endPointId == baseEquip.objid || t.currPointId == baseEquip.objid)) .Where(t => (t.taskType == 32 || t.taskType == 48) && (t.endPointId == baseEquip.objid || t.currPointId == baseEquip.objid))
.OrderByDescending(t=>t.createTime)
.FirstOrDefault(); .FirstOrDefault();
if (wcsTask != null) if (wcsTask != null)
{ {
if (wcsTask.taskType != 48) if (wcsTask.taskType != 48 && wcsTask.taskStatus != 0)
{ {
wcsTask.taskStatus = 7; wcsTask.taskStatus = 7;
_dbContext.WcsTask.Update(wcsTask); _dbContext.WcsTask.Update(wcsTask);
@ -178,7 +179,7 @@ namespace Khd.Core.Application
agvCompeletedResponse.code = "0"; agvCompeletedResponse.code = "0";
agvCompeletedResponse.message = "成功"; agvCompeletedResponse.message = "成功";
} }
else else if (wcsTask.taskStatus != 0)
{ {
wcsTask.taskStatus = 4; wcsTask.taskStatus = 4;
_dbContext.WcsTask.Update(wcsTask); _dbContext.WcsTask.Update(wcsTask);
@ -187,6 +188,11 @@ namespace Khd.Core.Application
agvCompeletedResponse.code = "0"; agvCompeletedResponse.code = "0";
agvCompeletedResponse.message = "成功"; agvCompeletedResponse.message = "成功";
} }
else
{
agvCompeletedResponse.code = "1";
agvCompeletedResponse.message = "未找到当前任务";
}
} }
else else
{ {
@ -445,8 +451,8 @@ namespace Khd.Core.Application
{ {
var AgvMessage = new var AgvMessage = new
{ {
reqCode= _snowId.NextId().ToString(), reqCode = _snowId.NextId().ToString(),
robots=new string[] {agvStopOrStart.AgvCode} robots = new string[] { agvStopOrStart.AgvCode }
}; };
string result = HttpHelper.SendPostMessage(Ip, Port, "rcms/services/rest/hikRpcService/stopRobot", AgvMessage.ToJsonString()); string result = HttpHelper.SendPostMessage(Ip, Port, "rcms/services/rest/hikRpcService/stopRobot", AgvMessage.ToJsonString());
ReponseMessage reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result); ReponseMessage reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);

@ -88,6 +88,10 @@ namespace Khd.Core.Plc
{ {
return Convert.ToBoolean(value); return Convert.ToBoolean(value);
} }
if (len == "12")
{
return Convert.ToSingle(value);
}
throw new ArgumentException("StaticPlcHelper Ex len is not support"); throw new ArgumentException("StaticPlcHelper Ex len is not support");
} }
} }

@ -542,11 +542,15 @@ namespace Khd.Core.Wcs.Wcs
{ {
try try
{ {
bool isCreate = false;
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
bool canCreate = dbContext.WcsTask.Where(t => t.nextPointId == 9).Where(t => t.taskStatus < 5).Any(); bool canCreate = dbContext.WcsTask.Where(t => t.nextPointId == 9)
.Where(t => t.useFlag == 1)
.Where(t => t.taskStatus <= 6).Any();
if (!canCreate) if (!canCreate)
{ {
BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 35); BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 35);
#region 原逻辑
//if (baseEquip.emptyCount == (SystemData.maxTray / 2)) //if (baseEquip.emptyCount == (SystemData.maxTray / 2))
//{ //{
// var endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 1 && t.emptyCount == (SystemData.maxTray / 2)); // var endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 1 && t.emptyCount == (SystemData.maxTray / 2));
@ -618,6 +622,7 @@ namespace Khd.Core.Wcs.Wcs
// } // }
//} //}
//else //else
#endregion
if (baseEquip.emptyCount == SystemData.maxTray)//达到最大值 if (baseEquip.emptyCount == SystemData.maxTray)//达到最大值
{ {
var endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 0 && t.emptyCount == 0);//找周转区 var endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 0 && t.emptyCount == 0);//找周转区
@ -651,6 +656,80 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Add(wcsTask); dbContext.Add(wcsTask);
dbContext.Add(wcsTaskLog); dbContext.Add(wcsTaskLog);
dbContext.SaveChanges(); dbContext.SaveChanges();
isCreate = true;
}
}
if (!isCreate)
{
var emptyEquip = dbContext.BaseEquip.Where(t => t.equipType == 15).Where(t => t.emptyCount == SystemData.maxTray).ToList();
var secondEmptyEquip = dbContext.BaseEquip.Where(t => t.equipType == 20).Where(t => t.emptyCount == 0).ToList();
if (emptyEquip.Count >= 2 && secondEmptyEquip.Count >= 4)//二楼空库位多余4个三楼空库位大于4个
{
BaseEquip startEquip = emptyEquip.First();
WcsTask wcsTask = new WcsTask()
{
objid = StaticData.SnowId.NextId(),
serialNo = SystemData.GetSerialNo(dbContext),
taskType = 101,
nextPointId = agvEquip.objid,
nextPointNo = agvEquip.equipNo,
currPointId = startEquip.objid,
currPointNo = startEquip.equipNo,
endPointId = secondEmptyEquip.First().objid,
endPointNo = secondEmptyEquip.First().equipNo,
equipmentNo = agvEquip.equipNo,
useFlag = 1,
qty = startEquip.emptyCount,
isEmpty = "1",
taskStatus = 0,
createBy = "WCS",
createTime = DateTime.Now,
floorNo = 2,
fromFloorNo = 3,
masterId = 0,
orderId = 0,
materialId = 0,
};
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
dbContext.Add(wcsTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
}
else if (emptyEquip.Count == 3&& secondEmptyEquip.Count >= 2)
{
BaseEquip startEquip = emptyEquip.First();
WcsTask wcsTask = new WcsTask()
{
objid = StaticData.SnowId.NextId(),
serialNo = SystemData.GetSerialNo(dbContext),
taskType = 101,
nextPointId = agvEquip.objid,
nextPointNo = agvEquip.equipNo,
currPointId = startEquip.objid,
currPointNo = startEquip.equipNo,
endPointId = secondEmptyEquip.First().objid,
endPointNo = secondEmptyEquip.First().equipNo,
equipmentNo = agvEquip.equipNo,
useFlag = 1,
qty = startEquip.emptyCount,
isEmpty = "1",
taskStatus = 0,
createBy = "WCS",
createTime = DateTime.Now,
floorNo = 2,
fromFloorNo = 3,
masterId = 0,
orderId = 0,
materialId = 0,
};
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
dbContext.Add(wcsTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
}
else
{
//报警
} }
} }
} }

@ -127,7 +127,7 @@ namespace Khd.Core.Wcs.Wcs
BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == item.nextPointId); BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == item.nextPointId);
if (!string.IsNullOrEmpty(item.taskCode) && !string.IsNullOrEmpty(agvEquip.serverIp)) if (!string.IsNullOrEmpty(item.taskCode) && !string.IsNullOrEmpty(agvEquip.serverIp))
{ {
if(item.endPointId== 11) if (item.endPointId == 11)
{ {
dbContext.WcsTask.Remove(item); dbContext.WcsTask.Remove(item);
if (item.taskStatus == 6) if (item.taskStatus == 6)
@ -329,16 +329,86 @@ namespace Khd.Core.Wcs.Wcs
{ {
try try
{ {
FiveAgvStatusLogic(); try
SecondAgvLogic(); {
ThirdAgvLogic(); FiveAgvStatusLogic();
SendTrayMessage(); }
HositerLogic(); catch
CtuLineLogic(); {
FiveAgvLogic();
FiveBearAgvLogic(); }
CtuCmdLogic(); try
UpdatePlcPointValue(); {
SecondAgvLogic();
}
catch
{
}
try
{
ThirdAgvLogic();
}
catch
{
}
try
{
SendTrayMessage();
}
catch
{
}
try
{
HositerLogic();
}
catch
{
}
try
{
CtuLineLogic();
}
catch
{
}
try
{
FiveAgvLogic();
}
catch
{
}
try
{
FiveBearAgvLogic();
}
catch
{
}
try
{
CtuCmdLogic();
}
catch
{
}
try
{
UpdatePlcPointValue();
}
catch
{
}
} }
catch (Exception ex) catch (Exception ex)
{ {

@ -1976,7 +1976,7 @@
</StackPanel> </StackPanel>
</TabItem> </TabItem>
<TabItem Visibility="Collapsed" x:Name="ScanReturnManager" Header="扫描退库" Style="{StaticResource DefaultItem}" FontSize="25" HorizontalContentAlignment="Center" Background="#213269" VerticalContentAlignment="Center" Foreground="White" Width="160" Height="100" Margin="5"> <TabItem x:Name="ScanReturnManager" Header="扫描退库" Style="{StaticResource DefaultItem}" FontSize="25" HorizontalContentAlignment="Center" Background="#213269" VerticalContentAlignment="Center" Foreground="White" Width="160" Height="100" Margin="5">
<StackPanel Height="1060" Width="1703" Background="#213269" Canvas.Left="175" Canvas.Top="110" Orientation="Horizontal"> <StackPanel Height="1060" Width="1703" Background="#213269" Canvas.Left="175" Canvas.Top="110" Orientation="Horizontal">
<StackPanel Orientation="Horizontal" Width="1750"> <StackPanel Orientation="Horizontal" Width="1750">
<StackPanel Orientation="Vertical" Margin="20,5,0,0"> <StackPanel Orientation="Vertical" Margin="20,5,0,0">

Loading…
Cancel
Save