Motion Simulator!
Moderator: Moderators
- Swets
- Berichten: 2662
- Lid geworden op: 09 feb 2007 21:49
- Locatie: krimpen aan den IJssel
- Contacteer:
Re: Motion Simulator!
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 ?
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)
Re: Motion Simulator!
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'
Re: Motion Simulator!
Code: Selecteer alles
if (TotalMove < TotalMove[i + 1])
Code: Selecteer alles
TotalMove
Code: Selecteer alles
TotalMove[i + 1]
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
- hugo stoutjesdijk
- Donateur
- Berichten: 12045
- Lid geworden op: 02 mar 2011 17:04
- Locatie: elst (u)
- Contacteer:
Re: Motion Simulator!
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)
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.
- Swets
- Berichten: 2662
- Lid geworden op: 09 feb 2007 21:49
- Locatie: krimpen aan den IJssel
- Contacteer:
Re: Motion Simulator!
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...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)
is wel slim van PIO, dat hij dat door heb...
http://www.arjan-swets.com (met cnc filmpjes)
- Swets
- Berichten: 2662
- Lid geworden op: 09 feb 2007 21:49
- Locatie: krimpen aan den IJssel
- Contacteer:
Re: Motion Simulator!
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.... :-)
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)
Re: Motion Simulator!
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.
Maak hier een functie/class/bibliotheek van want zoiets heb je nog vaak nodig.
Code: Selecteer alles
dY =(Y2 - Y1) / n;
dX = (X2 - X1) / n;
Xn = X1 + n x dX;
Yn=X1 + n x dY;
There are only 2 limits, the sky and your imagination
- hugo stoutjesdijk
- Donateur
- Berichten: 12045
- Lid geworden op: 02 mar 2011 17:04
- Locatie: elst (u)
- Contacteer:
Re: Motion Simulator!
Ik hou niet zo van dat werken met stapgrootte, ik interpoleer het altijd ten op zichte van de gehele af te leggen afstand.
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.
Code: Selecteer alles
for huidigestap = 1 to totaalstappen do
Xpositie = X1 + huidigestap / totaalstappen * (X2-X1)
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
- Swets
- Berichten: 2662
- Lid geworden op: 09 feb 2007 21:49
- Locatie: krimpen aan den IJssel
- Contacteer:
Re: Motion Simulator!
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?
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)
Re: Motion Simulator!
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.
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
- Swets
- Berichten: 2662
- Lid geworden op: 09 feb 2007 21:49
- Locatie: krimpen aan den IJssel
- Contacteer:
Re: Motion Simulator!
ik zal wel wat fout doen... ik heb dit even in me PLC gezet... van 8 naar 31555 verdelen in 25 stappen....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.
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.Code: Selecteer alles
for huidigestap = 1 to totaalstappen do Xpositie = X1 + huidigestap / totaalstappen * (X2-X1)
maar krijg alleen maar 8 terug... zal naar de koffie nog eens ff kijken... :-)
http://www.arjan-swets.com (met cnc filmpjes)
- Swets
- Berichten: 2662
- Lid geworden op: 09 feb 2007 21:49
- Locatie: krimpen aan den IJssel
- Contacteer:
Re: Motion Simulator!
Hij doet het... :-)
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...
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)
- hugo stoutjesdijk
- Donateur
- Berichten: 12045
- Lid geworden op: 02 mar 2011 17:04
- Locatie: elst (u)
- Contacteer:
Re: Motion Simulator!
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)
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.