FPGA interface kaart

LinuxCNC kan hier besproken worden

Moderator: Moderators

lordprimoz
Berichten: 141
Lid geworden op: 27 jun 2017 13:40
Locatie: Hengelo

Re: FPGA interface kaart

Bericht door lordprimoz »

DaBit schreef: 24 okt 2018 14:34 Dat dacht ik ook ooit, dat dat de kracht van Eding was. Tot ik erachter kwam dat er wel heel veel gezondigd word tegen de acceleratielimieten als je Eding korte-segmenten-code voert (software 4.02 is de laatste waar ik het ooit van bekeken heb trouwens, kan zijn dat het inmiddels anders is). Bert zijn oplossing voor het 'halve-acceleratie'-probleem als je segmenten met acceleratie en deceleratiefase gaat blenden is niet afremmen als segmenten X en Y een kleinere hoek maken dan XX graden. Met korte segmenten kun je dan met vrijwel oneindige acceleratie van richting wisselen. Tsja, meestal gaat dat wel goed, zeker met steppermachines waar het niet op de laatste micron aan komt. En als blijkt dat de nauwkeurigheid eronder te lijden heeft of er stapverlies optreed dan krijgen de motoren, drives of machine de schuld.

Hier een topic op dit forum: https://cnczone.nl/viewtopic.php?f=39&t=14414

Ik snap de keuze van Bert om het zo te doen, want in 99% van de gevallen zal het 'smokkelen' in het voordeel werken voor de eindgebruiker. Elke 3D-printer doet hetzelfde trouwens, en dat is korte-segmentencode bij uitstek.
Maar als je eerst smokkelt, nergens uitlegt wat je gesmokkel voor bij-effecten heeft, en ook nog gaat beweren dat je de bewerkingstijd kunt halveren ten opzichte van CNC-sturingen die wel netjes doen dan is dat net zoiets als een spelletje Monopoly winnen door regelmatig een graai in de kas van de bank te doen. Meh...

De LinuxCNC methode: ze knopen tangente circelsegmenten tussen de lijnsegmenten om de acceleratiepiek bij wisselen van richting te voorkomen, en die code kan heel, heel ver vooruit kijken.
Komt die code een conditie tegen die niet 101% uitentreure getest is en bewezen goed werkt , dan schakelen ze terug naar de robuuste niet-LAF (nouja, 1-segment lookahead..) planningsmethode.
dus jij zegt dat linuxCNC op basis van deze verschillen de betere keuze is?
Gebruikersavatar
Breaker
Donateur
Berichten: 1957
Lid geworden op: 26 mei 2015 22:43
Locatie: Nabij Antwerpen
Contacteer:

Re: FPGA interface kaart

Bericht door Breaker »

Kjelt schreef: 24 okt 2018 14:55 Zat in de middagpauze even kort te lezen hoe ze de RTC en deviatie per slave oplossen
Ja, mooi hè?
Kjelt schreef: 24 okt 2018 14:55 Ik vraag me zelfs af of je standaard netwerkpoort kunt gebruiken want het werkt zo te lezen als een ringnetwerk waarbij ieder bericht meteen doorgegeven moet worden.
Dan zou een microcontroller wel eens veel te traag kunnen zijn (bufferen bericht, interpreteren, doorsturen).
Het bufferen valt wel mee, dat zorgt voor vertraging, het wordt juist grotendeels inline/on-the-fly afgehandeld.
En de netwerksnelheid is 100Mbps, jij weet vast beter wat daar voor nodig is qua processorkracht, de eerder genoemde LAN9252 heb ik even opgezocht en dat is een ASIC.
Kjelt schreef: 24 okt 2018 14:55 Interessant, zo te zien slopen ze ook alle OSI lagen er af behalve de hardware laag die over blijft, heeft inderdaad niets meer met ethernet te maken.
Juist wel! Ethernet zit op laag 1 en 2 de rest is er later bij bedacht, en de collisions die er onderdeel van zijn, zijn opgelost door een master/slave model. Maar, nu je het zegt, het is eigenlijk meer tokenring zonder de token :lol:

EtherCAT voor de hobbyist komt overigens dichterbij:
https://youtu.be/i7gFqLQb0EA
Geduld is een schone zaak, frezen niet...
Gebruikersavatar
DaBit
Donateur
Berichten: 11018
Lid geworden op: 05 dec 2012 13:48
Locatie: Oss

Re: FPGA interface kaart

Bericht door DaBit »

lordprimoz schreef: 24 okt 2018 15:50 dus jij zegt dat linuxCNC op basis van deze verschillen de betere keuze is?
En dat vraag je aan iemand die al zo lang als hij op dit forum rondhangt in het LinuxCNC kamp zit? :lol:

Maar is LinuxCNC de betere keuze voor een reguliere stepper-aangedreven hobbyfrees? Niet perse. Het 'smokkelen' wat Eding doet lijkt op een bijzondere situatie zo hier en daar na weinig kwaad te kunnen en als Eding verder in je straatje past dan moet je het zeker niet links laten liggen.
Los daarvan: LinuxCNC is zeker voor standaardmachines helemaal niet zo eng want dat pakt de configuratietool prima op, Mesa hardware is goed van kwaliteit, niet te zuinig met in- en uitgangen, praktisch en betaalbaar, en als je verder gaat in de hobby zijn er weinig wensen die met LinuxCNC niet gerealiseerd kunnen worden. Linux is ook niet eng vanuit machine-gebruiker-standpunt, want je hebt gewoon je startmenu en je bestandsbeheer. Dus waarom zou je niet?
De belangrijkste wet in de wetenschap: 'hoe minder efficient en hoe meer herrie, hoe leuker het is'
Kjelt
Donateur
Berichten: 6259
Lid geworden op: 14 jun 2007 21:51
Locatie: Eindhoven

Re: FPGA interface kaart

Bericht door Kjelt »

Breaker schreef: 24 okt 2018 17:18 Het bufferen valt wel mee, dat zorgt voor vertraging, het wordt juist grotendeels inline/on-the-fly afgehandeld.
En de netwerksnelheid is 100Mbps, jij weet vast beter wat daar voor nodig is qua processorkracht, de eerder genoemde LAN9252 heb ik even opgezocht en dat is een ASIC.
100Mb/s ethercat ga je niet halen met alleen een microcontroller daar heb je toch wel hardware support voor nodig.
Die microcontrollers zijn er nu ook , oa van Infineon of support hardware van andere fabrikanten.

Alleen dat hele ethercat is bedoeld voor fabrieksvloeren, voor grote afstanden en veel slaves (tot 65534 slaves). Oftewel super overkill voor een losstaande CNC machine.
Als je nu 3 CNC frezen, 2 CNC banken, 4 3D printers en 2 CNC lasercutters hebt staan zou het wel geschikt zijn :lol:

Eigenlijk is de main selling point dat je vanaf 1 master digitaal snelle motioncontrollers praktisch real time kunt aansturen. Voor kleppen, relais, sensoren en dat soort traag spul is het overkill.
Aangezien je dan ook nog de stroom er naar toe moet leiden denk ik niet dat het voor de meeste gebruikers op dit forum geschikt is, zelfs als je zelfbouw printen voor een paar tientjes zou kunnen bouwen, want ieder device (sensor, klep, relais, motor, proxy etc) heeft dan een eigen print nodig, maar dat is voorlopig mijn conclusie.
Het is wel erg leuk spul om mee te spelen en experimenteren.
Kjelt schreef: 24 okt 2018 14:55 Juist wel! Ethernet zit op laag 1 en 2 de rest is er later bij bedacht, en de collisions die er onderdeel van zijn, zijn opgelost door een master/slave model. Maar, nu je het zegt, het is eigenlijk meer tokenring zonder de token :lol:
Ik bedoel dus meer dat bij Ethernet alles aan elkaar hangt dus 1 switch en daar hangen alle devices tegelijk parallel aan maar bij Ethercat is het dus echt de bedoeling dat het doorgelust wordt zodat de master ook de vertraging per slave kan berekenen. Ieder device heeft dus twee poorten een binnenkomend en een uitgaande poort. De slave moet dan ook voordat het hele pakket binnen is al zijn data er tussen proppen en weer doorsturen, dan ontkom je niet aan een FPGA of ASIC of dedicated hardware peripheral in een microcontroller.
Puur in software ga je variabele delays van minstens enkele tot 10 ms per pakket introduceren waardoor het systeem onbruikbaar wordt voor "real time" motion control.
Gebruikersavatar
DaBit
Donateur
Berichten: 11018
Lid geworden op: 05 dec 2012 13:48
Locatie: Oss

