TIA Datenaustausch Panel und SPS - Problem mit Arrays

faklsus

Level-1
Beiträge
1
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo SPS-Forum,

ich habe ein Problem beim Austausch von Daten zwischen SPS und Panel. Die verwendete Komponenten:
  • CPU: Siemens S7-300 315-2 PN/DP
  • Panel: Siemens TP1900 Comfort
  • TIA v14
  • WinCC Advanced

Mein Ziel ist folgendes: Mit dem Panel wird eine Textdatei von einem USB-Stick eingelesen und weiterverarbeitet. Die Informationen werden zeilenweise aus der Textdatei ausgelesen (jeweils drei Realwerte pro Zeile) und in drei Arrays geschrieben. Diese Arrays bestehen aus jeweils 150 Elementen und sind als HMI-Variable angelegt. Anschließend sollen die Arrays auf dem Panel in einen DB in der SPS geschrieben werden.

Das extrahieren der Daten aus der Textdatei funktioniert soweit. Dies wurde mit einem Skript erledigt. Die Daten sind also in den drei Arrays auf dem HMI. In der SPS habe ich einen UDT mit ebenfalls drei Arrays angelegt und den UDT in einen DB integriert. Fuer die Uebertragung zur SPS habe ich die Arrays im Panel mit den Arrays in der SPS verbunden (Angabe der Adressen im DB. Dazu habe ich unter dem Fenster HMI-Variablen die Verbindung und die Adressen angegeben.)

Problem: Wenn sich jedoch mehr als 100 Elemente in den Arrays im Panel befinden, koennen diese nicht mehr zur SPS uebertragen werden. Es kommt folgender Fehler auf dem Panel: 190010 Variable DB1_Static_1_drillsize: Ueberlast, Werte gehen verloren. DB1_Static_1_drillsize ist dabei eines von den drei erwaehnten Arrays im Panel.
Sind weniger als 100 Elemente in den Arrays funktioniert die Uebertragung. Die Werte sind dann in den Arrays im DB sichtbar!
Ich habe testweise eine Wartezeit von einer Sekunden zwischen dem Uebertragen eines Elements eingefuegt. Dies hat dann funktioniert. Dies kann jedoch fuer den spaeteren Betrieb so nicht bleiben.

Ich vermute ein Problem mit der Synchronisation zwischen SPS und Panel?! Konnte jedoch noch nichts finden...

Ueber Vorschlaege und Tipps bin ich sehr dankbar.

Gruß Fabian
 
Zuletzt bearbeitet:
Moin faklsus,

ich kann leider nur ein paar Gedanken dazu beitragen:
- Die einzelnen Array-Elemente werden auch einzeln übertragen, also nicht 1x als komplettes Array
- bei einer 1500er Steuerung könnte man in der Steuerung eine UDT erstellen und Variablen diesen Datentyps per Drag&Drop in den Variablenhaushalt des Panels ziehen. Für so eine Variable (mit eigenem Datentyp) wird dann auch nur ein PowerTag verwendet und konsistent übertragen.
- Vielleich kann man die Rezepturverwaltung nutzen? Also eine Rezeptur mit den gewünschten Variablen erstellen. Dann mit Rezeptur schreiben/lesen die Daten zur Steuerung übertragen, bzw. von der Steuerung holen.

VG

MFreiberger
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jeder Zugriff auf ein Array-Element von mit der PLC verbundenen HMI-Variablen löst das Lesen bzw. Schreiben des ganzen Arrays aus. Das führt bei Zugriffen in einer Schleife zu der beobachteten Kommunikationsüberlastung.

Weiters: Woran willst Du erkennen, wann alle Variablenwerte aus der csv-Datei in der SPS angekommen sind? Dafür brauchst Du irgend ein Handshake. Sicher komplett bekommt man Werte nur als Rezeptur zwischen HMI und SPS übertragen, oder man programmiert sich selber ein Handshake z.B. mit Prüfsumme.

Dein Problem und die Fallstricke dabei wurden schon oft hier im Forum diskutiert, Suchbegriff: SetDataRecordTagsToPLC

Einfacher ist das Problem zu lösen, wenn nicht die WinCC Advanced RT die csv-Datei zur SPS sendet, sondern wenn eine WinCC Professional RT oder eine PC-Applikation mit einer Kommunikationsbibliothek (wie z.B. Snap7, Libnodave, ACCON-AGLink ...) die Werte in die SPS schreibt.

Harald
 
Zurück
Oben