Added drilling operations to Telemetry analytics calculation

This commit is contained in:
KharchenkoVV 2021-09-30 17:10:12 +05:00
parent 84cb9f6d3b
commit 3c9745474a
4 changed files with 80 additions and 60 deletions

View File

@ -66,10 +66,10 @@ namespace AsbCloudDb.Model
public bool IsBlockPositionDecreasing { get; set; } public bool IsBlockPositionDecreasing { get; set; }
[Column("is_rotor_speed_lt_3"), Comment("Обороты ротора ниже 3")] [Column("is_rotor_speed_lt_3"), Comment("Обороты ротора ниже 3")]
public bool IsRotorSpeedLt3 { get; set; } public bool IsRotorSpeedLt5 { get; set; }
[Column("is_rotor_speed_gt_3"), Comment("Обороты ротора выше 3")] [Column("is_rotor_speed_gt_3"), Comment("Обороты ротора выше 3")]
public bool IsRotorSpeedGt3 { get; set; } public bool IsRotorSpeedGt5 { get; set; }
[Column("is_pressure_lt_20"), Comment("Давление менее 20")] [Column("is_pressure_lt_20"), Comment("Давление менее 20")]
public bool IsPressureLt20 { get; set; } public bool IsPressureLt20 { get; set; }

View File

@ -191,8 +191,8 @@ namespace AsbCloudDevOperations
IsBitPositionLt20 = true, IsBitPositionLt20 = true,
IsBlockPositionIncreasing = false, IsBlockPositionIncreasing = false,
IsBlockPositionDecreasing = false, IsBlockPositionDecreasing = false,
IsRotorSpeedLt3 = true, IsRotorSpeedLt5 = true,
IsRotorSpeedGt3 = false, IsRotorSpeedGt5 = false,
IsPressureLt20 = true, IsPressureLt20 = true,
IsPressureGt20 = false, IsPressureGt20 = false,
IsHookWeightNotChanges = true, IsHookWeightNotChanges = true,
@ -214,8 +214,8 @@ namespace AsbCloudDevOperations
IsBitPositionLt20 = true, IsBitPositionLt20 = true,
IsBlockPositionIncreasing = true, IsBlockPositionIncreasing = true,
IsBlockPositionDecreasing = false, IsBlockPositionDecreasing = false,
IsRotorSpeedLt3 = true, IsRotorSpeedLt5 = true,
IsRotorSpeedGt3 = false, IsRotorSpeedGt5 = false,
IsPressureLt20 = true, IsPressureLt20 = true,
IsPressureGt20 = false, IsPressureGt20 = false,
IsHookWeightNotChanges = true, IsHookWeightNotChanges = true,
@ -237,8 +237,8 @@ namespace AsbCloudDevOperations
IsBitPositionLt20 = true, IsBitPositionLt20 = true,
IsBlockPositionIncreasing = false, IsBlockPositionIncreasing = false,
IsBlockPositionDecreasing = true, IsBlockPositionDecreasing = true,
IsRotorSpeedLt3 = true, IsRotorSpeedLt5 = true,
IsRotorSpeedGt3 = false, IsRotorSpeedGt5 = false,
IsPressureLt20 = true, IsPressureLt20 = true,
IsPressureGt20 = false, IsPressureGt20 = false,
IsHookWeightNotChanges = true, IsHookWeightNotChanges = true,
@ -260,8 +260,8 @@ namespace AsbCloudDevOperations
IsBitPositionLt20 = true, IsBitPositionLt20 = true,
IsBlockPositionIncreasing = false, IsBlockPositionIncreasing = false,
IsBlockPositionDecreasing = false, IsBlockPositionDecreasing = false,
IsRotorSpeedLt3 = true, IsRotorSpeedLt5 = true,
IsRotorSpeedGt3 = false, IsRotorSpeedGt5 = false,
IsPressureLt20 = true, IsPressureLt20 = true,
IsPressureGt20 = false, IsPressureGt20 = false,
IsHookWeightNotChanges = true, IsHookWeightNotChanges = true,
@ -283,8 +283,8 @@ namespace AsbCloudDevOperations
IsBitPositionLt20 = true, IsBitPositionLt20 = true,
IsBlockPositionIncreasing = true, IsBlockPositionIncreasing = true,
IsBlockPositionDecreasing = false, IsBlockPositionDecreasing = false,
IsRotorSpeedLt3 = true, IsRotorSpeedLt5 = true,
IsRotorSpeedGt3 = false, IsRotorSpeedGt5 = false,
IsPressureLt20 = true, IsPressureLt20 = true,
IsPressureGt20 = false, IsPressureGt20 = false,
IsHookWeightNotChanges = true, IsHookWeightNotChanges = true,

View File

@ -520,8 +520,8 @@ namespace AsbCloudInfrastructure.Services
IsBitPositionLt20 = bitPositionLine.IsAverageYLessThanBound(20), IsBitPositionLt20 = bitPositionLine.IsAverageYLessThanBound(20),
IsBlockPositionDecreasing = blockPositionLine.IsYDecreases(-0.0001), IsBlockPositionDecreasing = blockPositionLine.IsYDecreases(-0.0001),
IsBlockPositionIncreasing = blockPositionLine.IsYIncreases(0.0001), IsBlockPositionIncreasing = blockPositionLine.IsYIncreases(0.0001),
IsRotorSpeedLt3 = rotorSpeedLine.IsAverageYLessThanBound(3), IsRotorSpeedLt5 = rotorSpeedLine.IsAverageYLessThanBound(5),
IsRotorSpeedGt3 = rotorSpeedLine.IsAverageYMoreThanBound(3), IsRotorSpeedGt5 = rotorSpeedLine.IsAverageYMoreThanBound(5),
IsPressureLt20 = pressureLine.IsAverageYLessThanBound(20), IsPressureLt20 = pressureLine.IsAverageYLessThanBound(20),
IsPressureGt20 = pressureLine.IsAverageYMoreThanBound(20), IsPressureGt20 = pressureLine.IsAverageYMoreThanBound(20),
IsHookWeightNotChanges = hookWeightLine.IsYNotChanges(0.0001, -0.0001), IsHookWeightNotChanges = hookWeightLine.IsYNotChanges(0.0001, -0.0001),

View File

