@ -13,7 +13,7 @@ namespace Khd.Core.Wcs.Wcs
{
{
public class SystemTimer
public class SystemTimer
{
{
private readonly LoggerUtils _logger = new LoggerUtils ( ) ;
private readonly LoggerUtils _logger = new ( ) ;
private readonly IHost host ;
private readonly IHost host ;
public SystemTimer ( IHost host )
public SystemTimer ( IHost host )
@ -70,8 +70,7 @@ namespace Khd.Core.Wcs.Wcs
/// <summary>
/// <summary>
/// 定时清除日志文件
/// 定时清除日志文件
/// </summary>
/// </summary>
/// <param name="obj"></param>
private void DeleteLogsLogic ( )
private void DeleteLogsLogic ( object? obj )
{
{
while ( true )
while ( true )
{
{
@ -108,8 +107,7 @@ namespace Khd.Core.Wcs.Wcs
/// <summary>
/// <summary>
/// 删除任务
/// 删除任务
/// </summary>
/// </summary>
/// <param name="obj"></param>
private void DeleteTaskLogic ( )
private void DeleteTaskLogic ( object? obj )
{
{
using var scope = host . Services . CreateScope ( ) ;
using var scope = host . Services . CreateScope ( ) ;
using var dbContext = scope . ServiceProvider . GetRequiredService < DefaultDbContext > ( ) ;
using var dbContext = scope . ServiceProvider . GetRequiredService < DefaultDbContext > ( ) ;
@ -188,7 +186,10 @@ namespace Khd.Core.Wcs.Wcs
}
}
}
}
private void PlcHearBeat220Logic ( object? obj )
/// <summary>
/// 定时发送心跳包
/// </summary>
private void PlcHearBeat220Logic ( )
{
{
BasePlcpoint HeartBeat30 = StaticData . BasePlcpointList . First ( t = > t . plcpointNo = = "putTray" ) ;
BasePlcpoint HeartBeat30 = StaticData . BasePlcpointList . First ( t = > t . plcpointNo = = "putTray" ) ;
while ( true )
while ( true )
@ -216,8 +217,7 @@ namespace Khd.Core.Wcs.Wcs
/// <summary>
/// <summary>
/// 定时发送心跳包
/// 定时发送心跳包
/// </summary>
/// </summary>
/// <param name="obj"></param>
private void PlcHeartBeat30Logic ( )
private void PlcHeartBeat30Logic ( object? obj )
{
{
BasePlcpoint HeartBeat30 = StaticData . BasePlcpointList . First ( t = > t . plcpointNo = = "HeartBeat30" ) ;
BasePlcpoint HeartBeat30 = StaticData . BasePlcpointList . First ( t = > t . plcpointNo = = "HeartBeat30" ) ;
bool heartBeatCount = false ;
bool heartBeatCount = false ;
@ -247,8 +247,7 @@ namespace Khd.Core.Wcs.Wcs
/// <summary>
/// <summary>
/// 定时发送心跳包
/// 定时发送心跳包
/// </summary>
/// </summary>
/// <param name="obj"></param>
private void PlcHeartBeat31Logic ( )
private void PlcHeartBeat31Logic ( object? obj )
{
{
BasePlcpoint HeartBeat31 = StaticData . BasePlcpointList . First ( t = > t . plcpointNo = = "CTUHeart" ) ;
BasePlcpoint HeartBeat31 = StaticData . BasePlcpointList . First ( t = > t . plcpointNo = = "CTUHeart" ) ;
bool heartBeatCount = false ;
bool heartBeatCount = false ;
@ -285,8 +284,7 @@ namespace Khd.Core.Wcs.Wcs
/// <summary>
/// <summary>
/// 定时更新基础设备信息
/// 定时更新基础设备信息
/// </summary>
/// </summary>
/// <param name="obj"></param>
private void BaseEquipLogic ( )
private void BaseEquipLogic ( object? obj )
{
{
using var scope = host . Services . CreateScope ( ) ;
using var scope = host . Services . CreateScope ( ) ;
using var dbContext = scope . ServiceProvider . GetRequiredService < DefaultDbContext > ( ) ;
using var dbContext = scope . ServiceProvider . GetRequiredService < DefaultDbContext > ( ) ;
@ -318,110 +316,28 @@ namespace Khd.Core.Wcs.Wcs
/// <summary>
/// <summary>
/// 定时同步消息
/// 定时同步消息
/// </summary>
/// </summary>
/// <param name="obj"></param>
private void MessageSynchronousLogic ( )
private void MessageSynchronousLogic ( object? obj )
{
{
while ( true )
while ( true )
{
try
{
try
{
{
FiveAgvStatusLogic ( ) ;
FiveAgvStatusLogic ( ) ;
}
catch
{
}
try
{
SecondAgvLogic ( ) ;
SecondAgvLogic ( ) ;
}
catch
{
}
try
{
ThirdAgvLogic ( ) ;
ThirdAgvLogic ( ) ;
}
catch
{
}
try
{
SendTrayMessage ( ) ;
SendTrayMessage ( ) ;
}
catch
{
}
try
{
HositerLogic ( ) ;
HositerLogic ( ) ;
}
catch
{
}
try
{
CtuLineLogic ( ) ;
CtuLineLogic ( ) ;
}
catch
{
}
try
{
FiveAgvLogic ( ) ;
FiveAgvLogic ( ) ;
}
catch
{
}
try
{
FiveBearAgvLogic ( ) ;
FiveBearAgvLogic ( ) ;
}
catch
{
}
try
{
CtuCmdLogic ( ) ;
CtuCmdLogic ( ) ;
}
catch
{
}
try
{
UpdatePlcPointValue ( ) ;
UpdatePlcPointValue ( ) ;
}
BasePlcPointUpdateLogic ( ) ;
catch
Thread . Sleep ( 3000 ) ;
{
}
}
catch ( Exception ex )
{
if ( ex is PlcException )
{
}
else
{
_logger . Error ( ex . Message + "\n" + ex . StackTrace ) ;
}
}
Thread . Sleep ( 1000 ) ;
}
}
}
}
/// <summary>
/// 五楼AGV状态
/// </summary>
private void FiveAgvStatusLogic ( )
private void FiveAgvStatusLogic ( )
{
{
try
try
@ -456,7 +372,48 @@ namespace Khd.Core.Wcs.Wcs
}
}
}
}
/// <summary>
/// 获取Plc的值
/// </summary>
private void BasePlcPointUpdateLogic ( )
{
try
{
using var scope = host . Services . CreateScope ( ) ;
using var dbContext = scope . ServiceProvider . GetRequiredService < DefaultDbContext > ( ) ;
List < Plc . S7 . Plc > plcs = StaticData . PlcDic . Values . ToList ( ) ;
foreach ( var item in StaticData . BasePlcpointList . Where ( t = > ! string . IsNullOrEmpty ( t . plcpointAddress ) ) )
{
if ( ! string . IsNullOrEmpty ( item . plcpointAddress ) )
{
try
{
if ( item . plcpointNo . Contains ( "RFID" ) )
item . definefield1 = plcs . Where ( t = > t . IP = = item . definefield3 ) . First ( ) . ReadRFID ( item . plcpointAddress ) ? . ToString ( ) ;
else
item . definefield1 = plcs . Where ( t = > t . IP = = item . definefield1 ) . First ( ) . Read ( item . plcpointAddress ) ? . ToString ( ) ;
}
catch
{
}
}
}
dbContext . UpdateRange ( StaticData . BasePlcpointList . Where ( t = > ! string . IsNullOrEmpty ( t . plcpointAddress ) ) ) ;
dbContext . SaveChanges ( ) ;
}
catch
{
}
}
/// <summary>
/// 托盘库
/// </summary>
private void SendTrayMessage ( )
private void SendTrayMessage ( )
{
try
{
{
using var scope = host . Services . CreateScope ( ) ;
using var scope = host . Services . CreateScope ( ) ;
using var dbContext = scope . ServiceProvider . GetRequiredService < DefaultDbContext > ( ) ;
using var dbContext = scope . ServiceProvider . GetRequiredService < DefaultDbContext > ( ) ;
@ -487,7 +444,15 @@ namespace Khd.Core.Wcs.Wcs
StaticData . PlcDic [ 2 ] . WriteToPoint ( basePlc . Address , value , basePlc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( basePlc . Address , value , basePlc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( basePlc2 . Address , baseEquip . emptyCount . ToString ( ) , basePlc2 . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( basePlc2 . Address , baseEquip . emptyCount . ToString ( ) , basePlc2 . type ) ;
}
}
catch
{
}
}
/// <summary>
/// 修改Plc点位信息
/// </summary>
private void UpdatePlcPointValue ( )
private void UpdatePlcPointValue ( )
{
{
try
try
@ -510,7 +475,6 @@ namespace Khd.Core.Wcs.Wcs
/// <summary>
/// <summary>
/// 定时更新三楼AGV信息
/// 定时更新三楼AGV信息
/// </summary>
/// </summary>
/// <param name="dbContext"></param>
private void ThirdAgvLogic ( )
private void ThirdAgvLogic ( )
{
{
try
try
@ -550,7 +514,6 @@ namespace Khd.Core.Wcs.Wcs
/// <summary>
/// <summary>
/// 定时更新二楼AGV信息
/// 定时更新二楼AGV信息
/// </summary>
/// </summary>
/// <param name="dbContext"></param>
private void SecondAgvLogic ( )
private void SecondAgvLogic ( )
{
{
try
try
@ -590,25 +553,25 @@ namespace Khd.Core.Wcs.Wcs
/// <summary>
/// <summary>
/// 定时更新五楼AGV信息
/// 定时更新五楼AGV信息
/// </summary>
/// </summary>
/// <param name="dbContext"></param>
private void FiveAgvLogic ( )
private void FiveAgvLogic ( )
{
try
{
{
using var scope = host . Services . CreateScope ( ) ;
using var scope = host . Services . CreateScope ( ) ;
using var dbContext = scope . ServiceProvider . GetRequiredService < DefaultDbContext > ( ) ;
using var dbContext = scope . ServiceProvider . GetRequiredService < DefaultDbContext > ( ) ;
var baseEquip = StaticData . BaseEquip . First ( t = > t . objid = = 10 ) ;
var baseEquip = StaticData . BaseEquip . First ( t = > t . objid = = 28 ) ;
dbContext . ChangeTracker . Entries ( ) . ToList ( ) . ForEach ( e = > e . Reload ( ) ) ;
dbContext . ChangeTracker . Entries ( ) . ToList ( ) . ForEach ( e = > e . Reload ( ) ) ;
var basePlcs = StaticData . basePlcs . Where ( t = > t . Station = = "5楼AGV" ) . ToList ( ) ;
var basePlcs = StaticData . basePlcs . Where ( t = > t . Station = = "5楼AGV" ) . ToList ( ) ;
List < int? > type = new List < int? > ( ) { 27 , 28 , 34 , 35 , 37 , 38 , 46 , 47 } ;
var wcsCmds = dbContext . WcsTask . Where ( t = > t . nextPointId = = 28 ) . ToList ( ) ;
var wcsCmds = dbContext . WcsCmd . Where ( t = > type . Contains ( t . cmdType ) ) . ToList ( ) ;
if ( wcsCmds . Count > 0 )
if ( wcsCmds . Count > 0 )
{
{
WcsCmd wcsCmd = wcsCmds . First ( ) ;
var wcsCmd = wcsCmds . First ( ) ;
var endPlc = basePlcs . Where ( t = > t . Name . Contains ( "目的地" ) ) . First ( ) ;
var endPlc = basePlcs . Where ( t = > t . Name . Contains ( "目的地" ) ) . First ( ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( endPlc . Address , wcsCmd . nextPointId . ToString ( ) , endPlc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( endPlc . Address , wcsCmd . nextPointId . ToString ( ) , endPlc . type ) ;
var startPlc = basePlcs . First ( t = > t . Name . Contains ( "起始点" ) ) ;
var startPlc = basePlcs . First ( t = > t . Name . Contains ( "起始点" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( startPlc . Address , wcsCmd . currPointId . ToString ( ) , startPlc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( startPlc . Address , wcsCmd . currPointId . ToString ( ) , startPlc . type ) ;
var cmdPlc = basePlcs . First ( t = > t . Name . Contains ( "任务代号" ) ) ;
var cmdPlc = basePlcs . First ( t = > t . Name . Contains ( "任务代号" ) ) ;
string cmdType = StaticData . BaseDictionary . First ( t = > t . objid = = wcsCmd . cmd Type) . ToPlc ;
string cmdType = StaticData . BaseDictionary . First ( t = > t . objid = = wcsCmd . task Type) . ToPlc ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , cmdType , cmdPlc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , cmdType , cmdPlc . type ) ;
}
}
else
else
@ -658,28 +621,33 @@ namespace Khd.Core.Wcs.Wcs
StaticData . PlcDic [ 2 ] . WriteToPoint ( Ylc . Address , cardStatus . PosY . ToString ( ) , Ylc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( Ylc . Address , cardStatus . PosY . ToString ( ) , Ylc . type ) ;
}
}
}
}
catch
{
}
}
/// <summary>
/// <summary>
/// 定时更新五楼背负式AGV信息
/// 定时更新五楼背负式AGV信息
/// </summary>
/// </summary>
/// <param name="dbContext"></param>
private void FiveBearAgvLogic ( )
private void FiveBearAgvLogic ( )
{
try
{
{
using var scope = host . Services . CreateScope ( ) ;
using var scope = host . Services . CreateScope ( ) ;
using var dbContext = scope . ServiceProvider . GetRequiredService < DefaultDbContext > ( ) ;
using var dbContext = scope . ServiceProvider . GetRequiredService < DefaultDbContext > ( ) ;
var baseEquip = StaticData . BaseEquip . First ( t = > t . objid = = 10 ) ;
dbContext . ChangeTracker . Entries ( ) . ToList ( ) . ForEach ( e = > e . Reload ( ) ) ;
dbContext . ChangeTracker . Entries ( ) . ToList ( ) . ForEach ( e = > e . Reload ( ) ) ;
var basePlcs = StaticData . basePlcs . Where ( t = > t . Station = = "5楼背负式" ) . ToList ( ) ;
var basePlcs = StaticData . basePlcs . Where ( t = > t . Station = = "5楼背负式" ) . ToList ( ) ;
var wcsCmds = dbContext . Wcs Cmd. Where ( t = > t . cmdType = = 32 | | t . cmdType = = 48 ) . ToList ( ) ;
var wcsCmds = dbContext . Wcs Task. Where ( t = > t . nextPointId = = 10 ) . ToList ( ) ;
if ( wcsCmds . Count > 0 )
if ( wcsCmds . Count > 0 )
{
{
WcsCmd wcsCmd = wcsCmds . First ( ) ;
var wcsCmd = wcsCmds . First ( ) ;
var endPlc = basePlcs . Where ( t = > t . Name . Contains ( "目的地" ) ) . First ( ) ;
var endPlc = basePlcs . Where ( t = > t . Name . Contains ( "目的地" ) ) . First ( ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( endPlc . Address , wcsCmd . nextPointId . ToString ( ) , endPlc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( endPlc . Address , wcsCmd . nextPointId . ToString ( ) , endPlc . type ) ;
var startPlc = basePlcs . First ( t = > t . Name . Contains ( "起始点" ) ) ;
var startPlc = basePlcs . First ( t = > t . Name . Contains ( "起始点" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( startPlc . Address , wcsCmd . currPointId . ToString ( ) , startPlc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( startPlc . Address , wcsCmd . currPointId . ToString ( ) , startPlc . type ) ;
var cmdPlc = basePlcs . First ( t = > t . Name . Contains ( "任务代号" ) ) ;
var cmdPlc = basePlcs . First ( t = > t . Name . Contains ( "任务代号" ) ) ;
string cmdType = StaticData . BaseDictionary . First ( t = > t . objid = = wcsCmd . cmd Type) . ToPlc ;
string cmdType = StaticData . BaseDictionary . First ( t = > t . objid = = wcsCmd . task Type) . ToPlc ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , cmdType , cmdPlc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , cmdType , cmdPlc . type ) ;
}
}
else
else
@ -692,25 +660,31 @@ namespace Khd.Core.Wcs.Wcs
StaticData . PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , "0" , cmdPlc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , "0" , cmdPlc . type ) ;
}
}
}
}
catch
{
}
}
/// <summary>
/// <summary>
/// 定时更新五楼CTU信息
/// 定时更新五楼CTU信息
/// </summary>
/// </summary>
/// <param name="dbContext"></param>
private void CtuCmdLogic ( )
private void CtuCmdLogic ( )
{
try
{
{
using var scope = host . Services . CreateScope ( ) ;
using var scope = host . Services . CreateScope ( ) ;
using var dbContext = scope . ServiceProvider . GetRequiredService < DefaultDbContext > ( ) ;
using var dbContext = scope . ServiceProvider . GetRequiredService < DefaultDbContext > ( ) ;
var baseEquip = StaticData . BaseEquip . First ( t = > t . objid = = 11 ) ;
var baseEquip = StaticData . BaseEquip . First ( t = > t . objid = = 11 ) ;
dbContext . ChangeTracker . Entries ( ) . ToList ( ) . ForEach ( e = > e . Reload ( ) ) ;
dbContext . ChangeTracker . Entries ( ) . ToList ( ) . ForEach ( e = > e . Reload ( ) ) ;
var basePlcs = StaticData . basePlcs . Where ( t = > t . Station = = "5楼CTU" ) . ToList ( ) ;
var basePlcs = StaticData . basePlcs . Where ( t = > t . Station = = "5楼CTU" ) . ToList ( ) ;
var wcsCmds = dbContext . Wcs Cmd. Where ( t = > t . cmdType = = 29 | | t . cmdType = = 30 | | t . cmdType = = 3 1) . ToList ( ) ;
var wcsCmds = dbContext . Wcs Task. Where ( t = > t . nextPointId = = 1 1) . ToList ( ) ;
if ( wcsCmds . Count > 0 )
if ( wcsCmds . Count > 0 )
{
{
var wcsCmd = wcsCmds . First ( ) ;
var wcsCmd = wcsCmds . First ( ) ;
List < long? > startList = new List < long? > ( ) ;
List < long? > startList = new List < long? > ( ) ;
List < long? > endList = new List < long? > ( ) ;
List < long? > endList = new List < long? > ( ) ;
if ( wcsCmd . cmd Type ! = 30 )
if ( wcsCmd . task Type ! = 30 )
{
{
startList . Add ( wcsCmd . currPointId ) ;
startList . Add ( wcsCmd . currPointId ) ;
endList . AddRange ( wcsCmds . Select ( t = > t . nextPointId ) . ToList ( ) ) ;
endList . AddRange ( wcsCmds . Select ( t = > t . nextPointId ) . ToList ( ) ) ;
@ -732,7 +706,7 @@ namespace Khd.Core.Wcs.Wcs
var startPlc = basePlcs . First ( t = > t . Name . Contains ( "起始点" ) ) ;
var startPlc = basePlcs . First ( t = > t . Name . Contains ( "起始点" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( startPlc . Address , wcsCmd . currPointId . ToString ( ) , startPlc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( startPlc . Address , wcsCmd . currPointId . ToString ( ) , startPlc . type ) ;
var cmdPlc = basePlcs . First ( t = > t . Name . Contains ( "任务代号" ) ) ;
var cmdPlc = basePlcs . First ( t = > t . Name . Contains ( "任务代号" ) ) ;
string cmdType = StaticData . BaseDictionary . First ( t = > t . objid = = wcsCmd . cmd Type) . ToPlc ;
string cmdType = StaticData . BaseDictionary . First ( t = > t . objid = = wcsCmd . task Type) . ToPlc ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , cmdType , cmdPlc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , cmdType , cmdPlc . type ) ;
}
}
@ -749,11 +723,18 @@ namespace Khd.Core.Wcs.Wcs
StaticData . PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , "0" , cmdPlc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , "0" , cmdPlc . type ) ;
}
}
}
}
catch
{
}
}
/// <summary>
/// <summary>
/// 定时更新五楼U型线信息
/// 定时更新五楼U型线信息
/// </summary>
/// </summary>
private void CtuLineLogic ( )
private void CtuLineLogic ( )
{
try
{
{
var basePlcpoints = StaticData . BasePlcpointList . ToList ( ) ;
var basePlcpoints = StaticData . BasePlcpointList . ToList ( ) ;
var basePlcs = StaticData . basePlcs . ToList ( ) ;
var basePlcs = StaticData . basePlcs . ToList ( ) ;
@ -790,13 +771,19 @@ namespace Khd.Core.Wcs.Wcs
}
}
}
}
}
}
catch
{
}
}
/// <summary>
/// <summary>
/// 提升机和接驳位信息同步
/// 提升机和接驳位信息同步
/// </summary>
/// </summary>
private void HositerLogic ( )
private void HositerLogic ( )
{
{
try
{
var basePlcpoints = StaticData . BasePlcpointList . ToList ( ) ;
var basePlcpoints = StaticData . BasePlcpointList . ToList ( ) ;
var basePlcs = StaticData . basePlcs . ToList ( ) ;
var basePlcs = StaticData . basePlcs . ToList ( ) ;
var bill = from a in basePlcpoints
var bill = from a in basePlcpoints
@ -832,6 +819,11 @@ namespace Khd.Core.Wcs.Wcs
}
}
}
}
}
}
catch
{
}
}
}
}
}
}