zyklische Krafteinwirkung in SFC oder ST?

alpha.man007

Level-1
Beiträge
7
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo an alle Forum-Mitglieder,

ich soll 7 Kraftgleichungen realisieren, die fortlaufend innerhalb eines Zyklusses von einer Sekunde ablaufen und sich dann wieder auf dieselbe Weise wiederholen sollen. Die 7 Partial-Funktionen sind in der Word-Datei "SPS in ST" zu finden. Bin mir nicht sicher, welche Sprache ich für diese Art von Aufgabe benutzen muss.
Bei der SFC-Variante überlege ich mir, dass ich je nach Beginn eines Zyklusschrittes die entsprechende Kraftfunktion "aktiviere" bzw. setze, aber ich weiß nicht wie das gehen soll, weil mein doch eigentlcih nur boolsche Variablen setzen/rücksetzen kann und keine Funktionen mit Real-Anteil am Ausgang Y oder? Wenn dies funktionieren würde, wäre schonmal der Großteil erledigt.
Bei der ST-Variante dagegen weiß ich nicht wie ich nach Ablauf des ersten Zyklusses von einer Sekunde den Zyklus wieder von Neuem beginnen lassen soll.
Jede noch so kleine Hilfe ist bei mir gerne gesehen.

Mfg
alpha.man007
 

Anhänge

  • SPS in SFC.doc
    36,5 KB · Aufrufe: 16
  • SPS in ST.doc
    36,5 KB · Aufrufe: 16
Wenn du in ST eine Schrittkette realisieren willst so geht das zum Beispiel mit einer Hilfs-Variablen - der Schrittzähler. das könnte dann in INT sein, den du von Schritt zu Schritt hochzählst und nach dem letzten Schritt wieder auf 0 bringst. Jetzt könnte dann deine Schrittkette ein CASE-Konstrukt werden - es geht aber genauso mit IF .. THEN - ganz wie du es haben willst.

Code:
Select Case Schleifenzähler
   case 0:
      if T1 then
         // tue was zu tun ist
         Schleifenzähler := 1 ;
      end_if ;
   case 1:
      if T2 then
         // tue was zu tun ist
         Schleifenzähler := 2 ;
      end_if ;
 
    // usw.
 
end_select ;
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, danke für die Hilfe.
Aber funktioniert diese Schrittkette wirklich nach Ablauf der 1. Sekunde?


Ich habe mal versucht deinen Vorschlag eins zu eins umzusetzen:

TYPE
TPARA:STRUCT
X1:TIME:= #0.03s;
X2: TIME:= #0.07s;
X3: TIME:= #0.13s;
X4: TIME:= #0.25s;
X5: TIME:= #0.45s;
X6: TIME:= #0.60s;
END_STRUCT;
END_TYPE

VAR
Y AT %QW1.7 :REAL;
END_VAR
FUNCTION KRAFT:REAL
VAR_INPUT
X:REAL;
PARA:TPARA;
END_VAR
END_FUNCTION

SELECT CASE Schleifenzähler
CASE 1:
IF X ≤ PARA.X1 THEN
Y:= (-382000000/3 * X^3 + 5,73 * 10^6 * X^2 + 168);
SCHLEIFENZAEHLER := 1 ;
END_IF;
CASE 2:
IF X ≤ PARA.X2 THEN
Y:= (2,225 * 10^7 * x^3 - 3,3375 * 10^6 * x^2 + 140175 * x + 84,75);
SCHLEIFENZAEHLER := 1 ;
END_IF;
CASE 3:
IF X ≤ PARA.X3 THEN
Y:= (-118750000/9 * x^3 + 11875000/3 *x^2 - 1080625/3 * x + 103675/9);
SCHLEIFENZAEHLER := 1 ;
END_IF;
CASE 4:
IF X ≤ PARA.X4 THEN
Y:= (55062500/27 * x^3 - 10461875/9 * x^2 + 7158125 * x - 3492359/432);
SCHLEIFENZAEHLER := 1 ;
END_IF;
CASE 5:
IF X ≤ PARA.X5 THEN
Y:= (-398750 * x^3 + 418687,5 * x^2 - 134578,125 * x + 465441/32);
SCHLEIFENZAEHLER := 1 ;
END_IF;
CASE 6:
IF X ≤ PARA.X6 THEN
Y:= (12080000/9 * x^3 - 2,114*10^6 * x^2 + 1,0872 * 10^6 * x – 181032);
SCHLEIFENZAEHLER := 1 ;
END_IF;
CASE 7:
IF X ≤ PARA.X7 THEN
Y:= 168;
SCHLEIFENZAEHLER := 1 ;
END_IF;
END_SELECT ;


Im Programm kommen dann leider viele Fehler-Meldungen vor. Kannst du mir dabei behilflich sein, diese Fehler nach und nach zu korrigieren? Leider bin ich ein Anfänger beim Programmieren in der ST-Sprache.
 
Hallo,
was mir hier gleich so auffällt :
- du vergleichst einen REAL mit einer TIME
- du erhöhst den Schleifenzähler nicht
- ich glaube, ST mag genauso wie SCL keine Umlaute ("Schleifenzähler") bei Variablen-Namen
- x^3 schreibt man m.E. x**3
- ich weiß jetzt nicht, ob man einer STRUCT-Definition schon Werte zuweisen darf - m.E. nicht ...
- Es sieht IMMER schöner aus, wenn mit Einrückungen programmiert wird.
- End_Function schreibt man am Ende der Funktion und nicht am Ende der Deklaration.

Berichtige das jetzt mal und dann schaun wir weiter.
Ach ja ... in ST gibt es m.W. auf ein Äquivalent zu "F1"

Gruß
Larry
 
Der Syntax einer CASE Anweisung ist nicht
Code:
SELECT CASE <Variable>
CASE 0: <Anweisung>
CASE 1: <Anweisung>
END_SELECT
sondern:
Code:
CASE <Variable> OF
0: <Anweisung>
1: <Anweisung>
END_CASE
Außerdem ist die Variable für den "Schleifenzähler" (für das bessere Verständnis eher "Schrittnummer") am Anfang typischerweise = 0. Dein Quellcode prüft aber im ersten Schritt auf 1..

Ach ja, du solltest natürlich auch noch die Variable für die Schrittnummer erhöhen, bis jetzt setzt du sie in jedem Schritt auf 1
 
Zuletzt bearbeitet:
So dann füge ich erst einmal den bisherigen Stand ein:

TYPE
TPARA: STRUCT
X1: TIME;
X2: TIME;
X3: TIME;
X4: TIME;
X5: TIME;
X6: TIME;
X7: TIME;
END_STRUCT;
END_TYPE

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;

VAR
Y AT %QW1.7 :REAL;
END_VAR
FUNCTION KRAFT:REAL
VAR_INPUT
X:REAL;
PARA:TPARA;
END_VAR
END_FUNCTION

CASE SCHLEIFENZAEHLER OF
0:
IF X <= PARA.X1 THEN
Y:= (-382000000/3 * X**3 + 5,73 * 10^6 * X**2 + 16);
SCHLEIFENZAEHLER := 1 ;
END_IF;
1:
IF X <= PARA.X2 THEN
Y:= (2,225 * 10^7 * x**3 - 3,3375 * 10^6 * x**2 + 140175 * x + 84,75);
SCHLEIFENZAEHLER := 2 ;
END_IF;
2:
IF X <= PARA.X3 THEN
Y:= (-118750000/9 * x**3 + 11875000/3 *x**2 - 1080625/3 * x + 103675/9);
SCHLEIFENZAEHLER := 3 ;
END_IF;
3:
IF X <= PARA.X4 THEN
Y:= (55062500/27 * x**3 - 10461875/9 * x**2 + 7158125 * x - 3492359/432);
SCHLEIFENZAEHLER := 4 ;
END_IF;
4:
IF X <= PARA.X5 THEN
Y:= (-398750 * x**3 + 418687,5 * x**2 - 134578,125 * x + 465441/32);
SCHLEIFENZAEHLER := 5 ;
END_IF;
5:
IF X <= PARA.X6 THEN
Y:= (12080000/9 * x**3 - 2,114*10^6 * x**2 + 1,0872 * 10^6 * x - 181032);
SCHLEIFENZAEHLER := 6 ;
END_IF;
6:
IF X <= PARA.X7 THEN
Y:= 168;
SCHLEIFENZAEHLER := 7 ;
END_IF;
END_CASE ;


Larry Laffer, du sagst:"du vergleichst einen REAL mit einer TIME."

REAL deswegen, weil der Ausgang aus einer Zahl mit Nahkommastellen bestehen kann. Und TIME, weil die x-Achse von der Zeit beeinflusst ist. Sobald dis SPS startet, soll der interne Zeitgeber des deklarierten Bausteines die verstrichene Zeit als Maßstab für den realen Ausgang Y nehmen. Aber sorry war mein Fehler, dass ich den Baustein falsch gezeichnet habe. Habe den richtigen nun im Anhang eingefügt.

Außerdem sagst du:"End_Function schreibt man am Ende der Funktion und nicht am Ende der Deklaration." Aber ich glaube das habe ich doch, oder?


Ansonsten erstmal vielen Dank.
 

Anhänge

  • Baustein.png
    Baustein.png
    8 KB · Aufrufe: 3
Ich bin jetzt zu faul zum Zitieren ...

End_Function komt ganz ans Ende - also noch hinter den End_Select.
Die Zuweisung der Werte Para.X? kommt vor den Case ... of und hinter den Begin ... wo steht der übrigens ?

Übrigens ... wenn du Programm-Code einstellst dann sieht das schöner mit den Code-Tags (oder dem #-Button oben im Fenster) aus ...

Was sagt dein Compiler sonst ?

Gruß
Larry

Ach noch etwas :
Var - End_Var kommt natürlich auch IN die Function und nicht außerhalb - nur die Struct Type darf DRAUSSEN bleiben ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
PARA.X4:= 250 ms; {Wie kann man diesen Part richtig notieren?}
Im ST:
Code:
PARA.X4:= T#250ms;
Weiß nicht, obs im SCL genau so ist, evt. statt T#250ms TIME#250ms?

Aber trotzdem wirst du nicht deine Eingangsvariable X vom Typ REAL mit einer Variable vom Typ TIME vergleichen können. X muss auch vom Typ TIME sein.
 
Zuletzt bearbeitet:
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

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



Hab mal noch statt "Y" den Rückgabewert der Funktionbenutzt... ob sinn macht weiß ich nicht... *g*

Gruß Bernd
 
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?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kleines Suchspiel...

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?

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? :rolleyes:
 
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
 
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? :confused:


Hallo alpha.man007,

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

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… :rolleyes:

Gruß
Chräshe
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
Hallo,
wenn das dein kompletter Code ist ... dann :
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 ... ;)
 
Zuletzt bearbeitet:
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.

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)

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

VAR
SchleifenZaehler : INT := 1;
END_VAR


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


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
 

Anhänge

  • SPS_FORUM_BSP.zip
    726 Bytes · Aufrufe: 4
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.:confused:
Muss ich die Variablen wie X1 z.B. außerhalb vom Eingabefenster deklarieren oder doch innerhalb davon?
 
Zurück
Oben