Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: Ne handvoll Einsteigerfragen

  1. #1
    Registriert seit
    16.08.2007
    Beiträge
    40
    Danke
    5
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    So, wieder mal nen Tag an S7 rumgeklickt, dabei kamen so einige Frage auf auf SCL bezogen):

    1) Angenommen in einem FB1 wurde in den statischen Variablen eine Struktur definiert. Wie kann ich diese z.B. an FB2 übergeben, so dass ich von FB2 zumindest lesend darauf zugreifen kann?
    DB1.meineStruktur.meineVariable funktioniert nicht --> „Strukturierte Daten aus dem IO-Bereich des Instanz-DBs ‚Name’ sind nicht als Operanden im globalen DB-Zugriff erlaubt“

    2) Warum kann ich in einer Stuktur keine Multiinstanzen anlegen?
    Also z.B. sowas:
    VAR
    meineStruktur :STRUCT
    Variable1:BOOL;
    Zylinder1:FB_Zylinder;
    Zylinder2:FB_Zylinder;
    Zylinder3:FB_Zylinder;
    END_STRUCT

    Ausserhalb der Stuktur funktioniert es einwandfrei.

    3) Wie kann ich eine Instanz eines FB (also sowas wie gerade gezeigt, nur ausserhalb der Struktur) an einen anderen FB übergeben? VAR_IN_OUT bzw VAR_IN lässt diese Datentypen nicht zu. ANY hat nicht funktioniert. Können Pointer weiterhelfen?



    Es geht darum, aus einem FB heraus auf die Daten des aufrufenden FB zugreifen zu können. Möglichkeit 1 wäre gewesen, alle Variablen die ich brauche per VAR_IN oder VAR_IN_OUT rein zu holen. Fällt allerdings weg, das es über 40 Stück sind. Die nächste unschöne Möglichkeit wäre, direkt auf die Daten im Instanz-DB zuzugreifen. Da darin aber Strukturen sind, geht das nicht (s.o.).

    Das letzte was mir einfällt ist alle Variablen global anzulegen. Auch sehr unangenehm.

    Hat jemand bessere Ideen?


    Dann noch was zum GRAPH-Editor:
    Ich wollte auf ein globales Array einer Stuktur zugreifen, also so:
    "X".Modul[10].Variable1
    Hat im FUP/KOP-Editor einwandfrei funktioniert. Im Graph-Editor kann ich zwar in der Dropdown-Liste alles richtig auswählen, aber dabei werden die "" verschluckt. Auch wenn ich es von Hand eingebe. Wenn ich es allerdings rein kopiere, funktioniert es. Falsche Einstellung oder Fehler im Graph-Editor?

    So, ich hoffe es kommen ein paar Antworten. Danke...!
    Zitieren Zitieren Ne handvoll Einsteigerfragen  

  2. #2
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    1) Das kommt darauf an wie der FB2 aufgerufen wird. Wenn der FB1 den FB2 Aufruft dann die statische Variable als Ausgang von FB1 an einen Eingang von FB2 übergeben. Falls der FB2 von sonst wo aufgerufen wird ist der Saubere Weg über Ausgang von FB1 an globale Variable an Eingang von FB2. Der quer Zugriff auf Instanz DBs ist Unsauber.

    2) Das kann Step7 nicht Du kannst auch keine Arrays von FBs Bauen. Da sollte sich mal was ändern!

    3) Das geht auch nicht. Wir sind ja hier nicht beim OOP ;o)


    Graph7) Das muss ich auch erst mal testen.


    Sorry das ich Dir da nicht wirklich angenehmes schreiben konnte.
    If you open your Mind too much, your Brain will fall out.

  3. Folgender Benutzer sagt Danke zu zotos für den nützlichen Beitrag:

    derbenny (21.08.2007)

  4. #3
    Registriert seit
    16.08.2007
    Beiträge
    40
    Danke
    5
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Danke für die schnelle Antwort Hatte schon befürchtet dass die S7 das nicht packt was ich vor hatte. Der Einstieg ist wirklich etwas deprimierend, da hatte ich mir von Siemens mehr erhofft. Demzufolge wird es wohl eine größere Aktion werden. Wenn ich GRAPH vernünftig einbinden will muss ich wohl die komplette bisherige Datenstruktur umschmeissen

  5. #4
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Zitat Zitat von derbenny Beitrag anzeigen
    ...
    Hatte schon befürchtet dass die S7 das nicht packt was ich vor hatte. Der Einstieg ist wirklich etwas deprimierend, da hatte ich mir von Siemens mehr erhofft.
    ...
    Ich hatte nun drei Jahre lang nichts mit der Step7 am Hut und in der Erinnerung war es auch besser als es wirklich ist. Aber manche denken es wäre da nichts mehr zu verbessern ;o)
    If you open your Mind too much, your Brain will fall out.

  6. #5
    Registriert seit
    16.08.2007
    Beiträge
    40
    Danke
    5
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von zotos Beitrag anzeigen
    Ich hatte nun drei Jahre lang nichts mit der Step7 am Hut und in der Erinnerung war es auch besser als es wirklich ist. Aber manche denken es wäre da nichts mehr zu verbessern ;o)
    Jop, ich verfolge den Thread Wer mit dem Teil arbeitet, vielleicht nichts anderes kennt und mit seinem Alltagskram damit klar kommt und umständliche Klickereien halt in Kauf nimmt weils schon seit Jahren so ist...dem werden Verbesserungen ein rotes Tuch sein...wäre ja Aufwand, sich an die Neuerungen zu gewöhnen. Der Mensch ist faul und ein Gewohnheitstier

    Aber für die Diskussion gibts ja schon nen Thread

    Ich finde es jedenfalls armselig wenn man in einer aktuellen Softwaregeneration einer Programmierumgebung ein externes Programm bemühen muss um zu suchen an welcher Stelle im Quelltext eine Variable verwendet wird (Projektweite Volltextsuche, vor allem für Strukturen..).

  7. #6
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    Warum ist es eigentlich so unschön, in einem DB (z.Bsp. DB100) die benötigte Struktur zu definieren und diese dann in den FB entsprechend zu benutzen. Ich kann daran nichts schlechtes finden, das ist dann schlicht und einfach eine globale Variable/Struktur. Sie "verbirgt" sich zwar in einem DB, was zotos ja haßt, aber trotz allem ist es eine global angelegte Variable, die global im gesamten Programm gültig ist und verwendet werden kann.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  8. #7
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Ja das mit dem Globalen DB wäre eine Möglichkeit. Kommt darauf an wie oft der FB Aufgerufen wird. Wenn man diesen FB mehrfach braucht mir autonomen statischen variablen was ja im Normalfall die lokalen statischen Variablen darstellen dann geht der Trink nicht so einfach.

    Aber um da nun wirklich einen guten Kompromiss zu finden müsste man mehr über die Randbedingungen wissen.
    If you open your Mind too much, your Brain will fall out.

  9. #8
    Registriert seit
    16.08.2007
    Beiträge
    40
    Danke
    5
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Warum ist es eigentlich so unschön, in einem DB (z.Bsp. DB100) die benötigte Struktur zu definieren und diese dann in den FB entsprechend zu benutzen. Ich kann daran nichts schlechtes finden, das ist dann schlicht und einfach eine globale Variable/Struktur. Sie "verbirgt" sich zwar in einem DB, was zotos ja haßt, aber trotz allem ist es eine global angelegte Variable, die global im gesamten Programm gültig ist und verwendet werden kann.
    Wäre für einen FB ok. Es geht aber darum, dass es so an die 20 Module gibt, in denen ich jeweils die Schrittkette in einen GRAPH FB auslagern wollte. D.h. ich müsste für jedes dieser 20 Module den eigentlichen Modul-FB + Instanz-DB + global-DB + GRAPH-FB anlegen. Das wird unübersichtlich, frisst Speicher und tut der Performance bestimmt auch nicht gut

  10. #9
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Aber die FBs könnten doch eine Struktur (UDT) aus dem globalen DB im IN_OUT Bereich benutzen. (oder?)
    If you open your Mind too much, your Brain will fall out.

  11. #10
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von derbenny Beitrag anzeigen
    Wäre für einen FB ok. Es geht aber darum, dass es so an die 20 Module gibt, in denen ich jeweils die Schrittkette in einen GRAPH FB auslagern wollte. D.h. ich müsste für jedes dieser 20 Module den eigentlichen Modul-FB + Instanz-DB + global-DB + GRAPH-FB anlegen. Das wird unübersichtlich, frisst Speicher und tut der Performance bestimmt auch nicht gut
    Ok, das kann ich verstehen, aber der Übersichtlichkeit tut das, was du vorhast noch viel weniger gut, da kaum jemand anders da noch rauskommen würde. Ich bin auch immer sehr am überlegen, wie ich die FB/FB/DB aufteile, inzwischen hab ich eine Art eigenen Standard, so daß ich mich in allen meinen Programmen zurechtfinde. Wenn du für jedes der Module(Stationen?) je 10 FC/FB/DB reservierst, die Nummern entsprechend aufteilst und die Symbolik gut überlegt einsetzt ginge das schon. Inzwischen können ja die meißten Siemens-CPU auch mit etwas größeren Bausteinummern als 128/256 umgehen.

    Bei der Performance wär ich mit nicht unbedingt so sicher, müßte man mal probieren.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •