# PackML



## SY50 (18 August 2017)

Hallo,
Kennt sich jemand mit PackML aus?


----------



## Ralle (20 August 2017)

Auskennen ist gut, ich hab einmal vor 2-3 Jahren damit zu tun gehabt.
Es gibt dazu Lehrgänge und diverse Unterlagen.
Wir hatten das mit einer Simotion getestet, die Simotion-Leute haben sogar ein Programm, dass einem das Grundgerüst für die Simotion erstellt (echt prima!!!).
Wie immer, wenn man so einen Standard hat, ist der Überbau recht groß und oft genug nutzt man nur einen Bruchteil der Möglichkeiten.


----------



## SY50 (20 August 2017)

Ja hatte jetzt 1-2 Beispiele gesehen. Eben so Standard Beispiele mit nem Förderband usw.
Dort wurde dann aber in jeder Unit was ausgeführt... bspw. In dem Execute vom Band würde das Band an geschaltet usw.
Für einen schrittketten Ablauf ist das aber nicht so schön, wenn jeder Teil wo anders aktiviert wird und man müsste ja auch in der schrittkette wissen wann was passiert ist und dann wieder entsprechend reagieren. So ganz geblickt habe ich es noch nicht


----------



## marlob (21 August 2017)

Ich habe PackML für mehrere Projekte mit Simatic TIA umgesetzt. Ich habe da einiges an Infos zu. Was genau willst du denn wissen. Ich habe in all meinen Projekten auch immer ein oder mehrere Schrittketten von wo aus ich die CMs (Motoren, Ventile usw. ) ansteuere. Das ist dann nicht anders als ohne PackML.


----------



## SY50 (21 August 2017)

na habe bspw. ein Beispiel von Beckhoff gesehen, dort wurden wie üblich die Maschinen in kleinere Units unterteilt.
dann bspw. im "processing" die unit a im execute state aufgeführt, aber die achse wurde direkt in dem execute der achse aufgerufen. hatte als von der Haupt schrittkette der unit keinen zugriff auf die achse.
Meine Frage ist einfach, wie soll so etwas laut packml gelöst werden? hauptschrittkette in der unit? wenn ja, warum gibt es die states in den subunits (achsen usw.) 
und warum gibt es diese Modi auch für maual und maintenece? usw. verstehe den sinn davon noch nicht ganz.


----------



## marlob (23 August 2017)

Ich stelle am WE mal ein paar Dokumente über PackML zusammen und schicke sie dir. Eher schaffe ich es zeitlich leider nicht


----------



## SY50 (23 August 2017)

Das wäre top.


----------



## seeba (24 August 2017)

Würde mich auch interessieren!


----------



## SY50 (27 August 2017)

Konntest du schon was zusammenstellen?


----------



## marlob (28 August 2017)

Hier ein Link
https://www.evernote.com/pub/marlob74/packml


----------



## SY50 (29 August 2017)

Danke für die Dokumente.
Werde mal genauer rein schauen. Habe es gerade etwas überflogen. Von wem ist die Guideline? Dort werden ja auch diverse achsansteuerungen behandelt.
Dies ist aber ja auch von Hersteller zu Hersteller verschieden.


----------



## marlob (29 August 2017)

Man kann PackML auf verschiedene Arten implementieren. Bei den Dokumenten ist auch ein Beispiel von Siemens wo du mal reingucken kannst. Dies habe ich als Basis genommen und nach meinen Bedarf angepasst.
Die guideline ist von OMAC http://omac.org/corporate-members/


----------



## SY50 (30 August 2017)

Also könnte man auch ohne gegen irgendwelche PackML Normen zu verstoßen in einer "Unit" im Teil Execute und dem Mode Production eine Schrittkette laufen lassen, die direkt die Achsen ansteuert und nur die manual modes der Achsen in deren fb behandeln?
Hoffe es war verständlich.


----------



## marlob (1 September 2017)

In der Unit handele ich nur übergeordnete Sachen ab. Kommunikation mit Fremdsystemen usw. Alle CMs (Achsen usw.) werden einem Equipment zugeordnet. Ich lege immer eine allgemeine EM (Machine Control) an, wo dann alle allgemeinen CMs angesteuert bzw. ausgewertet werden (Z.B. Ein-Aus, Reset, Türen, Notaus, Lampen usw.) und eine evtl. übergeordnete Schrittkette.

Um deine Frage etwas genauer zu beantworten. Du kann im Unit Teil eine Schrittkette ablaufen lassen die die Achsen ansteuert. Etwas schöner finde ich, dafür eine EM anzulegen wie ich oben beschrieben habe


----------



## SY50 (1 September 2017)

Ich dachte mir jetzt, dass ich in der Unit ein fb für eine schrittkette instanziere, welcher über die Schnittstelle die Achsen ansteuert.
So. kann ich auch über vorhabe eines Jobs diverse Teile der schrittkette ausführen. Dachte mir auch einen fb für iOS und einen für störmeldungen anzulegen. Da müsste ich zwar viele inouts übergeben, aber das macht es modularer finde ich.
Was sagst du dazu? Was meinst du mit Ems? Meinst du damit fbs, wie ich?


