B&R Hilfe Antriebe über Wechelrichter

Nekson

Level-1
Beiträge
18
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich bin neu hier und in der B&R Programmierung. Ich habe eine X20 SPS von B&R und soll damit über einen Wechselrichter zwei Synchronmotoren zum drehen bringen. Ich komme aus der S7 programmierung und habe probleme bei der umstellung. Eine Schulung erhalte ich in einem Monat von der Firma. Jedoch soll ich diesen Teststand mit den Motoren bis dahin mal zum laufen bringen. kann mir kemand tipps geben?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Verpolt,

danke für deine schnelle Antwort.
Das Dokument ist eine gute Beschreibung. Ich habe jedoch ein Problem.
Ich möchte zunächst klein anfangen und einfach mal Digitale Ein und Ausgänge schalten. Ich habe eine X20 CP 1485-1 als SPS und z.B. die X20 DI 8371 alsDigitalen Eingang. Die SPS ist in der Hardware config in Automation Studio ausgewählt worden. nun kann ich aber die Digitalen Eingänge als Submodul nirgendswo auswählen. wie kann ich denn diese in den Hardwarebaum mit einfügen kannst du mir da weiterhelfen.
gruß
 
ich weiß, dass die I/O pins mit variablen belegt werden müssen um angesprochen werden zu können. Jedoch ist mein problem, dass ich meine I/O pins gar nicht sehen kann, da diese nicht hardwarebaum vorhanden sind. Die Module simnd aber an der sps angeschlosse. automation studio erkennt diese aber nicht.
 
ich verwende automation studio V 3.0.81.18.
ich habe ja noch kein Programm, da Automation Studio meine Digitale Eingang und ausgangsmodule nicht erkennt. AS erkennt nur die SPS. erst wenn die DI und DO Module erkannt werden, wollte ich diese ansteuern.
 
OK, habe soweit verstanden. Du hast die Möglichkeit die Hardwarekonfiguration mit einer Onlineverbindung von deinem Zielsystem runter zu laden. Wenn Du die AS Hilfe anschaust unter [->Projekt Management, ->Projekt erzeugen/öffnen; ->Neues Projekt erzeugen; ->Konfigurationsdaten] wirst Du die Info finden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke, dir er hat endlich die DI und DO erkannt. zusätzlich habe ich über x2x link noch eine Safety Input und Output als Modul, die Automation Studio erkannt hat. ich will jedoch vorerst damit noch nichts machen. Jedoch zeigt mir der compiler an, dass die safety module definiert werden müssen. wie kann ich diese definieren?
 
Hallo,
ist bei Dir die Safelogic installiert? Das ist ein extra Programm von B&R. Wenn Sie nicht installiert ist, dann schmeiss doch die Bauteile aus Deinem Hardwarebaum. Du wolltest ja nur die IO's ansteuern.
 
Habe ich auch gemacht gehabt, beim ansteuern der I/Os.
Meine eigentliche Aufgabe ist ja einen Antrieb über einen Wechselrichter anzusteuern. da soll die safety logic wieder mit rein. Ich bekomme bald meine Schulung, ich glaube dann blick ich besser durch. bis dahin soll aber der antrieb laufen. weißt du wie ich in einem Programm z.B. in struktuiertem text den antrieb ansprechen kann, so dass der motor dreht?
Bei den I/O habe ich variablen zugewiesen, was muss ich bei Antrieben machen, da habe ich keine variablenzuweisung gefunden.
 
Also es handelt sich um den AcoposMulti 8BVI0014D. Dieser ist über powerlink verbunden. Bei den I/O s konnte ich den digitalen Ein- und Ausgängen variablen zuordnen. Nur weiß ich nicht wie ich hier meine Motoren ansteuern kann. Gibt es hier auch Variablen?
 
Hallo,
das Thema ist leider ein bisschen komplexer und würde auch den Rahmen hier im Forum sprengen. So wie ich es verstanden habe, hast Du einen 2 Achsigen Servoantrieb. Das Problem ist, dass Du keine Variablen ansteuerst wie bei den IO's. Hier muss der Antrieb (nicht SPS) parametriert werden. D.h. in Deiner Steuerung gibst Du an, was für ein Antrieb angeschlossen ist (8BVI0014D), was da für ein Motor (B&R?, Fremdhersteller?) an den Antrieb installiert ist und was für eine Rückführung (Geber) am Motor dran ist. Wenn das alles erfüllt wurde, dann ist der Antrieb Parametriert. Um den Antrieb anzutreiben schickst Du von der SPS nur noch Kommandos mittels PLCopen oder direkte Befehle an den Antrieb. Die Kommandos beinhalten z. B. "Fahre eine bestimmte Geschwindigkeit" oder "Fahre eine bestimmte Strecke".
Das ganze ist nur ein Bruchteil, was ich hier reinschreibe. Ich selbe habe mich auch mal reingearbeitet in diese Thematik. Deswegen verstehe ich, dass Du gerne schon vorher wissen willst, wie sowas alles funktioniert. Ich konnte auch nicht abwarten :). Die Hilfe von B&R ist auch sehr gut.
Ich hoffe ich konnte Dir ein bisschen weiterhelfen.

Gruß
Oliver
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo.

Für Einsteiger ist die "acpfunk" ganz hilfreich um einen Regler anzusprechen. Die hat mal ein Ingenieur aus dem TB-West zur Vereinfachung geschrieben. Soweit ich weiß, ist diese offziell und kostenfrei über B+R zu bekommen.
 
Danke für die Antworten. Ich werde mich mal über die Hilfe in PLCopen einarbeiten.
"ACPFUNK" habe ich leider in google nicht gefunden. muss ich da beim B&R support nachfragen?
 
Ich wurde damals vom TB-West (Krefeld) betreut und da saß auch der Ingenieur, der die geschrieben hat. Ich habe die seinerzeit dort bekommen, bin aber nicht sicher ob die Bibliothek in den anderen TB´s ebenfalls genutzt wird. Du kannst ja mal in dem für Dich zuständigen TB danach fragen. Ist ja auch immer subjektiv, ich empfand die "acpfunk" als deutlich einfacher zu verstehen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ichn habe mir mal Code aus der Hilfe zusammenkopiert, könnt ihr mal drüber schauen ob das funktioniert. Olliriegel hast du das mit Kommandos gemeint?
Meine SPS connection streikt, daher kann ich den noch nicht übertragen.


Code:
(*Einmaliges INIT*)
axis1Ref := ADR(gAxis01);

PROGRAM _CYCLIC
 
 
(* TODO : Add your code here *)

CASE state OF
 
 STATE_READY: (*STATE_READY *)
 
 IF (power) THEN
  state:=STATE_POWER;
  power:=FALSE;
 END_IF
 STATE_POWER: (*State wird zu Beginn angefahren und schaltet Regelung ein*)
 
 MC_Power_0.Enable:=TRUE;
    IF (MC_Power_0.Status <> 0) THEN
      state:=STATE_HOME
      (* Store ErrorID in a variable, 
         ErrorID is reset on falling edge of 'Enable' *)
    ELSIF (MC_Power_0.Error) THEN
      axis1ErrorID:=MC_Power_0.ErrorID;
      (*Reset 'Enable' before going to STATE_ERROR*)
      MC_Power_0.Enable:=FALSE;
      state:=STATE_ERROR;
    END_IF
    
 STATE_HOME: (*State führt eine Refernz fahrt des Antriebs durch*)
 
  MC_Home_0.Execute:=TRUE;
     MC_Home_0.Position:=0;
     MC_Home_0.HomingMode:=mcHOME_DIRECT;
 
     IF (MC_Home_0.Done) THEN
       MC_Home_0.Execute:=FALSE;
       state:=STATE_MOVE_VELOCITY;
     ELSIF (MC_Home_0.Error) THEN
     (*Store ErrorID in a variable, 
       ErrorID is reset on falling edge of "Execute"*)
       axis1ErrorID:=MC_Home_0.ErrorID;
      (*Reset "Execute" before going to STATE_ERROR*)
       MC_Home_0.Execute:=FALSE;
       state:=STATE_ERROR;
     END_IF
     
  STATE_MOVE_VELOCITY: (*Starte eine Beweugung*)
  
   
  MC_MoveVelocity_0.Execute:=TRUE;
  MC_MoveVelocity_0.Velocity:=5000;
  MC_MoveVelocity_0.Acceleration:=50000;
  MC_MoveVelocity_0.Deceleration:=50000;
  MC_MoveVelocity_0.Direction:=mcPOSITIVE_DIR;
 
  IF (MC_MoveVelocity_0.InVelocity) THEN
       MC_MoveVelocity_0.Execute:=FALSE;
       state:=STATE_STOP;
   ELSIF (MC_MoveVelocity_0.Error) THEN
     (*Store ErrorID in a variable, 
       ErrorID is reset on falling edge of 'Execute'*)
       axis1ErrorID:=MC_MoveVelocity_0.ErrorID;
       MC_MoveVelocity_0.Execute:=FALSE;  (*Reset before STATE_ERROR*)
       state:=STATE_ERROR;
   END_IF
    STATE_STOP: (*Stoppe den  Antreib*)  
 
 IF Taster1=TRUE THEN  (*Nur wenn Taster betätigt, dann stoppen*)
   MC_Stop_0.Execute:=TRUE;
      MC_Stop_0.Deceleration:=0;  (*0=use limit value*)
      IF ((stop=FALSE) AND (MC_Stop_0.Done)) THEN
        MC_Stop_0.Execute:=0;
        state:=STATE_MOVE_VELOCITY;
      ELSIF (MC_Stop_0.Error) THEN
      (*Store ErrorID in a variable, 
        ErrorID is reset on falling edge of ‚Execute"*)
        axis1ErrorID:=MC_Stop_0.ErrorID;
        MC_Stop_0.Execute:=FALSE;
        state:=STATE_ERROR;
      END_IF
 END_IF
 
END_CASE
(* Function Block calls *)
MC_Power_0(Axis:= axis1Ref);
MC_Home_0(Axis:= axis1Ref);
MC_MoveVelocity_0(Axis:=axis1Ref);
MC_Stop_0(Axis:=axis1Ref);
 
END_PROGRAM
 
Ich habe über Powerlink die SPS mit dem Leistungsversorgungsmodul verbunden. und von dort über Powerlink den wechselrichter verbunden. Dennoch blinkt die Error leuchte. Weiß jemand von euch was ich da falsch gemacht habe? Eventuell könnte es ja an den Knotennummern liegen? Wonach gehe ich bei der einstellung von Knotennummern?
 
Acopos-Multi hatte ich "damals" nicht. Bei den Vorgängern gab es zwei Drehschalter mit der Wertigkeit 16hoch0 bzw 16hoch1. Falls Du die auch noch hast: Hast du die Wertigkeit beachtet? Stimmt die eingestellete Busrate? Ich musste immer den Systemtick (CPU) verändern, damit die Busrate auf dem Powerlink-Bus ein Vielfaches davon war.

Ansonsten gilt: Sind die Knotennummern entsprechend ihrer physikalischen Reihenfolge aufsteigend, ist die boot-Sequenz schneller. Weitere Einschränkungen sind mir nicht bekannt.
 
Zurück
Oben