Compare commits

..

No commits in common. "059f4b5533613592c74528ea8c7ff088ddc1fecf" and "c184397c6cd292e0a234ac34c8fbe95592ea475e" have entirely different histories.

16 changed files with 2067 additions and 69 deletions

2000
2024_10_28-17_03_34.csv Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
from src.OptAlgorithm.AutoConfigClass import AutoConfigClass
from OptAlgorithm.AutoConfigClass import AutoConfigClass
from numpy import sqrt
class ConstantCalculator(AutoConfigClass):

View File

@ -1,6 +1,6 @@
from src.OptAlgorithm.OptTimeCalculator import OptTimeCalculator
from src.OptAlgorithm.AutoConfigClass import AutoConfigClass
from src.OptAlgorithm.ConstantCalculator import ConstantCalculator
from OptAlgorithm.OptTimeCalculator import OptTimeCalculator
from OptAlgorithm.AutoConfigClass import AutoConfigClass
from OptAlgorithm.ConstantCalculator import ConstantCalculator
from numpy import cos, sin, sqrt, cbrt, arcsin

View File

@ -1,7 +1,7 @@
from numpy import sqrt, arcsin, arccos, cos, sin
from src.OptAlgorithm.AutoConfigClass import AutoConfigClass
from src.OptAlgorithm.ConstantCalculator import ConstantCalculator
from OptAlgorithm.AutoConfigClass import AutoConfigClass
from OptAlgorithm.ConstantCalculator import ConstantCalculator
class OptTimeCalculator(AutoConfigClass):

View File

