Siemens
Siemens

Digital Industries, Motion Control, Machine Tool Systems

Z-Achsen Kraftregelung

Beitrag 01.09.2016, 15:23 Uhr
uk000599
uk000599
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 01.09.2016
Beiträge: 23
Hallo zusammen,

ich habe eine Maschine (Steuerung Siemens 840 D sl) welche die Z-Kraft während der X/Y Bewegung überwacht und permanent auf einer definierten Kraft halten soll. Wenn ich den Kraftverlauf im Anschluss auswerte (dieser mit mit 10 Hz seperat in einer csv erfasst) habe ich eine ordentlich Zickzacklinie mit einem periodischen Muster und großer Streuung vom Sollwert.

Der Regelalgorythmuss im Programm sieht wie folgt aus

N0102 STOPRE
N0104 R22 = 95 ; Force Set point
N0106 ID=3 WHENEVER ($A_IN[1]==0 AND ($A_INA[1] > ($R22+1))) DO POS[Z2]= IC(0.001) ; Excessive Load
N0108 ID=4 WHENEVER (($A_INA[1] < ($R22-1))AND (($AA_IW[Z2]) > -0.500)) DO POS[Z2]= IC(-0.001) ; Not enough Load
N0110 ID=1 WHENEVER (($A_IN[9]== 1) AND ($R22 < 1000)) DO INC_FORCE ; Force Increase
N0112 ID=2 WHENEVER (($A_IN[10]== 1) AND ($R22 > 0 )) DO DEC_FORCE ; Force Decrease


Ich kann zwar CNC Programmierung aber kein S7 , es wäre super wenn mir jemanden sagen kann was dort gemacht wird und was z.B. ID=3 bedeutet.

Vielen Dank!

Der Beitrag wurde von uk000599 bearbeitet: 01.09.2016, 15:27 Uhr
   
Beitrag 01.09.2016, 15:40 Uhr
nixalsverdruss
nixalsverdruss
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 16.11.2003
Beiträge: 1.511
QUOTE (uk000599 @ 01.09.2016, 16:23 Uhr) *
Ich kann zwar CNC Programmierung aber kein S7 , es wäre super wenn mir jemanden sagen kann was dort gemacht wird und was z.B. ID=3 bedeutet.

Vielen Dank!

Ich kann dich beruhigen dass hat nichts mit S7 zutun das ist NC CODE ( Synchronaktionen )

in diesem Handbuch findest du alles dazu
https://support.industry.siemens.com/cs/doc...94&lc=de-WW
   
Beitrag 01.09.2016, 17:15 Uhr
SeanClaud
SeanClaud
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 23.12.2014
Beiträge: 177
QUOTE (uk000599 @ 01.09.2016, 15:23 Uhr) *
Hallo zusammen,

ich habe eine Maschine (Steuerung Siemens 840 D sl) welche die Z-Kraft während der X/Y Bewegung überwacht und permanent auf einer definierten Kraft halten soll. Wenn ich den Kraftverlauf im Anschluss auswerte (dieser mit mit 10 Hz seperat in einer csv erfasst) habe ich eine ordentlich Zickzacklinie mit einem periodischen Muster und großer Streuung vom Sollwert.

Der Regelalgorythmuss im Programm sieht wie folgt aus

N0102 STOPRE
N0104 R22 = 95 ; Force Set point
N0106 ID=3 WHENEVER ($A_IN[1]==0 AND ($A_INA[1] > ($R22+1))) DO POS[Z2]= IC(0.001) ; Excessive Load
N0108 ID=4 WHENEVER (($A_INA[1] < ($R22-1))AND (($AA_IW[Z2]) > -0.500)) DO POS[Z2]= IC(-0.001) ; Not enough Load
N0110 ID=1 WHENEVER (($A_IN[9]== 1) AND ($R22 < 1000)) DO INC_FORCE ; Force Increase
N0112 ID=2 WHENEVER (($A_IN[10]== 1) AND ($R22 > 0 )) DO DEC_FORCE ; Force Decrease


Ich kann zwar CNC Programmierung aber kein S7 , es wäre super wenn mir jemanden sagen kann was dort gemacht wird und was z.B. ID=3 bedeutet.

Vielen Dank!


Servus,

ID == Synchronaktion nicht permanent
$A_IN[x] sind NC-Input Signale von der PLC... ich glaube 1-10 sind schnelle Signale.....

sofern ich mich nicht Irre smile.gif

Gruß
   
Beitrag 02.09.2016, 07:45 Uhr
uk000599
uk000599
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 01.09.2016
Beiträge: 23
Super, schon mal vielen Dank für die schnelle Hilfe!

Ich habe mich schon gewundert warum keine Schleife in dem Programm vorhanden aber nach durchsauen des Handbuches ist es klar - danke!

Ich übersetze die Sätze nun wie folgt:

N0104 R22 = 95 ; Force Set point --> Setzt meine Sollkraft

N0106 ID=3 WHENEVER ($A_IN[1]==0 AND ($A_INA[1] > ($R22+1))) DO POS[Z2]= IC(0.001) ; Excessive Load
--> Solange Eingang 1 UND AnalogEingang1 > als R22+1 Verfahre Z2 Inkremental um 0,001[/i]

