Programming Raspberry Pi med CODESYS (7 / 8 steg)
Steg 7: Servomotor kontroll
Om du har tur visar nog att ha tillgång till en industriell kvalitet servo (eller stepper) och kör sedan detta steg dig hur man styr som använder Raspberry Pi PLC.
Jag har lyckats få mina händer på en Technosoft EtherCat startkit från arbete som innehåller en motorisk och enheten (se bild).
Detaljer kan hittas här: http://www.technosoftmotion.com/en/starter-kits-an...
Med den här guiden kan du använda valfri EtherCat bil och motor kombination så länge du har den enhet Beskrivning file(XML) från tillverkaren att importera till Codesys. (Du kan också använda raspberry pi med andra kommunikationsprotokoll för att styra olika motorer och IO men konfigurationer och steg för att göra detta kommer vara något annorlunda med allt jag har beskrivit i detta instructable). Du kan behöva använda vissa egenutvecklade programvara för att inrätta enheter.
SÄKERHET OBSERVERA:
** När du använder motorer var försiktig som att flytta delar kan vara farligt. Var också noga med att följa instruktioner från motortillverkare och kontrollera alla kablar är korrekt, särskilt med hög spänning drives.* *
-Första steget är att koppla upp din motor och kör enligt tillverkarna instruktioner, i mitt fall var detta enkla, allt jag behövde göra var att lägga till 24V i logik och makt i hamnar (se röda och blå tjockare kablar på bilden), resten kom alla trådbunden upp. Nästa, du måste koppla en ethernet-kabel mellan EtherCat i hamnen för motor-enheten och ethernet-port för Pi-hallon. Detta är samma process som länkar Pi till den industriella IO i steg 5.
Om du vill använda både IO och motor, lämna IO som det var och Anslut ethernet-kabeln från EtherCat i porten av motordrift till EtherCat ut porten för den industriella IO. Om du gör det ändå, måste du se till att båda enheter läggs till din enhetsträdet i Codesys. EtherCat är en lysande fältbuss kommunikationsprotokoll så att du kan "daisy chain" komm över massor av enheter med endast enkla Ethernet-kablar.
För detta Instructable men vi kommer bara att använda motorn på egen hand.
-När ledningar är klar, kan vi flytta till programmering.
-Efter samma process som steg 5 öppnar upp ett nytt projekt i Codesys och lägger till en EtherCat Master och enhet, denna tid emellertid välja XML-filen som motsvarar det av motordrift för enheten (se bild på min enhetsträd efter att lägga till detta)
-Vi måste nu lägga till en axel i denna enhet. Detta innebär i huvudsak ska vi berätta Codesys att enheten EtherCat kontrollerar en motor. Och inom att vad parametrarna för motorn är.
-Högerklicka på enheten du har just lagt till och klicka på "Lägg till SoftMotionLight CiA402 axel".
Detta är där Raspberry Pi PLC idén faller ner det minsta, minsta beloppet. Som Pi inte har en realtidskärna och därför ingen realtid kapacitet (även om dessa kan läggas till om du vågar spela med Pi: s kärna) det kan inte hantera den fulla kapaciteten kommunikation till en enhet därför måste vi använda "Light" version. I real speak, detta innebär att synkronicitet av motorn till ditt program inte blir lika bra som om det var en riktig >£ 500 enhet. Men vem bryr sig om det när det gör allt så bra!
-Nu rätt klick på det nya objektet av enhetsträdet, gå till "Refactoring" sedan "Byt namn". Byt namn på axeln "Axis1". CoDeSys sedan kommer att ta upp en ny skärm där du ombeds att kontrollera om dess hittade rätt mappen, klicka på "OK".
-Dubbelklicka på "Axis1" i enhetsträdet och detta öppnar upp en ny flik i huvudfönstret. Det är där du måste kalibrera axeln i ditt system, genom att välja hur många revolutioner betyder vad, så for example motorn jag har har en kodare med 2000 steg per tur av motorn. Jag har ingen växellåda och jag vill arbeta i svängar, inte mm (om du hade en linjär axel på motorn). Så min skärm ser ut som den bifogade bilden.
-Codesys hand tar om de flesta saker för dig med EtherCat så för att nu göra motorn flytta allt vi behöver göra är att skriva ett program och utnyttja vissa inbyggda Codesys funktioner.
-För att göra detta enkelt, jag har lagt upp prov program detta instructable skrivet i CFC (ett språk av Codesys), du kan enkelt kopiera och klistra POUs (finns under "ansökan" i enhetsträdet ") till din program. Jag har använt några enkla inbyggda funktioner som ingår i den "MC_Open" Codesys bibliotek som tar hand om flytta motorn, jag bara måste berätta dem funktioner vilken motor jag vill flytta, hur långt och hur snabbt.
-När du har hämtat programmet och angett kör läge som beskrivs i steg 5. Om du vill flytta motorn, måste du öppna "Motor_Control" POU, nu måste du klicka på variablerna "Distans", "Velocity" och "Accel" (se bild) i sin tur och ange siffror, t.ex. 60, 60, 100. Gör 60 varv och 60revs/min med en acceleration av 100revs/Svensson. Klicka nu på variabeln "Power_Enable" till "True" visas bredvid variabeln i blått, nu måste du skriva detta värde till PLC-enheten genom att klicka på "Ctrl + F7". Detta kommer också skriva värdena på de andra variabler har vi ändrat.
-Motorn ska nu aktiveras, vilket betyder att den är påslagen och ställning.
-För att flytta motorn med hjälp av "MC_MoveRelative_SML" (en relativ flytta motors ståndpunkt i stället för ett absolut) måste du ange den variabeln "Move_Motor_Pos" "True" (på samma sätt som ovan). Du kan behöva göra detta steg två gånger för att se motor väg, detta är en bugg som jag inte riktigt förstå. Motorn ska rotera, yay!
Nu har du kontroll över motorer, prova att skriva ett program som roterar motorn fram och tillbaka. Du kan använda funktionerna MC_Open i ST språk också.