# Verbindung von zwei unterschiedlichen Steuerung



## S_Liner (9 Oktober 2020)

Hallo zusammen, ich stehe gerade wieder vor einem Projekt und bin mir gerade nicht sicher ob das so überhaupt umsetzbar ist. Ich arbeite in einem Glaswerk welches Flaschen herstellt. Für die Flaschen haben wir eine sogenannt NIS- Maschine der Firma Emhart, welche eine Jettersteuerung verbaut hat. Diese NIS- Maschine hat unter anderem 12 Station, die unabhängig laufen. Wenn alle Stationen laufen wird das Timing natürlich so berechnet, das die Flaschen alle fein säuberlich auf das Flaschen abführende Maschinenband gestellt werden. Ich kann aber auch einfach eine Station stoppen. Jede Station hat seine eigene Steuerung (Jetter JC647).

Wir haben uns nun eine Vorrichtung gebaut, die an einer Schiene hängt, und die Flaschenformen während der Produktion schmiert. Diese Vorrichtung wird von einer Siemens 315-2DP gesteuert. 
Nun wollen wir einen Messkopf an die Vorrichtung bauen um die Temperaturen der Formen zu ermitteln. Zur Zeit messen wir diese Händisch mehrmals die Schicht. 

Bei der Jettersteuerung werden die Ereignisse in Grad angegeben. Besser gesagt gibt man ein Fenster in Grad an. Z.B., Ventil "auf" bei 5 Grad und bei 10 Grad wieder "schließen". Zur Verfügung habe ich 360 Grad, dann beginnt es wieder bei 0. 


Jetzt soll ich mit meiner Siemenssteuerung  die Temperaturen der Formen messen und danach die Ventile für die Kühlung ansteuern. Zur Zeit liegt die Ansteuerung der Ventile bei der NIS- Maschine, wo die Zeitfenster (Öffnungsdauer des Ventils) händisch eingestellt werden. Ich kann auch nur in einem gewissen Zeitfenster das Ventil öffnen. 


Die Erste Frage die sich mir stellt ist, ob es aufgrund der scheinbar unterschiedlichen Arbeitsweisen der beiden Steuerungen es überhaupt möglich ist, dieses so umzusetzen. Denn ich habe kein wirkliches Interface. Ich kann meiner Siemens CPU maximal 1, oder 2 Digitale Signale übermitteln. Ich müsste doch dann die Siemens CPU mit jeder Station synchronisieren, denn die Stationen laufen ja unabhängig voneinander. Das Arbeitsfenster indem ich das Ventil öffnen könnte kann ich mir immer aus der Steuerung ablesen, nur müsste meine CPU dann wissen wann die Jettersteuerung an Station X bei Grad X ist. Und das scheint mir irgendwie doch etwas schwierig zu realisieren. 


Ich schreibe das hier um einfach abzuchecken ob es prinzipiell einen Weg gibt dies zu realisieren. Denn der ein oder andere wird das sicherlich kennen, ein spontanes nein wird nicht akzeptiert. 


Beste Grüße


----------



## Mrtain (9 Oktober 2020)

Damit ich das verstehe, die Ansteuerung der Ventile soll jetzt die Siemens übernehmen?
Und mit Grad meinst du die Temperatur oder Winkel?


----------



## S_Liner (9 Oktober 2020)

Hallo Mrtain,



> Damit ich das verstehe, die Ansteuerung der Ventile soll jetzt die Siemens übernehmen?


Genau



> Und mit Grad meinst du die Temperatur oder Winkel?



Nein, also eine Station besteht aus 10 Servomotoren inkl. Umrichter. Wenn du die Station schneller machen willst, änderst du nicht die Geschwindigkeitsvorgabe, sondern gibst an, in welcher Zeit die Der Motor den vorgegeben Weg zurücklegen soll. Es sind ja immer die gleichen Abläufe um eine Flasche herzustellen. Als erstes geht immer die Form zu, der Befehl Form zu startet bei 0 Grad. Jetzt sage ich das die Form bei 10 Grad geschlossen sein soll.  Hätte ich jetzt 15 Grad angeben, würde die Form langsamer schließen. Das ist sozusagen das Timing. Für jeden Mechanismus, jede Bewegung wird das Timing angegeben und nicht die Sollposition, Geschwindigkeit oder sonstiges. Bei 360 Grad steht die Flasche auf dem Maschinenband und es geht wieder von vorne los.

Es wird nicht wie bei einer Taktkette geprüft ob der Schritt beendet wurde, bevor der andere Anfängt. Lässt du den nächsten Schritt zu früh oder zu spät starten knallt es. 

Hier mal zu anschauen um es sich besser vorzustellen:
https://www.youtube.com/watch?v=tTPYaFEXhZQ&ab_channel=RmoonJl


----------



## Mrtain (9 Oktober 2020)

Sehr imposant 

Also die JC647 ist soweit ich weiß, in Jetter angekündigt. Aber die kann mit dem entsprechenden Submodul auch Profibus, allerdings nur als Slave. Die I/O‘s werden wahrscheinlich über SB-I - Modul per Can angestreuert. Die Frage ist, ob noch Platz ist für ein weiteres Modul, bzw. ob man die noch bekommt?
Wenn die aktuelle Gradzahl immer in ein Register geschrieben wird, könnte man versuchen, diese mit einer neueren Jetter Steuerung auszulesen. Sollte über die eigenen Jetter NetCopy-Befehle machbar sein. Von der neuen Steuerung aus könnte man die Infos zb.  über OPC Zur Verfügung stellen oder man steuert die Ventile direkt mit der neuen Jetter an.
Eine weitere Möglichkeit wäre es, das entsprechende Register zum Beispiel über ein PC-Progamm auszulesen. Bei Jetter gibt es dafür eine dll.

Was ich vielleicht versuchen würde, wäre es, sobald eine Station in dem gewünschten Fenster ist, das diese einen Ausgang setzt, der dann auf einen Eingang auf der Siemens Seite geht.


----------



## S_Liner (9 Oktober 2020)

> Also die JC647 ist soweit ich weiß, in Jetter angekündigt


Ich denke mal das du abgekündigt meinst, ja das stimmt.



> Die Frage ist, ob noch Platz ist für ein weiteres Modul, bzw. ob man die noch bekommt?


Nein ich kann kein weiteres Modul hinzufügen



> Wenn die aktuelle Gradzahl immer in ein Register geschrieben wird, könnte man versuchen, diese mit einer neueren Jetter Steuerung auszulesen. Sollte über die eigenen Jetter NetCopy-Befehle machbar sein.


Dazu bräuchte ich dann aber sicherlich ein paar Infos vom Hersteller bzw. vom Programmierer oder? 



> Eine weitere Möglichkeit wäre es, das entsprechende Register zum Beispiel über ein PC-Programm auszulesen. Bei Jetter gibt es dafür eine dll.


Also was das angeht bin ich wissenstechnisch völlig raus



> Was ich vielleicht versuchen würde, wäre es, sobald eine Station in dem gewünschten Fenster ist, das diese einen Ausgang setzt, der dann auf einen Eingang auf der Siemens Seite geht.



Ja das ist auch eine meiner ersten Ideen gewesen. Das Fenster ist aber nur der Rahmen in den ich mich bewegen kann. Das Fenster zum Kühlen wäre wenn die Form geschlossen ist und das Glas noch nicht in der Form ist. Das heißt aber nicht das die ganze Zeit gekühlt wird. Bei kleinen Flaschen (wenig Glas) würde ich die Form zu stark kühlen wenn ich das ganze Fenster nutzen würde. 


Vielen Dank schon mal für deine Hilfe

Gruß


----------



## Heinileini (9 Oktober 2020)

S_Liner schrieb:


> 1. Bei der Jettersteuerung werden die Ereignisse in Grad angegeben. Besser gesagt gibt man ein Fenster in Grad an. Z.B., Ventil "auf" bei 5 Grad und bei 10 Grad wieder "schließen". Zur Verfügung habe ich 360 Grad, dann beginnt es wieder bei 0.
> 
> 2. Denn ich habe kein wirkliches Interface.
> 
> ...


Zu 1.:
Wenn ich von Grad in Zusammenhang mit modulo 360 lese, gehe mal davon aus, dass WinkelGrade gemeint sind und wir es hier mit sich periodisch wiederholenden Ereignissen zu tun haben.
Ausgelöst durch NockenScheiben, KurvenScheiben oder ähnlich, vergleichbar mit einer SpielUhr.
Das Hochzählen der GradZahl geschieht in einem ZeitTakt und der bestimmt, wie schnell der periodische Ablauf ausgeführt wird.

Zu 2.:
Sehr schlecht.

Zu 3.:
Sehr gut, wenn Du aus Deinen 10 Stationen lediglich die ZeitTakte empfangen und die Gradzahlen der 10 Zähler in der Siemens mit denen der 10 Stationen synchronisieren willst. Dann benötigst Du auch nur (minimal) 2 Bit pro Station, vorausgesetzt die Zähler in den Stationen zählen in immer nur in einer Richtung und vorausgesetzt, Du kannst damit leben, dass bis zum Erreichen der Synchronisation der Zähler bis zu 359 ZählImpulse pro Station "ins Leere gehen" dürfen, ohne dass dadurch die Flaschen zerdeppert werden oder was auch immer.

Zu 4.:
Die Synchronisation dürfte unbedingt erforderlich sein. Schwierig wird es wahrscheinlich, wenn Du in den Stationen nicht nachrüsten kannst, dass sie "nutzlose" Impulse nur zwecks Synchronisation ausgeben können sollen. 

Benötigst Du die JetterSteuerungen der Stationen überhaupt noch, oder sollen deren Funktionen auch durch die Siemens übernommen werden?


----------



## S_Liner (10 Oktober 2020)

Hallo Heinileini,



> Ausgelöst durch NockenScheiben, KurvenScheiben oder ähnlich, vergleichbar mit einer SpielUhr.



Als es noch keine Steuerungen gab, wurden die ersten Glasmaschinen von großen Trommel, wo Nocken drauf waren, gesteuert. Genauso wie du es beschriebst. Das mit den Gradzahlen hat man bis heute behalten.




> Benötigst Du die JetterSteuerungen der Stationen überhaupt noch, oder sollen deren Funktionen auch durch die Siemens übernommen werden?


Nein nein, ich möchte nur ein Ventil zur richtigen Zeit ansteuern. Der Rest bleibt so wie es ist. 





> Schwierig wird es wahrscheinlich, wenn Du in den Stationen nicht nachrüsten kannst, dass sie "nutzlose" Impulse nur zwecks Synchronisation ausgeben können sollen


Ich habe noch ein paar freie Ausgänge, die lassen sich konfigurieren. 



> Sehr gut, wenn Du aus Deinen 10 Stationen lediglich die ZeitTakte empfangen und die Gradzahlen der 10 Zähler in der Siemens mit denen der 10 Stationen synchronisieren willst. Dann benötigst Du auch nur (minimal) 2 Bit pro Station


So richtig verstehe ich nicht ganz wie ich das dann synchronisieren kann


----------



## Heinileini (10 Oktober 2020)

S_Liner schrieb:


> So richtig verstehe ich nicht ganz wie ich das dann synchronisieren kann


An der Station gibst Du den Takt aus, mit dem die Gradzahl erhöht wird.
Mit den z.B. negativen Flanken dieser Impulse erhöhst Du in der Siemens den der Station zugeordneten Zählerstand um jeweils 1. 

Ausserdem gibst Du ein zweites Signal an der Station aus, wenn eine bestimmte Gradzahl (z.B. 0) in der Station erreicht wird.
Mit diesem Signal setzt Du in der Siemens Deinen Zähler für diese Station auf den entsprechenden Wert und hast ihn auf diese Weise mit dem Zähler in der Station synchronisiert. 

Z.B.:

```
Flanke := ZählImpuls And Not ZählImpulsVorher ; // Alternative für pos. Flanke
Flanke := Not ZählImpuls And ZählImpulsVorher ; // Alternative für neg. Flanke
ZählImpulsVorher := ZählImpuls ;
If Flanke Then
    If Not SyncSignal Then
        Zähler := (Zähler + 1) MOD 360 ; // MOD 360 sorgt dafür, dass auf 359 der Zählerstand 0 folgt
    ElsIf Zähler <> GradSync then // GradSync ist die GradZahl, auf die synchronisiert werden soll
        Zähler := GradSync ;
        IstSync := True ;
        WarSync := False ; // Synchronisation war noch nicht bzw. nicht mehr gegeben
    Else
        IstSync := True ;
        WarSync := True ;
    End_If ;
End_If ;
```


----------



## S_Liner (10 Oktober 2020)

Wow, dass du für jedes Problem immer gleich ne Lösung hast ist sehr imposant!! Respekt!

Aber das Taktsignal werde ich von der Maschine nicht bekommen. Um auch eines klar zu stellen, der Maschinenhersteller wird mir da nicht helfen oder Unterstützung leisten. Von daher müsste man das anders machen. 

