Step 7 Positionsdaten setzen

S7Anfänger

Level-1
Beiträge
262
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

Ich habe ein kleines Problem. Ich habe eine ET200S mit einem Drehgeber der Firma TR Angeschlossen.
Jetzt möchte ich die Positionsdaten dieses Gebers gern auf einen von mir Vorgegebenen Wert über die Preset Funktion seten.
Laut Herstelle soll ich dafür den SFB53 verwenden. Dieses habe ich auch getan. und hoffentlich auch soweit richtig.
Nur wie gebe ich ihm meinen gewünschten Wert vor? Aus der Hilfe von Siemens wrde ich nicht ganz schlau.
Vielleicht könnt ihr mir ja weiterhelfen.
Verwendet wird ein: "Rotativ Encoder C__58_-EPN mit Geschw" der Firme TR Electronic mit Profinet Anschluss.

Bilder sind im Anhang. Die position möchte ich gern auf den wert "100" Setzen und wenn es möglich ist auch noch die Info bekommen das der Schreibauftrag erfolgreich war.


Vielen Dank schon mal im Vorraus.

Hagen
 

Anhänge

  • Geber.PNG
    Geber.PNG
    6,3 KB · Aufrufe: 62
  • Sym.PNG
    Sym.PNG
    3,4 KB · Aufrufe: 58
  • Preset.PNG
    Preset.PNG
    15,4 KB · Aufrufe: 85
.
Die Anleitung von TR zeigt dazu die PreSet-Funktion mit Beispiel auf.

Die erfolgreich gesetzten Daten des Schreibauftrags kannst du dann durch
anschliessendes Auslesen mit SFB52 überprüfen.
Auch der DONE und der ERROR geben dir dazu zusätzliche Hinweise.


Ist das gewollt, dass du an der ID (= logische Adresse) die Geberdaten parametriert
und den RECORD leer gelassen hast ?

.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe keine Ahnung ob das alles so richtig ist. Nutze den SFB53 und den Profinet Geber zum ersten mal. RECORD muss natürlich was eingetragen werden. Aber ich habe keine Ahnung wie. Dort muss ja der Gewünschte Wert eingetragen werden.

Im Anhang habe ich auch noch die Anleitung des Herstellers hinterlegt.

Besten Dank schon mal für die Antwort.
 

Anhänge

  • TR1.PNG
    TR1.PNG
    48,4 KB · Aufrufe: 47
  • TR2.PNG
    TR2.PNG
    100,2 KB · Aufrufe: 54
Hallo Hagen,

Record is von es Datentyp ANY , ich hab 2 Beispiele wie du die beschalten kannst.

Anhang anzeigen 27823

Beim erste schreib ich die 100 fest in ein Doppelwort und schieb die mit ein blockmove in ein ANY Variable die ich im FC angelegt habe. mit dem ANY kannst du dann der Record beschalten

Beim 2e hab ich am Record ein Pointerzugriff gemacht auf DB2, P#DB2.DBX0.0 BYTE 4.

Versuche es mal.

Bram
 
Warum so aufwendig?
geber ist hier eine lokal im Temp-Bereich definierte DINT-Variable, in welche du vor Aufruf des Records natürlich mittels Move deinen gewünschten Preset-Wert schieben musst.
 
Achtung, wenn die Variable an RECORD in TEMP liegt, dann muß der Preset-Wert in jedem Zyklus mit REQ=1 erneut in die TEMP-Variable geschrieben werden, bis RDREC BUSY=0 meldet.

Ob die Variable für den Preset-Wert ein DWORD oder ein DINT ist, spielt eigentlich keine Rolle. Ob der Preset-Wert dezimal oder hexadezimal geMOVEt wird ist doch nur Ansichtssache. Ich würde DINT nehmen, ein Dezimalwert L#12345678 passt besser zu DINT.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Leute,

Vielen Dank für die Zahlreichen Antworten.
Ich habe nur leider Das Problem, das ich wirklich Anfänger bin und zum ersten mal mit dieser Funktion arbeite. Habe auch generell noch nicht so viel erfahrung mit Programmieren. Daher möchte ich halt gern versten Warum ich Was tue.
Kann mir jemand sagen was ich auf einfachem, programmiertechnischem, wege machen muss um den Geberwert auf 100 zu setzen?
Ist das was ich bisher gemacht habe Überhaupt richtig?
Bitte Bitte erklärt mir auch warum ich dieses so machen muss. Hab leider nicht so die erfahrung wie Ihr, aber ich möchte es lernen.

Tut mir leid das ich so schwer von begriff bin.

Vielen Dank, das Ihr eure zeit opfert mir zu Antworten.

Beste Grüße
Hagen
 
Hallo Hagen,

Da sind viele wegen um an das Ziel zu kommen.

Anhang anzeigen 27824

Auch dies ist ein Beispiel davon.
So auf der erste blich hat die ID falsch gestanden.
Da soll die (Glaube ich) die Fettgedrückte Diagnoseadresse hin.

wenn du den Baustein anklickst kommst du mit die Taste "F1" an die Hilfe texte von S7.
Da ist die Funktion und Beschaltung gut beschrieben.

Bram
 
Hallo Bram,

Danke für die Antwort. Ich glaube sogar das ich das jetzt verstanden habe.
Mit dem MOVE Schreibe ich meinen vorgegebenen Wert in einen Datenbaustein (DB2) und dieses rufe ich dann bei SFB53 (RECORD) wieder ab. Ist das so richtig verstanden?

Beste Grüße
Hagen
 
Super, Danke,

Dann habe ich es ja jetzt endlich begriffen.
Muss ich den DB2 denn noch erst erstellen? oder erstellt er sich selbst?
Und wofür steht das (DB2.DBD0)? DB2 ist der Datenbaustein 2. Und wofur steht das DBD0?

Vielen Vielen Dank

Beste Grüße
Hagen
 
Hallo Bram,

Vielen Dank für die Infos. Ich habe mein Programm jetzt soweit geändert und werde es Morgen mal an der Anlage testen.
Mal sehen ob es klappt.

Vielen Dank

Hagen
 
Hi Bram,
Ich habe das alles mal getestet und das Ergebnis ist, das es leider nicht funktioniert.

Habe noch wieder ein par Bilder angehängt.
Was mache ich Falsch?????

Besten Dank.

Hagen
 

Anhänge

  • DB2.jpg
    DB2.jpg
    17,2 KB · Aufrufe: 22
  • Geber2.PNG
    Geber2.PNG
    28,7 KB · Aufrufe: 33
Zurück
Oben