Step 7 AWL: Warum U und nicht L

MadMa

Level-1
Beiträge
16
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo ich habe diesen Code hier:

Netzwerk 1
U "Taster"
FP "TastM2"
= "TastEin"

Netzwerk 2
U "TastEin"
FN "TastM1"
= "TastVerz"

Wie muss ich das U verstehen?
Ist doch normal eine Und
Verknüpfung?
Aber wie Funktioniert das mit Flanken?

Wäre über eine kurze Erklärung sehr dankbar
 
L und T sind für alle anderen Typen außer Bool zu verwenden.

Wenn du C kannst dann entspricht das in etwa dem hier
Code:
Netzwerk 1
TastEin = Taster && !TastM2;
TastM2 = TastEin;

Netzwerk 2
TastVerz = !TastEin && TastM1;
TastM1 = TastEin;

FP und FN speichern für dich netterweise automatisch den letzten Zustand und nehmen die passende Verknüpfung vor. Bei der S5 die noch keine FP/FN Anweisungen hatte, musste man sich die Flankenauswertung selber aus Einzelanweisungen zusammenbauen.

Ohne FP/FN könntest du das auch so programmieren:
Code:
Netzwerk 1
U "Taster"
UN "TastM2"
= "TastEin"

U "Taster"
= "TastM2"


Netzwerk 2
UN "TastEin"
U "TastM1"
= "TastVerz"

U "TastEin"
= "TastM1"
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die schnelle Antwort.
Also ich Lade mit U "Taster" in den Akku 1. Dann prüfe ich über FP ob der Zustand von "Taster" von 0 auf 1 gewechselt hat und wenn das so ist, wird meine Flanke high.
Hab ich das so richtig verstanden?
 
U lädt nicht nur, sondern verknüpft den Operanden mit dem VKE logisch UND und schreibt das Ergebnis wieder ins VKE. Vereinfacht gesagt, dann gibt es noch das /ER-Bit (Erstabfragebit) was dort auch noch mit hineinspielt.
Das alles passiert in den Flags des Statusregisters, der oder die Akkus bleiben unangetastet.

L und T arbeiten hingegen auf dem Akku. Andere Akku-Operationen beeinflussen dann Akku und/oder Bits im Statusregister.

Schau dir mal das Operationsliste-PDF der S7 an, dort steht für jede Anweisung welche Statusbits und Akkus davon beeinflusst werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das heißt also wenn das mein Code ist:

Netzwerk 1

U "Taster"
FP "TastM2"
= "TastEin"

Netzwerk 2
U "TastEin"
FN "TastM1"
= "TastVerz"

Netzwerk 3
U "TastVerz" -> 1
L S5T'5S
SS "TAlarm"
U "TastEin"
R "TAlarm"
NOP 0
NOP 0
U "TAlarm"
= "Alarm"

Das Programm schaut ob der Taster gedrückt wird und wieder losgelasen und wenn das der Fall ist wird das Programm ab 1 weiter abgearbeitet?
 
Nein, das VKE ist ein Flag (d.h. ein Bit) im Statusregister der CPU. So wie das Carry, Zero, Overflow, usw. Flag einer x86 CPU.

So wie es verwendet wird sieht es bei den Bitoperationen schon so aus wie ein Arbeitsregister, hat mit dem Akku aber nichts zu tun.
 
Netzwerke 1 und 2 dienen nur der Flankenauswertung.

Bei fallender Flanke an "TastEin" die speichernde Einschaltverzögerung gestartet.
Sind die 5 Sekunden abgelaufen wird "Alarm" auf true gesetzt.

Mit einer steigenden Flanke an "Taster" der Timer und Alarm zurückgesetzt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Programm schaut ob der Taster gedrückt wird und wieder losgelasen und wenn das der Fall ist wird das Programm ab 1 weiter abgearbeitet?
Das Programm wird auch dann weiter abgearbeitet, wenn der Taster nicht gedrückt wurde. Bei SPS wird das Programm immer komplett von oben nach unten abgearbeitet (außer die Teile, die extra mit Sprunganweisungen übersprungen werden). Wenn die Abarbeitung bei der letzten Anweisung angekommen ist, dann startet das Betriebssystem die Abarbeitung wieder oben bei der ersten Anweisung im OB1. Zyklisch wieder und wieder und wieder... Die Kunst des SPS-Programmierens besteht darin, das Programm so zu formulieren, daß Re-Aktionen nur bei bestimmten "verknüpften" Bedingungen erfolgen. Ein SPS-Programm verarbeitet Zustände, ereignisgesteuerte Programmausführung wird nur für wenige Aufgaben genutzt.

Empfehlung: schalte mal die Code-Ansicht auf KOP oder FUP um (Menü Ansicht). In diesen grafischen Darstellungen siehst Du vermutlich eher, was der Code tut, ohne die AWL-Anweisungen genau verstehen zu müssen. Die (Strom-)Linie zwischen den Schaltelementen ist das VKE.

Harald
 
Hallo danke für die Antwort.
Ich kann leider das Programm nicht in FUb öffnen, ich habe nur ein Skript(Händisch) zur Verfügung und versuche daraus schlau zu werden. Ich würde mir gerne eine eigene kleine SPS-Steuerung bauen aber bevor ich das mache will ich mit dem Programm etwas vertraut sein. Außerdem benötige ich dafür ja auch ein Professional Betriebssystem was ich leider auch noch nicht habe aber bis mitte Februar sollte es da sein.

noch eine Frage:

Netzwerk 1
U "Taster"
FP "TastM2"
= "TastEin"

Netzwerk 2
U "TastEin"
FN "TastM1"
= "TastVerz"

Netzwerk 3
U "TastVerz"
L S5T'5S
SS "TAlarm"
U "TastEin" -> wenn der Taster gedrückt wurde heißt es er ist high (die Flanke) und er Resetet den TAlarm oder? Für was ist hier dann das U? Wie muss ich das lesen? Als UND also in C würde man schreiben if "TastEin" = 1 then R = 0 oder so
R "TAlarm"
NOP 0
NOP 0
U "TAlarm"
= "Alarm"
 
Stop

Hallo danke für die Antwort.
Ich kann leider das Programm nicht in FUb öffnen, ich habe nur ein Skript(Händisch) zur Verfügung und versuche daraus schlau zu werden. Ich würde mir gerne eine eigene kleine SPS-Steuerung bauen aber bevor ich das mache will ich mit dem Programm etwas vertraut sein. Außerdem benötige ich dafür ja auch ein Professional Betriebssystem was ich leider auch noch nicht habe aber bis mitte Februar sollte es da sein.

Wenn Du Anfänger mit C/C++ Erfahrung bist, dann lass das AWL. AWL ist ein an Assembler angelehntes Programmier Oldi.

Nimm die Sprache ST, die ist von Pascal abgeleitet, eigentlich vom heutigen Stand auch lange Museum, aber bei der SPS leider noch immer der "neueste Schrei".

Wenn Du eine SPS brauchst, dann greif zu CODESYS, da kannst Du alles auf dem PC machen, diesen je nach Ansprüchen sogar als SPS mit Betriebssystem fast REAL TIME betreiben.

Wenn es etwas mehr echte Hardware sein soll, CODESYS läuft auch auf dem Raspberry und für < 100 Euro hast Du eine echte Hardware (Raspberry + PIFace) mit realen IO.

Und das zumindestens was die Software betrifft für UMSONST und auf der Höhe der Zeit (meine Schätzung 10 Jahre dem TIA vorraus) und in einem anderen Teil des Forums bestens unterstützt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn Du eine SPS brauchst, dann greif zu CODESYS, da kannst Du alles auf dem PC machen, diesen je nach Ansprüchen sogar als SPS mit Betriebssystem fast REAL TIME betreiben.
Wie definierst Du denn Echtzeit (Realtime), das Du Codesys oder deren Derivate auf einem PC als fast echtzeitfähig bezeichnest?

Von irgendwas mit Internetzugang gesendet.
 
Wie definierst Du denn Echtzeit (Realtime), das Du Codesys oder deren Derivate auf einem PC als fast echtzeitfähig bezeichnest?

Von irgendwas mit Internetzugang gesendet.

Ich gehe davon aus, dass der Themenstarter mal mit einer SPS etwas "spielen" möchte und keine Echtzeit braucht und wenn er sein Licht im Haus schalten kann mit einem Raspberry schon erst einmal zufrieden ist.

Ansonsten ist "Echtzeit" ein verkürzter Begriff, da gehören viele Dinge dazu, um zu entscheiden, ob ein Gerät und seine Software die Anforderungen erfüllt oder nicht.

Nach der abstrakten Definition der Echtzeit gibt es nur das VERSPRECHEN, in x Zeiteinheiten auf ein Ereignis reagiert zu haben. Ob das NanoSekunden sind oder 100 MilliSekunden ist erst mal nicht gesagt und offen und auch möglich.
 
Zurück
Oben