Vytvoření modelu dvojitého kyvadla Text je určen pro začátečníky v používání simulinku, vytvořeno v simulinku verze 7.6 (R2010b) 1. Spustíme MATLAB 2. V Command Window MATLABu spustíme příkaz: >> simulik 3. Otevře se nám okno Simulink Library Browser 4. V menu okna Simulink Library Browser zvolíme File → New → Model. Získáme tak prázdné okno s titlukem untitled, které bude tvořit naši pracovní plochu pro vytvářený model
5. Okno untitled trochu zvětšíme, aby nám do něj vešly všechny prvky modelu
6. Zatím prázdný model uložíme pomocí menu okna untitled. Klikneme na File → Save a zadáme název dvojite_kyvadlo.mdl. Jméno okna untitled se tím změní na dvojite_kyvadlo
7. V nabídce Librarires v okně Simulink Library Browser klikneme na Seascape → SimMechanics. Uvidíme následující nabídku
8. V okně Simulink Library Browser dvojklikneme na ikonu Bodies. Uvidíme následující nabídku
9. Pomocí myši přeneseme ikonu Ground z okna Simulink Library Browser do okna dvojite_kyvadlo s vytvářeným modelem
10. Dvojklikneme na blok Groud v okně dvojite_kyvadlo a v okně Block Parameters: Ground nastavíme v položce Location [z,y,z] hodnotu [3 4 5] a jednotky nastavíme na metry. To jsou naše referenční souřadnice bloku Ground. V SimMechanics směřuje x-ová osa na obrazovce vpravo, y-ová osa nahoru a z-ová osa kolmo k obrazovce směrem k nám 11. Pomocí myši zvolíme v okně Block Parameters: Ground položku Show Machine Environment port.
12. Stiskneme OK v okně Block Parameters: Ground a okno tak zavřeme. 13. Na levé straně bloku Ground v okně dvojite_kyvadlo se již okamžiku volby položky Show Machine Environment port objevil zakulacený port.
14. Pomocí myši přeneseme ikonu Machine Environment z okna Simulink Library Browser do okna dvojite_kyvadlo. Tento blok umístíme vlevo od bloku Ground na stejný řádek. 15. Dvojklikneme na blok Machine Environment v okně dvojite_kyvadlo. Zkontrolujeme v okně Block Parameters: Machine Environment, že vektor gravitačního zrychlení v položce Gravity vector je roven [0 -9.81 0]. To zamená, že gravitační síla působí proti směru osy y. (tj. na obrazovce směrem dolů).
16. Stiskneme OK v okně Block Parameters: Machine Environment a okno tak zavřeme. 17. Propojíme porty bloků Machine Environment a Ground v okně dvojite_kyvadlo. Uděláme to tak, že klikneme na jeden port a táhneme myší k druhéhu portu. Po provedení spojení portů náš model vypadá takhle:
18. V nabídce Librarires v okně Simulink Library Browser klikneme na Seascape → SimMechanics → Joints. Uvidíme následující nabídku
19. Pomocí myši přeneseme ikonu Revolute z okna Simulink Library Browser do okna dvojite_kyvadlo s vytvářeným modelem. Tento blok představuje volný rotační spoj na konci kyvadla. 20. Propojíme porty bloků Ground a Revolute v okně dvojite_kyvadlo. Uděláme to tak, že klikneme na jeden port a táhneme myší k druhéhu portu. Po provedení spojení portů náš model vypadá takhle:
21. Dvojklikneme na blok Revolute v okně dvojite_kyvadlo. Zkontrolujeme v okně Block Parameters: Revolute, že hodnota položky Axis of Action [x y z] je rovna [0 0 1]. Tato hodnota určuje, že kyvadlo bude kývat podél osy z.
22. Stiskneme OK v okně Block Parameters: Revolute a okno tak zavřeme. 23. V nabídce Librarires v okně Simulink Library Browser klikneme na Seascape → SimMechanics → Bodies. 24. Pomocí myši přeneseme ikonu Body z okna Simulink Library Browser do okna dvojite_kyvadlo s vytvářeným modelem. Blok umístíme vpravo od bloku Revolute na stejnou řádku. Tento blok představuje první kyvadlo. 25. Dvojklikneme na blok Body v okně dvojite_kyvadlo. Nastavíme zde vlastnosti prvního kyvadla 1. hmotnost prvního kyvadla: v položce Mass nastavíme hodnotu 0.05675, jednotku nastavíme kilogramy, tj. zvolíme kg 2. tenzor setrvačnosti prvního kyvadla: v položce Inertia nastavíme hodnotu [1 0 0; 0 1 0; 0 0 1.182e-3], jednotku zvolíme kg*m^2 tenzor setrvačnosti je reprezentován maticí 3x3. Kyvadlo rotuje kolem osy z, takže hodnota 1,183 .10−3 představuje moment setrvačnosti vzhledem k této ose. 3. polohu hmotného středu prvního kyvadla: v prvním řádku tabulky Position (s hodnotou GC ve sloupci Name) ▪ ve sloupci Origin Position Vector [x y z] nastavíme hodnotu [0 -0.25 0] ▪ ve sloupci Units zvolíme metry ▪ ve sloupci Translated from Origin of zvolíme hodnotu World ▪ ve sloupci Components in Axes of zvolíme hodnotu World 4. polohu spoje CS1 v druhém řádku tabulky Position (s hodnotou CS1 ve sloupci Name) ▪ ve sloupci Origin Position Vector [x y z] nastavíme hodnotu [0 0.25 0] ▪ ve sloupci Units zvolíme metry ▪ ve sloupci Translated from Origin of zvolíme hodnotu CG ▪ ve sloupci Components in Axes of zvolíme hodnotu CG 5. polohu spoje CS2 ve třetím řádku tabulky Position (s hodnotou CS2 ve sloupci Name) ▪ ve sloupci Origin Position Vector [x y z] nastavíme hodnotu [0 -0.25 0] ▪ ve sloupci Units zvolíme metry ▪ ve sloupci Translated from Origin of zvolíme hodnotu CG ▪ ve sloupci Components in Axes of zvolíme hodnotu CG
26. Spojíme bloky Revolte a Body 27. Přidáme druhý blok Revolute a spojíme jej s prvním kyvadlem:
28. Přidáme další blok Body a spojíme jej s blokem Revolute1. Tento blok bude představovat druhé kyvadlo 29. Nastavíme parametry druhého kyvadla následovně 1. hmotnost druhého kyvadla: v položce Mass nastavíme hodnotu 0.1135, jednotku nastavíme kilogramy, tj. zvolíme kg 2. tenzor setrvačnosti druhého kyvadla: v položce Inertia nastavíme hodnotu [1 0 0; 0 1 0; 0 0 9.45e-3], jednotku zvolíme kg*m^2 3. polohu hmotného středu druhého kyvadla: v prvním řádku tabulky Position (s hodnotou GC ve sloupci Name) ▪ ve sloupci Origin Position Vector [x y z] nastavíme hodnotu [0 -1 0] ▪ ve sloupci Units zvolíme metry ▪ ve sloupci Translated from Origin of zvolíme hodnotu World ▪ ve sloupci Components in Axes of zvolíme hodnotu World 4. polohu spoje CS1 v druhém řádku tabulky Position (s hodnotou CS1 ve sloupci Name) ▪ ve sloupci Origin Position Vector [x y z] nastavíme hodnotu [0 0.5 0] ▪ ve sloupci Units zvolíme metry ▪ ve sloupci Translated from Origin of zvolíme hodnotu CG ▪ ve sloupci Components in Axes of zvolíme hodnotu CG 5. smažeme spoj CS2, který nepotřebujeme:
▪ klikneme na text CS2 ve třetím řádku tabulky ▪ stiskneme tlačítko delete – je na pravé straně a je označeno červeným křížem
30. Náš model teď vypadá takhle:
31. Nyní nastavíme u bloků Revolute a Revolute1 počáteční úhly. Dvojklikneme postupně na každý z bloků Revolute a Revolute1 a v okně nastavíme Number of sensors/actuator ports na hodnotu 2 32. V nabídce Librarires v okně Simulink Library Browser klikneme na Seascape → SimMechanics → Sensors & Actuators. Uvidíme následující nabídku
33. Pomocí myši přeneseme ikonu Joint Initial Condition z okna Simulink Library Browser do okna dvojite_kyvadlo s vytvářeným modelem. 34. Propojíme porty bloků Joint Initial Condition a Revolute v okně dvojite_kyvadlo. 35. Pomocí myši přeneseme další ikonu Joint Initial Condition z okna Simulink Library Browser do okna dvojite_kyvadlo s vytvářeným modelem. 36. Propojíme porty bloků Joint Initial Condition1 a Revolute1 v okně dvojite_kyvadlo.
37. Dvojklikneme na blok Joint Initial Condition v okně dvojite_kyvadlo. Nastavíme zde počáteční podmínky pro pohyb prvního kyvadla 1. zvolíme položku ve sloupci Enable 2. ve sloupci Position nastavíme počáteční úhel na 45 3. ve sloupci Units zvolíme jednotku deg (t. úhlové stupně) 4. ve sloupci Velocity nastavíme nastvaníme počáteční rychlost na 0
38. Dvojklikneme na blok Joint Initial Condition1 v okně dvojite_kyvadlo. Nastavíme zde počáteční podmínky pro pohyb druhého kyvadla
1. 2. 3. 4.
zvolíme položku ve sloupci Enable ve sloupci Position nastavíme počáteční úhel na 45 ve sloupci Units zvolíme jednotku deg (t. úhlové stupně) ve sloupci Velocity nastavíme nastvaníme počáteční rychlost na 0
39. Abychom mohli sledovat velikosti úhlů, přidáme do našeho modelu dva snímací bloky 40. Z nabídky Librarires v okně Simulink Library Browser z Seascape → SimMechanics → Joints přeneseme do okna dvojite_kyvadlo postupně dvě ikony Joint Sensor 41. Blok Joint Sensor spojíme s blokem Revolute 42. Blok Joint Sensor1 spojíme s blokem Revolute1
43. Dvojklikneme na blok Joint Sensor a v části okna Joint Reactions/With respect to CS změníme volbu Absolute (World) na Local (Body CS)
44. Totéž provedeme pro blok Joint Sensor1. Dvojklikneme na blok Joint Sensor1 a v části okna Joint Reactions/With respect to CS změníme volbu Absolute (World) na Local (Body CS) 45. V nabídce Librarires v okně Simulink Library Browser klikneme na Simulink → Sinks. Uvidíme následující nabídku
46. Pomocí myši přeneseme ikonu To Workspace z okna Simulink Library Browser do okna dvojite_kyvadlo s vytvářeným modelem. 47. Blok To Workspace spojíme s blokem Joint Sensor 48. Dvojklikneme na blok To Workspace 1. nastavíme jméno proměnné v položce Variable name na theta 2. nastavíme typ proměnné na pole – v položce Save format vybereme Array
49. Operaci zopakujeme pro druhé kyvadlo 50. Pomocí myši přeneseme další ikonu To Workspace z okna Simulink Library Browser do okna dvojite_kyvadlo s vytvářeným modelem. 51. Blok To Workspace1 spojíme s blokem Joint Sensor1 52. Dvojklikneme na blok To Workspace1 1. nastavíme jméno proměnné v položce Variable name na phi 2. nastavíme typ proměnné na pole – v položce Save format vybereme Array 53. Náš model teď vypadá takhle
54. Nyní přidáme do našeho modelu brzdící síly. Brzdící momenty sil jsou dány vztahy M 1=−c ˙ ,
M 2=−c ˙
55. Dvojklikneme postupně na každý z bloků Revolute a Revolute1 a v okně nastavíme Number of sensors/actuator ports na hodnotu 4 56. Z nabídky Librarires v okně Simulink Library Browser z Seascape → SimMechanics → Joints přeneseme do okna dvojite_kyvadlo postupně dvě ikony Joint Sensor, které budou sloužit ke snímání úhlové rychlosti kyvadel 57. Blok Joint Sensor2 přípojíme k bloku Revolute 58. Blok Joint Sensor3 přípojíme k bloku Revolute1 59. Náš model teď vypadá takhle
60. Nyní nastavíme oba nové bloky Joint Sensor2 a Joint Sensor3 61. Dvojklikneme na blok Joint Sensor2 1. Budeme měřit úhlovou rychlost, takže zvolíme položku Angular velocity 2. Nastavíme jednotku na rad/s 3. v části okna Joint Reactions/With respect to CS změníme volbu Absolute (World) na Local (Body CS)
62. Stejné nastavení provedeme u bloku Joint Sensor3 63. Nyní vynásobíme výstup bloku Joint Sensor2 konstantou -c 64. V nabídce Librarires v okně Simulink Library Browser klikneme na Simulink → Math Operations. Uvidíme následující nabídku
65. Pomocí myši přeneseme z okna Simulink Library Browser do okna dvojite_kyvadlo s vytvářeným modelem postupně dvě ikony Gain 66. Blok Gain přípojíme k bloku Joint Sensor2 67. Blok Gain1 přípojíme k bloku Joint Sensor3 68. Vytvářený model bude mít následující vzhled
69. Nyní nastavíme zesílení u bloku Gain. Dvojklikneme na blok Gain 70. Do položky Gain v tabulce Main napíšeme požadované zesílení -0.1
71. Stejným způsobem nastavíme zesílení u bloku Gain1 72. Nastavené zesílení vidíme v popisu bloků Gain a Gain1. Náš model má následující vzhled
73. V nabídce Librarires v okně Simulink Library Browser klikneme na Seascape → SimMechanics → Sensors & Actuators. 74. Pomocí myši přeneseme z okna Simulink Library Browser do okna dvojite_kyvadlo s vytvářeným modelem postupně dvě ikony Joint Actuator 75. Výstup bloku Gain přípojíme ke vstupu bloku Joint Actuator 76. Výstup bloku Joint Actuator připojíme k bloku Revolute 77. Výstup bloku Gain1 přípojíme ke vstupu bloku Joint Actuator1 78. Výstup bloku Joint Actuator1 připojíme k bloku Revolute1 79. A je to hotovo. Náš výsledný model vypadá takhle