Motion Simulator!

Gewoon even offtopic praten over van alles en nog wat.

Moderator: Moderators

Gebruikersavatar
Swets
Berichten: 2662
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: Motion Simulator!

Bericht door Swets »

iteration 7 invokes undefined behavior [-Waggressive-loop-optimizations]

ik heb deze warning?
wat betekend dat?

in deze regel: if (TotalMove < TotalMove[i + 1])

en dan staan er gele kringeltjes onder de +1 ?
http://www.arjan-swets.com (met cnc filmpjes)
Gebruikersavatar
DaBit
Donateur
Berichten: 11032
Lid geworden op: 05 dec 2012 13:48
Locatie: Oss

Re: Motion Simulator!

Bericht door DaBit »

Dat je i+1 boven het aantal elementen in je array uit komt denk ik.
De belangrijkste wet in de wetenschap: 'hoe minder efficient en hoe meer herrie, hoe leuker het is'
hfjbuis
Donateur
Berichten: 3074
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: Motion Simulator!

Bericht door hfjbuis »

Code: Selecteer alles

 if (TotalMove < TotalMove[i + 1])

Code: Selecteer alles

TotalMove
Dit is een verwijzing naar een array

Code: Selecteer alles

TotalMove[i + 1]
Dit is een verwijzing naar een element uit de array

Daarmee vergelijk je 2 verschillende dingen die daarom per definitie ongelijk zullen zijn en dus altijd false zullen opleveren.

Het verbaasd mij dat de compiler dit slikt!
There are only 2 limits, the sky and your imagination
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 12045
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

Re: Motion Simulator!

Bericht door hugo stoutjesdijk »

Had het niet: (TotalMove [ i ] < TotalMove[i + 1]) moeten zijn ??

Maar misschien staat dat ook wel in de source code, want als ik de spaties weglaat valt heel die [ i ] weg. (zal wel een opmaak code zijn)
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Gebruikersavatar
Swets
Berichten: 2662
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: Motion Simulator!

Bericht door Swets »

hugo stoutjesdijk schreef: 12 jan 2023 15:34 Had het niet: (TotalMove [ i ] < TotalMove[i + 1]) moeten zijn ??

Maar misschien staat dat ook wel in de source code, want als ik de spaties weglaat valt heel die [ i ] weg. (zal wel een opmaak code zijn)
dat was het ook... dat was een typ fout.... maar ik zit nog wel eens te k#tten met die arrays.... in my plc kan ik bij een array in vullen waar die beginnen moet.... dus x[1..10] dus bijvoorbeeld in dit verhaal zou het wel makkelijk zijn als je met motor[1..8] kon werken... maar ik geloof dat dit altijd bij 0 begint dus motor[7] is dus van 0 t/m 7 = 8... maar dan ga ik nogal eens de fout in, maar i+1 werd groter als de array lang was...
is wel slim van PIO, dat hij dat door heb...
http://www.arjan-swets.com (met cnc filmpjes)
Gebruikersavatar
Swets
Berichten: 2662
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: Motion Simulator!

Bericht door Swets »

Ik loop een beetje vast.... en kan best wel een duwtje gebruiken.... dus alle tips zijn welkom...

nu werkt het eigenlijk best aardig, als ik hem maar altijd via de midden stuur....

dus ff wat ik nu heb...
ik heb dus het object precies in de midden van het frame hangen als ik start....
in het hart van het object zit zeg maar main 0,0,0 vanuit dat punt vul ik een array van 8, met de x,y,z coordinaten van de hoeken.. door breedte/2,lengte/2 hoogte/2 van het object te nemen (nou ja dit snap je wel..)

ook weet ik natuurlijk hoe groot me (buiten) frame is, dus ik kan vanuit de hoeken de lengtes uit rekenen van de 8 draden...

Dan geef ik hem een command... Z30 dus hart van het object 30 mm omhoog...

Dan ga ik dmv zo'n matrix alle 8 de hoek coordinaten vershuiven in het assenstelsel, en weet ik dus de 8 nieuwe hoekpunten..

dan kan ik ook naar die nieuwe hoekpunten weer de lengte berekenen....

dan heb ik dus de huidige lengtes, en de wantend lengtes...door die van elkaar af te trekken weet ik hoeveel een draad veranderen moet... dan ga ik die 8 lengtes sorteren op lengte.... dan deel ik 100, door de langste verschuiving... en dat getal gebruik ik om uit te reken hoeveel procent de andere moeten verschuiven...

Dit gaat dus goed, als ik hem maar altijd eerst naar 0,0,0 stuurt... maar, wat we dus al eerder eens besproken hadden... als ik hem van -30 naar 30 stuur, moeten de draden eerst korter worden, maar voorbij 0 weer langer....

nu had ik al iets gemaakt, dat hij om de X tijd opnieuw de verandering van de draden ging meten... en dan de stap procenten verhouding op nieuw ging uit rekenen.... en daardoor kwam hij wel veel netter in positie... maar ook dit werk alleen goed als ik naar niet door 0 ga... :-)


dus eigenlijk denk ik, dat ik eeh stel hij staat op z-30 en ik wil hem naar z30 sturen... dat ik dat gebied in stukken moet gaan hakken....
dus dat ik hem eerst naar -20 stuur...alles uitreken er naar toe lopen.... dan naar -10 naar 0, naar 10 enz enz ...

ik weet alleen nog ff niet hoe ik dat nu het beste kan doen.... :-)
http://www.arjan-swets.com (met cnc filmpjes)
hfjbuis
Donateur
Berichten: 3074
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: Motion Simulator!

Bericht door hfjbuis »

Je hebt een start punt (X1;Y1) en een eindpunt (X2;Y2). Splits dat traject op in n punten. Met een eenvoudige berekening kun je de n tussen posities berekenen en dan deze posities een voor een aflopen.

Code: Selecteer alles

dY =(Y2 - Y1) / n;
dX = (X2 - X1) / n; 
Xn = X1 + n x dX;
Yn=X1 + n x dY;
Maak hier een functie/class/bibliotheek van want zoiets heb je nog vaak nodig.
There are only 2 limits, the sky and your imagination
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 12045
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

Re: Motion Simulator!

Bericht door hugo stoutjesdijk »

Ik hou niet zo van dat werken met stapgrootte, ik interpoleer het altijd ten op zichte van de gehele af te leggen afstand.

Code: Selecteer alles

for huidigestap = 1 to totaalstappen do
Xpositie = X1 + huidigestap / totaalstappen * (X2-X1)
Hier niet zo belangrijk, maar in freesprogramma's met parameter opdeling is het grote voordeel tevens dat is die huidigestap niet altijd op 1 hoef te laten beginnen als ik een keertje tussendoor gestopt ben. En je hebt verder ook geen kans op optellende afrond fouten.
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Gebruikersavatar
Swets
Berichten: 2662
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: Motion Simulator!

Bericht door Swets »

ja maar ik zit er meer mee, hoe groot zal ik die stappen maken....

en ja kan wel zeggen deel het door 10... maar het moet natuurlijk een beetje afhankelijk zijn , denk ik , van de langste verplaatsing?
http://www.arjan-swets.com (met cnc filmpjes)
hfjbuis
Donateur
Berichten: 3074
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: Motion Simulator!

Bericht door hfjbuis »

Precies, je kunt de langste waarde door een vaste afstand delen en dan kijken wat werkt. Op een gegeven ogenblik loop je wel tegen een limiet aan.
Ik denk dat de limiet door de planner que bepaald wordt. Als die teveel kleine stapjes moet verwerken gaat de machine langzamer lopen.
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Swets
Berichten: 2662
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: Motion Simulator!

Bericht door Swets »

hugo stoutjesdijk schreef: 13 jan 2023 08:45 Ik hou niet zo van dat werken met stapgrootte, ik interpoleer het altijd ten op zichte van de gehele af te leggen afstand.

Code: Selecteer alles

for huidigestap = 1 to totaalstappen do
Xpositie = X1 + huidigestap / totaalstappen * (X2-X1)
Hier niet zo belangrijk, maar in freesprogramma's met parameter opdeling is het grote voordeel tevens dat is die huidigestap niet altijd op 1 hoef te laten beginnen als ik een keertje tussendoor gestopt ben. En je hebt verder ook geen kans op optellende afrond fouten.
ik zal wel wat fout doen... ik heb dit even in me PLC gezet... van 8 naar 31555 verdelen in 25 stappen....
maar krijg alleen maar 8 terug... zal naar de koffie nog eens ff kijken... :-)
Afbeelding
http://www.arjan-swets.com (met cnc filmpjes)
Gebruikersavatar
Swets
Berichten: 2662
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: Motion Simulator!

Bericht door Swets »

Hij doet het... :-)

Afbeelding
http://www.arjan-swets.com (met cnc filmpjes)
Gebruikersavatar
Swets
Berichten: 2662
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: Motion Simulator!

Bericht door Swets »

Hij doet het... :-)

Afbeelding

ik zit er alleen nog even mee ... ehh dat een korte verplaatsing misschien maar door 10 en een lange verplaatsing door 100 gedeeld moet worden?

of ik moet gewoon er steeds deze waarde bij op tellen... dus als je van -30 naar 30 ga, iedere keer +5 ofzo...
http://www.arjan-swets.com (met cnc filmpjes)
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 12045
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

Re: Motion Simulator!

Bericht door hugo stoutjesdijk »

Of als het totale bereik 300 is, stukjes van 5 uitrekenen.
Dus als je dan 100 mm moet zijn het 20 stapjes en bij 20 mm nog maar 4 stapjes.
Het mooiste is eigenlijk dat je met de grootste afstand van elk increment de andere assen er bij uitrekent. (als snelheid geen probleem is)
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Plaats reactie