indradrive cs über profiNET mit S7-1200

schueler1000

Level-1
Beiträge
15
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo...
Ich mache gerade als finale meiner ausbildung eine diplomarbeit.
Hierfür muss ich mit der S7-1200 über profiNET eine positionierung realisieren.Bei dem Regler handelt es sich um einen Bosch Rexroth IndraDrive CS. Habe mich jetzt schon ein bisschen mit dem Regler und der Software auseinander gesetzt, komme jedoch nicht drauf wie ich die Kommunikation SPS seitig und Regler seitig einrichten soll.
Bitte um Hilfe :)
 
Hallo,
S7-1200 ist nicht so mein Ding ... aber vom Prinzip her :

- du besorgst dir von Bosch-Rexroth die ProfiNet-GSD-Datei für den Regler
- du besorgst dir von Bosch-Rexroth die Indraworks-Software für den Regler
- mit der Indraworks-SW die PN-Schnittstelle des Reglers freischalten und die von dir gewünschten Daten für den Austausch Regler <-> SPS in der Führungskommunikation eintragen
- entsprechend der vorherigen Definition (Anzahl der Worte) die HW-Konfig durchführen
- entsprechend die Daten in die SPS einlesen / von ihr ausgeben

An welcher Stelle hängst du konkret ?

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich will zwar nicht immer über bunte Schaltschränke lästern, aber das ist halt wieder ein Beispiel wo die beiden Hersteller auf Ihre eigenen SPS`n bzw. Antriebe verweisen.
Da gibt es entsprechende Beispiele und wenn es Probleme gibt, dann wird nicht die Verantwortung hin- und hergeschoben.

Bei einem SINAMICS, der über GSD ins TIA- Portal eingebunden wird, gibt es folgenden Beitrag. Mit dem Bosch Rexroth müsste es ähnlich sein:

http://www.sps-forum.de/showthread....200-via-Profinet-anbinden?p=414464#post414464

Ich bin etwas vorsichtig, da ich mal bei einem Beitrag bzgl. azyklischer Kommunikation untersützt habe, wo es mit einem SIEMENS Micromaster funktioniert hat und mit dem Rexroth dann nicht. Aber die genauen Gründe sind mir nicht bekannt.

Normallerweise, sollte es wie im Beitrag beschrieben funktionieren Vielleicht kann Superkater von seiner Erfahrung berichten.
 
Zuletzt bearbeitet:
@Zako:
in welcher Beziehung steht dein Beitrag zur Frage des TE ?
Ich hatte bisher keine Probleme so etwas (allerdings mit einer S7-300) zu realisieren ...

Gruß
Larry
 
Hallo Larry


wieso passt meine Antwort nicht zur Frage?
Dann sorry
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
danke erstmals für die schnellen Antworten.
die GSD Datei hab ich mir schon vorher besorgt genauso wie die Software (IndraWorks Ds11V10).
Zurzeit hänge ich am Einstellen des Reglers (vorallem die Austausch-Parameter) bzw verstehe ich bei der SPS-seitigen programmierung folgendes nicht:
Wofür sind die Parameter INDEX (Datensatznummer), Record(Datensatz) bzw. wo schreibe ich meinen Sollwert hin ( Angenommen wenn der Lage Sollwert 150mm sein soll....wohin mit den 150mm??:confused:)

Und gleich noch eine andere Frage in diesem Zusammenhang:
Von Bosch gibt es auf der Homepage einen S7-Positionierbaustein, dieser steht aber unter der Kategorie Profibus. Kann ich diesen Baustein auch für mein System mit ProfiNET verwenden?
 
Hallo,
den Baustein kenne ich nicht - ich könnte mir aber vorstellen, dass er prinzipiell funktioniert.

Da ich jetzt zu hause bin kann ich dir nicht mit konkreten Bezeichner-Namen kommen, die du in den Datenaustausch eintragen mußt.
Die von dir genannten Parameter brauche ich auf jeden Fall nicht. Ich halte es für gewöhnlich so, dass die SPS die Ziel-Position und den Geschwindigkeits-Sollwert an den Regler übergibt und ich dann über das Regler-Steuerwort dem Regler den Start-Befehl dafür gebe. Manchmal hänge ich auch noch eine Kraft-Begrenzung und/oder eine Beschleunigung da mit rein.

Deine Betriebsart hießt "antriebsgeführtes Positionieren".
Die genannte Eintragungen machst du in der Rubrik "Führungskommunikation". Hier gibt es dann die Unter-Rubriken "vom Regler zur SPS" und "von der SPS zum Regler" (leider heißen die jetzt nicht genau so).
Hier trägst du die genanten Parameter ein - ich kann das aber morgen gerne konkretisieren (an Hand meiner Vorgehensweise).
An Hand der verwendeten Parameter ergibt sich dann die Breite des Daten-Austausches (das schreibt die SW irgendwo im Bild hin) und das mußt du in der GSD-Datei einstellen.

Werden deine Regler schon als PN-Slaves erkannt ? Bzw. hast du schon Verbindung zur SPS (wenn auch halt noch keine sinnvolle Kommunikation) ?

Gruß
Larry
 
Hallo,
Danke Larry....würdest mir mit deinem Beispiel sehr sehr helfen. :D
Neine eine Verbindung vom Regler zur SPS habe ich noch keine...leider.
Die Breite des Daten Austausches muss ich die in den Eigenschaften der GSD Datei einstellen oder am Baustein (LEN Parameter)?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja ... in den Eigenschaften der GSD-Datei.
Ich baue dir da morgen mal mit ein paar Screenshots etwas zusammen.

Dessen ungeachtet solltest du aber den PN schon mal ans Laufen bekommen.
In der Achse hast du den PN-Port freigegeben (mit IndraWorks) ?
Die IP-Adresse deines Ports (X24,X25 glaube ich) ist unterschiedlich von der der PN-Schnittstelle ? (muss so sein obwohl es eigentlich der gleiche Port ist)
Hast du die Achse als Teilnehmer in deiner HW-Konfig eingetragen ?
Wird dir die Achse als erreichbarer Ethernet-Teilnehmer angezeigt ?

Ansonsten würde ich sagen : bis morgen ...

Gruß
Larry
 
wenn du meinst den Regler Port auf ProfiNET einstellen dann ja.
Oh ja das mit den IP Adressen wäre dann schonmal der 1. Fehler gewesen.
HW-Kofig wurde gemacht.
Wie kann ich mit die Eerreichbaren Teilnehmer anzeigen lassen?
 
Wie kann ich mit die Eerreichbaren Teilnehmer anzeigen lassen?

Im Projektbaum ziemlich unten "Online Zugänge" -> "Deine Schnittstelle" --> Erreichbare Teilnehmer

Und gleich noch eine andere Frage in diesem Zusammenhang:
Von Bosch gibt es auf der Homepage einen S7-Positionierbaustein, dieser steht aber unter der Kategorie Profibus. Kann ich diesen Baustein auch für mein System mit ProfiNET verwenden?

Ich vermute der Baustein ist für Step7 classic, mit deiner 1200er benötigst du aber einen Baustein fürs TIA, eine Migration wird nicht funktionieren, da es in classic keine 1200er gab und diese teilweise abweichende Anweisungen gegenüber S7-300 hat, zB bei den Timern, also der Weg wird nicht funktionieren.

MfG MK
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
an die Sache mit der 1200 hatte ich schon gar nicht mehr gedacht. Da hat der MK bezüglich des Beispielcodes natürlich absolut Recht. Vielleicht läßt sich für dich aber dennoch daraus etwas ableiten ...

Gleiches gilt wahrscheinlich auch für meinen Screenshot der HW-Konfig. ich arbeite ja nicht mit TIA (sondern Step7 V5.5) - es geht aber auch hier m.E. um die Inhalte ...

Wichtig für die PN-Geschichte : PN orientiert sich nicht vorrangig an der IP-Adresse sondern an dem Teilnehmer-Namen. Der muss also richtig eingetragen sein / werden ...
 
... wenn die Antriebsseite richtig eingestellt ist, dann kanst Du ja wie in meinem Link im obigen Beitrag beschrieben, im TIA- Portal die restlichen Einstellungen vornehmen.
Allerdings musst Du Steuerwort und weitere Sollgrößen von der Steuerung vorgeben / Zustände abfragen - also "händisch" ausprogrammieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo zusammen....
erstmals danke für die Vorlage :)
jetzt wird mir auch wenn ich unter online zugänge "erreichbareteilnehmer aktualisieren" mein Regler angezeigt...
könntest du mir bitte auch noch einen Screenshot von deinem SPS Baustein posten? bitte damit ich nichts falsch mache bzw. hab ich da auch noch nicht ganz den durchblick :confused:
 
... der wird dir wohl nicht so schrecklich viel helfen ...

Ich habe mir einen FB gebaut, der im STAT-Bereich die Sende- und die Empfangsdaten der Kommunikation abbildet - und zwar exakt entsprechend der Einstellungen, die ich in der Führungskommunikation im Regler gemacht habe. Am Anfang hole ich die Daten konsistent ab, verarbeite sie, ggf. wird etwas gesteuert und das Ergebnis schreibe ich dann konsistent zurück.
Ich kann davon ab gleich auch mal eine AWL-Quelle machen ...

Denk blos dran : Du S7-1200 -:- Ich S7-300 := ganz unterschiedliche Systeme ...

Gruß
Larry
 
so sieht das dann aus :

Code:
FUNCTION_BLOCK "FB307"
TITLE =UP Steuern Servo Bosch-Rexroth
AUTHOR : 'Larry'
FAMILY : LL_Std
VERSION : 0.1

VAR_INPUT
  Per_Handshake : INT ; //1. Perepherie-Adresse Handshake mit Servo
  Allgemein : BOOL ; //-------------------------------------------------------------------------------
  _Freigabe : BOOL ; //Freigabe Servo-Achse
  _Quit_Stoerung : BOOL ; //Quittierung Störung
  _Ref_Fahrt : BOOL ; //Fahr-Ablauf "Referenz-Fahrt"
  Steuer_Funktionen : BOOL ; //-------------------------------------------------------------------------------
  _Tippen_vor : BOOL ; //Fahren "Tippen vor"
  _Tippen_zur : BOOL ; //Fahren "Tippen zurück"
  _Geschwindigkeit_Tippen : REAL ; //Geschwindigkeit Tipp-Betrieb
  Fahr_Daten : BOOL ; //-------------------------------------------------------------------------------
  _Setze_Fahrdaten : BOOL ; //Fahrdaten übernehmen
  _Start_in_Position : BOOL ; //Fahre auf Position [Fahrdaten]
  _Ziel_Position : REAL ; //- Fahrauftrag : Ziel-Position
  _Geschwindigkeit : REAL ; //- Fahrauftrag : Geschwindigkeit
  _Drehmoment : REAL ; //- Fahrauftrag : Drehmoment
END_VAR
VAR_OUTPUT
  OUT_Servo_bereit : BOOL ; //Servo-Achse bereit
  OUT_Servo_DiagnoseFehler : BOOL ; //Servo-Achse Diagnose-Fehler
  OUT_Servo_Referenz_OK : BOOL ; //Servo-Achse in Referenz
  OUT_Servo_Arbeitsbereich : BOOL ; //Sewrvo-Achse im Arbeitsbereich
  OUT_Set_Daten_OK : BOOL ; //neue Fahr-Daten eingetragen
  OUT_Fahren_Ready : BOOL ; //Fahr-Programm beendet
  OUT_Ist_Position : REAL ; //akt. Position Servo-Achse
END_VAR
VAR
  Servo_Read_Daten : STRUCT  
   Status_Regler : STRUCT  //P-0-4078
    Ist_Betriebsart_1 : BOOL ; //00=Hauptbetriebsart / 01 - 11 = Nebenbetriebsarten
    Ist_Betriebsart_2 : BOOL ; 
    Sollwert_Quit : BOOL ; //1=Fahrbefehl ist übernommen
    Meldung_Zustand_1 : BOOL ; 
    Meldung_Zustand_2 : BOOL ; 
    Meldung_Zustand_3 : BOOL ; 
    betriebsbereit_1 : BOOL ; 
    betriebsbereit_2 : BOOL ; 
    Betriebsmodus_Quit_1 : BOOL ; //10 = Betriebs-Modus
    Betriebsmodus_Quit_2 : BOOL ; 
    Referenz_OK : BOOL ; 
    Stillstand_Achse : BOOL ; 
    Sollwert_erreicht : BOOL ; 
    Kommando_Aenderung : BOOL ; 
    Betriebsmodus_Fehler : BOOL ; 
    Status_Sollwert : BOOL ; //0=Antrieb folgt Vorgabe / 1=nicht
   END_STRUCT ; 
   Fahrbereichs_Endschalter : STRUCT  //P-0-0222
    x10 : BOOL ; 
    x11 : BOOL ; 
    x12 : BOOL ; 
    x13 : BOOL ; 
    x14 : BOOL ; 
    x15 : BOOL ; 
    x16 : BOOL ; 
    x17 : BOOL ; 
    Endschalter_1 : BOOL ; 
    Endschalter_2 : BOOL ; 
    x02 : BOOL ; 
    x03 : BOOL ; 
    x04 : BOOL ; 
    x05 : BOOL ; 
    x06 : BOOL ; 
    x07 : BOOL ; 
   END_STRUCT ; 
   dummi : WORD ; //S-0-0000
   Ist_Position : DINT ; //S-0-0386
   Drehmoment : INT ; //S-0-0084
   Diagnose_Nr : DINT ; //S-0-0390
  END_STRUCT ; 
  Servo_Write_Daten : STRUCT  
   Steuern_Regler : STRUCT  //P-0-4077
    Betriebsart_1 : BOOL ; //00=Hauptbetriebsart / 01 - 11 = Nebenbetriebsarten
    Betriebsart_2 : BOOL ; 
    Res_1 : BOOL ; 
    Res_2 : BOOL ; 
    IPos_Sync : BOOL ; 
    Antrieb_Halt : BOOL ; 
    Antriebs_Freigabe : BOOL ; 
    Regler_Freigabe : BOOL ; 
    Sollwert_Uebernahme : BOOL ; //Toggle
    Betriebsmodus : BOOL ; 
    Referenzfahrt : BOOL ; 
    Positioniermodus : BOOL ; //0=absolut / 1=relativ
    Satzwechsel_Modus : BOOL ; //0=letzte Pos. muss abgeschlossen sein / 1=egal
    Reset_Fehler : BOOL ; 
    Tippen_Pos : BOOL ; 
    Tippen_Neg : BOOL ; 
   END_STRUCT ; 
   Signal_Steuerwort : STRUCT  //S-0-0145
    x10 : BOOL ; 
    x11 : BOOL ; 
    x12 : BOOL ; 
    x13 : BOOL ; 
    x14 : BOOL ; 
    x15 : BOOL ; 
    x16 : BOOL ; 
    x17 : BOOL ; 
    Fahren_auf_Festanschlag : BOOL ; //S-0-0149
    Antrieb_referenzieren : BOOL ; //S-0-0148
    Refrenzbezug_loeschen : BOOL ; //S-0-0191
    x03 : BOOL ; 
    x04 : BOOL ; 
    x05 : BOOL ; 
    x06 : BOOL ; 
    x07 : BOOL ; 
   END_STRUCT ; 
   dummi : WORD ; //S-0-0000
   Ziel_Position : DINT ; //S-0-0282   - 4 NK-Stellen
   Fahr_Geschwindigkeit : DINT ; //S-0-0259   - 4 NK-Stellen
   LR_Kraft_Grenzwert : INT  := 500; //S-0-0092   - 0 NK-Stellen
  END_STRUCT ; 
  Faktor_Anpassung : STRUCT  
   Position : REAL  := 1.000000e+004; 
   Geschwindigkeit : REAL  := 1.000000e+003; 
   Drehmoment : REAL  := 1.000000e+000; 
  END_STRUCT ; 
END_VAR
VAR_TEMP
  Word_Per_Handshake : WORD ; 
  R_Fehler : INT ; 
  W_Fehler : INT ; 
END_VAR
BEGIN
NETWORK
TITLE =Kopplung an Servo-Regler - Auslesen ----------------------------
      L     #Per_Handshake; 
      T     #Word_Per_Handshake; 
      CALL "DPRD_DAT" (
           LADDR                    := #Word_Per_Handshake,
           RET_VAL                  := #R_Fehler,
           RECORD                   := #Servo_Read_Daten);
NETWORK
TITLE =Ziel-Positionen setzen -----------------------------------------
      U     #_Setze_Fahrdaten; 
      UN    #OUT_Set_Daten_OK; 
      SPBN  nSet; 
      L     #_Ziel_Position; 
      L     #Faktor_Anpassung.Position; 
      *R    ; 
      RND+  ; 
      T     #Servo_Write_Daten.Ziel_Position; 
      L     #_Geschwindigkeit; 
      L     #Faktor_Anpassung.Geschwindigkeit; 
      *R    ; 
      RND+  ; 
      T     #Servo_Write_Daten.Fahr_Geschwindigkeit; 
      L     #_Drehmoment; 
      L     #Faktor_Anpassung.Drehmoment; 
      *R    ; 
      RND+  ; 
      T     #Servo_Write_Daten.LR_Kraft_Grenzwert; 
nSet: U     #_Setze_Fahrdaten; 
      =     #OUT_Set_Daten_OK; 
NETWORK
TITLE =Status-Informationen -------------------------------------------
      U     #Servo_Read_Daten.Status_Regler.betriebsbereit_1; 
      U     #Servo_Read_Daten.Status_Regler.betriebsbereit_2; 
      UN    #Servo_Read_Daten.Status_Regler.Betriebsmodus_Fehler; 
      =     #OUT_Servo_bereit; 
NETWORK
TITLE = 
      U     #Servo_Read_Daten.Status_Regler.Referenz_OK; 
      =     #OUT_Servo_Referenz_OK; 
      U     #_Start_in_Position; 
      U     #Servo_Write_Daten.Steuern_Regler.Sollwert_Uebernahme; 
      U     #Servo_Read_Daten.Status_Regler.Sollwert_Quit; 
      U     #Servo_Read_Daten.Status_Regler.Sollwert_erreicht; 
      U     #Servo_Read_Daten.Status_Regler.Stillstand_Achse; 
      =     #OUT_Fahren_Ready; 
NETWORK
TITLE = 
      U(    ; 
      L     #Servo_Read_Daten.Diagnose_Nr; 
      L     DW#16#A0160; 
      <>D   ; 
      )     ; 
      U(    ; 
      L     #Servo_Read_Daten.Diagnose_Nr; 
      L     DW#16#A0161; 
      <>D   ; 
      )     ; 
      U(    ; 
      L     #Servo_Read_Daten.Diagnose_Nr; 
      L     DW#16#A0012; 
      <>D   ; 
      )     ; 
      U(    ; 
      L     #Servo_Read_Daten.Diagnose_Nr; 
      L     DW#16#C1300; 
      <>D   ; 
      )     ; 
      U(    ; 
      L     #Servo_Read_Daten.Diagnose_Nr; 
      L     DW#16#E8260; 
      <>D   ; 
      )     ; 
      =     #OUT_Servo_DiagnoseFehler; 
NETWORK
TITLE = 
      L     #Servo_Read_Daten.Ist_Position; 
      DTR   ; 
      L     #Faktor_Anpassung.Position; 
      /R    ; 
      T     #OUT_Ist_Position; 
NETWORK
TITLE =Steuer-Funktionen ----------------------------------------------
      U     #_Freigabe; 
      UN    #_Quit_Stoerung; 
      =     #Servo_Write_Daten.Steuern_Regler.Antrieb_Halt; 
      =     #Servo_Write_Daten.Steuern_Regler.Antriebs_Freigabe; 
      =     #Servo_Write_Daten.Steuern_Regler.Regler_Freigabe; 
NETWORK
TITLE = 
      U     #_Quit_Stoerung; 
      =     #Servo_Write_Daten.Steuern_Regler.Reset_Fehler; 
NETWORK
TITLE = 
      U     #_Ref_Fahrt; 
      U     #_Freigabe; 
      =     #Servo_Write_Daten.Signal_Steuerwort.Antrieb_referenzieren; 
NETWORK
TITLE = 
      U     #_Start_in_Position; 
      U     #_Freigabe; 
      =     #Servo_Write_Daten.Steuern_Regler.Sollwert_Uebernahme; 
NETWORK
TITLE = 
      CLR   ; 
      =     #Servo_Write_Daten.Steuern_Regler.Positioniermodus; 
      =     #Servo_Write_Daten.Steuern_Regler.Satzwechsel_Modus; 
NETWORK
TITLE = 
      U     #_Tippen_vor; 
      UN    #_Tippen_zur; 
      =     #Servo_Write_Daten.Steuern_Regler.Tippen_Pos; 
      UN    #_Tippen_vor; 
      U     #_Tippen_zur; 
      =     #Servo_Write_Daten.Steuern_Regler.Tippen_Neg; 
      O     #Servo_Write_Daten.Steuern_Regler.Tippen_Pos; 
      O     #Servo_Write_Daten.Steuern_Regler.Tippen_Neg; 
      SPBN  xTip; 
      L     #_Geschwindigkeit_Tippen; 
      L     #Faktor_Anpassung.Geschwindigkeit; 
      *R    ; 
      RND+  ; 
      T     #Servo_Write_Daten.Fahr_Geschwindigkeit; 
      L     100; 
      DTR   ; 
      L     #Faktor_Anpassung.Drehmoment; 
      *R    ; 
      RND+  ; 
      T     #Servo_Write_Daten.LR_Kraft_Grenzwert; 
xTip: NOP   0; 
NETWORK
TITLE =Kopplung an Servo-Regler - Rückschreiben -----------------------
      L     1200; 
      T     #Servo_Write_Daten.LR_Kraft_Grenzwert; 

      CALL "DPWR_DAT" (
           LADDR                    := #Word_Per_Handshake,
           RECORD                   := #Servo_Write_Daten,
           RET_VAL                  := #W_Fehler);
NETWORK
TITLE = 
END_FUNCTION_BLOCK
 
Zuviel Werbung?
-> Hier kostenlos registrieren
so jetzt habe ich das ganze so eingestellt danke larry
NUR bis jetzt war die datenlänge 2Bytes/2Bytes und mit Änderung der Signalstatus und Signalsteuerworte ging es auf 16/16--> Fehler da anscheinend in der SPS 2/2 standardmässig eingestellt ist kann mir jemand sagen wo ich das imm TIA Portal umstellen kann find es nicht :confused:
 
Im Beitrag #12 der 1. Screenshot zeigt, wie die HW-Konfiguration sein müßte.
Bei mir sind es jeweils 8 Words - das entspricht den auf Bild "Indraworks_4" zu sehenden je 16 Bytes ...

Ansonsten könntest du ja vielleicht auch mal ein paar Screenshots liefern ... :cool:

Gruß
Larry
 
Zurück
Oben