Drucker an Gateway DP/RS232C

guenni

Level-2
Beiträge
336
Reaktionspunkte
34
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe folgendes Problem:

Ich muss ca. 40 String Variablen auf einen Drucker senden. Siemens hat mir das Gateway DP/R232C empfohlen da der Drucker 40m von der CPU entfernt ist. Zusätzlich benutze ich ein Adapter Seriell - Paralell.
Da ich das Senden auf mehrere Datenpakete aufteilen muss benutzte ich als Protokoll das mit Start und Endezeichen.
Der Drucker bringt auch was raus nur wenn ich die Daten erneut sende druckt er nur Mist. Irgend wie vermischt er die einzelnen Daten miteinander.

Weiss jemand Rat?

Gruss
Günter
 
Welche Art von Mist macht er?
Welches Start- und Endezeichen benutzt du?
Wer soll das verarbeiten, der Drucker oder der Seriall/Parallelwandler?
Was für Daten schickst du? ASCII-Text oder Grafik im Format des Druckers?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da das erste Paket funktioniert, wäre es möglich, dass em Ende des Paketes Steuerzeichen gesendet werden oder durch deinen 'Wandlersalat' entstehen und dadurch der Drucker umprogramöst wird.

Zur Analyse kannst du dich ja mal mit dem Hyperterminal oder mit einem RS232 'Spionageprogramm'. also ein Prog das auch Hex anzeigt, an die serielle Schnittstelle hängen.
Dann ist der Teil bis zum seriell/parallel Wandler gecheckt.

Ebenso kannst du mit dem Hyperterm mal in den seriell/parallel Wandler schreiben und sehen was der Drucker ausspuckt.

Übrigens, es gibt auch Drucker mit seriellem Anschluss.

Kurt
 
Hallo Zottel

Ich schicke ASCII Strings von der CPU315-2DP an das Gateway. Am Gateway ist ein HP Laserjet 1300 angeschlossen.
Als Startzeichen benutze ich 10dez und als Endzeichen 12dez.

Als sogenanter Header schicke ich zuerst das Startzeichen danach CR LF damit der erste String links angezeigt wird. Anschliessend schicke ich die ersten beiden Strings.

Der Ausdruck war beim ersten mal korrekt. Schicke ich das gleiche erneut
so kann es sein dass er nur den ersten String druckt und druckt den zweiten auf einer neuen Seite.
Es kann auch sein dass er den 1 2mal ausdruckt und den zweiten verschluckt oder er bringt 2 mal die Strings auf einem Blatt.

Ich vermute das Gateway schickt die Daten wenn der Schnittstellenbereich ändert und der Drucker beginnt nach Zeit x diese auszudrucken obwohl noch etwas unterwegs ist.

Es fehlt die Möglichkeit dem Drucker zu sagen alle Daten vorhanden starte Ausdruck. (einfach ausgedrückt)


Gruss
Günter
 
Hallo Kurt

Der Drucker wurde mir vom Kunden aufs Auge gedrückt.
Das mit dem Hyperterminal probiere ich mal aus.

Gruss
Günter
 
Zuviel Werbung?
-> Hier kostenlos registrieren
guenni schrieb:
Hallo Zottel

...Als Startzeichen benutze ich 10dez und als Endzeichen 12dez.

Als sogenanter Header schicke ich zuerst das Startzeichen danach CR LF damit der erste String links angezeigt wird. Anschliessend schicke ich die ersten beiden Strings.
Das Zeichen 10dez ist dasselbe wie LF (line feed). 12dez ist ein FF (form feed, Seitenvorschub).
Wer braucht diese Zeichen? Das Gateway? Bekommt der Drucker sie zu sehen?
Ich nehme jetzt mal an, daß die Zeichen einen "Rahmen" für das Gateway darstellen.

Kann man auch andere nehmen, z.B. STX =02dez und ETX=03dez? Was macht das Gateway wenn innerhalb der Nachricht eine neues Startzeichen (dein LF) vorkommt?
Dem Drucker solltest du ein FF schicken, um den Druckvorgang zu starten.
 
Hallo Zottel

Also ich habe als Start und Endzeichen auch 02 bzw. 03 probiert und hatte das gleiche. Als Start benutze ich nicht 10 sondern 11dez Schreibfehler sorry.
CR und LF nehme ich nur wenn ich eine neue Zeile benuzten will.
Wenn ich das Endzeichen übermittle startet der Drucker. Muss morgen da ich heute nicht mehr dazukomme den Tip von Kurt mit dem Hyperterminal probieren.

Gruss Günter
 
Habe heute die Info von Siemens bekommen das Gateway ist nur für den Datenaustausch mit einem PC geeignet. Man weiss bald nicht mehr was man glauben soll. Einer von Siemens sagt müsste gehen ein anderer das Gegenteil.

Werde jetzt mit einem CP probieren.

Gruss

Günter
 
Hallo guenni,