N0108 ID=4 WHENEVER (($A_INA[1] < ($R22-1))AND (($AA_IW[Z2]) > -0.500)) DO POS[Z2]= IC(-0.001) ; Not enough Load
--> Solange AnalogEingang1 < als R22-1 Und Z2 > -0,5 Verfahre Z2 Inkremental um -0,001

N0110 ID=1 WHENEVER (($A_IN[9]== 1) AND ($R22 < 1000)) DO INC_FORCE ; Force Increase
--> Solange Eingang 9 UND R22 < 1000 erhöhe die Kraft

N0112 ID=2 WHENEVER (($A_IN[10]== 1) AND ($R22 > 0 )) DO DEC_FORCE ; Force Decrease
--> Solange Eingang 10 UND R22 < 1000 erhöhe die Kraft

Grundsätzlich ist sind mir die Zeilen klar, aber folgende Fragen habe ich noch

- was ist Eingang 1/9/10 - wie kann ich das raus bekommen?
- Arbeitet das Programm die Sätze von oben nach Unten ab oder nach den Gültikeitskennung (ID)

Ist es möglich mit den Synchronaktionen einen PI-Regler aufzubauen?

Vielen Dank für eure Hilfe
   
Beitrag 02.09.2016, 08:51 Uhr
SeanClaud
SeanClaud
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 23.12.2014
Beiträge: 177
QUOTE (uk000599 @ 02.09.2016, 07:45 Uhr) *
Grundsätzlich ist sind mir die Zeilen klar, aber folgende Fragen habe ich noch

- was ist Eingang 1/9/10 - wie kann ich das raus bekommen?
- Arbeitet das Programm die Sätze von oben nach Unten ab oder nach den Gültikeitskennung (ID)

Ist es möglich mit den Synchronaktionen einen PI-Regler aufzubauen?

Vielen Dank für eure Hilfe


Servus,

-die Eingänge 1,9,10 werden von der PLC gesteuert, also entweder schaust du im PLC Programm oder im Handbuch des Herstellers....
-nach Gültigkeitserkennung.....

-alles ist möglich smile.gif

LG
   
Beitrag 02.09.2016, 09:28 Uhr
uk000599
uk000599
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 01.09.2016
Beiträge: 23
QUOTE (SeanClaud @ 02.09.2016, 07:51 Uhr) *
Servus,

-die Eingänge 1,9,10 werden von der PLC gesteuert, also entweder schaust du im PLC Programm oder im Handbuch des Herstellers....
-nach Gültigkeitserkennung.....

-alles ist möglich smile.gif

LG


Das ist mir bewusst...ich stelle meine Frage anders: Ist es vernünftig z.B. einen PI Regler über die Synchronaktionen laufen zu lassen? Wie würde man es umsetzen?
   
Beitrag 02.09.2016, 10:20 Uhr
SeanClaud
SeanClaud
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 23.12.2014
Beiträge: 177
QUOTE (uk000599 @ 02.09.2016, 09:28 Uhr) *
Das ist mir bewusst...ich stelle meine Frage anders: Ist es vernünftig z.B. einen PI Regler über die Synchronaktionen laufen zu lassen? Wie würde man es umsetzen?


das ist eine gute Frage smile.gif

handelt es sich um eine Serienfertigung??? also werden viele gleiche Teile produziert??
bei Serienfertigungen macht es Sinn, eine Werkzeugbruchüberwachung zu haben, da gibt es so Manchen Hersteller, welcher den Vorschub adaptiv regelt..... kann, wenn man sich mit den Systemen auskennt, eine super Sache sein smile.gif natürlich kostet das auch etwas.....

ansonsten muss/kann man sich da was selber basteln.....
wie man das genau Aufbaut, weiß ich aus dem Stehgreif nicht smile.gif da müste ich selber in der DocOn nachsehen und ein bisschen spielen....

da gibt es sicher andere Forum Teilnehmer, welche da sicher um einiges tiefer drinnen sind smile.gif

aber ein guter Tipp, schau dir mal die DocOn CD oder DocOn Web an, da findet man ziemlich alles was man dazu braucht smile.gif

Gruß
   
Beitrag 02.09.2016, 11:46 Uhr
uk000599
uk000599
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 01.09.2016
Beiträge: 23
Bei der Anwendung geht es nicht um eine WZ-Bruch Überwachung, es ist kein Fräsprozess sondern Reibrührschweißen, hier wird dauerhaft im kraftgeregelten Betrieb der Z-Achse gefahren um Materialschwankungen, Inhomogenitäten, etc. auszugleichen.

Ich werde mal in der Technische Dokumentation nachschauen, bin über Unterstützung aus der Community dankbar wink.gif

Der Beitrag wurde von uk000599 bearbeitet: 02.09.2016, 11:47 Uhr
   
Beitrag 02.09.2016, 18:54 Uhr
DMC635V
DMC635V
Level 6 = Community-Doktor
******
Gruppe: Mitglied
Mitglied seit: 12.08.2010
Beiträge: 844
QUOTE (uk000599 @ 02.09.2016, 08:45 Uhr) *
- Arbeitet das Programm die Sätze von oben nach Unten ab oder nach den Gültikeitskennung (ID)

Genauer lesen wink.gif :
QUOTE
Bearbeitungsreihenfolge
Modal und statisch wirksame Synchronaktionen werden in der Reihenfolge ihrer ID- bzw.
IDS-Nummer (ID=<n> bzw. IDS=<n>) im Interpolationstakt bearbeitet.





QUOTE ( @ 02.09.2016, 08:45 Uhr) *
Ist es möglich mit den Synchronaktionen einen PI-Regler aufzubauen?

Dies sollte Grundsätzlich möglich sein. Du brauchst halt dann entsprechende Synchronaktionen. Dafür kannst du dir eine Positioniersatz sparen. So in etwa:
CODE
R20 = 0; controller enable
R22 = 95; force set point
R23 = 0.01; kp
R24 = 0.03; ki
R25 = 0; proportional part
R26 = 0; integral part
R27 = 0; output
R28=0.3; integral saturation
ID=1 DO $R20=0
ID=2 reglerabfragen DO R20=1
ID=3 WHENEVER R20>0.5 DO $R26=$R26+$R22-$A_INA[1] $R25=$R22-$A_INA[1]
ID=4 WHENEVER $R26>$R28 DO $R26=$R28
ID=5 WHENEVER $R26<(-$R28) DO $R26=-$R28
ID=6 WHENEVER R20>0.5 DO $R27=$R23*$R25+$R24*$R26
ID=7 WHENEVER R20>0.5 DO POS[Z2]= IC($R27)

Der Regler sollte nur in Betrieb sein wenn die Bewegung aktiv ist und die Teile schon Kontakt haben.


Eine andere Frage, habt ihr die Option "Fahren auf Festanschlag"? Eventuell würde es auch damit funktionieren.


--------------------
Freundliche Grüsse
DMC635V
   
Beitrag 02.09.2016, 19:25 Uhr
nixalsverdruss
nixalsverdruss
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 16.11.2003
Beiträge: 1.511
QUOTE (uk000599 @ 02.09.2016, 10:28 Uhr) *
Das ist mir bewusst...ich stelle meine Frage anders: Ist es vernünftig z.B. einen PI Regler über die Synchronaktionen laufen zu lassen? Wie würde man es umsetzen?

Ich würde es für gewagt halten die 3 Zeilen als Regler zu bezeichnen.(schon die R Parameter darin sind befremdlich)
PI Regler mit Synchronaktion ist möglich, aber nicht die erste Wahl, man sollte dazu eine CompileCycle greifen, den würde Siemens auf Anfrage erstellen. ( wird bei der Abstandsreglung von Laserköpfen angewendet, könnte man vielleicht verbiegen).
Mathematische Grundlagen zu Reglern gibt es auf Wiki ( möchte keine Vorlesung hier halten )

Zu den Eingängen , Der Analog Eingang wird sicher Hardware sein ( druckdose oder ähnliches) ob die Digital Eingänge auch Hardware sind wird man im Schaltplan sehen.
Das Prozessabbild dieser Eingänge wird im IPO Takt eingelesen. Ein befummeln in der PLC ist möglich aber eher kontraproduktiv da der PLC Takt wesentlich langsamer ist als der IPO Takt.
   
Beitrag 03.09.2016, 08:47 Uhr
CNCFr
CNCFr
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 15.09.2002
Beiträge: 1.922
QUOTE (nixalsverdruss @ 02.09.2016, 19:25 Uhr) *
Ich würde es für gewagt halten die 3 Zeilen als Regler zu bezeichnen.(schon die R Parameter darin sind befremdlich)
PI Regler mit Synchronaktion ist möglich, aber nicht die erste Wahl, man sollte dazu eine CompileCycle greifen, den würde Siemens auf Anfrage erstellen. ( wird bei der Abstandsreglung von Laserköpfen angewendet, könnte man vielleicht verbiegen).
Mathematische Grundlagen zu Reglern gibt es auf Wiki ( möchte keine Vorlesung hier halten )


Was ist daran gewagt, 3 Zeilen als einen Regler zu bezeichnen? Ein funktionsfähiger einfacher Regler braucht nicht mehr.
Dass die ursprüngliche Lösung heftig zum Schwingen neigt, verwundert mich nicht. Wenn ich das richtig sehe, ist da für die Position der Z-Achse ein reiner I-Rgeler mit Begrenzung der Stellgröße (auf 0.001mm) realisiert. Das kann kaum gut gehen.
Unabhängig davon: Es sind ja offensichtlich zwei von einander unabhängige Regler implemetiert, einer für die Position der Z-Achse und und einer für die Kraft. Wie funktionert das? Ich hätte vermutet, dass sich die Kraft automatisch aus der Zustellung der Z-Achse ergibt. Wenn man mit einer Achse gegen einen (mehr oder weniger elastischen) Anschlag fährt, kann man nach meinem Verständis die Position der Achse und die wirkende Kraft nicht unabhängig voneinander einstellen.
Bei dem Kraftregler gibt es die Ausdrücke "DEC_FORCE" und "INC_FORCE". Damit wird ja anscheinend irgendwie die Kraft verringert bzw. erhöht. Wie funktioniert das?
   
Beitrag 03.09.2016, 11:28 Uhr
nixalsverdruss
nixalsverdruss
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 16.11.2003
Beiträge: 1.511
QUOTE (CNCFr @ 03.09.2016, 09:47 Uhr) *
Was ist daran gewagt, 3 Zeilen als einen Regler zu bezeichnen? Ein funktionsfähiger einfacher Regler braucht nicht mehr.
Dass die ursprüngliche Lösung heftig zum Schwingen neigt, verwundert mich nicht. Wenn ich das richtig sehe, ist da für die Position der Z-Achse ein reiner I-Rgeler mit Begrenzung der Stellgröße (auf 0.001mm) realisiert. Das kann kaum gut gehen.