Re: FPGA interface kaart

Bericht door DaBit »

Kjelt schreef: 24 okt 2018 21:21 100Mb/s ethercat ga je niet halen met alleen een microcontroller daar heb je toch wel hardware support voor nodig.
Je zult zowiezo on the fly de frames moeten modificeren, al is het maar de working counter. Dat sluit elke oplossing met 2 Ethernet-MACs die via een bus aan weetikveelwat gekoppeld zitten al uit.
Oftewel, de slave heeft speciale hardware nodig.

Tenzij... je maar 1 slave hebt. Dat zou best te hacken moeten zijn. Maarja, dan heb je ook zo weinig aan EtherCAT.
Alleen dat hele ethercat is bedoeld voor fabrieksvloeren, voor grote afstanden en veel slaves (tot 65534 slaves). Oftewel super overkill voor een losstaande CNC machine.
Dus jij vind die 64-bit geheugenruimte van de PC waar je op zit te tikken ook maar onzin? Of de 32-bit IPv4 adressen in je thuisnetwerk?
Eigenlijk is de main selling point dat je vanaf 1 master digitaal snelle motioncontrollers praktisch real time kunt aansturen. Voor kleppen, relais, sensoren en dat soort traag spul is het overkill.
Nee, ik vind het geen overkill:
- Aansturing vanuit het Ethernet-poortje van je computer. Dat willen 'we' toch al.
- Makkelijke en relatief goedkope kabeltjes. Niet meer dat geklooi met hele bossen kabel voorzien van aderhulsjes en in schroefklemmetjes proppen. Ik weet dat mijn kabelkettingen hutjemutje vol zitten, en de elektraruimte van mijn frees explodeert bijna.
- Genoeg bandbreedte voor snelle cyclustijden. Je kunt er ook je laser mee sturen om te rasteren. Mijn CNC gebruikt een 125us cyclustijd (en heeft die ook nodig). Weinig wat dat haalt op lokale bussen zoals PCI na.
- Implementatie van het precision timing protocol. Verdraaid handig voor zaken als toolsensoren, touchprobes en synchroon houden van motoren.
- Gewoon IP verkeer is ook nog steeds mogelijk. Kan je freeswerk-al-klaar webcam in dezelfde keten.
- Als je I/O op is plaats je simpelweg een extra module. Kom daar maar eens om bij Eding of Mach3 als je opeens nog een B/C-as erbij wil doen als je een 4-assige module gekocht had.
- Het is niet de kosten van een UART of fullspeed USB, maar vreselijk hoog lijken de hardware-meerkosten voor een slavenode ook niet te zijn.
Aangezien je dan ook nog de stroom er naar toe moet leiden denk ik niet dat het voor de meeste gebruikers op dit forum geschikt is, zelfs als je zelfbouw printen voor een paar tientjes zou kunnen bouwen, want ieder device (sensor, klep, relais, motor, proxy etc) heeft dan een eigen print nodig, maar dat is voorlopig mijn conclusie.
Zaken kun je wel groeperen. Een 8-poorts opto/relaisprintje in de buurt van je koelmiddelsysteem bijvoorbeeld, en iets dergelijks op de brug.

Verder is EtherCAT 100MBit, dus 4 draadjes. Op een standaard 8-aderige kabel hou je nog 4 draadjes over. Geen idee of de spec voorziet in power-over-EtherCAT, maar een RJ45 kabel is royaal voldoende om een hele hobbyfrees van data en prik te voorzien, zeker als je alle 8 de aders gebruikt. Ik heb ooit best leuke vermogens (en data) getransporteerd over die 8 AWG28 draadjes.

Ga je dan specifiek naar LinuxCNC kijken: EtherCAT heeft de bandbreedte om het 'domme hardware, slimme software' principe in stand te houden. Dat is echt Het Grote Pluspunt Van LinuxCNC. Niks ingewikkelde controllerkaarten zoals Mach3 nodig heeft, maar een PC die in z'n uppie krachtig genoeg is voor alle algorithmen en die enkel wat hulp nodig heeft bij basale taken zoals een miljoen encoderpulsen per seconde tellen.
Idealiter kleed je een stepperdrive uit tot een stuk elektronica dat X ampere door spoel A stuurt en Y ampere door spoel B, waarbij X en Y via EtherCAT binnenkomen (nouja, stroom, hoek en hoeksnelheid zijn nog idealer). Verder nog encoderpulsjes tellen, en LinuxCNC kan het hele closed-loop stepper truukje doen. Met als grote voordeel dat de controle van alle motoren direct vanuit 1 punt gebeurt, en met voorkennis. LinuxCNC weet wanneer er geaccelereerd dient te worden, dus dan kun je ook alvast de elektrische vs mechanische hoek wat vergroten om extra koppel te genereren. Exact op het moment dat je het nodig hebt. Geen drives met variabele vertraging meer, dus alle assen exact synchroon. Ga je aardig wat mee winnen kwa volgfout en je assen kunnen een stuk sneller lopen want als eentje het even moeilijk heeft kun je ze allemaal even bijsturen. Je hebt dan ook helemaal niks meer te maken met microsteps instellen en weetikveelwat. Nooit meer met een spiegeltje en hoofdlampje DIP-switches zoeken in je elektrakast, maar gewoon een nummertje inkloppen in je CNC-besturing. Maakt iemand slimmere software voor het aansturen van de stepper en het voorkomen van resonanties? Daar heb je dan gelijk lol van zonder nieuwe drives te moeten kopen. Dumb hardware, smart PC, yeah baby!
De elektronica? 8 MOSFETs, wat gruis, een simpel STSPin microcontrollertje, en de EtherCAT slave hardware. Voor NEMA23's past dat achterop de motor, en voor die dingen kan de prik ook makkelijk via de CAT5 kabel binnenkomen.

