рд▓реЗрдЧреЛ рдПрдирдПрдХреНрд╕рдЯреА рдЗрдВрдЬрди рдХрд╛ рдЧрдгрд┐рддреАрдп рдореЙрдбрд▓

рд╢реБрдн рджреЛрдкрд╣рд░, рдкреНрд░рд┐рдп рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рд╡рд┐рдХрд╛рд╕ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕реЗ рдореИрдВ S & I NRU ITMO рд╡рд┐рднрд╛рдЧ рдореЗрдВ "рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд" рдкрд╛рдареНрдпрдХреНрд░рдо рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
рдПрдХ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдЬреЛ рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдерд╛ рд╡рд╣ рдерд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЬреНрдЮрд╛рди рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ред рдРрд╕рд╛ рдХрд╛рдо рд▓реЗрдЧреЛ рд░реЛрдмреЛрдЯ рдбреНрд░рд╛рдЗрд╡ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдерд╛ред рдЦрд┐рд▓реМрдиреЗ рдЦреЗрд▓рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рдХрд╛рд░рдг, рдФрд░ рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрдареЛрд░ рдордЯрди рдХреЛ рджреЗрдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ ... рдпрд╣рд╛рдБ рдЗрд╕ рд╕реЗрдЯ рдХреЗ рд╡рд┐рд╡рд░рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ: habrahabr.ru/post/166449 ред

рдЖрдЗрдП рдХреНрд░рдо рдореЗрдВ рдЬрд╛рдПрдВ, рдПрдХ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдЗрдВрдЬрди рдХреЗ рдПрдХ рдкрд░реНрдпрд╛рдкреНрдд рдЧрдгрд┐рддреАрдп рдореЙрдбрд▓ рдХреЛ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣рд╛рдВ рдореИрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛: рдирд┐рд░реНрдорд╛рддрд╛рдУрдВ рдиреЗ рдХрд┐рдЯ рдореЗрдВ рдЗрдВрдЬрди рдХреА рддрдХрдиреАрдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рджрд┐рдпрд╛ред Google рдкрд░ рдЦреЛрдЬ рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХреЛ рдХрдИ рд╡рд┐рдХрд▓реНрдк рдорд┐рд▓рддреЗ рд╣реИрдВ (рдЙрджрд╛ред Nxt-unroller.blogspot.ru/2011/01/motor-controller-with-feed-forward-for.html рдпрд╛ philohome.com/nxtmotor/nogmotor.htm ), рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╣ рдЙрди рдЗрдВрдЬрдиреЛрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдерд╛ рдЬреЛ рд░реЛрдмреЛрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдереЗред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рднреМрддрд┐рдХреА рдФрд░ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдпрд╛рдВрддреНрд░рд┐рдХреА рдХрд╛ рдЬреНрдЮрд╛рди рдХрд╛рдо рдЖрдпрд╛ред
рд╣рдо рд▓реИрдЧреНрд░реЗрдВрдЬ-рдпреВрд▓рд░ рд╕рдореАрдХрд░рдг рдХреА рд░рдЪрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдбреАрд╕реА рдореЛрдЯрд░ (рдбреАрд╕реАрдЯреА) рдХреЗ рд░реЛрдЯрд░ рдХреА рд╡рд┐рдВрдбрд┐рдВрдЧ рдореЗрдВ рдХрд╛рдЙрдВрдЯрд░-рдИрдПрдордПрдл рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ, рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
рдЫрд╡рд┐
рдЬрд╣рд╛рдВ w рдореЛрдЯрд░ рдХреЗ рд░реЛрдЯреЗрд╢рди рдХреА рдХреЛрдгреАрдп рдЧрддрд┐ рд╣реИ, w0 рдирд┐рд╖реНрдХреНрд░рд┐рдп рдЧрддрд┐ рд╣реИ, M рдЗрдВрдЬрди рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреНрд╖рдг рд╣реИ, M0 рд╢реБрд░реБрдЖрддреА рдХреНрд╖рдг рд╣реИ, J рдЗрдВрдЬрди рд░реЛрдЯрд░ рдХреА рдЬрдбрд╝рддрд╛ рдХрд╛ рдХреНрд╖рдг рд╣реИред рд╡рд┐рднреЗрджрдХ рд╕рдореАрдХрд░рдг рдХрд╛ рд╣рд▓ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ:
рдЫрд╡рд┐
рдЬрд╣рд╛рдБ J * w0 / M0 = Tm, Tm рдЗрдВрдЬрди рдХрд╛ рдЗрд▓реЗрдХреНрдЯреНрд░реЛрдореИрдХреЗрдирд┐рдХрд▓ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИред
рд╕рдордп рдореЗрдВ рдХреЛрдг рдмрджрд▓рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рд╡реЗрдЧ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЕрднрд┐рдиреНрди рдЕрдВрдЧ рд╣реЛрдЧрд╛:
рдЫрд╡рд┐
рдмрд╕ рд╣рдореЗрдВ рдЗрд╕рдХреА рдЬрд░реВрд░рдд рд╣реИред
рдЕрдЧрд▓рд╛, рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ рдЬреЛ рд╕рдВрдХреЗрддрд┐рдд рд╕рдореАрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдбреАрдкреАрдЯреА рдХреЗ рддреНрд╡рд░рдг рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рджреВрд░ рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП nxcEditor рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП Bricxcc рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред рдЖрдЙрдЯрдкреБрдЯ рдкрд░, рдореБрдЭреЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓реА рдЬрд┐рд╕рдореЗрдВ рдХреЛрдг рдорд╛рди рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдордп рд╕рдВрдХреЗрдд рд╣реИрдВред
рдореИрдВрдиреЗ рд╕реНрдХрд┐рд▓реИрдм рдореЗрдВ рдЗрдВрдЬрди рд╕реЗ рдбреЗрдЯрд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ (рдореИрдЯрд▓реИрдм рдХрд╛ рдПрдХ рдЦреБрд▓рд╛ рдПрдирд╛рд▓реЙрдЧ), рдХрдо рд╕реЗ рдХрдо рдЪреМрдХреЛрд░ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╡рд┐рджреНрдпреБрдд рдЪреБрдореНрдмрдХреАрдп рд╕реНрдерд┐рд░ рдФрд░ рд╕реНрдерд┐рд░ рдЗрдВрдЬрди рдЧрддрд┐ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдЬреЛ рдХрд┐ рдЖ (2) = рдЯреАрдПрдо = 0.081 (рд╕реЗрдХрдВрдб) рдФрд░ рдЖ (1) = w0 = 14.7 [рд░реЗрдб] рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ / рд╕реЗрдХрдВрдб] рдХреНрд░рдорд╢рдГред

data=read("/home/kasper/Number.txt",-1,2); time=(data(:,2)-data(1,2))/1000; angle=data(:,1)*%pi/180; angle=angle'; time=time'; f=[time;angle]; function e=G(a, z), e = z(2) - a(1)*(z(1)-a(2)+a(2)*%e^(-z(1)/a(2))); endfunction a0=[1;4]; [aa,er]=datafit(G,f,a0); model=aa(1)*(time+aa(2)*(%e^(-time/aa(2))-1)); xtitle('    ','time','$\dot\phi,[\frac{}{}]$'); plot2d(time,model,[5]); a=gca(); a.children.children(1).thickness=2; plot2d(time,angle,[2]); a.children.children(1).thickness=2; a.children.children(1).text=["$\dot\phi(t)$"]; 

рдЫрд╡рд┐
рдФрд░ рдЗрдВрдЬрди рдХреЗ рд▓рд┐рдП рд╕рд╛рдЗрди рд╡реЗрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдпреЛрдВ рдХреА рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдЧрдгрд┐рддреАрдп рдореЙрдбрд▓ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЬрди рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЧреНрд░рд╛рдл рдЫрд╡рд┐ рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЬрди рдХрд╛ рдЧреНрд░рд╛рдл рдореЛрдЯрд░ рд╕рд░реНрдХрд┐рдЯ рдореЗрдВ рдкреНрд░рддрд┐рд░реЛрдз рдХреЗ рдЕрдВрддрд░ рдХреЗ рдХрд╛рд░рдг рдиреАрдЪреЗ рддреИрд░рддрд╛ рд╣реИ, рдЬрдм рдЗрд╕реЗ рджрдХреНрд╖рд┐рдгрд╛рд╡рд░реНрдд рдФрд░ рд╡рд╛рдорд╛рд╡рд░реНрдд рдШреБрдорд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдкрд╛рд╡рд░ рдХреА):
рдЫрд╡рд┐
рдЕрдм рдХреЛрдИ рднреА рдЗрдВрдЬрди рдХреЗ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕рдХреЗ рдХреНрд╖рдг рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╡рд┐рджреНрдпреБрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЗрдВрдЬрди рд╕рдореАрдХрд░рдгреЛрдВ рдХреА рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:

рдЬрд╣рд╛рдБ ke, рдХрд┐рдореА рдбрд┐рдЬрд╝рд╛рдЗрди рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИрдВ, U = 7 [V] рдирд┐рдпрдВрддреНрд░рдг рд╡реЛрд▓реНрдЯреЗрдЬ рд╣реИ, L = 0.0047 [H] рдШреБрдорд╛рд╡рджрд╛рд░ рдкреНрд░реЗрд░рдг рд╣реИ, Rr = 6 [рдУрдо] рд░реЛрдмреЛрдЯ рд╡рд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рдкреНрд░рддрд┐рд░реЛрдз рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд░реНрддрдорд╛рди I = 0.9 [рдП] рдХреЛ рдорд╛рдкрд╛ (рдЬрдм рд░реЛрдЯрд░ рдХреЛ рд▓реЙрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рд░реЛрдЯрд░ рдХреА рдЬрдбрд╝рддрд╛ рдХреЗ рдХреНрд╖рдг рдХреА рдЧрдгрдирд╛ рдХреАред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореБрдЭреЗ рдЗрдВрдЬрди рджреНрд╡рд╛рд░рд╛ рдЬрд╛рд░реА рд╢реБрд░реБрдЖрддреА рдЯреЛрдХрд╝ рдорд┐рд▓рд╛:

рд╕рдореАрдХрд░рдг I = 48 рдореЗрдВ рдХрдореА рдЧреБрдгрд╛рдВрдХ рд╣реИред рд╡рд░реНрддрдорд╛рди рдЯреНрд░рд╛рдВрд╕рдлрд░ рдЧреБрдгрд╛рдВрдХ 0.42 рдерд╛, рдЬреЛ рдЪрд╛рд▓реВ рд╢рд╛рдлреНрдЯ рджреНрд╡рд╛рд░рд╛ рдЖрдЙрдЯрдкреБрдЯ рд╢рд╛рдлреНрдЯ рдкрд░ рд╢реБрд░реБрдЖрддреА рдЯреЛрдХрд╝ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ

0.48 рдХреЗ рдмрд░рд╛рдмрд░ рд╕рдВрдЪрд░рдг рдХреЗ рдХрд╛рдЙрдВрдЯрд░-рдПрдордПрдо рдЧреБрдгрд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рд▓рд╛рдЧреВ рд╡реЛрд▓реНрдЯреЗрдЬ рдХреЗ рд╕реНрдерд┐рд░ рдХреЛрдгреАрдп рд╡реЗрдЧ рдХреЗ рдЕрдиреБрдкрд╛рдд рдХреЗ рд░реВрдк рдореЗрдВ рдХреА рдЧрдИ рдереА

рдЕрдЧрд▓рд╛ рдХрджрдо DPT рдХреЗ рд░реЛрдЯреЗрд╢рди рдХреЗ рдХреЛрдг рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдирд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдЖрдиреБрдкрд╛рддрд┐рдХ рдирд┐рдпрд╛рдордХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
 #define NEED_ANGLE 180 #define WORK_TIME 3000 #define KOL_EXPS 3 #define PORT OUT_A #define KP 14 task main() { int angle_now, battery_voltage, power_percent, time = 0; int i, str_size, file_size = 8224; byte file; string str = "3lab.txt"; float need_voltage, angle_diff; DeleteFile(str); CreateFile(str, file_size, file); while(time < WORK_TIME) { angle_now = MotorRotationCount(PORT); time = CurrentTick() - FirstTick(); angle_diff = NEED_ANGLE - angle_now; angle_diff = angle_diff * 3.1415 / 180; need_voltage = KP * angle_diff; need_voltage *= 1000; battery_voltage = BatteryLevel(); power_percent = need_voltage / battery_voltage * 100; if(abs(power_percent) > 100) power_percent = 100 * sign(power_percent); OnFwd(PORT, power_percent); str = NumToStr(angle_now) + " " + NumToStr(time); WriteLnString(file, str, str_size); Wait(MS_5); } Off(PORT); CloseFile(file); } 

рдФрд░ рдпрд╣рд╛рдВ рд╕рдЪреНрдЪрд╛рдИ рдХрд╛ рдХреНрд╖рдг рдЖрддрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рдореЙрдбрд▓ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдХрд┐рддрдирд╛ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ (рдореЙрдбрд▓ рдХреЛ рд╕реНрд▓реИрдм рдПрдХреНрд╕рдХреЛрд╕ рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред
рдЫрд╡рд┐
рдореИрдВ рдореЙрдбрд▓ рдФрд░ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╡рдХреНрд░ рд▓рд╛рддрд╛ рд╣реВрдВ:
рдЫрд╡рд┐
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ 3% рд╕реЗ рдЕрдзрд┐рдХ рдХреЗ рд╡рд┐рдЪрд▓рди рд╕реЗ рд╕рд╣рдордд рд╣реИред
рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рд░рд▓-рд╕реЗ-рдЦреБрдж рдХреЗ рдкреНрд░рдпреЛрдЧ рдЧрдгрд┐рддреАрдп рдореЙрдбрд▓рд┐рдВрдЧ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕рд┐рджреНрдзрд╛рдВрдд рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рд╕рдордЭрдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддреЗ рд╣реИрдВред
рдмрджрд▓реЗ рдореЗрдВ, рдореИрдВ рдХрд╛рдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдореИрдиреБрдЕрд▓ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВред
рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рд╕реБрдЭрд╛рд╡ рд╕реБрдирдХрд░ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реБрдИред


Source: https://habr.com/ru/post/In178103/


All Articles