Was hältst du von dem Lösungsansatz das ich den Zeitraum von 0-360 berechne? Wir stellen die Geschwindigkeit in Flaschen je Minute ein. Angenommen wir produzieren 300 Flaschen die Minute. Diese werden aber über 12 Stationen produziert. 

Also muss ich dann ja 300 Flaschen / 12 Stationen rechnen. 
Eine Station produziert aber 2 Falschen auf einmal, was ich dann ja sicherlich auch nochmal berücksichtigen müsste oder? 
Also produziert eine Station 12,5 Flaschen die Minute. 
Das würde ich nun auf die 360°aufteilen was 0,03472 ergibt. In Sek umrechnen = 34,72 Sek in MS = 34720ms wäre dann die Zeit von 0-360°
Ich könnte mir bei 0° auch einen Impuls geben lassen um die Siemens CPU synchron zu halten. Ein Dauersignal wenn sie läuft habe ich bereits für meine Schmierung.

Irgendwie in diese Richtung hatte ich gedacht. Oder meinst du das dies nicht so gut ist bzw. funktionieren könnte? 


Beste Grüße


----------



## Mrtain (10 Oktober 2020)

Die Ventile werden ja zurzeit von der Jetter angesteuert, könntest du deren Ausgangssignal nicht irgendwie abgreifen und benutzen?


----------



## S_Liner (10 Oktober 2020)

Hallo Mrtain, 
ja das wird kein Problem. 

Mir gehts jetzt erstmal nur um die Softwareseitige Lösung und ob es überhaupt realisierbar ist mit meinen Gegebenheiten..


Vielen Dank u. Beste Grüße


----------



## Heinileini (10 Oktober 2020)

S_Liner schrieb:


> Was hältst du von dem Lösungsansatz das ich den Zeitraum von 0-360 berechne?
> 34720ms wäre dann die Zeit von 0-360°
> Ich könnte mir bei 0° auch einen Impuls geben lassen um die Siemens CPU synchron zu halten. Ein Dauersignal wenn sie läuft habe ich bereits für meine Schmierung.


Ich versuche jetzt nicht Deine Berechnung nachzuvollziehen, aber es ist schon nicht schlecht, dass wir jetzt eine Vorstellung davon haben, wie lang eine Periode in etwa dauert.
Ich würde die Siemens CPU die zeitlichen Abstände zwischen 2 SyncImpulsen messen und daraus den Takt berechnen lassen. Aber wirklich geheuer wäre mir das dennoch nicht.



Mrtain schrieb:


> Die Ventile werden ja zurzeit von der Jetter angesteuert, könntest du deren Ausgangssignal nicht irgendwie abgreifen und benutzen?


Wie viele Eingänge brauchen wir dafür an der Siemens pro Jetter-Steuerung? Haben wir wirklich nur 2 zur Verfügung, von denen wir schon 1 für das Sync-Signal benötigen?
Wir hätten den Vorteil, dass wir pro Periode wahrscheinlich mehrere Punkte hätten, auf die wir uns synchronisieren könnten.
Wir hätten den Nachteil, dass die Beobachtung der Ventile durch die Siemens recht aufwändig werden könnte und auch immer mit umgestellt werden müsste, wenn die Ansteuerung der Ventile in den Jetter-Steuerungen geändert werden sollte.

Könntest Du mal eine Aufstellung oder eine Grafik machen, welches Ventil bei wieviel Grad eingeschaltet und bei wieviel Grad ausgeschaltet wird?
Und auch, wenn schon absehbar, wann das eine Ventil von der Siemens ein- bzw. ausgeschaltet werden soll.
Die Ventile dürfen ruhig Ventil1 bis z.B. Ventil10 heissen. Welche Bedeutung sie für den Prozess haben, ist für uns nicht wichtig - Hauptsache Du kannst sie dann noch zuordnen. 
Wie viele Eingänge kannst Du an der Siemens denn pro Station noch "spendieren"?


----------



## S_Liner (13 Oktober 2020)

> Die Ventile werden ja zurzeit von der Jetter angesteuert, könntest du deren Ausgangssignal nicht irgendwie abgreifen und benutzen?


Entschuldige meine Antwort dazu, habe das irgendwie falsch gelesen gehabt. Man könnte diese sicherlich Problemlos auf meine Siemens umlegen. 



> Wie viele Eingänge brauchen wir dafür an der Siemens pro Jetter-Steuerung?


Nun ja, ich verwende zur Zeit 2 Signale. Ein dauerhaftes wenn die Station läuft und ein Impuls wenn meine Schmierung starten soll. 




