TIA Simatic Manger/Tia Portal Werte im DB schieben

Domi95

New member
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

folgende Frage: Gibt es eine Möglichkeit einen kompletten DB um eine Stelle weiterzuschieben? Ich möchte 150 Messwerte speichern und mit einem Trigger immer weiterschieben. Habe es momentan in AWL mit L und T geschrieben (siehe Screenshot). Aber das kommt mit doch etwas umständlich vor. Gibt es da vielleicht eine einfachere Möglichkeit? Danke schon mal :)

1630495592678.png
 
Servus,

ein Array of Messwert [1..150] und eine for schleife.
Allerdings nur in SCL nicht in AWL

MFG
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin Domi95,

was ist denn die Aufgabenstellung?
Muss ein Schieberegister sein?
Geht auch ein Ringpuffer?
Wie werden die Messwerte weiterverarbeitet?

In AWL könnte man einen LOOP programmieren.

VG

MFreiberger
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ziel des Aufwands?

Was ich meine:
Wird dies nur für eine z.B. Mittelwertbildung benötigt oder sind Zugriffe auf bestimmte Elemente notwendig

Hintergrund, Alternativer Ansatz:
Einen Index laufen lassen und lediglich den neuen Wert an die jeweilige Stelle schreiben (Altwert überschreiben)
Man spart sich so eine menge Zykluszeit durch unnötiges umkopieren.
 
Ich möchte bei einer Anlage die Zeiten messen die benötigt werden um die Verpackung zu wechseln mit dem Gedanken vielleicht ein automatisches Wechselsystem einzubauen. Will die Werte eigentlich schon einzeln wissen da das eine Aufgabe von unserem Dualen Studenten ist und er die Werte gerne so hätte. In SCL hab ich bis jetzt so gut wie nichts Programmiert deshalb kenne ich mich da nicht wirklich aus.

Wie würde das denn mit dem LOOP in AWL aussehen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Müssen die Werte in einer bestimmten Reihenfolge stehen, also z.B. der neueste Wert zwingend oben/im ersten Feld?
Hast Du mal z.B. in Wikipedia geschaut, was ein Ringpuffer ist? Da hast Du auch jeden einzelnen Wert verfügbar, musst aber nicht umspeichern.

Harald
 
Mal nebenbei...
Was ist denn jetzt ein "Dualer Student" ?

Bin mir sicher das es sowas früher nicht gab ;)
 
Als Aweeller kann ich da mit AWL gerne weiterhelfen:

Loop.jpg

UN M 300.1 SPB NWE1 R M 300.1 L 150 T #AnzahlWerte L 1 T #Zeiger Loop: L #AnzahlWerte L #Zeiger -I L 1 -I SLW 4 LAR1 AUF "Messwerte VPE wechseln" L DBW [AR1,P#0.0] T DBW [AR1,P#2.0] L #Zeiger L 1 +I T #Zeiger L #AnzahlWerte <I SPB Loop NWE1: NOP 0
 
Als Aweeller kann ich da mit AWL gerne weiterhelfen:

Anhang anzeigen 56107

UN M 300.1 SPB NWE1 R M 300.1 L 150 T #AnzahlWerte L 1 T #Zeiger Loop: L #AnzahlWerte L #Zeiger -I L 1 -I SLW 4 LAR1 AUF "Messwerte VPE wechseln" L DBW [AR1,P#0.0] T DBW [AR1,P#2.0] L #Zeiger L 1 +I T #Zeiger L #AnzahlWerte <I SPB Loop NWE1: NOP 0

Super es funktioniert! :)
könnte mir vielleicht noch einer erklären wie genau der Pointer funktioniert? Hatte damit bis jetzt wenig am Hut. Das meiste ist klar aber warum steht zb. hinter dem SLW eine 4?

Danke schon mal
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das meiste ist klar aber warum steht zb. hinter dem SLW eine 4?
SLW 4 ist gleichbedeutend mit einer Multiplikation mit 16.
Der Pointer ist eine BitAdresse.
8-mal BitAdresse (SLW 3) liefert die ByteAdresse.
16-mal BitAdresse (SLW 4) liefert die WortAdresse.
32-mal BitAdresse (SLW 5) liefert die DoppelWortAdresse.

Edit:
SLW ist eigentlich falsch, weil die höchstwertigen Bits verloren gehen. Richtig: SLD

Wie bereits gesagt, der Pointer ist eine BitAdresse.
Die Multiplikation dient dazu, die ByteNr bzw. WortNr bzw. DoppelWortNr in die Einheit BitNr umzurechnen.

PS:
Sehe gerade, dass das Deine Frage eigentlich nicht wirklich beantwortet. Also noch'n Versuch:
Der Operand (in diesem Beispiel die 4) gibt z.B. bei SLW und SLD an, um wie viele BitPositionen das "BitMuster" im Akku nach links verschoben wird.
 
Zuletzt bearbeitet:
Super es funktioniert! :)
könnte mir vielleicht noch einer erklären wie genau der Pointer funktioniert? Hatte damit bis jetzt wenig am Hut. Das meiste ist klar aber warum steht zb. hinter dem SLW eine 4?

Danke schon mal
Beim Adressregister sind von rechts gesehen die ersten 3 Bits für die Bitadresse (Bit 0...7 lassen sich über 3 Bits adressieren)
das nächste Bit ist die Byteadresse. Da wir aber Wortweise Daten im DB ablegen, müssen wir immer 2-byteweise zählen.
Also: SLW 4 macht Pointer für Wortadressierung
 
Super es funktioniert! :)
könnte mir vielleicht noch einer erklären wie genau der Pointer funktioniert? Hatte damit bis jetzt wenig am Hut. Das meiste ist klar aber warum steht zb. hinter dem SLW eine 4?

Danke schon mal
Auszug vom Hans Berger (z.B.: Google Books)
Hier sieht man den Aufbau des Zeigers
Zeiger.jpg
 
Zurück
Oben