Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: SFC14/SFC15

  1. #1
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo !
    Kann mir Jemand erklären wie ich Die Daten die ich über den Profibus bekomme weiter verarbeiten kann. Ich habe einen Slave der mir seinen Wert als 5 Byte läge sendet.
    Das erste Byte ist ein Statusbyte, die restlichen 4 enthalten meinen Messwert. Wie bekomme ich den Messwert auf z.B. eine Analogausgabe meiner SPS.
    Genauer gesagt, wie verarbeite ich Pointer (ANY)?

    Dank !!
    Kai.
    Zitieren Zitieren Gelöst: SFC14/SFC15  

  2. "L DB10.DBD0
    lädt den Messwert. Für eine Analogausgabe ist er aber zu lang. Wenn der Wert ein Doppelwort (32-bit integer) ist, kannst du die oberen Bits durch Rechtsschieben erhalte, du kannst aber auch nur die oberen Bits mittels
    L DB10.DBW0 laden.
    Ist der Messwert aber ein Gleitkommawert, so musst du ihn zunächst nach Integer wandeln (RND).

    Den Status bekommst du mittels
    L DB10.DBB4."


  3. #2
    Registriert seit
    25.05.2004
    Beiträge
    172
    Danke
    0
    Erhielt 39 Danke für 7 Beiträge

    Standard

    Mit dem Pointer einen Datenbaustei adressieren
    Im ersten Byte des DB die Statusangaben. In den Folgenden (ich schätze mal zwei Worten die (ich schätze mal es sind zwei) Meßwerte...
    Danach aus dem DB weiterverarbeiten

    Gruß

    Ralf

  4. #3
    Registriert seit
    23.12.2003
    Beiträge
    32
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    hallo Ralf,

    ich habe unter dem Menü Feldbusse am 11.02.2004 dies erleutert !
    Such doch bitte meinem Namen JOKER und Profibus Neuling dann findest du die sehr rasch !

    Gruss

    Joker
    Zitieren Zitieren SFC 14 / 15  

  5. #4
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.812
    Danke
    1.232
    Erhielt 1.101 Danke für 527 Beiträge

    Standard

    ich denke er will wissen wie der anyparameter aussehen muss...
    hier ein beispielaufruf für sfc14:

    Code:
          CALL  "DPRD_DAT"
           LADDR  :=#HM_Adresse
           RET_VAL:=#HM_Status
           RECORD :=P#DIX 20.0 BYTE 2
    
    
    oder P#DB10.DBX10.0 BYTE 2              // 2=Anzahl Bytes

  6. #5
    Anonymous Gast

    Standard

    Erst einmal ein herzliches Dankeschön an Alle die so freundlich waren mir zu antworten.
    Ich habe meine Frage wohl nicht ganz präzise erklärt.
    Ich habe einen Datenbaustein erstellt und die Werte mittels SFC14 ausgelesen,dann mit
    P#DB10.DBX 0.0 BYTE 5 in den Datenbaustein geschrieben.
    Die ersten 4 Byte sind der 32 Bit Messwert, das fünfte Byte ist ein Status Byte.
    Wie spreche ich jetzt die 4Byte so an das ich sie in einen Merker schreiben kann, oder direkt auf eine Analogausgabebaugruppe ausgeben kann. Wie komme ich an das Statusbyte ?
    Programmieren in Step7 ist für mich noch recht neu, ich habe vor ewiger Zeit auf einer S5 gelernt !
    Zitieren Zitieren SFC14/15  

  7. #6
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.812
    Danke
    1.232
    Erhielt 1.101 Danke für 527 Beiträge

    Standard

    Du kannst byteweise, wortweise oder doppelwortweise auf den wert zugreifen.


    Code:
    DB10.DBB0          DB10.DBW0          DB10.DBD0
    DB10.DBB1       
    DB10.DBB2          DB10.DBW2
    DB10.DBB3
    der status steht in DB10.DBB4



    bevor du den wert an einen analogausgang ausgibst musst du ihn normieren(umrechnen).

    zb:
    Code:
    L     DB10.DBD0
    L     1000                      // Faktor
    /I
    T     PAW 256

    Der Faktor hängt von dem Bereich deines MEsswertes ab. Analogbaugruppen werden von 0 - 27648 (0-100% bzw. 0-10V) angesprochen.

    der Faktor muss also so sein das bei deinem größten messwert 27648 in das paw geschrieben wird...

  8. #7
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    L DB10.DBD0
    lädt den Messwert. Für eine Analogausgabe ist er aber zu lang. Wenn der Wert ein Doppelwort (32-bit integer) ist, kannst du die oberen Bits durch Rechtsschieben erhalte, du kannst aber auch nur die oberen Bits mittels
    L DB10.DBW0 laden.
    Ist der Messwert aber ein Gleitkommawert, so musst du ihn zunächst nach Integer wandeln (RND).

    Den Status bekommst du mittels
    L DB10.DBB4.

  9. #8
    Registriert seit
    23.12.2003
    Beiträge
    32
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    hallo,

    hier dein Bausetinaufruf : P#DB10.DBX 0.0 BYTE 5

    nun musst du den Ladebefehl :
    L DB10. DBW 0 = Datenbaustein Doppewort laden
    T MD100 = Transfer in Merkerdoppelwort 100 ( Merbyte 100-103)
    L DB10. DBB 4 = Datenbaustein Byte 4 laden
    T MD104 = Transfer in Merkerdoppelwort 10 4 ( Merbyte 104 )

    nun kannst du über Variable beobachten / Steuern dies anschauen
    wichtig dabei ist noch das entsprechende Datenformat zu wählen !
    Bei MD = Gleitpunktzahl/ IEEE
    und beim MB = HEX / Bit oder so !!

    Gruss

    Joachim
    Zitieren Zitieren Datenbaustein Messdaten darstellen !  

  10. #9
    Anonymous Gast

    Standard

    Ja das wollte ich wissen.
    Muß ich eigentlich alle Bytes die von meinem Slave übertragen werden mit dem SFC14 einlesen und mir die Bytes herrauspicken die ich brauche, oder kann ich auch einen Teilbereich mit dem SFC14 einlesen ?

    Z.B.:
    Eingangsbyte Prozessparam. Adresse

    0,1,2,3 Volumenfluß 312-315
    4 Status Volumenfluss 316
    5,6,7,8 Summenzähler 317-320
    9 Status Summenzähler 321
    usw...........
    Insgesamt 24Byte. Wenn ich den wert des Summenzählers haben möchte benötige ich aber nur Byte 5 bis 8. Kann ich jetzt einfach ab Adresse 317 4 Byte einlesen mit dem SFC14 ?
    Zitieren Zitieren SFC14/15  

  11. #10
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Kai
    Ja das wollte ich wissen.
    Muß ich eigentlich alle Bytes die von meinem Slave übertragen werden mit dem SFC14 einlesen und mir die Bytes herrauspicken die ich brauche, oder kann ich auch einen Teilbereich mit dem SFC14 einlesen ?

    Z.B.:
    Eingangsbyte Prozessparam. Adresse

    0,1,2,3 Volumenfluß 312-315
    4 Status Volumenfluss 316
    5,6,7,8 Summenzähler 317-320
    9 Status Summenzähler 321
    usw...........
    Insgesamt 24Byte. Wenn ich den wert des Summenzählers haben möchte benötige ich aber nur Byte 5 bis 8. Kann ich jetzt einfach ab Adresse 317 4 Byte einlesen mit dem SFC14 ?
    Normalerweise ja. Es hängt aber auch davon ab, wie die GSD Datei die Konsistenz der Daten beschreibt.
    In der DP-Konfiguration könnte dein Gerät als Slave mit mehreren Modulen auftauchen:
    Modul 1:Volumenfluss, Konsistenz über Modul
    Modul 2:Summenzähler, Konsistenz über Modul
    Ist aber alles ein Block mit Konsistenz über alle Daten, so kannst du nur den Block als ganzes lesen.
    Konsistenz ist dafür gut, um folgendes zu verhindern:
    Wenn du vom Summenzähler erst 12 oder 3 byte und dann die anderen lesen würdest, der Zähler aber weitergezählt und ein Übertrag aufgetreten wäre, hättest du unsinnige Daten.

    Am einfachsten ist es, du probierst es aus. Wenn´s nicht geht, bekommst du einen Rückgabewert ungleich 0 vom SFC14. Den Fehlercode kannst du dann in der Hilfe von Step 7 nachschlagen.
    Du kannst dann schauen, ob du in der Hardwarekonfig hinsichtlich der Datenblöcke was ändern kannst.
    Zitieren Zitieren Re: SFC14/15  

Ähnliche Themen

  1. Antworten: 21
    Letzter Beitrag: 19.11.2010, 15:02
  2. SFC14 SFC15 im projekt einfügen
    Von Alex 84 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 17.04.2009, 17:20
  3. SFC14/SFC15, wie lange dauert das?
    Von Gecht im Forum Feldbusse
    Antworten: 3
    Letzter Beitrag: 11.11.2007, 16:19
  4. Antworten: 15
    Letzter Beitrag: 13.09.2007, 19:51
  5. SfC14 / SfC15
    Von Mujo im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 14.08.2007, 14:20

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •