From 9f8e3d47108aa21d297b30d66898016e24bd7a0b Mon Sep 17 00:00:00 2001 From: Andrew Date: Thu, 5 Dec 2024 12:02:07 +0300 Subject: [PATCH] =?UTF-8?q?dev:=20=D0=BF=D1=80=D0=BE=D0=B8=D0=B7=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4=D0=B8=D1=82=D0=B5=D0=BB=D1=8C=D0=BD=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D1=8C=20=D1=82=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20=D1=81?= =?UTF-8?q?=D1=87=D0=B8=D1=82=D0=B0=D0=B5=D1=82=D1=81=D1=8F=20=D0=BF=D0=BE?= =?UTF-8?q?=20=D1=86=D0=B8=D0=BA=D0=BB=D1=83=20=D0=B2=D1=81=D0=B5=D0=B9=20?= =?UTF-8?q?=D0=B4=D0=B5=D1=82=D0=B0=D0=BB=D0=B8.=20=D0=B8=D0=B7=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D0=B5=D0=BD=D1=8B=20=D1=86=D0=B2=D0=B5=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- params/operator_params.json | 30 +++++++++ .../passportFormer.cpython-310.pyc | Bin 3917 -> 3747 bytes src/controller/passportFormer.py | 6 +- src/gui/__pycache__/plotter.cpython-310.pyc | Bin 4940 -> 5133 bytes src/gui/plotter.py | 57 ++++++++---------- .../base/__pycache__/base.cpython-310.pyc | Bin 14133 -> 14163 bytes src/utils/base/base.py | 7 ++- 7 files changed, 64 insertions(+), 36 deletions(-) diff --git a/params/operator_params.json b/params/operator_params.json index 6b33d31..42e8944 100644 --- a/params/operator_params.json +++ b/params/operator_params.json @@ -342,6 +342,36 @@ 0.507 + ], + "Tesla summary time": [ + 1.824, + 0.516, + 2.160, + 0.492, + 2.160, + 0.636, + 1.908, + 0.492, + 1.788, + 0.420, + 1.800, + 0.540, + 1.812, + 0.444, + 1.884, + 0.660, + 1.884, + 0.521, + 1.848, + 0.557, + 1.848, + 0.510, + 1.860, + 0.510, + 1.908, + 0.534, + 1.908 ] + } \ No newline at end of file diff --git a/src/controller/__pycache__/passportFormer.cpython-310.pyc b/src/controller/__pycache__/passportFormer.cpython-310.pyc index b341e534ac4889b8283cc222f31ac59693b2e73e..2673e956c998f472e40aa13facb0f3eb9a9033b6 100644 GIT binary patch delta 384 zcmYjNO-lk%6us{`&c~a1BN~0U&|Db?L9}QQ5(u?w6$L>gA=EDeo9kIBcTzk zsby#LvNr-G0m;JHn7}wWf#|LQ(nL5RK~k%90$Wg>Kcdo-c5I?OAVX*xqJs7ivVbO9 zW$3P=J$3&v6O(l+9i3vuHadZMOC=iu8iBC@O%NBD&^sqcst+f<fX)I^)vfn z)T$Mt^LD!?dWE>r4ojZudR0s0^gl`|_3mx6!*u5?6t%b`RDtizys~(Dbv$(ou5F^M fZukbv&}LPGg=*E7n(D2rr(mHiwN{jRSGt6C^+!@y_q-v=WFZtMwmH52=jDBTLkN~~4rLvcb&>~oWb`Qt8cdW4G^$m?^> z(*MuqswEBuVduj~7VFu@6ylEf?^pIiz^X4V`L#w`-BAo703 z-Zo-nKKmPIN64#Ri(tiK++?T~rVI!=cF7wOU*tlJIlqwX_(zc_+O@vJ6yfD^K1z#N z=S5egTK9&TT7=d|E*>&HVyL>u3Y_k}h?N@UW>elbf$#f+p3+D8`_Vxp%`d-m`%-pw zss?da={QSO(c-iyH0|KIse)&B-vkS9`XL?aMIWAKpM#3W<|^2;R`CX!b$NkL%y&7( Jb+Z!={sLCpbdCT3 diff --git a/src/controller/passportFormer.py b/src/controller/passportFormer.py index f6b05c9..5b58fc6 100644 --- a/src/controller/passportFormer.py +++ b/src/controller/passportFormer.py @@ -56,8 +56,10 @@ class PassportFormer(BasePointPassportFormer): else: frame = dataframe point_events = {key: [value[0][i], value[1][i]] for key, value in events.items()} - tesla_events = sum([operator_settings[key] for key in self._tesla_stages]) - passports_pocket.append([frame, ideal_data, point_events, tesla_events]) + # TODO: определить время каждого цикла теслы + tesla_time = sum(self._params[0]["Tesla summary time"]) + #tesla_events = sum([operator_settings[key] for key in self._tesla_stages]) + passports_pocket.append([frame, ideal_data, point_events, tesla_time]) return passports_pocket def update_settings(self, params: list[dict, dict]): diff --git a/src/gui/__pycache__/plotter.cpython-310.pyc b/src/gui/__pycache__/plotter.cpython-310.pyc index d72912671c2446ec1e442ec41c96c5db5999d53e..c339f9d1fc267df253124bf3832d91dc8bffc4f0 100644 GIT binary patch delta 2106 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 Optional[pg.LinearRegionItem]: + finish_timestamp: float, + transparency:int) -> Optional[pg.LinearRegionItem]: if start_timestamp and finish_timestamp: region = pg.LinearRegionItem([start_timestamp, finish_timestamp], movable=False) - region.setBrush(pg.mkBrush(self._stage_colors[stage])) + region.setBrush(pg.mkBrush(self._stage_colors[stage][:3] + [transparency])) return region return None @@ -73,7 +74,11 @@ class PlotWidget(BasePlotWidget): plot_widget, legend = self._init_plot_widget(title=channel) settings = description["Settings"] - for dataframe, ideal_data, events, tesla_data in data: + if settings["performance"]: + TWC_time = 0 + ideal_time = 0 + + for cur_point, (dataframe, ideal_data, events, tesla_time) in enumerate(data): df_continuous = pd.concat([df_continuous, dataframe], axis=0) dataframe_headers = dataframe.columns.tolist() stages = events.keys() @@ -81,24 +86,30 @@ class PlotWidget(BasePlotWidget): if settings["stages"] and all([stage in dataframe_headers for stage in stages]): for stage in stages: start_t, end_t = events[stage] - region = self._create_stage_region(stage, start_t, end_t) + region = self._create_stage_region(stage, start_t, end_t, 75) if region: plot_widget.addItem(region) if settings["ideals"]: - for stage in stages: + for i, stage in enumerate(stages): + start_t, _ = events[stage] + end_t = start_t + ideal_data["Ideal timings"][i] + region = self._create_stage_region(stage, start_t, end_t, 125) + if region: + plot_widget.addItem(region) for signal in description["Ideal_signals"]: curve = self._create_curve_ideal(signal, ideal_data[stage], events[stage][0], events[stage][1]) if curve: plot_widget.addItem(curve) if settings["performance"]: - ideal_delta = ideal_data["Ideal cycle"] - delta = 0 - for stage in stages: - delta += events[stage][1] - events[stage][0] - performance = ideal_delta/delta*100 - performance_list.append(performance) + if cur_point == len(data) -1: + ideal_time += sum(ideal_data["Ideal timings"][0:3]) + TWC_time += sum([events[stage][1] - events[stage][0] for stage in ["Closing", "Squeeze", "Welding"]]) + else: + for stage in stages: + TWC_time += events[stage][1] - events[stage][0] + ideal_time += ideal_data["Ideal cycle"] if settings["zoom"]: pass @@ -147,27 +158,11 @@ class PlotWidget(BasePlotWidget): legend.addItem(plot, signal["name"]) if settings["performance"]: - performance_list = np.array(performance_list) - performance_label = QLabel(f"""Performance: best = {round(performance_list.max(),2)} %, worse = {round(performance_list.min(),2)} %, average = {round(performance_list.mean(),2)}%""") - - TWC_start = 0 - TWC_len = df_continuous["time"].max() - TWC_region = QGraphicsRectItem(TWC_start, -1000, TWC_start+TWC_len, 100) - TWC_region.setBrush(pg.mkBrush(0, 255, 0, 255)) - - tesla_start = 0 - tesla_len = 35.488 - tesla_reginon = QGraphicsRectItem(tesla_start, -1100, tesla_start+tesla_len ,100) - tesla_reginon.setBrush(pg.mkBrush(255, 0, 0, 255)) - - time_reduction = round((1 - TWC_len/tesla_len)*100, 2) - time_reduction_label = QLabel(f"Time reduction: {time_reduction} %") - + tesla_TWC = round((1 - TWC_time/tesla_time)*100,2) + tesla_ideal = round((1 - ideal_time/tesla_time)*100,2) + TWC_ideal = round((TWC_time/ideal_time - 1)*100,2) + performance_label = QLabel(f"Сокращение длительности: фактическое = {tesla_TWC} %, идеальное = {tesla_ideal} %, разница идеала и факта = {TWC_ideal}%") layout.addWidget(performance_label) - layout.addWidget(time_reduction_label) - plot_widget.addItem(TWC_region) - plot_widget.addItem(tesla_reginon) - layout.addWidget(plot_widget) widget.setLayout(layout) diff --git a/src/utils/base/__pycache__/base.cpython-310.pyc b/src/utils/base/__pycache__/base.cpython-310.pyc index fdf72ef98d54f18c27e0d0df4417198247c4e44c..0fee76a417842b03138bc1249a4ecfdfc4aad756 100644 GIT binary patch delta 1305 zcmZ{kU2Kz87{`0s?xkHVu#aqQVbE=L_;w80x=k<=1i4{g2{AE2E^xMGsViM_)rNSj{s@Qw1LXDTngRJS zt*WV_O}-xYz;v3bLlyMcQ%OU9m)J`s{@r3fmZwSotCf4z{AsIP$%@zCPxt*HZ6CsQ z^jC|IngV&zOMeGO#h|%w-rJ&f2Xa}U2k2txTA@g`r#ljIIYOV%zw>L#K7||tf{cPl z%EM+uRnRGN6s_LcHi%4!p=(lE4HT5#0=Yem5@611!)QZTL&{M#Vz%|D7teFV~ zEwMe3&UDM~VfletmQICdPQBoaCu5nIgHzLwlZA`FZ`o|3dp*6>xT1fj?L(1sjo9Mi z;x9*k(eEqa1iKfp zFI%T#H=5ScTz?q_BSqpU)kT_|xJcBuFhGXeZI^viGRIeBaO^k@N9wE#so_G(U1$ZB zIz`3JQ87ZBnmhZ)@q$&zR{-l7TvAo4W&~8J(6?6CevQ2Ask|!BmFGCG!l}s@=C31f zUl)zCNu9|rSY)Q4*6V&%CQILfc3O_#;8j-&_gwA<_RvsED1>ITn&>B}o4{?L4cGt} mbf;ytm`ncFHt`w7Ti+8VU2CoK;3VZ3P{Mx|mGr3fwf_NsLN|^8 delta 1312 zcmZ{kUrd`-7{)nm`D`h*6BcO8&_XNFvN56jnF~f2xe*noBumB(A*En5(k7=31_Dy3 z0?sjkcTp1=!?A!c(3Nk~Wn*gGG;#h-cGqlrvn*NS#V(94Ua0SLnj(q%HU0HD@AIDX zopauEdLwcnVvE{rc{%(%_0o&I&XjGu!1_D4?tTI|XuhD#`V-_uU_!rMa7b7qtYs7k z>(x828AOuq6;;|sIkIAqE*MD~wHI=HU-5<~k%=b}hxVDI8~Sx10F0B(;nP&Y1RW?Z zrNfQ^%XrqNGH((6Wi6)TPBT>p3d!S)iDP&HtvdG>A5|k{ljW1F_zlPCp3|$niEsr) zcQ~ldl@bZM?OGI5`ee!T!ZQeO7#IR1!>6TlWmlv(Bp*lUINje>UicQ|4B%#@MOdED z_msL#Vv*X)dRnL8co{xTs?=!&RQ@cKS|GtU{9B*i7N4d+%Ur(q&}R-f3CshhfCb=v zU=ditKJkJ&%RS75V<$Ch7JZ?7RcNd5SFk^N&^wYV&Qi)$NWb~^iw~&QU!|Rezeb(@ zfcQ|2vP>y|saRH{lsssmU;MvnJxB`Do$8x{=<4ouErq~_-oNKj(Q=+OFL#rF(#F1M zFs;R-ec@P~8=;7N8=2SzpE+|FRM#trZUC2n%lgkX9ufEm`W)~j@C75=YpX+A3-yO0 z@tC}dlxx)R*t&mf*VCr%a4;S;vXy;IEFR$R(>XaJ)n^ReDgM6)#uay$oveMn*3k?EBJ