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

Ergebnis 1 bis 8 von 8

Thema: Laufschrift programmieren

  1. #1
    Registriert seit
    15.09.2004
    Beiträge
    86
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich habe folgendes Problem:

    An einer S7-315 2DP habe ich über Profibus ein Anzeigegerät angeschlossen, auf dem ich 16 ASCII Zeichen darstellen kann.

    In einem Datenbaustein habe ich jetzt 16 Byte die ich mit ASCII Zeichen füllen kann, diese werden dann auch angezeigt.

    Einfache Meldungen bekomme ich im Moment gut dargestellt, jetzt frage ich mich jedoch ob ich dort auch längere Texte durchscrollen kann, naja, ich weiss zwar dass dies geht, mir fallen auch verschiedene Lösungsansätze ein, ich suche aber eine elegante Lösung.

    Hat jemand ein Idee?

    viele Grüße
    Michael
    Zitieren Zitieren Laufschrift programmieren  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Du könntest einen Bereich mit z.Bsp. 100 Byte nehmen und von dort jeweis 16 Byte in den Anzeige-DB kopieren (BLK-MOVE). In einem Festgelegten Zeitintervall rückst du den Startzeiger um 1 weiter, bis du am Ende angelangt bist, dann geht es vorne wieder los.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

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

    Standard

    Du wirst den Text ja wohl mit SFC15 übertragen.
    Du kannst jetzt jedesmal den Zeiger auf die Quelle um ein Byte erhöhen und der Text beginnt immer ein Zeichen später. Auf diese Weise kannst du die Schrift laufen lassen, bis der letzte von mehr als 16 Buchstaben in der letzten Stelle steht.
    Du kannst von vorne beginnen, aber vielleicht willst du's "richtig im Kreis laufen" lassen?
    Dazu hängst du einfach die ersten 15 Buchstaben nochmal an den Inhalt des DB an. Das spart, zwei Teilblöcke zu übertragen und deren Längen zu berechnen.
    Beispiel 4-stelliges Display, 4 Byte übertragen:
    Code:
    DBinhalt:     Anzeige;
    LAUFTEXT_LAU LAUF
    ^
    LAUFTEXT_LAU      AUFT
     ^
    ...
    
    LAUFTEXT_LAU      T_LA
                ^
    LAUFTEXT LAU       _LAU  //nun den Zeiger wieder auf den Anfang setzen
                    ^
    LAUFTEXT LAU       LAUF 
    ^
    Zitieren Zitieren Re: Laufschrift programmieren  

  4. #4
    emtewe ist offline Benutzer
    Themenstarter
    Registriert seit
    15.09.2004
    Beiträge
    86
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke schonmal für die Tipps, ich werde mit SFC 15 arbeiten, das durchlaufen lassen ist wahrscheinlich nicht nötig.
    Im Display wird eine Meldung stehen mit maximal 16 Zeichen, und über eine Hilfetaste kann man eine Erklärung für die Meldung abrufen. Wer also eine Taste drückt um den Text aufzurufen, der wird dann wohl auch lesen, am Ende werde ich einfach 16 Leerzeichen angehängen damit der Text wieder rausläuft.
    Danach gibt es wieder eine statische Meldung, und auf Knopfdruck die Erklärung von vorne.

    Danke nochmal
    Gruß
    Michael

  5. #5
    Anonymous Gast

    Standard

    Leider ist es doch nicht ganz so einfach.
    Der Datenbereich in den der Text Kopiert wird ist innerhalb eines größeren Datenbausteins, und wird von einem Hantierungsbaustein zusammen mit anderen Daten übertragen, so kann ich mit SFC 15 nicht darauf zugreifen.

    Mit SFC 20 BLKMOV wüsste ich nicht wie ich unterschiedlich deklarierte Bereiche von Datenbausteinen verschieben soll.

    Wie kann ich 16 Byte aus einem 136 Byte langem String eines Datenbausteins, in 16 Byte (einzeln als Typ CHAR deklariert) eines anderen Datenbausteins kopieren? Die Startadresse der 16 aus 136 Byte ist variabel, die Zieladresse ist konstant.

    Gruß
    Michael

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

    Standard

    Zitat Zitat von Anonymous
    Wie kann ich 16 Byte aus einem 136 Byte langem String eines Datenbausteins, in 16 Byte (einzeln als Typ CHAR deklariert) eines anderen Datenbausteins kopieren? Die Startadresse der 16 aus 136 Byte ist variabel, die Zieladresse ist konstant.
    Du bildest einfach einen Zeiger auf das Byte, das das erste oder 2. oder n-te Zeichen enthält. Den kannst du genauso an SFC20 wie an SFC25 übergeben.

  7. #7
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    @Gast

    zu BLK_MOVE sieh mal hier nach http://www.sps-forum.de/phpBB2/viewt...hlight=blkmove

    Dort haben wir schon so etwas besprochen, es ist auch ein Baispiel dabei.
    Der dortige Baustein nimmt die DB-Nummern, die Start-DW und die Länge als Zahl entgegen und bastelt daraus dann die richtigen Pointer.
    Die Typ-Deklarationen in Datenbausteinen, dienen dem einfacheren Zugriff und der besseren Erkennbarkeit. Du kannst grundsätzlich z.Bsp. einfach Bytes lesen und schreiben, egal ob der betreffende Bereich als char, dInt, word, oder bool deklariert ist.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  8. #8
    emtewe ist offline Benutzer
    Themenstarter
    Registriert seit
    15.09.2004
    Beiträge
    86
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke an Ralle und Zottel,

    ...mit Hilfe des Beispielprogramms ruckelt jetzt die erste Laufschrift über das Display.

    Gruß
    emtewe

Ähnliche Themen

  1. LED - Laufschrift
    Von hhoeller im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 11.02.2009, 11:48
  2. S7- 200 SBR wie FB Programmieren?
    Von godi im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 31.07.2008, 14:39
  3. S5 95U programmieren !?
    Von Tom1971 im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 16.10.2007, 19:24
  4. CPU 312 programmieren
    Von Headman im Forum Simatic
    Antworten: 27
    Letzter Beitrag: 13.09.2007, 16:08
  5. OBs in S7-300 programmieren
    Von Syntaxfehler im Forum Programmierstrategien
    Antworten: 6
    Letzter Beitrag: 21.09.2006, 19:21

Lesezeichen

Berechtigungen

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