Werte in DBD schreiben

nuss

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
hab mich mal hier registriert weil ich nirgens ne antwort gefunden habe.

Ich stehe vor folgendem Problem:
ich messe verschiedene zdioden und der jeweilige spannungswert soll in ein array gespeichert werden.

also:
diode1=>array[1]
diode2=>array[2]
diodei=>array

hab soweit alles in fup gemacht und weiss ned weiter ;)

mfg nuss
 
Entweder du nimmst SCL, dann kannst du mit variablen Indizes in einem Array arbeiten, oder du nimmst AWL und schaust dir mal in der FAQ die Beitrage zu "indirekte Adressierung" und "Pointer" an. Damit mußt du das dann angehen. Auch eine Suche im Forum unter diesen Stichworten fördert Brauchbares zu Tage.

PS: http://www.sps-forum.de/showpost.php?p=4871&postcount=2

Der Baustein könnte auch weiterhelfen, da man hier DB, DW-Nummer und Anzahl der Byte angeben kann und so Daten einfach umkopiert werden können.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Verstehe glaube deien Frage nicht ganz.

du magst Variablen ablegen?

Du legst einen DB an, Zum Beispiel DB1 und deklarierst Wörter

Mal ganz shcnelles Beispiel ob du das hier suchst. Das sind aber halt du absoluten Basics, glaub ned das es so deien Frage war.


Variablen zu 1

L 4004
T DB1.dbw 0

L 230
T DB1.dbw 2

Dann hast du in den DW 0 (Belegt 0-3) im ersten Wort die Bezeichnung (4004) und im 2. Wort die Spannung (230V)


Falls du das hier meinst:
Diese Unterlagen verinnerliche dir dann http://www.automation.siemens.com/download/internet/cache/3/1309998/pub/de/b04_datenbaustein.pdf
 
Du legst einen DB an, Zum Beispiel DB1 und deklarierst Wörter
also ich hab nen DB angelegt und hab mir auch nen array erstellt: array[1..10]

so und jetzt will ich die werte in die einzelnen felder schreiben

also ich will analoge spannungswerte in arrays speichern
 
Zuletzt bearbeitet:
also ich hab nen DB angelegt und hab mir auch nen array erstellt: array[1..10]

so und jetzt will ich die werte in die einzelnen felder schreiben

also ich will analoge spannungswerte in arrays speichern

Du ladest das PEW des Analogwertes (Weiss auswenig spontang grad nimmer ob es Real oder Ganzzahl ist, musst du im DB deklarieren)

L PEW 256(bzw. dein Analaogeingang)
T DB1.DBW2

Naja nun kannst du auch aufrund der Spannung deklarieren um welche Diode es sich handelt und das dann in db1.dbw 0 schreiben.

Du kannst auch zum Beispiel wenn ein Spannungswert ausserhalb eines Solls ist einen Fehler ausgeben.

Oder du kannst dann alles schön auf einer Visualisierung darstellen oder alles in eien Datenbank (Falls du Prüfprotokolle machst) speichern.

etc. etc.

PS: aber lese dir das mal mit den Datenbaustionen und Funktionen durch.
 
Du ladest das PEW des Analogwertes (Weiss auswenig spontang grad nimmer ob es Real oder Ganzzahl ist, musst du im DB deklarieren).
:sm23: :sm23: :sm23: Die deutschen Meister sind auch nicht mehr das, was sie mal waren....

also ich hab das bis jetzt mitm move gemacht
links ist der analogeingang und rechts der dbd
D.h. Du hast das in FUP gemacht. Weiter oben steht schon: indirektes Adressieren geht nur SCL oder AWL - Beipspiele dazu liefert die Suchfunktion.
Der PEW ist übrigens ein Wort, dafür benötigts Du kein DBD sondern ein DBW.

Weiterhin mußt Du sagen, in welchen Format der DB beschrieben werden soll (Vermutung: Real, da DBD?), in aller Regel können Nutzer mit den Rohwerten zwischen 0 und 27648 der PEW nicht viel anfangen, zum Thema Skalierung liefert die Suchfunktion ebenfalls genug.
 
Die deutschen Meister sind auch nicht mehr das, was sie mal waren....

Na wenn ich immer alles und auf anhieb wissen würde, würd ich mich mit so Leuten wie euch nimmer abgeben sondern eien Firma wie Siemens haben :) *spass*
Ne ich vergesse schon manchmal einfach Sachen, es ist einfach immer viel zuviel neues was dazu kommt.



@nuss: entschuldige ich hatte es dir in AWL beschrieben.
Natrülich geht es auch mit Move.

Ein Doppelwort (DBD) besteht aus 4 Bytes.
Die Adressierung in einen Datenbaustein erfolgt in Bytes
DB1.DBB1 0 (Erste)
DB1.DBB1 1 (Erste)
DB1.DBB1 2 (Erste)
DB1.DBB1 3 (Erste)

Das ergibt dann das DB1.DBD 0

Natrülich geht es auch in Wort

DB1.DBW0 (Erste Wort)
DB1.DBW2 (Zweite Wort)

Dann hast du also für FUP:

Netzwerk n^1:
Analogeingang -> Move -> DB1.DBW 2

Netzwerk n^2
Bezeichnung Diode -> Move -> DB1.DBW 0

Das Doppelwort setzt sich so wie du am Anfang gewünscht hast dann aus:Byte 1+2= Bezeichnung Diode und Byte 3+4= Messwert zusammen.

Das ganze ist ansich sehr einfach, das wnen du einmal richtig gemacht hast wirst du es für immer können :)
Ich empfehle dir dennoch dir nochmals die Siemens ausbildungsunterlagen etwas zu studieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@maxi

eyescrazy1.gif


Bitte sag nix mehr, bitte!
 
quasi kan nich das nur in awl machen??
also werte in nen array speichern?

und in fup geht das nur so immer so kompliziert?
 
Zurück
Oben