das DP/RS232 Link-Modul kann auch für Drucker verwendet werden.
Die Einsatzmöglichkeiten hängen von dem seriellen Protokoll ab.

Um den Fehler einzugrenzen solltest du:

1. Prüfen der seriellen Datenausgabe des DP/RS232 Moduls z.B.
mit Hyperterminal. Dazu Datenempfang in Datei speichern und
mit einem Hex-Editor ansehen.

Erhältst du die gewünschte Daten, auch mehrfach?
Falls nein, hast du ein Konfigurationsproblem im Modul oder
ein Ansteuerproblem im SPS-Programm.


2. Den Drucker/ Wandler mit Hyperterminal ansteuern und
Verhalten von Drucker prüfen.

Verhält sich der Drucker wie gewünscht? Falls nein,liegt es an
deinem Wandler oder an den Daten deiner Steuersequenz.

3. Paralelle Schnittstellen sind störempfindlich und sollten nicht
im industriellen Bereich verwendet werden. Falls nicht immer die
gleichen Zeichen ausgedruckt werden kann es an der Störempfindlichkeit
des Drucker liegen.
Manche Drucker kann man auch in einen HEX-Mode schalten. Dann
druckt der Drucker die gesendete Daten als HEX-Werte aus.
Dies ermöglicht eine besser Fehlersuche bei nicht druckbaren
Zeichen im Datenstring.

Gruß

Eumel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei mir ist es so:
Normale 'LinePrinter' (Stichwort: 'Nadeldrucker') lassen sich problemlos zeichen /zeilenweise über RS232 ansteuern. Mit RS232 über einfache Kabel auch bis weit über 50mtr. (Obwohl nicht vorgesehen)

Laserdrucker sind jedoch 'Seitendrucker'. Die benötigen anundfürsich einen 'Treiber'. Über PLC6, PS (so ähnlich oder auch ganz anders) kann man die über die Handshakeleitung eines RS422 zu paralellwandlers ansteuern. Dieses Verfahren funktioniert mit allen HP (Laser)druckern am Point To Point Interface. Das DP/ RS232 Modul wird so gesehen Laserdrucker nicht richtig steuern können - schätze ich mal ?

Fritz
 
Fritz schrieb:
Laserdrucker sind jedoch 'Seitendrucker'. Die benötigen anundfürsich einen 'Treiber'. Über PLC6, PS (so ähnlich oder auch ganz anders) kann man die über die Handshakeleitung eines RS422 zu paralellwandlers ansteuern. Dieses Verfahren funktioniert mit allen HP (Laser)druckern am Point To Point Interface. Das DP/ RS232 Modul wird so gesehen Laserdrucker nicht richtig steuern können - schätze ich mal ?
Fritz
Soweit ich weis, können HP-Drucker auch einfach ASCII drucken, ohne Treiber und HP-PCL (printer control language). Da sie seitenweise Drucken, drucken sie entweder soviele Zeilen auf die Seite, bis eine voll ist oder man muß ihnen durch das Steuerzeichen "Form Feed" sagen, daß sie die teilvolle Seite drucken sollen.
Problematisch wird es, wenn dem Drucker nicht druckbare Zeichen gesendet werden. Das können die Trennzeichen sein, falls das Gateway sie weitergibt oder auch deutsche Umlaute. Der Drucker kann sie interpretiert sie möglicherweise als Umschaltung der Betriebsart oder er "hängt sich auf".
Das kann man aber klären, indem man ihn einfach an einen PC hängt. Der DOS-Befehl
copy con lpt1:
kopiert jeden Tastendruck auf die Pseudodatei des Druckers.
Einen Zeilenvorschub erreicht man durch Ctrl-J(line feed) und Ctrl-M(carriage return).
Einen Seitenvorschub durch Ctrl-L(form feed).
 
Nachtrag:
Wenn es soweit klappt, kann man auch den Seriell-parallel-Wandler dazunehmen und mittels
copy con com1:
Tastendrücke an die serielle Schnitstelle schicken. Die muß natürlich vorher mit den Passenden Übertragungsparametern eingerichtet werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Habe Drucker und Adapter getestet arbeiten korrekt.

Habe in meinem Datenübergabe ein paar Fehler entdeckt.

Wenn alles ok poste ich es.

Besten Dank für eure Mithilfe

Guenni
 
Problem gelöst

Habe heute die Kommunikation zum laufen gebracht.

Die Hauptprobleme waren folgende:

Ich habe nicht beachtet dass das 1 Byte von den Stringvariablen die Länge definieren deshalb hat der Drucker gemacht was er wollte.

Ausserdem müssen die Pakete immer gleichlang sein d. h. das letzte muss mit h2020 aufgefüllt werden.

Als Fazit:

Für Protokollierzwecke ist dieses Teil bedingt geeignet, solange es nur Text und keine grossen Erwartungen an das Layout gestellt wird ok. Aber
wenn noch Prozessvariablen angezeigt werden sollen wird es mühsam (wandeln Werte ins ASCII).

Guenni
 
Zurück
Oben