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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 20 von 20

Thema: zyklische Krafteinwirkung in SFC oder ST?

  1. #11
    alpha.man007 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.01.2011
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Welchen Compiler benutzt du denn BerndAllgäu, bei dem das ganze fehlerfrei läuft? Ich benutze den Compiler der Firma Beckhoff. Aber ich bekomme immer noch reichlich viele Fehler-Meldungen.

    Und mainzelmann, mit
    PARA.X1:= 30 ms;
    PARA.X2:= 70 ms;
    PARA.X3:= 130 ms;
    PARA.X4:= 250 ms; {Wie kann man diesen Part richtig notieren?}
    PARA.X5:= 450 ms;
    PARA.X6:= 600 ms;
    PARA.X7:= 1000 ms;

    habe ich gemeint, ob ich diese 7 Zeilen in die SPS einfach so eintippen kann? Also, ob die Syntax Probleme bereiten würde?

  2. #12
    Registriert seit
    19.05.2008
    Beiträge
    648
    Danke
    117
    Erhielt 136 Danke für 105 Beiträge

    Standard

    Zitat Zitat von alpha.man007 Beitrag anzeigen
    Welchen Compiler benutzt du denn BerndAllgäu, bei dem das ganze fehlerfrei läuft? Ich benutze den Compiler der Firma Beckhoff. Aber ich bekomme immer noch reichlich viele Fehler-Meldungen.

    Und mainzelmann, mit
    PARA.X1:= 30 ms;
    PARA.X2:= 70 ms;
    PARA.X3:= 130 ms;
    PARA.X4:= 250 ms; {Wie kann man diesen Part richtig notieren?}
    PARA.X5:= 450 ms;
    PARA.X6:= 600 ms;
    PARA.X7:= 1000 ms;

    habe ich gemeint, ob ich diese 7 Zeilen in die SPS einfach so eintippen kann? Also, ob die Syntax Probleme bereiten würde?
    Zitat Zitat von BerndAllgäu Beitrag anzeigen
    Hier mal meine Version...
    für den Compiler ist sie mal Fehlerfrei...

    TYPE TPARA :
    STRUCT
    X1:TIME:= t#0.03S;
    X2: TIME:= t#0.07s;
    X3: TIME:= t#0.13s;
    X4: TIME:= t#0.25s;
    X5: TIME:= t#0.45s;
    X6: TIME:= t#0.60S;
    X7: TIME:= t#1S;

    END_STRUCT
    END_TYPE
    ...
    Gibt es hier keine blinkende Schrift wie in Word?
    Zitieren Zitieren Kleines Suchspiel...  

  3. #13
    Registriert seit
    17.08.2010
    Ort
    Blaichach
    Beiträge
    84
    Danke
    1
    Erhielt 9 Danke für 9 Beiträge

    Standard

    Zitat Zitat von alpha.man007 Beitrag anzeigen
    Welchen Compiler benutzt du denn BerndAllgäu, bei dem das ganze fehlerfrei läuft? Ich benutze den Compiler der Firma Beckhoff. Aber ich bekomme immer noch reichlich viele Fehler-Meldungen.

    Und mainzelmann, mit
    PARA.X1:= 30 ms;
    PARA.X2:= 70 ms;
    PARA.X3:= 130 ms;
    PARA.X4:= 250 ms; {Wie kann man diesen Part richtig notieren?}
    PARA.X5:= 450 ms;
    PARA.X6:= 600 ms;
    PARA.X7:= 1000 ms;

    habe ich gemeint, ob ich diese 7 Zeilen in die SPS einfach so eintippen kann? Also, ob die Syntax Probleme bereiten würde?
    auch Beckhoff... aber jeder CodeSys - Compiler kann das so...

    Gruß Bernd
    Real programmers don’t comment their code. It was hard to write, it should be hard to understand.

  4. #14
    Registriert seit
    19.05.2008
    Beiträge
    648
    Danke
    117
    Erhielt 136 Danke für 105 Beiträge

    Standard

    Hallo Bernd,

    ich arbeite mit Beckhoff. Bei mir funktioniert die Schreibweise „PARA.X1:= 30 ms;“ definitiv nicht. Bei CoDeSys soll das wirklich möglich sein?


    Hallo alpha.man007,

    das Beispiel von Bernd funktioniert doch anscheinend schon. Warum vergleichst du nicht, was deine Variante von seiner unterscheidet?

    Zitat Zitat von alpha.man007 Beitrag anzeigen
    Ich benutze den Compiler der Firma Beckhoff. Aber ich bekomme immer noch reichlich viele Fehler-Meldungen.
    Die vielen Fehlermeldungen sind nicht da, um dich zu ärgern, sondern zum Aufzeigen von Fehlern. Meistens macht der Text der Fehlermeldung sogar Sinn…

    Gruß
    Chräshe

  5. #15
    alpha.man007 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.01.2011
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Chräshe, bei dem Programm-Code von BerndAllgäu, den ich weiter unten nochmal eingefügt habe, bekomme ich viele Fehler. Es fängt schon mit der ersten Zeile bei TYPE an, wo steht, dass dies kein korrekter Anfang für eine ST-Anweisung sei. Oder es wird über die fehlgeschlagenen Variablendeklarationen von X1 bis X7 sowie über SchleifenZaehler gemeckert. Du sagst, dass das Programm von BerndAllgäu bei dir geklappt hat, d.h. dass ich vielleicht als ein Anfänger Fehler bei der Anwendung diese Programmes mache, denn wenn ich ein neues Projekt öffne, wähle ich als Zielplattform den PC aus, dann Programm als Bausteintyp, Sprache ST mit dem Bausteinnamen "Kraft". Und schließlich füge ich den Programm-Code ein. Vergesse ich dabei irgendwas Wichtiges?
    Ach übrigens, es tauchen immer wieder Fenster zur Variablen-Deklaration von z.B. X1 bis X7 auf. Dann deklariere ich den Datentyp auf TIME und gebe dem Ganzen einen Initialwert. Bei X4 mit 0.25 s z.B. tippe ich in das Feld Initialwert die Zahl 0.25 und meine Frage ist, ob dies richtig ist, oder doch falsch?

    TYPE
    TPARA : STRUCT
    X1:TIME:= t#0.03s;
    X2: TIME:= t#0.07s;
    X3: TIME:= t#0.13s;
    X4: TIME:= t#0.25s;
    X5: TIME:= t#0.45s;
    X6: TIME:= t#0.60s;
    X7: TIME:= t#1S;

    END_STRUCT
    END_TYPE

    FUNCTION Kraft : REAL
    VAR_INPUT
    X:REAL;
    PARA:TPARA;
    END_VAR

    VAR
    SchleifenZaehler : INT := 1;
    END_VAR


    IF SchleifenZaehler<1
    THEN
    SchleifenZaehler:=1;
    END_IF


    CASE SchleifenZaehler OF
    1:
    IF X > TIME_TO_REAL(PARA.X1) THEN
    Kraft:= -382000000/3 * EXPT(X,3) + 5.73 * EXPT(10,6) * EXPT(X,2) + 16;
    SchleifenZaehler := 2 ;
    END_IF;
    2:
    IF X > TIME_TO_REAL(PARA.X2) THEN
    Kraft:= (2.225 * EXPT(10,7) * EXPT(x,3) - 3.3375 * EXPT(10,6) * EXPT(x,2) + 140175 * x + 84.75);
    SchleifenZaehler := 3 ;
    END_IF;
    3:
    IF X > TIME_TO_REAL(PARA.X3) THEN
    Kraft:= (-118750000/9 * EXPT(x,3) + 11875000/3 * EXPT(x,2) - 1080625/3 * x + 103675/9);
    SchleifenZaehler := 4 ;
    END_IF;
    4:
    IF X > TIME_TO_REAL(PARA.X4) THEN
    Kraft:= (55062500/27 * EXPT(x,3) - 10461875/9 * EXPT(x,2) + 7158125 * x - 3492359/432);
    SchleifenZaehler := 5 ;
    END_IF;
    5:
    IF X > TIME_TO_REAL(PARA.X5) THEN
    Kraft:= (-398750 * EXPT(x,3) + 418687.5 * EXPT(x,2) - 134578.125 * x + 465441/32);
    SchleifenZaehler := 6 ;
    END_IF;
    6:
    IF X > TIME_TO_REAL(PARA.X6) THEN
    Kraft:= 12080000/9 * EXPT(x,3) - 2.114 * EXPT(10,6) * EXPT(x,2) + 1.0872 * EXPT(10,6) * x - 181032;
    SchleifenZaehler := 7 ;
    END_IF;
    7:
    IF X > TIME_TO_REAL(PARA.X7) THEN
    Kraft:= 168;
    SchleifenZaehler := 0 ;
    END_IF;
    END_CASE

    Gruß
    alpha.man007

  6. #16
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.402 Danke für 2.001 Beiträge

    Standard

    Hallo,
    wenn das dein kompletter Code ist ... dann :
    Zitat Zitat von Larry Laffer Beitrag anzeigen
    End_Function schreibt man am Ende der Funktion ....
    ... also hinter End_Case.

    Ach ja ... und bei mir würde vor dem 1. Befehl also "IF SchleifenZaehler<1" ein BEGIN stehen - ich programmiere allerdings auch in SCL - kann ja sein, dass da da vollkommen anders ist ...
    Geändert von Larry Laffer (02.02.2011 um 07:25 Uhr)

  7. #17
    Registriert seit
    17.08.2010
    Ort
    Blaichach
    Beiträge
    84
    Danke
    1
    Erhielt 9 Danke für 9 Beiträge

    Standard

    Zitat Zitat von alpha.man007 Beitrag anzeigen
    Hallo Chräshe, bei dem Programm-Code von BerndAllgäu, den ich weiter unten nochmal eingefügt habe, bekomme ich viele Fehler. Es fängt schon mit der ersten Zeile bei TYPE an, wo steht, dass dies kein korrekter Anfang für eine ST-Anweisung sei. Oder es wird über die fehlgeschlagenen Variablendeklarationen von X1 bis X7 sowie über SchleifenZaehler gemeckert. Du sagst, dass das Programm von BerndAllgäu bei dir geklappt hat, d.h. dass ich vielleicht als ein Anfänger Fehler bei der Anwendung diese Programmes mache, denn wenn ich ein neues Projekt öffne, wähle ich als Zielplattform den PC aus, dann Programm als Bausteintyp, Sprache ST mit dem Bausteinnamen "Kraft". Und schließlich füge ich den Programm-Code ein. Vergesse ich dabei irgendwas Wichtiges?
    Ach übrigens, es tauchen immer wieder Fenster zur Variablen-Deklaration von z.B. X1 bis X7 auf. Dann deklariere ich den Datentyp auf TIME und gebe dem Ganzen einen Initialwert. Bei X4 mit 0.25 s z.B. tippe ich in das Feld Initialwert die Zahl 0.25 und meine Frage ist, ob dies richtig ist, oder doch falsch?
    Ich habe ein fach alle relevanten programmschnipsel zusammen kopiert - du mußt es schon richtig einfügen...

    Dieser Teil ist eine Struktur und muß demzufolge zu den Strukturen.

    Zitat Zitat von alpha.man007 Beitrag anzeigen
    TYPE
    TPARA : STRUCT
    X1:TIME:= t#0.03s;
    X2: TIME:= t#0.07s;
    X3: TIME:= t#0.13s;
    X4: TIME:= t#0.25s;
    X5: TIME:= t#0.45s;
    X6: TIME:= t#0.60s;
    X7: TIME:= t#1S;

    END_STRUCT
    END_TYPE

    Das ist der deklarationsteil der Funktion (oberes Fenster)

    Zitat Zitat von alpha.man007 Beitrag anzeigen
    FUNCTION Kraft : REAL
    VAR_INPUT
    X:REAL;
    PARA:TPARA;
    END_VAR

    VAR
    SchleifenZaehler : INT := 1;
    END_VAR

    Das ist der eigenttliche Programmcode.... (unteres Fenster)

    Zitat Zitat von alpha.man007 Beitrag anzeigen

    IF SchleifenZaehler<1
    THEN
    SchleifenZaehler:=1;
    END_IF


    CASE SchleifenZaehler OF
    1:
    IF X > TIME_TO_REAL(PARA.X1) THEN
    Kraft:= -382000000/3 * EXPT(X,3) + 5.73 * EXPT(10,6) * EXPT(X,2) + 16;
    SchleifenZaehler := 2 ;
    END_IF;
    2:
    IF X > TIME_TO_REAL(PARA.X2) THEN
    Kraft:= (2.225 * EXPT(10,7) * EXPT(x,3) - 3.3375 * EXPT(10,6) * EXPT(x,2) + 140175 * x + 84.75);
    SchleifenZaehler := 3 ;
    END_IF;
    3:
    IF X > TIME_TO_REAL(PARA.X3) THEN
    Kraft:= (-118750000/9 * EXPT(x,3) + 11875000/3 * EXPT(x,2) - 1080625/3 * x + 103675/9);
    SchleifenZaehler := 4 ;
    END_IF;
    4:
    IF X > TIME_TO_REAL(PARA.X4) THEN
    Kraft:= (55062500/27 * EXPT(x,3) - 10461875/9 * EXPT(x,2) + 7158125 * x - 3492359/432);
    SchleifenZaehler := 5 ;
    END_IF;
    5:
    IF X > TIME_TO_REAL(PARA.X5) THEN
    Kraft:= (-398750 * EXPT(x,3) + 418687.5 * EXPT(x,2) - 134578.125 * x + 465441/32);
    SchleifenZaehler := 6 ;
    END_IF;
    6:
    IF X > TIME_TO_REAL(PARA.X6) THEN
    Kraft:= 12080000/9 * EXPT(x,3) - 2.114 * EXPT(10,6) * EXPT(x,2) + 1.0872 * EXPT(10,6) * x - 181032;
    SchleifenZaehler := 7 ;
    END_IF;
    7:
    IF X > TIME_TO_REAL(PARA.X7) THEN
    Kraft:= 168;
    SchleifenZaehler := 0 ;
    END_IF;
    END_CASE

    Gruß
    alpha.man007

    Denke das kann Dir helfen...


    Gruß Bernd
    Angehängte Dateien Angehängte Dateien
    Real programmers don’t comment their code. It was hard to write, it should be hard to understand.

  8. #18
    alpha.man007 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.01.2011
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo BerndAllgäu, ich kann die Datei nicht mit TwinCat öffnen. Mit welchem Programm kann man die Datei öffnen?



    Gruß alpha.man007

  9. #19
    alpha.man007 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.01.2011
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Leute,

    Kann mir einer bitte Schritt für Schritt bei der Eingabe des Quelltextes mit Beachtung der Syntax helfen? Irgendwo gibt es da einen Haken, den ich beim besten Willen nicht erkenne.
    Muss ich die Variablen wie X1 z.B. außerhalb vom Eingabefenster deklarieren oder doch innerhalb davon?

  10. #20
    Registriert seit
    17.08.2010
    Ort
    Blaichach
    Beiträge
    84
    Danke
    1
    Erhielt 9 Danke für 9 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Die Datei kannst du über die Importfunktion von TwinCat öffnen. Am Besten in ein leeres Projekt.

    Gruß Bernd
    Real programmers don’t comment their code. It was hard to write, it should be hard to understand.

Ähnliche Themen

  1. NOVRAM-Klemme EL6080 - Zyklische Prozessdaten
    Von StructuredTrash im Forum CODESYS und IEC61131
    Antworten: 5
    Letzter Beitrag: 01.01.2012, 19:33
  2. Zyklische Aufgabe WinCC
    Von SPSSchlapf im Forum HMI
    Antworten: 1
    Letzter Beitrag: 10.01.2011, 09:41
  3. OB35 und zyklische Bearbeitung
    Von hank12 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 28.06.2009, 19:18
  4. Antworten: 15
    Letzter Beitrag: 20.05.2008, 21:23
  5. Zyklische Speicherung von Daten in der S7 Steuerung
    Von rene.schnitzeler im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 26.04.2007, 12:58

Lesezeichen

Berechtigungen

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