Wat nou overkill? Juist in geval LinuxCNC is het absoluut geen overkill. Met 8kHz servorate kun je alles behalve de meest nauwkeurige toepassingen bedienen met absoluut nul intelligentie in de aansturende hardware en alle intelligentie in de PC. Van elke verbetering die een universiteit, een hobbyist of een bedrijf maakt word jouw machine beter met een simpele download en het overkomen van de 'in de IT gaat alles automatisch maar niks vanzelf' horde. EtherCAT ondersteunt die 8kHz servorate, LinuxCNC op niet al te gek flauwe hardware ook (De Pentium G3258 in de frees loopt op z'n teentjes bij die frequentie, maar is amper nog 'modern' te noemen)

Nou Kaassie, leef je uit! :D
De belangrijkste wet in de wetenschap: 'hoe minder efficient en hoe meer herrie, hoe leuker het is'
Kjelt
Donateur
Berichten: 6259
Lid geworden op: 14 jun 2007 21:51
Locatie: Eindhoven

Re: FPGA interface kaart

Bericht door Kjelt »

Ja misschien heb je gelijk en zit ik er naast.
Ik zie het gewoon nog niet voor me. De kant en klare producten zijn €100 per interface of een €500 digitale ethercat servodrive.
Die 8 mosfets en controller zitten nu ook in de closedloop driver, redelijk klein maar nog steeds lomp om bij de motor zelf bij te bouwen maar kan wel.
De genoemde FPGA's kosten ook nog €25 per stuk maar misschien dat de frontend ook met een cpld kan van €5.
Ik ben benieuwd wat er gecreëerd wordt en wat de uiteindelijke kosten per node en het totale systeem zullen zijn.
Kaasie
Donateur
Berichten: 47
Lid geworden op: 15 okt 2018 22:20

Re: FPGA interface kaart

Bericht door Kaasie »

Het ethercat installeren an sich valt nog niet mee. Eerdaags zal ik precies de linuxcnc verie met bijbehorende kernel installeren (32 bit) die ze als voorbeeld hanteren op een proef schijf.
Zelf werk ik met 64 bit. 1 installatie op 64 bit was gelukt. Maar daarna nog een keer installeren vanaf 0 gaf een foutmelding. Okey ik heb meer tijd nodig, maar gaat denk ik wel lukken.

Morgen komt omron langs voor een ethercat systeem. Zal dit gesprek is afwachten en hun ervaringen met linux aanhoren. Omron is wel wat duurder dan Beckoff, althans zo lijkt het via google shopping.
Beckhoff geeft in ieder geval geen ondersteuning voor linux. Wel willen ze een proefset ter beschikking stellen voor 4 weken, wat heel netjes is.
Ze zijn ook huiverig dat hun source code wordt aangepast, wat volgens de developpers ongewenst is. Ze willen wildgroei aan Ethercat programmeertaal voorkomen. Je kunt natuurlijk zelf ook een wijziging
aan de source code aanbrengen.

Uiteindelijk moet de Ethercat wel op 64 bit linuxcnc gaan draaien. Zal morgen ook op voorhand gelijk een Beckhoff module bestellen. Dan kunnen we verder.
Kaasie
Donateur
Berichten: 47
Lid geworden op: 15 okt 2018 22:20

Re: FPGA interface kaart

Bericht door Kaasie »

Kjelt,

Je hoeft niet enkel alleen op Ethercat aan te sturen.
Modbuss kan er ook naast. Een multimodule voor 4x analoge in, 4x analoge uit, digitaal in en uit etc. kost iets van 80 euro.
Kaasie
Donateur
Berichten: 47
Lid geworden op: 15 okt 2018 22:20

Re: FPGA interface kaart

Bericht door Kaasie »

En een ltp1 interface van in totaal 30 euro heeft ook 24 of 25 pinnen voor i/o,
Ik zou de servo's en steppers aanvankelijk is via Ethercat proberen aan te sturen en kijken wat voor resultaat dit geeft.
Wat mij opvalt de Beckhoff stepper drivers gaan tot maximaal 8000 pulsen. Dit valt mij wel tegen.
Gebruikersavatar
DaBit
Donateur
Berichten: 11018
Lid geworden op: 05 dec 2012 13:48
Locatie: Oss

Re: FPGA interface kaart

Bericht door DaBit »

Kjelt schreef: 24 okt 2018 23:36 Ja misschien heb je gelijk en zit ik er naast.
Ik zie het gewoon nog niet voor me. De kant en klare producten zijn €100 per interface of een €500 digitale ethercat servodrive.
Dat zijn voor industriele componenten van Westerse producenten toch opzich nog geen hele gekke prijzen. Een step/dir servodrive van vergelijkbare kwaliteit zal niet gek veel minder kosten.
Die 8 mosfets en controller zitten nu ook in de closedloop driver, redelijk klein maar nog steeds lomp om bij de motor zelf bij te bouwen maar kan wel.
Wat ik nodig heb voor een instapmodelletje stepperdrive past op 4 vierkante centimeter PCB als ik dubbelzijdig mag bestukken.
STSPIN32F0 meet 7x7mm. Daar zitten de gatedrivers, opamps en buckregulator al in.
Komen nog 6 MOSFETs bij, als je die in DirectFET of S3O8 package pakt zijn ze ook niet groot. Heb je nog een hele kant van de PCB over voor wat buffercondensatoren, currentsense en gruis.

Klinkt dat ongeloofwaardig? Op zoiets zitten 4 stuks 3-fase brushless DC motorcontrollers, 20 ampere per motor. PCB-grootte: 29x31mm....

Rek die 4 vierkante centimeter PCB op naar grootte NEMA23 achterkant, en de encoder, EtherCAT slave en 2 verticale RJ45's passen er ook nog wel bij.

Toegegeven, dat geheel is goed tot 36V ofzo, misschien wat krapjes. Maar als ik me kwaad maak lukt 80V/8A me ook wel op de grofweg 50x50mm PCB-oppervlak die je overhoud als je ook nog een doosje om de elektronica wil zetten. Enkelstuks-BOM van de PCB zal geschat een tientje of 4 zijn.

Probleem met dit soort zaken is dat je er zat moet maken, en je bent een paar maandjes zoet met de software.
De belangrijkste wet in de wetenschap: 'hoe minder efficient en hoe meer herrie, hoe leuker het is'
Gebruikersavatar
Breaker
Donateur
Berichten: 1957
Lid geworden op: 26 mei 2015 22:43
Locatie: Nabij Antwerpen
Contacteer:

Re: FPGA interface kaart

Bericht door Breaker »

Zelf electronica ontwerpen zit er voor mij niet in, dus ik kan maximaal werken met wat er beschikbaar is. En op mijn machines zijn de langste kabels misschien een meter, maar misschien komt er ooit iets groters waar het interessant voor is.

EtherCAT claimt een maximaal update frequentie van 10-30kHz, dus de echte pulsen (als in step/dir) zullen nog steeds door de modules gegenereerd moeten worden.
Kaasie schreef: 24 okt 2018 23:44 Wat mij opvalt de Beckhoff stepper drivers gaan tot maximaal 8000 pulsen. Dit valt mij wel tegen.
Het zegt toch 8000 full steps met 64 microsteps? Voor de meeste steppers met 200 steps/rotatie maakt dat 2400rpm, over het algemeen is dat voldoende.
Geduld is een schone zaak, frezen niet...
Gebruikersavatar
DaBit
Donateur
Berichten: 11018
Lid geworden op: 05 dec 2012 13:48
Locatie: Oss

Re: FPGA interface kaart

Bericht door DaBit »

Ik kan het wel zelf ontwerpen, ik heb alleen niet genoeg noodzaak om dat ook te doen. I/O modules op de plek kunnen plaatsen waar ze nodig zijn vind ik al handig genoeg. Kan met Mesa overigens ook als je dat wil; dat smart serial van ze is ook niet bepaald incapabel.

Het klopt dat de modules zelf de step/dir moeten genereren, maar >1kHz is royaal genoeg om de motoren als simpele snelheidsgestuurde dingen te zien en de regellus in LinuxCNC te sluiten. En dat heeft weer genoeg voordelen; zo bouw ik als de motor moet accelereren iets extra electrische hoek op zodat de stepper direct op gang komt in plaats van dat de eerste paar microsteps verloren zijn aan het opbouwen van hoekfout en dus koppel. Daarmee kan de acceleratie ook wat hoger ingesteld worden, dus pers je meer prestaties met een kleinere volgfout uit je motortje.
De belangrijkste wet in de wetenschap: 'hoe minder efficient en hoe meer herrie, hoe leuker het is'
Kjelt
Donateur
Berichten: 6259
Lid geworden op: 14 jun 2007 21:51
Locatie: Eindhoven

Re: FPGA interface kaart

Bericht door Kjelt »

Breaker schreef: 26 okt 2018 10:46 EtherCAT claimt een maximaal update frequentie van 10-30kHz, dus de echte pulsen (als in step/dir) zullen nog steeds door de modules gegenereerd moeten worden.
Ja het mooie zover als ik het nu begrepen heb is dat ethercat aan alle intelligente drivers hun volgende eindpositie doorgeeft (dus niet # pulsen ) om dan via een kort sync bericht iedereen tegelijk volledig synchroon die move aktie te laten uitvoeren. Bij CNC frezen is de snelheid en continuiteit bij het frezen belangrijk bij veel industriele producten komt de snelheid niet zo spits en kun je best wachten tot de positie bereikt is, bevestigd is om de volgende positie door te geven. Bij ethercat kun je dus de volgende eindpositie al doorgeven terwijl de driver nog bezig is om de vorige aktie af te ronden, bij de volgende syncframe gaat ie meteen door.
Kaasie
Donateur
Berichten: 47
Lid geworden op: 15 okt 2018 22:20

Re: FPGA interface kaart

Bericht door Kaasie »

Even een update.

Ethercat werkt nu op 64 bit linuxcnc. Ik heb wel nog een bottleneck. Dat is een high speed 5v output van 1us EL2124 aan een DM860 koppelen. Wie heeft raad?
Dit kan zeker alleen via octocoupler?
Plaats reactie