Step 7 [+TIA] Änderungen von Bausteinen und Daten ohne Step7+TIA im Feld

Krumnix

Level-3
Beiträge
1.457
Reaktionspunkte
190
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich bin auf der Suche nach einer einfachen und "günstigen" Möglichkeit einen Baustein (FC,FB,DB) oder einen Wert in einem DB zu ändern.
Die Steuerungen sind bei uns die 315-2PN/DP und die 1515F-2PN.

Für einen DB-Wert zu Ändern hab ich LibNoDave genutzt und auf der 300er läuft das easy. Bei der 1500er bin ich noch dran, sollte aber auch gehen.

Fragen:
1. Kann ich auch Bausteine mit LibNoDave austauschen? Wenn ja, hat jemand Doku oder ein Beispiel?
2. Kann ich mit LibNoDave auch HW-Einstellungen ändern (PN-Adressen/Name, Safety-Baugruppen nach dem Tausch taufen (ET200SP) oder Teilnehmer deaktivieren)?
3. Wenn beides nicht funktioniert, welche Alternativen habe ich?

-> SAT von Siemens sieht ja nett aus, aber es bietet zu Step7 Projekten (300er) mir nix an.

Danke
 
Einzelne Bausteine auf der S7-300 laden/sichern geht z.B. mit Buddy for S7. Dort kann man auch Skripte erstellen.
https://www.mhj-online.de/software/buddy-for-s7/411/buddy-for-s7-v3-pro-edition?c=25

Allerdings nur für 300/400ér geeignet.

Hier mal ein Auszug der Skriptmöglichkeiten:
BUDdy for S7

Skript-Befehle in Buddy-for-S7 V3​



Zwischen Groß-Kleinschreibung wird nicht unterschieden!


BefehlParameterBeispielBeschreibung

Verbindung herstellen, trennen​

Connect-Connect;Verbindung zur CPU herstellen.
Die Verbindungsparameter wurden vorher
im Bereich "Settings" festgelegt. Siehe Beispiele.
DisConnect-DisConnect;Verbindung zur CPU trennen.

Bausteinbefehle​

Wld, <Parameter>Filename mit PfadWld,d:\BackupCPUA.wld;Festlegung der WLD-Datei
AddDateAndTimeToFileName-AddDateAndTimeToFileNameDer WLD-Dateiname wird ergänzt durch Datum und Uhrzeit.
Aus D:\File1.WLD wird
File1_2011_09_03__08_05_12_005.wld
ReadBlock,<Baustein>BausteinReadBlock,FC109;Ein einzelner Baustein wird aus der SPS geladen und in die WLD-Datei geschrieben
WriteBlock,<Baustein>BausteinWriteBlock,FC9;Ein einzelner Baustein wird aus der Wld Datei geladen und in die SPS geschrieben. Ein vorhandener Baustein wird überschrieben.
ReadAllBlocks-ReadAllBlocks;Alle Bausteine werden aus der SPS geladen und in die WLD-Datei geschrieben.
WriteAllBlocks-WriteAllBlocks;Alle Bausteine (auch SDB-Bausteine) aus einer WLD-Datei werden in die SPS geschrieben. Wenn SDBs in der WLD-Datei vorhanden sind, dann wird vor dem Übertragen der neuen SDBs die alten SDBs in der CPU gelöscht. SDBs werden nur übertragen, wenn zwischen ONLINE und OFFLINE SDBs mind. 1 Unterschied vorhanden ist.
Tipp: Um zu verhindern, dass der Speicher der SPS beim wiederholten Schreiben voll läuft, sollten vorher alle Bausteine mit "DeleteAllBlocks" gelöscht und anschließend mit "Compress" der Speicher komprimiert werden.
DeleteBlock,<Baustein>BausteinDeleteBlock,FC22;
DeleteAllBlocks-DeleteAllBlocks;Alle Bausteine (außer SDBs) werden in der SPS gelöscht. Danach sollte der Befehl "Compress" durchgeführt werden, damit der Speicher komprimiert wird.
DeleteHdwConfig-DeleteHdwConfig;Alle SDB-Bausteine werden in der SPS gelöscht.

Sonstige SPS-Befehle​

RamToRom-RamToRom;RAM nach ROM kopieren.
Compress-Compress;Arbeitsspeicher der CPU aufräumen.
SwitchToRun-SwitchToRun;CPU in RUN schalten
SwitchToStop-SwitchToStop;CPU in STOP schalten
SetTimeAndDate-SetTimeAndDate;Die Uhrzeit in der CPU wird auf die gleiche Uhrzeit des PCs gesetzt.
PlcPassword,<pw>PasswortPlcPassword,CPUPasswort;Das CPU Passwort kann eingestellt werden.
Sleep, <ms>MillisekundenSleep,1000;Das Script wird für x ms unterbrochen.
ExitPrg-ExitPrg;Buddy for S7 wird beendet
Exit;-Exit;Das aktuelle und nachfolgende Scripte werden abgebrochen.
Repeat,<Anzahl>Anzahl der WiederholungenRepeat,10;Das aktuelle Script wird 10 Mal wiederholt.
Achtung "Repeat" kann nicht gleichzeitig mit einem Zeittrigger verwendet werden.
Clear-Clear;Das Meldungsfenster wird geleert.
DATETIMETRIGGERsiehe untensiehe untenDas aktuelle Script soll zeitgesteuert sein. Siehe unten.
Achtung: Der Zeittrigger kann nicht mit "Repeat" im gleichen Sktipt programmiert werden.
Print,<Ausgabetext>TextausgabePrint, Backup von CPU AEin Text wird im Meldungsfenster ausgegeben.


Beispiel für die zeitgesteuerte Bearbeitung eines Skriptes:​



Das folgende Script komprimiert jede Stunde den Speicher der CPU. Der Startzeitpunkt wird festgelegt.

Liegt der Startzeitpunkt schon in der Vergangenheit, wird das Script 1x sofort ausgeführt und anschließend wiederkehrend im festgelegten Intervall.

[Settings]
ConnectCable=3; //Ethernet direkt
IP-ADR=192.168.178.205 //IP-Adresse der CPU
SLOT_NR=2; //Slot-Nr der CPU (nur bei S7-400 wichtig)

[/Settings]


[Script]

DateTimeTrigger, Year=2011, Month=03, Day=4, Hour=6, Minute=00,INTERVAL=HOURLY
Connect; //Mit der CPU verbinden
Compress; //Speicher komprimieren
DisConnect; //Verbindung trennen
[/Script]



Die Angabe eines Intervalles ist optional (muss nicht angegeben warden).

Folgende Intervalle sind möglich (Groß- Kleinschreibung spielt keine Rolle):


  • YEARLY oder EveryYear
  • MONTHLY oder EveryMonth
  • WEEKLY oder EveryWeek
  • DAILY oder EveryDay
  • HOURLY oder EveryHour
  • MINUTELY oder EVERYMINUTE

Die Angabe eines Intervalles ist optional (muss nicht angegeben warden).



Möglichkeiten in der Sektion Settings:​



Adapterauswahl:
ConnectCable=0 (RS232)
ConnectCable=1 (Netlink-Lite, IBH-Link, MHJ-Link, MHJ-Link++)
ConnectCable=2 (Netlink-Pro, Netlink-Pro-Compact)
ConnectCable=3 (Ethernet direkt)
ConnectCable=4 (Simatic Net)

Einstellungen:
IP-ADR=192.168.178.201 //IP-Adresse
IP-ADR-NETWORK-CARD=192.168.178.23 //IP-Adresse der Netzwerkkarte, die verwendet werden soll (diese Angabe ist optional!)
SLOT_NR=2 //Slotnummer (Bei S7-300 immer 2, bei S7-400 ist dies der Steckplatz der CPU, nicht des CPs!)
MPI_PLC=3 //MPI-Adresse der CPU (Bei „Ethernet direct“ nicht notwendig)
B_MPI=187500 //Baudrate auf der MPI-Seite (Mögliche Einstellungen: 187500 oder 19200)
MAX_MPI=31 //Höchste MPI-Adresse im MPI-Netz (Einstellungen: 15,31,63,126)
TIMEOUT=5000 //Timeout-Angabe
MPI_PG=0 //Mit welcher MPI-Adresse soll sich Buddy-for-S7 im MPI-Netz einloggen?)

