TIA KOP+SCL Programmierung - Abspeichern von gemessenem Druck in Speicherfelder unter Bedingung

Zuviel Werbung?
-> Hier kostenlos registrieren
Im Screenshot sind links lauter kleine grüne Kreise zu sehen. Das spricht dafür das Online<>Offline gleich sein sollten. Hast Du das schon anders erlebt?

Interessiert wäre ich zusätzlich an:
- Gibt es Devices die den Anlauf unterbinden können?
- Ist die Option Anlauf bei Unterschieden aktiviert oder deaktiviert?
Genau, die grünen Kreise bestätigen den Abgleich von Software zur CPU, deshalb verstehe ich ja auch nicht worin das Problem besteht...
Anders erlebt, ja insofern ich etwas in einem Programmbaustein verändere ist dies natürlich nicht mehr der Fall, aber nachdem ich letztlich jedes mal Übersetze und ins Gerät Laden durchgeführt habe, hat es immer wieder funktioniert. Nur eben jetzt nicht mehr.


1. Also ich habe meinen Laptop direkt mit einem Ethernet Kabel mit der CPU verbunden, es befindet sich also keine weiteren Devices/Peripherie.
2. Ich würde diese Option gerne prüfen, weiß jedoch nicht wo diese zu finden ist.

Ich werde mich nach dem Mittag mal wieder ran setzen und versuchen den Fehler zu finden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Und was hast du dann getan um den Fehler zu beheben?
Meines Wissens nach handelt es sich bei meiner CPU ja auch um eine Failsafe...
Soweit ich das sehe ist es bei dir keine F-CPU sondern eine Standard-CPU.
Ansonsten wäre es eine 1212FC und nicht wie bei dir eine 1212C.

Aber ich kenne das Problem ebenfalls, dass es gleich anzeigt, aber trotzdem unterschiedlich sein kann.
Ich lade bei Hardware-Änderungen meist die Hardware-Config und danach das komplette Programm neu, da sowieso ein CPU-Stop nötig ist.
Unter Umständen einfach auf die DB's falls du Daten noch brauchst, ansonsten kann es sein, dass diese mit Startwerten reinitialisiert werden.
 
Hallo Freunde, es lag tatsächlich an der Hardwarekonfiguration :) Mir war nicht bewusst dass diese lediglich ohne die Online Verbindung geladen werden kann. Es funktioniert nun wieder alles wie gewünscht.

Meine nächste Frage wäre nun, wie bekomme ich die in meinem Speicherprogramm gespeicherten Druckwerte von der PLC exportiert.
Ich denke hierfür gibt es zwei Optionen?

1. Export über Datenkarte (welche erst noch beschafft werden müsste)
2. Übertragung/Export per ohnehin angeschlossenem Ethernet Kabel zum Laptop <- bevorzugte Variante um einen unmittelbaren Erfolg zu haben :)

Der Plan ist die Werte in eine Excel Datei zu überführen und dann ein Zeit/Druck Diagramm aufzustellen und die gewünschten Rückschlüsse durch das Verhalten des aufgezeichneten Eingang- und Ausgangsdruck zu ziehen.

Ich freue mich von euch zu hören!
Grüße HT-T
 
Wieviele Werte müssen zum PC übertragen werden?
Muß das Übertragen automatisch gehen oder kann ein Operator am Laptop copy+paste händisch ausführen oder in einem Ausleseprogramm das Auslesen händisch anstoßen?
Ist auf dem Laptop TIA installiert?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@PN/DP Hallo Harald, danke für die sehr schnelle Antwort. Pro Array habe ich aktuell 999 Felder vergeben, also maximal (999-Eingangsdruck und 999-Ausgangsdruck) 1998 Felder. Die Felder werden mit 10Hz beschrieben, füllen sich also recht zügig. Der Messzeitraum ist nicht besonders lange aber um selbst geringe Veränderungen wahrzunehmen habe ich die 10Hz ausgewählt. Die 999 Felder sind nicht vollständig befüllt aber ich wollte mir einen ausreichenden Puffer einrichten um hier nicht in Verlegenheit zu kommen.

TIA-Portal ist auf dem Laptop installiert, da das Programm noch nicht fertig programmiert ist steure ich die nötigen Parameter so gesehen auch noch händisch ein um den Messvorgang zu starten.

Mir wäre es natürlich lieber wenn ich den Export ohne viele manuelle Handgriffe abhandeln könnte.
Ist es viel Aufwand auf Knopfdruck oder gerne auch automatisch eine CSV/Excel oder ein ähnliches verwendbares Format erzeugen zu lassen welches ich dann auf dem Desktop des PC´s abspeichern lassen könnte?

Was meinst du mit "...oder in einem Ausleseprogramm das Auslesen händisch anstoßen"

Grüße HT-T
 
Es gibt einige PC-Programme, die können die Aktualwerte von DB auslesen und als csv- oder Excel-Dateien speichern. Da könnte ein Operator das Auslesen händisch anstoßen, z.B. einen Button klicken. Ich glaube, manche Programme können auf ein Triggerbit in der SPS warten. Gib mal in Deine Internet-Suchmaschine die Suchwörter "s7 backup maschinendaten" ein.

