@ -13,7 +13,7 @@ namespace Khd.Core.Wcs.Wcs
{
public class SystemTimer
{
private readonly LoggerUtils _logger = new LoggerUtils ( ) ;
private readonly LoggerUtils _logger = new ( ) ;
private readonly IHost host ;
public SystemTimer ( IHost host )
@ -70,8 +70,7 @@ namespace Khd.Core.Wcs.Wcs
/// <summary>
/// 定时清除日志文件
/// </summary>
/// <param name="obj"></param>
private void DeleteLogsLogic ( object? obj )
private void DeleteLogsLogic ( )
{
while ( true )
{
@ -108,8 +107,7 @@ namespace Khd.Core.Wcs.Wcs
/// <summary>
/// 删除任务
/// </summary>
/// <param name="obj"></param>
private void DeleteTaskLogic ( object? obj )
private void DeleteTaskLogic ( )
{
using var scope = host . Services . CreateScope ( ) ;
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" ) ;
while ( true )
@ -216,8 +217,7 @@ namespace Khd.Core.Wcs.Wcs
/// <summary>
/// 定时发送心跳包
/// </summary>
/// <param name="obj"></param>
private void PlcHeartBeat30Logic ( object? obj )
private void PlcHeartBeat30Logic ( )
{
BasePlcpoint HeartBeat30 = StaticData . BasePlcpointList . First ( t = > t . plcpointNo = = "HeartBeat30" ) ;
bool heartBeatCount = false ;
@ -247,8 +247,7 @@ namespace Khd.Core.Wcs.Wcs
/// <summary>
/// 定时发送心跳包
/// </summary>
/// <param name="obj"></param>
private void PlcHeartBeat31Logic ( object? obj )
private void PlcHeartBeat31Logic ( )
{
BasePlcpoint HeartBeat31 = StaticData . BasePlcpointList . First ( t = > t . plcpointNo = = "CTUHeart" ) ;
bool heartBeatCount = false ;
@ -285,8 +284,7 @@ namespace Khd.Core.Wcs.Wcs
/// <summary>
/// 定时更新基础设备信息
/// </summary>
/// <param name="obj"></param>
private void BaseEquipLogic ( object? obj )
private void BaseEquipLogic ( )
{
using var scope = host . Services . CreateScope ( ) ;
using var dbContext = scope . ServiceProvider . GetRequiredService < DefaultDbContext > ( ) ;
@ -318,110 +316,28 @@ namespace Khd.Core.Wcs.Wcs
/// <summary>
/// 定时同步消息
/// </summary>
/// <param name="obj"></param>
private void MessageSynchronousLogic ( object? obj )
private void MessageSynchronousLogic ( )
{
while ( true )
{
try
{
try
{
FiveAgvStatusLogic ( ) ;
}
catch
{
}
try
{
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 )
{
if ( ex is PlcException )
{
}
else
{
_logger . Error ( ex . Message + "\n" + ex . StackTrace ) ;
}
}
Thread . Sleep ( 1000 ) ;
FiveAgvStatusLogic ( ) ;
SecondAgvLogic ( ) ;
ThirdAgvLogic ( ) ;
SendTrayMessage ( ) ;
HositerLogic ( ) ;
CtuLineLogic ( ) ;
FiveAgvLogic ( ) ;
FiveBearAgvLogic ( ) ;
CtuCmdLogic ( ) ;
UpdatePlcPointValue ( ) ;
BasePlcPointUpdateLogic ( ) ;
Thread . Sleep ( 3000 ) ;
}
}
/// <summary>
/// 五楼AGV状态
/// </summary>
private void FiveAgvStatusLogic ( )
{
try
@ -456,38 +372,87 @@ namespace Khd.Core.Wcs.Wcs
}
}
private void SendTrayMessage ( )
/// <summary>
/// 获取Plc的值
/// </summary>
private void BasePlcPointUpdateLogic ( )
{
using var scope = host . Services . CreateScope ( ) ;
using var dbContext = scope . ServiceProvider . GetRequiredService < DefaultDbContext > ( ) ;
BaseEquip baseEquip = dbContext . BaseEquip . First ( t = > t . objid = = 40 ) ;
BasePlcpoint oneInPoint = StaticData . BasePlcpointList . First ( t = > t . plcpointNo = = "oneIn" ) ;
BasePlcpoint oneOutPoint = StaticData . BasePlcpointList . First ( t = > t . plcpointNo = = "oneOut" ) ;
BasePlcpoint someOutPoint = StaticData . BasePlcpointList . First ( t = > t . plcpointNo = = "someOut" ) ;
BasePlcpoint someInPoint = StaticData . BasePlcpointList . First ( t = > t . plcpointNo = = "someIn" ) ;
BasePlc basePlc = StaticData . basePlcs . First ( t = > t . Name = = "托盘库去向" ) ;
BasePlc basePlc2 = StaticData . basePlcs . First ( t = > t . Name = = "托盘库数量" ) ;
string? value = "0" ;
if ( StaticData . PlcDic [ 0 ] . Read ( oneInPoint . plcpointAddress ) ? . ToString ( ) = = "1" )
try
{
value = "1" ;
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 ( ) ;
}
else if ( StaticData . PlcDic [ 0 ] . Read ( oneOutPoint . plcpointAddress ) ? . ToString ( ) = = "1" )
catch
{
value = "2" ;
}
else if ( StaticData . PlcDic [ 0 ] . Read ( someOutPoint . plcpointAddress ) ? . ToString ( ) = = "1" )
{
value = "3" ;
}
else if ( StaticData . PlcDic [ 0 ] . Read ( someInPoint . plcpointAddress ) ? . ToString ( ) = = "1" )
{
value = "4" ;
}
StaticData . PlcDic [ 2 ] . WriteToPoint ( basePlc . Address , value , basePlc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( basePlc2 . Address , baseEquip . emptyCount . ToString ( ) , basePlc2 . type ) ;
}
/// <summary>
/// 托盘库
/// </summary>
private void SendTrayMessage ( )
{
try
{
using var scope = host . Services . CreateScope ( ) ;
using var dbContext = scope . ServiceProvider . GetRequiredService < DefaultDbContext > ( ) ;
BaseEquip baseEquip = dbContext . BaseEquip . First ( t = > t . objid = = 40 ) ;
BasePlcpoint oneInPoint = StaticData . BasePlcpointList . First ( t = > t . plcpointNo = = "oneIn" ) ;
BasePlcpoint oneOutPoint = StaticData . BasePlcpointList . First ( t = > t . plcpointNo = = "oneOut" ) ;
BasePlcpoint someOutPoint = StaticData . BasePlcpointList . First ( t = > t . plcpointNo = = "someOut" ) ;
BasePlcpoint someInPoint = StaticData . BasePlcpointList . First ( t = > t . plcpointNo = = "someIn" ) ;
BasePlc basePlc = StaticData . basePlcs . First ( t = > t . Name = = "托盘库去向" ) ;
BasePlc basePlc2 = StaticData . basePlcs . First ( t = > t . Name = = "托盘库数量" ) ;
string? value = "0" ;
if ( StaticData . PlcDic [ 0 ] . Read ( oneInPoint . plcpointAddress ) ? . ToString ( ) = = "1" )
{
value = "1" ;
}
else if ( StaticData . PlcDic [ 0 ] . Read ( oneOutPoint . plcpointAddress ) ? . ToString ( ) = = "1" )
{
value = "2" ;
}
else if ( StaticData . PlcDic [ 0 ] . Read ( someOutPoint . plcpointAddress ) ? . ToString ( ) = = "1" )
{
value = "3" ;
}
else if ( StaticData . PlcDic [ 0 ] . Read ( someInPoint . plcpointAddress ) ? . ToString ( ) = = "1" )
{
value = "4" ;
}
StaticData . PlcDic [ 2 ] . WriteToPoint ( basePlc . Address , value , basePlc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( basePlc2 . Address , baseEquip . emptyCount . ToString ( ) , basePlc2 . type ) ;
}
catch
{
}
}
/// <summary>
/// 修改Plc点位信息
/// </summary>
private void UpdatePlcPointValue ( )
{
try
@ -510,7 +475,6 @@ namespace Khd.Core.Wcs.Wcs
/// <summary>
/// 定时更新三楼AGV信息
/// </summary>
/// <param name="dbContext"></param>
private void ThirdAgvLogic ( )
{
try
@ -550,7 +514,6 @@ namespace Khd.Core.Wcs.Wcs
/// <summary>
/// 定时更新二楼AGV信息
/// </summary>
/// <param name="dbContext"></param>
private void SecondAgvLogic ( )
{
try
@ -590,163 +553,179 @@ namespace Khd.Core.Wcs.Wcs
/// <summary>
/// 定时更新五楼AGV信息
/// </summary>
/// <param name="dbContext"></param>
private void FiveAgvLogic ( )
{
using var scope = host . Services . CreateScope ( ) ;
using var dbContext = scope . ServiceProvider . GetRequiredService < DefaultDbContext > ( ) ;
var baseEquip = StaticData . BaseEquip . First ( t = > t . objid = = 10 ) ;
dbContext . ChangeTracker . Entries ( ) . ToList ( ) . ForEach ( e = > e . Reload ( ) ) ;
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 . WcsCmd . Where ( t = > type . Contains ( t . cmdType ) ) . ToList ( ) ;
if ( wcsCmds . Count > 0 )
try
{
WcsCmd wcsCmd = wcsCmds . First ( ) ;
var endPlc = basePlcs . Where ( t = > t . Name . Contains ( "目的地" ) ) . First ( ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( endPlc . Address , wcsCmd . nextPointId . ToString ( ) , endPlc . type ) ;
var startPlc = basePlcs . First ( t = > t . Name . Contains ( "起始点" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( startPlc . Address , wcsCmd . currPointId . ToString ( ) , startPlc . type ) ;
var cmdPlc = basePlcs . First ( t = > t . Name . Contains ( "任务代号" ) ) ;
string cmdType = StaticData . BaseDictionary . First ( t = > t . objid = = wcsCmd . cmdType ) . ToPlc ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , cmdType , cmdPlc . type ) ;
using var scope = host . Services . CreateScope ( ) ;
using var dbContext = scope . ServiceProvider . GetRequiredService < DefaultDbContext > ( ) ;
var baseEquip = StaticData . BaseEquip . First ( t = > t . objid = = 28 ) ;
dbContext . ChangeTracker . Entries ( ) . ToList ( ) . ForEach ( e = > e . Reload ( ) ) ;
var basePlcs = StaticData . basePlcs . Where ( t = > t . Station = = "5楼AGV" ) . ToList ( ) ;
var wcsCmds = dbContext . WcsTask . Where ( t = > t . nextPointId = = 28 ) . ToList ( ) ;
if ( wcsCmds . Count > 0 )
{
var wcsCmd = wcsCmds . First ( ) ;
var endPlc = basePlcs . Where ( t = > t . Name . Contains ( "目的地" ) ) . First ( ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( endPlc . Address , wcsCmd . nextPointId . ToString ( ) , endPlc . type ) ;
var startPlc = basePlcs . First ( t = > t . Name . Contains ( "起始点" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( startPlc . Address , wcsCmd . currPointId . ToString ( ) , startPlc . type ) ;
var cmdPlc = basePlcs . First ( t = > t . Name . Contains ( "任务代号" ) ) ;
string cmdType = StaticData . BaseDictionary . First ( t = > t . objid = = wcsCmd . taskType ) . ToPlc ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , cmdType , cmdPlc . type ) ;
}
else
{
var endPlc = basePlcs . Where ( t = > t . Name . Contains ( "目的地" ) ) . First ( ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( endPlc . Address , "0" , endPlc . type ) ;
var startPlc = basePlcs . First ( t = > t . Name . Contains ( "起始点" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( startPlc . Address , "0" , startPlc . type ) ;
var cmdPlc = basePlcs . First ( t = > t . Name . Contains ( "任务代号" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , "0" , cmdPlc . type ) ;
}
var data = new
{
reqCode = StaticData . SnowId . NextId ( ) ,
mapCode = "EE"
} ;
string result = HttpHelper . SendPostMessage ( baseEquip . serverIp , baseEquip . serverPort . Value , "rcms-dps/rest/queryAgvStatus" , data . ToJsonString ( ) ) ;
var reponse = JsonConvert . DeserializeObject < AgvStatusDto > ( result ) ;
if ( reponse ! = null & & reponse . code = = "0" )
{
var cardStatus = reponse . data . First ( t = > t . RobotCode = = "2034" ) ;
var quantityPlc = basePlcs . First ( t = > t . Name . Contains ( "电量" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( quantityPlc . Address , cardStatus . Battery , quantityPlc . type ) ;
var XPlc = basePlcs . First ( t = > t . Name . Contains ( 'X' ) ) ;
var Ylc = basePlcs . First ( t = > t . Name . Contains ( 'Y' ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( XPlc . Address , cardStatus . PosX . ToString ( ) , XPlc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( Ylc . Address , cardStatus . PosY . ToString ( ) , Ylc . type ) ;
basePlcs = StaticData . basePlcs . Where ( t = > t . Station = = "5楼背负式" ) . ToList ( ) ;
cardStatus = reponse . data . First ( t = > t . RobotCode = = "6011" ) ;
quantityPlc = basePlcs . First ( t = > t . Name . Contains ( "电量" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( quantityPlc . Address , cardStatus . Battery , quantityPlc . type ) ;
XPlc = basePlcs . First ( t = > t . Name . Contains ( 'X' ) ) ;
Ylc = basePlcs . First ( t = > t . Name . Contains ( 'Y' ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( XPlc . Address , cardStatus . PosX . ToString ( ) , XPlc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( Ylc . Address , cardStatus . PosY . ToString ( ) , Ylc . type ) ;
basePlcs = StaticData . basePlcs . Where ( t = > t . Station = = "5楼CTU" ) . ToList ( ) ;
cardStatus = reponse . data . First ( t = > t . RobotCode = = "8161" ) ;
quantityPlc = basePlcs . First ( t = > t . Name . Contains ( "电量" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( quantityPlc . Address , cardStatus . Battery , quantityPlc . type ) ;
XPlc = basePlcs . First ( t = > t . Name . Contains ( "X" ) ) ;
Ylc = basePlcs . First ( t = > t . Name . Contains ( "Y" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( XPlc . Address , cardStatus . PosX . ToString ( ) , XPlc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( Ylc . Address , cardStatus . PosY . ToString ( ) , Ylc . type ) ;
}
}
else
catch
{
var endPlc = basePlcs . Where ( t = > t . Name . Contains ( "目的地" ) ) . First ( ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( endPlc . Address , "0" , endPlc . type ) ;
var startPlc = basePlcs . First ( t = > t . Name . Contains ( "起始点" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( startPlc . Address , "0" , startPlc . type ) ;
var cmdPlc = basePlcs . First ( t = > t . Name . Contains ( "任务代号" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , "0" , cmdPlc . type ) ;
}
var data = new
{
reqCode = StaticData . SnowId . NextId ( ) ,
mapCode = "EE"
} ;
string result = HttpHelper . SendPostMessage ( baseEquip . serverIp , baseEquip . serverPort . Value , "rcms-dps/rest/queryAgvStatus" , data . ToJsonString ( ) ) ;
var reponse = JsonConvert . DeserializeObject < AgvStatusDto > ( result ) ;
if ( reponse ! = null & & reponse . code = = "0" )
{
var cardStatus = reponse . data . First ( t = > t . RobotCode = = "2034" ) ;
var quantityPlc = basePlcs . First ( t = > t . Name . Contains ( "电量" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( quantityPlc . Address , cardStatus . Battery , quantityPlc . type ) ;
var XPlc = basePlcs . First ( t = > t . Name . Contains ( 'X' ) ) ;
var Ylc = basePlcs . First ( t = > t . Name . Contains ( 'Y' ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( XPlc . Address , cardStatus . PosX . ToString ( ) , XPlc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( Ylc . Address , cardStatus . PosY . ToString ( ) , Ylc . type ) ;
basePlcs = StaticData . basePlcs . Where ( t = > t . Station = = "5楼背负式" ) . ToList ( ) ;
cardStatus = reponse . data . First ( t = > t . RobotCode = = "6011" ) ;
quantityPlc = basePlcs . First ( t = > t . Name . Contains ( "电量" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( quantityPlc . Address , cardStatus . Battery , quantityPlc . type ) ;
XPlc = basePlcs . First ( t = > t . Name . Contains ( 'X' ) ) ;
Ylc = basePlcs . First ( t = > t . Name . Contains ( 'Y' ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( XPlc . Address , cardStatus . PosX . ToString ( ) , XPlc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( Ylc . Address , cardStatus . PosY . ToString ( ) , Ylc . type ) ;
basePlcs = StaticData . basePlcs . Where ( t = > t . Station = = "5楼CTU" ) . ToList ( ) ;
cardStatus = reponse . data . First ( t = > t . RobotCode = = "8161" ) ;
quantityPlc = basePlcs . First ( t = > t . Name . Contains ( "电量" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( quantityPlc . Address , cardStatus . Battery , quantityPlc . type ) ;
XPlc = basePlcs . First ( t = > t . Name . Contains ( "X" ) ) ;
Ylc = basePlcs . First ( t = > t . Name . Contains ( "Y" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( XPlc . Address , cardStatus . PosX . ToString ( ) , XPlc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( Ylc . Address , cardStatus . PosY . ToString ( ) , Ylc . type ) ;
}
}
/// <summary>
/// 定时更新五楼背负式AGV信息
/// </summary>
/// <param name="dbContext"></param>
private void FiveBearAgvLogic ( )
{
using var scope = host . Services . CreateScope ( ) ;
using var dbContext = scope . ServiceProvider . GetRequiredService < DefaultDbContext > ( ) ;
var baseEquip = StaticData . BaseEquip . First ( t = > t . objid = = 10 ) ;
dbContext . ChangeTracker . Entries ( ) . ToList ( ) . ForEach ( e = > e . Reload ( ) ) ;
var basePlcs = StaticData . basePlcs . Where ( t = > t . Station = = "5楼背负式" ) . ToList ( ) ;
var wcsCmds = dbContext . WcsCmd . Where ( t = > t . cmdType = = 32 | | t . cmdType = = 48 ) . ToList ( ) ;
if ( wcsCmds . Count > 0 )
try
{
WcsCmd wcsCmd = wcsCmds . First ( ) ;
var endPlc = basePlcs . Where ( t = > t . Name . Contains ( "目的地" ) ) . First ( ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( endPlc . Address , wcsCmd . nextPointId . ToString ( ) , endPlc . type ) ;
var startPlc = basePlcs . First ( t = > t . Name . Contains ( "起始点" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( startPlc . Address , wcsCmd . currPointId . ToString ( ) , startPlc . type ) ;
var cmdPlc = basePlcs . First ( t = > t . Name . Contains ( "任务代号" ) ) ;
string cmdType = StaticData . BaseDictionary . First ( t = > t . objid = = wcsCmd . cmdType ) . ToPlc ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , cmdType , cmdPlc . type ) ;
using var scope = host . Services . CreateScope ( ) ;
using var dbContext = scope . ServiceProvider . GetRequiredService < DefaultDbContext > ( ) ;
dbContext . ChangeTracker . Entries ( ) . ToList ( ) . ForEach ( e = > e . Reload ( ) ) ;
var basePlcs = StaticData . basePlcs . Where ( t = > t . Station = = "5楼背负式" ) . ToList ( ) ;
var wcsCmds = dbContext . WcsTask . Where ( t = > t . nextPointId = = 10 ) . ToList ( ) ;
if ( wcsCmds . Count > 0 )
{
var wcsCmd = wcsCmds . First ( ) ;
var endPlc = basePlcs . Where ( t = > t . Name . Contains ( "目的地" ) ) . First ( ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( endPlc . Address , wcsCmd . nextPointId . ToString ( ) , endPlc . type ) ;
var startPlc = basePlcs . First ( t = > t . Name . Contains ( "起始点" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( startPlc . Address , wcsCmd . currPointId . ToString ( ) , startPlc . type ) ;
var cmdPlc = basePlcs . First ( t = > t . Name . Contains ( "任务代号" ) ) ;
string cmdType = StaticData . BaseDictionary . First ( t = > t . objid = = wcsCmd . taskType ) . ToPlc ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , cmdType , cmdPlc . type ) ;
}
else
{
var endPlc = basePlcs . Where ( t = > t . Name . Contains ( "目的地" ) ) . First ( ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( endPlc . Address , "0" , endPlc . type ) ;
var startPlc = basePlcs . First ( t = > t . Name . Contains ( "起始点" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( startPlc . Address , "0" , startPlc . type ) ;
var cmdPlc = basePlcs . First ( t = > t . Name . Contains ( "任务代号" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , "0" , cmdPlc . type ) ;
}
}
else
catch
{
var endPlc = basePlcs . Where ( t = > t . Name . Contains ( "目的地" ) ) . First ( ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( endPlc . Address , "0" , endPlc . type ) ;
var startPlc = basePlcs . First ( t = > t . Name . Contains ( "起始点" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( startPlc . Address , "0" , startPlc . type ) ;
var cmdPlc = basePlcs . First ( t = > t . Name . Contains ( "任务代号" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , "0" , cmdPlc . type ) ;
}
}
/// <summary>
/// 定时更新五楼CTU信息
/// </summary>
/// <param name="dbContext"></param>
private void CtuCmdLogic ( )
{
using var scope = host . Services . CreateScope ( ) ;
using var dbContext = scope . ServiceProvider . GetRequiredService < DefaultDbContext > ( ) ;
var baseEquip = StaticData . BaseEquip . First ( t = > t . objid = = 11 ) ;
dbContext . ChangeTracker . Entries ( ) . ToList ( ) . ForEach ( e = > e . Reload ( ) ) ;
var basePlcs = StaticData . basePlcs . Where ( t = > t . Station = = "5楼CTU" ) . ToList ( ) ;
var wcsCmds = dbContext . WcsCmd . Where ( t = > t . cmdType = = 29 | | t . cmdType = = 30 | | t . cmdType = = 31 ) . ToList ( ) ;
if ( wcsCmds . Count > 0 )
try
{
var wcsCmd = wcsCmds . First ( ) ;
List < long? > startList = new List < long? > ( ) ;
List < long? > endList = new List < long? > ( ) ;
if ( wcsCmd . cmdType ! = 30 )
using var scope = host . Services . CreateScope ( ) ;
using var dbContext = scope . ServiceProvider . GetRequiredService < DefaultDbContext > ( ) ;
var baseEquip = StaticData . BaseEquip . First ( t = > t . objid = = 11 ) ;
dbContext . ChangeTracker . Entries ( ) . ToList ( ) . ForEach ( e = > e . Reload ( ) ) ;
var basePlcs = StaticData . basePlcs . Where ( t = > t . Station = = "5楼CTU" ) . ToList ( ) ;
var wcsCmds = dbContext . WcsTask . Where ( t = > t . nextPointId = = 11 ) . ToList ( ) ;
if ( wcsCmds . Count > 0 )
{
startList . Add ( wcsCmd . currPointId ) ;
endList . AddRange ( wcsCmds . Select ( t = > t . nextPointId ) . ToList ( ) ) ;
var wcsCmd = wcsCmds . First ( ) ;
List < long? > startList = new List < long? > ( ) ;
List < long? > endList = new List < long? > ( ) ;
if ( wcsCmd . taskType ! = 30 )
{
startList . Add ( wcsCmd . currPointId ) ;
endList . AddRange ( wcsCmds . Select ( t = > t . nextPointId ) . ToList ( ) ) ;
}
else
{
startList . Add ( wcsCmd . nextPointId ) ;
endList . AddRange ( wcsCmds . Select ( t = > t . currPointId ) . ToList ( ) ) ;
}
while ( endList . Count < 6 )
{
endList . Add ( 0 ) ;
}
var endPlcs = basePlcs . Where ( t = > t . Name . Contains ( "目的地" ) ) . OrderBy ( t = > t . Name ) . ToList ( ) ;
for ( int i = 0 ; i < endPlcs . Count ; i + + )
{
StaticData . PlcDic [ 2 ] . WriteToPoint ( endPlcs [ i ] . Address , endList [ i ] . ToString ( ) , endPlcs [ i ] . type ) ;
}
var startPlc = basePlcs . First ( t = > t . Name . Contains ( "起始点" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( startPlc . Address , wcsCmd . currPointId . ToString ( ) , startPlc . type ) ;
var cmdPlc = basePlcs . First ( t = > t . Name . Contains ( "任务代号" ) ) ;
string cmdType = StaticData . BaseDictionary . First ( t = > t . objid = = wcsCmd . taskType ) . ToPlc ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , cmdType , cmdPlc . type ) ;
}
else
{
startList . Add ( wcsCmd . nextPointId ) ;
endList . AddRange ( wcsCmds . Select ( t = > t . currPointId ) . ToList ( ) ) ;
var endPlcs = basePlcs . Where ( t = > t . Name . Contains ( "目的地" ) ) . OrderBy ( t = > t . Name ) . ToList ( ) ;
for ( int i = 0 ; i < endPlcs . Count ; i + + )
{
StaticData . PlcDic [ 2 ] . WriteToPoint ( endPlcs [ i ] . Address , "0" , endPlcs [ i ] . type ) ;
}
var startPlc = basePlcs . First ( t = > t . Name . Contains ( "起始点" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( startPlc . Address , "0" , startPlc . type ) ;
var cmdPlc = basePlcs . First ( t = > t . Name . Contains ( "任务代号" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , "0" , cmdPlc . type ) ;
}
while ( endList . Count < 6 )
{
endList . Add ( 0 ) ;
}
var endPlcs = basePlcs . Where ( t = > t . Name . Contains ( "目的地" ) ) . OrderBy ( t = > t . Name ) . ToList ( ) ;
for ( int i = 0 ; i < endPlcs . Count ; i + + )
{
StaticData . PlcDic [ 2 ] . WriteToPoint ( endPlcs [ i ] . Address , endList [ i ] . ToString ( ) , endPlcs [ i ] . type ) ;
}
var startPlc = basePlcs . First ( t = > t . Name . Contains ( "起始点" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( startPlc . Address , wcsCmd . currPointId . ToString ( ) , startPlc . type ) ;
var cmdPlc = basePlcs . First ( t = > t . Name . Contains ( "任务代号" ) ) ;
string cmdType = StaticData . BaseDictionary . First ( t = > t . objid = = wcsCmd . cmdType ) . ToPlc ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , cmdType , cmdPlc . type ) ;
}
else
catch
{
var endPlcs = basePlcs . Where ( t = > t . Name . Contains ( "目的地" ) ) . OrderBy ( t = > t . Name ) . ToList ( ) ;
for ( int i = 0 ; i < endPlcs . Count ; i + + )
{
StaticData . PlcDic [ 2 ] . WriteToPoint ( endPlcs [ i ] . Address , "0" , endPlcs [ i ] . type ) ;
}
var startPlc = basePlcs . First ( t = > t . Name . Contains ( "起始点" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( startPlc . Address , "0" , startPlc . type ) ;
var cmdPlc = basePlcs . First ( t = > t . Name . Contains ( "任务代号" ) ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , "0" , cmdPlc . type ) ;
}
}
@ -755,40 +734,47 @@ namespace Khd.Core.Wcs.Wcs
/// </summary>
private void CtuLineLogic ( )
{
var basePlcpoints = StaticData . BasePlcpointList . ToList ( ) ;
var basePlcs = StaticData . basePlcs . ToList ( ) ;
var bill = from a in basePlcpoints
from b in basePlcs
where a . plcpointNo = = b . Name & & b . Station = = "U型线"
select new { a , b } ;
foreach ( var item in bill )
try
{
if ( item . a . plcpointNo . Contains ( "RFID" ) )
var basePlcpoints = StaticData . BasePlcpointList . ToList ( ) ;
var basePlcs = StaticData . basePlcs . ToList ( ) ;
var bill = from a in basePlcpoints
from b in basePlcs
where a . plcpointNo = = b . Name & & b . Station = = "U型线"
select new { a , b } ;
foreach ( var item in bill )
{
string? rfid = StaticData . PlcDic [ 1 ] . ReadRFID ( item . a . plcpointAddress ) ;
if ( ! string . IsNullOrEmpty ( rfid ) )
if ( item . a . plcpointNo . Contains ( "RFID" ) )
{
rfid = rfid [ ( rfid . IndexOf ( "C" ) + 1 ) . . ] ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( item . b . Address , rfid , item . b . type ) ;
string? rfid = StaticData . PlcDic [ 1 ] . ReadRFID ( item . a . plcpointAddress ) ;
if ( ! string . IsNullOrEmpty ( rfid ) )
{
rfid = rfid [ ( rfid . IndexOf ( "C" ) + 1 ) . . ] ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( item . b . Address , rfid , item . b . type ) ;
}
else
{
StaticData . PlcDic [ 2 ] . WriteToPoint ( item . b . Address , "0" , item . b . type ) ;
}
}
else
{
StaticData . PlcDic [ 2 ] . WriteToPoint ( item . b . Address , "0" , item . b . type ) ;
}
}
else
{
var value = StaticData . PlcDic [ 1 ] . Read ( item . a . plcpointAddress ) ;
if ( value ! = null & & ! string . IsNullOrEmpty ( value . ToString ( ) ) )
{
StaticData . PlcDic [ 2 ] . WriteToPoint ( item . b . Address , value . ToString ( ) , item . b . type ) ;
}
else
{
StaticData . PlcDic [ 2 ] . WriteToPoint ( item . b . Address , "0" , item . b . type ) ;
var value = StaticData . PlcDic [ 1 ] . Read ( item . a . plcpointAddress ) ;
if ( value ! = null & & ! string . IsNullOrEmpty ( value . ToString ( ) ) )
{
StaticData . PlcDic [ 2 ] . WriteToPoint ( item . b . Address , value . ToString ( ) , item . b . type ) ;
}
else
{
StaticData . PlcDic [ 2 ] . WriteToPoint ( item . b . Address , "0" , item . b . type ) ;
}
}
}
}
catch
{
}
}
/// <summary>
@ -796,41 +782,47 @@ namespace Khd.Core.Wcs.Wcs
/// </summary>
private void HositerLogic ( )
{
var basePlcpoints = StaticData . BasePlcpointList . ToList ( ) ;
var basePlcs = StaticData . basePlcs . ToList ( ) ;
var bill = from a in basePlcpoints
from b in basePlcs
where a . plcpointNo = = b . Name & & b . Station ! = "U型线"
select new { a , b } ;
foreach ( var item in bill )
try
{
if ( item . a . plcpointNo . Contains ( "RFID" ) )
var basePlcpoints = StaticData . BasePlcpointList . ToList ( ) ;
var basePlcs = StaticData . basePlcs . ToList ( ) ;
var bill = from a in basePlcpoints
from b in basePlcs
where a . plcpointNo = = b . Name & & b . Station ! = "U型线"
select new { a , b } ;
foreach ( var item in bill )
{
string? rfid = StaticData . PlcDic [ 0 ] . ReadRFID ( item . a . plcpointAddress ) ;
if ( ! string . IsNullOrEmpty ( rfid ) )
if ( item . a . plcpointNo . Contains ( "RFID" ) )
{
rfid = rfid [ ( rfid . IndexOf ( "JYHB" ) + 4 ) . . ] ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( item . b . Address , rfid , item . b . type ) ;
string? rfid = StaticData . PlcDic [ 0 ] . ReadRFID ( item . a . plcpointAddress ) ;
if ( ! string . IsNullOrEmpty ( rfid ) )
{
rfid = rfid [ ( rfid . IndexOf ( "JYHB" ) + 4 ) . . ] ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( item . b . Address , rfid , item . b . type ) ;
}
else
{
StaticData . PlcDic [ 2 ] . WriteToPoint ( item . b . Address , "0" , item . b . type ) ;
}
}
else
{
StaticData . PlcDic [ 2 ] . WriteToPoint ( item . b . Address , "0" , item . b . type ) ;
}
}
else
{
var value = StaticData . PlcDic [ 0 ] . Read ( item . a . plcpointAddress ) ;
if ( value ! = null & & ! string . IsNullOrEmpty ( value . ToString ( ) ) )
{
StaticData . PlcDic [ 2 ] . WriteToPoint ( item . b . Address , value . ToString ( ) , item . b . type ) ;
}
else
{
StaticData . PlcDic [ 2 ] . WriteToPoint ( item . b . Address , "0" , item . b . type ) ;
var value = StaticData . PlcDic [ 0 ] . Read ( item . a . plcpointAddress ) ;
if ( value ! = null & & ! string . IsNullOrEmpty ( value . ToString ( ) ) )
{
StaticData . PlcDic [ 2 ] . WriteToPoint ( item . b . Address , value . ToString ( ) , item . b . type ) ;
}
else
{
StaticData . PlcDic [ 2 ] . WriteToPoint ( item . b . Address , "0" , item . b . type ) ;
}
}
}
}
catch
{
}
}
}