Step 7 SFC 15/ SFC 14 Datenaustasch FUP

webcool

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

ich möchte an ein Temperiergerät eine Anfrage senden, weiß aber noch nicht so recht wie.
Bin leider noch Blutiger Anfänger!

Also die Kommunikation geht über Profibus-DP.

Das Regelgerät soll den Parameter (Istwert, 10 H) an den Master senden.
Der Istwert hat den Wert von 225 Grad C. 225 (Dezimal) = 0xE1 (Hex)

Master an Regelgerät: Dez. Hex
laufende Nummer: 1 0x01
immer: 1 0x01
sende Parameter: 16 0x10
immer: 0 0x00
Parametercode (Istwert): 16 0x10
Parameterwert (High-Byte): 0 0x00
Parameterwert (Low -Byte): 0 0x00
Kommastelle: 0 0x00

Wie baue ich mir in einem Datenbaustein nun dieses Wort zusammen ->

Übertragung zum Regelgerät: 0x01, 0x01 0x10, 0x00, 0x10, 0x00, 0x00, 0x00


Das Regelgerät sollte dies alt Antwort senden. Wie müsste dieser DB aussehen?

Regelgerät an Master: Dez. Hex
laufende Nummer der Anfrage: 1 0x01
immer: 1 0x01
sende Parameter: 16 0x10
immer: 0 0x00
Parametercode (Istwert): 16 *) 0x10
Parameterwert (High-Byte): 0 0x00
Parameterwert (Low -Byte): 225 0xE1
Kommastelle: 0 0x00

*) Wiederholung PC = 16, weil der Lesevorgang fehlerfrei war.

Die Antwort sehe so aus ->

Übertragung zum Master: 0x01, 0x01 0x10, 0x00, 0x10, 0x00, 0xE1, 0x00

Da ich gerade mal FUP ein bisschen kann hoffe ich das man es mir erklären kann.

Im Anhang seht ihr was ich schon Probiert habe.
CPU ist S7 300

Helft mir bitte denn ich will SPS lernen :idea:

Danke.
 

Anhänge

  • FUP1.JPG
    FUP1.JPG
    56,1 KB · Aufrufe: 45
  • FUP2.JPG
    FUP2.JPG
    56,9 KB · Aufrufe: 34
  • DB503.JPG
    DB503.JPG
    69,2 KB · Aufrufe: 27
  • DB504.JPG
    DB504.JPG
    65 KB · Aufrufe: 22
  • Doku.JPG
    Doku.JPG
    83,3 KB · Aufrufe: 32
dein ret_val ist in hex 8124 was bedeutet


8x24 Bereichsfehler beim Lesen eines Parameters.

möglicherweise ist deine hw-config nicht in der lage mit dem gerät konsistent zu kommunizieren oder hw falsch angelegt.
probier einfach mal das ganze als 2 dword zu übertragen also db503.dbdx0 und db503.dbdx4. beim lesen genauso.
auch solltest du nicht unbedingt das lesen davon abhängig machen das vorher das schreiben geklappt hat. also lesen in einem seperatem Netzwerk

EDIT.
übersehen
bei sfc15 steht pew. das muss wenn schon paw heißen.

und mich wundert das der sfc das überhaupt annimmt. ich kenne die sfc so das dort die Adresse in hex angegeben wird (zumindest in s7 Klassik)
als bei 264 W#16#108
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Also an LADDR muss nicht das PEW bzw. PAW ansich sondern nur eine Zahl mit der Adresse des entsprechenden Eingangs oder Ausgangsblocks in der HW-Konfig.
(in HEX), bei 464 DEZ ist das dann also 16#1D0

Also an den SFC muss weder PEW noch PAW.
P.S. @Volker Der SFC erwartet da eine Variable vom Typus WORD, was auf PEW zweiffellos zutrifft, also kein Grund für Step7 das zu bemängeln.

Mfg
Manuel
 
P.S. @Volker Der SFC erwartet da eine Variable vom Typus WORD, was auf PEW zweiffellos zutrifft, also kein Grund für Step7 das zu bemängeln.
Doch, gibt mecker. Zumindest wenn man PAW schreibt. Ein AW allerdings kann man dranschreiben.

EDIT.
OK du hast Recht PEW geht auch
 

Anhänge

  • Zwischenablage02.jpg
    Zwischenablage02.jpg
    12,7 KB · Aufrufe: 18
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Geht denn diese Kommunikation zum Regelgerät überhaupt über E/A-Adressen?
Ist der E/A-Bereich als konsistent über 3 Byte oder >= 5 Byte eingestellt? Nur dann kann man SFC14/SFC15 benutzen.

Mir sieht das eher wie DPV1-Parameterkanal aus, da wäre SFB52 RDREC angebracht.

Wie heißt das Regelgerät? Gibt es zu dem Gerät ein S7-Beispielprogramm? Hast Du mal einen Link zum Handbuch des Regelgerätes, wo Du das letzte Bild mit dem Konfigurationskanal herhast?

Harald
 
Außerdem sehen die beschriebenen Messages zwischen Master und Gerät so aus, als ob da je 8 Byte übertragen werden und nicht 8 Word (Variablen/Strukturen in DB503 und DB504 sind falsch deklariert).

Harald
 
Hallo zusammen,

ja das mit der Adresse in Hex hatte ich vorher, ergab auch ein Fehler.

Die Doku zu dem gerät habe ich angehängt.
Bin leider nicht weiter gekommen, da ich das mit dem DB wohl noch nicht so verstanden habe.

War der Aufbau den ich bis jetzt habe denn schon richtig? Waren die Datentypen auch richtig? In den beiden DB's ?