Das haste dir ja selbst beantwortet
QUOTE (CNCFr @ 03.09.2016, 09:47 Uhr) *
Unabhängig davon: Es sind ja offensichtlich zwei von einander unabhängige Regler implemetiert, einer für die Position der Z-Achse und und einer für die Kraft. Wie funktionert das? Ich hätte vermutet, dass sich die Kraft automatisch aus der Zustellung der Z-Achse ergibt. Wenn man mit einer Achse gegen einen (mehr oder weniger elastischen) Anschlag fährt, kann man nach meinem Verständis die Position der Achse und die wirkende Kraft nicht unabhängig voneinander einstellen.
Bei dem Kraftregler gibt es die Ausdrücke "DEC_FORCE" und "INC_FORCE". Damit wird ja anscheinend irgendwie die Kraft verringert bzw. erhöht. Wie funktioniert das?

Das Reibschweißen ist halt keine triviale Anwendung, ich habe zwar noch keine Reibschweiß Anlage Programmiert oder IBN durchgeführt, Ich bin mir sicher das die Störgrößen sich stark verändern während des Prozesses .
Möglicherweise wird in "DEC_FORCE" und "INC_FORCE“ nur der R95 verändert.

Solange man nicht alles von der Anlage kennt ist es nur Kaffeesatz lesen.

Die eigentliche Frage des TE ist ja wohl beantwortet es geht mit Synchronaktionen , CC ist die bessere Wahl da ich damit in den Achsregler eingreifen kann.
   
Beitrag 03.09.2016, 14:41 Uhr
DMC635V
DMC635V
Level 6 = Community-Doktor
******
Gruppe: Mitglied
Mitglied seit: 12.08.2010
Beiträge: 844
QUOTE (uk000599 @ 02.09.2016, 08:45 Uhr) *
- was ist Eingang 1/9/10 - wie kann ich das raus bekommen?

Wenn man die Zeilen so anschaut könnten es drei Freigabewerte / Knöpfe sein. Wenn IN1 0 ist wird die Kraft aufgebaut. Wenn IN9 betätigt ist wird die Sollkraft erhöht (bis max. Wert 1000). Wenn IN10 betätigt ist wird die Sollkraft verringert (bis min. Wert 0).
Sind denn an der Maschine irgendwelche Betätigungsschalter / Knöpfe? Ansonsten wie nixalsverdruss schrieb, Schaltplan lesen oder eben beim Hersteller nachfragen.


QUOTE (nixalsverdruss @ 02.09.2016, 20:25 Uhr) *
Ich würde es für gewagt halten die 3 Zeilen als Regler zu bezeichnen.(schon die R Parameter darin sind befremdlich)
PI Regler mit Synchronaktion ist möglich, aber nicht die erste Wahl, man sollte dazu eine CompileCycle greifen, den würde Siemens auf Anfrage erstellen. ( wird bei der Abstandsreglung von Laserköpfen angewendet, könnte man vielleicht verbiegen).
Mathematische Grundlagen zu Reglern gibt es auf Wiki ( möchte keine Vorlesung hier halten )

Zu den Eingängen , Der Analog Eingang wird sicher Hardware sein ( druckdose oder ähnliches) ob die Digital Eingänge auch Hardware sind wird man im Schaltplan sehen.
Das Prozessabbild dieser Eingänge wird im IPO Takt eingelesen. Ein befummeln in der PLC ist möglich aber eher kontraproduktiv da der PLC Takt wesentlich langsamer ist als der IPO Takt.

Anstelle von R-Parametern könnten ja auch GUDs verwendet werden. Diese müssen jedoch über MD freigeschaltet werden. Ein Vorteil wäre hier dann auch, dass z.B. die Reglerfreigabe über eine BOOL Variable gelöst werden kann.
Oder gibt es noch andere Möglichkeiten Hauptlaufvariablen für Synchronaktionen zu definieren?

Den Begriff CompileCycle habe ich auch schon gehört, man findet jedoch nicht so viele Informationen darüber. Können diese nur von Siemens/OEM erstellt werden, oder gibt es auch eine Möglichkeit für Anwender solche selbst zu erstellen?
Wie sieht das aus? Sind diese vorkompiliert und müssen deshalb nicht von der NC interpretiert werden?


QUOTE (CNCFr @ 03.09.2016, 09:47 Uhr) *
Was ist daran gewagt, 3 Zeilen als einen Regler zu bezeichnen? Ein funktionsfähiger einfacher Regler braucht nicht mehr.
Dass die ursprüngliche Lösung heftig zum Schwingen neigt, verwundert mich nicht. Wenn ich das richtig sehe, ist da für die Position der Z-Achse ein reiner I-Rgeler mit Begrenzung der Stellgröße (auf 0.001mm) realisiert. Das kann kaum gut gehen.
Unabhängig davon: Es sind ja offensichtlich zwei von einander unabhängige Regler implemetiert, einer für die Position der Z-Achse und und einer für die Kraft. Wie funktionert das? Ich hätte vermutet, dass sich die Kraft automatisch aus der Zustellung der Z-Achse ergibt. Wenn man mit einer Achse gegen einen (mehr oder weniger elastischen) Anschlag fährt, kann man nach meinem Verständis die Position der Achse und die wirkende Kraft nicht unabhängig voneinander einstellen.
Bei dem Kraftregler gibt es die Ausdrücke "DEC_FORCE" und "INC_FORCE". Damit wird ja anscheinend irgendwie die Kraft verringert bzw. erhöht. Wie funktioniert das?

Dies ist nicht mal ein I-Regler, sondern ein einfacher Zweipunkteregler. Entweder wird in eine Richtung oder in die andere Richtung um einen fixen Wert verfahren. Hierbei gibt es eine kleine Hysterese (in seinem Beispiel 2N oder Äpfel oder ... (Bei der Abfrage R22+-1)). So funktioniert z.B. auch ein einfacher Thermostat, entweder ist die Heizung ein- oder ausgeschaltet. Die Istgrösse hat bei einem solchen Regler immer eine Art Sägezahnprofil.
Bei einem I-Regler würde sich der Wert im POS Satz entsprechend der Sollwertabweichung verändern. Das wäre dann wie bei meinem PI-Regler einfach ohne den proportionalen Anteil (R25 und R23). Wichtig bei allen diskreten Reglern mit I-Anteil ist es ein Windup zu verhindern. Dies geschieht bei mir über die Variable integral saturation (R28). Da sonst der Integralanteil in Situationen wo die Stellgrösse nicht erreicht werden kann sehr grosse Werte annimmt, wodurch das Regelverhalten stark verschlechtert wird. Hierbei können grosse Schwingungen entstehen oder sogar instabile Zustände erreicht werden. Die von mir benutzte Anti-Windup Methode ist eine einfache Begrenzung. Hierdurch ist der Regler nicht mehr linear. Es gibt jedoch auch andere Anti-Windup Möglichkeiten. Bei analogen Reglern ist ein Anti-Windup bereits durch die entsprechenden Komponenten (z.B. Kondensator) gegeben.


--------------------
Freundliche Grüsse
DMC635V
   
Beitrag 03.09.2016, 17:15 Uhr
nixalsverdruss
nixalsverdruss
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 16.11.2003
Beiträge: 1.511
QUOTE (DMC635V @ 03.09.2016, 15:41 Uhr) *
Anstelle von R-Parametern könnten ja auch .............
Oder gibt es noch andere Möglichkeiten Hauptlaufvariablen für Synchronaktionen zu definieren?

Den Begriff CompileCycle habe ich auch schon gehört, man findet jedoch nicht so viele Informationen darüber. Können diese nur von Siemens/OEM erstellt werden, oder gibt es auch eine Möglichkeit für Anwender solche selbst zu erstellen?
Wie sieht das aus? Sind diese vorkompiliert und müssen deshalb nicht von der NC interpretiert werden?



Hauptlaufvariablen sind alle Variablen, die mit folgender Kennzeichnung beginnen
$A... ,$V..., $R....
$AC_PARAM[n] oder $AC_MARKER sollte man in den Sychronaktionen nutzen ( so R Parameter kann der Anwender ja eben schnell mal unbewusst im Programm beschreiben )

Compile-Zyklen
Nur Siemens oder OEM


ich zitier mal

QUOTE
Compile-Zyklen sind funktionale Erweiterungen der NCK-Systemsoftware, die vom
Maschinenhersteller und/oder von Siemens erstellt und nachträglich in die Steuerung
eingebracht werden können.
Im Rahmen der offenen NCK-Systemarchitektur haben Compile-Zyklen über definierte
Software-Schnittstellen umfangreichen Zugriff auf Daten und Funktionen der NCKSystemebene.
Somit lässt sich über Compile-Zyklen die Funktionalität des NCK umfangreich
erweitern.
Das Einbringen eines Compile-Zyklus in die NCK-Systemsoftware erfolgt durch Laden des
Compile-Zyklus in das Filesystem des NCK. Das Laden des Compile-Zyklus kann zu einem
beliebigen Zeitpunkt erfolgen.
   
Beitrag 07.09.2016, 15:51 Uhr
uk000599
uk000599
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 01.09.2016
Beiträge: 23
Hallo,

vielen Dank fur das viele Feedback. Ich bin momentan im Ausland und hatte noch keine Zeit zu antworten.

Das DEC_Force und INC_Force greift jeweils auf spfs zu mit denen ich in dem Prozess die Sollkraft (R22) erhoehen bzw. verringern kann.

Ich denke eine Variante mit den Sync-Aktionen ist vorerst am einfachsten umzusetzen. Ich werde mich mal daran versuchen. Den Vorschlag von ''DMC635V"
werde ich mal aufgreifen und als ersten Ansatz nehmen.
Dabei warden die Sync-Aktionen erst eingeschaltet nach dem vollstaendiger Kontakt mit dem Bauteil besteht und unmittelbar danachr der Vorschub

Hat jemand schon mal etwas aehnliches umgesetzt?
   
Beitrag 11.09.2016, 16:07 Uhr
uk000599
uk000599
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 01.09.2016
Beiträge: 23
QUOTE (DMC635V @ 02.09.2016, 17:54 Uhr) *
Dies sollte Grundsätzlich möglich sein. Du brauchst halt dann entsprechende Synchronaktionen. Dafür kannst du dir eine Positioniersatz sparen. So in etwa:
CODE
R20 = 0; controller enable
R22 = 95; force set point
R23 = 0.01; kp
R24 = 0.03; ki
R25 = 0; proportional part
R26 = 0; integral part
R27 = 0; output
R28=0.3; integral saturation
ID=1 DO $R20=0
ID=2 reglerabfragen DO R20=1
ID=3 WHENEVER R20>0.5 DO $R26=$R26+$R22-$A_INA[1] $R25=$R22-$A_INA[1]
ID=4 WHENEVER $R26>$R28 DO $R26=$R28
ID=5 WHENEVER $R26<(-$R28) DO $R26=-$R28
ID=6 WHENEVER R20>0.5 DO $R27=$R23*$R25+$R24*$R26
ID=7 WHENEVER R20>0.5 DO POS[Z2]= IC($R27)


Fehlt bei dem LSG-Vorschlag nicht noch die Abtastzeit des Systems?

Der PI-Regler in einer Software sieht ja wie folgt aus:

y = Kp * e + Ki * Ta * esum nach dem obigen Code ist es $R27=$R23*$R25+$R24*$R26 das Ta taucht allerdings nicht auf.

Wie bekomme ich die Ta heraus? Ist das der Interpolationstakt (TIPO) meiner Maschine? Wenn ja wo lese ich den aus?
   
Beitrag 16.09.2016, 18:25 Uhr
DMC635V
DMC635V
Level 6 = Community-Doktor
******
Gruppe: Mitglied
Mitglied seit: 12.08.2010
Beiträge: 844
QUOTE (uk000599 @ 11.09.2016, 17:07 Uhr) *
Fehlt bei dem LSG-Vorschlag nicht noch die Abtastzeit des Systems?

Der PI-Regler in einer Software sieht ja wie folgt aus:

y = Kp * e + Ki * Ta * esum nach dem obigen Code ist es $R27=$R23*$R25+$R24*$R26 das Ta taucht allerdings nicht auf.

Wie bekomme ich die Ta heraus? Ist das der Interpolationstakt (TIPO) meiner Maschine? Wenn ja wo lese ich den aus?


Das Ta kannst du dir sparen und gleich im Ki einbauen. Es ist ja Ta*Ki*Integral. Wenn du im Ki aber direkt die Zeit einrechnest sparst du dir eine Variable. Die ganzen K hängen schlussendlich nur davon ab wie dein Regler implementiert ist. Wenn du deinen Regler bereits Zeitkontinuierlich simuliert/gerechnet hast, musst du natürlich den Ki aus diesem System anpassen. Zusätzlich musst du aber in diesem Fall auch andere Einflüsse wie z.B. die Totzeit welche durch die Abtastung entsteht beachten welche eine Phasenverschiebung verursacht.

Ta ist hier der IPO-Takt, da die Synchronaktion auch im IPO-Takt aufgerufen wird. Wo du den herauskriegst kann ich dir gerade nicht sagen, hier weiss eventuell nixalsverdruss Bescheid. Ansonsten Handbücher wälzen.

Der Beitrag wurde von DMC635V bearbeitet: 16.09.2016, 18:26 Uhr


--------------------
Freundliche Grüsse
DMC635V
   
Beitrag 21.09.2016, 18:10 Uhr
uk000599
uk000599
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 01.09.2016
Beiträge: 23
Danke DMC, es ist mir dann auch aufgefallen das es lediglich proportional eingeht und daher egal ist.

Ich habe das ganze nun auf ein PID Regler erweitert was auch gut läuft (Eingestellt nach Ziegler). Ich Danke schon mal für die Top Unterstützung!!! spitze.gif

Ist es bei den Synchronaktionen eigentlich besser sowenig wie möglich Schritte zu rechnen oder spielt es keine Rolle ? Der besseren Übersicht habe ich alle Schritte separiert, mich würde es interessieren ob das ne Rolle spielt.

Meine neues Projekt ist nun das Analogekraftsignal in eine Datei mitzuschreiben, die ich im Nachgang exportieren kann und z.B. in Excel auswerten kann. Um Die Kraft während des Prozesses zu sehen habe ich in N152 diese Aktion eingebaut $R29= ($A_INA[1]). Die ermöglicht mir die Aktuellekraft in den R-Parametern zu sehen.

Gibt es eine Möglichkeit über den Write Befehl den R-Parameter (konnte in den HB nicht finden wie ich der Befehl dafür ist) zu triggern und anschließend von der Maschine zu ziehen, oder evtl andere Möglichkeiten das Signal der Messdose mitzuschreiben?

Der IPO-Takt ist noch immer offen^^


Der Aktuelle Regler:
;R3 = Diff
;R4 = DiffSumme
;R27 =Output
;R28 =Diffalt
;R25 = Diff-Diffalt
;R43 = Obere Limit
;R42 = Unteres Limit
N120 ;***ReglerVariablen***
N122 R22 =R40; Setzen der Sollkraft für Anzeige in FSW-Modus
N124 R23 = 0.00018 ;P (Pkrit 0,0003)
N126 R26 = 0.00003;I
N128 R7 = 0.00026 ;D
N130 R10 =0.0005 ;Wind Up

N132 ;***BeginnRegler***

