EZMarquee

Screepy

Level-1
Beiträge
17
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag,

ich hab da gerade ein Problem und zwar habe ich eine Laufbandanzeige "EZMarquee" und diese soll ich über profibus ansteuern. Und ich hab mal echt keine Ahnung gerade wie.

Also folgendes, als beispiel möchte ich aus DB10.DBW0000 den inhalt übertragen, ich muss es in ASCII zeichen übetragen und es müssen immer 32 byte gesendet werden wo bei byte 31 und 32 die Steuerbytes sind. Hat jemand nur ne kleine idee wie ich das machen könnte? mir würde es auch erstmal reichen wenn ich überhaupt was übertragen kann.

danke im vorraus
 
Lösungsansatz

Hallo Screepy

zuerst mußt du die Anzeige initialisieren (wg. Größe usw.)

anschließend kannst du dann deine Daten als ASCII Zeichen an die Anzeige senden.

Möglichkeit 1 Zeichenkette genauso lang gestalten, wie die Anzeige an Zeichen hat . (Es werden immer die neuen Zeichen angehängt. Wenn aus irgendeinem Grund eine Verschiebung auftaucht, dann bleibt das Bild verschoben.)

Möglichkeit 2 vor der Ausgabe der Zeichenkette einen Steuerbefehl ausgeben, damit der Cursor immer an die richtige Stelle gestellt wird (Kap.4 vom engl.Handbuch)

Umrechnung deines Wertes:
zuerst in BCD umrechnen um die einzelnen Stellen auseinanderzuziehen
dann diese einzelnd mit 48 addieren dann hast du die Zahl als ASCHII Zeichencode

PS
ich hab noch in regelmäßigen Abständen die Anzeige neu initialisiert, damit falls die Anzeige aus dem Tritt kommt, die Anzeige sich dann wieder fängt.

viel Erfolg
Andreas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke dir für die schnelle Antwort, hast du auch die EZMarquee anzeige gehabt?

Ich hab nebenbei auch das große Problem das ich seit jahren nicht mehr mit Simatic gearbeitet habe und ich hänge da noch ein bisschen an den Grundlagen rum.

Wie hast den du die Ansteuerung gemacht, da ich bei der Anzeige nur Eingänge vergeben kann und nicht Ausgänge???

Um das Problem genauer zu beschreiben:

Aus dem Touchpanel sind 16 Taster, diese Taster sind alle grün, und wenn man einen drückt (als Beispiel der Taster1)dann springt der Tast auf rot. In diesem Fall soll ich die SPS so programmieren das die Anzeige jetzt in diesem Beispiel eine 1 in roter schrift anzeigt. Wie die Befehle heissen um zentrieren und farbe etc habe ich schon über die RS232 schnittstelle probieren können. Ich häng da glaube ich gerade wirklich an den Basics der Basics *schäm*

Soll ich da ein DB machen mit einem Array?
 
Anzeige..

Hi,
du steuerst über PB, also hat deine Anzeige ein Datenbereich, konfiguriert in der Hardwarekonfiguration mittels GSD Datei:
Ausgänge zum was hinschicken, und Eingänge (evtl.) , wo die Anzeige dir was sendet(Status oder sowas).

V.
 
Es muß es nicht unbedingt als Array machen.
Du kannst auch direkt deine Zeichen auf die Ausgänge legen

Wenn bei dir nur wenige Adressen benutzt werden, dann kann man auch direkt auf die Ausgänge schreiben (hängt aber von der verw.CPU ab wieviel E/A´s automatisch eingelesen werden.
(Adressbereich unterhalb von 127 halten)
Dann brauchst du deine Daten der Anzeige nicht mit SFC14 und 15 abholen bzw. schreiben

Dann kann folgendes einfach machen.
L 'W' // Ausgabe vom Zeichen "W"
T AB3

Wichtig erst den Text ausgeben und dann die Steuerbits setzten, sobald die Anzeige die Daten übernommen hat.

Zum Testen der Funktionen schnell und einfach zu realisieren.



mfG
Andreas
 
Aufgrund der sehr großen hilfe vom andreas bin ich ein ganzes Stück weiter gekommen, an diese stelle nochmals Tausend Dank an ihn.

Und ich hab da ein weiteres Problem,

Der Wert der auf der Anzeige dargestellt werden soll wird über Touchpanel im DB10.DBWxxxx abgelegt als HEX wert. Jetzt habe ich das Problem wenn als Beispiel der angezeigte Wert 1 sein soll ist diese im DB10 als 01hex hinterlegt jetzt gebe ich den an die anzeige und es kommt nix raus, wie auch 01hex ist in ascii kein zeichen, also muss ich das jetzt irgendwie hinkriegen. Da dachte ich mir, jo kein thema addierste halt im 1E hex (30dezimal) dazu dann haste ja die richtigen zeichen. Bin aber dann schnell darauf gekommen das wenn die Zahl 11 angezeigt werden soll und ich die 30 dazu addieren ja das Zeichen A erhalten. Hab mir jetzt noch das Buch: Automatisieren mit SPS Theorie und Praxis gekauft und wurstel mich da gerade durch. Jetzt hoffe ich natürlich das ich hier über diese Forum schneller zu einer Lösung komm ;)
 
