-> Hier kostenlos registrieren
Hallo,
Folgendes Problem: Ich habe einen Datenbaustein gefüllt mit Buchstaben. Diese sollen als Rezept an einer externen Anzeige erscheinen. Nun verhält es sich so das die Länge des Rezeptes 32 Byte Lang ist also 32 Buchstaben. Jetzt habe ich das Problem das ich keinen Einfluss auf die Externe Anzeige habe. Aber eine 0 wird dort als # Angezeigt und das sieht doof aus. Kurz ich möchte aus der 0 in dem Datenbaustein ein Leerzeichen machen.
Ich habe mir überlegt jedes Byte in dem DB zu überprüfen auf 0 und wenn ja schreib ein Leerzeichen rein sonnst mache nichts. Klare if then else Sache.
Ich könnte nun hingehen und jedes Byte einzeln abzufragen das ganze dann 32mal. Warum nicht von Startadresse bis Endadresse Zählen lassen und dabei die Abfrage laufen lassen. Hier mein Code: Das ganze in einem FC Zyklisch aufgerufen in AWL.
Im PLCSIM mit OB, nur diesem FC und einem DB funktioniert die Funktion. Lade ich es in mein Projekt zählt er das #aktbyte ins Nirvana und versucht Adressen zu lesen die es natürlich nicht gibt.
Gibt es eine Andere Lösung für das Problem mit AWL?
Folgendes Problem: Ich habe einen Datenbaustein gefüllt mit Buchstaben. Diese sollen als Rezept an einer externen Anzeige erscheinen. Nun verhält es sich so das die Länge des Rezeptes 32 Byte Lang ist also 32 Buchstaben. Jetzt habe ich das Problem das ich keinen Einfluss auf die Externe Anzeige habe. Aber eine 0 wird dort als # Angezeigt und das sieht doof aus. Kurz ich möchte aus der 0 in dem Datenbaustein ein Leerzeichen machen.
Ich habe mir überlegt jedes Byte in dem DB zu überprüfen auf 0 und wenn ja schreib ein Leerzeichen rein sonnst mache nichts. Klare if then else Sache.
Ich könnte nun hingehen und jedes Byte einzeln abzufragen das ganze dann 32mal. Warum nicht von Startadresse bis Endadresse Zählen lassen und dabei die Abfrage laufen lassen. Hier mein Code: Das ganze in einem FC Zyklisch aufgerufen in AWL.
Code:
L 8 [COLOR=#00ff00]//+ 8 Byteweises Hochzählen)[/COLOR]
L #aktbyte [COLOR=#00ff00]//Datentyp DINT was anderes ging nicht)
[/COLOR]+D
T [COLOR=#00ff00]#aktbyte
[/COLOR]L 304 [COLOR=#00ff00]//Ende bei Byte Adresse 38 Um die Suche im DB zu Beschränken
[/COLOR]L #aktbyte
==D
SPBN next
L 48 [COLOR=#00ff00]//Anfang bei Byte Adresse 6 Um zu Sagen wo es los gehen soll)
[/COLOR]T #aktbyte
next: L #aktbyte
L 48
>=D
SPBN end [COLOR=#00ff00]// Überprüfung des Inhaltes auf 0
[/COLOR]AUF DB 1
L DBB [#aktbyte] [COLOR=#00ff00]//Hier hatte ich so meine Probleme AWL zu überlisten deshalb mit Datentyp Dint
[/COLOR]L 0
==I
SPBN end
L 32
T DBB [#aktbyte]
end: NOP 0
Im PLCSIM mit OB, nur diesem FC und einem DB funktioniert die Funktion. Lade ich es in mein Projekt zählt er das #aktbyte ins Nirvana und versucht Adressen zu lesen die es natürlich nicht gibt.
Gibt es eine Andere Lösung für das Problem mit AWL?
Zuletzt bearbeitet: