# SINAMICS S120 Parameter für alle ändern



## BADMAN (15 November 2010)

Hallo Leute

Es geht um die SINAMICS S120 Umrichter von Siemens.

Meine Frage:
Gibt es eine Möglichkeit Parameter von mehreren Antrieben gleichzeitig zu ändern. 

Wenn ich einen Parameter ändern muss mach ich das meistens über die Expertenliste. Muss ich an einem Antrieb mehrere Parameter ändern erstelle ich mir ein Skript und lass dieses durchlaufen. 

Für einen Antrieb schön und gut, aber wie siehts mit mehreren Antrieben aus.

Ich möchte nun einen Parameter bei z. B. 100 Antrieben ändern.

Bisher habe ich immer für jeden Antrieb die Expertenliste aufgerufen und den oder die entsprechenden Parameter geändert nur das dauert ewig geschweige dann das ganze noch ins PG zu laden.

Gibt es eine Möglichkeit z. B. mit Hilfe eines Skriptes in dem eine Schleife abläuft bei der dann der Parameter bei allen geändert wird ???

Und gibt es evtl. eine Möglichkeit die Aktionen "RAM to ROM" und "Laden ins PG" automatisch für alle Antriebe auszuführen ohne nun jede einzelne CU anzuklicken und zu bestätigen.

Bin für alle Hilfen dankbar


viele Grüße BADMAN


----------



## ChristophD (16 November 2010)

Hallo,

du kannst die Parameteränderungen auch per Script automatisieren, gar kein Problem.
Kleines Beispiel für eine Schleife mal angehängt.
Ein RAMtoROM kannst du an der CU via p977 für alle Antriebe auslösen oder via p971 bei jedem Antrieb seperat.

Beim Upload müsstest Du auf die ScriptCollection vom Scout/Starter zurückgreifen, welche von den beiden Tools verwendest du?

Gruß
Christoph


----------



## BADMAN (16 November 2010)

Hallo Christoph erstmal vielen Dank für die schnelle Antwort

Ich verwende STARTER in der Version 4.1.5.1


----------



## ChristophD (17 November 2010)

Hi,

anbei ein Beispiel für den Upload.
Script setzt das Projekt online und lädt aller Geräte vom Typ SINAMICS hoch und speichert das Projekt.

Gruß
Christoph


----------



## BADMAN (25 November 2010)

Hallo Christoph

ich blick da nicht so richtig durch mit den Befehlen, hab in der Hilfe wenige Beispiele gefunden. Gibt es nicht irgendwo eine Beschreibung der ganzen Befehle die ich im Skript verwenden kann. Selbst auf der Siemens Seite ist nichts über die Skripte zu finden.

Aber trotzdem vielen vielen Dank


Gruß Badman


----------



## BADMAN (25 November 2010)

Hallo nochmal !

Also ich verstehe das mit dem 2. Beispiel folgendermaßen

' Example02
PROJ.Online = True _'Projekt online setzen_
For Each objDevice In PROJ.Devices 'A_lle Objekte online setzen_
lTypeName, 8) = "SINAMICS" Then _'Typ 8 ???_
objDevice.Upload() _'objekte hochladen_
End If _'_
Next _'_
APP.Workbench.WBProject.Save() _'Projekt speichern_


_1. Frage_

_Mit "_PROJ.Online = True" und"For Each objDevice In PROJ.Devices wird das gesamt projekt online gesetzt ???
der Befehl setzt sich so zusammen ??? wieso der Punkt ???

Wie kann ich hier eine unterscheide machen wenn ich nur mit einer Auswahl online gehen möchte?
Wenn ich die Geräte die online gehen sollen manuell auswähle, könnte ich mir dann die ersten beiden Zeilen sparen ???

2. Frage

lTypeName, 8) = "SINAMICS" Then objDevice.Upload() 
Was bedeutet hier der Typname 8 hat das was mit der Antriebsidentnummer zu tun ??? 

3. Frage
APP.Workbench.WBProject.Save() 
Ich vermute das mit diesem Befehl alles gespeichert wird 
was bedeutet APP.Workbench , die Workbech ist doch die Übersicht im STARTER was hat die damit zu tun 


4. Frage
Ich überlege mir nun folgendes:

Ich habe ein Projekt bei dem 30 Cu320-2 DP angelegt sind, ich gehe immer mit 10 CUs gleichzeitig online und habe zuvor einen Skriptordner unter dem Projektnamen angelegt (oder wo kommt der Ordner hin ??? 
in diesem Ordner schreibe ich dann "nur" die beiden befehle für upload und save, also in etwa so 

lTypeName, 8) = "SINAMICS" Then _'Typ 8 ???_
objDevice.Upload() _'objekte hochladen_
End If _'_
Next _'_
APP.Workbench.WBProject.Save() _'Projekt speichern_

wäre das nun korrekt das nur die geräte hochgeladen werden und gespeichert die online sind 

muss ich hier keine unterscheidung von Antriebsnummern machen 

oder kommt die unterscheidung von = "SINAMICS" ???

Ich hoffe meine Fragen erschlagen dich nicht!!!



Vielen Dank und schönen Gruß 

Badman


----------



## BADMAN (25 November 2010)

Ich nochmal

hab jetzt nur mal mit dem Befehl "PROJ.Online = True" und dort blinkt dann unten rechts online verbindung wird aufgebaut 

ich bin morgen wieder auf der baustelle dann versuche ich mich mal langsam ran zu tasten.

echt coole sache vielen vielen dank Christoph 

ich glaube ich muss muss dich noch etwas länger nerven hoffe das geht in ordnung


gruß Badman


----------



## ChristophD (25 November 2010)

Hi,

in der Online Hilfe gibt es eine Übersicht zu dem Objektmodell, dort werden auch die zur Verfügung stehenden Funktionen für jedes Objekt erklärt.

zu den Fragen:

nur "Project.online=true" setzt das ganze Projekt online bzw. alle Geräte die in der Zielgeräteauswahl markiert sind.
"For Each objDevice In PROJ.Devices" geht erstmal über alle Geräte die im Projekt vorhanden sind
und
"If Left(objDevice.ExternalTypeName, 8 ) " schaut anhand der ersten 8 Zeichen des Typnamen ob es sich um ein SINAMICS Gerät handelt
und 
"objDevice.Upload()" lädt die Geräteparametrierung ins PG
abschließend
"APP.Workbench.WBProject.Save()" das Projekt zu speichern und die hochgeladenen Daten in der Offline Datenhaltung zu sichern.

Workbench ist nicht nur die Übersicht sondern steht auch für den kompletten Prozeß (u7wwbfax.exe/u7wdrfax.exe im taskmanager) der alle Akionen an der Oberfläche bedient.

Die Beispielscripte sollten am Projekt abgelegt werden, das hast du richtig erkannt .
Du kannst auch die Eigenschaft "Online" des Gerätes abfragen, die signalisiert ob das Gerät online verbunden ist oder nicht.
Die Abfrage wäre dann:
If Left(objDevice.ExternalTypeName, 8 )= "SINAMICS" and objDevice.online=true Then


----------



## ChristophD (25 November 2010)

BADMAN schrieb:


> Ich nochmal
> ich glaube ich muss muss dich noch etwas länger nerven hoffe das geht in ordnung


 

*Wissen ist das einzige Gut das sich vermehrt wenn man es teilt!*

No Problem


----------



## BADMAN (25 November 2010)

Hallo

wo finde ich denn den Typnamen steht der im Antrieb oder in der CU ??? 


ehh brauche ich überhaupt die Typabfrage? denn im Projekt habe ich immer nur SINAMICS.

Hab mir jetzt folgendes überlegt Frage an dich ob das so funktionieren Könnte

PROJ.Online = True 'Ausgewählte Antriebe Online Setzen
objDevice.Upload() 'Ausgewählte Antriebe hochladen ins PG

APP.Workbench.WBProject.Save() 'Daten in der Offline Datenhaltung sichern 

Viele Grüße Badman


----------



## ChristophD (25 November 2010)

Hi,

der Typname ist eine Eigenschaft jedes Objektes in Starter.
Im vorliegenden Script frage ich den TypNamen des gerätes ab, also ob
es sich um ein Gerät der Familie SINAMICS handelt oder um was anderes (MICROMASTER; ET200 etc.), im Projekt wäre das Objekt unter welchem sich ControlUnit und Antriebe etc. befinden.
Dein Script braucht noch ne for Schleife um über alle Geräte zu gehen, also müsste es so aussehen:

PROJ.Online = True 'Ausgewählte Antriebe Online Setzen
for each objDevice in PROJ.Devices
  objDevice.Upload() 'Ausgewählte Antriebe hochladen ins PG
next

APP.Workbench.WBProject.Save()

Das Beispiel was ich abgelegt hatte war Teil eines größeren was ich immer verwende wenn ich zum Service an einer Anlage bin und die ganzen Parameter aus der Anlage ausgelesen werden müssen, das sin Teilweise über 100 Geräte verschiedenster Art dewegen ist es etwas allgemein gehalten.

Gruß
Christoph


----------



## Mombster (21 Oktober 2015)

Hi Christoph
Eine Frage noch zu diesem Thema.
Wie sieht das Thema mit externem Skripting aus?
Kannst du mir da evtl. ein Beispiel dazu hier einstellen?
Danke


----------



## ChristophD (22 Oktober 2015)

Hallo,

habe dir mal die Beispiele für externes Scripting von der Utilities CD kopiert.
Anhang anzeigen externalscript.zip


Gruß
Christoph


----------



## Ralle (22 Oktober 2015)

Es geht auch ein wenig einfacher, wenn du Parameter direkt schreiben willst.
Ein Script anlegen und die Parameter dort eintragen:



```
Parent.Parent.TOs("Slave").Symbols("p1155[0]") = "21560:0:3"
Parent.Parent.TOs("Slave").Symbols("p1160[0]") = "21625:0:3"


'auf DCC-Plan Variable
Parent.Parent.Units("GetrGL4_2RK").Symbols("p21511") = "1170:0:2"
```


Dabei ist bei mit "Slave" ein angelegter Antrieb unter "Antriebe"
Symbols sind dann die Parameterbezeichnungen.
Man kann sich eine Liste mit den gewünschten Parametern unter Control_Unit/Scripte anlegen, das Script öffnen und dann über einen Button oben im Menü ausführen.

Legt man das Script direkt unter dem betreffenden Antrieb an geht auch Folgendes:


```
' Teller


Parameters(10, 0)  = 4                 ' IBN Geber 
Parameters(418, 0) = 2                 ' Feinauflösung 2*2 x 1024
Parameters(10, 0)  = 0 


Parameters(1082, 0)  = 3500             'N_Begrenzung




REM -------------------------------------------------------
REM     Page : Com_DP
REM -------------------------------------------------------
REM ----- Parameter -----


REM ----- BinectConect -----


Symbols("p2051[2]") = "2089:2:."
Symbols("p2082[8]") = "21592:0:."
```

Vielleicht kann man die Schreibweise in den ersten Zeilen auch von der Control_Unit aus anwenden?
Hab ich noch nicht so oft genutzt, ist aber schon praktisch.


----------



## Mombster (23 Oktober 2015)

*Danke schon mal.
*
Werd wohl etwas Zeit brauchen um mich in diese Thematik richtig einzulesen....
Ich hab das Thema, dass ich eben mittels einem externen Script ein im S7 integriertes Starter Projekt öffnen will, und dann ein Laden ins PG realisiere.
Um sicher zu gehen, dass auch wirklich der Letztstand im S7 Projekt enthalten ist. Hab aber bis Dato dieses "Siemens" Scripting noch nie probiert/gebraucht.
Für weitere Vorschläge bin sofort zu haben, bzw. bei Bedarf melde ich mich wieder.
:s12:


----------



## Mombster (23 Oktober 2015)

Hmmm irgendwie raff ich gerade den Übergang von Case 7 (external script.zip) zu deinem Beispiel Projekt online und eben auslesen nicht 
Wie muss ich PROJ definieren um PROJ.Online = True usw. zu realisieren?

Freitag Nachmittag ist einfach keine gute Zeit mehr.....

mfg
UweT


----------



## ChristophD (23 Oktober 2015)

Mombster schrieb:


> Hmmm irgendwie raff ich gerade den Übergang von Case 7 (external script.zip) zu deinem Beispiel Projekt online und eben auslesen nicht
> Wie muss ich PROJ definieren um PROJ.Online = True usw. zu realisieren?
> 
> Freitag Nachmittag ist einfach keine gute Zeit mehr.....
> ...



an wen ist die Frage gerichtet ?


----------



## Mombster (30 Dezember 2015)

An dich Christoph


----------



## ChristophD (30 Dezember 2015)

wo stehst du den Gerade ? Der letzte Post is ja schon älter


----------



## Mombster (7 Januar 2016)

Hi ChristophD

Tja, hatte bis Dato auch nicht wirklich Zeit mich einzulesen, sry.
Ich stehe quasi immer noch am Anfang.

1.) Du hast mir die exaples hochgeladen und da frage ich mich wo, wie der default Pfad definiert ist?
     Z.B. ExternalScriptDemo1
    Wenn ich das starte und dann 1 für "Auflisten der Projekte "wähle, werden mir offensichtlich alle Beispielprojekte vom Starter aufgelistet.
    Jedoch nicht z.B. das von mir zuletzt geöffnete.
Ich nehme an, da gibt es noch eine vordefinierte "Syntax" die ich noch nicht gefunden habe (installiere auch gerade den Starter neu, weil die Hilfe nicht funktioniert)


2.) Dann heißt es in der Beispielfunktion ".... ab hier wie internes Script"
Dazu schwebt mir ein Beispiel vor das ich glaub ich auch hier gefunden habe...
' Example02
PROJ.Online = True
For Each objDevice In PROJ.Devices
  If Left(objDevice.ExternalTypeName, 8) = "SINAMICS" Then
    objDevice.Upload() 
  End If
Next 
APP.Workbench.WBProject.Save()

Nur bekomme ich das gerade in der kombination nicht hin...... objDevice.Upload wird wohl zu definieren sein?!?

Wie bereits Eingangs erwähnt ich bin in diesem Bereich ein Newbe

Werd mich mal mit dem zuordnen meines Projektpfades beschäftigen.... kommt ja im Beispiel auch vor, bräcute aber noch nen Tipp zwecks 2tens


----------



## ChristophD (7 Januar 2016)

Hi,

1.) ja das Beispiel listet bei Eingabe von 1 alle Projekte auf die der Starter in seiner Projektdatenbank hat
2.) objDevice.Upload() ruft einfach eine Funktionauf die bereits existiert und den Upload des Gerätes macht, diese Funktion wir vom Starter zur Verfügung gestellt.
Kommt ne Fehlermeldung wenn du das Script aufrufst? Startest du das Script intern oder extern?

Gruß
Christoph


----------



## Mombster (7 Januar 2016)

Vorweg es geht mir darum rein über ein externes Skript zu arbeiten.
Thema Datensicherung

Add 1.) Darum versuch ich gerade herauszufinden, wie ich gezielt ein Projekt "öffne".
     Ich habe ja eigentlich immer den selben Ordner (z.B. C:\Temp\) wo das S7-Projekt abgelegt ist und will dieses per Skript öffnen und den Onlinestand hochladen um sicher zu gehen, dass meine 
     offline-Version aktuell ist.
     Im nächsten Schritt werde ich eine Lösung anstreben, wo ich auf mehrere PC´s zugreife.

Add 2.) Fehlermeldung "nein", soweit bin ich noch nicht. Und ja es soll extern gestartet werden.


----------



## ChristophD (7 Januar 2016)

Hallo,

ok hier das externe MiniScript.
Öffnet ein Projekt, geht online und lädt jeden Sinamics hoch.

Gruß
Christoph

Anhang anzeigen ExternalScript_Test.txt


----------



## Mombster (7 Januar 2016)

Servus

Vielen Dank

Ich arbeite mich da jetzt Zeile für Zeile durch .... sch. 10h Regelung ;-)

Set g_oSimotion = CreateObject("Simotion.Application") ... ist offensichtlich per Definition so?
call g_oSimotion.Workbench.WBProject.Open("TestScript") ... lt. Beschreibung sollte hier der Pfad stehen??  Z.B. "C\TMP\TEst.s7p"   ?
Set g_oProject = g_oSimotion.Projects("TestScript") ... schon wieder??  "C\TMP\TEst.s7p"

Wird mit dem g_oProject.Online = True auf alle verfügbaren Sinamics online gegangen, oder nur auf jene, wo im Projekt im Zielobjekte auswählen diese angewählt sind?!?

Prinzipiell hätte ich das so vorausgesetzt und ist in deinem Beispiel auch so angeführt, ABER ich frag lieber gleich nach...
Für Save und Close brauche ich ("TestScript") nicht mehr?

AUF JEDEN FALL VIELEN DANK !!!!!!!!  BIST DER HAMMER :TOOL:


