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

Ergebnis 1 bis 9 von 9

Thema: Datenbytes "zusammensetzen"

  1. #1
    Registriert seit
    03.03.2009
    Beiträge
    12
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Gemeinde,

    ich habe folgende Aufgabe.
    Erstellen eins Handlingbausteins für eine serielle Schnittstelle.
    Aufbau ist grob beschriebn so:
    S7 greift über Profibus auf einen Profibusteilnehmer auf dem das serielle Modul arbeitet.
    E/A Breite 10 Byte
    2 Byte Control/Status und 8 Byte Nutzdaten
    Scheibe ähnelt der Beckhoff Serial Scheibe (teilweise)

    Um die Daten konsistent zu erhalten, habe ich SFC 14 und 15 verwendet.
    Die gewählten Sende und Empfangs DB´s habe als UDT deklariert, so kann ich die einzelnen Bytes/Bits direkt,sybolisch ansprechen TA,TR,.... ansprechen.
    Leider ist es nun so, dass mir die Scheibe beim Empfangen leider nicht die 8 Bytes Nutzdaten am Stück sendet!
    (Ich muss also die Daten aus dem Empfangs DB des SFC holen und umkopieren und zu einem Paket zusammenbauen!)
    Sondern meist 1 Byte und dann die Reslichen, bzw. mannachmal auch in 3 Anläufen.
    Habe schon einige Ansätze versucht, aber bisher nichts brauchbares.

    Ablauf dachte ich mir so

    Datenlänge ist vorgegeben auf 10 Byte (bzw.auf max 10Byte variabel) (0-9, wobei die Nutzdaten in Byte 2-9 liegen, Byte 0 enthält Handshake Bits, Byte 1 die Längenangaben der gesendeten bzw. empfangenen Bytes....)

    Abfage der empfangen Bytes (Länge) (sind in Byte 1)
    Diese entwede in einen anderen DB umkopieren oder in einem Arry über Pointer ablegen
    Ist die empfangen Byteanzahl kleiner als 8, muss man von der Scheibe neue Daten anfordern (Handshake)
    Diese wieder wegschreiben (mit Pointer in akt. Stelle im Array hochzählen)

    Ist die Anzahl des 1. einlesens und des 2. einlesens =8 ok,
    sonst nochmals einlesen...........

    Allg. Frage an die Praktiker, mein Baustein soll ja dem Anwender der Scheibe die Nutzdatenbyte zur Verfügung stellen, reicht es hier diese in einem Array zu hinterlegen bzw. einem DB (für einen Zyklus der SPS, oder soll bzw. muss ich diese Puffern? z.B. in einem DB 50 Bytes in einem Ringpuffer hinterlegen?
    Dann müsste der Anwender aber wieder mein DB auswerten?


    Gruß TheBadFrog
    Zitieren Zitieren Datenbytes "zusammensetzen"  

  2. #2
    Registriert seit
    20.10.2006
    Beiträge
    68
    Danke
    13
    Erhielt 19 Danke für 7 Beiträge

    Standard

    Auf Daten lesen vom Anwender warten durch "Lesen-Flag".
    Busy Flag setzen. (Signal Daten werden gelesen aus Baugruppe)
    DB-Lesebuffer löschen.
    Daten lesen aus Baugruppe, in DB ablegen und liegen lassen.
    Datenkontrolle wurde was gelesen ?
    Wenn gelesen Daten OK "Ready-Flag" setzen, Busy-Flag reset.

    Anwender liest jetzt die Daten und nimmt dann Lesen-Flag zurück, erledigt. (Daten-Lesen und nicht busy und Ready = Daten lesen für Anwender.)

    Neustart wieder mit wechsel 0..1 Lesen-Flag und natürlich nicht Busy-Flag und nicht ready. Flags sollten auch im DB liegen wegen Remanenz.

    Nur als Vorschlag, so würde ich das machen.

  3. #3
    TheBadFrog ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    03.03.2009
    Beiträge
    12
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo FKJ,

    wie würdest Du die Daten denn dann "archivieren" ?
    Wegkopieren in anderen DB z.B. mit Blockmove, es sind dann jedoch die zu archivierendne Bereiche variabel, da die Karte ja nicht die 8 Byte Nutztdaten am Stück ausgibt!
    Also erst ein Byte weggkopieren, dann Index erhöhen und die Nächsten Bytes wegkopieren

    Oder gleich mit Pointer und Arrays.........

    Gruß TheBadFrog

  4. #4
    TheBadFrog ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    03.03.2009
    Beiträge
    12
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hat jemand event. ein Beispielprojekt für das Datenhandling einer seriellen Scheibe?

    Gruß TheBadFrog

  5. #5
    Registriert seit
    20.10.2006
    Beiträge
    68
    Danke
    13
    Erhielt 19 Danke für 7 Beiträge

    Standard

    Servus

    Ich verwende für sowas immer gerne Hi-Graph. Da kannst du schön Byte für Byte zusammenkopieren, verzweigen, warten bei Bedarf.
    Da ja immer nur ein "balli" aktiv ist, geht das sehr übersichtlich.

    verwendest du hi-graph ? Dann kann ich dir ein demo geben.

  6. #6
    TheBadFrog ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    03.03.2009
    Beiträge
    12
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo FKJ,
    nein leider nicht, ich muss es ohne hinkriegen.
    Überlege ob SCL gut wäre, wegen den Pointern und den Arrays.......
    Habe schon ein Testprogramm mit einer Schrittkette aufgebaut (mit Tippbetrieb) damit ich sehen kann was sich bei jeder Aktion so tut...

    Gruß TheBadFrog

  7. #7
    Registriert seit
    20.10.2006
    Beiträge
    68
    Danke
    13
    Erhielt 19 Danke für 7 Beiträge

    Standard

    scl ist ebenfalls sehr gut dafür geeignet, is nur mehr schreibarbeit.
    bin mir sicher du machst das ganz geschmeidig.

  8. #8
    TheBadFrog ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    03.03.2009
    Beiträge
    12
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo FkJ,

    heut habe ich erfahren muss erstmal in AWL mit Array und Pointern gemacht werden! (((((((((


    Fange mal mit dem Teil wo ich die Daten vom SFC 14 lese und dann verarbeite........
    Wäre einfach, wenn die gesendeten Daten am Stück wären!
    So muss ich erst vergleichen wieviele Daten angekommen sind.
    Diese ins Array ablegen.
    Neue Daten Anfordern (hoffentlich sinds dann auch nur die 8 Byte....)
    Dies dann als fertig markieren.......
    Anwender kann Sie abholen......oder ich kopiere Sie um?
    Wieder Daten holen, wenn Scheibe diese meldet.........
    Zusammensetzen........

    ............

    Habe heue mal bei Beckhoff geschaut (HW ist ähnlich) aber nichts....
    Weniger Datenbreite, anderer Handshake.......
    Hat jemand ein Beispielprogramm?

    Gruß TheBadFrog

  9. #9
    Registriert seit
    20.10.2006
    Beiträge
    68
    Danke
    13
    Erhielt 19 Danke für 7 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Gib mir eine Adresse e-mail oder so dann kann ich dir weiterhelfen !

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 16.03.2012, 18:20
  2. "Index Pulse", "Home Switch" und "Position Limit Switch"
    Von senmeis im Forum Antriebstechnik
    Antworten: 3
    Letzter Beitrag: 07.03.2011, 11:21
  3. Antworten: 8
    Letzter Beitrag: 16.05.2008, 11:26
  4. Antworten: 2
    Letzter Beitrag: 14.12.2007, 15:09
  5. Antworten: 4
    Letzter Beitrag: 29.11.2006, 08:59

Lesezeichen

Berechtigungen

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