Hallo zusammen,
bitte die ganze Thematik AWL ignorieren. Habe leider das Programm nur übernommen.
Nutze STEP 7 Classic V. 9.03
CPU 414-5H
Aufgabe: ein Sequenziertes Analogsignal auslesen
Analogsignal von einem Sensor sendet für 2 Sekunden ein Startsignal von 20mA
danach 2 Sekunden Pause
Dann 2 Sekunden lang ein Erster Messwert zwischen 4-20 mA
danach 2 Sekunden Pause
Dann 2 Sekunden lang ein Zweiter Messwert zwischen 4-20 mA
danach 30 Sekunden Pause
Auslesen des Analogsignal funktioniert und die Umrechnung passiert in FC 0.
Ich kriege nur die Sequenzierung nicht vernünftig ausgewertet.
Erstens bleibt der Timer T1 nach 2S und 160 ms einfach stehen und zweitens wird die Funktion FC 1 für die Umrechnung dauerhaft aufgerufen und nicht erst, wenn der Timer abgelaufen ist.
Könnt Ihr mir vielleicht helfen meine Fehler auszumerzen? Bin noch blutiger Anfänger in AWL.
bitte die ganze Thematik AWL ignorieren. Habe leider das Programm nur übernommen.
Nutze STEP 7 Classic V. 9.03
CPU 414-5H
Aufgabe: ein Sequenziertes Analogsignal auslesen
Analogsignal von einem Sensor sendet für 2 Sekunden ein Startsignal von 20mA
danach 2 Sekunden Pause
Dann 2 Sekunden lang ein Erster Messwert zwischen 4-20 mA
danach 2 Sekunden Pause
Dann 2 Sekunden lang ein Zweiter Messwert zwischen 4-20 mA
danach 30 Sekunden Pause
Auslesen des Analogsignal funktioniert und die Umrechnung passiert in FC 0.
Ich kriege nur die Sequenzierung nicht vernünftig ausgewertet.
Erstens bleibt der Timer T1 nach 2S und 160 ms einfach stehen und zweitens wird die Funktion FC 1 für die Umrechnung dauerhaft aufgerufen und nicht erst, wenn der Timer abgelaufen ist.
Könnt Ihr mir vielleicht helfen meine Fehler auszumerzen? Bin noch blutiger Anfänger in AWL.
Code:
CALL FC 0
(Raw := DB1.DBW8,
Current := DB2.DBD8);
UN M 2.1; //Setzt die Merker zurück
UN M 2.0;
UN M 2.2;
L DB2.DBD8; // IF Stromwert größer gleich 20mA
L 20.000000e+000;
>=R ;
= M 2.1; // setzt Merker 2.1
U M 2.1; // M2.1 gesetzt dann wird der Timer mit 4 Sekunden gestartet
L S5T#4S;
SE T 1;
U T 1;
= M 2.2;
U M 2.2; //Timer abgelaufen wird die Call FC1 funktion gestartet
CALL FC 1 (Current := DB2.DBD8, ELabs := DB2.DBD12);