String wird im DB nicht angenommen bzw. akzeptiert

tobkin

Level-1
Beiträge
40
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen Lieben SPS'ler,

ich hänge seit ein paar Tagen imer wieder an diesem Problem, und jetzt bin ich an dem Punkt an dem er gelöst werden muss.
Die SF habe ich bereits benutzt, finde aber nichts passendes.

Mein Problem:
Ich habe einen CAB Drucker dem ich einen Druckstring senden muss. Dieser sieht so aus (Druckdatei):

M l LBL;EMBED
R BCODE;1234567890asdfg
R KLAR;1234567890asdfg
A1

In meinem DB habe ich einen String definiert in dem ich folgendes versuche fest einzutragen:
'M l LBL;EMBED$R BCODE;1234567890asdfg$R KLAR;1234567890asdfg$A1$'

Leider ohne Erfolg, als Berichtigung bietet er mir folgendes an:

'M l LBL;EMBED$R BCODE;1234567890asdfg$R KLAR;1234567890asdfg¡$''

Wenn ich ein Freizeichen zwischen A und 1 mache kommt folgendes:

'M l LBL;EMBED$R BCODE;1234567890asdfg$R KLAR;1234567890asdfg$L 1$''


Der Drucker gibt logischerweise mit dem Fehlerhaften String einen Protokollfehler aus.


Danke für Eure Tipps bzw. Hilfe

Tobias
 
sorry, hab gerade auch erst mal den link durchgearbeitet,
erstes byte = max Länge
zweites byte = aktuelle Länge ( liegt hier der Hund begraben ? )
 
Zuviel Werbung?
-> Hier kostenlos registrieren
$ ist ein reserviertes Schlüsslwort. Um es als "echten Text" zu verwenden, muss es doppelt geschrieben werden. Der String wird dadurch nicht länger. Zum Drucker wird je nur ein $ geschickt.

'M l LBL;EMBED$$R BCODE;1234567890asdfg$$R KLAR;1234567890asdfg$$A1$$'
 
In meinem DB habe ich einen String definiert in dem ich folgendes versuche fest einzutragen:
'M l LBL;EMBED$R BCODE;1234567890asdfg$R KLAR;1234567890asdfg$A1$'

Soll Dein $ das Steuerzeichen für einen Zeilenvorschub sein?
Welche(s) Steuerzeichen braucht Dein CAB-Drucker?
0x0D = '$R'
0x0A = '$L'
oder vielleicht sogar beide?
0x0D0A = '$R$L'

Versuche es mal so:
'M l LBL;EMBED$RR BCODE;1234567890asdfg$RR KLAR;1234567890asdfg$RA1$R'

Harald
 
Servus,

also der String

'M l LBL;EMBED$RR BCODE;1234567890asdfg$RR KLAR;1234567890asdfg$RA1$R'

funktioniert leider nicht.

Bei dem Drucker lasse ich derzeit das Protokolldrucken (Drucker druckt das Empfangene Kommando inkl. Erkennung ob okay).
Da habe ich leider immer noch Protokollfehler :

CAB.jpg
Gruß
Tobias
 
Wie sendest du?
Schickst du evtl. die 2 Längenbytes des Strings mit?
Probier mal ein Array of char...
 
Hallo Tobkin,

mich würde interessieren, wie ihr euer Problem gelöst habt, oder wo der Fehler lag.
Wir haben momentan ein ähnliches Problem. Wir senden den String, und der Drucker druckt zwar das Etikett, das in der ersten Zeile vorgegeben wird, aber bei der Übergabe der Variablen kommt ein Protokollfehler.

Viele Grüße
NikolausL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Problem gelöst. Bei den Druckdaten für den CAB-Drucker darf als Zeilenende nicht nur ein <CR> stehen, sondern zusätzlich ein <LF>. Um bei dem Beispiel hier zu bleiben, muß der String dann so aussehen:

'M l LBL;EMBED$R$LR BCODE;1234567890asdfg$R$LR KLAR;1234567890asdfg$R$LA1$R$L'

Danke auch an Jochen Kühner für sein Programm TCP-Test, das hier eine große Hilfe war.

Viele Grüße
NikolausL
 
Hallo NikolausL

Welche Hardware SPS seitig benutzt ihr. Ich stehe momentan vor dem gleichen Problem. Habs mit direkt mit einem MP277 probiert ohne Erfolg. Ich denke ich brauch einen CP340.

Gruss
Guenni
 
Hallo guenni,

ich habe als SPS eine 315-2 PN/DP. Da ich insgesamt 3 Drucker ansteuern muß, habe ich die Ansteuerung über das Panel wieder verworfen. Hier kann man nähmlich nur einen Drucker einstellen. Ich steuere denn Drucker über die Ethernet-Schnittstelle der CPU an. Im Panel müßte mann dann wohl ein Protokoll anlegen, dass dann mit obigem Beispiel etwa so ausschauen müßte:
'M l LBL;EMBED // EMBED ist der Name des Labels, das aufgerufen wird
R BCODE;1234567890asdfg // Die Variable BCODE in dem Label EMBED wird mit dem nachfolgenden Text überschrieben
R KLAR;1234567890asdfg
A1 // Das Label wird einmal gedruckt

So sollte es theoretisch gehen.

Natürlich muß im Panel noch der Drucker eingestellt werden. Siehe hier:

https://support.automation.siemens....objaction=csopen&extranet=standard&viewreg=WW

Für den CAB-Drucker, der hier im RAW-Modus arbeitet gelten die Einstellungen für einen Print-Server.

Viele Grüße
NikolausL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo NikolausL,

Hab das mal mit dem Panel und einem Protokoll versucht. Die LED am Drucker blinkt schnell d.h. Daten werden erkannt aber er druckt nicht.
Als weitere Option hätte ich bei meiner Applikation noch nen CP343-1 Lean zur Verfügung.
Das Ettikett habe ich. Ich muss nur nur 3 Variablen überschreiben.

Wie müsste ich die Ansteuerung des Druckers dann realisieren.

Gruss
Guenni
 
Guten Morgen,

also ich habe es so gemacht, das ich mir für die einzelnen Zeilen jeweils einen temporäreren String angelegt habe, diese Strings habe ich dann in ein Array of Char gewandelt. Dieses Array of Char habe ich mittels einer unspezifizierten Verbindung an die IP-Adresse des Druckers an den Port 9100 geschickt. Das hat eigentlich auf Anhieb funktioniert. Für die Programmierung habe ich TIA V11 verwendet.
Nur bei der Variablenübergabe kam beim Drucker immer ein Protokollfehler. Das lag dadran, das ich als Zeilentrenner nur ein <CR> eingefügt hatten, wie es eigentlich unter anderem auch hier im Forum so beschrieben ist. Ich habe dann testweise die Steuerbefehle über das Tool TCP-Test (von Jochen Kühner hier im Forum) an den Drucker geschickt, darüber hat er das Etikett richtig mit Variablen ausgedruckt. Im zweiten Schritt habe ich die Steuerbefehle von einem Notbook auf ein zweites geschickt. Auf beiden lief TCP-Test. Den empfangenen String habe ich dann mit einem HEX-Editor angeschaut.
Um bei dem Beispiel hier zu bleiben,muss in dem Array of Char dann folgende Zeichenfolge stehen;

'M l LBL;EMBED$R$LR BCODE;1234567890asdfg$R$LR KLAR;1234567890asdfg$R$LA1$R$L'

$R ist das Steuerzeichen für <CR>, und $L ist das Steuerzeichen für <LF>.

Viele Grüße
NikolausL
 
Nachtrag:

Nach eigenen Versuchen, und nach Rückfrage beim Simatic Support, denke ich dass der CAB-Drucker über ein Siemens Panel nicht angesteuert werden kann. Dazu wäre ein ASCII-Druckertreiber nötig, denn es zumindest von Siiemens nicht gibt.
Ich lasse mich da aber gerne eines besseren belehren.

Viele Grüße
NikolausL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Direkt übers Panel geht nicht. Anfangs habe ich gedacht ich könnte das File modifizieren und per Skript in den Ordner execute vom CAB kopieren.
Doch dazu brauch ich eine FTP Verbindung und die kann das Panel nicht.
Ich probier das mal mit der unspezifizierten Verbindung. Danke für die Info.

Gruss
Guenni
 
Zurück
Oben