68
MISKOLCI EGYETEM GÉPÉSZMÉRNÖKI ÉS INFORMATIKAI KAR SZERSZÁMGÉPEK TANSZÉKE 3515 Miskolc-Egyetemváros SZAKDOLGOZAT Feladat címe: Szerszámgép főorsó elemzése KÉSZÍTETTE: Kőrössy Norbert BSc szintű, gépészmérnök szakos Szerszámgépészeti és Mechatronikai szakirányos hallgató TERVEZÉSVEZETŐ: Dr. Szilágyi Attila egyetemi docens KONZULENS: Dr. Hegedűs György egyetemi docens 2018. Május

KÉSZÍTETTE Kőrössy Norbert

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: KÉSZÍTETTE Kőrössy Norbert

MISKOLCI EGYETEM

GÉPÉSZMÉRNÖKI ÉS INFORMATIKAI KAR

SZERSZÁMGÉPEK TANSZÉKE 3515 Miskolc-Egyetemváros

SZAKDOLGOZAT

Feladat címe:

Szerszámgép főorsó elemzése

KÉSZÍTETTE:

Kőrössy Norbert

BSc szintű, gépészmérnök szakos

Szerszámgépészeti és Mechatronikai szakirányos hallgató

TERVEZÉSVEZETŐ:

Dr. Szilágyi Attila

egyetemi docens

KONZULENS:

Dr. Hegedűs György

egyetemi docens

2018. Május

Page 2: KÉSZÍTETTE Kőrössy Norbert

2

EREDETISÉGI NYILATKOZAT

NÉV: _________________________________________________________________________

NEPTUNKÓD: ____________________________________________________________________

SZAKDOLGOZAT CÍME: ______________________________________________________________

Fent nevezet büntetőjogi és fegyelmi felelősségem tudatában kijelentem, hogy

szakdolgozatomban minden szövegrész, ábra és táblázat – a megfelelően hivatkozott részek

kivételével – a saját munkám eredménye, a dolgozat más dokumentumra − beleértve korábbi

szakdolgozatom/diplomamunkám szakmai részeit is – nem támaszkodik.

Tudomásul veszem, hogy szakdolgozat esetén plágiumnak számít:

− szószerinti idézet közlése idézőjel és hivatkozás megjelölése nélkül;

− tartalmi idézet hivatkozás megjelölése nélkül;

− más publikált gondolatainak saját gondolatként való feltüntetése.

Alulírott kijelentem, hogy a plágium fogalmát megismertem, és tudomásul veszem, hogy

plágium esetén szakdolgozatom visszautasításra kerül, és fegyelmi eljárás megindítását

vonhatja maga után.

Kijelentem továbbá, hogy szakdolgozatom nyomtatott és elektronikus (CD-n benyújtott, az

Egyetem honlapjára feltöltött) példányai formailag, szerkezetileg és tartalmilag megegyeznek.

Kelt, …………………

………………………………..

Hallgató aláírása

Page 3: KÉSZÍTETTE Kőrössy Norbert

3

Idegen nyelvi összefoglaló

My thesis consists of writing a program which is able to calculate how much a spindle

bends when outside sources apply forces and torques to it. The program allows the user

to place any number of said forces and torques on the spindle and two or three bearings.

Any results are displayed on the user interface which consists of an overall view of the

spindle and all elements placed on it, and a diagram showing the changing of torque

alongside of aforementioned spindle. The user is provided with the option of calculating

in X-Z and Y-Z planes at the same time. The user interface is empty at first with all the

necessary input functions and a Refresh button located in the top left corner. The input

functions are behind an Add button which shows a dropdown menu once pressed. The

options here are the following:

1. Constrains

2. Torque

3. Force

4. Spindle data

5. Place to inspect

The Constrains tab allows the user to add one or two bearings which are capable of

moving on the spindle and one bearing which has a fixed position. At least one moving

bearing is necessary to be added.

The Torque tab holds the options to add torques on the spindle, providing their location

and extent on the X-Z and Y-Z planes or erase every torque added. All options must be

filled when adding torques, even if said option would be 0.

The Force tab is similar to the Torque tab, the user can add forces here or erase them

all. It is not necessary to provide forces or torques, the program can calculate the results

if one category or both are missing.

The Spindle data tab consists of the options to provide the spindle’s geometric

properties, such as length, outer diameter, spindle bore diameter or the elastic modulus

which is a material property.

The Place to inspect button brings up the window where we can provide the place to

calculate the spindle’s bending. All data must be in metric system.

Once the user provides the program with all necessary data they can make the diagrams

appear with the press of the Refresh button. If any data is incorrect or not provided but

needed, then an error message warns the user of the problem. The program also

displays the forces on bearings, so it can also be used in similar statics problems.

Page 4: KÉSZÍTETTE Kőrössy Norbert

4

Tartalom

EREDETISÉGI NYILATKOZAT ........................................................................................................... 2

Idegen nyelvi összefoglaló ............................................................................................................ 3

Bevezetés ...................................................................................................................................... 5

1. 1. A szakdolgozat célja .......................................................................................................... 5

1. 2. A pontosság, mint szerszámgép követelmény .................................................................. 5

1. 3. A pontosságot befolyásoló tényezők ................................................................................ 5

1. 4. A főorsó merevségét befolyásoló tényezők ...................................................................... 6

2. Jellemző erők és azok leküzdésére jellemző csapágyak ............................................................ 7

3. Szerszámgépekre jellemző paramétertartományok ................................................................. 9

3. 1. Esztergák jellemző paramétertartományai ....................................................................... 9

3. 2. Marógépek jellemző paramétertartományai .................................................................. 11

3. 3. Köszörűgépek jellemző paramétertartományai .............................................................. 12

4. Merevség számítása ................................................................................................................ 13

5. A főorsó merevség számító program ismertetése .................................................................. 15

5. 1. Felhasználói felület .......................................................................................................... 15

5. 2. Adatok bekérése ............................................................................................................. 17

5. 3. A számítások .................................................................................................................... 18

6. Grafika ..................................................................................................................................... 34

Összegzés .................................................................................................................................... 38

Irodalomjegyzék .......................................................................................................................... 39

Page 5: KÉSZÍTETTE Kőrössy Norbert

5

Bevezetés

A szerszámgépek a legigényesebb gépek. Ahhoz, hogy pontosan tudják elkészíteni a

gyártmányt ő maguknak is pontosnak kell lenniük. Évtizedek óta megy a verseny ezen

tulajdonság javításáért. A pontosság növelése érdekében a legfontosabb témák közé

tartozik a hőtágulásra odafigyelés a tervezéskor, rezgések csillapítása és a főorsó

merevsége. Számunkra az utóbbi lesz lényeges ebben a szakdolgozatban. A főorsók

mechanikai elemzésére alkalmas tételek már régóta elérhetőek, viszont a velük való

számítás hosszadalmas és nehéz. A technológia fejlődésének iránya manapság az

automatizálás felé halad, ebbe beletartozik az ilyen számítások elvégzése is.

Programozási nyelvek segítségével lehetőségünk van a hosszadalmas számításokat a

gépre bízni, ami elvégzi azokat a másodperc töredéke alatt. A mechanikai merevség

számítása is automatizálható, mivel a hozzá szükséges számítások levezethetőek

emberi beavatkozás nélkül, nem úgy, mint egy gép tervezésekor.

Egy ilyen fontos számítást rábízni egy programra viszont csak akkor lehet, ha az a

program minden lehetséges esetre tesztelve lett. A gyártáskor nagy veszteségek

léphetnek fel, ha egy hibás programra hagyatkozva végezzük azt.

1. 1. A szakdolgozat célja

Ennek a szakdolgozatnak a témája egy MATLAB program írása, ami alkalmas főorsók

merevségének számítására és a program működésének elmagyarázása. Mindenek előtt

szükséges megtennünk pár lépést, mint a szerszámgépek főorsójának elemzése: az azt

befolyásoló hatások vizsgálata és a főorsó kialakításának jellemzői és okai.

1. 2. A pontosság, mint szerszámgép követelmény

A szerszámgépek fő követelményei közé tartozik a termelékenység, nagy mozgási

jellemző tartomány (például esztergánál fordulatszán), gazdaságos kivitel, jó hatásfok,

megmunkálási dimenziók száma és a nekünk ezen elemzésben legfontosabb: a

pontosság.

1. 3. A pontosságot befolyásoló tényezők

A pontosság alatt azt értjük mennyire tudja megközelíteni az ideális méretet a

megmunkálás a munkadarabon. Befolyásolják az eredményt a szerszámgéptől származó

tényezők: kialakuló rezgések, a főorsó alakváltozása mechanikai (merevség) és hő

(hőtágulás) okozta forrásokból, főorsó munkatér felé kinyúló részének geometriai

pontossága, csapágyak játéka, felfogási felületek geometriai pontossága, szerszám

kialakítás, kopás és egyéb szerszámhoz köthető eltérés okozók (élrátét, alakváltozás

stb.), CNC gép esetén program helyes beállítása (koordináták) stb.

Page 6: KÉSZÍTETTE Kőrössy Norbert

6

A munkadarabhoz köthető pontosság befolyásoló tényezők az előgyártmány felfogási

felületének pontossága, megmunkálás okozta utólagos alakváltozások (például titánnál

az anyag „feldagad” a megmunkálás hatására ezért többször kell megmunkálni a

felületet).

A szerszámgép és a munkadarab egyenként rendelkezik olyan eltérés okozókkal, amiket

a másik fél ki tud javítani, mint nem elegendő maximális fordulatszám: ilyenkor nem

biztos, hogy tudunk keményfém szerszámot alkalmazni, kevésbé „problémás”

munkadarab anyagokat kell alkalmaznunk, vagy ha pont a munkadarab anyaga nehezen

megmunkálható, kialakítása miatt felfogása nehézkes, akkor a szerszámgép

adottságainak kell jobbnak lennie, hogy ez ne jelentsen gondot.

Továbbá eltérést okozhat külső tényező is: az előgyártmány rossz felfogása a dolgozó

által, a CNC program írásakor nem gondol a személy minden eshetőségre (sorja,

szerszám korrekció).

Mi a főorsó mechanikai okokból eredő alakváltozásait elemezzük, a főorsó merevségét.

1. 4. A főorsó merevségét befolyásoló tényezők

Amikor a főorsó merevségéről beszélünk, arra gondolunk, hogy az egyes pontjai

mekkora mértékben mozdulnak el mechanikai hatásokra, a tengely vonala mekkora

mértékben szenved el szögelfordulást a vizsgálati síkra merőleges tengely körül. Ezen

mechanikai hatások forrása lehet a főorsó előtti tengelyről fogaskerékkel beérkező

nyomaték és erő, illetve a megmunkálás terébe kivezetett részre visszaható forgácsolási

erők és nyomatékok.

Page 7: KÉSZÍTETTE Kőrössy Norbert

7

2. Jellemző erők és azok leküzdésére jellemző csapágyak

A behatások ellen különféle csapágyakkal biztosítjuk az alakváltozás mérsékeltségét (1.

ábra). Főként radiális irányú erőhatásokról beszélhetünk, de jelen vannak axiális irányú

erők is a főorsó vonalán. Egyes csapágyak alkalmasabbak axiális erők felvételére,

ilyeneket szoktunk alkalmazni a vezetőcsapágy szerepében, más csapágyak, mint a

legtöbb hengergörgős csapágy, alkalmatlanok axiális irányú erők leküzdésére. Láthatjuk

tehát, hogy jelentős mértékben megszabják a csapágyazás típusát a főorsóra ható erők.

1. ábra. A főorsó merevségének növeléséhez több csapággyal is megtámasztják [1].

Ezeket az erőket viszont az határozza meg, hogy a főorsót milyen módon hajtjuk meg és

a szerszámgép milyen típusú, mennyire jellemző a megmunkálási módjára az egyes

irányú erők. Ha helyezünk egy jobbsodrású koordináta rendszert a főorsóra, amiben a Z

tengely párhuzamos a főtengely vonalával, akkor egy ferde fogazatú fogaskerekes

meghajtás esetén a koordináta rendszer mind három irányában jelenik meg erő

komponens valamekkora mértékben, az X, Y irányú erőkomponenseket radiális irányú

erőknek besorolva, a Z irányú erőkomponenst axiálisnak.

Ezenkívül a megmunkálási térből a főorsóra visszaható erő is lehet axiális és radiális:

esztergára és palást köszörűre jellemzőbb a kisebb axiális irányú erő és nagyobb radiális,

míg marógépre és homlok köszörűre jellemzőbb a nagyobb axiális irányú erő.

Mi azonban a főorsó részeinek radiális irányú elmozdulását vizsgáljuk, amit az axiális

irányú erők nem befolyásolnak, így azokat csak a csapágyazás fontossága miatt figyeljük

meg. Befolyásolja még a radiális irányú elmozdulást a csapágy játéka is, illetve a

csapágyakkal érintkező felületek megmunkálásának pontossága (2. ábra).

Page 8: KÉSZÍTETTE Kőrössy Norbert

8

2. ábra. Csapágyazott alkatrészek illesztése.

Korábban említve voltak, hogy az egyes irányú erőket milyen csapágyak képesek

felvenni. Míg egy a tengellyel párhuzamos görgőjű hengergörgős csapágyak tényleg nem

alkalmasak axiális irányú erők felvételére, egy beálló hengergörgős csapágy vagy

kúpgörgős csapágy már alkalmas [3]. Ezenkívül a golyóscsapágyak is képesek

tengelyirányú erők felvételére, de ha nem elegendő mértékben, akkor beálló

golyóscsapágy alkalmazható. Ezenkívül vannak axiális golyóscsapágyak, illetve

hengergörgős csapágyak, amik alkalmatlanok radiális irányú erők felvételére, de

tengelyirányúra annál inkább.

1. táblázat. Csapágyak terhelhetősége [2].

Radiális teherbírás

közepes közepes közepes nagy nagyon

nagy nagy nincs

Axiális teherbírás

kicsi nagy

1 irányú nagy közepes nincs nagy

nagyon nagy

Page 9: KÉSZÍTETTE Kőrössy Norbert

9

3. Szerszámgépekre jellemző paramétertartományok

3. 1. Esztergák jellemző paramétertartományai

Az esztergáknál fontos tényező a fordulatszám, előtolás, teljesítmény és maximális

elérhető nyomaték. Ezek olyan változatosak, mint az eszterga típusok: eltérő lehet

egyetemes esztergánál, CNC esztergáknál és megmunkáló központoknál, karusszel

esztergánál, nagysebességű forgácsolásra tervezett esztergáknál, ultraprecíziós

forgácsolásra tervezett esztergáknál és egyéb változatoknál.

Néhány példa esztergák paraméter tartományaira híres szerszámgép gyártó cégek

termékeiből:

a.) DMG CLX 350 CNC eszterga

b.) DMTG 6130 i CNC eszterga

3. ábra. Példák eszterga megmunkáló központokra [4][5].

A 3. ábra látható DMG márkájú eszterga maximális teljesítménye 11 kW, ez a

tulajdonsága megegyezik a DMTG márkájú esztergáéval. A DMTG márkájú esztergának

viszont a főorsó fordulatszám tartománya csak 40 − 1000 𝑓𝑜𝑟𝑑𝑢𝑙𝑎𝑡

𝑚𝑖𝑛, míg a DMG

márkájúnak akár 5000 𝑓𝑜𝑟𝑑𝑢𝑙𝑎𝑡

𝑚𝑖𝑛 is lehet. Látható, hogy a motornak és a főhajtóműnek

köszönhetően nagy eltérés lehet a különböző kaliberű szerszámgépeknél. Annak

ellenére, hogy a nagysebességű forgácsolásra készült esztergáknak van a legnagyobb

kerületi sebességük, nem feltétlen nekik van a legnagyobb forgácsolóerejük, mivel igen

kicsi fogásvétellel működnek és tárcsa jellegű alkatrészek megmunkálására alkalmasak

csak. A tárcsajellegű alkatrészek viszont azt is jelentik, hogy nagyobb kerületi sebesség

mellé kisebb fordulatszám is elég, mert a megmunkált rész úgy is óriási sebességgel

találkozik a munkadarabbal. Az sem egyértelmű, hogy mekkorának számít a

nagysebesség forgácsolásnál, szakirodalmanként változnak a tartományok határai.

Page 10: KÉSZÍTETTE Kőrössy Norbert

10

4. ábra. Az egyes szerszámgépek forgácsolási sebességének tartományai különböző ezzel foglalkozó egyén szerint.

Az alsó skála mutatja a m/s –os mértékeket [6].

Az 4. ábra láthatjuk, hogy a diagramok 𝑚

𝑠-ban vannak megadva. Említettük, hogy a

nagysebességű forgácsolás csak tárcsa jellegű alkatrészek esetén alkalmazható. Ez azt

jelenti, hogy egy 500 mm-es átmérőjű munkadarabon 100 𝑚

𝑠-os forgácsolási sebesség

megfeleltethető 100

𝑚

𝑠

0,5 𝑚 ·𝜋= 63,662

1

𝑠= 3819

1

min -es fordulatszámnak. Ez a

fordulatszám nem túl nagy, de a munkadarab megmunkált felületének pontjainak relatív

mozgása a szerszámhoz képest mégis nagy. Ha a munkadarabon befelé haladunk ez a

kerületi sebesség csökken, ezért szükséges lehet a fordulatszám további növelése, ami

egy ekkora méretű munkadarabnál nem egyszerű feladat.

Page 11: KÉSZÍTETTE Kőrössy Norbert

11

3. 2. Marógépek jellemző paramétertartományai

Míg az esztergánál jellemzően a munkadarab mozgását hozta létre a főorsó, addig a

marógépeknél a szerszám mozgását valósítja meg. A mozgasd a kisebbet elve szerint ez

előnyös, azonban az összetett mozgások megbonyolíthatják a helyzetet. A maró

szerszáma általában bonyolultabb, összetettebb, több éllel is forgácsolhat egyszerre.

Emiatt a forgácsolóerő nagyobb mértékű lehet, mint egyéb megmunkálási

módszereknél.

Néhány példa marógépek paraméter tartományaira híres szerszámgép gyártó cégek

termékeiből:

a.) DMG DMU 50 3rd Generation

b.) DMTG XD Series Vertical CNC

Milling Machine

5. ábra. Példák marógépekre [7][8].

Az 5. ábra bemutatott DMG márkájú marógép 35 kW teljesítménnyel képes üzemelni a

DMTG 11 kW-os teljesítményével szemben és a DMTG marógép főorsója így csak

8000 𝑓𝑜𝑟𝑑𝑢𝑙𝑎𝑡

𝑚𝑖𝑛-re képes a DMF 20000

𝑓𝑜𝑟𝑑𝑢𝑙𝑎𝑡

𝑚𝑖𝑛-ével szemben. Mint az esztergánál, itt is

hasonló adatokkal találkozhatunk. A 4. ábra visszatekintve látni lehet, hogy

marógépeknél a nagysebességű forgácsolás legfeljebb 70 𝑚

𝑠 –os forgácsolási sebességet

mutat a szerszámon. A nagysebességű marásnál a szerszám igen kicsi, 6 mm és 16 mm

közé tehető.

Page 12: KÉSZÍTETTE Kőrössy Norbert

12

3. 3. Köszörűgépek jellemző paramétertartományai

A köszörűgépek főleg befejező megmunkálásra használatosak, de egy mértékig

nagyolásra is alkalmasak. A főorsó jellemzően a munkadarabot hajtja meg köszörülésnél,

a szerszám mozgását különálló egység valósítja meg. A fogásmélység igen kicsi, de nagy

erővel kell a köszörűkorongot a felülethez nyomni, ezért a passzív erő nagy. A kicsi

fogásmélység jelentéktelen axiális irányú erőt eredményez palást köszörülést

feltételezve. Homlokköszörűnél axiális irányba ad át erőt, radiálisan nem terheli a

korong a munkadarabot.

Az utóbbi eset számunkra kevésbé érdekes feltéve, hogy kis karon adódik át a felületről

a nyomaték homlokfelület köszörülésekor, de a palástfelületnél a nagy radiális irányú

erő jelentősen terhelheti a főorsót, eltorzulást eredményezve a munkadarabban a

megmunkálás során.

Néhány példa köszörűgépek paraméter tartományaira híres szerszámgép gyártó cégek

termékeiből:

a.) Studer External cylindrical grinding machine S121 Radius

b.) Mikrosa Kronos dual

6. ábra. Példák köszörűgépekre [9][10].

A 6. ábra látható Studer márkájú köszörűgép 3 kW teljesítménye mellett képes 1 −

1500 𝑓𝑜𝑟𝑑𝑢𝑙𝑎𝑡

𝑚𝑖𝑛 tartományban működtetni a fóorsóját, míg a Mikrosa márkájúnak 12 kW

maximális teljesítménnyel az 5 − 300 𝑓𝑜𝑟𝑑𝑢𝑙𝑎𝑡

𝑚𝑖𝑛 elérhető mindössze.

Page 13: KÉSZÍTETTE Kőrössy Norbert

13

4. Merevség számítása

A főorsó jellemzően a legnagyobb átmérőjű tengely a hajtóműben, mivel azt terhelik a

legjobban mechanikai igénybevételek. A merevség és pontosság biztosítása céljából

több ponton is csapágyazzák a főorsókat, mint a többi tengelyen, ahol inkább a hatásfok

leromlása miatt kell aggódni. A főorsó házból kivezetett részét olyan kúp illesztéséhez

tervezik, ami jellemző az adott szerszámgépre. A főorsó tervezésekor ügyelni kell arra,

hogy mivel többnyire a kivezetett résznek van a legnagyobb átmérője, csak egy irányból

szerelhető a főorsó. A bázis ez az átmérőhöz tartozó felület lesz, ami azt jelenti, hogy az

erre felfektetett elemek száma nagyobb lesz, pontatlanságuk összeadódik. Ez is

drágábbá teszi ezen rész kialakítását. Ezenkívül a főorsó átmérőjét nem szabad nagyobb

beszúrásokkal gyengíteni. Könnyíti a tervezést, hogy csapágy választásakor nem kell

annyira tartani azok élettartamától, mert az ott előforduló csapágy méretek és a több

csapágyas támasztás miatt messze felülmúlják a többi tengely csapágyainak

élettartamát. Ezenkívül előforduló kialakítások még főorsókon a reteszhornyok és külső

menetek is hornyos csapágyanyákhoz.

Az erők és nyomatékok okozta energiák és a Betti tétel segítségével állapítjuk meg, hogy a főorsó vizsgált pontja mekkora mértékben hajlik le [11]. A Betti tétel 1-es és 2-es erőrendszerekbe osztja a nyomatékokat és erőket, amikkel hat a két rendszer egymásra, majd kiszámolja az említett erők és nyomatékok okozta elmozdulások és szögelfordulásokkal a munkát. Nekünk viszont nem ismert az elmozdulás, se a szögelfordulás, ezért a munka megállapításához az energiaváltozásokra lesz szükségünk.

𝑊11 =1

2· ∑[𝐹𝑖

(1)⃑⃑ ⃑⃑ ⃑⃑ ⃑𝑛

𝑖=1

· 𝑢𝑖(1)⃑⃑ ⃑⃑ ⃑⃑ ⃑

+ 𝑀𝑖(1)⃑⃑ ⃑⃑ ⃑⃑ ⃑⃑

· 𝛹𝑖(1)⃑⃑ ⃑⃑ ⃑⃑ ⃑⃑

]

𝑊12 = ∑[𝐹𝑖(1)⃑⃑ ⃑⃑ ⃑⃑ ⃑

𝑛

𝑖=1

· 𝑢𝑖(2)⃑⃑ ⃑⃑ ⃑⃑ ⃑

+ 𝑀𝑖(1)⃑⃑ ⃑⃑ ⃑⃑ ⃑⃑

· 𝛹𝑖(2)⃑⃑ ⃑⃑ ⃑⃑ ⃑⃑

]

𝑊22 =1

2· ∑[𝐹𝑖

(2)⃑⃑ ⃑⃑ ⃑⃑ ⃑𝑛

𝑖=1

· 𝑢𝑖(2)⃑⃑ ⃑⃑ ⃑⃑ ⃑

+ 𝑀𝑖(2)⃑⃑ ⃑⃑ ⃑⃑ ⃑⃑

· 𝛹𝑖(2)⃑⃑ ⃑⃑ ⃑⃑ ⃑⃑

]

𝑊12 az 1-es rendszerről a 2-es rendszerre ható erők (𝐹𝑖(1)⃑⃑ ⃑⃑ ⃑⃑ ⃑

) és nyomatékok (𝑀𝑖(1)⃑⃑ ⃑⃑ ⃑⃑ ⃑⃑

) okozta

energia változás mértéke, 𝑢𝑖(2)⃑⃑ ⃑⃑ ⃑⃑ ⃑

az első erőrendszer okozta elmozdulások és 𝛹𝑖(2)⃑⃑ ⃑⃑ ⃑⃑ ⃑⃑

az első erőrendszer okozta szögelfordulások a második erőrendszerben. 𝑊11 , 𝑊21 és 𝑊22 ugyanígy értendő.

𝑊𝐾𝐴 = 𝑊11 + 𝑊12 + 𝑊22

𝑊𝐾𝐵 = 𝑊22 + 𝑊21 + 𝑊11

𝑊𝐾𝐴 és 𝑊𝐾

𝐵 a külső erők munkájának összege, a különbség köztük, hogy milyen sorrendben lettek az erőrendszerek erői és nyomatékai a másik (vagy saját) erőrendszerre helyezve. Akármilyen sorrendben helyeződnek egymásra az erőrendszerek, a végeredmény meg kell, hogy egyezzen, ezért a kettő értéke is azonos kell, hogy legyen:

Page 14: KÉSZÍTETTE Kőrössy Norbert

14

𝑊𝐾𝐴 = 𝑊𝐾

𝐵

Így pedig az egymásra ható erőrendszerek munkája is megegyezik:

𝑊12 = 𝑊21 = 𝑈12 = 𝑈21

Az energia változását a következőképpen számolhatjuk:

𝑈 = ∫(𝑁(1) + 𝑁(2))

2

2 · 𝐴 · 𝐸(𝐿)

𝑑𝑠 + ∫(𝑀ℎ1

(1)+ 𝑀ℎ1

(2))2

2 · 𝐼1 · 𝐸(𝐿)

𝑑𝑠 + ∫(𝑀ℎ2

(1)+ 𝑀ℎ2

(2))2

2 · 𝐼2 · 𝐸(𝐿)

𝑑𝑠

+ ∫𝐾1̃ · (𝑇1

(1)+ 𝑇1

(2))2

2 · 𝐴 · 𝐺(𝐿)

𝑑𝑠 + ∫𝐾2̃ · (𝑇2

(1)+ 𝑇2

(2))2

2 · 𝐴 · 𝐸(𝐿)

𝑑𝑠 + ∫(𝑀𝐶

(1)+ 𝑀𝐶

(2))2

2 · 𝐼𝐶 · 𝐺(𝐿)

𝑑𝑠

𝑈12 = ∫𝑁(1) · 𝑁(2)

𝐴 · 𝐸(𝐿)

𝑑𝑠 + ∫𝑀ℎ1

(1)· 𝑀ℎ1

(2)

𝐼1 · 𝐸(𝐿)

𝑑𝑠 + ∫𝑀ℎ2

(1)· 𝑀ℎ2

(2)

𝐼2 · 𝐸(𝐿)

𝑑𝑠 + ∫𝐾1̃ · 𝑇1

(1)· 𝑇1

(2)

𝐴 · 𝐺(𝐿)

𝑑𝑠

+ ∫𝐾2̃ · 𝑇2

(1)· 𝑇2

(2)

𝐴 · 𝐸(𝐿)

𝑑𝑠 + ∫𝑀𝐶

(1)· 𝑀𝐶

(2)

𝐼𝐶 · 𝐺(𝐿)

𝑑𝑠

Ahol U12 az energia változása, miközben az egyes rendszer hat a kettes rendszerre. N, T, Mh és Mc rendre a húzóerők, nyíróerők, hajlítónyomatékok és csavarónyomatékok, A, E, K, G, I és IC anyag és geometria jellemzők.

Nekünk a nyíróerő és a hajlítónyomaték elegendő, mert csak azok okoznak a vizsgált irányban elmozdulást és a nyíróerőnek csak az általa okozott hajlítónyomatékát vesszük figyelembe, mert a közvetlen okozott energia elhanyagolhatóan kicsi.

Az integrálásokat a Simpson formulával végezzük el, ami a következőképpen néz ki [11]:

𝑈12 = ∑[li6

⋅ (

𝑛

𝑖=1

𝑓𝑏𝑖(1)

⋅ 𝑓𝑏𝑖(2)

+ 4 ⋅ 𝑓𝑘𝑖(1)

⋅ 𝑓𝑘𝑖(2)

+ 𝑓𝑗𝑖(1)

⋅ 𝑓𝑗𝑖(2)

)]

Ahol U12 az energiaváltozás, li az i. szakasz hossza a nyomatéki ábrán, 𝑓𝑏𝑖(1)

az egyes

erőrendszer erői és nyomatékai okozta hajlítónyomatéki ábra bal oldali pontjának

értéke, 𝑓𝑘𝑖(1)

a középsőé és 𝑓𝑗𝑖(1)

a jobboldalinak, ahogy a 7. ábra is mutatja. Ennek

megfelelően 𝑓𝑏𝑖(2)

, 𝑓𝑘𝑖(2)

és 𝑓𝑗𝑖(2)

rendre megegyeznek a kettes erőrendszerre.

7. ábra. Példa hajlítónyomatéki ábrára és az említett 3 pontra

Page 15: KÉSZÍTETTE Kőrössy Norbert

15

5. A főorsó merevség számító program ismertetése

Eleinte Visual Basicben készítettem a programot, de kiderült, hogy a grafika

megvalósítása nagyon nehézkes lett volna a Visual Basic változóinak természete miatt.

A nyomatéki ábrák megrajzolásához minden egyes vonalhoz több változó kellett volna a

végpontjaik megadásához és mivel a cél korlátlan mennyiségű erő és nyomaték, ezért le

kellett volna foglalni több száz változót csak erre és mivel minden változónak más neve

van, ezért minden vonal megrajzolását külön ki kellett volna írni egyenként.

Ezzel ellentétben a MATLAB vektorokkal és mátrixokkal dolgozik, amikben elhelyezhetők

könnyedén a vonalak pontjaihoz szükséges értékek és mivel csak azt kell léptetni, hogy

a mátrix hányadik sorának hányadik oszlopából használjuk fel a számot, ezért egyetlen

for ciklussal kirajzolhatjuk a teljes nyomatéki ábrát. A MATLAB lett a végső választás.

5. 1. Felhasználói felület

Itt történik az adatbekérés, nyomatéki ábra és főorsó megjelenítés, illetve a lehajlási

érték kiírása.

8. ábra. Adatok megadása a felhasználói felületen

A 8. ábra láthatjuk a felhasználói felületet. A kényszer (csapágy) fülben lehet megadni az

elmozduló (görgő) csapágy és a nem elmozduló (csukló) csapágyak helyét, illetve

lehetőség van még egy 3. csapágy elhelyezésére is ami úgyszintén elmozduló. Az 1. görgő

és a csukló megadása szükséges, a 2. görgő opcionálisan adható meg, a program tud 2

csapággyal is számolni.

A Nyomaték fülben lehet megadni a koncentrált hajlító nyomatékok helyét és X illetve Y

értéküket. Alatta lehet törölni a Nyomatékok törlése gombbal az eddig megadott

nyomatéki értékeket. Ez szükséges, mivel a nyomatékok és erők értékei vektorokba

mennek és nehézkes utólag módosítani őket. Utólagos módosításhoz meg kéne

Page 16: KÉSZÍTETTE Kőrössy Norbert

16

jeleníteni az értékeket a felhasználónak, aminek vagy csak külön ablakban lenne hely,

vagy a grafikus megjelenítésnek kéne interaktívnak lennie, amit kirajzol a program és ott

lehetne kiválasztani a módosítandó értékeket, ami nehézzé válhat, ha túlzsúfolt az ábra.

Az Erő fülben lehet megadni a nyíróerők helyét és X illetve Y értéküket. Alatta lehet

törölni az Erők törlése gombbal az eddig megadott erőket. Csak a nyomatékok és erők

igényelnek ilyen funkciót, a többi bekért adat utólag felülíródik, ha ismét megadjuk őket.

A Tengely adatok fülben meg lehet adni a tengely geometriai adatait: hossz, külső, belső

átmérő és anyagtulajdonságként a rugalmassági modulus. Ezek közül csak a belső

átmérő megadása nem kötelező. Ha tömör tengellyel számol a felhasználó, akkor a

program utólag 0-ra állítja a belső átmérő értékét.

A vizsgálandó hely gombbal adjuk meg, hogy melyik részére írja ki a tengelynek a

lehajlását. Ennek a megadása is szükséges.

9. ábra. Nyomatéki ábra és eredmények

Az adatok megadása utána a Frissítés gombot megnyomva az ablak tetején kiírja a

program X és Y irányokban az elmozdulást és megrajzolja a tengelyt az X-Z és Y-Z síkokon

és a hozzá tartozó nyomatéki ábrákat ahogy a 9. ábra láthatjuk. A nyíróerő ábrák

megrajzolása még lehetőség lett volna és nem is jelentett volna nehézséget, de az ablak

így is túlzsúfolt, ezért ez a funkció egyelőre nem lett hozzáadva a programhoz. A

nyomatéki ábrák az értékeket a rajzablak körül megjelenített mértékegységek szerint

írja ki: Nm és m-ben. A tengely rajza m-ben írja a távolságokat a vízszintes tengelyen és

a nyomatékok és erők mellett kiírja az értékeket.

Page 17: KÉSZÍTETTE Kőrössy Norbert

17

5. 2. Adatok bekérése

Az említett fülek és gombok megnyomására kis ablakok ugranak fel, amikben meg

lehet adni az adatokat (10. ábra). Minden mező kitöltése szükséges, a 0 értékűek is. Az

ablakokban megadott adatok a programban globális változókba mennek, amik utána

elérhetőek más funkciókban is. Az erők és nyomatékoknál 3 adat megadása szükséges,

míg az összes többinél 1, ezért a globális változókba töltésük máshogy történik.

10. ábra. Adatok megadása

Az olyan változók, amik csak egy értéket igényelnek, mint az 1. görgő helye, közvetlen a

globális változóba töltődnek. Ezt az értéke utólag string (szöveg alapú) típusból double

típusba konvertáljuk és ha szükséges, más mértékegységbe átszámoljuk, mint itt a görgő

helyénél: mm-ben kéri az ablak a megadást a felhasználó kényelméért, de m-ben számol

vele utólag.

function gorgo_hozzaadas1_Callback(hObject, eventdata, handles) global G_H1 G_H1 = inputdlg('Görgõ helye [mm]','Görgõ megadása', [1 40]); G_H1=str2double(G_H1); G_H1=G_H1/1000;

Az erők és nyomatékok három adata egyetlen változóba megy, most például véve az erő

megadását a rero változóba. Az irero változó számolja, hogy hányadik alkalommal adnak

meg éppen erőt, ezt az információt felhasználva lépteti, hogy éppen a hányadik

oszlopába töltse a vektoroknak az adatot és utólagos számolásoknál is előkerül. Ha a

rero változó nem üres (helyesen adta meg a felhasználó), akkor értékét először string

(szöveg alapú) típusból double típusúba konvertálja, majd a numerikussá vált értéket

cella típusúvá alakítja és beletölti a rerofeloszt változóba. Majd a rerofeloszt értékeit

három vektorba tölti, mindegyiknek az irero-adik oszlopába. Az F_RH változóba az erő

helye kerül, az F_RXM változóba az X irányú értéke és az F_RYM változóba az Y irányú

értéke.

function rero_hozzaadas_Callback(hObject, eventdata, handles)

Page 18: KÉSZÍTETTE Kőrössy Norbert

18

global F_RH global F_RXM global F_RYM global irero prompt = {'Radiális erõ helye [mm]','Radiális erõ x irányú komponense

[N]','Radiális erõ y irányú komponense [N]'}; dlg_title = 'Radiális irányú erõ megadása'; num_lines = [1 45;1 45;1 45]; rero = inputdlg(prompt,dlg_title,num_lines); if isempty(rero) else rerofeloszt = num2cell(str2double(rero)); if isempty(irero) irero=1; else irero=irero+1; end [F_RH(1,irero),F_RXM(1,irero),F_RYM(1,irero)] = rerofeloszt{:}; F_RH(1,irero)=F_RH(1,irero)/1000; end

A nyomatékok és erők törlésére szánt gombok törlik a hozzájuk tartozó vektorok

értékeit.

function Clear_F_Callback(hObject, eventdata, handles) global F_RH global F_RXM global F_RYM global irero clear F_RH clear F_RXM clear F_RYM clear irero

5. 3. A számítások

A frissítés gomb mögött rejlik minden szilárdságtani számítás, grafika és a program 75-

80%-a. A program mielőtt nekiállna nagyobb számolásoknak ellenőrzi, hogy minden

helyesen meg lett-e adva. Ebbe beletartozik az is, hogy nem hiányoznak-e kötelezően

megadandó értékek és a megadott értékek a valóságban is lehetségesek-e. Utóbbi

ellenőrzés azt figyeli, hogy minden csapágy a tengelyen van-e, a tengely hossza pozitív

értékű-e, a rugalmassági modulus pozitív értékű-e és ugyanazon a helyen van-e két

csapágy. Mivel egy if-elseif funkció sorozattal van minden ellenőrizve, ezért egyszerre

csak egy figyelmeztetés fog felugrani hiba esetén, nem elárasztva a képernyőt (11. ábra).

if ~isempty(G_H2) if G_H2<0 || G_H2>L f = errordlg('Egy görgõ vagy csukló nincs a tengelyen.','Hibás

megadás'); return end end if ~isempty(G_H2)

Page 19: KÉSZÍTETTE Kőrössy Norbert

19

if G_H1 == G_H2 || CS_H==G_H2 f = errordlg('Két görgõ vagy egy görgõ és csukló helye

megegyezik.','Hibás megadás'); return end end if isempty(vh) f = errordlg('A hely, ahol a lehajlás számítása megtörténne nincs

megadva.','Hibás megadás'); elseif isempty(e) f = errordlg('Nincs rugalmassági modulus megadva.','Hibás

megadás'); elseif isempty(L) f = errordlg('Nincs a tengely hossza megadva.','Hibás megadás'); elseif isempty(dk) f = errordlg('Nincs a tengely küldõ átmérõje megadva.','Hibás

megadás'); elseif isempty(G_H1) f = errordlg('Az elsõ görgõ megadása szükséges.','Hibás megadás'); elseif isempty(CS_H) f = errordlg('A csukló megadása szükséges.','Hibás megadás'); elseif L<=0 f = errordlg('A tengely nem lehet 0 mm vagy kevesebb.','Hibás

megadás'); elseif G_H1<0 || CS_H<0 || G_H1>L || CS_H>L f = errordlg('Egy görgõ vagy csukló nincs a tengelyen.','Hibás

megadás'); elseif G_H1 == CS_H f = errordlg('Két görgõ vagy egy görgõ és csukló helye

megegyezik.','Hibás megadás'); elseif dk <= db f = errordlg('A külsõ átmérõ nagyobb kell legyen, mint a

belsõ.','Hibás megadás'); elseif e<=0 f = errordlg('A rugalmassági modulus nagyobb legyen mint

0.','Hibás megadás');

11. ábra. Hibaüzenet

Ha minden adat rendben van a program megkezdi a számításokat. Elsőként ellenőrzi,

hogy kettő vagy három csapágy van-e és megnézi azok milyen sorrendben helyezkednek

el a tengelyen. Két csapágynak betölti őket a H1 és H2 változókba ezen sorrendben. Ha

három csapágy van, akkor a baloldali csapágyat a H1-be, a jobboldali csapágyat a H2-be

és a középső csapágyat a H3-ba tölti. A H1, H2 és H3 változókkal történnek utólag a

számítások. Két csapágynál felveti a két lehetőséget ahogy elhelyezkedhetnek a

csapágyak és a megfelelőt kiválasztja, háromnál viszont egy vektorba helyezi a három

Page 20: KÉSZÍTETTE Kőrössy Norbert

20

csapágy helyét, növekvő sorrendbe rendezi őket és ezen sorrendben beletölti a

változókba.

elseif isempty(G_H2) if CS_H>G_H1 H1= G_H1; H2= CS_H; elseif G_H1>CS_H H1= CS_H; H2=G_H1; end else

HH=[G_H1, G_H2, CS_H]; HH = sortrows(HH' , 1'); HH = HH'; disp(HH) H1=HH(1,1); H2=HH(1,3); H3=HH(1,2); end

Ezekután nyomatéki egyenletekkel kiszámolja, hogy a csapágyakon mekkora erők

vannak. Még most úgy kezeli a három csapágyas megadásokat, mintha kettő lenne csak,

majd utólagos számításokkal tudja megmondani a középső csapágyon az erőt. Előjelre

figyelve sorban összeadja az erők és erőkarok szorzatát és beletölti a sumF_RXM és

sumF_RYM változókba. Közben a sumFX és sumFY változókban összeadja az erőket és a

végén ezek segítségével kiszámolja a H2 helyen lévő csapágyra az erőt és egy

erőegyensúllyal a H1 csapágyra, beletöltve a H2_EX, H2_EY, H1_EX és H1_EY változókba

az eredményt, ahol H1_EX a baloldali csapágyon az X irányú erő mértéke és H1_EY az Y

irányú. H2_EX és H2_EY ugyanígy értendő, csak a jobboldali csapágyra.

for a = 1:irero sumFX = sumFX + F_RXM(1,a); sumFY = sumFY + F_RYM(1,a); if F_RH>H1 sumF_RXM = sumF_RXM + F_RXM(1,a)*(F_RH(1,a)-H1); sumF_RYM = sumF_RYM + F_RYM(1,a)*(F_RH(1,a)-H1)*-1;

else sumF_RXM = sumF_RXM + F_RXM(1,a)*(H1-F_RH(1,a))*-1; sumF_RYM = sumF_RYM + F_RYM(1,a)*(H1-F_RH(1,a)); end end H2_EX = -1*(sumF_RXM+sumNY_HXM)/(H2-H1);

H1_EX = -1*(H2_EX + sumFX); H2_EY = (sumF_RYM+sumNY_HYM)/(H2-H1); H1_EY = -1*(H2_EY + sumFY);

Miután meg lettek állapítva az erők a csapágyakon a program betölti őket egy A mátrixba

a felhasználó által megadott erőkkel együtt és sorrendbe rendezi őket a sortrows()

Page 21: KÉSZÍTETTE Kőrössy Norbert

21

utasítással. Az A mátrix első sora az erők helye, a második sora az erők X komponense

és a harmadik sora az erők Y komponense. Mivel az erők megadása nem kötelező, ezért

csak akkor töltjük be őket az A mátrixba, ha a felhasználó helyezett erőt a tengelyre. Ha

nem is helyezett, attól még a nyomatékok miatt lesznek erők a csapágyakon.

if irero>0 A = [F_RH ; F_RXM ; F_RYM]; end B = [H1 ; H1_EX ; H1_EY]; C = [H2 ; H2_EX ; H2_EY]; if irero>0 A = [A , B , C]; else A = [B , C]; end A = sortrows(A' , 1'); A = A';

A mostani állapotában, ha nyomatékot számolnánk az A mátrixból, akkor hibás

eredményt kaphatunk, ha a felhasználó ugyan arra a helyre kétszer adott meg erőt vagy

az egyik erőt egy csapágyra helyezte. Ezekben az esetekben össze kell vonni az azonos

helyen lévő erőket és megszűntetni az ilyen módon felesleges oszlopokat az A

mátrixban. Az indh változó figyeli a mátrix hosszát míg az ind változót léptetjük,

ellenőrizve, hogy az éppen vizsgált erő helye megegyezik-e az előzővel. Az index hibák

elkerülése érdekében külön kell kezelni az utolsó erő ellenőrzését, mert a program nem

tudja az oszlop kivételekor az utolsó utáni oszlopot utána tenni.

[~,indh]=size(A); ind=2; disp(A) while ind<=indh if A(1,ind)==A(1,ind-1) A(2,ind-1)=A(2,ind-1)+A(2,ind); A(3,ind-1)=A(3,ind-1)+A(3,ind); if ind<indh A = [A(:,1:ind-1) A(:,ind+1:indh)]; else A = A(:,1:indh-1); end indh=indh-1; else ind=ind+1; end end

Ezen a ponton jön egy része a programnak, ami számolja a középső csapágyon az erőt.

Ha csak kettő csapágy van megadva ezt a részt teljesen kihagyja a program. Miután

ismertek az erők nekiállhatunk a nyomatéki ábra számításának. A nyomatéki ábrát olyan

módon készíti el a program, hogy végighalad a tartón minden erőt, koncentrált

nyomatékot és csapágyat figyelembe véve és minden egyes ilyen ponton készít az

Page 22: KÉSZÍTETTE Kőrössy Norbert

22

E_HNYOM mátrixban egy oszlopot, amiben az első sor a helye a változásnak, a második

az X értéke a nyomatéki ábrának és a harmadik az Y értéke. Egyes esetekben ugyan azon

a helyen több oszlopot is létre kell hozni, mint koncentrált nyomatékoknál, mert ott egy

ugrás van a nyomatéki ábrában és ügyelni kell rá, hogy a megfelelő értékkel folytatódjon

a nyomatéki ábra a következő erőig vagy csapágyig (12. ábra).

12. ábra. Nyomatéki ábra

Az E_HNYOM mátrix a következő módon nézne ki a 12. ábra szerint:

0 0.5 0.5 1.25 2 0 12.5 112.5 131.25 0 0 6.25 -93.75 -84.375 0

Az E_HNYOM mátrix számítása két főbb részt tartalmaz. Először az erők okozta

hajlítónyomatékot veszi csak figyelembe a nyomatékok nélkül. A megadott erőket és a

csapágyak erőit sorban az A mátrixból előveszi. Az X komponensét az erőnek az adott

helyen hozzáadja a D változóhoz, az Y értékét pedig az F változóhoz. Ez azért szükséges,

mert figyelembe kell venni a korábbi erőket amikor a nyomatéki ábrát számoljuk az

erőkarukkal a nyíróerő ábra szerint. A számítás így folyik: az éppen számolt hely előtti

erők összegét összeszorozza az előző hely töréspontjától a jelenlegi hely töréspontjáig

tartó távolsággal.

Page 23: KÉSZÍTETTE Kőrössy Norbert

23

13. ábra. Nyíróerőkből számítás

Amikor az éppen vizsgált hely előtti hely adataival akar számolni a program az első elem

esetén (ami a 13. ábra a 0 m-nél lévő csapágy) az A mátrix 0. oszlopát próbálná igénybe

venni, ami nem létezik. Ez hibát jelentene, ezért az első töréspontot külön megadjuk

előtte:

E_HNYOM(1,1) = A(1,2); E_HNYOM(2,1) = -1*(A(1,2)-A(1,1))*(A(2,1)); E_HNYOM(3,1) = -1*(A(1,2)-A(1,1))*(A(3,1)); D = A(2,1); F = A(3,1);

Ezenkívül az első erőt is betöltjük a D és F-be, ami biztosítja, hogyha megmaradt a D vagy

F változóban valamekkora érték korábban az nem fog számítási hibát okozni, amikor a

D vagy F előző értékéhez hozzáadjuk a következő erőt.

[~,c]=size(A); for a = 3:(c) D = D + A(2,a-1); F = F + A(3,a-1); E_HNYOM(1,a-1) = A(1,a); E_HNYOM(2,a-1) = E_HNYOM(2,a-2)-D*(A(1,a)-A(1,a-1)); E_HNYOM(3,a-1) = E_HNYOM(3,a-2)-F*(A(1,a)-A(1,a-1)); end

A for ciklus a harmadik elemtől indul, így a második erő okozta nyomatékot számolja és

a c. elemig halad, ami az A mátrix hossza és így az erők száma.

A nyíróerő ábrából számítás eredményét, ha kirajzolnánk akkor, a nyomatéki ábra vége,

feltéve, hogy a felhasználó adott meg koncentrált nyomatékokat, nem nullára menne

vissza a nyomatéki ábra végén ahogy kell nekünk, hanem pont akkora hibát mutatna

amekkora a koncentrált nyomatékok összege. Ezért is a következő lépés a koncentrált

nyomatékok beékelése az E_HNYOM változóba a megfelelő helyekre és az értékek

Page 24: KÉSZÍTETTE Kőrössy Norbert

24

újraszámolása ennek megfelelően. Előtte viszont elő kell készíteni az E_HNYOM változó

elejét.

Az első kategóriába esnek azok az esetek, amikor a bal oldali csapágytól még balra

helyezkedik el erő és a felhasználó nem adott meg nyomatékokat vagy a bal csapágytól

balra helyezkedik el erő és nyomaték is és a legbalra lévő erő és a bal csapágy között

helyezkedik el a legbalra lévő nyomaték. Ekkor a nyomatéki ábra a megfelelő erő helyére

betesz egy töréspontot ami nullától kezdődik, mert innentől változik a nyomatéki ábra.

Ha ez a töréspont nem lenne megadva, akkor a tengely eleje maradna az első töréspont,

mintha ott lenne az első erő. Szükséges feltétel, hogy vagy nincs nyomaték, vagy van és

jobbra helyezkedik el az első erőtől, mert a program nyomatékok hiányában 0-ra állítja

az első nyomaték helyét, mértékét és számlálóját egy korábbi részen.

if min(F_RH)<H1 && ihnyom==0 && irero>0 || min(F_RH)<H1 &&

min(NY_HH)>min(F_RH) && ihnyom>0 && irero>0; null2=[min(F_RH);0;0]; E_HNYOM = [null null2 E_HNYOM(:,1:asd)];

A második kategóriába tartoznak azok az esetek, amikor nincs erő megadva és a legbalra

lévő nyomaték balra helyezkedik el a baloldali csapágytól, vagy a legbalra lévő erő jobbra

van az említett nyomatéktól és balra az első csapágytól. Ez az előző esettel megegyezik,

csak itt koncentrált nyomatékkal kezdjük a nyomatéki ábrát és nem erő okozta

nyomatékkal. Ekkor az első törési pont a nyomaték helye. Ezenkívül a program az el

változót 1-re állítja, ami szükséges lesz egy későbbi számításban egy feltétel

ellenőrzésére.

elseif min(NY_HH)<H1 && irero==0 && ihnyom>0 || min(NY_HH)<H1 &&

min(NY_HH)<min(F_RH) && irero>0 && ihnyom>0 null2=[min(NY_HH);0;0]; E_HNYOM = [null2 E_HNYOM(:,1:asd)]; el=1;

A harmadik kategória akkor teljesül, ha a bal csapágytól balra nincs se erő, se nyomaték.

Ekkor a töréspontnak a bal csapágytól kell kezdődnie, mert még lehet balra kilógó rúd.

else null2=[H1;0;0]; E_HNYOM = [null2 E_HNYOM(:,1:asd)]; end

Ezzel elő lett készítve az E_HNYOM mátrix eleje. A számítások sikeressége érdekében

meg kell adni az utolsó töréspontot is, ami a legjobbra lévő nyomaték vagy erő helyén

van és értéke 0, mert ennél a pontnál tér vissza a hajlító nyomatéki ábra nullára. Először

a legjobbra lévő erő helyét tölti be a lezarh változóba, majd, ha ettől jobbra talál

Page 25: KÉSZÍTETTE Kőrössy Norbert

25

nyomatékot, akkor felülírja ennek helyével a változót és ha ez az érték még mindig balra

van a jobboldali csapágytól, akkor a csapágy helye lesz az utolsó töréspont.

[~,asd]=size(E_HNYOM); lezarh=max(F_RH); if lezarh<max(NY_HH) lezarh=max(NY_HH); end if lezarh<H2 lezarh=H2; end

lezar=[lezarh;0;0];

E_HNYOM = [E_HNYOM(:,1:asd) lezar];

Ezzel teljesen elő lett készítve az E_HNYOM mátrix a koncentrált nyomatékok

hozzáadásához. Ennek folyamata a következő módon fog kinézni: minden egyes

koncentrált nyomatékra megnézi a program, hogy melyik kategóriába esik. Ha talál

egyet, aminek megfelel a nyomaték helye, akkor az E_HNYOM mátrixot átszabja a

helyzetnek megfelelően. Hozzáad egy vagy több oszlopot a töréspontok szerint a

nyomatéki ábrában történő ugrások miatt. A folyamat egy while függvényben történik,

mert szükséges, hogy a léptetett változót változtathassuk a folyamat során. A b változó

dönti el, hogy éppen hányadik töréspontot és így hányadik oszlopát vetjük össze az

éppen vizsgált nyomatékkal. Ha nem teljesül egyik feltétel sem az éppen vizsgált

töréspontra, akkor eggyel növeli b-t a léptetéshez, viszont, ha teljesül és új

töréspontokat helyez el E_HNYOM-ban, akkor b értékét c+1-re kell állítanunk, hiszen

megtaláltuk a nyomaték helyét. Ebben az esetben nem kell tovább mennie a while

függvénynek ezzel a nyomatékkal, hanem kereshetjük a következő helyét. A c változó

azt mutatja meg, hogy milyen hosszú az E_HNYOM mátrix, ezért, ha beékelünk új

töréspontokat akkor c értékét is növelnünk kell az új töréspontok számával.

Az első kategóriába esik az az eset amikor az éppen vizsgált nyomaték helye megegyezik

az egyik töréspont helyével. Ez akkor történik meg amikor egy nyomaték azonos helyen

van egy erővel vagy egy csapággyal. Különleges eset, amikor az előkészített E_HNYOM-

ban már megadtuk a legbalra lévő nyomaték helyét. Emiatt szükséges az el változó,

hogyha megtalálja ebben az utasításban magát a nyomaték, akkor ne módosítsa

helytelenül utólag a mátrixot. Ez nem azt jelenti, hogy ekkor nem tesz semmit, mert az

előkészítéskor csak az első töréspont lett megadva, még nincs meg a következő

töréspont, ami koncentrált nyomaték okozta ugrás vége és a program ezen részének kell

létrehoznia az azután következő pontot is, aminek helye a következő erő vagy csapágy

helye és mértéke azonos az előzővel, mert ezen a szakaszon a hajlító nyomatéki ábra

értéke állandó. Ha az utoljára említett pont és a nyomaték között még egy koncentrált

nyomaték lenne, akkor a koncentrált nyomaték hozzáadási fázis második kategória fogja

azt figyelembe venni. A b<c feltétel azért szükséges, mert, ha az utolsó ponton van a

nyomaték, akkor azt elintézte az előkészítési fázisban.

Page 26: KÉSZÍTETTE Kőrössy Norbert

26

14. ábra. Koncentrált nyomatékkal kezdés

A 14. ábra az 1-essel jelölt töréspont lett előkészítve az előkészítési fázis kettes

kategóriájával. A 2-es töréspont a nyomaték miatti ugrás eredménye és mivel a görgőn

találta a következő erőt ezért a 3-as pont lett a második töréspont amit hozzáadott az

E_HNYOM mátrixhoz ez a rész. A nyomatéki ábra többi részéhez is hozzáadja a beékelt

koncentrált nyomatékot egy for ciklussal kivéve az utolsót, mert azt megadtuk előre.

if E_HNYOM(1,b) == NY_HH(1,a) && b<c if el>0 E_HNYOM = [E_HNYOM(:,1:b) null null E_HNYOM(:,b+1:c)]; c=c+2; E_HNYOM(1,b+1)=NY_HH(1,a); E_HNYOM(2,b+1)=E_HNYOM(2,b)+ NY_HXM(1,a); E_HNYOM(3,b+1)=E_HNYOM(3,b)+ NY_HYM(1,a); if irero>0 if min(F_RH)<H1 && min(F_RH)>NY_HH(1,a) E_HNYOM(1,b+2)=min(F_RH); E_HNYOM(2,b+2)=E_HNYOM(2,b)+ NY_HXM(1,a); E_HNYOM(3,b+2)=E_HNYOM(3,b)+ NY_HYM(1,a); end end if H1<min(F_RH) || irero==0 E_HNYOM(1,b+2)=H1; E_HNYOM(2,b+2)=E_HNYOM(2,b)+ NY_HXM(1,a); E_HNYOM(3,b+2)=E_HNYOM(3,b)+ NY_HYM(1,a); end for f=(b+3):c-1 E_HNYOM(2,f)=E_HNYOM(2,f)+ NY_HXM(1,a); E_HNYOM(3,f)=E_HNYOM(3,f)+ NY_HYM(1,a); end b=c+1;

Page 27: KÉSZÍTETTE Kőrössy Norbert

27

Hogyha viszont nem teljesül, hogy el>0 és így nem egy koncentrált nyomatékkal

kezdődik a nyomatéki ábra, hanem egy erővel, vagy a nyomaték olyan erőre esik, ami

előtt már volt erő és így nem állandó a nyomaték értéke, akkor nem szükséges az ugrás

utáni pont megadása miután azt egy másik kategória megadja. Itt elég csak az ugrás

végét hozzáadni és a jobbra lévő pontokhoz hozzáadni a koncentrált nyomatékot.

15. ábra. Koncentrált nyomaték utólag

A 15. ábra így csak az 1-es pont lesz hozzáadva az E_HNYOM mátrixhoz.

else E_HNYOM = [E_HNYOM(:,1:b) null E_HNYOM(:,b+1:c)]; c=c+1; E_HNYOM(1,b+1)=NY_HH(1,a); E_HNYOM(2,b+1)=E_HNYOM(2,b)+ NY_HXM(1,a); E_HNYOM(3,b+1)=E_HNYOM(3,b)+ NY_HYM(1,a); for f=(b+2):c-1 E_HNYOM(2,f)=E_HNYOM(2,f)+ NY_HXM(1,a); E_HNYOM(3,f)=E_HNYOM(3,f)+ NY_HYM(1,a); end b=c+1; end

A második kategória biztosítja, hogyha a jobb oldalt kilógó tengely utolsó eleme egy

koncentrált nyomaték, akkor a nyomatéki ábra értéke egy ugrás formájában végződjék

a 17. ábra szerint, ami a 16. ábra korrekciójának eredménye. Feltétel, hogy az éppen

vizsgált nyomaték helye azonos legyen a legnagyobb nyomaték helyével, különben

minden nyomaték esetén bemenne ebbe a kódrészbe, és ez a nyomaték a korábban

említett helyen legyen.

Page 28: KÉSZÍTETTE Kőrössy Norbert

28

16. ábra. Ugrás nélkül

17. ábra. Ugrással

elseif NY_HH(1,a)==max(NY_HH) && max(NY_HH)>H2 &&

max(NY_HH)>max(F_RH) E_HNYOM = [E_HNYOM(:,1:c-1) null E_HNYOM(:,c:c)]; E_HNYOM(1,c)=NY_HH(1,a); E_HNYOM(2,c)=E_HNYOM(2,c-1); E_HNYOM(3,c)=E_HNYOM(3,c-1); c=c+1; b=c+1;

A harmadik kategória az az eset, amikor még nem az utolsó töréspontot vizsgáljuk. Itt

vizsgáljuk azokat az eseteket, amikor két töréspont közé esik a nyomaték. Ilyenkor nem

tudjuk olyan könnyen hozzáadni a koncentrált nyomatékot, mert szükséges, hogy

mekkora volt a nyomaték éppen azon a részen, ahol a nyomaték miatti ugrás

bekövetkezett. Ennek megállapításához használjuk a távolságokat és azok arányában

meg tudjuk mondani a nyomaték változását addig a pontig, ahol lesz a koncentrált

nyomaték. Ez lesz az első töréspont amit hozzáadunk, míg a második az ugrás

eredménye lesz a nyomatéki ábrában.

Page 29: KÉSZÍTETTE Kőrössy Norbert

29

18. ábra. Koncentrált nyomaték két erő között

A 18. ábra 1-essel jelölt pont lesz, ahol tartott éppen a nyomatéki ábra amikor

megszakította a koncentrált nyomaték és a 2-es pont az ugrás eredménye. Ezekkel bővül

az E_HNYOM mátrix. Annak eldöntése, hogy ebbe a kategóriába esik-e a nyomaték úgy

történik, hogy először megnézi a program, hogy nem az utolsó töréspontot vizsgáljuk-e

éppen. Ennek feltétele, hogy b<c feltétel fennálljon, mert amikor az utolsó pontot

vizsgálnánk akkor azt próbálná megnézni a program, hogy az utolsó utáni elemtől

kisebb-e a nyomaték helye.

elseif b<c if E_HNYOM(1,b)< NY_HH(1,a) && E_HNYOM(1,b+1)>

NY_HH(1,a) E_HNYOM = [E_HNYOM(:,1:b) null null E_HNYOM(:,b+1:c)]; E_HNYOM(1,b+1)=NY_HH(1,a);

Itt átlagolja ki a program a nyomatékot: E_HNYOM(2,b+1)=E_HNYOM(2,b)+(NY_HH(1,a)-

E_HNYOM(1,b))/(E_HNYOM(1,b+3)-E_HNYOM(1,b))*(E_HNYOM(2,b+3)-

E_HNYOM(2,b)); E_HNYOM(3,b+1)=E_HNYOM(3,b)+(NY_HH(1,a)-

E_HNYOM(1,b))/(E_HNYOM(1,b+3)-E_HNYOM(1,b))*(E_HNYOM(3,b+3)-

E_HNYOM(3,b));

Itt adja hozzá az ugrást létrehozva a következő pontot: E_HNYOM(1,b+2)=NY_HH(1,a); E_HNYOM(2,b+2)=E_HNYOM(2,b+1)+ NY_HXM(1,a); E_HNYOM(3,b+2)=E_HNYOM(3,b+1)+ NY_HYM(1,a); c=c+2; for f=(b+3):c-1 E_HNYOM(2,f)=E_HNYOM(2,f)+ NY_HXM(1,a); E_HNYOM(3,f)=E_HNYOM(3,f)+ NY_HYM(1,a); end b=c+1; else b=b+1; end

Page 30: KÉSZÍTETTE Kőrössy Norbert

30

Az E_HNYOM mátrix kiegészítése után egy for ciklussal ismét hozzáállítja a nyomatéki

ábra többi részét a most hozzáadott nyomatéknak megfelelő helyzethez.

Miután a while függvény lefutott és minden nyomaték helye meglett, még ellenőrzi a

program, hogy az első megjelenítendő pont a nyomatéki ábra rajzolásakor a rúd legbalra

lévő pontja-e. Ez akkor lényeges, ha a rúd balra kinyúlik a csapágyon túl. A tengely jobb

oldali végének pontja, ha az kilóg a csapágyon túl még nem lényeges nekünk mivel most

a középső csapágyon számoljuk az erőt és ha az meglesz, akkor újra kell számolni

mindent. Az említett pont úgyis csak az ábra rajzolásakor szükséges.

Ezzel ismerjük, hogy a nyomatéki ábra a tengely mentén hogyan változik. A 8-as fejezet

módszerével nekiállhatunk számolni az energiákat a Simpson formulával együtt. A kettes

erőrendszer nyomatéki ábrája igen egyszerű, mivel az összes igénybevétel az egy 1 N-os

erő, amit a középső csapágy helyére teszünk. Az E_HNYOM mátrixnak megfelelő

töréspontokat tartalmazó mátrixa a kettes erőrendszernek a B változó lesz.

B=[0,H1,H3,H2,0;0,0,(H3-H1)*KE_H1*(-1),0,0;0,0,(H3-H1)*KE_H1*(-

1),0,0];

Az első töréspont a rúd bal vége lesz, utána következik a bal csapágy, ezeken a

nyomatéki ábra 0 még. A harmadik töréspont a középső csapágy helye, itt már a nyíróerő

ábra szerinti mértékű hajlító nyomaték lesz és a jobb csapágyon, ami a 4. oszlopában

lesz a B mátrixnak, ismét visszatér a 0 értékhez, folytatva a rúd végével, ami az 5.

töréspont.

Mielőtt még nekiállnánk a nyomatéki ábrák pontjainak összeszorzásának ügyelnünk kell

arra, hogy ha nem volt se erő, se nyomaték a középső csapágyra elhelyezve a felhasználó

által, akkor az E_HNYOM mátrixban nem lesz töréspont ezen a helyen, míg a B mátrixban

igen.

19. ábra. B mátrix: kettes rendszer

20. ábra. E_HNYOM mátrix: egyes rendszer

Page 31: KÉSZÍTETTE Kőrössy Norbert

31

A 19. ábra, ami a kettes erőrendszernek felel meg, törés van a 500, 1000 és 1500 mm-

nek megfelelő pontokon míg a 20. ábra az 500, 800, 1200 és 1500 mm-eknél van

változás. Nekünk viszont a 800 mm és 1000 mm közti szakaszon is 3 ponton kell néznünk

a nyomatéki ábrákat összeszorzáskor, ezért egy külön változóban egyesítjük a két

rendszer pontjainak helyét és sorba rendezzük őket.

clear C [~,n]=size(E_HNYOM); for f=1:n C(1,f)=E_HNYOM(1,f); end C=[C,H3]; C = sortrows(C' , 1'); C = C';

Az összes töréspont ismeretében elkezdhetjük összeszorozni a 8-as fejezet alapján a

nyomatéki ábrák pontjait. A C vektor összes pontján végig haladva megkeressük a két

rendszer megfelelő szakaszait az E_HNYOM és a B mátrixokban, amikbe beleesik a C

vektor éppen vizsgált pontja.

[~,n]=size(E_HNYOM); [~,j]=size(C); for f=1:(j-1) m=1; v=1; while (m<n) if E_HNYOM(1,m)<=C(1,f) && E_HNYOM(1,m+1)>C(1,f) o=m; m=n; else m=m+1; end

Az m változót léptetve keresi hányadik szakasz lesz a megfelelő és a szakasz számát az o

változóba menti el. A B mátrix vizsgálata is így működik.

A szakaszok végpontjainak ismeretében arányokkal ki tudjuk számolni éppen mekkora a

nyomaték a bal, közép és jobb pontjain az adott résznek a két erőrendszerben a

következő egysoros egyenlettel:

enx=enx+(C(1,f+1)-C(1,f))/6*((E_HNYOM(2,o)+(E_HNYOM(2,o+1)-

E_HNYOM(2,o))*(C(1,f)-E_HNYOM(1,o))/(E_HNYOM(1,o+1)-

E_HNYOM(1,o)))*(B(2,p)+(B(2,p+1)-B(2,p))*(C(1,f)-B(1,p))/(B(1,p+1)-

B(1,p)))+4*(E_HNYOM(2,o)+(E_HNYOM(2,o+1)-

E_HNYOM(2,o))*((C(1,f)+C(1,f+1))/2-E_HNYOM(1,o))/(E_HNYOM(1,o+1)-

E_HNYOM(1,o)))*(B(2,p)+(B(2,p+1)-B(2,p))*((C(1,f)+C(1,f+1))/2-

B(1,p))/(B(1,p+1)-B(1,p)))+(E_HNYOM(2,o)+(E_HNYOM(2,o+1)-

E_HNYOM(2,o))*(C(1,f+1)-E_HNYOM(1,o))/(E_HNYOM(1,o+1)-

E_HNYOM(1,o)))*(B(2,p)+(B(2,p+1)-B(2,p))*(C(1,f+1)-B(1,p))/(B(1,p+1)-

B(1,p))));

Page 32: KÉSZÍTETTE Kőrössy Norbert

32

Ez az egyenlet a Simpson formula szerint számolja az energiát az enx változóba az X-Z

síkon. Az eny változóba az Y-Z sík szerinti nyomatéki ábra értékeinek szorzata megy

ugyanígy. Ha két csapágyas lenne a feladat akkor már majdnem meglenne a lehajlás

mértéke, de mi most ezzel a középső csapágyon számoljuk az erőt a következő

módszerrel:

𝑄 =∫ 𝑀𝑂 ⋅ 𝑚 𝑑𝑠(𝐿)

∫ 𝑚2 𝑑𝑠(𝐿)

[𝑁]

Ez az eredmény elérhető többek között a Betti tételből is levezetve. A tört számlálójában

az egyes rendszer ( 𝑀𝑂 [𝑁𝑚] ) nyomatékát szorozzuk a kettes rendszer értékével

(𝑚 [𝑚]), így a számlálónak felelnek meg az enx és eny változók. A tört nevezője, amivel

osztjuk a kiszámolt energiákat, úgyszintén a Simpson formulával lesz számolva a

következő módon:

for f=1:b-1 kenx=kenx+(B(1,f+1)-

B(1,f))/6*(B(2,f)^2+4*((B(2,f)+B(2,f+1))/2)^2+B(2,f+1)^2); keny=kenx; end

A kenx és keny változókba töltjük a töréspontok önmagukkal való szorzatát, majd az enx

és eny változókat beosztjuk velük megkapva az X és Y irányú erőket a középső

csapágyon. Ezeket az erőket egyből beletöltjük egy q vektorba, aminek első sora a

középső csapágy helye, második sora az X irányú erő, amit a csapágy kifejt a tengelyre

és a harmadik sora az Y irányú komponense az említett erőnek.

q=[H3;enx/kenx;eny/keny];

Ennek ismeretében újra kell számolnunk az erőket a másik két csapágyon ahogy azt a

csapágyak sorba rendezése után tettük korábban. Az összes erőt ismét beletöltjük az A

mátrixba, amiben tároltuk őket korábban és ismét egybevonjuk az erőket, amik azonos

helyeken vannak ezúttal a középső csapágyra is odafigyelve.

Ezen a ponton visszatér a program abba a részbe, ami akkor is szükséges, ha nincs

középső csapágy. Ha nincs, akkor az elsőként kiszámolt A mátrix értékévek kezdi

kiszámolni a nyomatéki ábra pontjait az erőkkel és majd a koncentrált nyomatékokkal,

ha volt középső csapágy akkor az újra számolt A mátrixszal dolgozik. Ez a rész nagyjából

megegyezik az eddig tárgyalt nyomaték és energia számítással egészen addig, amíg ki

nem számoljuk a nyomatéki ábrák egymással lévő szorzatát és azt beletöltjük az enx és

eny változókba ismét. Itt a rugalmassági modulus és a tengely geometriájának

ismeretében már kiszámítható az elmozdulás a 8-as fejezet alapján. Az említett

Page 33: KÉSZÍTETTE Kőrössy Norbert

33

fejezetben a Simpson formulát 𝑈12-re írtuk fel, ami az enx és eny a programban. Így már

ismerjük 𝑈12-t és mivel 𝑈12 = 𝑊12 kifejezhetjük 𝑊12-ből a lehajlást.

𝑢 =1

2 ⋅ 𝐸 ⋅ 𝐼⋅ 𝑈12 =

1

𝐸 ⋅(𝐷4 − 𝑑4) ⋅ 𝜋

32

⋅ 𝑈12

Ahol 𝑢 a lehajlás, 𝐸 a rugalmassági modulus, 𝐷 a tengely külső átmérője, 𝑑 a belső

átmérője és 𝐼 a másodrendű nyomaték. Ezek alapján a programban az elmozdulás

számítása a következő módon fog kinézni:

vx=1/(e* ((dk^4-db^4)*pi)/32)*enx*1000000; vy=1/(e* ((dk^4-db^4)*pi)/32)*eny*1000000;

Ahol vx lesz az X-Z síkban elmozdulás és vy lesz az Y-Z síkban elmozdulás. Mivel az

eredmény méterben jönne ki, ezért felszorozzuk, hogy µm legyen a mértékegység, így

olvashatóbban fog kinézni, amikor kiírja a program a felhasználói felületen. Azokra az

esetekre, amikor a felhasználó valami okból kifolyólag egy csapágy helyén akarja

számolni az elmozdulást beállítjuk vx és vy értékét 0-ra, hogy ne NaN értéket írjon ki a

felületen ahogy szokott ilyenkor.

if vh==H1 || vh==H2 vx=0; vy=0; end if ~isempty(G_H2) if vh==H3 vx=0; vy=0; end end

Page 34: KÉSZÍTETTE Kőrössy Norbert

34

6. Grafika

A grafika megkezdése előtt még ellenőrizzük, hogy a nyomatéki ábra pontjainak számításakor a program nem hagyott-e kerekítési hibát az E_HNYOM mátrixban, ahogy a 21. ábra is láthatjuk. Megesik, hogy azon a helyen, ahol a nyomatéki ábra visszatérne 0 Nm-re a program miatt 10-15-10-14 Nm nagyságrendű értékeket mutat. Egy for ciklussal az összes 10-10 Nm és -10-10 Nm közötti értéket 0-ra állítjuk a 22. ábra szerint.

[~,s]=size(E_HNYOM); for f=1:s if E_HNYOM(2,f)>-10^-10 && E_HNYOM(2,f)<10^-10 E_HNYOM(2,f)=0; end if E_HNYOM(3,f)>-10^-10 && E_HNYOM(3,f)<10^-10 E_HNYOM(3,f)=0; end end

21. ábra. Kerekítés nélkül

22. ábra. Kerekítéssel

Ezzel el is kezdhetjük a grafikát. Az ábrák négy subplot-ban lesznek megrajzolva fentről

lefelé ahogy a 9. ábra is láthattuk a következő sorrendben:

1. X-Z sík tengely elrendezés

2. X-Z sík nyomatéki ábra

3. Y-Z sík tengely elrendezés

4. Y-Z sík nyomatéki ábra

A tengely elrendezésekben ki kell rajzolnunk a csapágyakat, erőket, nyomatékokat, a

tengelyt és a sík koordináta rendszerének irányait (24. ábra). A p1 és p2 változók lesznek

a tengely végpontjai, míg a p3 és p4 változókat használjuk minden más megrajzolására.

A második görgő megrajzolása:

if ~isempty(G_H2) p3=[G_H2,G_H2-L/320]; p4=[-L/5+L/20,-L/5+L/40]; line(p3,p4,'Color','black'); p3=[G_H2-L/320,G_H2]; p4=[-L/5+L/40,-L/5]; line(p3,p4,'Color','black'); p3=[G_H2,G_H2+L/320]; p4=[-L/5+L/20,-L/5+L/40]; line(p3,p4,'Color','black'); p3=[G_H2+L/320,G_H2]; p4=[-L/5+L/40,-L/5]; line(p3,p4,'Color','black'); p3=[G_H2,G_H2+L/80]; p4=[0,-L/5+L/20];

Page 35: KÉSZÍTETTE Kőrössy Norbert

35

line(p3,p4,'Color','black'); p3=[G_H2,G_H2-L/80]; p4=[0,-L/5+L/20]; line(p3,p4,'Color','black'); p3=[G_H2+L/80,G_H2-L/80]; p4=[-L/5+L/20,-L/5+L/20]; line(p3,p4,'Color','black'); end

Míg az első görgő és a csukló megadása kötelező, addig a második opcionális, ezért is

van egy if függvénybe foglalva. Mint látható, az egész a tengely hosszának arányában

íródott, ezzel törekedve arra, hogy minél inkább esztétikusan nézzenek ki az elemek.

A 23. ábra láthatjuk az erők megrajzolását, amihez az A mátrix elemeit vesszük ismét elő.

Figyelünk rá, hogy mikor pozitív és mikor negatív az erő. A programban korábban

használt A mátrixban az azonos helyeken lévő erőket összevontuk, ezért, ha több erő

van elhelyezve a csapágyon a felhasználó által, akkor azok az erők hozzáadódnak ahhoz

az erőhöz, amivel a csapágy tartja a tengelyt. Ezért a felhasználói felületen jobb fölül

külön kiírjuk a csapágyak tartóerejét.

23. ábra. Erők a csapágyon

24. ábra. Elemek a tengelyen

Az erők kirajzolása:

for f=1:p if A(3,f)>0 || A(3,f)<0 p3=[A(1,f),A(1,f)]; p4=[L/40,L/3]; line(p3,p4,'Color','black');

Ha az erő pozitív: if A(3,f)>0 p3=[A(1,f),A(1,f)-L/200]; p4=[L/3,L/3-L/10]; line(p3,p4,'Color','black');

Page 36: KÉSZÍTETTE Kőrössy Norbert

36

p3=[A(1,f),A(1,f)+L/200]; p4=[L/3,L/3-L/10]; line(p3,p4,'Color','black');

Ha negatív: else p3=[A(1,f),A(1,f)-L/200]; p4=[L/40,L/40+L/10]; line(p3,p4,'Color','black'); p3=[A(1,f),A(1,f)+L/200]; p4=[L/40,L/40+L/10]; line(p3,p4,'Color','black'); end

Erők értékének kiírása a nyilakra: TXT=A(3,f); TXT=num2str(TXT); TXT=strcat(TXT,' N'); text(A(1,f),L/2,TXT) end end

A csapágyon lévő erők kiírása a felületen:

if ~isempty(G_H2) textLabel = sprintf('Csapágyakon erõ X irányba sorrendben: %.3f %.3f

%.3f N', H1_EX, q(2,1), H2_EX); set(handles.text8, 'String', textLabel); textLabel = sprintf('Csapágyakon erõ Y irányba sorrendben: %.3f %.3f

%.3f N', H1_EY, q(3,1), H2_EY); set(handles.text10, 'String', textLabel); else

Az átláthatóság kedvéért a tizedesvessző után csak három számig írjuk ki az értékeket az

erőknél.

A koncentrált nyomatékok rajzolásánál a globális változókat vesszük elő, amiben megírta

a felhasználó azok helyét és komponenseit. Itt is figyelni kell arra, hogy pozitív vagy

negatív a nyomaték értéke és arra, hogy az X-Z és Y-Z síkokban a koncentrált hajlító

nyomatékok iránya ellentétes.

Nyomaték rajzolása:

for f=1:ihnyom if NY_HYM(1,f)>0 || NY_HYM(1,f)<0 p3=[NY_HH(1,f)-L/80,NY_HH(1,f)]; p4=[0,L/8]; line(p3,p4,'Color','black'); p3=[NY_HH(1,f),NY_HH(1,f)+L/80]; p4=[L/8,0]; line(p3,p4,'Color','black');

Page 37: KÉSZÍTETTE Kőrössy Norbert

37

Ha pozitív:

if NY_HYM(1,f)>0 p3=[NY_HH(1,f)+L/80,NY_HH(1,f)+L/160]; p4=[0,-L/16]; line(p3,p4,'Color','black'); p3=[NY_HH(1,f)-L/80,NY_HH(1,f)]; p4=[0,-L/8]; line(p3,p4,'Color','black'); p3=[NY_HH(1,f)+L/160,NY_HH(1,f)+L/80]; p4=[-L/16,-L/19]; line(p3,p4,'Color','black'); p3=[NY_HH(1,f)+L/160,NY_HH(1,f)+L/160]; p4=[-L/16,-L/300]; line(p3,p4,'Color','black');

Ha negatív:

else p3=[NY_HH(1,f)-L/80,NY_HH(1,f)-L/160]; p4=[0,-L/16]; line(p3,p4,'Color','black'); p3=[NY_HH(1,f)+L/80,NY_HH(1,f)]; p4=[0,-L/8]; line(p3,p4,'Color','black'); p3=[NY_HH(1,f)-L/160,NY_HH(1,f)-L/80]; p4=[-L/16,-L/19]; line(p3,p4,'Color','black'); p3=[NY_HH(1,f)-L/160,NY_HH(1,f)-L/160]; p4=[-L/16,-L/300]; line(p3,p4,'Color','black'); end

Nyomaték értékének kiírása:

TXT=NY_HYM(1,f); TXT=num2str(TXT); TXT=strcat(TXT,' Nm'); text(NY_HH(1,f),-L/4,TXT) end end

A tengely elrendezés alatti nyomatéki ábra kirajzolása a hosszasan előkészített

E_HNYOM mátrixszal már igen könnyű. Előzőleg bele lett öltve t, x és y változókba

minden sora E_HNYOM-nak és most ezekkel a vektorokkal megrajzoljuk a nyomatéki

ábrákat:

subplot(4,1,2) grid on line(t,x,'Color','black')

A grid on funkció rácsozott háttérrel látja el a subplot-ot, ami ellátja a koordináta tengely

feladatát, aminek köszönhetően láttuk éppen pozitív vagy negatív a nyomatéki ábra, és

jobban is átlátható az ábra mintha végig sraffoznánk. A koordináta tengelyek a subplot

külső részén futnak.

Page 38: KÉSZÍTETTE Kőrössy Norbert

38

Összegzés

Ezzel elkészült egy aránylag pontos szilárdságtani számításokra alkalmas program. Az

teszi főleg főorsókhoz alkalmassá ezt a programot, hogy lehetőséget a cső

keresztmetszet szerinti számolásra és a középső megtámasztásra, ami megesik hosszabb

tengelyeknél. Igaz a főorsóknál többnyire háromnál több csapágy van elhelyezve, de ha

az egymás mellett lévő csapágyakat együtt kezeljük, akkor közel azonos eredményt

érhetünk el. A program írásakor cél volt, hogy minél inkább felhasználó barát legyen

olyan módon, hogy bármit megengedjen, ami fizikailag még lehetséges, de ha ezt a

határt túllépi a felhasználó (például a belső átmérője a rúdnak nagyobb, mint a külső),

akkor figyelmeztesse erre.

A program jelenleg is szép mennyiségű funkcióval rendelkezik, de még rengeteg fejlődési

lehetőség van, mint a háromnál is több csapágyak alkalmazása, változó

keresztmetszetek, nyíróerők okozta energiák számolása, eloszló erők és a felhasználói

felület olyanná formálása, hogy az esztétikusan meg tudja jeleníteni a zsúfoltság

elkerülése érdekében ebben a verzióban kihagyott nyíróerő ábrát is. A felsorolt

lehetőségek azt növelik, hogy milyen esetekre alkalmazható a program, de még más

fejlődési irány is létezik, mint a felhasználó által megadott adatok lementése fájlokba a

későbbi munka gyorsabb helyreállítása érdekében, nyomatéki ábrák rajzolása és

lementése képfájlokba, amit alkalmazhatunk más munkákban, vagy interaktív

felhasználói felület a megadott elemek gyors módosításához.

Attól függetlenül, hogy főleg főorsókhoz készült a program még felhasználható

bármilyen más rúd jellegű kerek keresztmetszetű elem szilárdságtani vizsgálatához. A

négyszög vagy I szelvény keresztmetszetek, nem egyenes vonalú rudak, illetve a

befalazás funkció hiánya limitálja más tereken a használatot, de miután azok nem

fordulnak elő főorsóknál, ezért hozzáadásuk eléggé eltérítené a program témáját.

Page 39: KÉSZÍTETTE Kőrössy Norbert

39

Irodalomjegyzék

[1] Prof. Dr.-Ing. Dr.-Ing. E.h. Manfred Weck, Werkzeugmaschinen-Atlas

[2] SKF, Főkatalógus, 2008

[3] Dr. Bihari Zoltán: Géprajz előadás, 2014

[4] DMG MORI, CLX 350, https://tinyurl.com/yderezgt, 2017.04.18-án megtekintve

[5] DMTG, 6130 i CNC, https://tinyurl.com/y9ds79hg, 2017.04.18-án megtekintve

[6] Dr. Maros Zsolt: Különleges gyártástechnológiák: 2017

[7] DMG MORI, DMU 50 3rd generation, https://tinyurl.com/yabuutun,

2017.04.18-án megtekintve

[8] DMTG, XD Series Vertical CNC Milling Machine, https://tinyurl.com/y8r4gh6l,

2017.04.18-án megtekintve

[9] Studer, Studer External cylindrical grinding machine S121 Radius,

https://tinyurl.com/yc78r5pf, 2017.04.18-án megtekintve

[10] United Grinding Group AG, Mikrosa Kronos dual,

https://tinyurl.com/yawflddr, 2017.04.18-án megtekintve

[11] Dr. Ecsedi István, Dr. Király Béla, Mörk János, Dr. Páczelt István, Vidó

Endre: Szilárdságtan II. Tankönyvkiadó, Budapest, 1983

Page 40: KÉSZÍTETTE Kőrössy Norbert

1

Melléklet

% A program által automatikusan létrehozott kód a guide (kezelő felület módosítás) és más

funkciókhoz

function varargout = foorsomerevseg(varargin)

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @foorsomerevseg_OpeningFcn, ...

'gui_OutputFcn', @foorsomerevseg_OutputFcn, ...

'gui_LayoutFcn', [] , ...

'gui_Callback', []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

function foorsomerevseg_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;

guidata(hObject, handles);

function varargout = foorsomerevseg_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

% Az első görgő hozzáadása

function gorgo_hozzaadas1_Callback(hObject, eventdata, handles)

global G_H1

G_H1 = inputdlg('Görgő helye [mm]','Görgő megadása', [1 40]);

% Konvertálás szám alapú változóvá

G_H1=str2double(G_H1);

% Konvertálás m-be

G_H1=G_H1/1000;

% A második görgő hozzáadása

function gorgo_hozzaadas2_Callback(hObject, eventdata, handles)

global G_H2

G_H2 = inputdlg('Görgő helye [mm]','Görgő megadása', [1 40]);

% Konvertálás szám alapú változóvá

G_H2=str2double(G_H2);

% Konvertálás m-be

G_H2=G_H2/1000;

% A csukló hozzáadása

function csuklo_hozzaadas_Callback(hObject, eventdata, handles)

global CS_H

CS_H = inputdlg('Csukló helye [mm]','Csukló megadása', [1 40]);

% Konvertálás szám alapú változóvá

CS_H = str2double(CS_H);

% Konvertálás m-be

Page 41: KÉSZÍTETTE Kőrössy Norbert

2

CS_H=CS_H/1000;

% Hajlító nyomatékok hozzáadása

function hnyom_hozzaadas_Callback(hObject, eventdata, handles)

global NY_HH

global NY_HXM

global NY_HYM

global ihnyom

prompt = {'Nyomaték helye [mm]','Nyomaték x irányú komponense [Nm]','Nyomaték y irányú

komponense [Nm]'};

dlg_title = 'Hajlítónyomaték megadása';

num_lines = [1 45;1 45;1 45];

hnyom = inputdlg(prompt,dlg_title,num_lines);

if isempty(hnyom)

else

% Konvertálás cella alapú változóvá

hnyomfeloszt = num2cell(str2double(hnyom));

% Nyomaték számláló léptetése

if isempty(ihnyom)

ihnyom=1;

else

ihnyom=ihnyom+1;

end

% Megadott adatok felosztása három vektorban

[NY_HH(1,ihnyom),NY_HXM(1,ihnyom),NY_HYM(1,ihnyom)] = hnyomfeloszt{:};

NY_HH(1,ihnyom)=NY_HH(1,ihnyom)/1000;

end

% Erők hozzáadása

function rero_hozzaadas_Callback(hObject, eventdata, handles)

global F_RH

global F_RXM

global F_RYM

global irero

prompt = {'Radiális erő helye [mm]','Radiális erő x irányú komponense [N]','Radiális erő y

irányú komponense [N]'};

dlg_title = 'Radiális irányú erő megadása';

num_lines = [1 45;1 45;1 45];

rero = inputdlg(prompt,dlg_title,num_lines);

if isempty(rero)

else

% Konvertálás cella alapú változóvá

rerofeloszt = num2cell(str2double(rero));

% Erő számláló léptetése

if isempty(irero)

irero=1;

else

irero=irero+1;

end

% Megadott adatok felosztása három vektorban

[F_RH(1,irero),F_RXM(1,irero),F_RYM(1,irero)] = rerofeloszt{:};

F_RH(1,irero)=F_RH(1,irero)/1000;

end

% Program által a felhasználói felülethez automatikusan létrehozott kód

function edit1_Callback(hObject, eventdata, handles)

Page 42: KÉSZÍTETTE Kőrössy Norbert

3

function edit1_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

% Tengely hosszának megadása

function tghossz_Callback(hObject, eventdata, handles)

global L

L = inputdlg('Tengely hossza [mm]','Tengely hosszának megadása', [1 45]);

% Konvertálás szám alapú változóvá

L = str2double(L);

% Konvertálás m-be

L=L/1000;

% Tengely külső átmérőjének megadása

function tgdkulso_Callback(hObject, eventdata, handles)

global dk

dk = inputdlg('Tengely külső átmérője [mm]','Tengely külső átmérőjének megadása', [1 55]);

% Konvertálás szám alapú változóvá

dk = str2double(dk);

% Konvertálás m-be

dk=dk/1000;

% Tengely belső átmérőjének megadása

function tgdbelso_Callback(hObject, eventdata, handles)

global db

db = inputdlg('Tengely belső átmérője [mm]','Tengely belső átmérőjének megadása', [1 55]);

% Konvertálás szám alapú változóvá

db = str2double(db);

% Konvertálás m-be

db=db/1000;

% Rugalmassági modulus megadása

function rugmod_Callback(hObject, eventdata, handles)

global e

x = inputdlg('Rugalmassági modulus [GPa]','Rugalmassági modulus megadása', [1 50]);

% Konvertálás szám alapú változóvá

e = str2double(x);

% Konvertálás GPa-ba

e=e*100000000;

% Vizsgálandó hely megadása

function vh_Callback(hObject, eventdata, handles)

global vh

vh = inputdlg('Hol számítsa a program a lehajlást? [mm]','Rugalmassági modulus megadása', [1

50]);

% Konvertálás szám alapú változóvá

Page 43: KÉSZÍTETTE Kőrössy Norbert

4

vh = str2double(vh);

% Konvertálás m-be

vh = vh/1000;

% Minden erők megadásához köthető globális változó törlése

function Clear_F_Callback(hObject, eventdata, handles)

global F_RH

global F_RXM

global F_RYM

global irero

clearvars -global -except G_H1 G_H2 CS_H K dk db e vh NY_HH NY_HXM NY_HYM ihnyom L

% Minden nyomaték megadáshoz köthető globális változó törlése

function Clear_nyom_Callback(hObject, eventdata, handles)

global NY_HH

global NY_HXM

global NY_HYM

global ihnyom

clearvars -global -except G_H1 G_H2 CS_H K dk db e vh F_RH F_RXM F_RYM irero L

% Kettes görgő helyének törlése

function Clear_G_H2_Callback(hObject, eventdata, handles)

clearvars -global -except G_H1 CS_H K dk db e vh F_RH F_RXM F_RYM irero L NY_HH NY_HXM

NY_HYM ihnyom

% Frissítés gomb megnyomására a teljes számítás elvégzése

function refresh_Callback(hObject, eventdata, handles, vh)

% Korábban megadott globális változók előhívása a funkcióban

global vh

global e

global F_RH

global F_RXM

global F_RYM

global irero

global L

global db

global dk

global G_H1

global G_H2

global CS_H

global NY_HH

global NY_HXM

global NY_HYM

global ihnyom

% Erők újra számoláshoz előkészítése a sum változóknak

sumFX=0;

sumFY=0;

sumF_RXM=0;

sumF_RYM=0;

sumNY_HXM=0;

sumNY_HYM=0;

% Nyomatékok összeadása az erőegyenletekhez

for a = 1:ihnyom

sumNY_HXM = sumNY_HXM + NY_HXM(1,a);

sumNY_HYM = sumNY_HYM + NY_HYM(1,a);

end

Page 44: KÉSZÍTETTE Kőrössy Norbert

5

% Nem kötelezően megadandó változók kinullázása, ha azok nem lettek megadva

if isempty(db)

db = 0;

end

if isempty(irero)

irero = 0;

F_RH(1,1)=0;

F_RXM(1,1)=0;

F_RYM(1,1)=0;

end

if isempty(ihnyom)

ihnyom = 0;

NY_HH(1,1)=0;

NY_HXM(1,1)=0;

NY_HYM(1,1)=0;

end

% Hibaüzenet és program megszakítása, ha a kettes görgő nincs a tengelyen

if ~isempty(G_H2)

if G_H2<0 || G_H2>L

f = errordlg('Egy görgő vagy csukló nincs a tengelyen.','Hibás megadás');

return

end

end

% Hibaüzenet és program megszakítása, ha a kettes görgő egy másik görgőn vagy csuklón van

if ~isempty(G_H2)

if G_H1 == G_H2 || CS_H==G_H2

f = errordlg('Két görgő vagy egy görgő és csukló helye megegyezik.','Hibás

megadás');

return

end

end

% Hibaüzenet, ha nincs megadva a vizsgálandó hely

if isempty(vh)

f = errordlg('A hely, ahol a lehajlás számítása megtörténne nincs megadva.','Hibás

megadás');

% Hibaüzenet, ha a rugalmassági modulus nincs megadva

elseif isempty(e)

f = errordlg('Nincs rugalmassági modulus megadva.','Hibás megadás');

% Hibaüzenet, ha nincs megadva a tengely hossza

elseif isempty(L)

f = errordlg('Nincs a tengely hossza megadva.','Hibás megadás');

% Hibaüzenet, ha nincs megadva a külső átmérője a tengelynek

elseif isempty(dk)

f = errordlg('Nincs a tengely küldő átmérője megadva.','Hibás megadás');

% Hibaüzenet, ha nincs megadva az első görgő

elseif isempty(G_H1)

f = errordlg('Az első görgő megadása szükséges.','Hibás megadás');

% Hibaüzenet, ha nincs megadva a csukló helye

elseif isempty(CS_H)

f = errordlg('A csukló megadása szükséges.','Hibás megadás');

% Hibaüzenet, ha a tengely túl rövid

Page 45: KÉSZÍTETTE Kőrössy Norbert

6

elseif L<=0

f = errordlg('A tengely nem lehet 0 mm vagy kevesebb.','Hibás megadás');

% Hibaüzenet, ha a tengely tartományán kívül esik egy csapágy

elseif G_H1<0 || CS_H<0 || G_H1>L || CS_H>L

f = errordlg('Egy görgő vagy csukló nincs a tengelyen.','Hibás megadás');

% Hibaüzenet, ha az első görgő és a csukló azonos helyen vannak

elseif G_H1 == CS_H

f = errordlg('Két görgő vagy egy görgő és csukló helye megegyezik.','Hibás megadás');

% Hibaüzenet, ha kisebb vagy azonos a tengely külső átmérője, mint a belső

elseif dk <= db

f = errordlg('A külső átmérő nagyobb kell legyen, mint a belső.','Hibás megadás');

% Hibaüzenet, ha túl kicsi a rugalmassági modulus

elseif e<=0

f = errordlg('A rugalmassági modulus nagyobb legyen mint 0.','Hibás megadás');

% Csapágyak sorrendjének megállapítása, ha nincs megadva a második görgő

elseif isempty(G_H2)

if CS_H>G_H1

H1= G_H1;

H2= CS_H;

elseif G_H1>CS_H

H1= CS_H;

H2=G_H1;

end

% Csapágyak sorrendjének megadása, ha mind a három csapágy meg van adva

else

HH=[G_H1, G_H2, CS_H];

HH = sortrows(HH' , 1');

HH = HH';

H1=HH(1,1);

H2=HH(1,3);

H3=HH(1,2);

End

% Erők számítása a csapágyakon

for a = 1:irero

% Erők összeadása az erőegyenlethez

sumFX = sumFX + F_RXM(1,a);

sumFY = sumFY + F_RYM(1,a);

% Erők és a bal csapágytól számított erőkaruk szorzatának gyűjtése változókban előjel

helyesen, hogy nyomatéki egyenletekben utólag ki lehessen számítani a csapágyak erőit

if F_RH>H1

sumF_RXM = sumF_RXM + F_RXM(1,a)*(F_RH(1,a)-H1);

sumF_RYM = sumF_RYM + F_RYM(1,a)*(F_RH(1,a)-H1)*-1;

else

sumF_RXM = sumF_RXM + F_RXM(1,a)*(H1-F_RH(1,a))*-1;

sumF_RYM = sumF_RYM + F_RYM(1,a)*(H1-F_RH(1,a));

end

end

% Csapágyakon erők számítása nyomatéki egyenletekből kifejezve azokat

H2_EX = -1*(sumF_RXM+sumNY_HXM)/(H2-H1);

H1_EX = -1*(H2_EX + sumFX);

H2_EY = (sumF_RYM+sumNY_HYM)/(H2-H1);

Page 46: KÉSZÍTETTE Kőrössy Norbert

7

H1_EY = -1*(H2_EY + sumFY);

% A mátrixba helyezése az erőknek, ha a felhasználó megadta őket

if irero>0

A = [F_RH ; F_RXM ; F_RYM];

End

% Bal csapágyon lévő erő B vektorba és a jobbnak a C vektorba helyezése

B = [H1 ; H1_EX ; H1_EY];

C = [H2 ; H2_EX ; H2_EY];

% A mátrix után tűzése B és C vektoroknak majd beletöltése A mátrixba felülírva azt feltéve,

hogy a felhasználó megadta azokat

if irero>0

A = [A , B , C];

Else

% B és C vektorok A mátrixba töltése, ha a felhasználó nem adott meg erőket

A = [B , C];

End

% A mátrix elemeinek sorba rendezése az első sor szerint

A = sortrows(A' , 1');

A = A';

% indh és ind változók előkészítése léptetéshez

[~,indh]=size(A);

ind=2;

% Azonos helyeken lévő erők komponenseinek összeadása a nyomatéki ábrákhoz

while ind<=indh

if A(1,ind)==A(1,ind-1)

A(2,ind-1)=A(2,ind-1)+A(2,ind);

A(3,ind-1)=A(3,ind-1)+A(3,ind);

if ind<indh

A = [A(:,1:ind-1) A(:,ind+1:indh)];

else

A = A(:,1:indh-1);

end

indh=indh-1;

else

ind=ind+1;

end

end

% B és C vektorok további műveletekhez előkészítése

clear B

clear C

% null vektor előkészítése nyomatéki ábrának átszabásakor új pontok beékeléséhez

null=[0;0;0];

% Számítások megkezdése, ha a felhasználó adott meg második görgőt

if ~isempty(G_H2)

% E_HNYOM mátrix előkészítése újra számoláshoz

clear E_HNYOM

% E_HNYOM mátrix első oszlopának betöltése

Page 47: KÉSZÍTETTE Kőrössy Norbert

8

E_HNYOM(1,1) = A(1,2);

E_HNYOM(2,1) = -1*(A(1,2)-A(1,1))*(A(2,1));

E_HNYOM(3,1) = (A(1,2)-A(1,1))*(A(3,1));

% Első erők betöltése D és F változókba

D = A(2,1);

F = A(3,1);

% A már összevont erők számának beletöltése c-be

[~,c]=size(A);

% Erők okozta nyomatékok számolása, a nyomatéki ábrán általuk okozott töréspontok jegyzése

az E_HNYOM mátrixban

for a = 3:(c)

% Előző erőkhöz hozzáadni éppen vizsgált erőt

D = D + A(2,a-1);

F = F + A(3,a-1);

%Erő helye

E_HNYOM(1,a-1) = A(1,a);

% Nyomatéki ábra X komponense

E_HNYOM(2,a-1) = E_HNYOM(2,a-2)-D*(A(1,a)-A(1,a-1));

% Nyomatéki ábra Y komponense

E_HNYOM(3,a-1) = E_HNYOM(3,a-2)--1*F*(A(1,a)-A(1,a-1));

end

% Eddig készített töréspontok megszámolása és asd változóba töltése

[~,asd]=size(E_HNYOM);

% Ellenőrzési változó visszaállítása újra számoláshoz

el=0;

% E_HNYOM mátrix előkészítése a koncentrált nyomatékok okozta nyomatéki ábra változások

hozzáadásához

% Ha baloldalt kilóg a rúd és egy erő helyezkedik el rajta leginkább balra

if min(F_RH)<H1 && ihnyom==0 && irero>0 || min(F_RH)<H1 && min(NY_HH)>min(F_RH) && ihnyom>0

&& irero>0;

% Első erő helyének megadása, mint a pont, ahol elsőként megtörik a nyomatéki ábra

null2=[min(F_RH);0;0];

E_HNYOM = [null null2 E_HNYOM(:,1:asd)];

% Ha baloldalt kilóg a rúd és egy nyomaték helyezkedik el rajta leginkább balra

elseif min(NY_HH)<H1 && irero==0 && ihnyom>0 || min(NY_HH)<H1 && min(NY_HH)<min(F_RH) &&

irero>0 && ihnyom>0

% Első nyomaték helyének megadása, mint a pont, ahol elsőként megtörik a nyomatéki ábra

null2=[min(NY_HH);0;0];

E_HNYOM = [null2 E_HNYOM(:,1:asd)];

% Ellenőrző változó 1-re állítása

el=1;

Page 48: KÉSZÍTETTE Kőrössy Norbert

9

% Ha balra kilóg a rúd és a leginkább balra lévő elem egyszerre egy erő és egy nyomaték is,

mert egymáson vannak

elseif min(NY_HH)==min(F_RH) && ihnyom>0 && irero>0

% Első nyomaték helyének megadása, mint a pont, ahol elsőként megtörik a nyomatéki ábra

null2=[min(NY_HH);0;0];

E_HNYOM = [null null2 E_HNYOM(:,1:asd)];

% Ha egyik korábbi feltétel sem teljesül

else

% Bal csapágytól törik meg a nyomatéki ábra elsőként

null2=[H1;0;0];

E_HNYOM = [null2 E_HNYOM(:,1:asd)];

End

% Törési pontok megszámlálása és ismét asd-ba töltése

[~,asd]=size(E_HNYOM);

% Törési pont keresése, amivel visszatér a nyomatéki ábra jobb oldalt 0-ra

% Ha egy erő van leginkább jobbra

lezarh=max(F_RH);

% Ha egy nyomaték van leginkább jobbra

if lezarh<max(NY_HH)

lezarh=max(NY_HH);

end

% Ha a jobb csapágy van leginkább jobbra

if lezarh<H2

lezarh=H2;

end

% A töréspont hozzáadása az E_HNYOM változóhoz

lezar=[lezarh;0;0];

E_HNYOM = [E_HNYOM(:,1:asd) lezar];

% Töréspontok megszámlálása és c változóba töltése

[~,c]=size(E_HNYOM);

% E_HNYOM mátrix átszabása a koncentrált nyomatékok hozzáadásával, megnézve egyenként minden

nyomatékra

for a = 1:ihnyom

% Töréspont számláló b vektor visszaállítása minden nyomaték helyének keresésekor

b=1;

% While függvénnyel nyomaték helyének keresése amíg egy feltételnek meg nem felel

while (b<=c)

% Nyomatéki ábra módosítása, ha egy meglévő töréspontra esik a koncentrált nyomaték

if E_HNYOM(1,b) == NY_HH(1,a) && b<c

% Ha a nyomaték már meg lett adva az előkészítésben

if el>0

Page 49: KÉSZÍTETTE Kőrössy Norbert

10

% Oszlopok arrébb tolása

E_HNYOM = [E_HNYOM(:,1:b) null null E_HNYOM(:,b+1:c)];

% Töréspont számláló frissítése

c=c+2;

% Töréspont hozzáadása E_HNYOM-hoz

E_HNYOM(1,b+1)=NY_HH(1,a);

E_HNYOM(2,b+1)=E_HNYOM(2,b)+ NY_HXM(1,a);

E_HNYOM(3,b+1)=E_HNYOM(3,b)+ NY_HYM(1,a);

% Töréspont hozzáadása, ha vannak erők megadva és a bal csapágytól balra is helyezkednek el

if irero>0

if min(F_RH)<H1 && min(F_RH)>NY_HH(1,a)

E_HNYOM(1,b+2)=min(F_RH);

E_HNYOM(2,b+2)=E_HNYOM(2,b)+ NY_HXM(1,a);

E_HNYOM(3,b+2)=E_HNYOM(3,b)+ NY_HYM(1,a);

end

end

% Töréspont hozzáadása, ha a következő pont a csapágy helye, vagy nincs erő

if H1<min(F_RH) || irero==0

E_HNYOM(1,b+2)=H1;

E_HNYOM(2,b+2)=E_HNYOM(2,b)+ NY_HXM(1,a);

E_HNYOM(3,b+2)=E_HNYOM(3,b)+ NY_HYM(1,a);

End

% Jobbra lévő pontok igazítása a koncentrált nyomaték szerint

for f=(b+3):c-1

E_HNYOM(2,f)=E_HNYOM(2,f)+ NY_HXM(1,a);

E_HNYOM(3,f)=E_HNYOM(3,f)+ NY_HYM(1,a);

end

% While függvény megszakítása feltételének hamissá tételével

b=c+1;

% Ellenőrző változó visszaállítása 0-ra

el=0;

else

% Oszlopok arrébb tolása, ha a talált töréspont nem egy előkészített koncentrált nyomaték

helye

E_HNYOM = [E_HNYOM(:,1:b) null E_HNYOM(:,b+1:c)];

% Töréspont számláló frissítése

c=c+1;

% Töréspont hozzáadása

E_HNYOM(1,b+1)=NY_HH(1,a);

E_HNYOM(2,b+1)=E_HNYOM(2,b)+ NY_HXM(1,a);

E_HNYOM(3,b+1)=E_HNYOM(3,b)+ NY_HYM(1,a);

% Jobbra lévő pontok igazítása a koncentrált nyomaték szerint

for f=(b+2):c-1

E_HNYOM(2,f)=E_HNYOM(2,f)+ NY_HXM(1,a);

E_HNYOM(3,f)=E_HNYOM(3,f)+ NY_HYM(1,a);

Page 50: KÉSZÍTETTE Kőrössy Norbert

11

end

% While függvény megszakítása feltételének hamissá tételével

b=c+1;

end

% Ha az utolsó nyomatékot nézzük és az jobbra van minden erőtől és csapágytól

elseif NY_HH(1,a)==max(NY_HH) && max(NY_HH)>H2 && max(NY_HH)>max(F_RH)

% Oszlopok arrébb tolása

E_HNYOM = [E_HNYOM(:,1:c-1) null E_HNYOM(:,c:c)];

% Töréspont hozzáadása

E_HNYOM(1,c)=NY_HH(1,a);

E_HNYOM(2,c)=E_HNYOM(2,c-1);

E_HNYOM(3,c)=E_HNYOM(3,c-1);

% Töréspont számláló frissítése

c=c+1;

% While függvény megszakítása feltételének hamissá tételével

b=c+1;

% Ha még nem az utolsó töréspontnál járunk

elseif b<c

% Ha az éppen vizsgált töréspont és a következő középső közé esik a hely

if E_HNYOM(1,b)< NY_HH(1,a) && E_HNYOM(1,b+1)> NY_HH(1,a)

% Oszlopok arrébb tolása

E_HNYOM = [E_HNYOM(:,1:b) null null E_HNYOM(:,b+1:c)];

% Töréspontok hozzáadása

E_HNYOM(1,b+1)=NY_HH(1,a);

E_HNYOM(2,b+1)=E_HNYOM(2,b)+(NY_HH(1,a)-E_HNYOM(1,b))/(E_HNYOM(1,b+3)-

E_HNYOM(1,b))*(E_HNYOM(2,b+3)-E_HNYOM(2,b));

E_HNYOM(3,b+1)=E_HNYOM(3,b)+(NY_HH(1,a)-E_HNYOM(1,b))/(E_HNYOM(1,b+3)-

E_HNYOM(1,b))*(E_HNYOM(3,b+3)-E_HNYOM(3,b));

E_HNYOM(1,b+2)=NY_HH(1,a);

E_HNYOM(2,b+2)=E_HNYOM(2,b+1)+ NY_HXM(1,a);

E_HNYOM(3,b+2)=E_HNYOM(3,b+1)+ NY_HYM(1,a);

% Töréspont számláló frissítése

c=c+2;

% Jobbra lévő pontok igazítása a koncentrált nyomaték szerint

for f=(b+3):c-1

E_HNYOM(2,f)=E_HNYOM(2,f)+ NY_HXM(1,a);

E_HNYOM(3,f)=E_HNYOM(3,f)+ NY_HYM(1,a);

end

% While függvény megszakítása feltételének hamissá tételével

b=c+1;

else

% b léptetése, ha nem teljesül egyik feltétel se, hogy a következő töréspontot vizsgálja

b=b+1;

Page 51: KÉSZÍTETTE Kőrössy Norbert

12

end

else

% b léptetése, ha nem teljesül egyik feltétel se, hogy a következő töréspontot vizsgálja

b=b+1;

end

end

end

% Ha az elkészült nyomatéki ábra nem a tengely bal végétől kezdődik, akkor ott is készítsen

egy töréspontot

if E_HNYOM(1,1)>0

E_HNYOM = [null E_HNYOM(:,1:c)];

end

% B változó előkészítése

clear B

% Kettes erőrendszer csapágyain erő számítása, ha a hármas csapágy helyén 1 N erő van

KE_H2 = -1*(H3-H1)/(H2-H1);

KE_H1 = -1*(KE_H2+1);

% Kettes erőrendszer teljes nyomatéki ábrájának B mátrixba betöltése

B=[0,H1,H3,H2,0;0,0,(H3-H1)*KE_H1*(-1),0,0;0,0,(H3-H1)*KE_H1*(-1),0,0];

% C mátrix előkészítése

clear C

% Egyes erőrendszer töréspontjainak helyeit betöltjük a C vektorba

[~,n]=size(E_HNYOM);

for f=1:n

C(1,f)=E_HNYOM(1,f);

end

% C vektor után fűzzük a középső csapágy helyét

C=[C,H3];

% Sorba rendezzük a helyeket C vektorban

C = sortrows(C' , 1');

C = C';

% Megszámoljuk a töréspontokat a két erőrendszerben, beletöltve azok számát a j és b

változókba

[~,j]=size(C);

[~,b]=size(B);

% Energia számolásához előkészítjük enx, eny és kenx változókat

enx=0;

eny=0;

kenx=0;

% A két erőrendszer töréspontok közti szakaszain végigmegy a program

for f=1:(j-1)

% Léptetett változók visszaállítása minden szakaszhoz

m=1;

Page 52: KÉSZÍTETTE Kőrössy Norbert

13

v=1;

% Egyes erőrendszeren keresése a szakasznak

while (m<n)

if E_HNYOM(1,m)<=C(1,f) && E_HNYOM(1,m+1)>C(1,f)

o=m;

m=n;

else

m=m+1;

end

end

% Kettes erőrendszeren keresése a szakasznak

while (v<b)

if B(1,v)<=C(1,f) && B(1,v+1)>C(1,f)

p=v;

v=b;

else

v=v+1;

end

end

% Nyomatéki ábrák pontjainak összeszorzása a Simpson formula szerint

enx=enx+(C(1,f+1)-C(1,f))/6*((E_HNYOM(2,o)+(E_HNYOM(2,o+1)-E_HNYOM(2,o))*(C(1,f)-

E_HNYOM(1,o))/(E_HNYOM(1,o+1)-E_HNYOM(1,o)))*(B(2,p)+(B(2,p+1)-B(2,p))*(C(1,f)-

B(1,p))/(B(1,p+1)-B(1,p)))+4*(E_HNYOM(2,o)+(E_HNYOM(2,o+1)-

E_HNYOM(2,o))*((C(1,f)+C(1,f+1))/2-E_HNYOM(1,o))/(E_HNYOM(1,o+1)-

E_HNYOM(1,o)))*(B(2,p)+(B(2,p+1)-B(2,p))*((C(1,f)+C(1,f+1))/2-B(1,p))/(B(1,p+1)-

B(1,p)))+(E_HNYOM(2,o)+(E_HNYOM(2,o+1)-E_HNYOM(2,o))*(C(1,f+1)-

E_HNYOM(1,o))/(E_HNYOM(1,o+1)-E_HNYOM(1,o)))*(B(2,p)+(B(2,p+1)-B(2,p))*(C(1,f+1)-

B(1,p))/(B(1,p+1)-B(1,p))));

eny=eny+(C(1,f+1)-C(1,f))/6*((E_HNYOM(3,o)+(E_HNYOM(3,o+1)-E_HNYOM(3,o))*(C(1,f)-

E_HNYOM(1,o))/(E_HNYOM(1,o+1)-E_HNYOM(1,o)))*(B(3,p)+(B(3,p+1)-B(3,p))*(C(1,f)-

B(1,p))/(B(1,p+1)-B(1,p)))+4*(E_HNYOM(3,o)+(E_HNYOM(3,o+1)-

E_HNYOM(3,o))*((C(1,f)+C(1,f+1))/2-E_HNYOM(1,o))/(E_HNYOM(1,o+1)-

E_HNYOM(1,o)))*(B(3,p)+(B(3,p+1)-B(3,p))*((C(1,f)+C(1,f+1))/2-B(1,p))/(B(1,p+1)-

B(1,p)))+(E_HNYOM(3,o)+(E_HNYOM(3,o+1)-E_HNYOM(3,o))*(C(1,f+1)-

E_HNYOM(1,o))/(E_HNYOM(1,o+1)-E_HNYOM(1,o)))*(B(3,p)+(B(3,p+1)-B(3,p))*(C(1,f+1)-

B(1,p))/(B(1,p+1)-B(1,p))));

end

% Kettes erőrendszer nyomatéki ábrájának megfelelő pontjait összeszorozzuk önmagukkal az

középső csapágyon lévő erő számításához

for f=1:b-1

kenx=kenx+(B(1,f+1)-B(1,f))/6*(B(2,f)^2+4*((B(2,f)+B(2,f+1))/2)^2+B(2,f+1)^2);

keny=kenx;

end

% q változó előkészítése újra számoláshoz

clear q

% q vektorba beletöltése a középső csapágy helyének és a rajta lévő erőknek

q=[H3;enx/kenx;eny/keny];

% Erők újra számolásához előkészítése a sum változóknak

sumFX=0;

sumFY=0;

sumF_RXM=0;

sumF_RYM=0;

sumNY_HXM=0;

sumNY_HYM=0;

% Erők újra számlálása a másik két csapágyon a középső csapágyon lévő erők ismeretében

Page 53: KÉSZÍTETTE Kőrössy Norbert

14

for a = 1:irero

% Erők összeadása az erőegyenlethez

sumFX = sumFX + F_RXM(1,a);

sumFY = sumFY + F_RYM(1,a);

% Erők és a bal csapágytól számított erőkaruk szorzatának gyűjtése változókban előjel

helyesen, hogy nyomatéki egyenletekben utólag ki lehessen számítani a csapágyak erőit

if F_RH>H1

sumF_RXM = sumF_RXM + F_RXM(1,a)*(F_RH(1,a)-H1);

sumF_RYM = sumF_RYM + F_RYM(1,a)*(F_RH(1,a)-H1)*-1;

else

sumF_RXM = sumF_RXM + F_RXM(1,a)*(H1-F_RH(1,a))*-1;

sumF_RYM = sumF_RYM + F_RYM(1,a)*(H1-F_RH(1,a));

end

end

% Nyomatékok összeadása az erőegyenletekhez

for a = 1:ihnyom

sumNY_HXM = sumNY_HXM + NY_HXM(1,a);

sumNY_HYM = sumNY_HYM + NY_HYM(1,a);

end

% Középső csapágyon lévő erő okozta nyomaték hozzáadása sum vektorokhoz

sumF_RXM=sumF_RXM+(H3-H1)*q(2,1);

sumF_RYM=sumF_RYM-(H3-H1)*q(3,1);

% Középső csapágyon lévő erő hozzáadása az erőegyenletekhez szükséges sum vektorokhoz

sumFX=sumFX+q(2,1);

sumFY=sumFY+q(3,1);

% Bal és jobb csapágyakon lévő erők számolása

H2_EX = -1*(sumF_RXM+sumNY_HXM)/(H2-H1);

H1_EX = -1*(H2_EX + sumFX);

H2_EY = (sumF_RYM+sumNY_HYM)/(H2-H1);

H1_EY = -1*(H2_EY + sumFY);

% A mátrix frissítése az új erőkkel

if irero>0

A = [F_RH ; F_RXM ; F_RYM];

end

B = [H1 ; H1_EX ; H1_EY];

C = [H2 ; H2_EX ; H2_EY];

% Középső csapágyon lévő erő hozzáadása A mátrixhoz

if irero>0

A = [A , B , C , q];

else

A = [B , C , q];

end

A = sortrows(A' , 1');

A = A';

[~,indh]=size(A);

% Léptetéshez előkészítése ind változónak

ind=2;

% Azonos helyeken lévő erők komponenseinek összeadása a nyomatéki ábrákhoz

Page 54: KÉSZÍTETTE Kőrössy Norbert

15

while ind<=indh

if A(1,ind)==A(1,ind-1)

A(2,ind-1)=A(2,ind-1)+A(2,ind);

A(3,ind-1)=A(3,ind-1)+A(3,ind);

if ind<indh

A = [A(:,1:ind-1) A(:,ind+1:indh)];

else

A = A(:,1:indh-1);

end

indh=indh-1;

else

ind=ind+1;

end

end

% Visszatérés a program azon részére, ami szükséges akár kettő, akár három csapágy van

megadva

end

% A kettes erőrendszer nyomatéki ábráját tároló mátrix előkészítése újra számolásra

clear E_HNYOM

% Erők megszámlálása

[~,c]=size(A);

% E_HNYOM mátrix első oszlopának betöltése

E_HNYOM(1,1) = A(1,2);

E_HNYOM(2,1) = -1*(A(1,2)-A(1,1))*(A(2,1));

E_HNYOM(3,1) = (A(1,2)-A(1,1))*(A(3,1));

% Erők betöltése D és F változókba

D = A(2,1);

F = A(3,1);

% Erők okozta nyomatékok számolása, a nyomatéki ábrán általuk okozott töréspontok jegyzése

az E_HNYOM mátrixban

for a = 3:(c)

% Előző erőkhöz hozzáadni éppen vizsgált erőt

D = D + A(2,a-1);

F = F + A(3,a-1);

% Erő helye

E_HNYOM(1,a-1) = A(1,a);

% Nyomatéki ábra X komponense

E_HNYOM(2,a-1) = E_HNYOM(2,a-2)-D*(A(1,a)-A(1,a-1));

% Nyomatéki ábra Y komponense

E_HNYOM(3,a-1) = E_HNYOM(3,a-2)--1*F*(A(1,a)-A(1,a-1));

end

% Eddig készített töréspontok megszámolása és asd változóba töltése

[~,asd]=size(E_HNYOM);

% Ellenőrzési változó visszaállítása újra számoláshoz

el=0;

% E_HNYOM mátrix előkészítése a koncentrált nyomatékok okozta nyomatéki ábra változások

hozzáadásához

Page 55: KÉSZÍTETTE Kőrössy Norbert

16

% Ha baloldalt kilóg a rúd és egy erő helyezkedik el rajta leginkább balra

if min(F_RH)<H1 && ihnyom==0 && irero>0 || min(F_RH)<H1 && min(NY_HH)>min(F_RH) && ihnyom>0

&& irero>0;

% Első erő helyének megadása, mint a pont, ahol elsőként megtörik a nyomatéki ábra

null2=[min(F_RH);0;0];

E_HNYOM = [null null2 E_HNYOM(:,1:asd)];

% Ha baloldalt kilóg a rúd és egy nyomaték helyezkedik el rajta leginkább balra

elseif min(NY_HH)<H1 && irero==0 && ihnyom>0 || min(NY_HH)<H1 && NY_HH(1,1)<min(F_RH) &&

irero>0 && ihnyom>0

% Első nyomaték helyének megadása, mint a pont, ahol elsőként megtörik a nyomatéki ábra

null2=[min(NY_HH);0;0];

E_HNYOM = [null2 E_HNYOM(:,1:asd)];

% Ellenőrző változó 1-re állítása

el=1;

% Ha balra kilóg a rúd és a leginkább balra lévő elem egyszerre egy erő és egy nyomaték is,

mert egymáson vannak

elseif min(NY_HH)==min(F_RH) && ihnyom>0 && irero>0

% Első nyomaték helyének megadása, mint a pont, ahol elsőként megtörik a nyomatéki ábra

null2=[min(NY_HH);0;0];

E_HNYOM = [null null2 E_HNYOM(:,1:asd)];

% Ha egyik korábbi feltétel sem teljesül

else

% Bal csapágytól törik meg a nyomatéki ábra elsőként

null2=[H1;0;0];

E_HNYOM = [null2 E_HNYOM(:,1:asd)];

end

% Törési pontok megszámlálása és ismét asd-ba töltése

[~,asd]=size(E_HNYOM);

% Törési pont keresése, amivel visszatér a nyomatéki ábra jobb oldalt 0-ra

% Ha egy erő van leginkább jobbra

lezarh=max(F_RH);

% Ha egy nyomaték van leginkább jobbra

if lezarh<max(NY_HH)

lezarh=max(NY_HH);

end

% Ha a jobb csapágy van leginkább jobbra

if lezarh<H2

lezarh=H2;

end

% A töréspont hozzáadása az E_HNYOM változóhoz

lezar=[lezarh;0;0];

E_HNYOM = [E_HNYOM(:,1:asd) lezar];

Page 56: KÉSZÍTETTE Kőrössy Norbert

17

% Töréspontok megszámlálása és c változóba töltése

[~,c]=size(E_HNYOM);

% E_HNYOM mátrix átszabása a koncentrált nyomatékok hozzáadásával, megnézve egyenként minden

nyomatékra

for a = 1:ihnyom

% Töréspont számláló b vektor visszaállítása minden nyomaték helyének keresésekor

b=1;

% While függvénnyel nyomaték helyének keresése, amíg egy feltételnek meg nem felel

while (b<=c)

% Nyomatéki ábra módosítása, ha egy meglévő töréspontra esik a koncentrált nyomaték

if E_HNYOM(1,b) == NY_HH(1,a) && b<c

% Ha a nyomaték már meg lett adva az előkészítésben

if el>0

% Oszlopok arrébb tolása

E_HNYOM = [E_HNYOM(:,1:b) null null E_HNYOM(:,b+1:c)];

% Töréspont számláló frissítése

c=c+2;

% Töréspont hozzáadása E_HNYOM-hoz

E_HNYOM(1,b+1)=NY_HH(1,a);

E_HNYOM(2,b+1)=E_HNYOM(2,b)+ NY_HXM(1,a);

E_HNYOM(3,b+1)=E_HNYOM(3,b)+ NY_HYM(1,a);

% Töréspont hozzáadása, ha vannak erők megadva és a bal csapágytól balra is helyezkednek el

if irero>0

if min(F_RH)<H1 && min(F_RH)>NY_HH(1,a)

E_HNYOM(1,b+2)=min(F_RH);

E_HNYOM(2,b+2)=E_HNYOM(2,b)+ NY_HXM(1,a);

E_HNYOM(3,b+2)=E_HNYOM(3,b)+ NY_HYM(1,a);

end

end

% Töréspont hozzáadása, ha a következő pont a csapágy helye, vagy nincs erő

if H1<min(F_RH) || irero==0

E_HNYOM(1,b+2)=H1;

E_HNYOM(2,b+2)=E_HNYOM(2,b)+ NY_HXM(1,a);

E_HNYOM(3,b+2)=E_HNYOM(3,b)+ NY_HYM(1,a);

end

% Jobbra lévő pontok igazítása a koncentrált nyomaték szerint

for f=(b+3):c-1

E_HNYOM(2,f)=E_HNYOM(2,f)+ NY_HXM(1,a);

E_HNYOM(3,f)=E_HNYOM(3,f)+ NY_HYM(1,a);

end

% While függvény megszakítása feltételének hamissá tételével

b=c+1;

% Ellenőrző változó visszaállítása 0-ra

Page 57: KÉSZÍTETTE Kőrössy Norbert

18

el=0;

else

% Oszlopok arrébb tolása, ha a talált töréspont nem egy előkészített koncentrált nyomaték

helye

E_HNYOM = [E_HNYOM(:,1:b) null E_HNYOM(:,b+1:c)];

% Töréspont számláló frissítése

c=c+1;

% Töréspont hozzáadása

E_HNYOM(1,b+1)=NY_HH(1,a);

E_HNYOM(2,b+1)=E_HNYOM(2,b)+ NY_HXM(1,a);

E_HNYOM(3,b+1)=E_HNYOM(3,b)+ NY_HYM(1,a);

% Jobbra lévő pontok igazítása a koncentrált nyomaték szerint

for f=(b+2):c-1

E_HNYOM(2,f)=E_HNYOM(2,f)+ NY_HXM(1,a);

E_HNYOM(3,f)=E_HNYOM(3,f)+ NY_HYM(1,a);

end

% While függvény megszakítása feltételének hamissá tételével

b=c+1;

end

% Ha az utolsó nyomatékot nézzük és az jobbra van minden erőtől és csapágytól

elseif NY_HH(1,a)==max(NY_HH) && max(NY_HH)>H2 && max(NY_HH)>max(F_RH)

% Oszlopok arrébb tolása

E_HNYOM = [E_HNYOM(:,1:c-1) null E_HNYOM(:,c:c)];

% Töréspont hozzáadása

E_HNYOM(1,c)=NY_HH(1,a);

E_HNYOM(2,c)=E_HNYOM(2,c-1);

E_HNYOM(3,c)=E_HNYOM(3,c-1);

% Töréspont számláló frissítése

c=c+1;

% While függvény megszakítása feltételének hamissá tételével

b=c+1;

% Ha még nem az utolsó töréspontnál járunk

elseif b<c

% Ha az éppen vizsgált töréspont és a következő közé esik a hely

if E_HNYOM(1,b)< NY_HH(1,a) && E_HNYOM(1,b+1)> NY_HH(1,a)

% Oszlopok arrébb tolása

E_HNYOM = [E_HNYOM(:,1:b) null null E_HNYOM(:,b+1:c)];

% Töréspontok hozzáadása

E_HNYOM(1,b+1)=NY_HH(1,a);

E_HNYOM(2,b+1)=E_HNYOM(2,b)+(NY_HH(1,a)-E_HNYOM(1,b))/(E_HNYOM(1,b+3)-

E_HNYOM(1,b))*(E_HNYOM(2,b+3)-E_HNYOM(2,b));

E_HNYOM(3,b+1)=E_HNYOM(3,b)+(NY_HH(1,a)-E_HNYOM(1,b))/(E_HNYOM(1,b+3)-

E_HNYOM(1,b))*(E_HNYOM(3,b+3)-E_HNYOM(3,b));

Page 58: KÉSZÍTETTE Kőrössy Norbert

19

E_HNYOM(1,b+2)=NY_HH(1,a);

E_HNYOM(2,b+2)=E_HNYOM(2,b+1)+ NY_HXM(1,a);

E_HNYOM(3,b+2)=E_HNYOM(3,b+1)+ NY_HYM(1,a);

% Töréspont számláló frissítése

c=c+2;

% Jobbra lévő pontok igazítása a koncentrált nyomaték szerint

for f=(b+3):c-1

E_HNYOM(2,f)=E_HNYOM(2,f)+ NY_HXM(1,a);

E_HNYOM(3,f)=E_HNYOM(3,f)+ NY_HYM(1,a);

end

% While függvény megszakítása feltételének hamissá tételével

b=c+1;

else

% b léptetése, ha nem teljesül egyik feltétel se, hogy a következő töréspontot vizsgálja

b=b+1;

end

else

% b léptetése, ha nem teljesül egyik feltétel se, hogy a következő töréspontot vizsgálja

b=b+1;

end

end

end

% Ha az elkészült nyomatéki ábra nem a tengely bal végétől kezdődik, akkor ott is készítsen

egy töréspontot

if E_HNYOM(1,1)>0

E_HNYOM = [null E_HNYOM(:,1:c)];

end

% B változó előkészítése

clear B

% Kettes erőrendszer csapágyain erő számítása, ha a vizsgálandó hely balra van a bal

csapágytól

if vh<H1

KE_H2 = 1*(H1-vh)/(H2-H1);

KE_H1 = -1*(KE_H2+1);

% Kettes erőrendszer csapágyain erő számítása, ha a vizsgálandó hely balra van a bal

csapágytól

else

KE_H2 = -1*(vh-H1)/(H2-H1);

KE_H1 = -1*(KE_H2+1);

end

% kettes erőrendszer teljes nyomatéki ábrájának B mátrixba betöltése, ha a vizsgálandó hely

a bal csapágytól balra van

if vh<H1

B=[0,vh,H1,H2,0;0,0,(H1-vh)*1*(-1),0,0;0,0,(H1-vh)*1*(-1),0,0];

% Ha jobbra van a jobb csapágytól a vizsgálandó hely

elseif vh>H2

B=[0,H1,H2,vh,0;0,0,(vh-H2)*KE_H1*(-1),0,0;0,0,(vh-H2)*KE_H1*(-1),0,0];

Page 59: KÉSZÍTETTE Kőrössy Norbert

20

% Ha a jobb és bal csapágy között van a vizsgálandó hely

else

B=[0,H1,vh,H2,0;0,0,(vh-H1)*KE_H1*(-1),0,0;0,0,(vh-H1)*KE_H1*(-1),0,0];

end

% C mátrix előkészítése

clear C

% Egyes erőrendszer töréspontjainak helyeit betöltjük a C vektorba

[~,n]=size(E_HNYOM);

for f=1:n

C(1,f)=E_HNYOM(1,f);

end

% C vektor után fűzzük a vizsgálandó helyet

C=[C,vh];

% Sorba rendezzük a helyeket C vektorban

C = sortrows(C' , 1');

C = C';

% Megszámoljuk a töréspontokat a két erőrendszerbe, beletöltve azok számát a j és b

változókba

[~,j]=size(C);

[~,b]=size(B);

enx=0;

eny=0;

% Energia számolásához előkészítjük enx és eny változókat

if E_HNYOM(1,n) ~= L

null3=[L;0;0];

E_HNYOM=[E_HNYOM null3];

end

% A két erőrendszer töréspontok közti szakaszain végigmegy a program

for f=1:(j-1)

% Léptetett változók visszaállítása minden szakaszhoz

m=1;

v=1;

% Egyes erőrendszeren keresése a szakasznak

while (m<n)

if E_HNYOM(1,m)<=C(1,f) && E_HNYOM(1,m+1)>C(1,f)

o=m;

m=n;

else

m=m+1;

end

end

% Kettes erőrendszeren keresése a szakasznak

while (v<b)

if B(1,v)<=C(1,f) && B(1,v+1)>C(1,f)

p=v;

v=b;

else

v=v+1;

end

Page 60: KÉSZÍTETTE Kőrössy Norbert

21

end

% Nyomatéki ábrák pontjainak összeszorzása a Simpson formula szerint

enx=enx+(C(1,f+1)-C(1,f))/6*((E_HNYOM(2,o)+(E_HNYOM(2,o+1)-E_HNYOM(2,o))*(C(1,f)-

E_HNYOM(1,o))/(E_HNYOM(1,o+1)-E_HNYOM(1,o)))*(B(2,p)+(B(2,p+1)-B(2,p))*(C(1,f)-

B(1,p))/(B(1,p+1)-B(1,p)))+4*(E_HNYOM(2,o)+(E_HNYOM(2,o+1)-

E_HNYOM(2,o))*((C(1,f)+C(1,f+1))/2-E_HNYOM(1,o))/(E_HNYOM(1,o+1)-

E_HNYOM(1,o)))*(B(2,p)+(B(2,p+1)-B(2,p))*((C(1,f)+C(1,f+1))/2-B(1,p))/(B(1,p+1)-

B(1,p)))+(E_HNYOM(2,o)+(E_HNYOM(2,o+1)-E_HNYOM(2,o))*(C(1,f+1)-

E_HNYOM(1,o))/(E_HNYOM(1,o+1)-E_HNYOM(1,o)))*(B(2,p)+(B(2,p+1)-B(2,p))*(C(1,f+1)-

B(1,p))/(B(1,p+1)-B(1,p))));

eny=eny+(C(1,f+1)-C(1,f))/6*((E_HNYOM(3,o)+(E_HNYOM(3,o+1)-E_HNYOM(3,o))*(C(1,f)-

E_HNYOM(1,o))/(E_HNYOM(1,o+1)-E_HNYOM(1,o)))*(B(3,p)+(B(3,p+1)-B(3,p))*(C(1,f)-

B(1,p))/(B(1,p+1)-B(1,p)))+4*(E_HNYOM(3,o)+(E_HNYOM(3,o+1)-

E_HNYOM(3,o))*((C(1,f)+C(1,f+1))/2-E_HNYOM(1,o))/(E_HNYOM(1,o+1)-

E_HNYOM(1,o)))*(B(3,p)+(B(3,p+1)-B(3,p))*((C(1,f)+C(1,f+1))/2-B(1,p))/(B(1,p+1)-

B(1,p)))+(E_HNYOM(3,o)+(E_HNYOM(3,o+1)-E_HNYOM(3,o))*(C(1,f+1)-

E_HNYOM(1,o))/(E_HNYOM(1,o+1)-E_HNYOM(1,o)))*(B(3,p)+(B(3,p+1)-B(3,p))*(C(1,f+1)-

B(1,p))/(B(1,p+1)-B(1,p))));

end

% Rúd lehajlásának számítása a másodrendű nyomatékkal, illetve az eredmény mikrométerbe

konvertálása

vx=1/(e* ((dk^4-db^4)*pi)/32)*enx*1000000;

vy=1/(e* ((dk^4-db^4)*pi)/32)*eny*1000000;

% Lehajlás 0-ra állítása, ha a csapágyak helyén kell számítani azt

if vh==H1 || vh==H2

vx=0;

vy=0;

end

if ~isempty(G_H2)

if vh==H3

vx=0;

vy=0;

end

end

% Program kerekítési hibáinak kijavítása

[~,s]=size(E_HNYOM);

for f=1:s

if E_HNYOM(2,f)>-10^-10 && E_HNYOM(2,f)<10^-10

E_HNYOM(2,f)=0;

end

if E_HNYOM(3,f)>-10^-10 && E_HNYOM(3,f)<10^-10

E_HNYOM(3,f)=0;

end

end

% Nyomatéki ábra töréspontjainak helyeit t vektorba töltjük

t=E_HNYOM(1,:);

% Nyomatéki ábra töréspontjainak x komponensét x vektorba töltjük

x=E_HNYOM(2,:);

% Nyomatéki ábra töréspontjainak y komponensét y vektorba töltjük

y=E_HNYOM(3,:);

% Tengely megrajzolásának végpontjai

p1=[0,0];

Page 61: KÉSZÍTETTE Kőrössy Norbert

22

p2=[L,0];

% Rajzolt ábrák törlése újra ábrázoláshoz

delete(subplot(4,1,1))

delete(subplot(4,1,2))

delete(subplot(4,1,3))

delete(subplot(4,1,4))

% Tengely elrendezésének megrajzolása az X-Z síkon

subplot(4,1,1)

% Tengely vonala

line(p2,p1,'Color','black');

% Függőleges feliratozás elrejtése bal oldalt

set(gca,'YTick',[])

% Ábra szélességének beljebb kényszerítése láthatatlan vonalakkal, hogy egy vonalban

legyenek

p3=[-L/80,-L/80];

p4=[-1,1];

line(p3,p4,'Color','white');

p3=[L+L/80,L+L/80];

p4=[-L,L];

line(p3,p4,'Color','white');

% Első görgő megrajzolása

p3=[G_H1,G_H1-L/320];

p4=[-L/5+L/20,-L/5+L/40];

line(p3,p4,'Color','black');

p3=[G_H1-L/320,G_H1];

p4=[-L/5+L/40,-L/5];

line(p3,p4,'Color','black');

p3=[G_H1,G_H1+L/320];

p4=[-L/5+L/20,-L/5+L/40];

line(p3,p4,'Color','black');

p3=[G_H1+L/320,G_H1];

p4=[-L/5+L/40,-L/5];

line(p3,p4,'Color','black');

p3=[G_H1,G_H1+L/80];

p4=[0,-L/5+L/20];

line(p3,p4,'Color','black');

p3=[G_H1,G_H1-L/80];

p4=[0,-L/5+L/20];

line(p3,p4,'Color','black');

p3=[G_H1+L/80,G_H1-L/80];

p4=[-L/5+L/20,-L/5+L/20];

line(p3,p4,'Color','black');

% Második görgő megrajzolása

if ~isempty(G_H2)

p3=[G_H2,G_H2-L/320];

p4=[-L/5+L/20,-L/5+L/40];

line(p3,p4,'Color','black');

p3=[G_H2-L/320,G_H2];

p4=[-L/5+L/40,-L/5];

line(p3,p4,'Color','black');

p3=[G_H2,G_H2+L/320];

p4=[-L/5+L/20,-L/5+L/40];

line(p3,p4,'Color','black');

p3=[G_H2+L/320,G_H2];

p4=[-L/5+L/40,-L/5];

line(p3,p4,'Color','black');

p3=[G_H2,G_H2+L/80];

Page 62: KÉSZÍTETTE Kőrössy Norbert

23

p4=[0,-L/5+L/20];

line(p3,p4,'Color','black');

p3=[G_H2,G_H2-L/80];

p4=[0,-L/5+L/20];

line(p3,p4,'Color','black');

p3=[G_H2+L/80,G_H2-L/80];

p4=[-L/5+L/20,-L/5+L/20];

line(p3,p4,'Color','black');

end

% Csukló megrajzolása

p3=[CS_H,CS_H-L/320];

p4=[0,-L/40];

line(p3,p4,'Color','black');

p3=[CS_H-L/320,CS_H];

p4=[-L/40,-L/20];

line(p3,p4,'Color','black');

p3=[CS_H,CS_H+L/320];

p4=[0,-L/40];

line(p3,p4,'Color','black');

p3=[CS_H+L/320,CS_H];

p4=[-L/40,-L/20];

line(p3,p4,'Color','black');

p3=[CS_H,CS_H+L/80];

p4=[-L/20,-L/5];

line(p3,p4,'Color','black');

p3=[CS_H,CS_H-L/80];

p4=[-L/20,-L/5];

line(p3,p4,'Color','black');

p3=[CS_H+L/80,CS_H-L/80];

p4=[-L/5,-L/5];

line(p3,p4,'Color','black');

% Erők nyilainak megrajzolása

[~,p]=size(A);

for f=1:p

if A(2,f)>0 || A(2,f)<0

p3=[A(1,f),A(1,f)];

p4=[L/40,L/3];

line(p3,p4,'Color','black');

% Ha az erő pozitív

if A(2,f)>0

p3=[A(1,f),A(1,f)-L/200];

p4=[L/3,L/3-L/10];

line(p3,p4,'Color','black');

p3=[A(1,f),A(1,f)+L/200];

p4=[L/3,L/3-L/10];

line(p3,p4,'Color','black');

% Ha negatív

else

p3=[A(1,f),A(1,f)-L/200];

p4=[L/40,L/40+L/10];

line(p3,p4,'Color','black');

p3=[A(1,f),A(1,f)+L/200];

p4=[L/40,L/40+L/10];

line(p3,p4,'Color','black');

end

% Nyíl mellé kiírása az erő mértékének N-ban

TXT=A(2,f);

TXT=num2str(TXT);

TXT=strcat(TXT,' N');

text(A(1,f),L/2,TXT)

end

Page 63: KÉSZÍTETTE Kőrössy Norbert

24

end

% X irányt jelölő nyíl rajzolása

p3=[-L/40,-L/40];

p4=[L/40,L/3];

line(p3,p4,'Color','black');

p3=[-L/40,-L/40-L/200];

p4=[L/3,L/3-L/10];

line(p3,p4,'Color','black');

p3=[-L/40,-L/40+L/200];

p4=[L/3,L/3-L/10];

line(p3,p4,'Color','black');

% X felirat nyílhoz

text(-L/35,L/2,'X')

% Z irányt jelölő nyíl rajzolása

p3=[L+L/80,L+L/20];

p4=[0,0];

line(p3,p4,'Color','black');

p3=[L+L/20,L+L/30];

p4=[0,L/8];

line(p3,p4,'Color','black');

p3=[L+L/20,L+L/30];

p4=[0,-L/8];

line(p3,p4,'Color','black');

% Z felirat nyílhoz

text(L+L/18,0,'Z')

% Koncentrált nyomatékok megrajzolása

for f=1:ihnyom

if NY_HXM(1,f)>0 || NY_HXM(1,f)<0

p3=[NY_HH(1,f)-L/80,NY_HH(1,f)];

p4=[0,L/8];

line(p3,p4,'Color','black');

p3=[NY_HH(1,f),NY_HH(1,f)+L/80];

p4=[L/8,0];

line(p3,p4,'Color','black');

% Ha a nyomaték pozitív

if NY_HXM(1,f)<0

p3=[NY_HH(1,f)+L/80,NY_HH(1,f)+L/160];

p4=[0,-L/16];

line(p3,p4,'Color','black');

p3=[NY_HH(1,f)-L/80,NY_HH(1,f)];

p4=[0,-L/8];

line(p3,p4,'Color','black');

p3=[NY_HH(1,f)+L/160,NY_HH(1,f)+L/80];

p4=[-L/16,-L/19];

line(p3,p4,'Color','black');

p3=[NY_HH(1,f)+L/160,NY_HH(1,f)+L/160];

p4=[-L/16,-L/300];

line(p3,p4,'Color','black');

% Ha negatív

else

p3=[NY_HH(1,f)-L/80,NY_HH(1,f)-L/160];

p4=[0,-L/16];

line(p3,p4,'Color','black');

p3=[NY_HH(1,f)+L/80,NY_HH(1,f)];

p4=[0,-L/8];

line(p3,p4,'Color','black');

p3=[NY_HH(1,f)-L/160,NY_HH(1,f)-L/80];

Page 64: KÉSZÍTETTE Kőrössy Norbert

25

p4=[-L/16,-L/19];

line(p3,p4,'Color','black');

p3=[NY_HH(1,f)-L/160,NY_HH(1,f)-L/160];

p4=[-L/16,-L/300];

line(p3,p4,'Color','black');

end

% Nyomaték mértékének kiírása az koncentrált nyomaték ábrája alatt

TXT=NY_HXM(1,f);

TXT=num2str(TXT);

TXT=strcat(TXT,' Nm');

text(NY_HH(1,f),-L/4,TXT)

end

end

% Nyomatéki ábra rajzolása

subplot(4,1,2)

% Rácsozott háttér bekapcsolása

grid on

% Teljes nyomatéki ábra megrajzolása t és x vektorokkal

line(t,x,'Color','black')

% Tengelyek feliratozása

ylabel('Hajlító nyomaték (Nm) x')

xlabel('Távolság (m) z')

% Minden töréspontnál kiírása a nyomaték értékének

for f=1:s

TXT=E_HNYOM(2,f);

TXT=num2str(TXT);

text(E_HNYOM(1,f),E_HNYOM(2,f),TXT)

end

% Ábra szélességének beljebb kényszerítése láthatatlan vonalakkal, hogy egy vonalban

legyenek

p3=[-L/80,-L/80];

p4=[-1,1];

line(p3,p4,'Color','white');

p3=[L+L/80,L+L/80];

p4=[-1,1];

line(p3,p4,'Color','white');

% Tengely elrendezésének megrajzolása az Y-Z síkon

subplot(4,1,3)

% Tengely vonala

line(p2,p1,'Color','black');

% Függőleges feliratozás elrejtése bal oldalt

set(gca,'YTick',[])

% Ábra szélességének beljebb kényszerítése láthatatlan vonalakkal, hogy egy vonalban

legyenek

p3=[-L/80,-L/80];

p4=[-1,1];

line(p3,p4,'Color','white');

p3=[L+L/80,L+L/80];

Page 65: KÉSZÍTETTE Kőrössy Norbert

26

p4=[-L,L];

line(p3,p4,'Color','white');

% Első görgő megrajzolása

p3=[G_H1,G_H1-L/320];

p4=[-L/5+L/20,-L/5+L/40];

line(p3,p4,'Color','black');

p3=[G_H1-L/320,G_H1];

p4=[-L/5+L/40,-L/5];

line(p3,p4,'Color','black');

p3=[G_H1,G_H1+L/320];

p4=[-L/5+L/20,-L/5+L/40];

line(p3,p4,'Color','black');

p3=[G_H1+L/320,G_H1];

p4=[-L/5+L/40,-L/5];

line(p3,p4,'Color','black');

p3=[G_H1,G_H1+L/80];

p4=[0,-L/5+L/20];

line(p3,p4,'Color','black');

p3=[G_H1,G_H1-L/80];

p4=[0,-L/5+L/20];

line(p3,p4,'Color','black');

p3=[G_H1+L/80,G_H1-L/80];

p4=[-L/5+L/20,-L/5+L/20];

line(p3,p4,'Color','black');

% Második görgő megrajzolása

if ~isempty(G_H2)

p3=[G_H2,G_H2-L/320];

p4=[-L/5+L/20,-L/5+L/40];

line(p3,p4,'Color','black');

p3=[G_H2-L/320,G_H2];

p4=[-L/5+L/40,-L/5];

line(p3,p4,'Color','black');

p3=[G_H2,G_H2+L/320];

p4=[-L/5+L/20,-L/5+L/40];

line(p3,p4,'Color','black');

p3=[G_H2+L/320,G_H2];

p4=[-L/5+L/40,-L/5];

line(p3,p4,'Color','black');

p3=[G_H2,G_H2+L/80];

p4=[0,-L/5+L/20];

line(p3,p4,'Color','black');

p3=[G_H2,G_H2-L/80];

p4=[0,-L/5+L/20];

line(p3,p4,'Color','black');

p3=[G_H2+L/80,G_H2-L/80];

p4=[-L/5+L/20,-L/5+L/20];

line(p3,p4,'Color','black');

end

% Csukló megrajzolása

p3=[CS_H,CS_H-L/320];

p4=[0,-L/40];

line(p3,p4,'Color','black');

p3=[CS_H-L/320,CS_H];

p4=[-L/40,-L/20];

line(p3,p4,'Color','black');

p3=[CS_H,CS_H+L/320];

p4=[0,-L/40];

line(p3,p4,'Color','black');

p3=[CS_H+L/320,CS_H];

p4=[-L/40,-L/20];

line(p3,p4,'Color','black');

p3=[CS_H,CS_H+L/80];

p4=[-L/20,-L/5];

line(p3,p4,'Color','black');

p3=[CS_H,CS_H-L/80];

Page 66: KÉSZÍTETTE Kőrössy Norbert

27

p4=[-L/20,-L/5];

line(p3,p4,'Color','black');

p3=[CS_H+L/80,CS_H-L/80];

p4=[-L/5,-L/5];

line(p3,p4,'Color','black');

% Erők nyilainak megrajzolása

[~,p]=size(A);

for f=1:p

if A(3,f)>0 || A(3,f)<0

p3=[A(1,f),A(1,f)];

p4=[L/40,L/3];

line(p3,p4,'Color','black');

% Ha az erő pozitív

if A(3,f)>0

p3=[A(1,f),A(1,f)-L/200];

p4=[L/3,L/3-L/10];

line(p3,p4,'Color','black');

p3=[A(1,f),A(1,f)+L/200];

p4=[L/3,L/3-L/10];

line(p3,p4,'Color','black');

% Ha negatív

else

p3=[A(1,f),A(1,f)-L/200];

p4=[L/40,L/40+L/10];

line(p3,p4,'Color','black');

p3=[A(1,f),A(1,f)+L/200];

p4=[L/40,L/40+L/10];

line(p3,p4,'Color','black');

end

% Nyíl mellé kiírása az erő mértékének N-ban

TXT=A(3,f);

TXT=num2str(TXT);

TXT=strcat(TXT,' N');

text(A(1,f),L/2,TXT)

end

end

% Y irányt jelölő nyíl rajzolása

p3=[-L/40,-L/40];

p4=[L/40,L/3];

line(p3,p4,'Color','black');

p3=[-L/40,-L/40-L/200];

p4=[L/3,L/3-L/10];

line(p3,p4,'Color','black');

p3=[-L/40,-L/40+L/200];

p4=[L/3,L/3-L/10];

line(p3,p4,'Color','black');

% Y felirat nyílhoz

text(-L/35,L/2,'Y')

% Z irányt jelölő nyíl rajzolása

p3=[L+L/80,L+L/20];

p4=[0,0];

line(p3,p4,'Color','black');

p3=[L+L/20,L+L/30];

p4=[0,L/8];

line(p3,p4,'Color','black');

Page 67: KÉSZÍTETTE Kőrössy Norbert

28

p3=[L+L/20,L+L/30];

p4=[0,-L/8];

line(p3,p4,'Color','black');

% Z felirat nyílhoz

text(L+L/18,0,'Z')

% Koncentrált nyomatékok megrajzolása

for f=1:ihnyom

if NY_HYM(1,f)>0 || NY_HYM(1,f)<0

p3=[NY_HH(1,f)-L/80,NY_HH(1,f)];

p4=[0,L/8];

line(p3,p4,'Color','black');

p3=[NY_HH(1,f),NY_HH(1,f)+L/80];

p4=[L/8,0];

line(p3,p4,'Color','black');

% Ha a nyomaték pozitív

if NY_HYM(1,f)>0

p3=[NY_HH(1,f)+L/80,NY_HH(1,f)+L/160];

p4=[0,-L/16];

line(p3,p4,'Color','black');

p3=[NY_HH(1,f)-L/80,NY_HH(1,f)];

p4=[0,-L/8];

line(p3,p4,'Color','black');

p3=[NY_HH(1,f)+L/160,NY_HH(1,f)+L/80];

p4=[-L/16,-L/19];

line(p3,p4,'Color','black');

p3=[NY_HH(1,f)+L/160,NY_HH(1,f)+L/160];

p4=[-L/16,-L/300];

line(p3,p4,'Color','black');

% Ha negatív

else

p3=[NY_HH(1,f)-L/80,NY_HH(1,f)-L/160];

p4=[0,-L/16];

line(p3,p4,'Color','black');

p3=[NY_HH(1,f)+L/80,NY_HH(1,f)];

p4=[0,-L/8];

line(p3,p4,'Color','black');

p3=[NY_HH(1,f)-L/160,NY_HH(1,f)-L/80];

p4=[-L/16,-L/19];

line(p3,p4,'Color','black');

p3=[NY_HH(1,f)-L/160,NY_HH(1,f)-L/160];

p4=[-L/16,-L/300];

line(p3,p4,'Color','black');

end

% Nyomaték mértékének kiírása a koncentrált nyomaték ábrája alatt

TXT=NY_HYM(1,f);

TXT=num2str(TXT);

TXT=strcat(TXT,' Nm');

text(NY_HH(1,f),-L/4,TXT)

end

end

% Nyomatéki ábra rajzolása

subplot(4,1,4)

% Rácsozott háttér bekapcsolása

grid on

% Teljes nyomatéki ábra megrajzolása t és y vektorokkal

Page 68: KÉSZÍTETTE Kőrössy Norbert

29

line(t,y,'Color','black')

% Tengelyek feliratozása

ylabel('Hajlító nyomaték (Nm) y')

xlabel('Távolság (m) z')

% Minden töréspontnál kiírása a nyomaték értékének

for f=1:s

TXT=E_HNYOM(3,f);

TXT=num2str(TXT);

text(E_HNYOM(1,f),E_HNYOM(3,f),TXT)

end

% Ábra szélességének beljebb kényszerítése láthatatlan vonalakkal, hogy egy vonalban

legyenek

p3=[-L/80,-L/80];

p4=[-1,1];

line(p3,p4,'Color','white');

p3=[L+L/80,L+L/80];

p4=[-1,1];

line(p3,p4,'Color','white');

% Felhasználói felület tetején kiírása a lehajlás mértékének

textLabel = sprintf('Elmozdulás X irányba: %f mikrométer', vx);

set(handles.text5, 'String', textLabel);

textLabel = sprintf('Elmozdulás Y irányba: %f mikrométer', vy);

set(handles.text7, 'String', textLabel);

% Felhasználói felület tetején kiírása a csapágyak tartóerőjének, ha a felhasználó három

csapágyat adott meg

if ~isempty(G_H2)

textLabel = sprintf('Csapágyakon erő X irányba sorrendben: %.3f %.3f %.3f N', H1_EX, q(2,1),

H2_EX);

set(handles.text8, 'String', textLabel);

textLabel = sprintf('Csapágyakon erő Y irányba sorrendben: %.3f %.3f %.3f N', H1_EY, q(3,1),

H2_EY);

set(handles.text10, 'String', textLabel);

% Felhasználói felület tetején kiírása a csapágyak tartóerőjének, ha a felhasználó két

csapágyat adott meg

else

textLabel = sprintf('Csapágyakon erő X irányba sorrendben: %.3f %.3f N', H1_EX, H2_EX);

set(handles.text8, 'String', textLabel);

textLabel = sprintf('Csapágyakon erő Y irányba sorrendben: %.3f %.3f N', H1_EY, H2_EY);

set(handles.text10, 'String', textLabel);

end