Laufschrift programmieren

emtewe

Level-1
Beiträge
106
Reaktionspunkte
0
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
 
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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 
^
 
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
 
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Anonymous schrieb:
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.
 
@Gast

zu BLK_MOVE sieh mal hier nach http://www.sps-forum.de/phpBB2/viewtopic.php?t=1037&highlight=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.
 
Danke an Ralle und Zottel,

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

Gruß
emtewe
 
Zurück
Oben