19 kwietnia 2024


Podstawą definicji każdego mechanizmu jest określenie par kinematycznych. Są jednak takie mechanizmy, w których kontakt pomiędzy jego częściami nie jest ciągły i dlatego definicja pary kinematycznej nie jest oczywista. Na przykład mechanizm maltański (znany także jako mechanizm genewski – zwłaszcza w literaturze anglojęzycznej) przekształca ciągły ruch obrotowy członu napędowego na okresowo przerywany ruch obrotowy członu napędzanego – trzpień koła napędowego wchodzi kolejno w kanałki koła napędzanego powodując jego okresowy obrót o kąt zależny od liczby kanałków.

Andrzej Wełyczko

Rozważmy definicję takiego mechanizmu i symulację jego ruchu w systemie CATIA V5 dla koła napędzanego z sześcioma kanałkami (Rys. 1).

mechanizm maltanski
Rys. 1

Definiowanie geometrii poszczególnych części tego zespołu pominę, aby skupić się na temacie głównym. Jeśli części zespołu mamy zdefiniowane, to podstawowym zadaniem jest ustalenie ich wzajemnego położenia w przestrzeni roboczej. Precyzyjną definicję wzajemnego położenia części wykonujemy w środowisku Assembly Design (Rys. 2), aplikując wymagane więzy (Constraints): Fix, Coincidence, Contact, itd. Dla uproszczenia zastosowałem sztywne połączenie (FixTogether) wałków (Shaft.1 i Shaft.2) odpowiednio z kołem napędowym (DriveWheel.1) i napędzanym (GenevaWheel.1).

Rys02
Rys. 2

Relacje typu Constraints zdefiniowane w środowisku Assembly Design nie są równoważne z definicją par kinematycznych, bo te są definiowane w środowisku Digital Mock-Up Kinematics. Jeśli w środowisku Assembly Design zdefiniowano relacje typu Constraints, to definicje par kinematycznych można uzyskać automatycznie za pomocą polecenia Assembly Constraints Conversion (Rys. 3).

Rys03
Rys. 3

W rezultacie takiej konwersji otrzymujemy cztery pary kinematyczne (Revolute.1, Revolute.2, Rigid.3 i Rigid.4) oraz element nieruchomy (Fix Part). Mechanizm ma dwa stopnie swobody (DOF = 2) i dlatego nie można jeszcze wykonać symulacji jego ruchu. Trzeba przecież określić jak ruch jest przenoszony z koła DriveWheel.1 na koło GenevaWheel.1 oraz zdefiniować element napędowy (tu oczywiście DriveWheel.1).
Naturalną (choć nie najprostszą) metodą powiązania ruchu kół DriveWheel.1 i GenevaWheel.1 jest wyznaczenie trajektorii ruchu osi trzpienia napędowego (DrivePinCenterPoint na rysunku 4) względem koła napędzanego.

Rys04
Rys.4

Zadanie to tylko z pozoru jest trudne, ponieważ:

  • w początkowej fazie ruchu trzpień napędowy porusza się w osi kanałka 1 – odcinek liniowy L1;
  • w końcowej fazie ruchu trzpień napędowy porusza się w osi kanałka 2 – odcinek liniowy L2;
  • pomiędzy tymi fazami trzpień porusza się po łuku okręgu (tu Circle), który jest styczny do odcinków L1 i L2.

Wniosek: punkt DrivePinCenterPoint porusza się po krzywej DrivePinMotionCurve, którą tworzą trzy segmenty: L1, Circle i L2. Punkt DrivePinCenterPoint musi być zdefiniowany w modelu DriveWheel, a krzywa DrivePinMotionCurve w modelu GenevaWheel.
Wałek Shaft.1 ma możliwość obrotu względem podstawy (tu: Base.1) i jest jednocześnie sztywno połączony z kołem DriveWheel.1. Z tego powodu parametr napędowy Command.1 musi być częścią definicji pary kinematycznej Revolute.1(Shaft.1, Base.1), bo ta ustala położenie wałka Shaft.1 względem podstawy Base.1 (Rys. 5).

Rys05
Rys. 5


Symulacja ruchu mechanizmu może być wykonana za pomocą polecenia Simulation with Commands (Rys. 6):

  • dla 0° ≤ Command.1 ≤ 60° kąt obrotu koła napędzanego zmienia się od 0° do 30°,
  • dla 60° < Command.1 < 300° kąt obrotu koła napędzanego jest stały i wynosi 30°,
  • dla 300° ≤ Command.1 ≤ 360° kąt obrotu koła napędzanego zmienia się od 30° do 60°.

Rys06
Rys. 6

Taka definicja mechanizmu ma jednak istotną wadę – nie jest możliwa symulacja ruchu dla więcej niż jednego obrotu koła napędowego. Dlaczego? Jeśli, na przykład, zdefiniujemy trajektorię ruchu trzpienia koła napędowego dla dwóch pełnych obrotów tego koła (Rys. 7A), to taka krzywa jest kompletnie nieużyteczna. I nawet jeśli algorytm definiowania pary kinematycznej typu Point Curve nie generuje błędu i pozwala na symulację ruchu mechanizmu, to ta zatrzymuje się dla Command.1 = 300°, czyli w punkcie, w którym łączą się trzy segmenty zadanej trajektorii ruchu trzpienia (odcinek liniowy i dwa łuki). Analiza krzywej wskazuje na błąd typu Manifold (Rys. 7B) w tym właśnie punkcie i dlatego symulacja ruchu mechanizmu dla Command.1 > 300° nie jest możliwa.

Rys07
Rys. 7


Sytuacja nie jest jednak beznadziejna, bo wiemy (Rys. 8) jak zmienia się kąt obrotu koła napędzanego (Revolute.2\Angle) w funkcji zmian kąta obrotu koła napędowego (Revolute.1\Angle). Na podstawie takich danych można zdefiniować geometryczne prawa zmienności tych kątów: ręcznie (na przykład w środowisku Sketcher) lub półautomatycznie (eksport wartości tych kątów do pliku dyskowego i rekonstrukcja funkcji Revolute.2\Angle = f(Revolute.1\Angle) – na przykład za pomocą dedykowanego makra).

Rys08
Rys. 8


Rozważmy kolejną wersję mechanizmu maltańskiego (Rys. 9), w którym usunięto parę kinematyczną Point Curve.5 oraz dodano kolejny parametr napędowy (tu: Command.2), odpowiedzialny za obrót koła GenevaWheel. Teoretycznie można wykonać symulację ruchu takiego mechanizmu bez praw zmienności i powiązania parametrów napędowych, ale w takim przypadku obrót koła napędzanego jest niezależny od obrotu koła napędowego. Jeśli zdefiniujemy wykresy (prawa) zmienności parametrów Command.1 oraz Command.2, to możliwa będzie symulacja ruchu mechanizmu dla dowolnej liczby obrotów koła napędowego.

Rys09
Rys. 9


Jak skonstruować wykresy zmian parametrów Command.1 i Command.2 w czasie? Odpowiedź jest raczej oczywista (Rys. 10):

  • Koło napędowe obraca się ze stałą prędkością kątową (załóżmy ω = 1°/s = 1/6 obr/min). Wartość kąta Revolute.1\Angle (czyli Command.1) zmienia się liniowo – wykres zmian tego parametru zdefiniowano jako szkic DriveWheel.
  • Koło napędzane obraca się ze zmienną prędkością – wykres zmian kąta Revolute.2\Angle (czyli Command.2) zdefiniowano jako szkic GenevaWheel.

Rys10
Rys. 10

 

Oba wykresy zostały zdefiniowane w nieruchomej części mechanizmu – tu: komponent Base.1. Struktura szkicu GenevaWheel nie jest skomplikowana: odcinek liniowy (Line.1) oraz dwie krzywe typu spline (Spline.1 i Spline.2). Zmiana wartości Revolute.2\Angle w zakresach 0°÷30° oraz 30°÷60° (reprezentowana przez krzywe Spline.1 i Spline.2) nie jest liniowa i dlatego trzeba zastanowić się ile punktów zastosować w definicji tych krzywych oraz jakie są współrzędne tych punktów. Najprostsze ale równocześnie najmniej dokładne rozwiązanie to dwa punkty skrajne z zadanymi warunkami styczności dla każdej krzywej spline.
Współrzędne punktów wewnętrznych krzywych Spline.1 i Spline.2 można wyznaczyć na podstawie konstrukcji geometrycznej (Rys. 11).

Rys11
Rys. 11

Zainteresowanych analizą geometryczną mechanizmu maltańskiego odsyłam do literatury fachowej. Tu ograniczę się tylko do krótkiego opisu:

  • Dla kąta Command.1 = 20° punkt P (oś trzpienia napędowego) określa wartość kąta Command.2 = 17,878°.
  • Punkt P’ (odpowiednik punktu P) na krzywej Spline.1 (czyli punkt CtrlPoint.2) ma współrzędne: H = 20mm, V = 17,878mm.

Oczywiście im większa będzie liczba punktów wewnętrznych krzywych Spline.1 i Spline.2, tym bardziej szkic GenevaWheel będzie zbliżony do rzeczywistego wykresu zmian kąta Revolute.2\Angle.
Jeśli geometryczna definicja zmienności parametrów napędowych mechanizmu jest gotowa, to za pomocą polecenia Link (okno Command Edition na rysunku 12) można powiązać parametr napędowy z odpowiednim szkicem – tu: Command.1 ze szkicem DriveWheel. Podobna operacja musi być powtórzona, aby powiązać Command.2 ze szkicem GenevaWheel.

Rys12
Rys. 12


W rezultacie wykonania tych poleceń (Rys. 13) w strukturze zespołu zostały utworzone dwa prawa zmienności (Law.1 i Law.2) oraz dwie formuły obliczeniowe do wyznaczenia wartości parametrów napędowych Command.1 i Command.2.

Rys13
Rys. 13

Mechanizm jest gotowy do symulacji ruchu – w tym przypadku zastosujemy polecenie Simulations with Laws (Rys. 14). Poza samą symulacją warto czasami analizować zmiany wartości wybranych parametrów (okno Sensors zakładka History) lub wykres ich zmian (okno Multiplot) – choćby po to, by potwierdzić poprawność definicji mechanizmu.

Rys14
Rys. 14


Jeśli trzeba wykonać symulację ruchu dla kilku obrotów koła napędowego (na przykład dla sześciu obrotów koła DriveWheel.1 uzyskamy jeden pełny obrót koła GenevaWheel.1), to trzeba odpowiednio zmodyfikować prawa zmienności, czyli (Rys. 15):

  • szkic DriveWheel – wymiary 360 (patrz Rys.10) zmienić na 6*360=2160,
  • szkic GenevaWheel – cały szkic skopiować pięć razy w taki sposób, aby zapewnić jego ciągłość (punkt początkowy kolejnej kopii jest zgodny z punktem końcowym poprzedniej).

Rys15
Rys. 15

 

Prawa zmienności mogą być także zdefiniowane analitycznie, za pomocą polecenia Rule w środowisku Knowledge Advisor. W takim przypadku należy zastosować równanie (Rys. 16) i w modelu pokazanym na rysunku 9 zdefiniować dwie zasady konstrukcyjne (DriveWheel oraz GenevaWheel na rysunku 17), w których Command.1\Angle jest odpowiednikiem kąta α, a Command.2\Angle jest odpowiednikiem kąta β.

Rys16
Rys. 16

Rys17
Rys. 17


Jeśli koło napędowe ma wykonać więcej niż jeden obrót (tu: sześć obrotów), to należy odpowiednio zmodyfikować zasadę GenevaWheel (Rys. 18).

Rys18
Rys. 18

W rezultacie model mechanizmu maltańskiego jest gotowy do symulacji w zakresie zdefiniowanym przez GenevaWheel (Rys. 19). Jeśli w modelu zostanie zdefiniowana odpowiednia reakcja (obiekt Reaction) albo makro, to treść tej zasady konstrukcyjnej może być automatycznie generowana dla zadanych wartości parametrów (liczba kanałków koła napędzanego N i odległość osi kół C). Symulacja ruchu mechanizmu zdefiniowanego tą metodą jest precyzyjna, bo odwołuje się do teoretycznego modelu mechanizmu maltańskiego (patrz: równanie na rysunku 16).

Rys19
Rys. 19


Którą z opisanych wyżej metod zastosować? Wybór zależy od wymaganej dokładności i zakresu symulacji oraz... dostępnych licencji systemu CATIA V5.

Andrzej Wełyczko

 

artykuł pochodzi z wydania 1/2 (124/125) styczeń-luty 2018