@ -18,9 +18,6 @@ namespace Khd.Core.Wcs.Wcs
{
private readonly LoggerUtils _logger = new LoggerUtils ( ) ;
private readonly IHost host ;
private Plc . S7 . Plc Plc30 = StaticData . PlcDic [ 0 ] ;
private Plc . S7 . Plc Plc31 = StaticData . PlcDic [ 1 ] ;
private Plc . S7 . Plc Plc220 = StaticData . PlcDic [ 2 ] ;
public SystemTimer ( IHost host )
{
@ -73,6 +70,10 @@ namespace Khd.Core.Wcs.Wcs
Console . WriteLine ( $"{DateTime.Now}: SystemTimer started" ) ;
}
/// <summary>
/// 定时清除日志文件
/// </summary>
/// <param name="obj"></param>
private void DeleteLogsLogic ( object? obj )
{
while ( true )
@ -89,7 +90,7 @@ namespace Khd.Core.Wcs.Wcs
{
if ( DateTime . TryParse ( dirName , out DateTime dt ) )
{
if ( dt < DateTime . Now . AddDays ( - 5 ) )
if ( dt < DateTime . Now . AddDays ( - StaticData . DeleteLogDay ) )
{
Directory . Delete ( s , true ) ;
_logger . Info ( $"日志{dirName}已删除" ) ;
@ -107,6 +108,10 @@ namespace Khd.Core.Wcs.Wcs
}
}
/// <summary>
/// 删除任务
/// </summary>
/// <param name="obj"></param>
private void DeleteTaskLogic ( object? obj )
{
using var scope = host . Services . CreateScope ( ) ;
@ -432,11 +437,11 @@ namespace Khd.Core.Wcs.Wcs
dbContext . Update ( cardStatus ) ;
dbContext . SaveChanges ( ) ;
var quantityPlc = basePlcs . First ( t = > t . Name . Contains ( "电量" ) ) ;
this . Plc220 . WriteToPoint ( quantityPlc . Address , cardStatus . Battery , quantityPlc . type ) ;
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' ) ) ;
this . Plc220 . WriteToPoint ( XPlc . Address , cardStatus . PosY . ToString ( ) , XPlc . type ) ;
this . Plc220 . WriteToPoint ( Ylc . Address , cardStatus . PosY . ToString ( ) , Ylc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( XPlc . Address , cardStatus . PosY . ToString ( ) , XPlc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( Ylc . Address , cardStatus . PosY . ToString ( ) , Ylc . type ) ;
}
}
catch
@ -472,11 +477,11 @@ namespace Khd.Core.Wcs.Wcs
dbContext . Update ( cardStatus ) ;
dbContext . SaveChanges ( ) ;
var quantityPlc = basePlcs . First ( t = > t . Name . Contains ( "电量" ) ) ;
this . Plc220 . WriteToPoint ( quantityPlc . Address , cardStatus . Battery , quantityPlc . type ) ;
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' ) ) ;
this . Plc220 . WriteToPoint ( XPlc . Address , cardStatus . PosX . ToString ( ) , XPlc . type ) ;
this . Plc220 . WriteToPoint ( Ylc . Address , cardStatus . PosY . ToString ( ) , Ylc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( XPlc . Address , cardStatus . PosX . ToString ( ) , XPlc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( Ylc . Address , cardStatus . PosY . ToString ( ) , Ylc . type ) ;
}
}
catch
@ -502,21 +507,21 @@ namespace Khd.Core.Wcs.Wcs
{
WcsCmd wcsCmd = wcsCmds . First ( ) ;
var endPlc = basePlcs . Where ( t = > t . Name . Contains ( "目的地" ) ) . First ( ) ;
Plc220 . 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 ( "起始点" ) ) ;
Plc220 . 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 ( "任务代号" ) ) ;
string cmdType = StaticData . BaseDictionary . First ( t = > t . objid = = wcsCmd . cmdType ) . ToPlc ;
Plc220 . WriteToPoint ( cmdPlc . Address , cmdType , cmdPlc . type ) ;
StaticData. PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , cmdType , cmdPlc . type ) ;
}
else
{
var endPlc = basePlcs . Where ( t = > t . Name . Contains ( "目的地" ) ) . First ( ) ;
this . Plc220 . WriteToPoint ( endPlc . Address , "0" , endPlc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( endPlc . Address , "0" , endPlc . type ) ;
var startPlc = basePlcs . First ( t = > t . Name . Contains ( "起始点" ) ) ;
Plc220 . WriteToPoint ( startPlc . Address , "0" , startPlc . type ) ;
StaticData. PlcDic [ 2 ] . WriteToPoint ( startPlc . Address , "0" , startPlc . type ) ;
var cmdPlc = basePlcs . First ( t = > t . Name . Contains ( "任务代号" ) ) ;
Plc220 . WriteToPoint ( cmdPlc . Address , "0" , cmdPlc . type ) ;
StaticData. PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , "0" , cmdPlc . type ) ;
}
var data = new
{
@ -529,31 +534,31 @@ namespace Khd.Core.Wcs.Wcs
{
var cardStatus = reponse . data . First ( t = > t . RobotCode = = "2034" ) ;
var quantityPlc = basePlcs . First ( t = > t . Name . Contains ( "电量" ) ) ;
this . Plc220 . WriteToPoint ( quantityPlc . Address , cardStatus . Battery , quantityPlc . type ) ;
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' ) ) ;
this . Plc220 . WriteToPoint ( XPlc . Address , cardStatus . PosX . ToString ( ) , XPlc . type ) ;
this . Plc220 . WriteToPoint ( Ylc . Address , cardStatus . PosY . ToString ( ) , Ylc . type ) ;
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 ( "电量" ) ) ;
this . Plc220 . WriteToPoint ( quantityPlc . Address , cardStatus . Battery , quantityPlc . type ) ;
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' ) ) ;
this . Plc220 . WriteToPoint ( XPlc . Address , cardStatus . PosX . ToString ( ) , XPlc . type ) ;
this . Plc220 . WriteToPoint ( Ylc . Address , cardStatus . PosY . ToString ( ) , Ylc . type ) ;
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 ( "电量" ) ) ;
this . Plc220 . WriteToPoint ( quantityPlc . Address , cardStatus . Battery , quantityPlc . type ) ;
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" ) ) ;
this . Plc220 . WriteToPoint ( XPlc . Address , cardStatus . PosX . ToString ( ) , XPlc . type ) ;
this . Plc220 . WriteToPoint ( Ylc . Address , cardStatus . PosY . ToString ( ) , Ylc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( XPlc . Address , cardStatus . PosX . ToString ( ) , XPlc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( Ylc . Address , cardStatus . PosY . ToString ( ) , Ylc . type ) ;
}
}
@ -573,21 +578,21 @@ namespace Khd.Core.Wcs.Wcs
{
WcsCmd wcsCmd = wcsCmds . First ( ) ;
var endPlc = basePlcs . Where ( t = > t . Name . Contains ( "目的地" ) ) . First ( ) ;
Plc220 . 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 ( "起始点" ) ) ;
Plc220 . 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 ( "任务代号" ) ) ;
string cmdType = StaticData . BaseDictionary . First ( t = > t . objid = = wcsCmd . cmdType ) . ToPlc ;
Plc220 . WriteToPoint ( cmdPlc . Address , cmdType , cmdPlc . type ) ;
StaticData. PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , cmdType , cmdPlc . type ) ;
}
else
{
var endPlc = basePlcs . Where ( t = > t . Name . Contains ( "目的地" ) ) . First ( ) ;
this . Plc220 . WriteToPoint ( endPlc . Address , "0" , endPlc . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( endPlc . Address , "0" , endPlc . type ) ;
var startPlc = basePlcs . First ( t = > t . Name . Contains ( "起始点" ) ) ;
Plc220 . WriteToPoint ( startPlc . Address , "0" , startPlc . type ) ;
StaticData. PlcDic [ 2 ] . WriteToPoint ( startPlc . Address , "0" , startPlc . type ) ;
var cmdPlc = basePlcs . First ( t = > t . Name . Contains ( "任务代号" ) ) ;
Plc220 . WriteToPoint ( cmdPlc . Address , "0" , cmdPlc . type ) ;
StaticData. PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , "0" , cmdPlc . type ) ;
}
}
@ -625,13 +630,13 @@ namespace Khd.Core.Wcs.Wcs
var endPlcs = basePlcs . Where ( t = > t . Name . Contains ( "目的地" ) ) . OrderBy ( t = > t . Name ) . ToList ( ) ;
for ( int i = 0 ; i < endPlcs . Count ; i + + )
{
this . Plc220 . WriteToPoint ( endPlcs [ i ] . Address , endList [ i ] . ToString ( ) , endPlcs [ i ] . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( endPlcs [ i ] . Address , endList [ i ] . ToString ( ) , endPlcs [ i ] . type ) ;
}
var startPlc = basePlcs . First ( t = > t . Name . Contains ( "起始点" ) ) ;
Plc220 . 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 ( "任务代号" ) ) ;
string cmdType = StaticData . BaseDictionary . First ( t = > t . objid = = wcsCmd . cmdType ) . ToPlc ;
Plc220 . WriteToPoint ( cmdPlc . Address , cmdType , cmdPlc . type ) ;
StaticData. PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , cmdType , cmdPlc . type ) ;
}
else
@ -639,12 +644,12 @@ namespace Khd.Core.Wcs.Wcs
var endPlcs = basePlcs . Where ( t = > t . Name . Contains ( "目的地" ) ) . OrderBy ( t = > t . Name ) . ToList ( ) ;
for ( int i = 0 ; i < endPlcs . Count ; i + + )
{
this . Plc220 . WriteToPoint ( endPlcs [ i ] . Address , "0" , endPlcs [ i ] . type ) ;
StaticData . PlcDic [ 2 ] . WriteToPoint ( endPlcs [ i ] . Address , "0" , endPlcs [ i ] . type ) ;
}
var startPlc = basePlcs . First ( t = > t . Name . Contains ( "起始点" ) ) ;
Plc220 . WriteToPoint ( startPlc . Address , "0" , startPlc . type ) ;
StaticData. PlcDic [ 2 ] . WriteToPoint ( startPlc . Address , "0" , startPlc . type ) ;
var cmdPlc = basePlcs . First ( t = > t . Name . Contains ( "任务代号" ) ) ;
Plc220 . WriteToPoint ( cmdPlc . Address , "0" , cmdPlc . type ) ;
StaticData. PlcDic [ 2 ] . WriteToPoint ( cmdPlc . Address , "0" , cmdPlc . type ) ;
}
}
@ -663,27 +668,27 @@ namespace Khd.Core.Wcs.Wcs
{
if ( item . a . plcpointNo . Contains ( "RFID" ) )
{
string? rfid = Plc31 . ReadRFID ( item . a . plcpointAddress ) ;
string? rfid = StaticData. PlcDic [ 1 ] . ReadRFID ( item . a . plcpointAddress ) ;
if ( ! string . IsNullOrEmpty ( rfid ) )
{
rfid = rfid [ ( rfid . IndexOf ( "C" ) + 1 ) . . ] ;
Plc220 . WriteToPoint ( item . b . Address , rfid , item . b . type ) ;
StaticData. PlcDic [ 2 ] . WriteToPoint ( item . b . Address , rfid , item . b . type ) ;
}
else
{
Plc220 . WriteToPoint ( item . b . Address , "0" , item . b . type ) ;
StaticData. PlcDic [ 2 ] . WriteToPoint ( item . b . Address , "0" , item . b . type ) ;
}
}
else
{
var value = Plc31 . Read ( item . a . plcpointAddress ) ;
var value = StaticData. PlcDic [ 1 ] . Read ( item . a . plcpointAddress ) ;
if ( value ! = null & & ! string . IsNullOrEmpty ( value . ToString ( ) ) )
{
Plc220 . WriteToPoint ( item . b . Address , value . ToString ( ) , item . b . type ) ;
StaticData. PlcDic [ 2 ] . WriteToPoint ( item . b . Address , value . ToString ( ) , item . b . type ) ;
}
else
{
Plc220 . WriteToPoint ( item . b . Address , "0" , item . b . type ) ;
StaticData. PlcDic [ 2 ] . WriteToPoint ( item . b . Address , "0" , item . b . type ) ;
}
}
}
@ -705,27 +710,27 @@ namespace Khd.Core.Wcs.Wcs
{
if ( item . a . plcpointNo . Contains ( "RFID" ) )
{
string? rfid = Plc30 . ReadRFID ( item . a . plcpointAddress ) ;
string? rfid = StaticData. PlcDic [ 0 ] . ReadRFID ( item . a . plcpointAddress ) ;
if ( ! string . IsNullOrEmpty ( rfid ) )
{
rfid = rfid [ ( rfid . IndexOf ( "JYHB" ) + 4 ) . . ] ;
Plc220 . WriteToPoint ( item . b . Address , rfid , item . b . type ) ;
StaticData. PlcDic [ 2 ] . WriteToPoint ( item . b . Address , rfid , item . b . type ) ;
}
else
{
Plc220 . WriteToPoint ( item . b . Address , "0" , item . b . type ) ;
StaticData. PlcDic [ 2 ] . WriteToPoint ( item . b . Address , "0" , item . b . type ) ;
}
}
else
{
var value = Plc30 . Read ( item . a . plcpointAddress ) ;
var value = StaticData. PlcDic [ 0 ] . Read ( item . a . plcpointAddress ) ;
if ( value ! = null & & ! string . IsNullOrEmpty ( value . ToString ( ) ) )
{
Plc220 . WriteToPoint ( item . b . Address , value . ToString ( ) , item . b . type ) ;
StaticData. PlcDic [ 2 ] . WriteToPoint ( item . b . Address , value . ToString ( ) , item . b . type ) ;
}
else
{
Plc220 . WriteToPoint ( item . b . Address , "0" , item . b . type ) ;
StaticData. PlcDic [ 2 ] . WriteToPoint ( item . b . Address , "0" , item . b . type ) ;
}
}
}