Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 2 von 6 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 52

Thema: Linearstrecke! Benötige Hilfe...

  1. #11
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Tommy843 Beitrag anzeigen
    Muss man ausser diesem Baustein nochwas programmieren was nur für den Antrieb bestimmt ist?
    Naja ... den Antrieb auf eine Position zu fahren ist ja nur ein Teil - es gehört ja sicherlich noch etwas mehr zu deinem "Aggregat".
    Du mußt also schon noch etwas tun ...

    Gruß
    Larry

  2. #12
    Tommy843 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.03.2012
    Beiträge
    147
    Danke
    27
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Naja ... den Antrieb auf eine Position zu fahren ist ja nur ein Teil - es gehört ja sicherlich noch etwas mehr zu deinem "Aggregat".
    Du mußt also schon noch etwas tun ...

    Gruß
    Larry
    Hallo Larry,

    ich würde mir gerne deinen Baustein, der ja als AWL-Quelle zur Verfügung steht in SCL umbauen. Dann hab ich's verständnistechnisch leichter, zumindest was die spätere Fehlersuche angeht! Ist das so ohne weiteres möglich?

    Gruß
    Geändert von Tommy843 (05.08.2013 um 13:32 Uhr)

  3. #13
    Tommy843 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.03.2012
    Beiträge
    147
    Danke
    27
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo, ich hoffe ihr könnt irgendwie mal kurz über meine SCL-Quelle drüber schauen. Habe den Baustein fast fertig, aber halt immernoch 11 Fehler drin. Bei den Diagnosenummern steh ich auf dem Schlauch. Weiß nicht wie man das in SCL schreibt. Da wo die Sprungbefehle waren hab ich was umgeschrieben wo ich meine es richtig gemacht zu haben. Übrigens habe ich eine 300'er CPU.
    Code:
     
     FUNCTION_BLOCK FB100
     TITLE = 'Kommunikation Rexroth'
     VERSION : '0.1'
     VAR_INPUT
       Per_Handshake : INT ; //1. Peripherie-Adresse Handshake mit Servo
       Freigabe : BOOL ; //Freigabe Servo-Achse
       Quit_Stoerung : BOOL ; //Quittierung Störung
       Referenz_Fahrt : BOOL ; //Fahr-Ablauf "Referenz-Fahrt"
       Steu_Funkt_Tippen_vor : BOOL ; //Fahren "Tippen vor"
       Steu_Funkt_Tippen_zur : BOOL ; //Fahren "Tippen zurück"
       Steu_Funkt_Geschw_Tippen : REAL ; //Geschwindigkeit Tipp-Betrieb
       Fahr_Da_Setzen : BOOL ;//Fahrdaten übernehmen
       Fahr_Da_Start_in_Pos : BOOL ; //Fahre auf Position [Fahrdaten]
       Fahr_Da_Ziel_Pos : REAL ; //- Fahrauftrag : Ziel-Position
       Fahr_Da_Geschw : REAL ; //- Fahrauftrag : Geschwindigkeit
       Fahr_Da_Drehm : 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 ; //Servo-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 : DWord ; //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
         Referenzbezug_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
     // Kopplung an Servo Regler - Auslesen
     Word_Per_Handshake:=INT_TO_WORD(Per_Handshake); 
     DPRD_DAT(LADDR:=Word_Per_Handshake,RET_VAL:=R_Fehler,RECORD:=Servo_Read_Daten)
     // Ziel Positionen setzen
    IF Fahr_Da_Setzen AND NOT OUT_Set_Daten_OK THEN
         Servo_Write_Daten.Ziel_Position:=REAL_to_DINT(Signal_Steuerwort.Ziel_Position*Faktor_Anpassung.Position);
         Servo_Write_Daten.Fahr_Geschwindigkeit:=REAL_to_DINT(Faktor_Anpassung.Geschwindigkeit*Faktor_Anpassung.Geschwindigkeit);
       Servo_Write_Daten.LR_Kraft_Grenzwert:=REAL_to_INT((INT_TO_REAL(Servo_Read_Daten.Drehmoment))*Faktor_Anpassung.Drehmoment);
         OUT_Set_Daten_OK:=true;
    END_IF;
     // Servo_Achse bereit 
     OUT_Servo_bereit:=Servo_Read_Daten.Status_Regler.betriebsbereit_1 AND
     Servo_Read_Daten.Status_Regler.betriebsbereit_2 AND NOT 
     Servo_Read_Daten.Status_Regler.Betriebsmodus_Fehler;
     // Servo-Achse in Referenz
     OUT_Servo_Referenz_OK:=Servo_Read_Daten.Status_Regler.Referenz_OK;  
     OUT_Fahren_Ready:=Fahr_Da_Start_in_Pos AND
     Servo_Write_Daten.Steuern_Regler.Sollwert_Uebernahme AND
     Servo_Read_Daten.Status_Regler.Sollwert_Quit AND 
     Servo_Read_Daten.Status_Regler.Sollwert_erreicht AND
     Servo_Read_Daten.Status_Regler.Stillstand_Achse;  
     // Fehlerdiagnose 
    IF Servo_Read_Daten.Diagnose_Nr<>DW#16#A0160 AND
     Servo_Read_Daten.Diagnose_Nr<>DW#16#A0161 AND Servo_Read_Daten.Diagnose_Nr<>DW#16#A0012 AND Servo_Read_Daten.Diagnose_Nr<>DW#16#A1300 AND Servo_Read_Daten.Diagnose_Nr<>DW#16#A8260 THEN
         OUT_Servo_DiagnoseFehler:=true;
     END_IF;
      
     // Ist Position 
     OUT_Ist_Position:=(DINT_TO_REAL(Servo_Read_Daten.Ist_Position))/Faktor_Anpassung.Position; 
     // Steuerfunktionen
     Servo_Write_Daten.Steuern_Regler.Antrieb_Halt:=Freigabe AND NOT Quit_Stoerung;
     Servo_Write_Daten.Steuern_Regler.Antriebs_Freigabe:=Freigabe AND NOT Quit_Stoerung; 
     Servo_Write_Daten.Steuern_Regler.Regler_Freigabe:=Freigabe AND NOT Quit_Stoerung; 
     // Störung quittieren
     Servo_Write_Daten.Steuern_Regler.Reset_Fehler:=Quit_Stoerung; 
     // Referenzfahrt
     Servo_Write_Daten.Signal_Steuerwort.Antrieb_referenzieren:=Referenz_Fahrt AND Freigabe; 
     // Sollwertübernahme
     Servo_Write_Daten.Steuern_Regler.Sollwert_Uebernahme:=Fahr_Da_Start_in_Pos AND Freigabe;
     // Anstatt VKE auf Null???
     Servo_Write_Daten.Steuern_Regler.Positioniermodus:=0; 
     Servo_Write_Daten.Steuern_Regler.Satzwechsel_Modus:=0;
     // Tippen vorwärts
     Servo_Write_Daten.Steuern_Regler.Tippen_Pos:=Steu_Funkt_Tippen_vor AND NOT Steu_Funkt_Tippen_zur; 
     // Tippen zurück
     Servo_Write_Daten.Steuern_Regler.Tippen_Neg:=Steu_Funkt_Tippen_zur AND NOT Steu_Funkt_Tippen_vor; 
     IF Servo_Write_Daten.Steuern_Regler.Tippen_Pos OR 
     Servo_Write_Daten.Steuern_Regler.Tippen_Neg THEN
         Faktor_Anpassung.Geschwindigkeit:=ROUND(Steu_Funkt_Geschw_Tippen*Faktor_Anpassung.Geschwindigkeit);
        Servo_Write_Daten.LR_Kraft_Grenzwert:=REAL_to_INT((DINT_TO_REAL(100))*Faktor_Anpassung.Drehmoment);
     ELSE
     Servo_Write_Daten.Fahr_Geschwindigkeit:=0;
     Servo_Write_Daten.LR_Kraft_Grenzwert:=0;
     END_IF;
     // Kopplung an Servo-Regler - Rückschreiben
     Servo_Write_Daten.LR_Kraft_Grenzwert:= 1200;
     DPWR_DAT(LADDR:=Word_Per_Handshake,RECORD:=Servo_Write_Daten,RET_VAL:=W_Fehler)
    END_FUNCTION_BLOCK
    Habe die Fehler markiert. Ich hoffe ihr findet da was...Wäre echt prima, weil so manche Fehler finde ich kurios
    Geändert von Larry Laffer (06.08.2013 um 12:33 Uhr)

  4. #14
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Hallo,
    ich habe mal in deinem Beitrag die Passagen im Code editiert und anschließend ROT markiert, von denen ich meine, dass es so nicht geht. Der Weg erschien mir jetzt einfacher.

    Im Einzelnen : -
    - einen Vergleich auf dw#16#abcdef darf man nur bei einem DWORD machen - das geht nicht bei einem DINT (in SCL). Da habe ich die Deklaration geändert.
    - den Befehl ROUND kannte ich bislang nicht - ich bin mir wegen dessen Funktion also nicht klar. Das, was du aber m.E. brauchtest war REAL_to_DINT bzw. REAL_to_INT.

    Das sollte es m.E. gewesen sein. ich habe das jetzt aber nicht selber compiliert ...
    Falls es noch Probleme gibt dann bitte Rückmeldung ...

    Gruß
    Larry

    Gruß
    Larry

  5. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    Tommy843 (06.08.2013)

  6. #15
    Tommy843 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.03.2012
    Beiträge
    147
    Danke
    27
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Ah, super, endlich Feedback!

    Ja Larry keine Ahnung, habe jetzt mit dem was du rot gemacht hast noch einmal übersetzt. Aber der Compiler meckert immer noch mit 4 Fehlern ...
    Vor allem sagt er mir auch bei dem "END_FUNCTION_BLOCK"--->Baustein nicht korrekt
    Raff ich net!

    Oder bei einem Strichpunkt nach dem End-If bei "Ziel Position setzen" kommt--->Unbekannte Anweisung
    Ich bin ratlos....
    Code:
    FUNCTION_BLOCK FB100
    TITLE = 'Kommunikation Rexroth'
    VERSION : '0.1'
    
    VAR_INPUT
      Per_Handshake : INT ; //1. Peripherie-Adresse Handshake mit Servo
      Freigabe : BOOL ; //Freigabe Servo-Achse
      Quit_Stoerung : BOOL ; //Quittierung Störung
      Referenz_Fahrt : BOOL ; //Fahr-Ablauf "Referenz-Fahrt"
      Steu_Funkt_Tippen_vor : BOOL ; //Fahren "Tippen vor"
      Steu_Funkt_Tippen_zur : BOOL ; //Fahren "Tippen zurück"
      Steu_Funkt_Geschw_Tippen : REAL ; //Geschwindigkeit Tipp-Betrieb
      Fahr_Da_Setzen : BOOL ;//Fahrdaten übernehmen
      Fahr_Da_Start_in_Pos : BOOL ; //Fahre auf Position [Fahrdaten]
      Fahr_Da_Ziel_Pos : REAL ; //- Fahrauftrag : Ziel-Position
      Fahr_Da_Geschw : REAL ; //- Fahrauftrag : Geschwindigkeit
      Fahr_Da_Drehm : 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 ; //Servo-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 : DWORD ; //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
        Referenzbezug_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
    // Kopplung an Servo Regler - Auslesen
    Word_Per_Handshake:=INT_TO_WORD(Per_Handshake); 
    DPRD_DAT(LADDR:=Word_Per_Handshake,RET_VAL:=R_Fehler,RECORD:=Servo_Read_Daten)
    
    // Ziel Positionen setzen
    IF Fahr_Da_Setzen AND NOT OUT_Set_Daten_OK THEN                                                                             <---Unbekannte Anweisung
       Servo_Write_Daten.Ziel_Position:=REAL_TO_DINT(Signal_Steuerwort.Ziel_Position*Faktor_Anpassung.Position); <---Ungültig
        Servo_Write_Daten.Fahr_Geschwindigkeit:=ROUND(Faktor_Anpassung.Geschwindigkeit*Faktor_Anpassung.Geschwindigkeit);
        Servo_Write_Daten.LR_Kraft_Grenzwert:=REAL_TO_INT(Servo_Read_Daten.Drehmoment*Faktor_Anpassung.Drehmoment);
        OUT_Set_Daten_OK:=true;
    END_IF;
    
    // Servo_Achse bereit 
    OUT_Servo_bereit:=Servo_Read_Daten.Status_Regler.betriebsbereit_1 AND
    Servo_Read_Daten.Status_Regler.betriebsbereit_2 AND NOT 
    Servo_Read_Daten.Status_Regler.Betriebsmodus_Fehler;
    
    // Servo-Achse in Referenz
    OUT_Servo_Referenz_OK:=Servo_Read_Daten.Status_Regler.Referenz_OK;  
    OUT_Fahren_Ready:=Fahr_Da_Start_in_Pos AND
    Servo_Write_Daten.Steuern_Regler.Sollwert_Uebernahme AND
    Servo_Read_Daten.Status_Regler.Sollwert_Quit AND 
    Servo_Read_Daten.Status_Regler.Sollwert_erreicht AND
    Servo_Read_Daten.Status_Regler.Stillstand_Achse;  
    
    // Fehlerdiagnose 
    IF Servo_Read_Daten.Diagnose_Nr<>DW#16#A0160 AND
    Servo_Read_Daten.Diagnose_Nr<>DW#16#A0161 AND Servo_Read_Daten.Diagnose_Nr<>DW#16#A0012 AND
    Servo_Read_Daten.Diagnose_Nr<>DW#16#A1300 AND Servo_Read_Daten.Diagnose_Nr<>DW#16#A8260 THEN
        OUT_Servo_DiagnoseFehler:=true;
    END_IF;                                                                                                                                       <----Unbekannte Anweisung
     
    // Ist Position 
    OUT_Ist_Position:=(DINT_TO_REAL(Servo_Read_Daten.Ist_Position))/Faktor_Anpassung.Position; 
    // Steuerfunktionen
    Servo_Write_Daten.Steuern_Regler.Antrieb_Halt:=Freigabe AND NOT Quit_Stoerung;
    Servo_Write_Daten.Steuern_Regler.Antriebs_Freigabe:=Freigabe AND NOT Quit_Stoerung; 
    Servo_Write_Daten.Steuern_Regler.Regler_Freigabe:=Freigabe AND NOT Quit_Stoerung; 
    // Störung quittieren
    Servo_Write_Daten.Steuern_Regler.Reset_Fehler:=Quit_Stoerung; 
    // Referenzfahrt
    Servo_Write_Daten.Signal_Steuerwort.Antrieb_referenzieren:=Referenz_Fahrt AND Freigabe; 
    // Sollwertübernahme
    Servo_Write_Daten.Steuern_Regler.Sollwert_Uebernahme:=Fahr_Da_Start_in_Pos AND Freigabe;
    // Anstatt VKE auf Null???
    Servo_Write_Daten.Steuern_Regler.Positioniermodus:=0; 
    Servo_Write_Daten.Steuern_Regler.Satzwechsel_Modus:=0;
    // Tippen vorwärts
    Servo_Write_Daten.Steuern_Regler.Tippen_Pos:=Steu_Funkt_Tippen_vor AND NOT Steu_Funkt_Tippen_zur; 
    // Tippen zurück
    Servo_Write_Daten.Steuern_Regler.Tippen_Neg:=Steu_Funkt_Tippen_zur AND NOT Steu_Funkt_Tippen_vor; 
    IF Servo_Write_Daten.Steuern_Regler.Tippen_Pos OR 
    Servo_Write_Daten.Steuern_Regler.Tippen_Neg THEN
        Faktor_Anpassung.Geschwindigkeit:=ROUND(Steu_Funkt_Geschw_Tippen*Faktor_Anpassung.Geschwindigkeit);
        Servo_Write_Daten.LR_Kraft_Grenzwert:=REAL_TO_INT((DINT_TO_REAL(100))*Faktor_Anpassung.Drehmoment);
    ELSE
    Servo_Write_Daten.Fahr_Geschwindigkeit:=0;
    Servo_Write_Daten.LR_Kraft_Grenzwert:=0;
    END_IF;
    // Kopplung an Servo-Regler - Rückschreiben
    Servo_Write_Daten.LR_Kraft_Grenzwert:= 1200;
    
    DPWR_DAT(LADDR:=Word_Per_Handshake,RECORD:=Servo_Write_Daten,RET_VAL:=W_Fehler)
    
    END_FUNCTION_BLOCK                                                                                                    <----Baustein nicht korrekt
    Also der erste und zweite Fehler, da kann ich vielleicht irgendwo einen Gedankenfehler haben, aber die andern beiden??? Kein Plan
    Aber trotzdem vielen Dank Herr Laffer!
    Geändert von Tommy843 (06.08.2013 um 13:13 Uhr)

  7. #16
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Hallo,
    der Fehler entsteht jetzt eine Zeile vorher : DPRD_DAT möchte am Ende auch ein Semikolon stehen haben ...
    Für END_Function_Block interessiert er sich wahrscheinlich auch deswegen nicht, weil noch eine Sequenz offen ist ...

    Gruß
    Larry

  8. #17
    Tommy843 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.03.2012
    Beiträge
    147
    Danke
    27
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Hallo,
    der Fehler entsteht jetzt eine Zeile vorher : DPRD_DAT möchte am Ende auch ein Semikolon stehen haben ...
    Für END_Function_Block interessiert er sich wahrscheinlich auch deswegen nicht, weil noch eine Sequenz offen ist ...

    Gruß
    Larry
    Sorry, aber die Möglichkeit hatte ich schon gestern durch. Weil jetzt zeigt er mir "ungültiger oder fehlender Funktionstyp" an.
    Es sei denn es wäre jetzt wirklich was an den Bausteinaufrufen falsch. Weil jetzt sind's nur noch 2 Fehler.
    Jeweils bei DPRD_DAT und DPWR_DAT!

    Gruß

  9. #18
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Sorry ... ist mir glatt durchgegangen ...
    Beides sind Funktionen, die einen Return-Wert zurückliefern, den du (in SCL) abfragen mußt :
    Code:
    myResult := DPWR_DAT(LADDR:=Word_Per_Handshake,RECORD:=Servo_Write_Daten,RET_VAL:=W_Fehler) ;
    // myResult ist vom Typ INT
    Versuch es mal so ...

    Gruß
    Larry

  10. #19
    Tommy843 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.03.2012
    Beiträge
    147
    Danke
    27
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Sorry ... ist mir glatt durchgegangen ...
    Beides sind Funktionen, die einen Return-Wert zurückliefern, den du (in SCL) abfragen mußt :
    Code:
    myResult := DPWR_DAT(LADDR:=Word_Per_Handshake,RECORD:=Servo_Write_Daten,RET_VAL:=W_Fehler) ;
    // myResult ist vom Typ INT
    Versuch es mal so ...

    Gruß
    Larry
    Ich glaube es nicht, 0 Fehler ...
    Vielen herzlichen Dank!

  11. #20
    Tommy843 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.03.2012
    Beiträge
    147
    Danke
    27
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Naja ... den Antrieb auf eine Position zu fahren ist ja nur ein Teil - es gehört ja sicherlich noch etwas mehr zu deinem "Aggregat".
    Du mußt also schon noch etwas tun ...

    Gruß
    Larry
    Es ging mir jetzt primär nur um diesen einen Antrieb. Ich weiß nämlich nicht wie schnell sich verdrahtungstechnisch die Gelegenheit bietet mit Indraworks weiter zu machen. Genügt dieser eine Baustein um den Schlitten "schnell" auf EINE Position zu fahren? Mein unerfahrenes Auge sagt mir nämlich anhand von dem was da alles berechnet wird dass das funktionieren müsste. Da ist ja Geschwindigkeit, Drehmoment und Grenzwerttechnisch alles drin.

    Grüße

Ähnliche Themen

  1. Benötige Hilfe Step 7
    Von Thommy1987 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 06.10.2011, 07:27
  2. Benötige eure Hilfe!
    Von Pers im Forum Stammtisch
    Antworten: 10
    Letzter Beitrag: 08.02.2011, 21:25
  3. Analogauswertung !! Benötige Hilfe!!
    Von INST im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 20.03.2007, 09:54
  4. Analogauswertung !!! Benötige Hilfe !!
    Von INST im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 01.09.2006, 09:50
  5. Benötige Hilfe
    Von rubberduck im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 11.02.2006, 11:36

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •