TIA S7-1500 ANY-Pointer an Multi-FB

Rudelz

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

ich bin TIA Anfänger und stehe seit mehreren Tagen völlig auf dem Schlauch :sad: Ich hoffe, ihr könnt mich zumindest mal auf den richtigen Weg bringen.

Ich bin dabei, die Standard-Software unserer Firma von S7-300 auf S7-1500 (optimaler Weise auch S7-1200 kompatibel) umzubauen. Wie der Begriff "Standard" schon vermuten lässt, sind die Bausteine sehr flexibel und für alle Maschinensteuerungen einzusetzen, und das muss auch so bleiben.
Daher wird viel von außen "dran-parametriert". Bisher haben wir es so gemacht, dass wir von außen per ANY-Pointer einen Datenbereich eines DB (der Bereich enthält meist mehrere unterschiedliche UDTs) übergeben haben. In den Bausteinen selbst haben wir diesen ANY-Pointer wieder zerlegt und somit wussten wir, in welchem DB die Daten liegen, ab welcher Adresse der Bereich beginnt, welche Länge zu lesen/schreiben ist, etc. Wichtiger Knackpunkt dabei: im FB konnte man somit Daten aus dem DB auslesen, als auch Daten direkt dort hineinschreiben.

Im TIA kann ich aber scheinbar überhaupt nicht mehr per
Code:
L P##IN_ANY_Lesebereich
auf Input-Variablen zugreifen. Also kann ich auch nicht auf den Wert für die Länge der Daten zugreifen, was ich ja zB auch für die Parametrierung eines Kopplers oder RFID-Readers brauche.
Da sich die Länge der Daten je nach Anlage, Anwendung und Funktion unterscheidet, sollen möglichst alle benötigten Infos in einem Übergabewert stecken (wie ANY-Pointer).

Also meine Fragen:
- lassen sich ANY-Pointer in der Form wie benötigt nicht mehr benutzen? Wenn doch, wie? Wenn nein, was ist die Alternative? Variant, DB_Any, Array_DB, Block_DB, etc?

Ich brauche also mal einen Tipp, mit welchen neuen Funktionen ich mich am besten beschäftige. Ich kann schlecht die Step7-V13 Doku mit 13040 Seiten komplett lesen :confused:

Gruß
Rudelz


EDIT:
Bei nicht "optimiertem Bausteinzugriff" funktioniert der Zugriff ANY-Pointer wie gehabt. Aber ist das eine "schöne und saubere" Lösung im TIA-Zeitalter?
 
Zuletzt bearbeitet:
Im TIA-Zeitalter und S7-1500 solltet Ihr euch von den alten ANY-Schweinereien verabschieden.
Schreibt die Bausteine neu und voll symbolisch. Übergebt Strukturen. Schreibt notfalls mehrere angepasste Bausteine statt einem, der "Alles" können soll.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Momentan ist es möglich, die gesamte Software für eine "ähnliche" Anlage zu kopieren und über Parameter anzupassen. Wie du es schreibst, würde es bedeuten, in jedem einzelnen FB Anpassungen vorzunehmen. Das ist nicht nur enorm zeitaufwändig, sondern auch sehr fehleranfällig. Und genau das wollen wir vermeiden. "Inbetriebnehmer" sollen das auch schaffen, nicht nur die Entwicklungsabteilung.

Wäre natürlich aus unserer Sicht ein Rückschritt, falls TIA wirklich weniger flexibel verwendet werden kann. Ich hoffe momentan einfach, dass ich die "guten Lösungen" und nötigen Funktionen noch nicht entdeckt habe...
 
Ich habe das auch drin, es geht einfach nicht anders im TIA, wenn ich meine Datenabblage in der SPS nicht komplett ändern will.
Ich habe 50 Typ-DB, die müssen ja nach Typ umkopiert werden. Das geht symbolisch nur über eine 50-er Case-Anweisung (wenn überhaupt) oder eben über das ermitteln der Quell-/Zieldaten aus dem Any und dann umkopieren mit BLOCKMOV_Variant.
 
Das Problem bei ANY ist, daß der Baustein mit Adressen jongliert und deshalb nur auf nicht-"optimierte" Daten zugreifen kann. Mit den von Siemens angedrohten drastischen Performance-Einbußen. Dann braucht man (noch) keine S7-1500 einsetzen, wenn die eh' nur eine S7-400 emuliert.

Mit Variant kann man noch nicht wirklich was anfangen.

Bei dem gedankenlosen 1:1-Weiternutzen uralt gewachsener S7-300-Bausteine hat man zusätzlich die realistische Gefahr, daß man die Probleme der azyklischen Kommunikation mit HMI und das geänderte Timerverhalten schlicht übersieht und sich dadurch häufiges sporadisches unerklärliches Fehlverhalten in die neuen Programme holt, obwohl die alten Bausteine doch so toll funktioniert haben. Beim Konvertieren muß man sich tatsächlich jede einzelne Codezeile ansehen.

Ich bin für komplett neu schreiben.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei dem gedankenlosen 1:1-Weiternutzen uralt gewachsener S7-300-Bausteine hat man zusätzlich die realistische Gefahr, daß man die Probleme der azyklischen Kommunikation mit HMI und das geänderte Timerverhalten schlicht übersieht und sich dadurch häufiges sporadisches unerklärliches Fehlverhalten in die neuen Programme holt, obwohl die alten Bausteine doch so toll funktioniert haben. Beim Konvertieren muß man sich tatsächlich jede einzelne Codezeile ansehen.

Ich bin für komplett neu schreiben.

Harald
Das sehe ich genau so. Und ich hätte auch gerne die Zeit und Ressourcen dafür, das alles IEC-konform und TIA-optimiert neu aufzubauen. Leider müssen in der Welt der Automatisierungstechnik Kompromisse getroffen werden, die "optimale Software" nicht möglich machen. Der Kunde wartet ja schließlich nicht unendlich lange auf Ergebnisse ;)

Nach meinem Gespräch mit einem Siemens Mitarbeiter eben, der gleicher Ansicht war, muss ich nur noch die Vorgesetzten davon überzeugen, mal in ordentliche Lösungen zu investieren (Schulungen, Zeit). Dieser sagte auch, dass Datenlisten als VARIANT übergeben bereits super funktioniert :ROFLMAO: Mal testen...
 
Aber noch mal zum aktuellen Problem:
Wenn ich einen Datenbereich an einen FB übergebe (ANY, Variant, UDT, etc), muss es doch möglich, im FB die Länge dieses Bereichs zu bestimmen, ohne den "optimierten Bausteinzugriff" aufzuheben?! :confused:
Die Information steckt doch definitiv in dieser übergebenen Variable. Gibts kein "get_length" oder sowas??
 
Das Problem bei ANY ist, daß der Baustein mit Adressen jongliert und deshalb nur auf nicht-"optimierte" Daten zugreifen kann. Mit den von Siemens angedrohten drastischen Performance-Einbußen. Dann braucht man (noch) keine S7-1500 einsetzen, wenn die eh' nur eine S7-400 emuliert.

Genau, wer braucht die 1500 und dieses TIA eigentich überhaupt???
Optimierter Bausteinzugriff, eh wirklich, das ist doch alles ein Witz.
 
Zurück
Oben