Bin jetzt viel weiter gekommen ;) hänge jetzt aber daran das ich nciht weiss wie ich ein wert durch eine konstante teilen kann...

wäre super wenn mir da jemand schnell helfen könnte
 
und wieder ich^^

also folgendes:

um die daten an die anzeige zu bringen muss der Ausgang 93 auf den dezimal wert 1 gesetzt werden und um der anzeige zu sagen jetzt die werte anzeigen muss er auf 2 gesetzt werden.

ich hab mir das so gedacht:

L B#16#1
T AB 93
L B#16#2
T AB 93

aber ich glaube ich muss dazwischen der anzeige ein bisschen zeit geben das sie alle daten epmfangen kann, kann mir da jemand helfen und sagen wie ich die jetzt sagen wir mal 4 sekunden warten lassen???
 
Hi, setze zwischen die Zuweisungen einen anzugsverzögerten Timer, wenn der abgelaufen ist schreibst du die 2 auf deinen ausgang, ansonsten Springst du drüber ;)
Gruß

Ron
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Daten senden

Hi Kollege,
z.B so:

Code:
U  M10.0   // Merker:Anzeige aufschalten
FP M10.1  //  Flanke..
SPBN  m001
L 1
T AB93
m001: NOP 0

U M10.1  // die o.g. Flanke..
L S5T#4s
SA T1

U T1
SPB m002
L 2
T AB93
m002: NOP 0
Vladi
 
Bemerkungen

Hallo zusammen

Es ist normalerweise so vorgesehen, dass ein Handshake durchgeführt werden soll

Aus der DOKU:
Byte 32 wird zum Handshake benutzt. Byte 31 wird nicht benutzt.
Wird eine 01 in Byte 32 gesetzt, stehen die Daten für den Profibus bereit. Im Eingangswort des Masters
steht als Handshake der Wert 01. Wird dann der Wert 02 in Byte 32 gesetzt werden die Daten zur
Anzeige gebracht und der Text UTICOR linksbündig dargestellt. Byte 32 wechselt immer zwischen
Wert 1 und 2 um Daten zu übertragen. Für die Länge sollte der Wert aller zur Verfügung stehenden
Bytes eingegeben werden.

Folgende Reihenfolge soll gemacht werden.
- Die Datenbyte´s 1..(30) mit Daten versorgen
- Ausgabe von "1" in das Byte 32 (SPS-Ausgang)
- Warten auf die Bestätigung "1" im SPS-Eingangswort
- Ausgabe von "2" in das Byte 32 (SPS-Ausgang)

Dadurch wird auch sichergestellt, dass die Anzeige die bereitgestelltan Daten sicher übernommen hat.

*******************************************************

Wenn deine Zahl schon in der HEX-Ansicht richtig rüber kommt, dann ist es einfach
Jedes Byte in der Steuerung enthält 2 Zeichen (Dies ist anders als in der Anzeige!) Also mußt du diese Zeichen trennen

für die Einerstelle:
L MB 182 Enthält zb. als HEX 23
L W#16#F die 2 wird ausgeblendet
UW
L 48 Offset zum ASCII-CODE
+I
T ABxy Ausgabe zur Anzeige

für die Zehnerstelle :
L MB 182 Enthält zb. als HEX 23
SRW 4 4 Bits nach Rechts schieben (23 => 2)
L 48
+I
T ABxz Ausgabe zur Anzeige nächste Byte

******************************************************

Falls der Wert noch nicht als HEX vorhanden ist, muß dieser vorher umgewandelt werden:
L INT-Wert (von der Anzeige)
ITD // INT to BCD
DTB
T MD 180
Anschliessend muß jedes Byte des MD180 ausgewertet und zur Anzeige gegeben werden.

*******************************************************

Damit der Cursor immer an eine feste Position gestellt wird, dann sollte vor den Textdaten der folgende Steuercode eingefügt werden:
L '^' // Cursor am Anfang stellen
T #AW.Byte_3
L 'M'
T #AW.Byte_4
L '0'
T #AW.Byte_5
L '2' 2.Zeile
T #AW.Byte_6
L '0'
T #AW.Byte_7
L '1' 1.Zeichen
T #AW.Byte_8
Die Folgenden Bytes enthalten dann die Textzeichen
Bitte Länge der Daten beachten.

*******************************************************

Meine Anzeige hat 2 Zeilen mit 10 Zeichen, die mit der Initialisierung auf 1 Zeile mit 5 Zeichen umgestellt wird.

mein Initialisierungscode lautet:
U #WI_Initialisierung
SPBN M001
L 18
T #AW.Laenge
L '^'
T #AW.Byte_3
L 'E'
T #AW.Byte_4
L '1'
T #AW.Byte_5
L '^'
T #AW.Byte_6
L 'L'
T #AW.Byte_7
L '1'
T #AW.Byte_8
L '^'
T #AW.Byte_9
L 'K'
T #AW.Byte_10
L '1'
T #AW.Byte_11
L 0 // sonst werden Leerzeichen angezeigt
T #AW.Byte_12
T #AW.Byte_13
T #AW.Byte_14
T #AW.Byte_15
T #AW.Byte_16
T #AW.Byte_17
T #AW.Byte_18
T #AW.Byte_19
T #AW.Byte_20
T #AW.Byte_21
T #AW.Byte_22
T #AW.Byte_23
T #AW.Byte_24
T #AW.Byte_25
T #AW.Byte_26
T #AW.Byte_27
T #AW.Byte_28
T #AW.Byte_29
T #AW.Byte_30
M001: NOP 0
U #WI_Initialisierung
L S5T#300MS
SE T 92
UN T 92
S #AW.data_uebernehmen Wert "1" setzen
U T 92
R #WI_Initialisierung
anschließend wieder Daten zur Anzeige freigeben "2" in Byte32 (siehe oben)

*******************************************************


Ich hoffe dies bringt dich erheblich weiter


mfg
Andreas

 
Ja vielen Dank an dich, habs aber gestern nacht alles noch selber hinbekommen *stolzbin*

ist jetzt zwar nicht gerade der hit in sachen programieerung aber es läuft ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
EZMarquee Problem

Hallo zusammen, habe ein ähnliches problem wie Screepy. Ich muss allerdings einen zyklischen Wert einer Waage, der sich alle dreißig sekunden verändert auf die Großanzeige bringen. Gibt es die Möglichkeit einen passenden Funktionsbaustein zu generieren um den Wert automatisch anzupassen?
 
Hallo Shughart

wie ich sehe bist du schon länger an dieser Thematik dran

1. Ansteuerung der Anzeige sollte klar sein (siehe oben)

2. Einlesen der Waage kann ich so nichts zu sagen.

Normalerweise sendet man zyklisch den Wert der Waage zur Anzeige.
Wenn dies nur alle 30Sek. erfolgen soll, dann ruf doch deinen Baustein nur alle 30sek auf.
z.B. mit einem Timer
zu erst im Aufruf des Bausteins den Timer am EN Eingang legen

anschließend im nächsten Netzwerk diesen Timer so beschalten, dass die Zeit nur abläuft und sich anschließend selbst zurücksetzt.
UN T 100
L S5T#30S
SE T 100
NOP 0
NOP 0
NOP 0
NOP 0

Der Timer 100 wird nur alle 30Sek auf "1" stehen
Wichtig die Auswertung des Timers muß nach dem Bausteinaufruf stehen.

mfG

Andreas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Servus, ich schon wieder^^

Hab jetzt alles am laufen und die anzeige bringt auch den wert den sie bringen soll.

Aber jetzt kommt das nächste problem, der kunde will die werte immer 3 sekunden angezeigt haben und dann den nächsten wert, klappt auch alles, nur das die anzeige beim wechsel ca 1 sekunde flakert.
ich denke es liegt an den steurbytes, ich schreibe eine ein rein, dann warte ich auf das bit von der anzeige das sie alle daten erhalten hat und schreibe dann die 2 rein. Wäre super wenn ihr mal eure programmcodes mir zeigen könntet mit denen ihr die anzeige dazu bringt was anzuzeigen und nciht zu flakern ;)
 
Hallo

an den Steuercodes kann es normalerweise nicht liegen.

Ich habe beim normalen Betrieb kein Flackern gehabt
Es flackerte nur kurz, wenn die Anzeige initialisiert wurde. (braucht eigentlich nur am Anfang einmal durchgeführt werden, ich hatte dies noch zusätzlich alle x Stunden zur Sichereit durchgeführt.


evtl. dass die Anzeige komplett gelöscht wurde und dann neu aufgebaut wird. ich hatte nur den Cursor am Anfang gestellt un dann neu aufgebaut

werden evtl. zuviele Zeichen ausgegeben als dargestellt werden können.

mfg
Andreas
 
mmmh, wenn das wirklich so ist steh ich vor einem großen problem da oft die farbe gewechselt wird also quasi im häufigsten fall alle 3 sekunden:confused:

kennst du da kein tipp wie man das eventuell umgehen könnte?
 
Zurück
Oben