@ -1,11 +1,14 @@
import pyqtgraph as pg
import numpy as np
from src.gui import qt_settings as qts
from src.OptAlgorithm import OptAlgorithm
from utils import read_json, DiagramParser
from uml import Request, UMLCreator
#нижний fe x1
import qt_settings as qts
from OptAlgorithm import OptAlgorithm
class PlotWindow:
class Application:
def __init__(self,
opt: OptAlgorithm,
bool_dict: dict,
@ -18,9 +21,9 @@ class PlotWindow:
self.scaler = 1000
self._getIdealTimings()
self._init_app()
self.WeldTime = 0.5 #[sec]
self.alpha = 100 #[0-255 прозрачность фона]
self.WeldTime = 0.5 #[sec]
self.alpha = 100 #[0-255 прозрачность фона]
def _init_app(self):
self.app = pg.mkQApp("Plotting")
self.win = pg.GraphicsLayoutWidget(show=True, title="")
@ -85,13 +88,13 @@ class PlotWindow:
data.append([x_fe, x_me, v_fe, v_me, f])
data = np.array(data).T
return data
def _plotRealData(self):
for i, (key, dat) in enumerate(self.float_dict.items()):
dat = np.array(dat).T
dat[0] = dat[0]*self.scaler
curve = pg.PlotDataItem(dat[0], dat[1], pen=pg.mkPen(color=qts.colors[i], width=2), name=key, autoDownsample=True, downsample=True)
if 'Electrode Force' in key:
if 'Electrode Force' in key:
self.p11.addItem(curve)
self.l11.addItem(curve, key)
elif 'Rotor Position' in key:
@ -104,7 +107,7 @@ class PlotWindow:
def _plotIdealData(self, times):
data = self._form_idealdatGraph(times)
x_fe = pg.PlotDataItem(times, data[0]*1000, pen=pg.mkPen(color=qts.colors[8], width=2), name='x_fe', autoDownsample=True, downsample=True)
x_me = pg.PlotDataItem(times, data[1]*1000, pen=pg.mkPen(color=qts.colors[9], width=2), name='x_me', autoDownsample=True, downsample=True)
v_fe = pg.PlotDataItem(times, data[2]*1000, pen=pg.mkPen(color=qts.colors[8], width=2), name='v_fe', autoDownsample=True, downsample=True)
@ -127,12 +130,12 @@ class PlotWindow:
def _addBackgroundSplitter(self):
alpha = self.alpha
x = [[0, self.idealPhase0],
[self.idealPhase0, self.idealPhase1],
[self.idealPhase1, self.idealPhase2],
x = [[0, self.idealPhase0],
[self.idealPhase0, self.idealPhase1],
[self.idealPhase1, self.idealPhase2],
[self.idealPhase2, self.idealPhase3]]
y01 = [10000, 10000]
y0_1 = [-10000, -10000]
y01 = [100000000000, 100000000000]
y0_1 = [-100000000000, -100000000000]
for i, _ in enumerate(x):
a01 = pg.PlotDataItem(_, y01, pen=pg.mkPen(color=qts.colors[8], width=2), name=' ')
a0_1 = pg.PlotDataItem(_, y0_1, pen=pg.mkPen(color=qts.colors[8], width=2), name=' ')
@ -145,4 +148,40 @@ class PlotWindow:
self.p11.setYRange(-1000, 5000)
self.p12.setYRange(-50, 250)
self.p13.setYRange(-400, 400)
self.p13.setYRange(-400, 400)
def get_ideal_timings(opt: OptAlgorithm) -> list[float]:
data = opt.Ts
ideal_time = [data['tclose'], data['tgrow'], opt.getMarkOpen()]
return ideal_time
def main():
operator_params = read_json("params/operator_params.json")
system_params = read_json("params/system_params.json")
opt_algorithm = OptAlgorithm(operator_config=operator_params, system_config=system_params)
ideal_times = get_ideal_timings(opt_algorithm)
parser = DiagramParser()
parser.setData("2024_10_28-17_03_34.csv")
bool_dict = parser.getBoolDict()
float_dict = parser.getFloatDict()
request_generator = Request(server_url='http://www.plantuml.com/plantuml/svg/')
uml_creator = UMLCreator(request_generator=request_generator,
ideal_time=ideal_times,
bool_dict=bool_dict,
float_dict=float_dict)
uml_creator.update_uml()
app = Application(opt=opt_algorithm,
bool_dict=bool_dict,
float_dict=float_dict)
app.updatePlots()
pg.exec()
if __name__ == '__main__':
main()

View File

@ -235,6 +235,7 @@ QPushButton:disabled {
"""
colors = [
'#FF6F61', # яркий коралловый
'#6B5B95', # приглушенный фиолетовый
@ -248,8 +249,8 @@ colors = [
'#45B8AC' # мягкий мятный
]
RGBA = [(255, 255, 0),
(32, 178, 70),
RGBA = [(124, 252, 0),
(255, 215, 0),
(255, 69, 0),
(123, 104, 238)
]

View File

@ -1 +0,0 @@
from .plot_window import PlotWindow

View File

@ -1,42 +0,0 @@
import pyqtgraph as pg
from utils import read_json, DiagramParser
from uml import Request, UMLCreator
from OptAlgorithm import OptAlgorithm
from gui import PlotWindow
def get_ideal_timings(opt: OptAlgorithm) -> list[float]:
data = opt.Ts
ideal_time = [data['tclose'], data['tgrow'], opt.getMarkOpen()]
return ideal_time
def main():
operator_params = read_json("params/operator_params.json")
system_params = read_json("params/system_params.json")
opt_algorithm = OptAlgorithm(operator_config=operator_params, system_config=system_params)
ideal_times = get_ideal_timings(opt_algorithm)
parser = DiagramParser()
parser.setData("trace_samples/2024_11_01-09_39_17.csv")
bool_dict = parser.getBoolDict()
float_dict = parser.getFloatDict()
request_generator = Request(server_url='http://www.plantuml.com/plantuml/svg/')
uml_creator = UMLCreator(request_generator=request_generator,
ideal_time=ideal_times,
bool_dict=bool_dict,
float_dict=float_dict)
uml_creator.update_uml()
app = PlotWindow(opt=opt_algorithm,
bool_dict=bool_dict,
float_dict=float_dict)
app.updatePlots()
pg.exec()
if __name__ == '__main__':
main()

View File

@ -1,4 +1,5 @@
from src.uml.request_generator import Request
import os
from uml.request_generator import Request
class UMLCreator:
@ -17,7 +18,7 @@ class UMLCreator:
sig = [
'Electrode Closing Algorithm Execute', # Начало закрытия
'Electrode Closing Algorithm Done',
# 'STEP 3: ME Hold P2 AND Condition Start Force Control', # Конец закрытия и Начало набора усилия
'STEP 3: ME Hold P2 AND Condition Start Force Control', # Конец закрытия и Начало набора усилия
'STEP 4: ME Force Control',
'Position Control ME', # Начало разъезда или 'Posision Control Activated FE'
'Position Control FE', # Начало разъезда

View File

@ -50,7 +50,7 @@ class Request:
def generateSVG(self):
self._compileUML()
filename = abspath('UML.txt')
filename = abspath('../UML.txt')
self.server.processes_file(filename, outfile='UML.svg')
#result = self.server.processes(self.stringUML)
#return result