Christian_1
Level-1
- Beiträge
- 4
- Reaktionspunkte
- 0
L 100
L #Foerderleistung
-I
L 3 // Pausenzeit in sec
ITB
L W#16#2000 // Timer in sec
OW
T #Pausenzeit
Also brauchst du einen Datenbaustein in dem du pro Förderleistung die Pausezeit hinterlegst.Die Daten sollen nach der gewünschten Förderleistung durchsucht werden um dann bei Übereinstimmung die entsprechende Pausenzeit auszugeben.
L #Förderleistung
L 2 // da Werte in der Tabelle Integer
*I
SLW 3
LAR1
AUF DB "Pausezeiten"
L DBW[AR1,P#0.0]
T #AktuellePausezeit
FUNCTION FC 152 : VOID
TITLE =Skalierung von 10 Abschnitten
VERSION : 0.1
VAR_INPUT
IN : REAL ; //Eingangsvariable
X1 : REAL ; //Grenze 1 der Eingangsvariablen
Y1 : REAL ; //Grenze 1 der Ausgangsvariablen
X2 : REAL ; //Grenze 2 der Eingangsvariablen
Y2 : REAL ; //Grenze 2 der Ausgangsvariablen
X3 : REAL ; //Grenze 3 der Eingangsvariablen
Y3 : REAL ; //Grenze 3 der Ausgangsvariablen
X4 : REAL ; //Grenze 4 der Eingangsvariablen
Y4 : REAL ; //Grenze 4 der Ausgangsvariablen
X5 : REAL ; //Grenze 5 der Eingangsvariablen
Y5 : REAL ; //Grenze 5 der Ausgangsvariablen
X6 : REAL ; //Grenze 6 der Eingangsvariablen
Y6 : REAL ; //Grenze 6 der Ausgangsvariablen
X7 : REAL ; //Grenze 7 der Eingangsvariablen
Y7 : REAL ; //Grenze 7 der Ausgangsvariablen
X8 : REAL ; //Grenze 8 der Eingangsvariablen
Y8 : REAL ; //Grenze 8 der Ausgangsvariablen
X9 : REAL ; //Grenze 9 der Eingangsvariablen
Y9 : REAL ; //Grenze 9 der Ausgangsvariablen
X10 : REAL ; //Grenze 10 der Eingangsvariablen
Y10 : REAL ; //Grenze 10 der Ausgangsvariablen
X11 : REAL ; //Grenze 11 der Eingangsvariablen
Y11 : REAL ; //Grenze 11 der Ausgangsvariablen
END_VAR
VAR_OUTPUT
OUT : REAL ; //Ausgangsvariable
END_VAR
VAR_TEMP
X1_FC153 : REAL ; //untere Grenze der Eingangsvariablen
X2_FC153 : REAL ; //obere Grenze der Eingangsvariablen
Y1_FC153 : REAL ; //untere Grenze der Ausgangsvariablen
Y2_FC153 : REAL ; //obere Grenze der Ausgangsvariablen
PAFE_FC153 : BOOL ; //Parametrierfehler X1=X2
IN_X1 : BOOL ; //Eingangsvariable < X1
IN_X11 : BOOL ; //Eingangsvariable >= X11
END_VAR
BEGIN
NETWORK
TITLE =Eingangsvariable < X1 ?
L #IN;
L #X1;
<R ;
= L 17.0;
U L 17.0;
SPBNB _001;
L #Y1;
T #OUT;
_001: NOP 0;
U L 17.0;
BLD 102;
= #IN_X1;
NETWORK
TITLE =Eingangsvariable zwischen X1 und X2 ?
U( ;
L #IN;
L #X1;
>=R ;
) ;
U( ;
L #IN;
L #X2;
<R ;
) ;
= L 17.0;
U L 17.0;
SPBNB _002;
L #X1;
T #X1_FC153;
_002: NOP 0;
U L 17.0;
SPBNB _003;
L #X2;
T #X2_FC153;
_003: NOP 0;
U L 17.0;
SPBNB _004;
L #Y1;
T #Y1_FC153;
_004: NOP 0;
U L 17.0;
SPBNB _005;
L #Y2;
T #Y2_FC153;
_005: NOP 0;
NETWORK
TITLE =Eingangsvariable zwischen X2 und X3 ?
U( ;
L #IN;
L #X2;
>=R ;
) ;
U( ;
L #IN;
L #X3;
<R ;
) ;
= L 17.0;
U L 17.0;
SPBNB _006;
L #X2;
T #X1_FC153;
_006: NOP 0;
U L 17.0;
SPBNB _007;
L #X3;
T #X2_FC153;
_007: NOP 0;
U L 17.0;
SPBNB _008;
L #Y2;
T #Y1_FC153;
_008: NOP 0;
U L 17.0;
SPBNB _009;
L #Y3;
T #Y2_FC153;
_009: NOP 0;
NETWORK
TITLE =Eingangsvariable zwischen X3 und X4 ?
U( ;
L #IN;
L #X3;
>=R ;
) ;
U( ;
L #IN;
L #X4;
<R ;
) ;
= L 17.0;
U L 17.0;
SPBNB _00a;
L #X3;
T #X1_FC153;
_00a: NOP 0;
U L 17.0;
SPBNB _00b;
L #X4;
T #X2_FC153;
_00b: NOP 0;
U L 17.0;
SPBNB _00c;
L #Y3;
T #Y1_FC153;
_00c: NOP 0;
U L 17.0;
SPBNB _00d;
L #Y4;
T #Y2_FC153;
_00d: NOP 0;
NETWORK
TITLE =Eingangsvariable zwischen X4 und X5 ?
U( ;
L #IN;
L #X4;
>=R ;
) ;
U( ;
L #IN;
L #X5;
<R ;
) ;
= L 17.0;
U L 17.0;
SPBNB _00e;
L #X4;
T #X1_FC153;
_00e: NOP 0;
U L 17.0;
SPBNB _00f;
L #X5;
T #X2_FC153;
_00f: NOP 0;
U L 17.0;
SPBNB _010;
L #Y4;
T #Y1_FC153;
_010: NOP 0;
U L 17.0;
SPBNB _011;
L #Y5;
T #Y2_FC153;
_011: NOP 0;
NETWORK
TITLE =Eingangsvariable zwischen X5 und X6 ?
U( ;
L #IN;
L #X5;
>=R ;
) ;
U( ;
L #IN;
L #X6;
<R ;
) ;
= L 17.0;
U L 17.0;
SPBNB _012;
L #X5;
T #X1_FC153;
_012: NOP 0;
U L 17.0;
SPBNB _013;
L #X6;
T #X2_FC153;
_013: NOP 0;
U L 17.0;
SPBNB _014;
L #Y5;
T #Y1_FC153;
_014: NOP 0;
U L 17.0;
SPBNB _015;
L #Y6;
T #Y2_FC153;
_015: NOP 0;
NETWORK
TITLE =Eingangsvariable zwischen X6 und X7 ?
U( ;
L #IN;
L #X6;
>=R ;
) ;
U( ;
L #IN;
L #X7;
<R ;
) ;
= L 17.0;
U L 17.0;
SPBNB _016;
L #X6;
T #X1_FC153;
_016: NOP 0;
U L 17.0;
SPBNB _017;
L #X7;
T #X2_FC153;
_017: NOP 0;
U L 17.0;
SPBNB _018;
L #Y6;
T #Y1_FC153;
_018: NOP 0;
U L 17.0;
SPBNB _019;
L #Y7;
T #Y2_FC153;
_019: NOP 0;
NETWORK
TITLE =Eingangsvariable zwischen X7 und X8 ?
U( ;
L #IN;
L #X7;
>=R ;
) ;
U( ;
L #IN;
L #X8;
<R ;
) ;
= L 17.0;
U L 17.0;
SPBNB _01a;
L #X7;
T #X1_FC153;
_01a: NOP 0;
U L 17.0;
SPBNB _01b;
L #X8;
T #X2_FC153;
_01b: NOP 0;
U L 17.0;
SPBNB _01c;
L #Y7;
T #Y1_FC153;
_01c: NOP 0;
U L 17.0;
SPBNB _01d;
L #Y8;
T #Y2_FC153;
_01d: NOP 0;
NETWORK
TITLE =Eingangsvariable zwischen X8 und X9 ?
U( ;
L #IN;
L #X8;
>=R ;
) ;
U( ;
L #IN;
L #X9;
<R ;
) ;
= L 17.0;
U L 17.0;
SPBNB _01e;
L #X8;
T #X1_FC153;
_01e: NOP 0;
U L 17.0;
SPBNB _01f;
L #X9;
T #X2_FC153;
_01f: NOP 0;
U L 17.0;
SPBNB _020;
L #Y8;
T #Y1_FC153;
_020: NOP 0;
U L 17.0;
SPBNB _021;
L #Y9;
T #Y2_FC153;
_021: NOP 0;
NETWORK
TITLE =Eingangsvariable zwischen X9 und X10 ?
U( ;
L #IN;
L #X9;
>=R ;
) ;
U( ;
L #IN;
L #X10;
<R ;
) ;
= L 17.0;
U L 17.0;
SPBNB _022;
L #X9;
T #X1_FC153;
_022: NOP 0;
U L 17.0;
SPBNB _023;
L #X10;
T #X2_FC153;
_023: NOP 0;
U L 17.0;
SPBNB _024;
L #Y9;
T #Y1_FC153;
_024: NOP 0;
U L 17.0;
SPBNB _025;
L #Y10;
T #Y2_FC153;
_025: NOP 0;
NETWORK
TITLE =Eingangsvariable zwischen X10 und X11 ?
U( ;
L #IN;
L #X10;
>=R ;
) ;
U( ;
L #IN;
L #X11;
<R ;
) ;
= L 17.0;
U L 17.0;
SPBNB _026;
L #X10;
T #X1_FC153;
_026: NOP 0;
U L 17.0;
SPBNB _027;
L #X11;
T #X2_FC153;
_027: NOP 0;
U L 17.0;
SPBNB _028;
L #Y10;
T #Y1_FC153;
_028: NOP 0;
U L 17.0;
SPBNB _029;
L #Y11;
T #Y2_FC153;
_029: NOP 0;
NETWORK
TITLE =Eingangsvariable >= X11 ?
L #IN;
L #X11;
>=R ;
= L 17.0;
U L 17.0;
SPBNB _02a;
L #Y11;
T #OUT;
_02a: NOP 0;
U L 17.0;
BLD 102;
= #IN_X11;
NETWORK
TITLE =Skalierung
//Abarbeitung nur, wenn Eingangsvariable zwischen X1 und X11 liegt
UN #IN_X1;
UN #IN_X11;
SPBNB _02b;
CALL FC 153 (
IN := #IN,
X1 := #X1_FC153,
X2 := #X2_FC153,
Y1 := #Y1_FC153,
Y2 := #Y2_FC153,
OUT := #OUT,
PAFE := #PAFE_FC153);
_02b: NOP 0;
END_FUNCTION
FUNCTION FC 153 : VOID
TITLE =Skalierung nach Geradengleichung y=mx+n
//Formel:
//
// Y2-Y1 Y2-Y1
//Y = ----- * X + (Y1 - ----- * X1)
// X2-X1 X2-X1
VERSION : 0.1
VAR_INPUT
IN : REAL ; //Eingangsgröße
X1 : REAL ; //untere Grenze der Eingangsgröße
X2 : REAL ; //obere Grenze der Eingangsgröße
Y1 : REAL ; //untere Grenze der Ausgangsgröße
Y2 : REAL ; //obere Grenze der Ausgangsgröße
END_VAR
VAR_OUTPUT
OUT : REAL ; //Ausgangsgröße
PAFE : BOOL ; //Parameterfehler X1=X2
END_VAR
VAR_TEMP
m : REAL ; //Anstieg der Geraden
n : REAL ; //Nulldurchgang bei x=0
Zw_Erg : REAL ; //Zwischenergebnis
END_VAR
BEGIN
NETWORK
TITLE =Fehlerbit initialisieren
U M 1.0;
= #PAFE;
NETWORK
TITLE =Prüfen, ob X1 <> X2
//wegen Division durch 0
L #X1;
L #X2;
==R ;
SPB FEHL;
NETWORK
TITLE =Ausgangsgröße berechnen
L #X2;
L #X1;
-R ;
T #Zw_Erg;
L #Y2;
L #Y1;
-R ;
L #Zw_Erg;
/R ;
T #m; //Anstieg
L #X1;
*R ;
T #Zw_Erg;
L #Y1;
L #Zw_Erg;
-R ;
T #n; //Nulldurchgang
L #m;
L #IN;
*R ;
L #n;
+R ;
T #OUT; //Ausgangsgröße
BEA ;
NETWORK
TITLE =Fehlerbit setzen
FEHL: U M 1.1;
= #PAFE;
NETWORK
TITLE =Baustein Ende
END_FUNCTION
Hallo Christian,
ich finde es schon komisch wenn man hier einfach ein paar Fakten zu einer Aufgabenstellung schreibt und eine Lösung in Codeform erwartet, die man einfach abtippen kann.
M.M.n. läuft es so nicht im wahren Leben. Wenn du bei einem Kunden vor Ort stehst, erwartet der auch eine Lösung - und zwar von DIR!
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?