In Step7 classic kann man DB online in der Datenansicht öffnen, alle Werte markieren + kopieren + in ein Excel-Arbeitsblatt einfügen. Ob das ähnlich einfach in TIA geht weiß ich nicht. Eventuell kann man auch die DB-Aktualwert-"Schnappschuß"-Funktion nutzen. Das habe ich alles noch nicht gemacht.

Deine SPS könnte die Daten in Datalogs auf eine Speicherkarte speichern.
Oder die Daten an einen TCP-Fileserver auf einem PC senden. Hier ein Siemens-Beispiel: TCP-Fileserver für S7-Controller
Ob die S7-1500 mittlerweile direkt Dateien übers Netz auf PC erstellen/senden kann weiß ich nicht.

Harald
 
@PN/DP Danke für den Tipp mit dem TCP-Fileserver, die Lösung sieht vielversprechend aus. Ich habe mir jetzt mal die Daten heruntergeladen und werde mir die Dokumentation zu Gemüte führen und versuchen damit eine Lösung zu finden. Hoffentlich funktioniert es wie gedacht. :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe mittlerweile die Bausteine in mein Projekt kopiert, lediglich bei der Parametrierung "Parameters".userData am TcpClient Baustein meckert er noch.

1660051133503.png
1660051178083.png
 
Zuletzt bearbeitet:
Danke für den Hinweis, ich habe den Punkt gar nicht wahrgenommen.
Jetzt muss ich nur noch probieren ob alles funktioniert wie gedacht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde gerne über das markierte Eingabefeld meiner HMI den Setpoint des Eingangsdrucks bestimmen, bzw. setzen.
Nun stellt sich für mich die Frage, ist "SetzeVariable" das richtige Ereignis für diesen Vorgang, wie mir scheint möchte er einen statischen Wert auf diesen dann die Variable gesetzt wird wissen, ich möchte ja aber auf das Eingabe Feld drücken und einen beliebigen Wert eingeben, sodass dieser dann in die angegebene Variable geschrieben wird.

Danke vorab!

Grüße HT-T

1660203513621.png
 
Warum willst Du die Werteingabe und das Übertragen des Wertes in die eigentliche Zielvariable trennen? Üblicherweise nimmt man ein EA-Feld mit Modus "Eingabe/Ausgabe" und projektiert direkt die Zielvariable als Prozessvariable. Das ist viel einfacher und dafür braucht man keine Ereignisse projektieren.

Harald
 
Ich möchte die Werteingabe und das Übertragen des Wertes nicht trennen. Es handelt sich bei dem Feld doch um ein EA-Feld mit "Eingabe/Ausgabe" Modus?!

Heißt das ich muss die zu schreibende Variable lediglich hier verlinken:
1660206440394.png

Durch die bereits programmierten Abläufe im HMI dachte ich es wäre problemlos möglich dies über die Sparte Ereignisse zu realisieren.
 

Anhänge

  • 1660206173384.png
    1660206173384.png
    45 KB · Aufrufe: 1
Zuviel Werbung?
-> Hier kostenlos registrieren
Heißt das ich muss die zu schreibende Variable lediglich hier verlinken:
Ja.
Die HMI-Runtime zeigt den aktuellen Wert der Variable an (und aktualisiert die Anzeige zyklisch). Mit Klick in das EA-Feld kann man einen Wert eingeben. Wenn man die Eingabe mit Enter beendet, dann prüft die Runtime den eingegebenen Wert auf Einhaltung von Grenzwerten und schreibt den Wert automatisch einmalig in die verlinkte Variable.

Harald
 
Hallo zusammen,

nachdem ich nun den Tcp-Client in mein aktuelles Projekt integriert habe würde ich gerne ausprobieren ob er mir erfolgreich die Daten exportiert.

Da ich bereits meine Messwerte in zwei Arrays innerhalb eines Datenbausteins abgespeichert habe würde ich diese gerne möglichst unkompliziert auf den "SendArrayData" Datenbaustein des Tcp-Client gespiegelt übertragen, sodass dieser den Export folgerichtig veranlasst.


Kennt von euch jemand eine möglichst unkomplizierte Lösung hierfür?

Vielleicht so?
Bsp FB mit SCL:


#i := 0;

IF #Start_Copy THEN

FOR #i := 0 TO 999 DO
"Storage".Inletpressure_Storage[#i] := "SendArrayData".dataStream[#i];


END_IF;



Bild 1: Zeigt den Datenbaustein - 'Storage' mit den beiden Arrays für die Messwerte des Ein- und Ausgangdrucks
1660735124037.png



Bild 2: Zeigt den Datenbaustein - 'SendArrayData' welcher Teil des importierten 'TcpClient' ist.
1660735188556.png

Grüße HT-T
 
Zuletzt bearbeitet:
@JesperMP: Hallo Jesper, danke für deine Antwort.
Und wo soll ich diese Anweisung reinpacken? :)
Ein neuer FB als SCL mit allein diesem Code ist eine ungültig Zuweisung.
 
Zurück
Oben