fix: UML теперь строится по новым сигналам

This commit is contained in:
Andrew 2024-11-11 16:08:02 +03:00
parent dc4c74471f
commit 7d71a4774f
29 changed files with 17182 additions and 3031 deletions

View File

@ -30,7 +30,7 @@ class app:
self.opt_algorithm = OptAlgorithm(operator_config=self.operator_params, system_config=self.system_params) self.opt_algorithm = OptAlgorithm(operator_config=self.operator_params, system_config=self.system_params)
self.ideal_times = self._get_ideal_timings(self.opt_algorithm) self.ideal_times = self._get_ideal_timings(self.opt_algorithm)
self.parser.setData("trace_samples/2024_11_01-09_39_17B00.csv") self.parser.setData("trace_samples/2024_11_08-19_30_49.csv")
self.bool_dict = self.parser.getBoolDict() self.bool_dict = self.parser.getBoolDict()
self.float_dict = self.parser.getFloatDict() self.float_dict = self.parser.getFloatDict()
@ -41,12 +41,21 @@ class app:
float_dict=self.float_dict, float_dict=self.float_dict,
show_settings_func=self._show_settings) show_settings_func=self._show_settings)
self.uml_creator = UMLCreator(system_config=self.system_params, self.uml_creator = UMLCreator(operator_config=self.operator_params,
system_config=self.system_params,
request_generator=self.request_generator, request_generator=self.request_generator,
ideal_time=self.ideal_times, ideal_time=self.ideal_times,
bool_dict=self.bool_dict, bool_dict=self.bool_dict,
float_dict=self.float_dict) float_dict=self.float_dict)
self.uml_creator.update_uml(operator_config=self.operator_params,
system_config=self.system_params,
request_generator=self.request_generator,
ideal_time=self.ideal_times,
bool_dict=self.bool_dict,
float_dict=self.float_dict)
def _update_settings(self, _): def _update_settings(self, _):
self.operator_params = self.operSettings.getParams() self.operator_params = self.operSettings.getParams()
self.system_params = self.sysSettings.getParams() self.system_params = self.sysSettings.getParams()

View File

@ -3,7 +3,8 @@ from src.uml.request_generator import Request
class UMLCreator: class UMLCreator:
def __init__(self, def __init__(self,
system_config : dict, system_config: dict,
operator_config: dict,
request_generator: Request, request_generator: Request,
ideal_time: list[float], ideal_time: list[float],
bool_dict: dict, bool_dict: dict,
@ -13,31 +14,27 @@ class UMLCreator:
self.bool_dict = bool_dict self.bool_dict = bool_dict
self.float_dict = float_dict self.float_dict = float_dict
self.scaler = int(system_config['UML_time_scaler']) self.scaler = int(system_config['UML_time_scaler'])
self.WeldTime = operator_config['time_wielding']
def _build_data(self): def _build_data(self):
sig = [ sig = [
'Electrode Closing Algorithm Execute', # Начало закрытия "Closing",
'Electrode Closing Algorithm Done', "Relief",
# 'STEP 3: ME Hold P2 AND Condition Start Force Control', # Конец закрытия и Начало набора усилия "Squeeze",
'STEP 4: ME Force Control', "Welding"
'Position Control ME', # Начало разъезда или 'Posision Control Activated FE'
'Position Control FE', # Начало разъезда
'Position Control Completed ME', # Конец разъезда
'Position Control Completed FE', # Конец разъезда
'STEP 4: ME Force Control Complete', # Конец набора усилия
] ]
closure = self._get_time([sig[0], sig[1]]) closure = [self.bool_dict[sig[0]][1][0], self.bool_dict[sig[0]][2][0]]
compression = self._get_time([sig[2], sig[3]]) compression = [self.bool_dict[sig[2]][1][0], self.bool_dict[sig[2]][2][0]]
# opening = self.__getTime([sig[4], sig[5], sig[6], sig[7]]) opening = [self.bool_dict[sig[1]][1][0], self.bool_dict[sig[1]][-1][0]]
real_data = [ real_data = [
[closure[0], 'closure #green'], [closure[0]*self.scaler, 'closure #green'],
[closure[1], '{-}'], [closure[1]*self.scaler, '{-}'],
[compression[0], 'compression #green'], [compression[0]*self.scaler+0.0001, 'compression #green'],
[compression[1], '{-}'], [compression[1]*self.scaler, 'welding #green'],
# [max(opening[0:2]), 'opening #green'], [opening[0]*self.scaler+0.0001, 'opening #green'],
# [max(opening[2:4]), '{-}'], [opening[1]*self.scaler, '{-}'],
] ]
client_data = [ client_data = [
@ -45,8 +42,8 @@ class UMLCreator:
[0.165 * self.scaler, '{-}'], [0.165 * self.scaler, '{-}'],
[0.166 * self.scaler, 'compression'], [0.166 * self.scaler, 'compression'],
[0.176 * self.scaler, '{-}'], [0.176 * self.scaler, '{-}'],
# [0.180*self.scaler, 'welding'], [0.180*self.scaler, 'welding'],
# [0.200*self.scaler, '{-}'], [0.200*self.scaler, '{-}'],
[0.210 * self.scaler, 'opening'], [0.210 * self.scaler, 'opening'],
[0.300 * self.scaler, '{-}'], [0.300 * self.scaler, '{-}'],
] ]
@ -56,10 +53,10 @@ class UMLCreator:
[self._ideal_time[0] * self.scaler, '{-}'], [self._ideal_time[0] * self.scaler, '{-}'],
[(self._ideal_time[0] + 0.0001) * self.scaler, 'compression #yellow'], [(self._ideal_time[0] + 0.0001) * self.scaler, 'compression #yellow'],
[(self._ideal_time[0] + self._ideal_time[1]) * self.scaler, '{-}'], [(self._ideal_time[0] + self._ideal_time[1]) * self.scaler, '{-}'],
# [0.*self.scaler, 'welding #yellow'], [(self._ideal_time[0] + self._ideal_time[1]+ 0.0001) * self.scaler, 'welding #yellow'],
# [0.*self.scaler, '{-}'], [(self._ideal_time[0] + self._ideal_time[1] + self.WeldTime)*self.scaler, '{-}'],
[(self._ideal_time[0] + self._ideal_time[1] + 0.0001) * self.scaler, 'opening #yellow'], [(self._ideal_time[0] + self._ideal_time[1] + 0.0001 + self.WeldTime) * self.scaler, 'opening #yellow'],
[(self._ideal_time[0] + self._ideal_time[1] + self._ideal_time[2]) * self.scaler, '{-}'], [(self._ideal_time[0] + self._ideal_time[1] + self._ideal_time[2] + self.WeldTime) * self.scaler, '{-}'],
] ]
return real_data, client_data, ideal_data, self.bool_dict return real_data, client_data, ideal_data, self.bool_dict
@ -80,8 +77,11 @@ class UMLCreator:
for i, [signal, changes] in enumerate(bool_data.items()): for i, [signal, changes] in enumerate(bool_data.items()):
name = 'bool_' + str(i) name = 'bool_' + str(i)
times = []
for f in changes:
times.append([str(float(f[0])*self.scaler), f[1]])
self._request_generator.addBinary(name, str(signal), 'biba') self._request_generator.addBinary(name, str(signal), 'biba')
self._request_generator.setTimestamps(name, changes) self._request_generator.setTimestamps(name, times)
self._request_generator.addConcise('RD', 'Real data') self._request_generator.addConcise('RD', 'Real data')
self._request_generator.setTimestamps('RD', real_data) self._request_generator.setTimestamps('RD', real_data)
@ -96,6 +96,7 @@ class UMLCreator:
print(f"SVG generate error: {e}") print(f"SVG generate error: {e}")
def update_uml(self, def update_uml(self,
operator_config: dict,
system_config : dict, system_config : dict,
request_generator: Request, request_generator: Request,
ideal_time: list[float], ideal_time: list[float],
@ -107,6 +108,7 @@ class UMLCreator:
self.bool_dict = bool_dict self.bool_dict = bool_dict
self.float_dict = float_dict self.float_dict = float_dict
self.scaler = int(system_config['UML_time_scaler']) self.scaler = int(system_config['UML_time_scaler'])
self.WeldTime = operator_config['time_wielding']
real, client, ideal, bool_ = self._build_data() real, client, ideal, bool_ = self._build_data()
self._generate_svg(real, client, ideal, bool_) self._generate_svg(real, client, ideal, bool_)

View File

@ -78,6 +78,7 @@ class Request:
self.reqArr.append('}') self.reqArr.append('}')
self.reqArr.append('</style>') self.reqArr.append('</style>')
self.reqArr.append('scale 10 as 50 pixels')
def _addVariables(self): def _addVariables(self):
for var in self.variables: self.reqArr.append(str(var)) for var in self.variables: self.reqArr.append(str(var))

View File

@ -2,9 +2,8 @@ import pandas as pd
import numpy as np import numpy as np
class DiagramParser: class DiagramParser:
def __init__(self, scaler = 1): def __init__(self):
self.data = pd.DataFrame({}) self.data = pd.DataFrame({})
self.scaler = scaler
def setData(self, path): def setData(self, path):
self.data = pd.read_csv(path) self.data = pd.read_csv(path)
@ -34,7 +33,7 @@ class DiagramParser:
for i in range(1, len(signal_values)): for i in range(1, len(signal_values)):
if signal_values.iloc[i] != signal_values.iloc[i - 1]: if signal_values.iloc[i] != signal_values.iloc[i - 1]:
changes.append([float(timeCode.iloc[i])*self.scaler, 'high' if bool(signal_values.iloc[i]) else 'low']) changes.append([float(timeCode.iloc[i]), 'high' if bool(signal_values.iloc[i]) else 'low'])
return changes return changes

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

Can't render this file because it is too large.

View File

Can't render this file because it is too large.

View File

Can't render this file because it is too large.

View File

Can't render this file because it is too large.

View File

Can't render this file because it is too large.

View File

Can't render this file because it is too large.