> Könntest Du mal eine Aufstellung oder eine Grafik machen, welches Ventil bei wieviel Grad eingeschaltet und bei wieviel Grad ausgeschaltet wird?


 Es handelt sich immer nur um 1 Ventil je Station. Der Winkel variiert stark nach Flasche und Geschwindigkeit der Maschine. Ist so pauschal gar nicht zu sagen. 



> Wie viele Eingänge kannst Du an der Siemens denn pro Station noch "spendieren"?


Hardwareseitig habe ich 128 Eingänge, von denen noch 87 frei sind. Zumal ich überlege eine ET200M in einem neuen Schrank unterzubringen um nicht alle Kabel in meinen Schaltschrank zu quetschen. Dann wäre man natürlich noch freier bei der benötigten Anzahl an Eingängen. 

Wo wir nicht so frei sind, sind die Signale die mir die Jettersteuerung geben kann. Ich benötige eigentlich 3 Signale wenn ich mein Projekt mit der Schmierung abgeschlossen habe. Mehr als  2 Signale (Events) werden wir dann nicht mehr erstellen können. 


Beste Grüße


----------



## Heinileini (13 Oktober 2020)

S_Liner schrieb:


> Es handelt sich immer nur um 1 Ventil je Station. Der Winkel variiert stark nach Flasche und Geschwindigkeit der Maschine. Ist so pauschal gar nicht zu sagen.


Damit hat sich dann der Vorschlag erledigt, die VentilAusgänge der Stationen in der Siemens auszuwerten.


----------



## S_Liner (13 Oktober 2020)

Mmh, ok. Ich dachte mir schon das dies generell unter einem schlechten Stern steht. 
Aber vielen Dank das Ihr eure Gedanke dazu mit eingebracht habt. Mal sehen wo das Projekt noch hingeht. 


Beste Grüße


----------



## Mrtain (13 Oktober 2020)

Und der Maschinenbauer ist nicht bereit, da entgegenzukommen?


----------



## Heinileini (13 Oktober 2020)

S_Liner schrieb:


> Mir gehts jetzt erstmal nur um die Softwareseitige Lösung und ob es überhaupt realisierbar ist mit meinen Gegebenheiten.


Hmmm. Das ist ja der Haken an der Sache, ob es "überhaupt realisierbar ist mit Deinen Gegebenheiten". Die Untouchables (Software und Hardware der Stationen) einerseits und die Beschränkung der Eingänge Siemens-seitig auf 2 bereits anderweitig belegte pro Station. 
Zuerst die Software-seitige Lösung finden, ohne die Gegebenheiten abklopfen und etwaige "AufbohrMassnahmen" in Betracht ziehen zu dürfen ... da bin ich ja gespannt, zu welcher Software-seitigen Lösung das führen soll.
Mittlerweile ist mir auch nicht mehr klar, wie es mit dem SchmierImpuls ablaufen soll. Einerseits hast Du an der Siemens 1 Eingang pro Station für diesen Zweck und andererseits muss die Siemens den Zeitpunkt für die Schmierung erraten, schätzen oder möglichst berechnen? Welche Information liefert der Eingang wirklich?


----------



## S_Liner (15 Oktober 2020)

> Und der Maschinenbauer ist nicht bereit, da entgegenzukommen?


Nein. Die sagen nimm unsere Lösung. Als erstes müssten wir eine Lizenz erwerben die diese Funktionen in der Visualisierung freischaltet. Dann müssten wir die dazugehörige Hardware kaufen, die wir auch nur über den Maschinenhersteller mit gewaltigem Aufpreis erwerben können. Das alles zusammen macht es einfach zu teuer. Der Kosten- Nutzenfaktor geht da nicht auf.



> Mittlerweile ist mir auch nicht mehr klar, wie es mit dem SchmierImpuls ablaufen soll. Einerseits hast Du an der Siemens 1 Eingang pro Station für diesen Zweck und andererseits muss die Siemens den Zeitpunkt für die Schmierung erraten, schätzen oder möglichst berechnen? Welche Information liefert der Eingang wirklich?



Nein, ich nutze für den Schmiermechanismus 2 Signale je Station. 1 Dauersignal was anzeigt, das die Station läuft und einen Impuls der den Schmiervorgang startet. Den Impuls gebe ich einmal manuell über die Glasmaschine vor. Dieses Ereignis wird dann mit den Jobs hinterlegt der Glasmaschine gespeichert.


----------