Einstellungen bei serieller Verbindung:

COM=2 //Bei RS-232: Verwendeter COM Port (Serielle Schnittstelle)
B_RS232=38400 //Baudrate auf der seriellen Seite (Mögliche Einstellungen 19200,38400, 57600, 115200)
 
Die Probleme sind eher auf der 1500er zu lösen.
Das Backup Tool macht ja nur ein Backup und keine Änderung an einzelnen Bausteinen.
Step7 oder TIA vXX ist halt zu extrem, da wir 25 Servicetechniker im Feld haben, jeder braucht ne Lizenz und eine Schulung und
nutzt es dann alle 6 Monate für 1-2 Anpassungen. Das will keine zahlen und ist auch ziemlich unnötig :)
 
Mit den beiden genannten Tools kannst du Bausteine runter- und hochladen. Aber nicht ändern.
Um mit Libnodave db-werte zu ändernmuss auf der 1500er Put/Get aktiviert werden und die Bausteine dürfen nicht optimiert sein.
Mit Proneta (Siemens) kannst du IP und Gerätenamen der Teilnehmer ändern.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
da wir 25 Servicetechniker im Feld haben, jeder braucht ne Lizenz und eine Schulung und
nutzt es dann alle 6 Monate für 1-2 Anpassungen. Das will keine zahlen und ist auch ziemlich unnötig :)
Dafür gibt es die Floating Lizenzen. Da braucht man nur soviele Lizenzen wie gleichzeitig genutzt werden.

Harald
 
Dafür gibt es die Floating Lizenzen. Da braucht man nur soviele Lizenzen wie gleichzeitig genutzt werden.

Harald
Leider nicht möglich, da Techniker in Ländern sitzen, wo diese Lizenzen durch Siemens Regeln nicht "geteilt" werden dürfen und daher Vorort gesondert bei der Vertretung von Siemens bestellt und verwaltet werden müssen.
Den Aufwand will sich keiner machen.
 
was ist denn mit dem Simatic Automation Tool?

Da kannst zwar sicherlich nicht einzelne Bausteine ändern, aber Du kannst im Büro ändern, das Projekt schicken und der Monteur vor Ort einspielen... Ob das praktikabel für Euch ist, musst Du ausprobieren...

Irgendwie vor Ort irgendwelche Bausteine irgendwie auszutauschen seh ich ehh sehr kritisch. Da hast dann ganz schnell ein riesen Kuddelmuddel und niemand weiss mehr, was jetzt das aktuelle Projekt ist...

Werte Online im DB ändern ist aber doch garkein Problem, mit nem Panel oder sonstwas...
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen.

Auf der 1500er würde sich doch zum reinen Werte ändern der Web-Browser anbieten.
da kannst du auch eine VAT hinterlegen, wo alle Werte dann schon drin sind.

Gruß Timo
 
Libnodave musste aber auch auf ein S7-1500 funktionieren, wenn nur die DBs sind 'nicht optimiert' und PUT/GET auf die CPU freigeschaltet ist ?

Sonnst wurde ich auch die schon genannte Lösungen überlegen, Automation Tool, Webbrowser, oder über die HMI.
 
SAT für 300er geht nicht. Sonst ja.
WebServer ist leider noch nicht überall aktiv und es sind Einstellungen, welche wir auch nicht im Panel haben und auch nicht unbedingt bereitstellen wollen (z.B. Timer für Schnittstellenüberwachung).
Für die neuen Maschinen, die raus gehen, ist das sicher alles möglich. Aber auf den alten wird es schwer.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also wir lösen das "Problem" mit Dateien die per Email auf die SD-Karte der 1500'er spielen und fertig. ...

Damit kann Man auch Panel (in Tia) Umprogrammieren. Nachteil es muss jemand mit TIA-Portal die Änderung vorher machen und dann schicken...
Bei ner 300'er haben wir keine Erfahrungswerte
 
Wurde geändert. (*)

Wenn ich dein letzten Beitrag lese, dann verstehe ich dein Wunsch wie so:
  • PN Namen zuweisen (*)
  • Safety Module Taufen (*)
  • PN Teilnehmer aktivieren/deaktivieren (*)
  • DB Werte laden (*)
  • Muss mit S7-300/400 funktionieren, und auch S7-1500.
  • In die bestehende S7-Steuerungen kann man keine Änderungen machen (wie Webserver aktivieren, PUT/GET freischalten).

Dann bleibt diese Möglichkeiten.
Es geht nur mit eine Kombination von diese Verfahren.
  • PN Namen zuweisen gibt es viele Wege. TIA, automation Tool o.Ä
  • Safety Module Taufen. Geht meines Wissen nur mit TIA, vielleicht auch mit Automation Tool.
  • PN Teilnehmer aktivieren/deaktivieren geht über das SPS Anwenderprogramm.
  • DB-Werte Laden: Auf die HMI ein Passwortgeschützte Seite einrichten mit die gewünschte Parameter.
  • DB-Werte Laden: Ein Software Toolkit der S7-300/400 und S7-1500, und S7-1500 unterst¨tzt und zwar ohne Put/Get oder nicht-optimierte Bausteine. Meines Wissens gibt es nur Deltalogic Accon-AGLINK. Es ist nicht open source wie Libnodave, aber es ist es Wert wenn man den Zeit mitrechnet um die Software zu erstellen.
 
Zuletzt bearbeitet:
ProNeta zum Taufen von PN-Daten haben wir ja.
Safety taufen mit SAT bei 1500er funktioniert auch gut, 300er leider nicht (oder ich hab es noch nicht gefunden...).
Auf neuen Maschinen im Panel oder per Webserver einen Bereich (User/PW) definieren kein Problem für Daten zu ändern.

Sind halt 3 Möglichkeiten (kostenlos) mit großen Einschränkungen.

Somit ja, es darf ruhig etwas initial kosten, solange es später nicht pro MA im Feld Kosten verursacht.

Offen:
- "Alte" Anlagen mit 300er und 1500er ohne diese Anpassungen
- FC/FB/DB ersetzen
- Teilnehmer ein-/ausschalten bei alten Anlagen (ohne TIA HW-Config + FB's/OB's laden?)

Ich schau mal bei ACCON vorbei, falls jemand aber noch ne Idee hat, gerne her damit :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich hoffe ich bin mit meiner Frage hier richtig.

Ich habe eine Verbindung zwischen zwei S7_1500 hergestellt über, Tcon, Tsend, Trcv, Tdiscon.

die Funktioniert!

Jetzt suche ich einen Baustein mit dem ich die Verbindungsparameter des Tcon bearbeiten kann.
und so Programmabhängig den Verbindungspartner auswählen kann der die Daten bekommt (ohne jedes mal die Konfiguration machen zu müssen.)
Tia V16
 

Anhänge

  • Unbenannt.PNG
    Unbenannt.PNG
    68,5 KB · Aufrufe: 16
Lege dir deine Verbindungen in ein Array.
Baue dazu einen Selektor (Wert oder Bit-Basiert).
z.B. Wertbasiert:
Code:
If iVerbindungWahl <> iVerbindungLetzte then
    If NOT AUFRUF.BUSY AND NOT AUFRUF.REQ then
        dbVerbindungen.Aktuell := dbVerbindungen.V[iVerbindungWahl];
        AUFRUF.REQ := TRUE;
        iVerbindungLetzte := iVerbindungWahl;
    ELSE
        AUFRUF.REQ := FALSE;
        ; // ... Weitere Aktionen zum Verbindungsabbau
    END_IF;
END_IF

Aufruf...
 
Zurück
Oben