feat(SF-471): Добавлена фаза закрытия в график согласно заглушке

This commit is contained in:
ermolaev_p 2024-11-08 17:48:38 +03:00
parent 1ece32a57c
commit 8a611998c0
2 changed files with 15 additions and 3 deletions

View File

@ -336,6 +336,18 @@ class OptAlgorithm(AutoConfigClass):
""" """
return self.X1Open(t), self.X2Open(t), self.V1Open(t), self.V2Open(t), self.FOpen(t) return self.X1Open(t), self.X2Open(t), self.V1Open(t), self.V2Open(t), self.FOpen(t)
def calcPhaseMovement(self, t: float) -> tuple[float, float, float, float, float]:
"""
Получить значения X1, X2, V1, V2, F в момент времени t для фазы раксрытия
Args:
t (float): Момент времени
Returns:
(float, float, float, float, float): X1, X2, V1, V2, F
"""
return self.X1Movement(t), self.X2Movement(t), self.V1Movement(t), self.V2Movement(t), self.FMovement(t)
def getSpecific(self, param : str, phase : str, t : float) -> float: def getSpecific(self, param : str, phase : str, t : float) -> float:
""" """
Получить значение величины в определенную фазу в момент времени t (с начала фазы) Получить значение величины в определенную фазу в момент времени t (с начала фазы)

View File

@ -66,14 +66,14 @@ class PlotWindow:
def _getIdealTimings(self): def _getIdealTimings(self):
data = self.opt.Ts data = self.opt.Ts
self.idealTime = [data['tclose'], data['tgrow'], self.opt.getMarkOpen()] self.idealTime = [data['tclose'], data['tgrow'], self.opt.getMarkOpen(), data["tmovement"]]
def _form_idealdatGraph(self, times): def _form_idealdatGraph(self, times):
self.idealPhase0 = (self.idealTime[0])*self.scaler #Подъезд self.idealPhase0 = (self.idealTime[0])*self.scaler #Подъезд
self.idealPhase1 = (self.idealTime[0]+ self.idealTime[1])*self.scaler #Сжатие self.idealPhase1 = (self.idealTime[0]+ self.idealTime[1])*self.scaler #Сжатие
self.idealPhase2 = (self.idealTime[0]+ self.idealTime[1] + self.WeldTime)*self.scaler #Сварка self.idealPhase2 = (self.idealTime[0]+ self.idealTime[1] + self.WeldTime)*self.scaler #Сварка
self.idealPhase3 = (self.idealTime[0]+ self.idealTime[1] + self.idealTime[2] + self.WeldTime)*self.scaler #Разъезд self.idealPhase3 = (self.idealTime[0]+ self.idealTime[1] + self.idealTime[2] + self.WeldTime)*self.scaler #Разъезд
self.idealPhase4 = (self.idealTime[0]+ self.idealTime[1] + self.idealTime[2] + self.WeldTime + 0.25)*self.scaler #Последнее смыкание #TODO добавить идеальное время вместо 0.25 self.idealPhase4 = (sum(self.idealTime[:4]) + self.WeldTime)*self.scaler #Последнее смыкание #TODO добавить идеальное время вместо 0.25
self.x_splitter = np.array([[0, self.idealPhase0], self.x_splitter = np.array([[0, self.idealPhase0],
[self.idealPhase0, self.idealPhase1], [self.idealPhase0, self.idealPhase1],
[self.idealPhase1, self.idealPhase2], [self.idealPhase1, self.idealPhase2],
@ -90,7 +90,7 @@ class PlotWindow:
elif time <= self.idealPhase3: elif time <= self.idealPhase3:
x_fe, x_me, v_fe, v_me, f = self.opt.calcPhaseOpen(time/self.scaler-self.idealTime[0]-self.idealTime[1]-self.WeldTime) x_fe, x_me, v_fe, v_me, f = self.opt.calcPhaseOpen(time/self.scaler-self.idealTime[0]-self.idealTime[1]-self.WeldTime)
else: else:
x_fe, x_me, v_fe, v_me, f = 0, 0, 0, 0, 0 x_fe, x_me, v_fe, v_me, f = self.opt.calcPhaseMovement(time/self.scaler-sum(self.idealTime[:3])-self.WeldTime)
data.append([x_fe, x_me, v_fe, v_me, f]) data.append([x_fe, x_me, v_fe, v_me, f])
data = np.array(data).T data = np.array(data).T
return data return data