Step 5 S5 STEP5 Funktionsbausteine - Verständisproblem

mwulz

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe Leute,

bin neu im Forum und daher erstmal ein herzliches "Hallo"!

Ich hab folgendes Problem, ich habe einen Funktionsbaustein programmiert, in meinem Falle FB002

dieser sieht so aus:
=> NAME ist ANLEIS
=> EI ist Eingang Byte
=> AU ist Ausgang Byte
Code:
L =EI
SRW 3
T =AU

Damit will ich im OB001 folgendes machen:
Code:
SPA FB 2
NAME: ANLEIS
EI: QW128
AU: MW 10
BE

So ich lese in der FB002 vom übergebenen QW (analog Eingangs Perepherie Byte 128 ) den aktuellen Wert ein und lade in AKKU. Schiebe das Wort 3 Bits nach Rechts und gebe es zurück. Dann wird der Wert im MW10 gespeichert.
Das funktioniert einwandfrei.

Jetzt kommt's aber, wenn ich dann einen zweiten lesen möchte also folgend:
Code:
SPA FB 2
NAME: ANLEIS
EI: QW128
AU: MW 10
NOP 0
SPA FB 2
NAME: ANLEIS
EI: QW130
AU: MW 11
BE

Dann steht im MW10 nur "404" dezimal. im MW11 ein richtiger Wert von "437" dezimal (habe ich vorher mit der Funktion "Status Bausteine" im STEP5 nachgesehen).
Wenn ich das nun beliebig verlängere, dann kommt man drauf, dass in den ersten immer "404" steht und im letzten Funktionsbausteinaufruf der richtige Wert des letzten Perepherie Eingangswortes.

Jetzt war der Versuch mit dem "NOP 0", siehe oben schon drin, um eventuell den akku auf "0" setzen zu müssen. Daran liegt es aber nicht, egal ob das drin is oder nicht.

Was habt ihr für welche Ideen?
(ich hab Bilder von den Code - Versuchen angehängt)IMG_4811.jpgIMG_4810.jpg

Grund dessen ist, ich muss ca. 40 Eingangsbytes einlesen und in Merkerwörter schreiben. Diese lese ich dann anschließend über das "TRÄGER S5LAN" Modul aus und verarbeite es in einer GLT-Software weiter.

danke
Mike
 
Zuletzt bearbeitet:
Du hast eine Überschneidung.
MW10 besteht aus MB10 + MB11.
MW11 besteht aus MB11 + MB12.

Du schreibst also in beiden Fällen ins MB11.

Du musst in MW10 und MW12 schreiben, dann klappt's.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

uff - da stand ich aber mächtig am Schlauch...

werde es gleich probieren ;-) => EDIT: Probiert geht ;-)
danke!

Jetzt hätt ich noch eine Frage zur Skalierung. Im Manual von Siemens Link: https://support.industry.siemens.co.../simatic-s5-135u-155u-systemhandbuch?lc=de-ww
auf Seite 9-26 steht es gibt zwei Varianten:
  • Standard PT100
  • PT100 für Klimaanwendungen

Nachdem meine S5-SPS aus einem alten SiclimatX Verbund kommt gehe ich von "Klimaanwendung" aus. Dennoch scheint mir der bekommene Wert etwas merkwürdig...
Beispiel im QW128 ist => 1117 dezimal hinterlegt.
Wenn ich das jetzt skaliere wie unter dem Manual angegeben ergibt das bei:
  • Standard PT100 => 146 Grad C
  • PT100 für Klimaanwendungen => 27 Grad C

in der Realität habe ich dort aber an die 21 Grad C.

Dass der PT100 so falsch geht, kann ich mir in der 4 Leiter-Ausführung nicht vorstellen. Leider sehe ich aus dem SiclimatX System nix mehr raus, wie dieser skaliert worden ist.

lg
 
Zuletzt bearbeitet:
... in meinem Falle FB002
... dieser sieht so aus:
=> NAME ist ANLEIS
=> EI ist Eingang Byte // nein, nicht Byte, sondern Wort (= 2 Byte)
=> AU ist Ausgang Byte // nein, nicht Byte, sondern Wort (= 2 Byte)
Code:
L =EI[COLOR=#0000cd]
[/COLOR]SRW 3 [COLOR=#0000cd][B]// Warum? Weil der Wert linksbündig im Wort steht und rechts 3 StatusBits gelöscht werden sollen? 
// [/B][B]Mal mit SVZ 3 [/B][B]versuchen, damit das Vorzeichen erhalten bleibt. Allerdings: bei WiderstandsMessung überflüssig.
// Oder bei SIEMENS-AI meistens noch besser: gar nicht schieben, sondern stattdessen nur die 3 niederwertigsten Bits löschen mit
// L KH FFF8
// UW
[/B][/COLOR]T =AU

... Jetzt war der Versuch mit dem "NOP 0", siehe oben schon drin, um eventuell den akku auf "0" setzen zu müssen.
Eventuell? Der NOP 0 setzt den Akku nicht auf "0" - er ändert überhaupt nichts!

... Grund dessen ist, ich muss ca. 40 Eingangsbytes (oder sind 40 EingangsWorte gemeint?!) einlesen und in Merkerwörter schreiben.
Ich kann mich nicht erinnern, dass "Klima" bei S5-AI-Baugruppen schon ein Thema war. Sinn der Sache ist eine bessere Auflösung im relevanten TemperaturBereich.
Funktioniert aber nur, wenn die Baugruppe eine entsprechende ReferenzSpannung vom gemessenen SpannungsWert subtrahieren kann.
 
Zuletzt bearbeitet:
.. es gibt zwei Varianten:
  • Standard PT100
  • PT100 für Klimaanwendungen ..
Die Betriebsart wurde über Schalter an der Seite der Baugruppe eingestellt. Bei Siclimat-Anwendung würde ich auch von Klimabereich ausgehen. Dein Beispiel bestätigt es ja auch. Der Messfehler von +6°C könnte auf Leitungsverluste hindeuten. Bist du dir sicher, dass der Vierleiteranschluss vom Sensor bis zum Schaltschrank korrekt ausgeführt ist?

  • Hast du die Quelltexte oder irgend welche Unterlagen von der SiclimatX-Projektierung?
  • Warum tust du dir so etwas an?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Betriebsart wurde über Schalter an der Seite der Baugruppe eingestellt. Bei Siclimat-Anwendung würde ich auch von Klimabereich ausgehen. Dein Beispiel bestätigt es ja auch. Der Messfehler von +6°C könnte auf Leitungsverluste hindeuten. Bist du dir sicher, dass der Vierleiteranschluss vom Sensor bis zum Schaltschrank korrekt ausgeführt ist?

  • Hast du die Quelltexte oder irgend welche Unterlagen von der SiclimatX-Projektierung?
  • Warum tust du dir so etwas an?

Hallo und schönen guten Morgen,

ich hab von den SicX Stationen ca. 12 Stück welche nur DI und AI Module verbaut haben (zur parallelen Überwachung von Haustechnikanlagen). Die allesammt umbauen ist eine monetäre Katastrophe. So steck ich das SiclimatX System ab, ein Träger S5-LAN Modul drauf und schalt es auf die neue GLT auf. Bei den DI Modulen ein klacks, läuft wie geschmiert und kostet fast nix.

Die AI zicken noch rum. Ich hab jetzt an den Codierschaltern der AI Module nachgesehen, definitiv "Klimaanwendung" und alle als 4-Leiter ausgeführt.
im SicX sehe ich nicht viel, hab da mal ein Screenshot der AS Projektierung eines der Analog-Inputs gemacht.
AI-ZL-Temp_Bsp.PNG

Interessant ist ja, dass das vorher an der SicX alles funktioniert hat. Entweder macht die SicX noch irgendeine Konvertierung/Anpassung oder hab ich einen Denkfehler?

PS.: Danke @HEINILEINI das war in der Tat falsch! Es sind natürlich Wörter oder 2Bytes. Das mit dem Schieben nach rechts klappt so wohl und ich kann nach der Korrektur mit den Merker Wörtern auch die Temperaturen soweit auslesen. (irgendwie ja auch blöd, ein Wort blegt 2 Bytes, dann ist ja MW0 MB0 und MB1 und MW1 eigentlich MB2 und MB3 - so dachte ich. In wirklichkeit aber MW0 MB0 und MB1 und MW2 dann MB3 und MB4)

lg

danke
LG
 
So leute, hab's gelöst.

Ich hatte mich verlesen, im Siemens Manual steht als Skalierung für PT100
0 Grad C. sind 1024
und 266.5 Grad C. sind 2048

Wenn ich es so skaliere klappt es einwandfrei und die PT100 sind auf ca. 0,1 Kelvin genau ;-)

Also Thema für mich hier im Thread endgültig GELÖST
 
Zurück
Oben