----------



## marlob (5 September 2017)

Mit EM meine ich Equipment Module. Bei PackML wird die Analge in Module eingeteilt. Die Einteilung ist folgendermaßen von oben nach unten  

Enterprise
  |
Site
  |
Area
  |
Process Cell (z.B. eine Linie von mehreren Maschinen)
  |
Unit (Maschine: Abfüllanlage, Verpackung, Assembliermaschine usw.)
  |
Equipment Module (einzelne Einheiten der Maschine, eine Unit kann aus 1 oder mehrere Equipment Module EMs bestehen)
  |
Control Module (Motor, Servo, Sensor, Ventiel usw. eine EM besteht aus ein oder mehreren Control Modulen CM)

Wir machen unterere Einteilung von Process Cell abwärts. Die oberen Schichten sind für uns meist nicht relevant

Die unteren Module schicken ihren Status (Alarme, Zustände usw. nach oben) und die Commandos werden von oben nach unten geschickt.
Also z.B. die Unit sagt alles in Automatik nehmen, dann wird das weitergereicht an alle EMs und die reichen das weiter an alle CMs und umgekehrt schicken die CMs ihren aktuellen Status wieder nach oben. Gucke dir mal das Beispiel von Siemens an was ich mitgeschickt habe. Zumindest die pdf falls du kein Siemens S7 hast


----------



## SY50 (5 September 2017)

Ok, werde ich mir ansehen.
Also ich habe eine Maschine mit 4 Achsen, welche alle miteinander synchron arbeiten.
Das wäre ja eigentlich die cell, Unit und Equipment Modul in einem, oder?
Ich habe also jetzt einen FB angelegt, der die Maschine beinhaltet.
Darin sind fbs für die Achsen und ein fb für die schrittkette.
In dem "Unit FB" rufe ich im Execute Teil den fb für die schrittkette auf, welcher über seine Schnittstelle die Achsen ansteuert.
Ist dies so OK?


----------



## SY50 (6 September 2017)

Eine Frage stellt sich mir gerade noch. Habe jetzt einige Beispiele gesehen und es gibt überall den "UnitMode". Bedeutet das, dass wenn ich den Mode wechsle dies in der Unit passiert und ich dies nicht in jedem einzelnen CM machen muss? Dort gibt es dann nur den State?
Oder gibt es den Mode auch in jeder CM.
Eigentlich kann ja keine CM in einem anderen Mode sein wie die übergeordnete EM, bzw. Unit. Oder?

Ach ja. Habe mir gedacht, man sollte es vielleicht auch nicht übertreiben mit dem Aufteilen in EMs, oder? Gesundes Mittelmaß ist hier bestimmt auch wieder mal gut.
Habe mir so gedacht, ich teile alles in ein EM auf, mit welchen Bspw. Achsen ich ein teilprodukt raus bekomme.
Meiner Meinung nach macht es zum Beispiel keinen Sinn eine kontinuierliche Verpackungsmaschine, welche folienabzug, Hub und Siegelung im kurvenverbund hat zu unterteilen.
Es wäre für mich eine EM mit den 3 Achsen als CM. Denn keine der Achsen liefert ohne die anderen ein Produkt, dies funktioniert nur zusammen. Oder?

Was mir auch noch nicht wirklich klar ist, sind die Wechsel der Modi.
Befindet sich die Maschine im Manual Mode und im State Execute.... was muss man tun, um in den Produce Mode zu kommen? Abbruch betätigen und resetten????? Dann Start oder was ??? Das verwirrt mich etwas


----------



## marlob (7 September 2017)

SY50 schrieb:


> Ok, werde ich mir ansehen.
> Also ich habe eine Maschine mit 4 Achsen, welche alle miteinander synchron arbeiten.
> Das wäre ja eigentlich die cell, Unit und Equipment Modul in einem, oder?
> Ich habe also jetzt einen FB angelegt, der die Maschine beinhaltet.
> ...


Also eine Process Cell würde ich das nicht nennen. Das brauchst du auch nicht. Ob die 4 Achsen jetzt als eine EM mit je eine CM als Achse einteilst liegt an der Funktion der Maschine. Die kenne ich nicht.


----------



## marlob (7 September 2017)

SY50 schrieb:


> Eine Frage stellt sich mir gerade noch. Habe jetzt einige Beispiele gesehen und es gibt überall den "UnitMode". Bedeutet das, dass wenn ich den Mode wechsle dies in der Unit passiert und ich dies nicht in jedem einzelnen CM machen muss? Dort gibt es dann nur den State?
> Oder gibt es den Mode auch in jeder CM.
> Eigentlich kann ja keine CM in einem anderen Mode sein wie die übergeordnete EM, bzw. Unit. Oder?
> 
> ...


Die Unit gibt den Mode vor. Wenn du den Modus wechseln willst solltest du in STOP stehen. Dann kannst du den Modus wechseln. Ich habe meist einen Automatik-, Manual-, Service-, und DryRun-Modus.
In den CMs bestimmst du dann was in einem bestimmten Modus erlaubt ist (Starten, Stoppen, Initialisieren, Jogmodus, Interlock überbrückt oder nicht usw.)
Was die Einteilung in EM und CM betrifft muss man mehr von der Maschine wissen.


----------



## SY50 (7 September 2017)

marlob schrieb:


> Die Unit gibt den Mode vor. Wenn du den Modus wechseln willst solltest du in STOP stehen. Dann kannst du den Modus wechseln. Ich habe meist einen Automatik-, Manual-, Service-, und DryRun-Modus.
> In den CMs bestimmst du dann was in einem bestimmten Modus erlaubt ist (Starten, Stoppen, Initialisieren, Jogmodus, Interlock überbrückt oder nicht usw.)
> Was die Einteilung in EM und CM betrifft muss man mehr von der Maschine wissen.



Also gibt die Unit ihren aktuellen Modus direkt als Sollmodus an die EMs und diese wiederum an die CMs weiter?
Ich dachte mir jetzt, ich mache in den "Automatik Modi" die Ansteuerung der CMs über eine Schrittkette in der EM und im Manual mode wird die Ansteuerung direkt über eingänge der CM gehandelt.

Dachte mir dabei, dass ich so die CM unabhängig von den Automatik Funktionen behandeln kann. (Wieder verwenden  kann).

Oder haltet ihr es für "besser", wenn man alle Funktionen inden CMS abhandelt?
Dann quasie die Funktionen der CMs anstoßen und von jeder CM zurückmelden, wenn ihr schritt fertig ist und wenn alle cms fertig melden in der hauptschittkette einen schritt weiter springen?


----------



## SY50 (7 September 2017)

Glaube bei einem GM Standard war es auch so, dass man auch die Automatik in der Achse in einem "Automatik rang" macht.


----------



## wollvieh (7 September 2017)

KISS Regel beachten. 
Keep it simple and stupid...
;-)


----------



## SY50 (7 September 2017)

wollvieh schrieb:


> KISS Regel beachten.
> Keep it simple and stupid...
> ;-)



Was bedeutet das jetzt? 

Meint ihr also, am besten Hand und Automatik in der CM machen und eben dort nur entsprechend auf den mode, state und bspw. den schritt der schrittketten reagieren?


----------



## marlob (8 September 2017)

SY50 schrieb:


> Also gibt die Unit ihren aktuellen Modus direkt als Sollmodus an die EMs und diese wiederum an die CMs weiter?
> Ich dachte mir jetzt, ich mache in den "Automatik Modi" die Ansteuerung der CMs über eine Schrittkette in der EM und im Manual mode wird die Ansteuerung direkt über eingänge der CM gehandelt.
> 
> 
> ...


Mache ich auch so


----------



## SY50 (8 September 2017)

marlob schrieb:


> Mache ich auch so



Übergibst Du aus der EM Befehle an die CMs? => Dann müssten die CMs ja Eingänge haben, die ich über eine EM ansteuern kann.
Meine Überlegung war, dass ich die Schrittkette in der EM laufen lasse und dort werden nur die Schritte gehandelt.
Ich übergebe an die CMS nur 2 Werte. 1. Weche Schrittkette ist aktiv und 2. in welchem Schritt.
Alle Funktionen die dann die CM ausführen soll, werden direkt in der entsprechenden Methode der CM erledigt.
So müsste ich in der CM eigentlich nur unterscheiden zwischen Schrittkette aktiv oder nicht.

Bspw. Schrittkette "Roboterbeladung" ist aktiv in Schritt 10:

Hier weiß nun CM "X-Achse", dass Positionieren in Grundstellung angesagt ist.

Wenn alle CMS diesen Schritt beendet haben, springt die Schrittkette "Roboterbeladung" in der EM einen Schritt weiter.

Was hältst Du davon? Ist dies zu unübersichtlich, weil man in der Hauptschrittkette nicht direkt sieht was passiert, oder wäre das ein guter Weg, da man die CMs von einander abgekoppelt hat?

--------------------------------------------------------------------------------------------------------------------------------
Würde man alle CMs mit IN_OUT an die Schrittketten übergaben, hätte man natürlich den Vorteil, dass man direkt in der Schrittkette alle Informationen gleichzeitig verwenden kann.
Bin gerade hin und her gerissen. Auf der einen Seite ist es schön alles in der CM zu haben, auf der anderen Seite natürlich auch die komplette Logik "gebündelt" in einer Schrittkette zu haben.
Was haltet ihr denn für Sinnvoller, bzw. übersichtlicher?


----------



## SY50 (10 September 2017)

Habe mich jetzt dafür entschieden, dass die automatikfunktionen in der schrittkette realisiert werden und die handfunktionen in der cm der achse


----------

