Hallo ich habe mal eine Frage ich Arbeite an einem ABB Schweißroboter und würde gerne ein Zähler einfügen damit ich am ende des Tages weis wieviel Teile ich gemacht habe wie mache ich das weiss da jemand Rat .
Ich danke im Vorraus
Hallo ich habe mal eine Frage ich Arbeite an einem ABB Schweißroboter und würde gerne ein Zähler einfügen damit ich am ende des Tages weis wieviel Teile ich gemacht habe wie mache ich das weiss da jemand Rat .
Ich danke im Vorraus
hallo
du machst dir ein merker z.b.
var num counter
und immer wenn du ein gutes teil ablegst
counter:=counter+1;
dann machst du dir noch einen taster z.b. DI Reset
und schreibst im permanenttask
If Reset=1 then
counter:=0;
Endif
also ich hoffe das hilft dir
Gruß Roboprog
Also roboprog, wennschon dann
PERS num Counter;
damit auch nach Stromausfall/Ausschalten der Zähler erhalten bleibt!
Gute Programmierer initialisieren Variablen, bevor sie sie das erste Mal benutzen!
Die Frage wo und vor allen wann Counter initialisiert wird, ist tatsächlich nicht trivial wenn du über PZtoMain drüberzählen willst!!!
Gute Programmierer achten beim Hochzählen auf Überlauf:
IF counter<8388628 THEN
counter:=counter+1;
ELSE
! Fehler Überlauf geht schneller als man denkt! siehe WINDOWS....
ENDIF
Wenn es wirklich ein Tageszähler sein soll, kannst Du aut. um Mitternacht resetten ( mit CDate()-Funktion vergleichen ob neuer Tag)
Meiner Meinung nach sollte aber die SPS zählen auf einer Flanke eines Eingangs der vom Robi bei jedem Teil gesetzt wird. Vorteil die SPS läuft zyklisch, kann den Wert auch gleich aufs Panel schreiben und beim Umrüsten oder Tastedruck im Bedienpult resetten. Damit bist Du auch unabh. davon, wie oft der Robi zwischenzeitlich neu gestartet oder abgeschalten wurde und musst nicht stur über Produktwechsel hinwegzählen, nur weil jemand den Resetknopf nicht gedrückt hat.
Außerdem hat die SPS meist die Anbindung ans ERP und da Reporting immer wichtiger wird, kann der Wert ggf. einfach hochgegeben werden!
Aber mal grundsätzlich zu Marvyn123456:
1. Aus Der Forumüberschrift geht Dein Problen überhaupt nicht hervor!
2. Du programmierst Schweißroboter und weißt nicht, wie man eine num-Variable deklariert, initialisiert und inkrementiert? Das macht mir schon Angst!!! Ich mein wir sind hier nicht bei Roboterselbstbau .de sondern reden von Industrierobotern! Schon mal was von der neuen Maschinenrichtlinie gehört?
Bist Du sicher das Du entsprechend qualifiziert bist? Glaubst DU es hilft Dir, wenn Du nun das Listing von roboprog in Deinen Robi reinoperierst?
Falls Du Praktikant bist, lass Dir bitte von Deinem Betreuer eine Dokumentation über Roboter und Steuerung geben!
Falls Du kein Praktikant bist, fordere Deinen Chef auf, Dich dringend zum Grundlagenlehrgang nach Friedberg zu schicken!!
Grüße dust2
Hallo Marvyn
eigentlich bin ich nicht der typ der ständig in foren schreibt, lese hier öfter mal und wenn ich ein problem habe schreibe ich auch .
das von roboprog sollte dir erst mal weiterhelfen, die bessere variate ist natürlich mit einer speichernden variablen (pers)
das war erst mal deine frage
nun zu dust2
hast du die weisheit mit löffeln gegessen. was redest du nur für ein mist???
jeder fängt mal klein an und ein forum ist nun mal da um fragen stellen zu dürfen, oder ist das hier nur für diejenigen ab einem bestimmten wissen. er wollte nur wissen wie man zählt nicht mehr und nicht weniger.
er ist halt neu, die nächtse frage wäre sicherlich gekommen, und es hätte bestimmt auch jemand gerne darauf geantwortet.
Zitat; Ich mein wir sind hier nicht bei Roboterselbstbau .de sondern reden von Industrierobotern! Schon mal was von der neuen Maschinenrichtlinie gehört?
ich habe noch von keiner roboterprogrammierrichtlinie gehört, kannst sie mir ja mal senden.
über dein beitrag kann man nur schmunzeln, was bist du nur für ein toller typ, echt klasse!
lese doch bitte mal das abschluss wort von sven weyer durch!
Hallo zusammen
dein name sagt alles !
aber warscheinlich hast du sonst nix zu sagen das du hier hilfsbereiten forum-schreibern
deinen müll ans knie nagelst
wenn du alles besser kanst dann mach doch dein eigenes forum auf !!
da kannst du dann chef spielen!!
nicht aufregen werner ist für jeden dankbar der hier weiterhelfen kann auch wenn es nur die basics sind !
Bissle freundlicher und alles ist wieder gut, OK ?
... kannst auch den Zähler auf dem Programmiergerät ausgeben lassen,
PERS num nCounter:=0;
nCounter:=nCounter+1;
TPWrite "STUECKZAHL >"\num:=nCounter;
und reset zum Beispiel auf zu Fuß über Programmiergerät Datentypen num auf 0!!!
bei ein paar deiner Ausführungen gebe ich dir zweifellos recht, aber der Ton
macht bekanntlich die Musik.... und da sehe ich durchaus noch Verbesserungs-Potential.
Eine Sache leuchtet mir hingegen nicht ein:
Alles anzeigen
[...]Gute Programmierer achten beim Hochzählen auf Überlauf:
IF counter<8388628 THEN
counter:=counter+1;
ELSE
! Fehler Überlauf geht schneller als man denkt! siehe WINDOWS....
ENDIF
[...]
Wie kommst du denn auf diesem Überlauf (oder hast du da nur wahllos etwas eingetippt ?)
Laut Handbuch sind bei ABB die NUMs nach ANSI IEEE 754-1985 (Single) kodiert (siehe http://de.wikipedia.org/wiki/IEEE_754),
d.h. die größte darstellbare Zahl liegt bei ca. 3,403·1038.
Selbst wenn der Prozess nonstop im Sekundentakt laufen würde (was beim Schweißen ja wohl selten der Fall sein wird),
wäre der Zählerstand nach einem Jahr bei 3,1536·107 (= 60*60*24*365).
D.h. der Zähler würde so ungefähr nach 1,08·1031 ( = 3,403·1038 / 3,1536·107) Jahren überlaufen.
Glaubt man der Annahme, dass unser Sonnensystem noch vielleicht 4-5 Milliarden (109) Jahre existiert,
hat der Zähler also noch ein wenig Luft nach oben.
Ich würde mich sogar zu der Aussage hinreißen lassen, dass, selbst wenn die Menschheit (und der Roboter) bis dahin
überleben und sie bei der Flucht aus dem zusammenbrechende Sonnenssystem die Schweißanlage mitnehmen würden,
der Zähler selbst bis zum Ende des Universums nicht überlaufen wird.
Ich glaube unter diesen Umständen würde ich mir eine Überlaufs-Prüfung sparen.
Gute Programmierer machen das ....
In diesem Sinne
gruß
rmac
:ylsuper: :ylsuper:
Hallo,
hatte wirklich lange überlegt, ob ich das mal so in aller Deutlichkeit sage! Habe bisher auch immer Fragen beantwortet ohne ein Wertung abzugeben! Aber irgendwie musste das an dem Abend mal raus!
War vielleicht zu brachial, wollte niemanden persönlich angreifen-was ich meines Ermessens auch nicht habe( im Gegensatz zu Anderen hier!) Ich stehe aber nachwievor zu dem was ich gesagt habe! Werde aber in Zukunft wieder neutral antworten! Letzendlich muss jeder selbst wissen, was er tut!
Wegen des Überlaufs hatte ich im technischen Referenzhandbuch beim datentyp num geschaut:
Der Datentyp num kann folgende Werte haben:
• eine Ganzzahl, z. B. -5,
• eine Dezimalzahl, z. B. 3,45.
Er lässt sich auch in Exponentialschreibweise ausdrücken, z. B. 2E3 (= 2*10^3 = 2000), 2,5E-
2 (= 0,025).
Ganzzahlen zwischen -8388607 und +8388608 werden immer als exakte Ganzzahlen
gespeichert.
Ich hatte auch im RAPID-Überblick keine weitere Angabe über die Datenbreite eines num gefunden, deshalb hielt ich es für sinvoll, dort zu begrenzen.
Die Frage, wo den nun counter im Listing von robprog das erste Mal auf 0 initialisiert werden soll, ist immer noch nicht beantwortet!!?? Wo würdet Ihr das tun, um auch über PZtoMain hinwegzählen zu können?
Hoffe-Alles wieder gut
dust2
Hi Zusammen,
grundsätzlich würde ich eine "PERS nCounter:=0;" als erstes als Definition einsetzen.
So die Rücksetzkriterien bestimmt die Verwendung. Wie hier schon angedeutet soll dies nur ein Tageszähler werden. Also liegt es auf der Hand die Tageszeit mit zu verwenden. Wie halt oben beschreiben. (CDate)
Ich für mein Teil würde noch ein rollierende Datenfeld verwenden am Besten aus 7 Feldern. Da eine Woche ja bekanntlich sieben Tage hat und dort für jeden der bestimmten Tage Mo.---So. die Tagesstückzahlen hinterlegen. Somit kann man zumindesten die letzten Daten nachsehen. Wäre doch blöd wenn man immer um 23:59 den Zähler ansehen müsste um zu wissen wieviel den nun getan worden ist, oder?
Gruß
Sven
Hi dust2,
[...]Letzendlich muss jeder selbst wissen, was er tut![...]
Yep, genau so ist es.
[...]Ganzzahlen zwischen -8388607 und +8388608 werden immer als exakte Ganzzahlen gespeichert. [...]
Das hatte ich bislang überlesen. Hab ich wieder was dazu gelernt. Thx...
[...]Die Frage, wo den nun counter im Listing von robprog das erste Mal auf 0 initialisiert werden soll, ist immer noch nicht beantwortet!!?? Wo würdet Ihr das tun, um auch über PZtoMain hinwegzählen zu können?[...]
Ich denke
PERS num nCounter:=0;
sollte hierfür ausreichend sein. Rücksetzen dann z.B. über das Panel.
Gruß
rmac
Hallo zusammen
nun möche ich auch noch mal meinen senf dazu geben !!
Danach ist das thema dann für mich erledigt !
1. ob nun var oder pers das ist nun wirklich jeden selbst überlassen !!!
vieleicht will man garnicht den pers-effekt !?!
also war das nicht falsch was ich da geschrieben habe !
2. wenn ich immer nur +/- 1 zähle wie soll da meine num ein real annehmen ??
einfach mal so ???
3. mit dem taster war nur ne fixe idee wie man auf die schnelle ein reset erzeugen kann (ist das falsch ????) !
natürlich kann ich das ding auch noch toll visualisieren kann auch ne fahne wackeln lassen bei jedem 10.teil
und mit dem reset kann man auch nen mondkalender programmieren da tut sich der zähler immer bei vollmond zurücksetzen
aber das war hier alles nicht die frage !!
und zum thema "wollte niemanden persönlich angreifen" dann hättest du dir aber auch deinen 1.satz
"Also roboprog, wennschon dann......" (das ist für mich persönlich) klemmen können!
Und jetzt schluß mit der scheiße ich kanns nicht mehr lesen was hier ab geht wegen so einer banalität !!
ich glaube wir sollten jetzt alle und uns auf andere fragen hier im forum konzentrieren !!!
MFG
Roboprog
PS Erfahrungen vererben sich nicht – jeder muß sie allein machen...
Hi,
[...]2. wenn ich immer nur +/- 1 zähle wie soll da meine num ein real annehmen ??
einfach mal so ???[...]
Braucht sie nicht annehmen, ist sie nämlich schon.....
Soll heißen: Ganzzahlen werden in RAPID nicht explizit in einem Ganzzahlen-Format (Integer) gespeichert,
sondern immer als Gleitkommazahlen.
gruß
und was gibt es da für ein problem ???
ich verstehe das ganze trara nicht für so eine simple anwendung wo nix verglichen oder berechnet wird ist das doch wohl egal
gruß
Doch, es gibt da ein Problem:
Ich habe mir die Sache nochmal durch den Kopf gehen lassen und
muß dust2 doch teilweise recht geben.
Ich revidiere mich zwar ungerne , aber andererseits möchte
ich hier auch nichts Falsches stehen lassen.
Wie schon gesagt, ist der (echte) Überlauf der NUM (=Single real) nicht das
Problem, aber der (Gleitkomma-)Zähler wird irgendwann mal so groß (> 16777216),
dass das Inkrement (+1) kleiner als die speicherbare Genauigkeit
(7-8 Stellen bei Single) wird. D.h. beim nächsten Inkrement fällt die +1
damit unter den Tisch und der Zähler zählt nicht mehr weiter sondern bleibt
bei 16777216 stehen.
Im Klartext: (num)16777216 + 1 = (num)16777216
Insofern wäre die Prüfung einer Obergrenze (wie von dust2 vorgeschlagen )
doch sinnvoll, allerdings dann erst bei 16777216.
Also wenn ihr mal einen Zähler habt, der (mit Inkrement +1 bzw. kleinen Inkrementen)
bei 16777216 stehen bleibt, dann wisst ihr jetzt warum....
Ziehe hiermit meinen Einwand also zurück....
gruß
rmac
ok
das sehe ich ein !!!
habe zwar noch nie eine schweißanwendung gesehen die 16777216 teile am tag produziert
aber ist ja auch egal !!
ich werde ab jetzt meine zähler auch beschränken
doch nur wenn ich vermute das ich auch in diesen bereich komme
denn sonst wird das prog doch ziemlich unübersichtlich
und ich bin nur noch damit beschäftigt aktionen zu programmieren die warscheinlich sowieso nie eintreten!
was für mich beruhigend ist das hier niemand außer dust2 das wuste mit dem überlauf
also brauche ich mir da keine vorwürfe zu machen das ich das bisher bei teilezählern nie gemacht habe!!
oder das hier irgendjemand ein schlechter programmierer währe!!
man lernt ja nie aus !
MFG
Roboprog
Hi,
der Überlauf war mir schon bekannt aber bei einem Tageszähler macht das, so wie Du schon sagst, keinen Sinn!
Hier im Forum gehts es nicht darum ein guter oder schlechter Programmierer zu sein! Hier geht es darum über Themen zu diskutieren, wie wir das ja auch gemacht haben, und eventuell, nach jedem persönlichen Bedarf, auch einen Information mit in sein alltägliches Programmiererleben mitzunehmen.
Also in dem Sinne weitermachen!
Gruß
Sven
Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können