----------



## ChristophD (7 Januar 2016)

Hi,

1.) Ja das ist per definition so damit wird die Application gestartet damit auch alles nachfolgende funktioniert
2.) wenn das Project bereits im Starter bekannt ist muss der Pfad nicht angegeben werden, erleichtert die Sache ganz ungemein.
     mit der ersten Anweisung wird das Projekt jeöffnet mit dem folgenden set einer Variable zugewiesen damit später über die Variable auf die Script Objekt
     und Befelle zugegriffen werden kann, sonst wird das wieder zu kompliziert vom aufruf her

Es wird immer auf die Geräte online gegangen die unter Zielgeräte dafür aktiviert sind, aonsten kann man auch direkt auf die Geräte gehen indem man nicht über das Projekt online geht sondern über die Geräte selber.

Für Save und Close braucht es keine Pfad oder projektnamen da diese auf dem aktuell geöffneten Projekt arbeiten.

Gruß
Christoph


----------



## Mombster (8 Januar 2016)

Hallo Christoph

Also ich muss annehmen, dass das Projekt dem Starter nicht bekannt ist.
Ich hab deine Version mal ausprobiert, bzw. wahrscheinlich zwecks "TestScript" falsch geändert, worauf eben irgendein Projekt geöffnet worden ist, ich vermute das zuletzt geöffnete.

1.) Ebenso weiß ich die Einstellung zwecks Zielgeräte nicht ... gibt es einen Befehl um dezitiert auf allen online gehen zu können?

2.)Leider kenne ich auch die Gerätenamen nicht, muss ja schon froh sein zu wissen, wo ein Sinamics vorhanden ist 
Ist es möglich, sofern Punkt 1 nicht funktioniert über einen Workaround die Gerätenamen der Sinamics auszulesen um eben dann wie von dir erwähnt gezielt online gehen zu können?


----------



## ChristophD (8 Januar 2016)

Hi,

naja du solltest schon ein Projekt angeben das exisitiert sonst nützt doch das ganze gar nix. "TestScript" ist halt bei mir der Name des Projektes welches ich für das Beispiel verwendet habe.
Das Script arbeitet nach folgender Theorie:
Ein Projekt existiert in dem alle verwendeten Geräte der Anlage vorhanden sind, es wird online gegangen und ei Upload durchgeführt.

Hier die Erweiterung das Zwangsweise mit jedem SINAMICS Gerät im Projekt online gegangen wird, egal was da in der Zielgeräteauswahl steht.
Anhang anzeigen ExternalScript_Test_2b.txt


Gruß
Christoph


----------



## Mombster (11 Januar 2016)

Hi Christoph, 

yes, thats it.

Lästig wie immer noch folgendes.
Arbeitest du auch mit Exeptions in vbs?

Ich habe den Effekt, dass ich (warum hab ich noch nicht herausgefunden, ist wohl ein Siemens Feature) teilweise 2 mal versuchen mus auf einem Umrichter online zu kommen.
Sprich ich müsste den Fehler bei g_oProject.Online abfangen und noch einmal probieren.
Thema: *On Error Resume...*

mfg
UweT


----------



## ChristophD (11 Januar 2016)

Hi,

nein in der Regel klappt es bei mir immer beim ersten Anlauf mit dem Online gehen.
Was kommt den dann genau für eine Fehlerausschrift wenn es nicht geht?

Man kann das Script auch erweitern das man den Online zustand abfragt und solange ne schleife dreht bis der Antrieb Online ist.

Gruß
Christoph


----------



## Mombster (11 Januar 2016)

*Dieser*

Fehler: SOM_ONLINE_Failed
Code: 80040028

Das System ist allerding aktiv.... vielleicht gibt es deshalb ein Thema?!?


----------



## Mombster (14 Januar 2016)

Hallo Christoph

Vorab, danke noch einmal für deine Unterstützung. :TOOL:

Also klappt schon ganz gut.
Das Thema mit dem Online gehen habe ich mittels Error-Abfrage abgefangen.
Beim 2ten mal komm ich eigentlich immer online, und wenn nicht, dann breche ich mit einem Error-Log ab.

Kann ich auch simple nach einem call objDevice.Upload() eine Error Auswertung machen, oder gibt es da noch etwas zu beachten?
Sprich ich will überprüfen, ob der upload erfolgreich war.


----------