N134 ID=1 WHENEVER R41>0.5 DO $R28=$R3; Diff In Diffalt
N136 ID=2 WHENEVER R41>0.5 DO $R25=$R3-$R28; Diff-Diffalt
N138 ID=3 WHENEVER R41>0.5 DO $R3=$R40-$A_INA[1]; Rechne Diff aus
N140 ID=4 WHENEVER R41>0.5 DO $R4=$R4+$R3; Berechne die neue DiffSumme
N142 ID=5 WHENEVER R41>0.5 DO $R27=$R23*$R3+$R26*$R4+R7*R25; (Output = Kp*Diff+Ki*DiffSum+Kd*Diffalt)
N144 ID=6 WHENEVER $R27<(-$R10) DO $R27=-$R10; Wenn Output kleiner als "-" Begrenzung stelle nur WIND UP nach
N146 ID=7 WHENEVER $R27>$R10 DO $R27=$R10; Wenn Output größer als "+" Begrenzung stelle nur WIND UP nach
N148 ID=8 WHENEVER (($AA_IW[Z2]) > ($R43)) DO $R27= 0 ; Oberes Limit
N150 ID=9 WHENEVER (($AA_IW[Z2]) < ($R42)) DO $R27= 0 ; Unteres Limit
N152 ID=10 WHENEVER R41>0.5 DO POS[Z2]= IC(-$R27) $R29= ($A_INA[1])
N156 ID=12 WHENEVER (($A_IN[9]== 1) AND ($R40 < 600)) DO INC_FORCE ; Kraft erhöhen über Force Enable
N158 ID=13 WHENEVER (($A_IN[10]== 1) AND ($R40 > 0 )) DO DEC_FORCE ; Kraft reduzieren über Force Enable
   
Beitrag 21.09.2016, 19:26 Uhr
nixalsverdruss
nixalsverdruss
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 16.11.2003
Beiträge: 1.511
QUOTE (uk000599 @ 21.09.2016, 19:10 Uhr) *
Der IPO-Takt ist noch immer offen^^


N132 ;***BeginnRegler***

N134 ID=1 WHENEVER R41>0.5 DO $R28=$R3; Diff In Diffalt
N136 ID=2 WHENEVER R41>0.5 DO $R25=$R3-$R28; Diff-Diffalt
N138 ID=3 WHENEVER R41>0.5 DO $R3=$R40-$A_INA[1]; Rechne Diff aus
N140 ID=4 WHENEVER R41>0.5 DO $R4=$R4+$R3; Berechne die neue DiffSumme
N142 ID=5 WHENEVER R41>0.5 DO $R27=$R23*$R3+$R26*$R4+R7*R25; (Output = Kp*Diff+Ki*DiffSum+Kd*Diffalt)



im MD 10071 $MN_IPO_CYCLE_TIME hast du deinen IPO Takt



aus den Handbuch synchronaktionen
dir folgenden Variablen kannst du dir unter Diagnose / PLC Variablen ansehen
oder halt mit rechnen
du solltest schon einen unterschied sehen wenn du aus den ersten 5 Sync Aktionen 1 machst .
du musst halt mal nach rechen ob die anzahl der Syncelemente pro Sync Aktion dafür ausreicht (bin ich zu faul)
steht aber alles im Handbuch




2.3.12 Auslastungsauswertung ($AN_IPO..., $AN/AC_SYNC..., $AN_SERVO)

Über folgende Systemvariable können die Werte der aktuellen, maximalen und
durchschnittlichen Systemauslastung aufgrund von Synchronaktionen gelesen werden:
NC-spezifische Systemvariable Bedeutung
$AN_IPO_ACT_LOAD aktuelle Rechenzeit der Interpolatorebene (inkl.Synchronaktionen aller Kanäle)
$AN_IPO_MAX_LOAD längste Rechenzeit der Interpolatorebene (inkl.Synchronaktionen aller Kanäle)
$AN_IPO_MIN_LOAD kürzeste Rechenzeit der Interpolatorebene (inkl.Synchronaktionen aller Kanäle)
$AN_IPO_LOAD_PERCENT aktuelle Rechenzeit der Interpolatorebene im Verhältnis zumInterpolator-Takt (%).
$AN_SYNC_ACT_LOAD aktuelle Rechenzeit für Synchronaktionen über alle Kanäle
$AN_SYNC_MAX_LOAD längste Rechenzeit für Synchronaktionen über alle Kanäle
$AN_SYNC_TO_IPO prozentualer Anteil der Synchronaktionen an der gesamten
Rechenzeit der Interpolatorebene (über alle Kanäle)
$AN_SERVO_ACT_LOAD aktuelle Rechenzeit des Lagereglers
$AN_SERVO_MAX_LOAD längste Rechenzeit des Lagereglers
$AN_SERVO_MIN_LOAD kürzeste Rechenzeit des Lagereglers
Kanalspezifische Systemvariable Bedeutung
$AC_SYNC_ACT_LOAD aktuelle Rechenzeit für Synchronaktionen im Kanal
$AC_SYNC_MAX_LOAD längste Rechenzeit für Synchronaktionen im Kanal
$AC_SYNC_AVERAGE_LOAD durchschnittliche Rechenzeit für Synchronaktionen im Kanal
   
Beitrag 22.09.2016, 14:01 Uhr
uk000599
uk000599
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 01.09.2016
Beiträge: 23
Danke, das werde ich mir mal anschauen.

Ich habe jetzt ein wenig in den Handbüchern geschaut. Mit dem Write Befehl ist es anscheinind nicht möglich dauerhaft z.B. über die Syncaktion des Regler den Wert der Messdose bzw. den R-Parameter zu triggern.