@ -16,6 +16,26 @@ namespace AsbCloudInfrastructure.Services
new TelemetryOperationDetector new TelemetryOperationDetector
{ {
Order = 1, Order = 1,
Operation = operations.FirstOrDefault(o => o.Name.Equals("Роторное бурение")),
Detect = (data) =>
{
return data.IsWellDepthIncreasing && data.IsBitPositionIncreasing &&
data.IsBlockPositionIncreasing && data.IsRotorSpeedGt5;
}
},
new TelemetryOperationDetector
{
Order = 2,
Operation = operations.FirstOrDefault(o => o.Name.Equals("Слайдирование")),
Detect = (data) =>
{
return data.IsWellDepthIncreasing && data.IsBitPositionIncreasing &&
data.IsBlockPositionIncreasing && data.IsRotorSpeedLt5;
}
},
new TelemetryOperationDetector
{
Order = 3,
Operation = operations.FirstOrDefault(o => o.Name.Equals("На поверхности")), Operation = operations.FirstOrDefault(o => o.Name.Equals("На поверхности")),
Detect = (data) => Detect = (data) =>
{ {
@ -24,7 +44,7 @@ namespace AsbCloudInfrastructure.Services
}, },
new TelemetryOperationDetector new TelemetryOperationDetector
{ {
Order = 2, Order = 4,
Operation = operations.FirstOrDefault(o => o.Name.Equals("Удержание в клиньях")), Operation = operations.FirstOrDefault(o => o.Name.Equals("Удержание в клиньях")),
Detect = (data) => Detect = (data) =>
{ {
@ -36,143 +56,143 @@ namespace AsbCloudInfrastructure.Services
}, },
new TelemetryOperationDetector new TelemetryOperationDetector
{ {
Order = 3, Order = 5,
Operation = operations.FirstOrDefault(o => o.Name.Equals("Подъем с проработкой")), Operation = operations.FirstOrDefault(o => o.Name.Equals("Подъем с проработкой")),
Detect = (data) => Detect = (data) =>
{ {
return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing && return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing &&
data.IsBitPositionDecreasing && data.IsBlockPositionIncreasing && data.IsBitPositionDecreasing && data.IsBlockPositionIncreasing &&
data.IsRotorSpeedGt3 && data.IsPressureGt20; data.IsRotorSpeedGt5 && data.IsPressureGt20;
}
},
new TelemetryOperationDetector
{
Order = 4,
Operation = operations.FirstOrDefault(o => o.Name.Equals("Спуск с проработкой")),
Detect = (data) =>
{
return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing &&
data.IsBitPositionIncreasing && data.IsBlockPositionDecreasing &&
data.IsRotorSpeedGt3 && data.IsPressureGt20;
}
},
new TelemetryOperationDetector
{
Order = 5,
Operation = operations.FirstOrDefault(o => o.Name.Equals("Подъем с промывкой")),
Detect = (data) =>
{
return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing &&
data.IsBitPositionDecreasing && data.IsBlockPositionIncreasing &&
data.IsRotorSpeedLt3 && data.IsPressureGt20;
} }
}, },
new TelemetryOperationDetector new TelemetryOperationDetector
{ {
Order = 6, Order = 6,
Operation = operations.FirstOrDefault(o => o.Name.Equals("Спуск с промывкой")), Operation = operations.FirstOrDefault(o => o.Name.Equals("Спуск с проработкой")),
Detect = (data) => Detect = (data) =>
{ {
return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing && return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing &&
data.IsBitPositionIncreasing && data.IsBlockPositionDecreasing && data.IsBitPositionIncreasing && data.IsBlockPositionDecreasing &&
data.IsRotorSpeedLt3 && data.IsPressureGt20; data.IsRotorSpeedGt5 && data.IsPressureGt20;
} }
}, },
new TelemetryOperationDetector new TelemetryOperationDetector
{ {
Order = 7, Order = 7,
Operation = operations.FirstOrDefault(o => o.Name.Equals("Спуск в скважину")), Operation = operations.FirstOrDefault(o => o.Name.Equals("Подъем с промывкой")),
Detect = (data) => Detect = (data) =>
{ {
return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing && return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing &&
data.IsBitPositionIncreasing && data.IsBlockPositionDecreasing && data.IsBitPositionDecreasing && data.IsBlockPositionIncreasing &&
data.IsRotorSpeedLt3 && data.IsPressureLt20; data.IsRotorSpeedLt5 && data.IsPressureGt20;
} }
}, },
new TelemetryOperationDetector new TelemetryOperationDetector
{ {
Order = 8, Order = 8,
Operation = operations.FirstOrDefault(o => o.Name.Equals("Спуск с вращением")), Operation = operations.FirstOrDefault(o => o.Name.Equals("Спуск с промывкой")),
Detect = (data) => Detect = (data) =>
{ {
return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing && return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing &&
data.IsBitPositionIncreasing && data.IsBlockPositionDecreasing && data.IsBitPositionIncreasing && data.IsBlockPositionDecreasing &&
data.IsRotorSpeedGt3 && data.IsPressureLt20; data.IsRotorSpeedLt5 && data.IsPressureGt20;
} }
}, },
new TelemetryOperationDetector new TelemetryOperationDetector
{ {
Order = 9, Order = 9,
Operation = operations.FirstOrDefault(o => o.Name.Equals("Подъем из скважины")), Operation = operations.FirstOrDefault(o => o.Name.Equals("Спуск в скважину")),
Detect = (data) => Detect = (data) =>
{ {
return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing && return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing &&
data.IsBitPositionDecreasing && data.IsBlockPositionIncreasing && data.IsBitPositionIncreasing && data.IsBlockPositionDecreasing &&
data.IsRotorSpeedLt3 && data.IsPressureLt20; data.IsRotorSpeedLt5 && data.IsPressureLt20;
} }
}, },
new TelemetryOperationDetector new TelemetryOperationDetector
{ {
Order = 10, Order = 10,
Operation = operations.FirstOrDefault(o => o.Name.Equals("Подъем с вращением")), Operation = operations.FirstOrDefault(o => o.Name.Equals("Спуск с вращением")),
Detect = (data) => Detect = (data) =>
{ {
return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing && return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing &&
data.IsBitPositionDecreasing && data.IsBlockPositionIncreasing && data.IsBitPositionIncreasing && data.IsBlockPositionDecreasing &&
data.IsRotorSpeedGt3 && data.IsPressureLt20; data.IsRotorSpeedGt5 && data.IsPressureLt20;
} }
}, },
new TelemetryOperationDetector new TelemetryOperationDetector
{ {
Order = 11, Order = 11,
Operation = operations.FirstOrDefault(o => o.Name.Equals("Подъем из скважины")),
Detect = (data) =>
{
return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing &&
data.IsBitPositionDecreasing && data.IsBlockPositionIncreasing &&
data.IsRotorSpeedLt5 && data.IsPressureLt20;
}
},
new TelemetryOperationDetector
{
Order = 12,
Operation = operations.FirstOrDefault(o => o.Name.Equals("Подъем с вращением")),
Detect = (data) =>
{
return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing &&
data.IsBitPositionDecreasing && data.IsBlockPositionIncreasing &&
data.IsRotorSpeedGt5 && data.IsPressureLt20;
}
},
new TelemetryOperationDetector
{
Order = 13,
Operation = operations.FirstOrDefault(o => o.Name.Equals("Промывка в покое")), Operation = operations.FirstOrDefault(o => o.Name.Equals("Промывка в покое")),
Detect = (data) => Detect = (data) =>
{ {
return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing && return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing &&
!data.IsBitPositionDecreasing && !data.IsBitPositionIncreasing && !data.IsBitPositionDecreasing && !data.IsBitPositionIncreasing &&
!data.IsBlockPositionDecreasing && !data.IsBlockPositionIncreasing && !data.IsBlockPositionDecreasing && !data.IsBlockPositionIncreasing &&
data.IsRotorSpeedLt3 && data.IsPressureGt20; data.IsRotorSpeedLt5 && data.IsPressureGt20;
} }
}, },
new TelemetryOperationDetector new TelemetryOperationDetector
{ {
Order = 12, Order = 14,
Operation = operations.FirstOrDefault(o => o.Name.Equals("Промывка с вращением")), Operation = operations.FirstOrDefault(o => o.Name.Equals("Промывка с вращением")),
Detect = (data) => Detect = (data) =>
{ {
return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing && return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing &&
!data.IsBitPositionDecreasing && !data.IsBitPositionIncreasing && !data.IsBitPositionDecreasing && !data.IsBitPositionIncreasing &&
!data.IsBlockPositionDecreasing && !data.IsBlockPositionIncreasing && !data.IsBlockPositionDecreasing && !data.IsBlockPositionIncreasing &&
data.IsRotorSpeedGt3 && data.IsPressureGt20; data.IsRotorSpeedGt5 && data.IsPressureGt20;
} }
}, },
new TelemetryOperationDetector new TelemetryOperationDetector
{ {
Order = 13, Order = 15,
Operation = operations.FirstOrDefault(o => o.Name.Equals("Неподвижное состояние")), Operation = operations.FirstOrDefault(o => o.Name.Equals("Неподвижное состояние")),
Detect = (data) => Detect = (data) =>
{ {
return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing && return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing &&
!data.IsBitPositionDecreasing && !data.IsBitPositionIncreasing && !data.IsBitPositionDecreasing && !data.IsBitPositionIncreasing &&
!data.IsBlockPositionDecreasing && !data.IsBlockPositionIncreasing && !data.IsBlockPositionDecreasing && !data.IsBlockPositionIncreasing &&
data.IsRotorSpeedLt3 && data.IsPressureLt20 && data.IsHookWeightNotChanges; data.IsRotorSpeedLt5 && data.IsPressureLt20 && data.IsHookWeightNotChanges;
} }
}, },
new TelemetryOperationDetector new TelemetryOperationDetector
{ {
Order = 14, Order = 16,
Operation = operations.FirstOrDefault(o => o.Name.Equals("Вращение без циркуляции")), Operation = operations.FirstOrDefault(o => o.Name.Equals("Вращение без циркуляции")),
Detect = (data) => Detect = (data) =>
{ {
return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing && return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing &&
!data.IsBitPositionDecreasing && !data.IsBitPositionIncreasing && !data.IsBitPositionDecreasing && !data.IsBitPositionIncreasing &&
!data.IsBlockPositionDecreasing && !data.IsBlockPositionIncreasing && !data.IsBlockPositionDecreasing && !data.IsBlockPositionIncreasing &&
data.IsRotorSpeedGt3 && data.IsPressureLt20; data.IsRotorSpeedGt5 && data.IsPressureLt20;
} }
}, },
new TelemetryOperationDetector new TelemetryOperationDetector
{ {
Order = 15, Order = 17,
Operation = operations.FirstOrDefault(o => o.Name.Equals("Невозможно определить операцию")), Operation = operations.FirstOrDefault(o => o.Name.Equals("Невозможно определить операцию")),
Detect = (data) => true Detect = (data) => true
} }