Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 29

Thema: Drucker anschließen an SPS, aber wie...?

  1. #11
    Registriert seit
    04.02.2007
    Beiträge
    2.544
    Danke
    167
    Erhielt 731 Danke für 528 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hast du die ersten Treads durchgelesen ?

    Du musst dir erst einmal im klaren sein, ob du Etikett im Drucker speicherst und dann nur die variablen sendest , oder immer das komplett ausgefüllte Etikett.
    ich nehmer immer das gesamte Etikett.
    Dazu erstelle ich das Etikett mit der Zebra Software und teste es. Dort wo die variablen Texte stehen setzte ich Platzhalter ein z.B. TT.MM.JJ für das Datum.
    Wenn das passt drucke ich dieses nicht mehr zum Drucker, sondern an die SPS. Dazu wird der CP Empfang eingeschaltet und die Daten in einen DB geleitet. Dort steht nun das komplette Etikett zur Verfügung.
    Wenn man den DB überprüft kann man schnell das Ende der Daten erkennen.
    Dies ist die länge zum senden.
    Zum testen gibt man nun einfach beim Send den DB und die Länge an.
    Wenn das funktioniert hat man die hälfte schon geschafft. Nur ermittelt man im DB die Adressen der Platzhalter und ersetzt vor dem Drucken diese durch die gewünschten Einträge.

  2. #12
    Registriert seit
    29.04.2010
    Beiträge
    72
    Danke
    15
    Erhielt 11 Danke für 8 Beiträge

    Standard

    ein cab-Drucker wäre auch möglich, da können auch über die serielle Schnittstelle die zu druckenden DAten gesendet werden.

  3. #13
    Registriert seit
    03.08.2006
    Ort
    Münsterland
    Beiträge
    262
    Danke
    10
    Erhielt 6 Danke für 4 Beiträge

    Standard

    Hi,
    so langsam bin ich dahinter gestiegen. Der Drucker wird aber erst nächste Woche geliefert, dann kann ich es auch testen. Zwei Fragen noch:
    1. Muss in jedem DB jedes einzelne Zeichen als Char stehen oder gibts auch ne andere Möglichkeit?
    2. Können auch Zeichen frei bleiben? Z.B. definiere ich für ein Feld z.B. 'Name' 20Zeichen und lege im DB halt 20 Byte dafür an. Jetzt habe ich aber nur einen Namen mit 5 Zeichen, können die restlichen Byte dann mit Leerzeichen gefüllt werden? Akzeptiert der Drucker das?

  4. #14
    Registriert seit
    04.02.2007
    Beiträge
    2.544
    Danke
    167
    Erhielt 731 Danke für 528 Beiträge

    Standard

    Ich hatte mal angefangen das in Teile zu zerlegen.
    Code:
    Header
    Zeile 1 Kommando
    Zeile 1 Text
    Zeile 1 Abschluss
    ...
    Zeile x Kommando
    usw
    Wenn ich das z.B. als Angestellter in einer Firma machen müßte und öfters so ein Drucker kommt, würde sich die einmalige Arbeit sicher lohnen. Da ich das aber beim Kunden mache und mit meiner Lösung sehr schnell zum Ziel komme ist es für mich bei meinen Festpreisangebot am einfachsten. Würde ich das über eine bequemen Baustein machen würden meine Kunden den nehmen und alles in Zukunft selber machen.

    Prinzipell kannst Du sobalt dein DB klar ist die Struktur anpassen.
    Wichtig ist das du z.B. für Datum 10 stellen deklarierst in diese auf jeden Fall mit Leerzeichen (hex20 Dez 32) füllst, ein Hex0 führt zu einem Fehler.

    Werden am WE mal einen DB einstellen, mit und ohne Struktur als Beispiel.

  5. #15
    Registriert seit
    04.02.2007
    Beiträge
    2.544
    Danke
    167
    Erhielt 731 Danke für 528 Beiträge

    Standard

    Der DB muss nicht zwingend Char sein, kann auch Array[..] of char sein,wenn man aber was anderes als Char nimmt z.B. Byte oder Word, kann man mit den Zahlen nicht so viel anfangen.

    Den Drucker gibt es aber als 200,300dpi und ZPL oder EPL.

    So sieht als Muster ein ZPL Etikett mit Barcode aus:
    Code:
    ^XA~TA000~JSN^LT0^MMT^MNW^MTD^PON^PMN^LH0,0^JMA^PR4,4^MD0^JUS^LRN^CI0^XZ
    ^XA^LL0750
    ^PW1200
    ^FT390,390^A0N,58,57^FH\^FDhh:mm^FS
    ^FT71,390^A0N,58,57^FH\^FDTT.MM.JJJJ^FS
    ^FT319,201^A0N,58,57^FH\^FD######^FS
    ^FT319,106^A0N,58,57^FH\^FDXXXXXXXXXXXXXXXXXXXX^FS
    ^FT496,201^A0N,58,57^FH\^FDkg^FS
    ^BY4,3,236^FT87,665^BCN,,Y,N
    ^FD>:BBBBBBBBBBBBBBBBBBBB^FS
    ^FT71,201^A0N,58,57^FH\^FDGewicht  :^FS
    ^FT71,106^A0N,58,57^FH\^FDName     :^FS
    ^PQ1,0,1,Y^XZ
    Man könnte jetzt auf die Idee kommen, mit mehreren Array of Char den Aufbau so zu zerlegen, das immer ein zu füllendes Feld einen Symbolischen Namen bekommt. Aber hier liegt eine Siemens eigene Gefahr, denn die DB's werden Wortweise verwaltet, sollte eine Variable z.B. 7 Zeichen lang sein, so würde das 8. Byte nicht angezeigt. Dies wäre folglich im Normalfall mit w#16#0 belegt. Als Folge davon funktioniert das Etikett nicht mehr.

    Ich nehme daher meist einenm DB z.B. mit 300 Zeilen Char, dadurch habe ich auch die Möglichkeit Kommentare zu den Zeilen zu schreiben. (siehe Bild2)

    Beim senden wird nun dieser DB mit der entsprechenden Länge gesendet.
    Vorher verändert man noch die variablen Texte im Etikett. Aber Achtung wenn diese Texte mal länger oder kürzer sein sollten, z.B. bei String sollte man vorher den Bereich mit Leerzeichen füllen.

    Nur mal als Muster : hier werden im DB141 die Daten für das Etikett eingetragen: Die Fehlertexte werden aus einem DB geladen , Die Fehlernummer gibt die Position an, hier sind die Texte aber schon 22 Zeichen lang, und mit Leerzeichen aufgefüllt. Bei bedarf kann ich dir auch ein Muster einstellen für das auslesen aus einem String.
    Code:
          L     B#16#10                     // für alle S7
          T     LB     0
          L     B#16#2                      // Bytezugriff
          T     LB     1
          L     22                          // Länge
          T     LW     2
          L     143                         //DB  wo die Fehlertexte stehen
          T     LW     4
          L     22                          // Position Fehlercode
          L     "SR-NIO_Pumpen".BandPosition[1].Fehler_Nr    // Laden Fehlernummer aus aktuellen Satz
          *I                                // Mit der Länge multiplizieren
          L     8
          +I                                // Offset im DB
          L     22
          -I                                // Eintrag fängt mit 1 an nicht mit 0
    
          SLD   3
          T     LD     6
          L     B#16#84
          T     LB     6
          CALL  "BLKMOV"
           SRCBLK :=#Zeiger1
           RET_VAL:=#tINT
           DSTBLK :=P#DB141.DBX167.0 BYTE 22    // Fehlertext im Label
    
    
          CALL  "BLKMOV"                    // Seriennummer übertragen
           SRCBLK :=P#DB146.DBX38.0 BYTE 5
           RET_VAL:=#tINT
           DSTBLK :=P#DB141.DBX90.0 BYTE 5
    
          L     "SR-NIO_Pumpen".BandPosition[1].Tag    // Tag
          T     DB141.DBW  317
          L     "SR-NIO_Pumpen".BandPosition[1].Monat    // Monat
          T     DB141.DBW  320
          L     "SR-NIO_Pumpen".BandPosition[1].Jahr    // Jahr
          T     DB141.DBW  323
          L     "SR-NIO_Pumpen".BandPosition[1].Werker    // Werker
          T     DB141.DBW   82
          NOP   0
    Angehängte Grafiken Angehängte Grafiken
    Geändert von jabba (23.05.2010 um 11:21 Uhr)

  6. #16
    Registriert seit
    03.08.2006
    Ort
    Münsterland
    Beiträge
    262
    Danke
    10
    Erhielt 6 Danke für 4 Beiträge

    Standard

    Hi,
    danke erst mal für deine Mühe. Hast du auch Erfahrung mit der Anbindung per Ethernet? Im Prinzip funktioniert es dort genau so oder?

  7. #17
    Registriert seit
    04.02.2007
    Beiträge
    2.544
    Danke
    167
    Erhielt 731 Danke für 528 Beiträge

    Standard

    Hab ich zwar noch nicht bei einem Drucker geamacht, könnte man aber mit Hyperterminal schnell prüfen ob es geht wenn der Drucker da ist.

    Prinzipiell bleibt die Art und Weise gleich, nur die Anbindung ist anders.
    Hier muss man dann beachten ob PN-CPU oder CP wegen verschiedener Bausteine.
    Auch muss man in diesem fall erst einmal ein Verbindung aufbauen, und dann senden. Dazu gibt es hier aber einige Beispiele.

  8. #18
    Registriert seit
    03.08.2006
    Ort
    Münsterland
    Beiträge
    262
    Danke
    10
    Erhielt 6 Danke für 4 Beiträge

    Standard

    Ist man eigentlich auf den Printserver von Zebra angewiesen oder kann man auch einen anderen nutzen? Jemand schon Erfahrung? Die von Zebra sind ja seehr teuer.

  9. #19
    Registriert seit
    03.08.2006
    Ort
    Münsterland
    Beiträge
    262
    Danke
    10
    Erhielt 6 Danke für 4 Beiträge

    Standard

    Hi,
    soo der Drucker ist heute endlich angekommen. Habe auch gleich einen Printserver besorgt. Über den Etiketten Designer funktioniert das Drucken auch einwandfrei. Jedoch wird es von der SPS noch nicht akzeptiert. Zum einen ist fraglich welchen Port ich einstellen muss und muss am Ende des Etiketts noch irgendwas gesendent werden das quasi als "Ende" erkannt wird und gedruckt wird? Auch wenn ich die Datei per Hyperterminal sende reagiert der Drucker noch nicht.

    Andi

  10. #20
    Registriert seit
    04.02.2007
    Beiträge
    2.544
    Danke
    167
    Erhielt 731 Danke für 528 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Was ist das denn für ein Printserver ?
    Wenn du den extra besorgt hast, wie ist der denn mit dem Zebra verbunden ?

    Um die Kommunikation rauszukriegen könnte man ja das TCP/IP Protokoll mitschneiden und mal ansehen.

    Wenn der Drucker im Windows ja geht, kannst Du unter
    Drucker-> Anschlüsse nachsehen welcher Port verwendet wird.

Ähnliche Themen

  1. S0 an SPS anschließen
    Von roberthaidi im Forum Simatic
    Antworten: 25
    Letzter Beitrag: 07.06.2013, 07:34
  2. Vss+ Vss- Gnd anschließen
    Von Anaconda55 im Forum Elektronik
    Antworten: 49
    Letzter Beitrag: 28.10.2008, 12:39
  3. ABB Veritron anschließen
    Von Atlantik im Forum Antriebstechnik
    Antworten: 1
    Letzter Beitrag: 30.04.2006, 15:11
  4. Antworten: 0
    Letzter Beitrag: 27.10.2005, 13:32
  5. TP anschließen
    Von Anonymous im Forum HMI
    Antworten: 2
    Letzter Beitrag: 07.06.2005, 06:24

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •