Step 7 PCS 7 - SCL (RDREC und WRREC)

Paule79

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

ich nutze SIMATIC S7-SCL Version 5.6.
Ich möchte die Funktionen WRREC und RDREC in SCL Code schreiben, stosse aber auf Probleme.
1. Stimmt die Zuweisung von VALID nicht, wie mache ich das? habe es mit := und => versucht. Natürlich hat die Variable einen Bool... leider funktioniert es nicht.
2. In TIA Portal kann ich z.B. RDREC.REQ und damit den Input REQ beschreiben, funktioniert das hier auch? Wenn ja wie?

Danke für eure Hilfe.
 

Anhänge

  • Fehler.JPG
    Fehler.JPG
    73,9 KB · Aufrufe: 56
Ich denke mal dein Aufruf ist nicht vollständig, so sieht ein kompletter Aufruf aus:
1623131695137.png

Was für ein Variablentyp ist denn Test? Bool?

Das was du weiter unten programmiert hast ( IF REDRC.VALID ) kann so auch nicht funktionieren. Wenn dann IF DB40.valid...
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
die Zuweisung passt mit dem :=
Die Fehlermeldung sagt, dass Test den falschen Datentyp hat. Schau mal, ob es wirklich BOOL ist oder ob Du den eventuell doppelt definiert hast.
RDREC.REQ kann man in Step7 auch nutzen.

Die Abfrage auf REDREC.VALID = 1 passt nicht, das muss auf TRUE oder FALSE abgefragt werden.

Grüße
Snape
 
Vielen Dank euch! Das hat funktioniert.

Eine Frage noch:
Ich hab ein Feldgerät aus dem ich daten azyklisch (deshalb mit RDREC und WRREC) auslesen/schreiben möchte. Leider braucht das Gerät einen Uint8 Wert und mit INT in PCS 7 funktioniert es nicht. Leider gibt es keinen kleineren Datentypen oder übersehe ich etwas? Danke schon mal
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja klar, sorry hatte ich vergessen zu schreiben... leider folgt wie oben ein Problem auf das nächste :D

Ich habe es so wie du mit DB.VALID definiert, dann hat es funktioniert.
Wie gesagt jetzt habe ich das Uint8 Problem, eine Idee? :(
 
Ich muss ebenfalls die System Zeit und das Datum nutzen und diese als Input in den Baustein geben.
Meine Fragen:
1. Gibt es solch einen Baustein schon, damit ich diesen in die CFC einfügen kann und den Ausgang mit meinem FB Eingang verschalten kann.
2. Kann ich dann Jahr, Monat, Tag, usw. selektieren? Sprich einzeln in Variablen schreiben?
 
Ok, ich habe es gerade erst gesehen, dein Aufruf ist falsch. Hier mal der Aufruf als Vorlage:

Code:
RDREC.DBxxx(REQ :=  // IN: BOOL
            ,ID :=  // IN: DWORD
            ,INDEX :=  // IN: INT
            ,MLEN :=  // IN: INT
            ,RECORD :=  // INOUT: ANY
            );
   := DBxxx.VALID; // OUT: BOOL
   := DBxxx.BUSY; // OUT: BOOL
   := DBxxx.ERROR; // OUT: BOOL
   := DBxxx.STATUS; // OUT: DWORD
   := DBxxx.LEN; // OUT: INT
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du müsstest nur deine Variablen eintippen.

Hier ein Beispiel wo deine "Test" Variable hin muss:
Code:
RDREC.DB40(REQ :=  // IN: BOOL
            ,ID :=  // IN: DWORD
            ,INDEX :=  // IN: INT
            ,MLEN :=  // IN: INT
            ,RECORD :=  // INOUT: ANY
            );
Test := DB40.VALID; // OUT: BOOL
     := DB40.BUSY; // OUT: BOOL
     := DB40.ERROR; // OUT: BOOL
     := DB40.STATUS; // OUT: DWORD
     := DB40.LEN; // OUT: INT

Im Prinzip kannst du dir dann aber auch die Test Variable sparen und direkt auf den Instanz DB zugreifen.
Ich denke mal du nutzt ihn ja nicht mehrfach.
 
Kannst du mir vielleicht noch zwecks Datum und Zeit helfen?
Eher nicht, mit CFC mache ich nur wenig.

Ich muss ebenfalls die System Zeit und das Datum nutzen und diese als Input in den Baustein geben.
Meine Fragen:
1. Gibt es solch einen Baustein schon, damit ich diesen in die CFC einfügen kann und den Ausgang mit meinem FB Eingang verschalten kann.
hier müsstest du schreiben, was du genau möchtest, ich verstehe es noch nicht ganz.

2. Kann ich dann Jahr, Monat, Tag, usw. selektieren? Sprich einzeln in Variablen schreiben?
Ja, hier im Forum gibt es dazu einige Beispiele, bitte selber mal suchen
 
Zurück
Oben