Probleme beim Etikettendruck

blueColt

Level-1
Beiträge
90
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo.

Meine Anlage soll über R232 Schnittstelle einen CAB Drucker ansteuern. Leider hab ich aber folgende probleme. Habe dazu, in Anlehnung an ein funktionierendes Script, eigentlich nur meine Strings für die Verarbeitung übertragen, sonst das soweit genommen, was angeblich funktionieren söllte :\

1. Der Drucker druckt immer 2 Etiketten statt einem? Ansteuerung Erfolgt über den P_SEND Baustein

2. beim Datum sollte er das SPS Datum drucken, druckt aber immer 01.01.2090 :confused:

3. Stückzahl wird immer 0000 gedruckt, da die im originalprojekt als DINT war und ich die aber nur als DWORD hab... wie kann ich die denn umwandeln?


Falls ihr ne angabe noch braucht, einfach fragen, hab sicher die hälfte vergessen :rolleyes:
 

Anhänge

  • Test2.zip
    923,6 KB · Aufrufe: 19
Zuletzt bearbeitet:
Hi,
die Stückzahl die du meinst ist: "TP170_DB2".Allg.Stueckzahl_IO ,
die als Teile BCD in DB147.DBD16 landet ?
Wo wird das DB145.DBB8 geschrieben ? Im angehängten Projekt wird nur gelesen.
Gruß
Toki
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
die Stückzahl die du meinst ist: "TP170_DB2".Allg.Stueckzahl_IO ,
die als Teile BCD in DB147.DBD16 landet ?
Wo wird das DB145.DBB8 geschrieben ? Im angehängten Projekt wird nur gelesen.
Gruß
Toki

jops, die stückzahl der i.O. teile. Das Druckscript ist für DINT ausgelegt, ich hab aber nur WORD beim Zähler für die teile :\

DB145.DBB8 muss DB125.DBB146 heissen, hab ich nur beim oberen zum testen richtig hingeschrieben gehabt, müsste aber da überall stehn ;)
in die Adresse wird per SFC1 "Read_CLK" die Systemuhr gelesen. Diese kann ich im WINCC auch im Ausgabefeld sehen. Also nehm ich mal, dass da auch die richtige Zeit drin steht
 
Ist dein Projekt bis auf die angesprochenen Funktionen fertig?
Kannst du das Projekt noch einmal mit den passenden DB´s hochladen?
Die Stückzahl wird von DINT auf BCD gewandelt (FC10,NW5), lass die Wandlung weg und schreibe direkt in DB147.DBD16....
Gruß
Toki
 
Ist dein Projekt bis auf die angesprochenen Funktionen fertig?
Kannst du das Projekt noch einmal mit den passenden DB´s hochladen?
Die Stückzahl wird von DINT auf BCD gewandelt (FC10,NW5), lass die Wandlung weg und schreibe direkt in DB147.DBD16....
Gruß
Toki

Ja, soweit läufts, bis aufs Drucken eben ;)

hab die DB`s nochmal mit reingehauen. siehe Anhang

Du meinst den Dez Ausgang des Zählers oder den Dual-Ausgang direkt in DB147.DBD16?
 

Anhänge

  • Test2.zip
    923,6 KB · Aufrufe: 12
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi BlueColt,

Das Datum 01.01.2090 kann ich nachvollziehen.
Datum Teil 7+8 werden fest vorgegeben mit 20.
Der Rest ergibt aus der Grundeinstellung 01.01.1990 weil der DB höchstwarscheinlich nicht korrekt beschrieben wird. Habe andere Werte direkt reingeschrieben-die Programmierung ist OK.
Vom Zähler würde ich den DEZ Ausgang nehmen.
Weiter helfen kann ich dir allerdings nur wenn ich den Baustein habe der den DB125 schreibt.
Gruß
Toki
 
Systemzeit falsch

Hi BlueColt,

du hast im FC125 den SFC0 genutzt um mit Date_Time aus aus dem DB125.DBx138(D_T) die Systemzeit neu zu setzen. Dieser Eintrag steht auf 01.01.1990 . Daher steht deine Systemzeit sicher falsch.
Habe testhalber den Eintrag mit dem FC3 beschrieben und es funktioniert... (Siehe Bilder im Anhang).

Gruß
Toki
 

Anhänge

  • DB10.JPG
    DB10.JPG
    186,9 KB · Aufrufe: 24
  • FC125.JPG
    FC125.JPG
    121,1 KB · Aufrufe: 31
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber mit dem FC3 gibst du doch ein fixes Datum vor, oder? Nimmst also nicht immer die aktuelle Systemzeit, wenn ich das richtig sehe?

Also, SFC1 setzt ja nur auf knopfdruck (EN-Eingang) die Zeit neu. Und im WINCC hab ich ein E/A Feld, welches DB125.DBx138(D_T) "beschreibt".
Dort geb ich irgend ein datum ein und drücken "übernehmen", dann gibt er mir bei DB125.DBx146(D_T) (Ausgabefeld im WINCC) das in die CPU-Uhr grad eingeschriebene Datum aus.
 
Ok, so war es ja auch gemeint. Der FC3 sollte nur dein TP simulieren.
Also ich gehe jetzt davon aus das du soetwas wie ein MHD eingeben willst.
Du gibst also über das E/A Feld ein D_T (MHD) in das DB125.DBx138 ein.
Mit dem Bestätigen der Eingabe im E/A Feld ist der eingegebene Wert schon übernommen worden. Und das Feld dient gleichzeitig als Ausgabe...
Falls du eine zweite (gleiche) D_T Variable benötigst für die Ausgabe, dann würde ich die Variable kopieren indem ich sie mit dem SFC20 von DBx.138 nach DBx.146 schiebe.
Aber ich verstehe nicht warum du die Systemzeit verändern willst.

Gruß
Torsten
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Zähler

Da dein Zähler DEZ + Dual hat, gehe ich davon aus das du einen Standardzähler ( z.B.Z99 ) genommen hast. Du könntest auch einen SFB0 nehmen, der gibt dir direkt einen Int Wert aus. Den könntest du dann als DINT in DB146.DBD88 schreiben.

Code:
//teilnummer dez->bcd
      L     DB146.DBD   88
      DTB   
      T     DB147.DBD   16

oder du wandelst deinen BCD-Wert an passender Stelle von BCD_TO_DINT bevor du ihn ins DB146.DBD88 schreibst.
Oder du schreibst den BCD-Wert direkt ins DB147.DBD16 und nimmst die obrige Wandlung raus - so war das ursprünglich gemeint.

Gruß
Toki
 
Zuletzt bearbeitet:
Ok, so war es ja auch gemeint. Der FC3 sollte nur dein TP simulieren.
Also ich gehe jetzt davon aus das du soetwas wie ein MHD eingeben willst.
Du gibst also über das E/A Feld ein D_T (MHD) in das DB125.DBx138 ein.
Mit dem Bestätigen der Eingabe im E/A Feld ist der eingegebene Wert schon übernommen worden. Und das Feld dient gleichzeitig als Ausgabe...
Falls du eine zweite (gleiche) D_T Variable benötigst für die Ausgabe, dann würde ich die Variable kopieren indem ich sie mit dem SFC20 von DBx.138 nach DBx.146 schiebe.
Aber ich verstehe nicht warum du die Systemzeit verändern willst.

Gruß
Torsten


nein, das soll schon die aktuelle Uhrzeit des Prüflaufs werden, kein MHD o.ä.
Die Stellmöglichkeit dient nur, der sps-uhr ungenauigkeit entgegenzuwirken
 
oder du wandelst deinen BCD-Wert an passender Stelle von BCD_TO_DINT bevor du ihn ins DB146.DBD88 schreibst.
Oder du schreibst den BCD-Wert direkt ins DB147.DBD16 und nimmst die obrige Wandlung raus - so war das ursprünglich gemeint.

Gruß
Toki

Ja, normaler Vorwärtszähler.
na ist mein Dualwert vom Zähler denn BCD?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok, wenn deine Datenübergabe vom Touchpanel auf den SFC0 funktioniert, dann sollte auch allerdings auch der Rest deiner Programmierung funktionieren.
Wie genau benötigst du denn deine Uhrzeit? Wenn diese über das PG einmal passend synchronisiert wurde, ist diese auf Dauer schon sehr genau (keine Atomuhr aber schon sehr gut...)

Bleibt also das Problem das deine Systemzeit nicht zu stimmen scheint.
Toki
 
CV_BCD DEZ WORD E, A, M, D, L Aktueller Zählwert, im BCD-Format codiert. F1 Hilfe zum Baustein.
Hatte aber auch DEZ geschrieben.

Hast du PLCSIM ? Oder die Anlage zum Testen zur Verfügung ?
Diese Bit + Byte Akrobatik läßt sich im Akku 1+2 online schön beobachten.
Darüber verstehe ich meistens meine eigenen Probleme auch ganz gut.
Gruß
Toki
 
Anlage steht schon beim kunden. PLC Sim hab ich im moment nicht, da zu haus s7 nicht installiert und auf arbeit hab ich mir das heut auch überlegt, dass ich morgen mal mein chef ansprech, dass ich das haben will ;)

wie aktuell sie ist, tut ja nichts zur sache, oder versteh ich dich das falsch?
klar ist es keine atomuhr, aber möchte halt die möglichkeit, sie vertellen zu können (zeitzonen etc.) das dürfte ja aber keinen weiteren einfluss haben, oder?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Natürlich, Zeitzonen als möglichen Grund habe ich nicht bedacht.
Die PLCSIM-Version sollte natürlich zu deiner Step7 Version passen.
Aber der Kostenfaktor liegt glaube ich unter 500€.
Wenn man bedenkt was es kostet 1 Tag Arbeit zu "verlieren" oder 1 mal zusätzlich zum Kunden fahren zu müssen o.ä. , dann sollte dieser Invest selbst einem Kaufmann (Chef) einleuchten :).

Gruß
Toki
 
PLCSIM ist da :TOOL:

Ein Schnäppchen :D

So, das Datengeschiebe klappt in der Simulation jetzt alles :)

Nur mit dem doppelten Druckettikett hab ich noch keine Idee :\
 
Cool, dann ist ja für die Zukunft gesorgt.
Bleibt das Doppel_Etikett?!
Wo wird M150.1 gesetzt ? Wo wird M80.2 zurückgesetzt ?


Toki
 
Zuletzt bearbeitet:
Zurück
Oben