Hat jemand ne Idee wie ich das umsetzen könnte?

Am liebsten würde ich die Werte

X, Y, Z, Vorschub, Drehzahl, IstWert Kraft, SollWert Kraft solange wie die Kraftregelung aktiv ist triggern.

Der Beitrag wurde von uk000599 bearbeitet: 22.09.2016, 14:01 Uhr
   
Beitrag 23.09.2016, 07:34 Uhr
nixalsverdruss
nixalsverdruss
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 16.11.2003
Beiträge: 1.511
Wenn das nur mal so zum Anschauen sein soll würde ich mir den Trace unter Diagnose ansehen
Wenn es zu Dokumentation dienen soll . Daten in Puffer schreiben (Sync fähige GUDs oder R-Parameter) , und wenn es fertig ist, mit Wirte in Datei, oder durch den DPR in die PLC und dann übers Netzwerk weg.

Kommt auch ein wenig auf deine Möglichkeiten an .
   
Beitrag 23.09.2016, 15:51 Uhr
uk000599
uk000599
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 01.09.2016
Beiträge: 23
Es sollte schon zur Dokumentation sein um es später in Excel anzuschauen und auszuwerten, die Maschine ist mit dem Netzwerk verbunden und sollte darauf schreiben können.

Ich muss ehrlich gestehen ich habe von deinem LSG-Vorschlag nichts verstanden. Wie kann ich das genau umsetzen?

Ich habe bis Dato es noch nicht mal geschafft die $AN_.... Variablen in der Maschine zu finden coangry.gif

Gibt es gut Literatur bzw. Schulungsunterlagen die ihr empfehlen könnt für sowas?
   
Beitrag 24.09.2016, 08:18 Uhr
nixalsverdruss
nixalsverdruss
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 16.11.2003
Beiträge: 1.511
QUOTE (uk000599 @ 23.09.2016, 16:51 Uhr) *
Gibt es gut Literatur bzw. Schulungsunterlagen die ihr empfehlen könnt für sowas?


Es war nicht meine Absicht dich zu verwirren .
Schulungsunterlagen haben wir ca 800.000 Seiten DocOnCd.

Aber ,mal ernsthaft.
Du musst deine Daten die du Speichern möchtest in einen Puffer schreiben und nach ende der Kraftregelung in eine Datei Schreiben.
Wie lange dauert den die Kraftregelung den durchschnittlich ?
in welchem Takt willst du deine Daten schreiben ?

Alles andere wird nur möglich sein wenn du auch an de PLC schrauben kannst ( DPR)
   
Beitrag 24.09.2016, 10:58 Uhr
uk000599
uk000599
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 01.09.2016
Beiträge: 23
Ich bin schon fleißig unterwegs im DocOnWeb, nur sind die Beschreibungen teilweise wenig aussagekräftig für Personen die nicht tief in der Materie stecken.

Mir würden 10 Hz reichen schneller wäre super aber für'n Anfang ausreichend, der Max. Wert wäre vermutlich der IPO-Takt?!

Die Dauert variiert je nach Aufgabe von 10 sec bis mehreren Minuten.

Dein Vorschlag war es Werte einfach in freie R-Parameter zu schreiben und anschließend mit Write in eine Datei - Ich glaube das ist bei den Anforderung nicht möglich...?!

Die Maschine hat aktuell eine Funktion vom Hersteller bei der die Parameter getriggert werden, allerdings funktioniert das mal mehr mal weniger - keiner weiß warum. Abgelegt werden diese als .dat Datei. Aktiviert wird der Befehl im Programm über den Maschinenbefehl M10 und deaktiviert über M11.
   
Beitrag 24.09.2016, 19:36 Uhr
nixalsverdruss
nixalsverdruss
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 16.11.2003
Beiträge: 1.511
QUOTE (uk000599 @ 24.09.2016, 11:58 Uhr) *
Ich bin schon fleißig unterwegs im DocOnWeb, nur sind die Beschreibungen teilweise wenig aussagekräftig für Personen die nicht tief in der Materie stecken.

Mir würden 10 Hz reichen schneller wäre super aber für'n Anfang ausreichend, der Max. Wert wäre vermutlich der IPO-Takt?!

Die Dauert variiert je nach Aufgabe von 10 sec bis mehreren Minuten.

Dein Vorschlag war es Werte einfach in freie R-Parameter zu schreiben und anschließend mit Write in eine Datei - Ich glaube das ist bei den Anforderung nicht möglich...?!

Die Maschine hat aktuell eine Funktion vom Hersteller bei der die Parameter getriggert werden, allerdings funktioniert das mal mehr mal weniger - keiner weiß warum. Abgelegt werden diese als .dat Datei. Aktiviert wird der Befehl im Programm über den Maschinenbefehl M10 und deaktiviert über M11.


Ich denke du solltest dich mit dem Hersteller mal auseinandersetzten, wenn er schon so eine Funktion liefert sollte sie auch zuverlässig funktionieren.

Die Menge an Daten die du da weg schreiben willst wirst du nicht in R Parametern zwischen speichern können das ist schon klar,
daher der Vorschlag Sync fähige GUDs aber auch da wird es eng mit dem Speicher .
Bleibt also noch der DPR (Dual Port Ram) da muss aber die PLC verändert werden.
   
2 Besucher lesen dieses Thema (Gäste: 2)
0 Mitglieder: