informatyka w mechatronice - opracowanie
TRANSCRIPT
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
INFORMATYKA W MECHATRONICE
Opracował: Grzegorz Banaszek
GDAŃSK 2012
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
SPIS TREŚCI
I. PODSTAWOWE WIADOMOŚCI Z MATLABA 3
II. ZASTOSOWANIA 34
WYTRZYMAŁOŚĆ MATERIAŁÓW 34
ELEKTROTECHNIKA 38
CAŁKOWANIE 45
KINEMATYKA 49
III. DYNAMIKA UKŁADÓW WIELOMASOWYCH.
METODA NEWMARKA CAŁKOWANIA RÓWNAŃ
RUCHU 53
IV. ALGORYTMY SORTOWANIA 61
V. PAKIET MATLAB I SIMULINK W AUTOMATYCE I
STEROWANIU 65
VI. ZASTOSOWANIE PROGRAMU MATHCAD
Wyznaczenie zarysu teoretycznego wałka 79
VII. BIBLIOGRAFIA 83
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
I. PODSTAWOWE WIADOMOŚCI Z MATLABA
1. Funkcja „demo”.
demo (
2. Okna użytkowe:
Command Window
Command History
Current Directowy
Workspace
…
Help
3. Czyszczenie ekranu komend.
clc (
4. Wprowadzanie macierzy.
w Matlabie
a=[1_2;3_4]
b=[7;8;9]
Oddzielanie elementów w wierszu odbywa się za pomocą spacji lub przecinka.
5. Instrukcja przypisania.
zmienna= wartość_lub_wyrażenie , np.
z=3.78
j13=2^2+8*3-7
6. Użycie średnika.
Gdy na końcu wyrażenia matematycznego znajduje się [;]=> wynik nie jest
wyświetlany!!
Gdy nie ma [;]=> wynik pojawia się.
d=a+c; (
d=a+c (
7. Odwołanie do elementów macierzy.
Ola=[1,2,3;4,5,6;7,8,9]
Ola(1,2) ( ← wyświetla jeden wyraz macierzy
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
Ola(:,3) ( ← wyświetlą cała kolumnę
Ola(2,:) ( ← wyświetla cały wiersz
Ola(1:2;1:2) ( ← wyświetla podmacierz
8. Informacje o zmiennych.
who (
whos (
9. Użyteczne skróty i oznaczenia.
NaN- Not a Number
inf- infinity (∞)
ans- answer
10. Przywołanie ostatnich komend.
klawisz kursora w górę i w dół
11. Operatory matematyczne.
2-3+4*8^3 (
4/8 (
4\8 (
12. Liczby zespolone.
i=sqrt(-1)
j=sqrt(-1)
z1=3+i*5
z2=8-7.5*i
13. Format i precyzja wyświetlanych wyników.
long, long e
short, short e
format ___ hex
rat
rank
pi (
format long (
pi (
format long e (
+
^ /,\
\ * - +
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
pi (
format rat (
8/7 ( ← nie podzieli (zostawi ułamek)
format hex (
pi/3 ( ← zapisane w postaci cyfr i pierwszych liter alfabetu
format short ( ← powrót
14. Pomoc!!
help instrukcja ,np.
help plot (
help format (
help roots (
15. Zapamiętanie zmiennych.
save all ( ← zapamiętuje wszystko
save zm1 zm2 zm3 (
save a b c ( ← zapisane w pliku matlab.mat
save nazwa_pliku ← ASCII- zapisanie pliku jako tekstowego
16. Przywołanie (wczytanie).
load (
load nazwa_pliku (
help load (
17. Kasowanie zmiennych.
clear zmienna1 zmienna2 (
clear all ( ← wszystkie zmienne
18. Komentarze.
% dowolny ciąg znaków
%DANE
.
.
.
%WYKRESY
plot(x,y) %rysowanie wykresu
19. Zmienne łańcuchowe, tzw. „stringi”.
nazwa zmiennej= ’dowolny ciąg znaków’
z1=’kotek’
z2=’KASIA’
z3=’Kocham pana X’
z4=’#$%^&*’
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
z1/12 (
ans*12 (
20. Operacje macierzowe i tablicowe.
macierzowe (matrix) tablicowe (array)
+ +
- -
* .*
/ ./
\ .\
^ .^
W Matlabie
a=[1,1;1,1] (
b=[2,2;2,2] (
a*b
a.*b
wg rachunku
macierzowego (tak
jak w matematyce)
operacje ‘element
przez element’
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
21. Operacje logiczne („Boole’eanowskie”).
Matematyka Matlab
> >
< <
≥ >=
≤ <=
= = =
≠ ~=
and &
or |
k=4
m=3
k>m (
k= =m (
k=m (
22. Operacje DOS-owskie, dyskowe.
dir (
type… (
delete…(
cd (
23. Macierze predefiniowane.
ones() ← macierz jedynek
eye() ← macierz jednostkowa
rand() ← macierz liczb losowych
zero() ← macierz złożona z samych zer
np.
ones(8,7) (
ones(5) (
eye(7) (
rand(3,4) (
zeros(5,4) (
24.* Wybór wierszy i kolumn oraz podmacierzy (bloków).
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
z=x
x
x
x
x
x
x
x x x x
x x x x
x x x x
x x x
x x x
x x
x
x x
x x
x x
x x x x x
x
x
x
x
x x x x x
kol3=z(3,:)
wiersz5=z(:,5)
blok=z(3:6,2:4)
24.** Zmienne zakresowe- generowanie wektorów wierszowych i kolumnowych.
zmienna=wartość1:krok_przyrostowy:wartość2
lub, gdy przyrost=1
zmienna=wartość1:wartość2
x=-1:0.3:1 (
y=1:10 (
25. Niektóre funkcje standardowe.
asin()
acos()
atan()
sinh()
cosh()
abs()= | | → wartość bezwzględna
log()≡ln() !!!
log10≡
sqrt => pierwiastek kwadratowy
exp≡
round() → zaokrąglenie
floor() → zaokrąglenie w dół
ceil() → zaokrąglenie w górę
fix() → zaokrąglenie w kierunku zera
26. Grafika- podstawowe wykresy.
plot()
plot3()
mesh()
surf()
contour()
polar() ← wykres okrągły
stairs() ← wykres schodkowy
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
semilogx()
semilogy()
bar() ← wykres słupkowy
bar3() ← wykres słupkowy trójwymiarowy
27. Opisy wykresów i inne funkcje.
title(x)
xlabel()
ylabel()
zlabel()
axis() ← skalowanie osi
grid ← naniesienie siatki
text()
gtext()
clf
28. Kilka wykresów na jednym ekranie.
subplot(i,j,k)
gdzie:
i- ilość wierszy
j- ilość kolumn
k- numer aktualnego wykresu
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
29. Przykład grafiki.
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
30. Zmiana bieżącego katalogu (napędu roboczego)
31. Pisanie skryptu programu w edytorze.
File → New → M-File
ikona - otwarcie nowego pliku w edytorze
32. Przykładowy program.
33. Uruchomienie (wykonanie programu).
wpisać wybrać zmienić
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
2. W edytorze nacisnąć ikonę
‘save and run’
1. w okienku komend wpisać
nazwa(
zapamiętać w bieżącym oknie
34. Nazwa pliku matlabowego.
bez znaków zastrzeżonych ({#$%^&*)
nie może rozpoczynać się od cyfr i nie może być liczbą ‼ 1ala.m
nie powinna być taka sama jak funkcje i predefiniowane zmienne
w Matlabie
35. Zapamiętanie.
File → save →
File → save as →
- ikona save
36. Rozwiązywanie układów równań liniowych.
* =
W edytorze‼
37. Zastosowanie w statyce i wytrzymałości.
nazwa
nazwa
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
1cos( 3 0
2
sin( ) 0
1 1sin( ) 3 3 4 0
2 3
x ax
y ay b
ia b
P R P q l
P R R P
M P L M q L L R L
1cos( 3
1 0 0 3
0 1 1 sin(
0 0 4 1 1sin( 3 3
2 3
ax
ay
b
P q LR
R P
L RP L M q L L
W edytorze‼
38. Wyprowadzenie tekstu na ekran.
disp(‘dowolny ciąg znaków’)
np.
disp(‘podaj a= ’)
W edytorze
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
39. Wprowadzanie danych z klawiatury.
zmienna=input('ewentualny tekst') z1=input('podaj z1') Ola=input('podaj zmienną "Ola"') Napisać program obliczający pierwiastki trójmianu. Wprowadź, b, c z klawiatury. Wyniki wyprowadź na ekran. W edytorze‼
40. Wielomiany
a) pierwiastki- roots (współczynniki) ← wektor wierszowy
wsp=[2.7_-3.4_0_1_-2]
lub
pierw=roots(wsp)
pierw=roots([2.7_-3.4_0_1_-2])
b) wyznaczanie wielomianu (jego współczynników) na podstawie pierwiastków
poly(pierw,0)
wsp1=poly(pierwiastki,0)
wsp2=wsp1*2.7
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
c) wyznaczenie wartości wielomianu w wyznaczonym punkcie
polyval(wsp,punkt)
polyval(wsp,0)
d) pochodna z wielomianu
pochodna=polyder(wsp)
e) mnożenie wielomianów
conv(wsp1,wsp2)
(
wsp1=[1,0,1,1]
wsp2=[1,-3]
iloczyn=conv(wsp1,wsp2)
f) dzielenie wielomianów
denconv(wsp1,wsp2)=iloraz
41. Pisanie złożonych wyrażeń matematycznych.
x=3
z=4
a=7
b=5
c=8
42. Dla punktu M mechanizmu okresu narysować.
a. równanie ruchu
b. tor ruchu
c. prędkość i jej składowe
d. promień krzywizny toru
Wykresy umieścić na jednym ekranie
1. Równania ruchu
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
1( ) cos( )
3
1 7( ) ( )sin( ) sin( )
3 3
,
0
m
m
m
x t r
y t r r r r
t
const
z
2. Prędkości
2 2
1 1sin( ) sin( )
3 3
7cos( )
3
x
y
x y
dx dv x r r
dt dt
dyv y r
dt
v v v
3. promień krzywizny toru 2 2
2 2 2 2 2
2 2( )2 2
n
n
n t n t
x y y x x y yxt x y
v va
a
a a a a a a
d v v dv v a v advdva v v
dt dt dt dt v
4. przyśpieszenia
2
2
2 2
1cos( )
3
7sin( )
3
x x
y y
x y
a x v r
a y v r
a a a
W oknie edytora:
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
43. Tworzenie menu przyciskowego.
z=menu(‘tytuł’,’przycisk1’,’przycisk2’…’przycisk n-ty’)
z=1 z=2
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
44. Pętle- instrukcje powtórzeniowe
for- stosowana jest, gdy z góry znamy liczbę powtórzeń, bezwarunkowo
while- stosowana jest, gdy znamy lub nie znamy liczby powtórzeń
Pętla warunkowa wykonywana jest, gdy spełniony jest warunek.
45. Przykład: oblicz sumę
for while
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
pełna wersja
if warunek1
instrukcja
.
.
elseif
instrukcja2
.
.
else
instrukcja3
.
.
end
46. Napisz program obliczający silnię z „n” dla obu pętli.
47. Instrukcja warunkowa „if”.
okrojona wersja
if warunek
instrukcja
.
.
end
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
48. Korzystając z instrukcji „if” określ rodzaj pierwiastków trójmianu
49. Zapisać w Matlabie wyrażenie
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
50. Rozmiar i długość wektora macierzy
size(macierz)
length(wektor)
x=-pi/3:pi/18:3*pi; (
n=length(x) (
A=rand(17,180); (
rozmiar_macierzy=size(A) (
51. Do belki przedstawionej na rysunku wykonać wykresy Mg i T oraz wyznaczyć
bezpieczną wartość średnicy d z warunku bezpieczeństwa wg hipotezy Hubera.
1 2
1 2
13 2 2 0 ?
2
1 23 2 3 (2 3 ) 0 ?
2 3
13 0
2
a b b
b a a
y a b
M PL M M q L L R L R
M P L M M R L q L L L R
P R R P q L
3
1
3
1 2
(0; )
1( ) ( ) ( ) ( ;3 )
6 31
( ) ( ) ( 3 ) (3 ;4 )6 3
a
a b
Px x L
qMg x Px M R x l x l x L L
Lq
Px M R x l x l R x L M x L LL
2
2
3( ) ( )
6 33
( )6 3
a
a b
P
qT x P R x l
Lq
P R R x lL
0
2 2
0
2
6 3
g s
xx
red dop
M M
W WW
g
L=1,2m
q=1,4kN
wsp_bez=2.5
Redop
x
Re=360MPa
stal45
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
332
Re
redM xd
52. Powtórzenie do kolokwium
I. Co oznaczają symbole i wyrażenia:
ans
abs()
eye()
:
;
[ ]
II. Napisz program wyznaczający reakcje ramy.
III. Wyznacz wszystkie pierwiastki wielomianu.
5 33 2 16,7 0x x x
IV. Korzystając z pętli „while” oblicz: 1
923
28
1
3
i
i
ii
i
V. Na jednym wykresie narysować dwie funkcje:
0,7
0,4
( ) 10 sin( )
( ) 13 | sin( ) | cos( )2
x
t
y x e x
ty t e t
0,5
0,6
dla x
dla t
3
4
co
co
nanieść siatkę
umieścić tytuł
podpisać obie osie x i y
y(x) → kolor zielony, symbol - ‘o’
y(t) → kolor czarny, symbol - ‘x’
VI. Korzystając z pętli „for” utworzyć macierz H o elementach: H(i,j)=i+j, gdzie:
i- numer wiersza
j- numer kolumny
wymiar macierzy:8x10
VII. Wprowadzić macierz w Matlabie
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
232
3 17
3 | 7 |log8 | 1|
( 2) 0,38
1ln 0, 43 10
(sin )
x xx
x xA
abx
tg x x cde
VIII. Na jednym ekranie umieścić 3 wykresy
1- słupkowy wykres sin(x), -5≤ x ≤5, co 0,5
2- y x , oś y logarytmiczna
3- 3| 1|y x
IX. Napisać polecenie wyświetlania wyników w formacie „długim” (z kilkunastoma
miejscami po przecinku).
X. Utworzyć macierz losową LOS o wymiarach 10x15. Następnie wybrać z macierzy
kolumnę 7, wiersz 8, blok od 4 do 7 wiersza i od 3 do 5 kolumny.
XI. Korzystając z instrukcji „if” zapisać w Matlabie
Krok co 1
115.
Narysować f(x).
XII. Utwórz menu użytkownika o postaci:
Naciśnij
opcja 1
opcja 2
opcja 3
koniec
XIII. Rozwiąż macierzowy układ równań
7,3
3 0
7,35 18,75
x y z
x y
y z
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
53. Podział odcinka (przedziału) na n jednakowych części
linspace(p,k,n) , gdzie p- początek
k- koniec
n- ilość odcinków
długość przedziału =1
k p
n
x=linspace(2,105,5) (
y=linspace(-3,20,7) (
54. Podział odcinka wg skali logarytmicznej
logspace(p,k,n)
omega=logspace(0,10000,10) (
55. Wyznaczenie częstości i postaci drgań nietłumionych i tłumionych
I. Drgania nietłumione 2, ( , )postać eig K M , gdzie:
postać- wektor postaci drgań 2- kwadrat częstości własnej
K- macierz sztywności
M- macierz bezwładności
2
II. Drgania tłumione
0Mq Cq Kq
[ , ] ( )q eig A
1 1
0 I
A
M K M C
56. Wyznacz postacie i częstości drgań własnych układu
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
1
2
3
0 0
0 0
0 0
m
M m
m
1 2 3 5 6 2 3 5
2 3 2 3 4 4
5 4 4 5
k k k k k k k k
K k k k k k k
k k k k
W edytorze
57. Drgania tłumione
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
0 0
0 4 0
0 0 2
m
M m
m
0 0
0 2 2
0 2 2
k
K k k
k k
3 3 0
3 3 0
0 0 2
c c c
C c c
c
1 1
A
M K M C
, gdzie: Ф- zerowy blok
I- blok macierzy jednostkowej
W edytorze‼
58. Wyznaczyć przyśpieszenia liniowe, kątowe, siły i reakcje układu linowego krążkowo-
blokowego
r=0,3m
m=2kg
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
μ=0,1
h=3m
R=1m
210
mg
s
2
10 0
0
0
2
0
0
a th s s v t
s
v
max
1
2ht
a
max 0 1 max max 1 max v v a t v a t
1 1
12
33
3 2
2
1
8 8
0
0
x
y g
ma mg S
a
R
a
R
ma S T
T N
N mg
R S
R M S
1
2
0 2
1
2
8 0 0 1 0 0 0 0 0
0 0 0 1 1 0 0 0
0 0 0 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0 0
0 0 0 0 1 0 0 1 0
0 0 0 1 0 0 0 0 1
10 1 0 0 0 0 0 0
10 1 0 0 0 0 0 0
x
y
m a
m a
J R r
S
S
T
N
RR
Rr
8
0
0
0
0
0
0
g
mg
mg
M
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
W edytorze‼
59. Pisanie funkcji (podprogramów).
60. Napisz funkcję, która oblicza pole prostokąta. Wprowadzone parametry to a i b.
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
W edytorze‼
Wywołanie funkcji:
pole1=pole_prost(10,8) (
pole2=pole_prost(-7,6) (
help pole_prost (
61. Instrukcja „switch” (przełącznikowa)
switch (zmienna)
case wartość_1
instrukcja_1
case wartość_2
instrukcja_2
case wartość_n
instrukcja_n
otherwise
instrukcja
end
62. Napisz program przydzielający ocenę z kolokwium na podstawie otrzymanych
punktów
0-5 - ndst
5.5, 6- dst
6.5 – dst+
7,7.5 – db
8,8.5 – db+
9,9.5 – bdb
10 – celujący
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
Wywołanie
ocena(10) (
ocena(7.5) (
ocena(1.5) (
help ocena (
63. Rozwiązywanie równań różniczkowych
k p
0
plik z równaniem t -t opisującym
muszą być
ode45( 'równanie' , zakres_t , X , opcje)
wartośćpoczątkowa
( 2 ) ( ) cos( )
3cos( )
my by k k y F t t t
b k ty y y t
m m m
W edytorze‼
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
odrębny plik do definicji równania różniczkowego:
64. Aproksymacja
a) wielomianowa
polyfit(x,y,n)
Przybliżyć wielomianem zależność wzniosu popychacza krzywki mechanizmu
rozrządu w funkcji kąta obrotu wała rozrządu
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
65. Interpolacja
'linear'
interp1(x,y,xi, 'spline' jednowymiarowa
'cubic'
interp2() dwuwymiarowa
interp3() trójwymiarowa
W edytorze‼
66. Napisać funkcję obliczającą dwumian Newtona, która przywołuje funkcję obliczającą
silnię.
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
!
!( )!
nn
k n kk
Funkcja obliczająca silnię:
Funkcja obliczająca dwumian Newtona:
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
II ZASTOSOWANIA
Wytrzymałość materiałów
Kratownica
Stosując metodę równoważenia węzłów wyznaczyć reakcje i siły w prętach kratownicy
przedstawionej na rysunku. Następnie z warunku bezpieczeństwa na rozciąganie/ściskanie,
wyznaczyć bezpieczne wartości średnic prętów i obliczyć odkształcenia poszczególnych
prętów. Dane do zadania: Re=320 MPa, E=2.1e11 MPa, L=1.3 m, n=2.5 (wsp.
bezpieczeństwa), P=10 kN.
B
2L 2L
L
1
2 34
5
2P
P
R ax
R ay
R b
Równania równowagi:
1 Ax 2
Ay 2
1 4
4 3
2 5
2 3
5 4
4 B
S R S cos( ) 0
R S sin( ) 0
S 2P S cos( ) 0
S sin( ) S 0
S cos( ) S 0
S sin( ) S P 0
S S cos( ) 0
S sin( ) R 0
Zapis macierzowy:
1
2
3
4
5
Ax
Ay
B
S1 cos( ) 0 0 0 1 0 0 0
S0 sin( ) 0 0 0 0 1 0 0
S1 0 0 cos( ) 0 0 0 0 2 P
S0 0 1 sin( ) 0 0 0 0 0
S0 cos( ) 0 0 1 0 0 0 0
R0 sin( ) 1 0 0 0 0 0 P
R0 0 0 cos( ) 1 0 0 0 0
R0 0 0 sin( ) 0 0 0 1 0
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
Realizacja algorytmu w Matlabie:
Program kratownica.m
%Program oblicza wytrzymałość prętów kratownicy clear all; clc; P=10000; L1=1.3; E=2.1*10^11; Re=320*10^6; n=2.5; alfa=atan(L1/(2*L1)); format %Macierz wspołczynników A=[1,cos(alfa),0,0,0,1,0,0; 0,-sin(alfa),0,0,0,0,1,0; -1,0,0,cos(alfa),0,0,0,0; 0,0,-1,-sin(alfa),0,0,0,0; 0,-cos(alfa),0,0,1,0,0,0; 0,sin(alfa),1,0,0,0,0,0; 0,0,0,-cos(alfa),-1,0,0,0; 0,0,0,sin(alfa),0,0,0,1]; %Wektor prawych stron-obciążenia b=[0;0;-2*P;0;0;P;0;0]; %Rozwiązanie rozw=A\b; format long g disp('Reakcje w podporach [N]') Ra=sqrt(rozw(6)^2+rozw(7)^2) Rb=rozw(8) disp('****************************') disp('Siły w prętach [N]') S=rozw(1:5) L=[2*L1; 2*L1/cos(alfa); L1; 2*L1/cos(alfa); 2*L1]; d=sqrt(4*abs(S)*n/(pi*Re)); AS=pi*d.^2/4; disp('****************************') disp('Wymagane średnice [mm]') d=d*1000 dL=(S.*L)./(E*AS); disp('****************************') disp('Odkształcenia prętów [mm]') dL=dL*1000
Otrzymane wyniki:
Reakcje w podporach [N]
Ra =
20615.5281280883
Rb =
5000
****************************
Siły w prętach [N]
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
S =
10000
11180.3398874989
5000
-11180.3398874989
10000
****************************
Wymagane średnice [mm]
d =
9.97355701003582
10.5457525766981
7.05236979434695
10.5457525766981
9.97355701003582
****************************
Odkształcenia prętów [mm]
dL =
1.5847619047619
1.77181767359983
0.792380952380952
-1.77181767359983
1.5847619047619
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
ELEKTROTECHNIKA
Obwód prądu stałego
Przykład obliczeniowy
Dla układu prądu stałego z trzema źródłami napięciowymi przedstawionego na rysunku
określić metodą prądów oczkowych natężenia prądów w poszczególnych obwodach układu.
Przyjąć następujące wartości oporów: R1=1Ω, R2=2Ω, R3=3Ω, R4=4Ω, R5=6Ω oraz napięć w
obwodach: E1=20V, E2=15V, E3=10V.
R1 R3 R5
R4R2
20V
15V
10VI1 I2 I3
Układ równań spadków napięć w poszczególnych oczkach układu ma postać:
1 1 2 1 2 2 3
2 2 1 2 3 4 2 4 3
3 1 4 2 4 5 3
E (R R ) I R I 0 I
E R I (R R R ) I R I
E 0 I R I (R R ) I
Realizacja algorytmu w programie Matlab:
Program elektr1.m %Program oblicza układ prądu stałego z trzema źródłami napięcia %metodą prądów oczkowych % R-macierz oporów % E-wektor napięć % I-wektor natężeń clc; clear all; E1=20; E2=15; E3=10; R1=1; R2=2; R3=3; R4=4; R5=6; disp('**************************************') disp('Macierz oporów [om]') R=[R1+R2, -R2, 0;... -R2, R2+R3+R4, -R4;... 0, -R4, R4+R5]
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
disp('**************************************') disp('Wektor źródeł napięciowych [wolt]') E=[E1; -E2; -E3] disp('**************************************') disp('Obliczone prądy oczkowe[amper]') I=R\E disp('**************************************') disp('Poszczególne prądy w "oczkach" układu [amper]') I1=I(1,1) I2=I(2,1) I3=I(3,1)
Wyniki:
**************************************
Macierz oporów [om]
R =
3 -2 0
-2 9 -4
0 -4 10
**************************************
Wektor źródeł napięciowych [wolt]
E =
20
-15
-10
**************************************
Obliczone prądy oczkowe[amper]
I =
6.0440
-0.9341
-1.3736
**************************************
Poszczególne prądy w "oczkach" układu [amper]
I1 =
6.0440
I2 =
-0.9341
I3 =
-1.3736
**************************************
Obwód prądu przemiennego
Przykład obliczeniowy
Korzystając z praw Kirchhoffa wyznaczyć prądy w obwodach układu oraz kąty fazowe.
Obliczeń dokonać korzystając z liczb zespolonych. Dane liczbowe: R1=5Ω, R3=10Ω,
L1=2mH, L3=10mH, C2=50µF, Em=100V, f=100Hz.
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
R1L1
R3
L3C2
Em
F
Program elektra2.m
%Program oblicza natężenia zastępcze opory, prądów i kąty fazowe obwodu %prądu przemiennego clc; clear all; R1=5; L1=2*10^(-3); C2=50*10^(-6); R3=10; L3=10*10^(-3); f=100; omega=2*pi*f; disp('**************************************') disp('Impedancje obwodów [om]') Z1=R1+j*(L1*omega) Z2=-j/omega/C2 Z3=R3+j*omega*L3 disp('**************************************') E=100/sqrt(2)+j*0; disp('**************************************') disp('Macierz impedancji [om]') A=[Z1, 0, Z3;... 0, Z2, -Z3;... 1, -1, -1] disp('**************************************') disp('Wektor napięć zasilających [wolt]') b=[E; 0;0] disp('**************************************') disp('Natężenia prądów w poszczególnych') disp('gałęziach obwodu [amper]') I=A\b disp('**************************************') disp('Moduły natężeń prądów [amper]') modul_I=abs(I) disp('**************************************') disp('Kąty fazowe [deg]') fi=angle(I)*180/pi disp('**************************************')
Wyniki :
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
**************************************
Impedancje obwodów [om]
Z1 =
5.0000 + 1.2566i
Z2 =
0 -31.8310i
Z3 =
10.0000 + 6.2832i
**************************************
Macierz impedancji [om]
A =
5.0000 + 1.2566i 0 10.0000 + 6.2832i
0 0 -31.8310i -10.0000 - 6.2832i
1.0000 -1.0000 -1.0000
**************************************
Wektor napięć zasilających [wolt]
b =
70.7107
0
0
**************************************
Natężenia prądów w poszczególnych
gałęziach obwodu [amper]
I =
3.6733 - 0.7593i
0.0257 + 1.6145i
3.6475 - 2.3738i
**************************************
Moduły natężeń prądów [amper]
modul_I =
3.7509
1.6147
4.3519
**************************************
Kąty fazowe [deg]
fi =
-11.6790
89.0864
-33.0555
**************************************
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
Zadania
1) Do sieci prądu sinusoidalnego podłączono szeregowo odbiorniki R-L-C o wartościach:
R=25Ω, L=0.23H oraz C=27 µF. Napięcie sieci wynosi U=120 V, częstotliwość f=50 Hz.
Obliczyć:
impedancję,
prąd w obwodzie,
kąt przesunięcia fazowego napięcia względem prądu,
spadki napięcia na poszczególnych odbiornikach,
.
G U
C L R I
UR UL UC
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
2)Obwód rozgałęziony składający się z cewki o rezystencji R1=15 Ω i indukcyjności L=0.05
H oraz opornika o rezystencji R2=22 Ω i znikomo małej indukcji przyłączono do sieci prądu
przemiennego o napięciu U=230V i częstotliwości f=50 Hz. Obliczyć prądy w
poszczególnych gałęziach obwodu. Wyznaczyć impedancję układu i sporządzić wykresy
wektorowe napięć, prądów i oporów.
U
I
L
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
3)W jednej linii obwodu rozgałęzionego umieszczono cewkę o indukcyjności L=0.067 H oraz
opór czynny rezystencji R1=30 Ω. W drugiej gałęzi znalazł się kondensator o pojemności
C=123 µF. Układ podłączono następnie do źródła prądu przemiennego o napięciu U=230V i
częstotliwości f=50 Hz. Obliczyć prądy w poszczególnych gałęziach obwodu. Wyznaczyć
impedancję układu i sporządzić wykresy wektorowe napięć, prądów i oporów.
I
U
L
R C
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
CAŁKOWANIE METODĄ GAUSSA
Sformułowanie problemu
Dla danej funkcji f(x) należy wyznaczyć jej całkę oznaczoną w granicach od a do b, tzn.
b
a
J f (x)dx .
W metodzie Gaussa zmieniamy granice całkowania na wartości znormalizowane od -1 do +1,
a całkę obliczamy z zależności
1
1
J F( )d ,
gdzie
b a b a b aF( ) f ( )
2 2 2.
Do wyznaczenia całki w granicach znormalizowanych służy przybliżony wzór w postaci
sumy:
1 n
i i
i 11
J F( )d w F(h ) ,
gdzie:
wi - wagi punktów Gaussa
hi - odcięte punktów Gaussa.
Wagi i odcięte punktów Gaussa dobierane są tak, aby powyższy przybliżony wzór był
tożsamością dla wielomianu potęgowego możliwie wysokiego stopnia
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
1 2 2n 1
0 1 2 2n 1F( ) a a a ... a .
Liczba n punktów Gaussa decyduje o dokładności obliczeń.
Przykładowe wartości wag i odciętych punktów Gaussa przedstawiono w tabeli.
Przykład obliczeniowy
Napisać program korzystający z metody Gaussa całkowania dla funkcji
2
1f (x) x
w granicach od 0 do 5 oraz 2
2 x
xf (x)
e,
dla x z zakresu od 1 do 15.
Program w Matlabie dla n=5 punktów Gaussa
Program calkowanie.m %Calkowanie metodą Gaussa %Program wyznacza całkę oznaczoną metodą Gaussa %Funkcja podcałkowa zawarta jest w pliku funk1.m clear all; clc; h=[-0.9061798459 -0.5384693101 0 0.5384693101 0.9061798459]; w=[0.2369268851 0.4786286705 0.5688888889 0.4786286705 0.2369268851]; A=0; B=5;
P=(B+A)/2; Q=(B-A)/2;
S=0; for i=1:5 S=S+funk1(P+Q*h(1,i))*w(1,i); end format long g disp('********************************************')
disp('Całkowanie metodą Gaussa dla funkcji y=x^2') disp('w granicach od 0 do 5 dla n=5 punktów Gaussa') disp('') calka_met_gaussa=S*Q disp('') disp('********************************************') disp('') disp('Rozwiązanie - procedura Matlabowa quad()') calka_proc_quad=quad('x.^2',0,5) disp('') disp('********************************************') disp('Rozwiązanie dokładne') calka_rozw_dokl=B^3/3 disp('********************************************')
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
Program calkowanie2.m %Calkowanie metodą Gaussa %Program wyznacza całkę oznaczoną metodą Gaussa %Funkcja podcałkowa zawarta jest w pliku funk2.m clear all; clc; h=[-0.9061798459 -0.5384693101 0 0.5384693101 0.9061798459]; w=[0.2369268851 0.4786286705 0.5688888889 0.4786286705 0.2369268851]; A=1; B=15;
P=(B+A)/2; Q=(B-A)/2;
S=0; for i=1:5 S=S+funk2(P+Q*h(1,i))*w(1,i); end format long g disp('Całkowanie metodą Gaussa dla funkcji y=x^2/exp(x)') disp('w granicach od 1 do 5 dla n=5 punktów Gaussa') disp('********************************************') disp('') calka_met_gaussa=S*Q disp('') disp('********************************************') disp('') disp('Rozwiązanie - procedura w Matlabie: quad()') calka_proc_quad=quad('x.^2./exp(x)',1,15) disp('') disp('********************************************') disp('Rozwiązanie dokładne') calka_rozw_dokladne=((-15^2-2*15-2)/exp(15))-((-1^2-2*1-2)/exp(1)) disp('********************************************')
Skrypty definiujące funkcje podcałkowe: funk1.m oraz funk2.m
function f=funk1(x) f=x^2;
function f=funk2(x) f=x.^2./exp(x);
Wyniki:
********************************************
Całkowanie metodą Gaussa dla funkcji y=x^2
w granicach od 0 do 5 dla n=5 punktów Gaussa
calka_met_gaussa =
41.6666666687488
********************************************
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
Rozwiązanie - procedura Matlabowa quad()
calka_proc_quad =
41.6666666666667
********************************************
Rozwiązanie dokładne
calka_rozw_dokl =
41.6666666666667
********************************************
Całkowanie metodą Gaussa dla funkcji y=x^2/exp(x)
w granicach od 1 do 15, dla n=5 punktów Gaussa
********************************************
calka_met_gaussa =
1.82972968815975
********************************************
Rozwiązanie - procedura w Matlabie: quad()
calka_proc_quad =
1.83931861147104
********************************************
Rozwiązanie dokładne
calka_rozw_dokladne =
1.83931858896084
********************************************
Zadanie
Stosując metodę Gaussa obliczyć całki dla funkcji:
2f (x) x 2 ,
1f (x)
2 sin(x),
2xf (x)
sin(x) 3,
w granicach od 1 do 10. Wyniki porównać z rozwiązaniem dokładnym i uzyskanym za
pomocą procedur quad() i quadl().
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
KINEMATYKA MECHANIZMÓW
Zadanie
Dla punktu M mechanizmu wyznaczyć i narysować:
równania ruchu
tor ruchu
prędkość i jej składowe
przyspieszenie i jego składowe
promień krzywizny toru
Zastosować polecenie "menu()" do poruszania się po opcjach programu. Umożliwić
wprowadzanie danych z klawiatury przez użytkownika. Poszczególne wielkości wyświetlać
na ekranach odrębnych i na ekranie zbiorczym-zastosować polecenie "subplot()".
Y
X
R
R
R
R/3
M
Skrypt programu
%program wyznacza rownania ruchu, tor, predkosc i przyspieszenie punktu %mechanizmu plaskiego clear all; clc; clf; %dane k=0 while k==0 okno1=menu('DANE','standardowe','z klawiatury', 'koniec') if okno1==1 r=1.43 om=10*pi end if okno1==2 r=input('podaj r') om=input('podaj \omega') end if okno1==3
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
k=1 end end %obliczenia T=2*pi/om; t=0:T/50:3*T; x=-(1/3)*r*cos(om*t); y=(7/3)*r*sin(om*t); vx=(1/3)*r*om*sin(om*t); vy=(7/3)*r*om*cos(om*t); v=sqrt(vx.^2+vy.^2); ax=(1/3)*r*om^2*cos(om*t); ay=-(7/3)*r*om^2*sin(om*t); a=sqrt(ax.^2+ay.^2); at=(vx.*ax+vy.*ay)./v; an=sqrt(a.^2-at.^2); ro=v.^2./an; %okno nawigacji m=0 while m==0 okno2=menu('Wybierz opcjię','tor, krzywe Lissajou','predkości',... 'przyspieszenia','promień krzywizny toru',... 'wykres zbiorczy','koniec-wyjście z zprogramu'); if okno2==1 clf plot(x,y,'b') title('tor, krzywa Lissajou') Xlabel('x[m]'); Ylabel('y[m]'); end if okno2==2 clf plot(t,vx,'r',t,vy,'b',t,v,'k') title('predkości') Xlabel('t[s]'); Ylabel('vx,vy,v [m/s]'); legend('vx','vy','v') grid end if okno2==3 clf plot(t,ax,'r',t,ay,'b',t,a,'k') title('przyspieszenia') legend('ax','ay','a') Xlabel('t[s]'); Ylabel('ax,ay,a [m/s^2]'); grid end if okno2==4 clf plot(t,ro,'k') title('promien krz') Xlabel('t[s]'); Ylabel('\rho [m]'); grid end if okno2==5 clf subplot(2,2,1)
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
plot(x,y,'b') title('tor, krzywa Lissajou') Xlabel('x[m]'); Ylabel('y[m]'); grid subplot(2,2,2) plot(t,vx,'r',t,vy,'b',t,v,'k') legend('vx','vy','v') title('predkości') Xlabel('t[s]'); Ylabel('vx,vy,v [m/s]'); grid subplot(2,2,3) plot(t,ax,'r',t,ay,'b',t,a,'k') title('przyspieszenia') legend('ax','ay','a') Xlabel('t[s]'); Ylabel('ax,ay,a [m/s^2]'); grid subplot(2,2,4) plot(t,ro,'k') title('promien krzywizny toru') Xlabel('t[s]'); Ylabel('\rho [m]'); grid end if okno2 ==6 m=2; end
end
Okna menu użytkownika: wczytywanie danych i wyświetlanie wyników
Wykresy zbiorcze
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
Zadania
Dla punktu opisanego równaniami ruchu w postaci:
x(t) 3 cos(2 t) 2
y(t) 5 sin(2 t) 3
tz(t)
2
,
obliczyć i narysować:
- tor ruchu
- prędkości
- przyspieszenia
- promień krzywizny toru.
Wyniki przedstawić na pojedynczych i na zbiorczych wykresach. Zastosować polecenie
"menu()" do poruszania się po opcjach programu.
Uwaga! Wszystkie wielkości wyrażono w jednostkach SI.
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
III. DYNAMIKA UKŁADÓW WIELOMASOWYCH
METODA NEWMARKA CAŁKOWANIA RÓWNAŃ
RUCHU
Dla równań ruchu w postaci:
M q C q K q f ,
gdzie:
M, C, K -macierze bezwładności, tłumienia, sztywności,
q -wektor współrzędnych uogólnionych,
f -wektor wymuszeń
nieznane wartości prędkości i przemieszczenia w metodzie Newmarka otrzymujemy za
pomocą funkcji wielomianowej aproksymującej ich przebiegi
t t t t t tq q (1 ) q q t
2
t t t t t t t
1q q q t q q t
2.
Wartości współczynników α i δ przyjmowane są tak, aby rozwiązanie było dokładne i
stabilne. Metoda Newmarka jest bezwarunkowo stabilna dla
2
1 1
4 2
1
2.
Po wstawieniu zależności na prędkość i przemieszczenie do równań ruchu i uporządkowaniu
zmiennych, otrzymujemy równanie
2 2
t t t t t t t
1M t C t K q f C q 1 t q K q q t q t
2
z którego wyznaczamy niewiadomy wektor przyspieszeń w kolejnej chwili czasowej t+Δt.
Wartości wektora przyspieszenia w chwili czasowej t otrzymujemy dla warunków
początkowych:
tq q(0)
tq q(0)
z zależności
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
t t tM q f C q K q
Wybór kroku całkowania, Δt, uzależniony jest głównie od obliczonych częstości drgań
własnych. Dla uzyskania wysokiej dokładności całkowania zaleca się, aby krok przyrostowy
czasu spełniał zależność
2
max
2t
1 4,
gdzie
ωmax -największa częstość drgań własnych.
Przykład obliczeniowy
Dla układu trzech mas przedstawionych na rysunku, określić macierze układu (M, C, K ) i
wektor wymuszenia oraz rozwiązać układ równań różniczkowych ruchu stosując metodę
Newmarka. Wyniki wyświetlić na wykresie zbiorczym.
3
2
1
F
Skrypt programu
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
clear all; clc; %Macierze bezwładności, tłumienia i sztywności m1=1; m2=1; m3=2; M=[m1 0 0;... 0 m2 0;... 0 0 m3];
c=7; C=[c 0 0;... 0 2*c -c;... 0 -c c];
k=8000; K=[4*k -2*k -k;... -2*k 4*k -k;... -k -k 3*k];
format long g
%Częstości i postacie drgań [postac,omega2]=eig(K,M); omega_0=sqrt(omega2) D=[zeros(3,3) eye(3);... -M^(-1)*K -M^(-1)*C]; omega_tlum=eig(D) omega_0_max=max(max(omega_0))
%Procedura NEWMARKA calkowania numerycznego nn=3; %wymiar zagadnienia (liczba stopni swobody układu alfa=0.25; delta=0.5;
% Start-krok pierwszy qt=zeros(nn,1); dqt=zeros(nn,1); F=zeros(nn,1); F(1,1)=1000; d2qt=M^(-1)*(F-C*dqt-K*qt); t_final=0.4; t_start=0; %Krok przyrostowy czasu dt=2/(omega_0_max*sqrt((1+delta)^2-4*alfa))*1/5; limit=round(t_final/dt); x=zeros(limit,nn); V=zeros(limit,nn); a=zeros(limit,nn); tt=0; t=zeros(limit,1);
%Obliczenia w kolejnych krokach całkowania for i=1:limit d2q=(M-delta*dt*C+alfa*(dt)^2*K)^(-1)*(F-C*(dqt+(1-delta)*dt*d2qt)-... K*(qt+dt*dqt+(1/2-alfa)*(dt)^2*d2qt)); dq=dqt+((1-delta)*d2qt+delta*d2q)*dt; q=qt+dqt*dt+((1/2-alfa)*d2qt+alfa*d2q)*(dt)^2; for j=1:nn x(i,j)=q(j);
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
V(i,j)=dq(j); a(i,j)=d2q(j); end; tt=tt+dt; t(i,1)=tt; qt=q; dqt=dq; d2qt=d2q; end
%Wyświetlenie wyników subplot(3,1,1) plot(t,x(:,1),'b',t,x(:,2),'r',t,x(:,3),'k') grid title('Przemieszczenie'); xlabel('t [s]'); ylabel('x[m]'); legend('masa m1','masa m2','masa m3')
subplot(3,1,2) plot(t,V(:,1),'b',t,V(:,2),'r',t,V(:,3),'k') grid title('Predkosc'); xlabel('t [s]'); ylabel('V[m/s]'); legend('masa m1','masa m2','masa m3')
subplot(3,1,3) plot(t,a(:,1),'b',t,a(:,2),'r',t,a(:,3),'k') grid title('Przyspieszenie'); xlabel('t [s]'); ylabel('a[m/s^2]'); legend('masa m1','masa m2','masa m3')
Otrzymane wyniki: częstości drgań własnych układu oraz przebiegi przemieszczeń,
prędkości i przyspieszeń.
omega_0 =
75.8537325961266 0 0
0 149.151638446365 0
0 0 219.089023002066
omega_tlum =
-5.24474623475579 + 218.922555314644i
-5.24474623475579 - 218.922555314644i
-5.62741132051675 + 149.086082370804i
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
-5.62741132051675 - 149.086082370804i
-1.37784244472752 + 75.8564657024866i
-1.37784244472752 - 75.8564657024866i
omega_0_max =
219.089023002066
Zadania
Zastosować metodę Newmarka dla układu mas połączonych elementami sprężystymi i
tłumiącymi. Przyjąć masy: M1=10 kg, M2=7 kg, M3=2 kg, sztywności i tłumienia wszystkich
elementów są jednakowe i równają się odpowiednio :k=11000 N/m, c=12 Ns/m.
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
F M1
M2
M3
RÓWNANIA RÓŻNICZKOWE W MATLABIE
Do rozwiązania różniczkowych równań ruchu stosowanych jest w Matlabie kilkanaście
procedur. Najczęściej stosowane procedury to:
ode23('funkcja',[t0 tk],x0, opcje)
ode45('funkcja',[t0 tk],x0, opcje),
gdzie:
'funkcja' -odwołanie do skryptu funkcji definiującego analizowane równanie
różniczkowe,
[t0 tk] -wektor czasu badania,
x0 -wektor wartości początkowych,
opcje -dodatkowe opcje procedur.
Zadanie
Dla układu wózka o masie m1 z sprężyną o sztywności k i wahadłem matematycznym o
długości L i masie m2 wyznaczyć różniczkowe równania ruchu oraz przebiegi prędkości i
przemieszczeń w funkcji czasu. Zastosować metodę Rungego-Kutty. Wyniki porównać z
rozwiązaniem uzyskanym z metody Newmarka.
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
k m1
L
m2
Równania ruchu wyprowadzimy korzystając z równań Lagrange'a II rodzaju
k ki
i i i i
E Ed D VQ
dt q q q q,
gdzie:
Ek -energia kinetyczna
D -funkcja dyssypacji energii
V -energia potencjalna
Qi -siła uogólniona
qi -i-ta współrzędna uogólniona
i=1..n
n -liczba stopni swobody układu.
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
PRZYKŁADY :
k
m
r m
b
µ= 0
Tarcza, m, r
k
x
h
k 2k
μ = 0
m
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
IV. ALGORYTMY SORTOWANIA
Sformułowanie problemu
Dany jest n-elementowy wektor wartości, które należy uporządkować niemalejąco, tzn.
zmienić kolejność wyrazów tak, aby spełniały one warunek:
i i 1a a .
Rozwiązując zadanie można skorzystać z następujących metod:
sortowanie metodą bąbelkową
sortowanie metodą przestawiania sąsiednich elementów
sortowanie metodą przestawiania wg indeksów
sortowanie ze scalaniem
sortowanie przez "kopcowanie"
sortowanie przez wstawianie
sortowanie metodą Shella
Sortowanie metodą przestawiania sąsiednich elementów wektora polega na porównaniu
dwóch jego sąsiednich elementów. Jeżeli element następny jest mniejszy od poprzedniego, to
zamieniają się miejscami. Tyle razy przeglądamy całość ciągu, aż wszystkie wyrazy będą
spełniały żądaną formułę sortowania.
Przykładowo dla ciągu a=[1, 7, 6, 4, 2, 5]
pierwsze przeglądanie: a=[1, 7, 6, 4, 2, 5]
6, 7
4, 7
2, 7
5, 7
drugie przeglądanie: a=[1, 6, 4, 2, 5, 7]
4, 6
2, 6
5, 6
trzecie przeglądanie: a=[1,4, 2, 5, 6, 7]
2, 4
czwarte przeglądanie: a=[1, 2, 4, 5, 6, 7]
nie powoduje żadnej zmiany. Ciąg został uporządkowany.
Podobny algorytm można zastosować do ustawienia elementów ciągu w odwrotnej
kolejności, tzn. malejąco.
Skrypt programu
%Program sortuje elementy wektora w kierunku wzrastania wartości - typ A %oraz typ B i C, których schemat sortowania przedstawiono na wykresach clear all; clc; n=60; %liczba elementów wektora %Utworzenie wektora o losowych elementach z zakresu od 1 do 100
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
A=rand(1,n); B=A*100; C=ceil(B); L=length(C); t=0; %Sortowanie w kierunku wzrastania wartości - typ A while t<L for i=1:L-1 a=C(1,i); b=C(1,i+1); if a>b C(1,i)=b; C(1,i+1)=a; t=0; else t=t+1; end end end
subplot(3,1,1) bar(C); title('Sortowanie - typ A') axis([1 n 0 100]); axis off
%Sortowanie - typ B a=1; b=L; C(b); W=zeros(1,L); i=3; for i=1:L if rem(i,2)==0 W(i)=C(a); a=a+1; else W(i)=C(b); b=b-1; end end
subplot(3,1,2) bar(W); title('Sortowanie - typ B') axis([1 n 0 100]); axis off;
%Sortowanie - typ C a=1; b=L; L=L*2;
Q=zeros(1,L); i=3; for i=1:L if rem(i,2)==0 Q(i)=C(a);
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
a=a+1; else Q(i)=C(b); b=b-1; end end
subplot(3,1,3) bar(Q); title('Sortowanie - typ C') axis([1 2*n 0 100]); axis off;
Zadanie S1
Wygenerować ciąg losowych wartości całkowitych od -100 do +100 oraz uporządkować je
malejąco, a następnie przestawić elementy wg schematu pokazanego na rysunku S1.
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
Rys. S1
Zadanie S2
Wygenerować ciąg losowych wartości całkowitych od 0 do 1 oraz uporządkować je
wzrastająco, a następnie przestawić elementy wg schematu pokazanego na rysunku S2
Rys. S2
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
V. PAKIET MATLAB I SIMULINK W AUTOMATYCE I
STEROWANIU
MODELOWANIE W AUTOMATYCE
1. Dla układu przedstawionego na rysunku określić transmitancję
operatorową )(
)()(
sX
sYsK
Tarcza
1 0k x r r J Fr''( - ) = +
Klocek
ykbymyF 2
'''
Związek kinematyczny ry
(*) rykkbryrmyyr
Jrkx )( 21
''''''01
)()]()()[()( 21
2
2
01 sYkksbsm
r
JsXk
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
(**) 1
20
2 1 2
kY s L sK s
JX s M sm s b s k k
r
( ) ( )( ) = = =
( ) ( )( + ) + ( ) + ( + )
Dla dalszych obliczeń przyjąć :
J0 =2.5 kgm2
m=5 kg
k1=10000 N/m
k2=700 N/m
b=67 N s/m
r=300 mm=0.3 m
2. Wprowadzenie transmitancji układu w Matlabie
Dla (**) mamy: Licznik L=[k1]
Mianownik )[(2
0 mr
JM b (k1 + k2)]
wyświetlenie K(s): printsys (L,M) ,, tf (L, M)
wykresy Bode’a: bode (L, M)
wykres Nyquista: nyquist (L, M)
odpowiedz skokowa: step (L, M)
odpowiedz impulsowa: impulse (L, M)
podział ekranu na podwykresy: subplot(i, j, k)
opis tytułu: title(‘ tekst’)
% plik w Matlabie
% DANE
Jo=2.5;
m=5;
r=0.3;
k1=10000;
k2=7000;
b=67;
L=[k1]; % LICZNIK
M=[(Jo/r^2+m) b (k1+k2)]; % MIANOWNIK
printsys(L,M) % WYSWIETLENIE TRANSM. OPERAT. UKL.
subplot(2,2,1)
bode(L,M) % WYKRESY BODE'A
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
grid
subplot(2,2,2)
nyquist(L,M) % WYKRES NYQUIST
subplot(2,2,3)
step(L,M) % ODPOWIEDZ SKOKOWA
grid
subplot(2,2,4)
impulse(L,M) % ODPOWIEDZ IMPULSOWA
grid
3. Simulink
Zamodelować działanie układu o transmitancji operatorowej (**) w programie „SIMULINK”. Zadać
wymuszenie skokowe i sygnałem harmonicznym o częstotliwości rad
10s
= . Korzystając z
członów całkujących Ts
1 zamodelować układ opisany różniczkowym równaniem ( )
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
)()()(
)(
21
2
2
0
1
kksbsmr
J
ksK
a) Uruchomić pakiet Matlab.
b) Z menu wybrać ikonę pakietu SIMULINK.
c) Otworzyć okno tworzenia nowego modelu.
d) Otwierając grupy z elementami schematów blokowych ( continuous, math operations,…,sinks, itd.)
utworzyć model analizowanego układu.
UWAGA!!! Poszczególne elementy „przeciągamy” z okna źródłowego ( np. „Continuous”) do okna
modelu ( np. „Untitled”) lewym przyciskiem myszy.
e) Zmiany ustawień:
parametry i nastawy 2x klikając myszką na dany obiekt,
wygląd, kierunek, kolor bloków najechać na obiekt, nacisnąć prawy przycisk muszy, zmienić
opcję,
np. Format
│ Flip Block (obrót o 180°)
│ Rotate Blok (obrót o określony kąt )
UWAGA!!! Dodatkowe informacje o zmianach parametrów i ustawień – wg instrukcji zamieszczonej
w punkcie ksero.
f) Opisy obiektów i sygnałów:
obiekt 1x kliknąć na nazwę, np. Gs zmienić opis na właściwy,
sygnał (linie) 2x kliknąć na linię, wpisać nazwę lub symbol np. y’’
,y’, y, wyjście, itd.,
g) Okna wykresów scope 2x dwa razy kliknąć na okno.
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
Z równania (*)
])([)1
( 21
'
1
2
0
'' ykkbyxk
mr
Jy
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
DOBÓR NASTAW REGULATORA TYPU "PID"
Dla układu opisanego transmitacją K(S) dobrać optymalne nastawy regulatora PID metodą Zieglera-
Nicholsa. Posłużyć się przykład em 9-13 , str. 212 oraz tablicą - str. 210.
W. Próchnicki, M. Dzida, Lub wg. C. Orlikowski, E. Wittbrodt
„Zbiór zadań z Podstaw Automatyki” „Laboratorium z Automatyki i Sterowania”
wyd. PG, Gdańsk 1993 str. 142
Nastawy optymalne:
krd
kri
krp
TT
TT
KK
12.0
5.0
6.0
krd
kri
krp
TT
TT
KK
5.0
33.0
2.0
1. Ustawić regulator PID na działanie tylko proporcjonalne, tzn.
)5.040(1020
5.0
)(1)(
23
kr
kr
kr
krzast
Ksss
K
sKK
KsK
z warunków stabilności wg. Hurwitza:
40 + 0.5Kkr > 0 80krK
oraz
)5.040(200
0101
0)5.040(20
3
kr
kr
K
K
0)5.040()1020(2 krK 320krK
Na granicy stabilności układ znajduje się dla: Kkr=320.
2. Wprowadzając Kkr uzyskamy odpowiedź dla granicy stabilności w postaci:
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
z wykresu odczytać 98.1krT
3. Wyznaczyć nastawy regulatora PID wg:
krd
kri
krp
TT
TT
KK
5.0
33.0
2.0
)1
1()( sTsT
KsK d
i
preg
4. Tworzenie schematów blokowych w Matlabie
sprzężenie zwrotne
znak =
1
lub
1
[L , M] = feedback (L1, M2, L2, M2, znak)
sztywne sprzężenie zwrotne
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
[L , M] = cloop (L1, M1, znak)
człony szeregowe
[L , M] = series (L1, M2, L2, M2)
człony równoległe
[L , M] = parallel ( (-)L1, M2, (-)L2, M2)
odpowiedź skokowa
),( MLstep
odpowiedź impulsowa
),( MLimpulse
5. Listing programu w Matlabie do wyznaczania nastaw regulatora PID
clear all;
clc;
clf;
% TRANSMITANCJA OBIEKTU
L1=[0.5];
M1=[1 20 10 40];
clc;
disp('transmitancja operatorowa obiektu')
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
tf(L1,M1)
% TRANSM. UKL. BEZ REGULATORA
[L2,M2]=cloop(L1,M1,-1);
subplot(4,1,1)
impulse(L2,M2)
legend('uklad bez regulatora')
t=[0:0.01:20];
[y1,x,t]=impulse(L2,M2,t);
grid
% ODPOWIEDZ UKLADU Z WZMOCNIENIEM Kkr
Kkr=320;
[L3,M3]=cloop(Kkr*L1,M1,-1);
subplot(4,1,2)
impulse(L3,M3)
LEGEND('uklad na granicy stabilnosci')
grid
% WYZNACZENIE NASTAW REG. PID
Tkr=4.5-2.52;
kp=0.2*Kkr;
Ti=0.33*Tkr;
Td=0.5*Tkr;
% TRANSMITANCJA REG. PID
[Lr,Mr]=parallel([0 1],[Ti 0],[Td 0],[0 1]);
[L_pid,M_pid]=parallel(kp*Lr,Mr,kp*[1],[1]);
disp('transmitancja regolatora pid')
tf(L_pid,M_pid)
% TRNSMITANCJA UKLADU Z REGULATOREM PID
[L4,M4]=series(L_pid,M_pid,L1,M1);
[L_z_reg,M_z_reg]=cloop(L4,M4,-1);
subplot(4,1,3)
impulse(L_z_reg,M_z_reg)
[y2,x,t]=impulse(L_z_reg,M_z_reg,t);
grid
legend('uklad z regultorem PID')
% POROWNANIE
subplot(4,1,4)
plotyy(t,y1,t,y2)
title('Porownanie odpowiedzi impulsowych')
xlabel('t[s]')
grid
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
6. Okno wykresów – ”Figure 1”
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
7. Realizacja układu z regulatorem PID w programie SIMULINK
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
VI. ZASTOSOWANIE PROGRAMU MATHCAD
Wyznaczenie zarysu teoretycznego wałka
Dla wałka przedstawionego na rysunku wyznaczyć wykresy momentów gnących, sił tnących,
momentów skręcających i moment zastępczy oraz zarys teoretyczny wałka. Zastosować
hipotezę Hubera dla wyznaczenia naprężeń zastępczych. Obliczenia wykonać korzystając z
programu MATHCAD.
RA RB
P
M1
M2
Ms1
q
Ms2 Ms
Poniżej załączono program uruchomiony w środowisku MATHCAD.
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
DANE DO ZADANIA:
L 1.3 m q 1000N
m Re 36010
6 N
m2 n 2.5
P q L M1
q L2
4 M2
q L2
2 Zsj 38010
6 N
m2
P 1300N M1 422.5N m M2 845N m
Zgo 340106 N
m2
WYZNACZENIE REAKCJI - RÓWNANIA RÓWNOWAGI
Given
RA RB P q 3 L 0
P L M1 q 3 L3
2L M2 RB 3 L 0
RA
RB
Find RA RB
3791.6666666666666667N
1408.3333333333333333N
RA 3.792 103
N RB 1.408 103
N
MOMENTY GNĄCE x 0 m 0.015L 4 L
Mg x( ) P x( ) 0 m x Lif
P x RA x L( ) M1 qx L( )
2
2otherwise
0 0.54 1.08 1.62 2.16 2.7 3.24 3.78 4.32 4.86 5.4
2 103
1.333 103
666.667
666.667
1.333 103
2 103
Moment gnacy
[m]
[Nm
]
Mg x( )
x
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
SIŁY TNĄCE
T x( ) P( ) 0 m x Lif
P RA q x L( ) otherwise
0 0.54 1.08 1.62 2.16 2.7 3.24 3.78 4.32 4.86 5.4
2 103
1.167 103
333.333
500
1.333 103
2.167 103
3 103
Sila tnaca
[m]
[N]
T x( )
x
MOMENT SKRĘCAJĄCY
Ms x( ) q L2
0 m x Lif
2 q L2
otherwise
0 0.54 1.08 1.62 2.16 2.7 3.24 3.78 4.32 4.86 5.41.5 10
3
1.833 103
2.167 103
2.5 103
2.833 103
3.167 103
3.5 103
Moment skrecajacy
[m]
[Nm
]
Ms x( )
x
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
NAPRĘŻENIA ZREDUKOWANE
red g2
s2
dop
MOMENT ZREDUKOWANY dop
Re
n
Zgo
Zsj
Mred x( ) Mg x( )2
2Ms x( )
2
0 0.54 1.08 1.62 2.16 2.7 3.24 3.78 4.32 4.86 5.4600
780
960
1.14 103
1.32 103
1.5 103
1.68 103
1.86 103
2.04 103
2.22 103
2.4 103
moment redukowany
[m]
[N]
Mred x( )
x
SREDNICA WYMAGANA - zarys teoretyczny wałka
d x( )
332 Mred x( )
dop
1000
0 0.54 1.08 1.62 2.16 2.7 3.24 3.78 4.32 4.86 5.430
24
18
12
6
0
6
12
18
24
30
Zarys teoretyczny walka
[m]
[mm
]
d x( )
2
d x( )
2
x
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego
VIII. BIBLIOGRAFIA
1. Wittbrodt E., Sawiak S., Mechanika ogólna. Teoria i zadania. Wydawnictwo
Politechniki Gdańskiej, Gdańsk 2005
2. Kucenko A. N., Rublew J. W., Zbiór zadań z fizyki dla wyższych uczelni
technicznych, PWN, Warszawa 1980
3. Osiński Z., red., Zbiór zadań z teorii drgań, PWN, Warszawa 1989
4. Jakubowicz A., Orłoś Z., Wytrzymałość materiałów, WNT, Warszawa 1984
5. Heimann B., Gerth W., Popp K., Mechatronika. PWN, Warszawa 2001
6. Brański W., Herman M.A., Widomski L., Zbiór zadań z fizyki. Elektryczność i
magnetyzm, PWN, Warszawa 1981
7. Zawalich E., Zawalich J., Elektrotechnika dla mechaników-zadania. Wydawnictwo
Politechniki Gdańskiej, Gdańsk 2003
8. Findeisen W. (red), Automatyka. Poradnik inżyniera, WNT, Warszawa 1969
9. Próchnicki W., Dzida M., Zbiór zadań z podstaw automatyki, Wydawnictwo
Politechniki Gdańskiej, Gdańsk 1993
10. Paleczek W., Mathcad w algorytmach, Exit, Warszawa 2005
11. Zalewski A., Cegieła R., Matlab-obliczenia numeryczne i ich zastosowania, Wyd.
Nakom, Poznań 1996
12. Brzózka J., Dobroczyński L., Programowanie w Matlab, Wyd. Mikom, Warszawa
1998
13. Dietrich M. (red), Podstawy Konstrukcji Maszyn, t. 2, WNT, Warszawa 1995