Das ist ein Projekt von meiner Arbeit ich soll mal spielen, und eine Lösung finden.
Ich habe aber gleich Feierabend, wahrscheinlich werde ich wohl spätestens Morgen früh Antworten.
Danke für euer interesse schon einmal.

Gruß
 

Anhänge

  • Temperiergerät.pdf
    1,2 MB · Aufrufe: 13
  • DB504.JPG
    DB504.JPG
    65 KB · Aufrufe: 18
  • DB503.JPG
    DB503.JPG
    69,2 KB · Aufrufe: 9
Jetzt wäre zu allererst mal interessant, was und wie du in der HW-Konfig parametriert hast.
Vor allem ob, wie und wo du den Konfigurationskanal parametriert hast.

Die andere Frage:
Wenn es 8 Bytes sein sollen, warum hast du dann 8 Words im DB?
 
Die andere Frage:
Wenn es 8 Bytes sein sollen, warum hast du dann 8 Words im DB?

Ja, in der Doku stand das es in Hex stehen soll und Hex ist doch Datentyp Word oder ?
und weil es 8 Bytes sind dachte ich es müsste so angelegt werden, genau das ist es ja was ich grad noch nicht so verstehe
Wie gesagt so den durchblick hab ich leider noch nicht, lern das grad.

ich müsste einmal sehen wie das so aussieht damit ich mir was darunter vorstellen kann, in der Praxis meine ich.
Überall stehen die erklärungen so wie in der Doku aber wie das in der Praxis aussieht keine Ahnung

Ich denke die struktur in db ist Falsch. Wegen hwconfig da hab ich die gsd datei hineingezogen nur, die ich vom Hersteller habe.
Die Adressen wurden Automatisch erzeugt, sonst hab ich dort nichts gemacht.

Gruß
Bis Morgen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
OK, der Konfigurationskanal geht über zyklische Kommunikation über E/A-Adressen. SFC14/SFC15 könnten richtig sein.
Tip: Wenn Du die E/A-Adressen des Regelgerätes ins Prozessabbild der CPU legst, dann brauchst Du SFC14/SFC15 nicht, sondern kannst direkt via "T AB..." und "L EB..." zugreifen.

Mit der Angabe Deiner Gerätschaften "S7-300" geht das auch ein klein wenig genauer? Was für eine CPU (z.B. 314C-2DP)? Ist da vielleicht ein Profibus-DP CP342-5? Wo ist das Profibus-Mastersystem mit dem Regelgerät angeschlossen?

Ideal wäre, wenn Du ein Bild von HW Konfig zeigen würdest, wo man die Konfiguration der Slave-Module samt E/A-Adressen sehen könnte sowie das Rack 0 mit der CPU und ggf CP342-5, um zu sehen wo Dein Profibus-Mastersystem dran geht.

Harald
 
hexadezimal oder dezimal sind Darstellungsformen von Zahlenwerten
Byte oder Word sind Speichergrößen, wobei ein Word = 2 Byte groß ist

In ein Byte kann man z.B. 16 (dez) reinschreiben, das entspricht 0x10 bzw. in S7 schreibe B#16#10

Harald
 
Guten Morgen zusammen,

ich habe ein screenshot gemacht von der hwconfig, dort sieht man Rack 0 und die Bussyteme und die CPU.
Könnt ihr mir erklären wie das mit der DB aussehen muss?
Wenn das Wort 8 Byte groß sein soll wieviele zeilen brauch ich nun in der DB und welchen Datentyp soll die zeilen sein?


Gruß
 

Anhänge

  • hwconf2.JPG
    hwconf2.JPG
    238,2 KB · Aufrufe: 18
  • FUP3.JPG
    FUP3.JPG
    61,7 KB · Aufrufe: 22
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für das Bild von HW Konfig, da sieht man nun alles wichtige.
Der Parameterkanal Deines Gerätes liegt bei A 318..325 (16#013E) und E 464..471 (16#01D0)

Übrigens super durchdacht ;) von Elotech, daß die die beiden Bytes des Parameterwertes auf einen ungeraden Struktur-Offset gelegt haben. So muß man tatsächlich die Bytes einzeln lesen um den Parameterwert zusammenzubasteln. :( Von einem geraden Offset hätte man den Wert symbolisch einfach so lesen können ...

Ich habe Dir mal einen DB500 "Temperiergeräte" mit den nötigen Strukturen erstellt. AWL-Quelle angehängt.

an LADDR von SFC15 DPWR_DAT kommt W#16#13E, an RECORD schreibe "P#DB500.DBX0.0 BYTE 8" oder "Temperiergeräte".SBC_1.SEND
an LADDR von SFC14 DPRD_DAT kommt W#16#1D0, an RECORD schreibe "P#DB500.DBX10.0 BYTE 8" oder "Temperiergeräte".SBC_1.RECV

Harald
 

Anhänge

  • SBC_SFC.jpg
    SBC_SFC.jpg
    53,6 KB · Aufrufe: 24
  • SBC_DB.gif
    SBC_DB.gif
    26,2 KB · Aufrufe: 23
  • SBC_DB.awl.txt
    1,6 KB · Aufrufe: 13
Ja Supi, vielen Dank Harald,

damit kann ich was anfangen, endlich sehe ich mal wie das Praktisch geht!
Das mit Schreiben/Lesen bis BYTE 8, ist genau das was ich suchte.

Davon kann ich auf jeden Fall was lernen.

Vielen Dank! :D

Gruß
Web
 
Hallo zusammen,
ich hab nochmal ne kurze Frage was bedeutet der Fehlercode 32591 (7F4F Hex)
beim Ret_Val vom sfc 14/15 ?

Gruß
Web
 
Zurück
Oben