ACOPOS Servo-Ansteuerung Varianten ?

ManAtWork!

Level-1
Beiträge
89
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebes SPS-Forum,

ich hab da mal eine Frage zur Ansteuerung von Servomotoren über die ACOPOS-Module. (Ich kenne mich hier noch nicht aus)

Und zwar gibt es ja extrem viele MC_ Funktionsbausteine um zb. die Achse zu initialisieren, an zu schalten, zu referenzieren und und und....
Wenn man nun ein lauffähiges "System" für eine Anlage erstellen will, muss man ja viele dieser MC_ Bausteine miteinander kombinieren.
Dazu kommt dann natürlich auch die entsprechende Fehlerauswertung und das Überwachen des aktuellen Zustandes der Servo-Module.


Gibt es hier auch einen einfacheren Weg? Zum Beispiel ein zentraler Baustein, der alle Betriebsarten einer Achse abdeckt und das ganze verwaltet?

Also der je nach Betriebsart die Achse referenziert, im Jog-Betrieb verfährt oder eine Absolute Bewegung tätig ?
Und gleichzeitig eventuell auch meine Hardware-Eingänge für den Referenzschalter und den Endschaltern überwacht ? ( wir wollen die ACOPOS P3 Module verwenden, diese besitzen keine Digitalen Eingänge)

Kennt sich hier einer mit der Ansteuerng solcher Servo-Module aus und könnte mich vielleicht in die Richtige Richtung lenken ?

Grüße Dominik
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also wenn du eine einfache Applikation hast, ist der Tipp mit den Mapp Bausteinen schon okay.

Wenn es komplexer wird, mit mehreren Betriebsarten verschiedenen Achsen synchron am besten noch Zeitgleich oder in geregelter Abfolge dann würde ich aus gründen der Übersichtlichkeit und zum debuggen auf die konventionelle art empfehlen. Mir sind diese ganzen Mapp Geschichten zu sehr "Black-Box" und ich habe hier schon einige Zeit für Fehlersuche verbraten wo am Ende "keine Fehler" waren sondern ein "B&R Magic Update" dieses spezielle Feature entfernt hat.

Gut hierfür ist wie immer das CoffeeMachine Projekt. Ich habe mir vor zig Jahren mal einen FB geschrieben der an eben dieses Beispiel anknüpft und den verwende ich seitdem in eigentlich all meinen Projekten wenn ich Acopos Achsen habe.

Wo es geht würde ich auch empfehlen nicht die MC_xyz Bausteine sondern die MC_BR_xyz zu verwenden, da diese meist für die Diagnose / Debugging besser geeignet sind und mehr Informationen liefern.

Die Reihenfolge die sich bei mir bewährt hat ist:

1. Parameter übertragen ( wenn nötig )
2. Fehler quittieren ( MC_Reset )
3. Regler einschalten (MC_Power )
4. Referenzieren ( MC_Home )

und dann halt weiter mit den Operationen.

Zur Diagnose MC_BR_ReadAxisError und MC_BR_ReadDriveStatus

Grüße

Markus
 
Hallo Ihr zwei und Danke für eure Antworten.

Da in unserer Firma bis jetzt noch nicht mit der mapp Technologie gearbeitet wird, hat sich das Thema mit dem zentralen Baustein erledigt.
Ich habe nun einen Task für die Servo Ansteuerung geschrieben. ( auch ähnlich dem CoffeeMachine Projekt).
Wir haben zum Glück nur einfache Positionierarbeiten mit der Achse.

Jetzt habe ich aber noch eine Frage.
Wie frägst du die Endschalter und Referenzschalter in deinem FB ab ? (ich verwende P3-Module)

Dort gibt es ja den MC_BR_SetHardwareInputs. Setzt du den permanent vor der Schritt oder einfach im "Einschalt-Ablauf" und fertig ?

Grüße
Dominik
 
Dort gibt es ja den MC_BR_SetHardwareInputs. Setzt du den permanent vor der Schritt oder einfach im "Einschalt-Ablauf" und fertig ?

Ja, der Baustein wird bei mir permanent aufgerufen und die Entsprechenden Eingänge sind im HW-Mapping fest Verknüpft. Ich würde dir das auch so empfehlen und falls du das Signal nochmal brauchst eine Mehrfachzuweisung am Eingang vornehmen. Ist meiner Meinung nach übersichtlicher und sauberer.
Du musst beachten, dass bei den Entsprechenden Eingängen in der Acopos Konfiguration das "Forcen" erlaubt wird. Habe das sowohl mit Acopos Micro als auch mit den P3 schon so gemacht.

MfG

Markus
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, der Baustein wird bei mir permanent aufgerufen

Und wie wertest du dann die Ausgänge: Busy und Error aus ?
Sprich wird deine Schrittkette nur abgearbeitet, wenn dieser Baustein in Busy und nicht im Error-Zustand ist ?
Oder was passiert, wenn sich die Achse z.B in einer Absoluten Bewegung befindet und der MC_BR_SetHardwareInput FB in error geht ? ( Achse stoppen und stoppt sie dann von alleine?)

Sorry, ich bin wirklich neu in dieser Thematik und kenne mich mit Achsen so gut wie nicht aus.

Schon mal Danke im Voraus! Bin dank dir schon ein großen Schritt weiter gekommen!

Grüße
Dominik
 
Und wie wertest du dann die Ausgänge: Busy und Error aus ?
Sprich wird deine Schrittkette nur abgearbeitet, wenn dieser Baustein in Busy und nicht im Error-Zustand ist ?
Oder was passiert, wenn sich die Achse z.B in einer Absoluten Bewegung befindet und der MC_BR_SetHardwareInput FB in error geht ? ( Achse stoppen und stoppt sie dann von alleine?)

Ehrlich gesagt, überhaupt nicht... :cool:

Hast du dir mal die Hilfe zum Baustein angeschaut? Wenn einer dieser Fehler erst zur Laufzeit (Maschine Produktiv )in deinem Programm und nicht bereits bei der Inbetriebnahme / Vorprojektierung auftritt dann hast du ein ganz anderes Problem ( unkontrollierte Referenzumschaltung / Pointerverschiebung zur Laufzeit etc. ).

Im Prinzip kopiert macht der Baustein keine eigene Kommunikation mit dem Acopos, sondern er kopiert die Zustände der Eingänge in die Acopos Datenstruktur. Die Übertragung geschieht im Hintergrund. Das machen die meisten der MC / MC_BR Bausteine so. Sie greifen auf die Datenstruktur zu und lesen / schreiben die für sie relevanten Teile.
Objektorientierung: Datenstruktur = Objekt / Methode = MC_ Funktion
 
Okay, ich habe jetzt endlich eine Achse und kann alles bei mir testen...und es funktioniert soweit ganz gut...

AAABBBER genau das mit dem MC_BR_SetHardwareInput bereitet mir jetzt irgendwie Probleme (ich hab jetzt das mit dem Überwachen auch einfach weggelassen)

Wenn ich den SetHardwareInput Enable auf False stelle funktioniert alles einwandfrei....ich kann alles verfahren und mir werden Achsfehler auch gemeldet (Perfekt)
Jedoch sobald ich die Endschalter scharf schalte (Enable = True / permanent nach dem anschalten der Anlage) und ich die Achse dann anschalten möchte, dann bleibt mir das ganze im MC_Power stecken....schlussendlich kommt die Fehlermeldung 29209.

Mir ist aufgefallen, dass dieser Fehler nur komm, wenn sich die Achse auf keinem der beiden Endschalter befindet.
Bin ich auf einer von beiden Endlagen, dann kann ich die Achse ganz normal anschalten.

Das passiert sowohl bei ncActiv_Lo + ncFORCE sowie bei ncACTIV_Hi + ncFORCE

woran kann das liegen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Welche Signale benutzt du denn am Baustein?

Ich kenne den 29209 eigentlich nur, wenn der "Enable" fehlt.

Hast du vllt. den Enable ebenfalls auf "ncForce" gesetzt und er überschreibt dir mit dem "0" am Baustein den Eingang am Acopos?

MfG

Markus
 
Du meinst jetzt am SetHardwareInput FB ?

Naja eigentlich nur den ENABLE den ich einfach permanent auf true setze und die zwei Hardware-Endschalter. Diese beziehe ich aber nicht direkt vom Modul sondern gehe über eine Variable die mit dem entsprechenden Modul verknüpft ist.

Das mit dem Enable Forcen habe ich jetzt nicht ganz verstanden?

Grüße
Dominik
 
Sorry, mein Fehler. Hab irgendwie die Enables durcheinandergebracht.

Ich meinte, ich kenne den 29209 nur wenn am Acopos Eingang "Enable" keine 24V anliegen.

Kannst du das ganze mal gefahrlos Simulieren in dem du die Digitalen Eingänge Forcest auf die deine Endschalter verdrahtet sind?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe den MC_BR_SetHardwareInput Fub noch nicht benützt.
Aber wenn ich das laut B&R Hilfe richtig interpretiere wird der konfigurierte Level im Init File für die jeweiligen Hardwareeingänge nicht berücksichtigt,
wenn ein Eingang für das Forcen freigeschaltet wurde.
Das heißt beim aktivieren des Fub sollten die Eingängen bei einem "high" Signal aktiv sein.
 
@da_kine
Der Enable für die Achsen funktioniert soweit. Ich habe bemerkt, dass ich die Achsen-Error Datei falsch verknüpft hatte.
Jetzt kommt der Fehler "Beide Endschalter belegt".

@adi5
Wenn ich das ncFORCE aktiviere. Muss ich dann also bei Endschalter (Öffner) die Eingänge invertieren ?

Grüße
Dominik
 
Zuletzt bearbeitet:
Hallo zusammen,

also ich denke das @adi5 da recht hat. Du wirst die Eingänge im Programm invertieren müssen.

Wie in den folgenden Diagrammen ersichtlich ist, wird der konfigurierte Level für die jeweiligen Hardwareeingänge nicht berücksichtigt, wenn ein Eingang für das Forcen freigeschaltet worden ist.

Ich bin nur gerade etwas irritiert, weil ich hier bisher keine Probleme hatte mit den direkten Signalen der Endschalter....

MfG

Markus
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So also ich hab das jetzt mit dem invertieren testen können und es funktioniert einwandfrei.

Wie beschrieben werden die Level wirklich nicht berücksichtigt. Das hatte ich leider übersehen.

Vielen Dank für eure Hilfe.

Grüße
Dominik
 
Zurück
Oben