Step 7 Viele Netzwerke mit Merkern einsparen.

tommylik

Level-2
Beiträge
115
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Ich habe folgenden Programmierung:

Screenshot.JPG

Der Ablauf ist wie folgt.

Ich möchte mit Hilfe des Eingangswortes die NIO Signale der Nähte auf der Visu anzeigen.
Die aktuelle Nahtnummer steht als Dezimalzahl in dem EW während des Schweissprozess.

Die NIO Auswertung macht das Personal nach dem Schweissen deswegen habe ich Setzmerker verwendet.
Die können dann bei Bedarf über einen Button zurück gesetzt werden.

Wegen dem Signalablauf habe ich, wie Ihr auf dem Foto seht, es nicht anders programmieren können. (Ausgehend von meinem Können)

Der Signalablauf ist wie folgt. Ich bekomme eine Nahtnummer die Vergleiche ich und Speichere mir das der Vergleich statt gefunden hat.
Ist die Naht fertig kommt die Auswertung ob IO oder NIO und der dementsprechende Setzmerker wird gesetz.

Jetzt das Problem warum ich so viele Setzmerker benutze.

Wenn ein NIO Signal ansteht (ca.2s) dann ist die Nahtnummer die zu diesem NIO Signal gehört schon abgelöscht.
Die SPS bekommt während der Auswertung von IO und NIO schon die neue Nahtnummer. (Taktzeit)

Jetzt zu meiner Bitte, besteht die Möglichkeit das in einem FB oder FC zu Programmmieren mit einer Schleife bis zur Fertigmeldung vom Roboter.

Etwa so in dieser Form:

Screenshot_2.JPG

Aber ich kann meine KOP Netzwerke nicht so einfach in einen Baustein umwandeln mit Zwischen speichern und Schleife hoch zählen nach dem
die Nahtnr. sich geändert hat. Und die IO und NIO Signale speichern in MW oder in einem DB.

In KOP habe ich auf alle Signale Zugriff und ein paar Netzwerke so zu programmieren ist ja nicht schlimm. Aber wenn man mehere Typen hat dann sind das
Hunderte von Nähten. Und für jede Naht ein Netzwerk dann habe ich eine Zeit lang was zu tun.

Wäre einer von Euch bereit mir zu helfen das ich mir arbeit ersparen kann?
Vielen Dank im voraus.

Mit freundichen Grüßen

tommylik
 
Wäre einer von Euch bereit mir zu helfen das ich mir arbeit ersparen kann? Vielen Dank im voraus.
Du meinst, ob jemand bereit wäre für dich die Arbeit zu tun ?
Aber ich kann meine KOP Netzwerke nicht so einfach in einen Baustein umwandeln mit Zwischen speichern und Schleife hoch zählen nach dem die Nahtnr. sich geändert hat. Und die IO und NIO Signale speichern in MW oder in einem DB.
Dafür gibt es auch SCL. VW akzeptiert das auch mit ausreichender Begründung.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Draco Melfoy,

Danke für deine Antwort.

Du meinst, ob jemand bereit wäre für dich die Arbeit zu tun ?

Nein, aber Tipps geben.
Hinweise auf Links von denen ihr wisst da gibt es schon ähliches.
Das wäre für mich schon mal ein Form vom helfen.
Ich würde es schon gerne alleine schreiben.

Dafür gibt es auch SCL. VW akzeptiert das auch mit ausreichender Begründung.

Kann ich noch weniger wie AWL. Und was hat das mit VW zu tun?

Mfg

tommylik
 
Hi tommylik,

Nein, aber Tipps geben.
Hinweise auf Links von denen ihr wisst da gibt es schon ähliches.
Das wäre für mich schon mal ein Form vom helfen.
Ich würde es schon gerne alleine schreiben.


  • Von Vorteil wäre hier mit SCL zu arbeiten wie schon erwähnt.
  • Zusätzlich wird hier am Besten eine Struktur Passen, der du die Daten direkt übergeben kannst (Nahtnummer, iO etc....)
  • Damit du mehrere Nähte verwalten kannst wirst du auch ein Feld (Array) brauchen. Dann kannst du z.B. über Naht.iO[3] im 3. Element die iO Variable deiner Struktur manipulieren.
  • Um mit den Feldern gut arbeiten zu können ist es Wichtig mit FOR-Schleifen zu arbeiten (auch sog. Zählschleifen) hier kannst du über die Zählvariable der Schleife (z.B. I) dein Feld ansprechen (Naht.iO). Damit ersparst du dir viel Schreibarbeit.



Wie du deine Aufgabe genau lösen möchtest ist dir natürlich überlassen, waren nur ein paar Anregungen die hier eventuell passen würden. Beim Programmieren führen ja bekanntermaßen viele Wege nach Rom ;)


Kann ich noch weniger wie AWL. Und was hat das mit VW zu tun?

Ich mutmaße mal, dass
Draco Melfoy hier Bezug auf eine Sache nimmt die ich auch schon öfter gehört habe. Zum Beispiel bei VW wird wohl recht viel in KOP programmiert (ob das wirklich so ist weiß ich nicht, habe es nur gehört und lasse mich gerne eines besseren beeinflussen) und viele (wie auch ich) finden KOP eine sehr seltsame / gruselige Sprache. Daher hab ich mir dein Programm oben auch nicht näher angeschaut.

Wenn du nur FUP kannst und auch nichts dazu lernen willst, dann solltest du alles so belassen.
:ROFLMAO:

Hier muss ich Cassandra recht geben. Es gibt nun mal Problemstellungen, die mit einer Sprache besser oder einfach zu lösen sind als mit einer Anderen. Wie das im Detail ist muss jeder selbst für sich entscheiden, was übersichtlicher für Fehlersuche oder z.B. besser ist um viele Daten zu bearbeiten.

Wenn du dich auf bestimmte Sprachen festlegst bzw. daran festhältst, dann wird es natürlich bei manchen Aufgaben wesentlich aufwändiger.

Gruß

Mavorkit
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn du nur FUP kannst und auch nichts dazu lernen willst, dann solltest du alles so belassen. :ROFLMAO:

Oder auf (jetzt kommt das böse Wort) TIA umsteigen.
In TIA kannst du die Aufgabe auch in KOP/FUP lösen.

Allerdings solltest du dich trotzdem mal mit SCL auseinandersetzen.
So wie die Neandertaler ausgestorben sind, werden reine KOP/FUP-Programmierer auch aussterben.
 
Kann ich noch weniger wie AWL. Und was hat das mit VW zu tun?

VW scheint der große Bruder von MW zu sein, wurde anscheinend beim
üblichen Spammen falsch gelesen.


Um nicht gleich in einer dir fremden Sprache arbeiten zu müssen,
wie währe es den wenn du für deine Routine einen FB schreibst und
diesen als Multiinstanz nutzt, dann wird das ganze ersteinmal grundsätzlich
schmaler und effektiver.
 
Und was hat das mit VW zu tun?
Es sind einfach recht viele Indizies die dich / dein Projekt irgendwo in der Automobilindustrie verorten lassen. KOP, Schweißnähte (Karrosseriebau ?!), Kennzeichnung der einzelnen Arbeitsschritte als "i.O.", Vorbehalte gegenüber höheren Programmiersprachen. Fehlt nur noch Graph Kette (wird wahrscheinlich auch dabei sein). Deswegen habe ich dazu geschrieben, daß VW bzw. VASS Leute auch SCL bei hinreichender Begründung akzeptieren. Und hier wäre ja genau so ein Fall. Am Hauptstandort gibt es auch ganze SCL Librarys für NIO-Erfassung, die werden auch empfohlen, da es in Zeiten von Industrie 4.0, EKS und Materialflußrechnern anders kaum geht, das sehen ja selbst die hartgesottenen KOP-Elektriker (Programmierer sage ich besser nicht zu dieser Spezie) langsam ein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo an alle,

@ alle

Tatsächlich bin ich mit KOP/FUP groß geworden, weil es nichts "anderes" gab, es wurde nur KOP wegen den Instandhalter zugelassen.
Das ist zum Beispiel bei VW so, da hast du Recht Draco Malfoy. Ich bin jetzt bei einem kleinen Autoteile Zulieferer.
Ich habe alles zur Verfügung AWL, SCL, Schrittketten mit Graph und KOP/FUP.

@Casandra

Du hast Recht wenn ich nichts dazu lernen will sollte ich es so belassen.
Ich habe mit KOP ein paar Netzwerke begonnen, weil ich an meine Kollegen gedacht habe.
Wir haben z.B. Mechaniker die kommen mit der SPS gar nicht klar.
Also übersichtlicher für Fehlersuche wie Mavorkit sagte.

Danach habe ich an mich gedacht weil ich die ganze Arbeit habe.
Daraufhin war mir klar das es in AWL oder in SCL geschrieben werden muß, wenn ich weniger Arbeit haben will.
Das bedeutet ich muß dazu lernen.

Deswegen habe ich mich an Euch gewandt, da ich "keine Ahnung" habe wie ich beginnen soll,
außer das man als erstes die Variabeln deklariert.
Ich werde mir mal die Anregungen von Mavorkit anschauen und was es sonst noch im WWW gibt.

Vielen Dank für Eure Antwort.

Mfg tommylik
 
Hallo tommylik,

ja klar, die „Instandhalter“ und die „Mechaniker“… das „Argument“ ist schon ziemlich abgedroschen.

Was machst du wenn ein Metzger, Bäcker oder Priester die Maschine warten soll?
Die können auch kein KOP oder FUP! :twisted:

Es gibt Konzepte, da braucht man nur lesen können. Die Maschine gibt in allen alltäglichen Situationen eine verständliche Fehler-Meldung in Textform aus. Erst wenn das nicht mehr der Fall ist, muss ein Spezialist her. Das sollte aber nicht jedes Jahr vorkommen, sonst hat jemand keinen guten Job gemacht.

LG Cassandra
 
Hallo tommylik,

vielleicht sollten wir noch mal von vorne anfangen. ;)
Bevor du dich auf eine Sprache festlegst, solltest du die Aufgabe noch mal genau ansehen.
Mir erschließt sich die Aufgabe aus deiner Beschreibung nicht richtig.

Woher kommen die NIO-Bewertungen?
Was macht das Bedienpersonal mit der Information?
Wer wechselt wann zur nächsten Naht?

LG Cassandra
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Casandra,

Vielen Dank für deine Antwort.
Es mag sein das das abgedroschen klingt aber so war es nicht gemeint.
Wir haben eine sehr gute Visu mit Fehlermeldungen. Und an Hand dieser
Fehlermeldungen können unsere Kollegen die mit der SPS nicht klar kommen
die Störungen sehr gut beseitigen. Ich meine die Fälle von Fehlern
wo die Visu nicht mehr ausreicht und man in die SPS schauen muss.
Die Fälle sind wenig da hast du schon Recht aber es macht für diese Kollegen einen
riesigen Unterschied aus ob Sie sich etwas in SCL oder in KOP anschauen müssen.

Ok hier noch mal etwas genauer.

Woher kommen die NIO-Bewertungen?

Der Roboter hat einen Laserkopf mit einer Kamera. Das Schweissen wird aufgezeichnet.
Während des Schweissprozess erkennt die Kamera z.B. Poren oder andere Fehler.
Das wird als NIO gewertet und der NIO Eingang wird auf 1 gesetzt.

Was macht das Bedienpersonal mit der Information?

Dieses NIO Signal will ich jetzt auf der Visu anzeigen lassen.
Das Signal muss speichernd sein bis das geschweisste Teil aus der Laserzelle kommt um vom Bedienpersonal
begutachtet zu werden. Auf der Visu sind Button um das NIO Signal wieder zurück zu setzen.
Es sind mehrere NIO Signale gleichzetig möglich.

Wer wechselt wann zur nächsten Naht?

Das ist genau das was ich am schlechtesten Erklären kann weil man das am besten Online sehen muss.

Also als ich mit der Aufgabe begonnen habe musste ich mir erstmal die Information besorgen in welcher Reihenfolge
werden die Nähte geschweißt und wie heißen sie. Es sind Naht Nummern und ich bekomme sie als Dezimalzahl über
ein Eingangswort an die SPS gemeldet.

Schön dachte ich wie kann ich jetzt die jeweiligen Naht Nummern dem richtigen Schweißobjekt zuordnen.
Das habe ich über einen Vergleicher gemacht der die Naht Nr. kontrolliert, der Vergleich wird mit dem richtigem
Typbit und dem Job vom Roboter angestosen.

Jetzt fehlte mir nur noch das NIO Signal zu speichern. Also habe ich den Vergleicher mit dem NIO Signal in Reihe mit einem Setztmerker verknüpft.
Danach habe ich mir das ganze Online angeschaut und was ist passiert als ein NIO Signal da war? Gar nichts. Warum wird der Setztmerker nicht gesetzt?
Das NIO Signal wird gegebenfalls kurz nach dem Schweißprozess auf 1 gesetzt. Dann ist aber die Naht Nr. nicht mehr da und somit ist der
Vergleicher auch nicht mehr gesetzt. Weil schon für die nächste Naht die nächste Nummer benötigt wird. Also musste ich mir den Vergleich auch speichern.

So, ich hoffe es ist verständlich. Vielen Dank nochmal für deine Antwort.

Mfg tommylik
 
VW scheint der große Bruder von MW zu sein, wurde anscheinend beim
üblichen Spammen falsch gelesen
Hallo Nagel, ich freue mich auch immer wieder über die ausgelassene & zutrauliche kollegiale Gesprächsstimmung hier im Forum. Immer schön, wenn auf etwas mal Verlass ist. Bei Dir weiß ich, daß du keine Gelegenheit auslässt, um mit Seitenhiebeleien und sinnfreien Einwürfen eine sachliche Diskussion in die Sesamstraße oder in den Spamkeller zu verlegen.
 
Hallo Nagel, ich freue mich auch immer wieder über die ausgelassene & zutrauliche kollegiale Gesprächsstimmung hier im Forum. Immer schön, wenn auf etwas mal Verlass ist. Bei Dir weiß ich, daß du keine Gelegenheit auslässt, um mit Seitenhiebeleien und sinnfreien Einwürfen eine sachliche Diskussion in die Sesamstraße oder in den Spamkeller zu verlegen.

Entschuldigung,
das liegt daran, das ich ein 63 Jähriger Betriebselektriker bin und nur Logo in KOP Programmiere.

... da kann man halt nichts machen, ist halt Altersstarrsinn!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Back to topic...

Ich habe das jetzt so verstanden.
Es wird etwas geschweißt. Das was geschweißt wird kann unterschiedlich sein.
An dem einen Teil mit Typ x werden mehrere Schweißnähte gesetzt. Zu jeder Schweißnaht gibt es eine Nummer und die Information IO/NIO.
Das Teil kommt herausgefahren und der nächste Prozess an Teil Y beginnt.
Du möchtest, dass die Bediener den Status der Nähte von Teil X am HMI sehen können. Teil Y wird währenddessen bearbeitet.
Du musst aber nur maximal die Daten von Teil X und Teil Y gleichzeitig speichern.

Dann würde ich das etwa so machen:
Ein UDT anlegen mit
- Nummer der Schweißnaht
- IO Bit
- etc.

2 DB anlegen. Einen für das Teil das bearbeitet wird, einen für das Teil welches begutachtet wird.
In dem DB gibt es das UDT als Array. Das Array muss mindestens so lang sein, wie es Anzahl von Schweißnähten an einem Teil geben kann.
Weiter wird dort die Typnummer eingetragen.

Bei Beginn der Bearbeitung den Zeiger auf das erste Feld im Array setzen.
In dem DB für die Bearbeitung beim Wechsel der Nahtnummer die Nahtnummer selbst und die IO-Information eintragen und den Zeiger auf das nächste Feld setzen.
Dort die nächste Naht eintragen.
Sobald der Bediener das nächste Teil freigibt, diesen DB in den DB für die Nachkontrolle kopieren.
Den DB anschließend mit 0 initialiseren.
usw.
 
Zuletzt bearbeitet:
Hallo Tigerente1974,

Vielen Dank für deine Antwort und Hilfe

Hier noch ein paar genauere Infos.
Es wird etwas geschweißt. Das was geschweißt wird kann unterschiedlich sein.
An dem einen Teil mit Typ x werden mehrere Schweißnähte gesetzt. Zu jeder Schweißnaht gibt es eine Nummer und die Information IO/NIO.

Ja es werden Bleche geschweißt. 2 Typen pro Station. 4 Stationen sind es. Jeder einzelne Typ hat unterschiedliche Anzahl von Nähten.

Du möchtest, dass die Bediener den Status der Nähte von Teil X am HMI sehen können. Teil Y wird währenddessen bearbeitet.

Der Bediener kann den Status von den Nähten 1:1 sehen.

Er kann auf der einen Seite der Visu sich den Status von Teil X anschauen was heraus gefahren wurde und alle Nähte sind z.B. IO.
Auf der anderen Seiteder Visu, kann er sich aber auch den Status von Teil Y anschauen, was gerade geschweißt wird
und er könnte schon sehen das z.B. die Naht mit der Nummer 7045 NIO ist obwohl das Teil noch nicht fertig ist.

Der Roboter schweißt die 1. Naht ist die Naht fertig kommt die Auswertung und Anzeige auf der Visu.
Während der Auswertung der 1. Naht schweißt der Roboter schon die 2. Naht usw. bis das ganze Teil fertig ist.

Ich hoffe ich habe alles gut erklärt. Ich möchte nicht das ihr unötige Hilfe leistet. Weil ihr es anders versteht als es ist.

Vielen Dank für deine Hilfe.

Mfg tommylik
 
Blech.jpg

Konkret könnte das in etwa so aussehen. UDT anlegen. 8x DB anlegen. 4x für aktelle Bearbeitung, 4x für fertige Teile.
Das Array für die Nahtnummern halt so oft, wie du es brauchen wirst.
Und dann in etwa so wie ich das oben beschrieben habe. So würde ich das aufziehen.
So lange es nicht zu viele Nähte je Blech sind, kannst Du die schön zu jedem Blech auf einer Seite am HMI projektieren.
 
Hallo Tigerente1974,

Vielen Dank für deine Hilfe und für die Grafiken.

Ich muß jetzt aber mal nach fragen weil mir einiges nicht so klar ist.

2 DB anlegen. Einen für das Teil das bearbeitet wird, einen für das Teil welches begutachtet wird.

z.B verstehe ich diese Idee nicht von dir mit den 2 DB's. Ich weiß nicht worauf du hinaus möchtest.

Das IO_Bit im UDT ist das für den Zeiger? Muß nicht auch das NIO Signal in den UDT?

Wäres es nicht auch Sinnvoll in dem FB als Output ein Array of Bool zu deklarieren, für die ganzen Merker die ich in der Visu
verwendet habe um den Status der Nähte anzuzeigen. Oder geht das nicht?

Ich bin nämlich auf der Arbeit auf die Idee gekommen das ich die Nahtnummer und den Vergleicher garnicht benötige.
Sondern nur den Typ der Station. Dadurch weiß der Roboter was er schweißen soll. Und wenn ich nicht falsch liege
brauche ich nur einen Zähler der die Anzahl der Nähte mit zählt die ich in dem FB als statische variabel als Anfangswert setzen kann.
Und mit dem IO oder NIO signal beschreibe ich dann im Array of Bool das richtig Bit entsprechd dem Zälerstand.

Ich habe das heute ausprobiert ein Array of Bool als Output zu deklarieren. Ich konnte dann aber nichts an dem Output dran parametrieren.
Ich wollte den Merkerbereich den für die Visu benutzen. (p#M6352.0 Bool 80) Oder muß man erst einen Pointer für den Output erstellen?

Vielen Dank noch mal für deine Hilfe und Mühe.

Mfg tommylik
 
Er kann auf der einen Seite der Visu sich den Status von Teil X anschauen was heraus gefahren wurde und alle Nähte sind z.B. IO.
Auf der anderen Seiteder Visu, kann er sich aber auch den Status von Teil Y anschauen, was gerade geschweißt wird
und er könnte schon sehen das z.B. die Naht mit der Nummer 7045 NIO ist obwohl das Teil noch nicht fertig ist.

Das hätte ich halt mit 2 DB gelöst. Einen für die aktuelle Bearbeitung und einen für die letzte Bearbeitung.
Da du 4 Stationen mit je 2 Bearbeitungszellen hast würd sich die Struktur so ergeben.
Ich habe das so verstanden, dass es mehrere Nahtnummern an einem Teil gibt. Der Bediener muss ja dann auch die Info über die Nahtnummer zusammen mit dem IO-Bit haben, um die am Bauteil verorten zu können. Deswegen das Array mit den beiden Strukturelementen Nahtnummer und IO-Bit.

Ob Du da jetzt einen bibliotheksfähigen Baustein mit entsprechender Schnittstelle machst ist Geschmackssache.
Da gibt es mehrere elegante Wege. Ich würde vermutlich einen SCL-Baustein mit 2 FOR-Schleifen machen.

Die Visu kann auch per Zeiger auf die Global-DB zeigen. Aus meiner Sicht eine runde Sache.
 
Zurück
Oben