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

Ergebnis 1 bis 6 von 6

Thema: Ein-/Ausgangsparameter einer FC in GRAPH

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

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich habe einen GRAPH-FB, der mehrere Ketten beinhaltet. Jede Kette hat immer einen aktiven Schritt. Nun habe ich ein Array, für jede Kette ein Element, das den momentan aktiven Schritt beinhaltet.

    Also sowas:

    ActStep : Array[1..6] of INT //Aktiver Schritt der Ketten 1-6

    Über die GRAPH-Interne Struktur kann ich das auch realisieren (mit SAX[..], G7S[..].SNO, ...). Habe das in einem SCL-FB umgesetzt. Da ich das ganze aber mehrfach brauche, wäre es schöner, wenn ich das in einer Funktion hätte, die folgende Parameter hat:

    IN:
    SAX : ANY
    G7S : ANY

    OUT:
    ActStep : Array[1..6] of INT


    Beides macht allerdings Probleme. SAX/G7S hatte ich als ANY deklariert, da das ja kein "richtiger" Datentyp ist. Die Zuweisung im aufrufenden FB funktioniert auch, allerdings kann ich in der Funktion dann per SAX[index] nicht darauf zugreifen. Geht wohl nur per absolutem Zugriff, was aber wohl nicht brauchbar sein wird.

    Das Ausgangs-Array kann ich beim Aufruf nicht zuweisen. In GRAPH erscheint ja dann der Block in dem die Parameter angegeben werden können, aber wenn ich dort ein gleiches Array, auch 1..6 of int zuweisen will, bleibt das dauernd rot. Egal ob ich es mit DBn.Arrayname oder nur mit Arrayname oder mit Arrayname[..] mache, es geht einfach nicht.

    Inzwischen habe ich es fast schon aufgegeben, das ganze in eine Funktion zu packen.

    Eine zweite Idee war, mit BLOCK_DB als Eingangsparameter der Funktion den Zugriff auf den gesamten GRAPH-DB zu verschaffen, aber dann ist wieder nur absoluter Zugriff mit DBn.DBX1.3 usw möglich und nicht DBn.SAX[index].

    Am sinnvollsten wäre es natürlich, wenn ich keine Funktion bräuchte, sondern direkt in GRAPH das gewünschte Array erzeugen könnte, aber mit der primitiven Syntax in GRAPH seh ich da keine Möglichkeit.

    Hat jemand Ideen?
    Kann ich die Daten doch an eine Funktion übergeben?
    Kann ich die Schrittnummern sonstwie rauskriegen? (S_NO ist recht sinnfrei bei mehreren Ketten..)
    An was kann es liegen dass ich kein Array zuweisen kann? (In KOP geht es bei derselben Funktion).

    Wäre für Ideen dankbar


    By the way: Weiss man schon ab wann GRAPH auch SCL-Aktionen kann?
    Zitieren Zitieren Ein-/Ausgangsparameter einer FC in GRAPH  

  2. #2
    Registriert seit
    27.08.2003
    Ort
    Schweitenkirchen
    Beiträge
    472
    Danke
    101
    Erhielt 73 Danke für 59 Beiträge

    Standard

    Hi,
    hab zwar nicht direkt die Lösung für dein Problem, aber
    ich hätte allein schon wegen der Übersicht eher auf 6 Graph FBs gesetzt.
    Für jede Kette einen eigenen FB.
    Somit macht S_NO wieder Sinn.

    (Bin nicht so der Graph Spezi, für meine Bedürfnisse hats bis jetzt gereicht )
    Gruss Andy

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

    Standard

    Die Idee hatte ich auch schon, aber dann auch gleich wieder vergessen.
    Das würden einfach zu viele werden. Und davon abgesehen frisst es noch deutlich mehr Speicher, wenn ich 6 FBs mit Instanz-DBs anlege, als einen FB/DB mit 6 Ketten. Dazu bräuchte ich dann auch noch 6 mal den Aufruf, 6 mal die Verwaltung (Reset, BA usw),... naja.

    Am sinnvollsten wäre es wirklich wenn man das direkt in GRAPH machen könnte. Dann könnte man das Array mit aktiven Schritten als Ausgangsparameter des Graph-FB übergeben. Wäre das schönste. Aber mit den umfangreichen , flexiblen und vielfältigen Möglichkeiten und der tollen Syntax in Graph braucht man garnicht daran denken....

  4. #4
    Registriert seit
    22.11.2005
    Ort
    kl.Odenwald
    Beiträge
    716
    Danke
    111
    Erhielt 85 Danke für 71 Beiträge

    Standard

    Zitat Zitat von derbenny Beitrag anzeigen
    Hallo,


    Also sowas:

    ActStep : Array[1..6] of INT //Aktiver Schritt der Ketten 1-6

    Über die GRAPH-Interne Struktur kann ich das auch realisieren (mit SAX[..], G7S[..].SNO, ...). Habe das in einem SCL-FB umgesetzt. Da ich das ganze aber mehrfach brauche, wäre es schöner, wenn ich das in einer Funktion hätte, die folgende Parameter hat:

    IN:
    SAX : ANY
    G7S : ANY

    OUT:
    ActStep : Array[1..6] of INT


    Wäre für Ideen dankbar


    By the way: Weiss man schon ab wann GRAPH auch SCL-Aktionen kann?
    Versuche es mal, aber hab ehrklich noch nicht so ganz gecheckt, was du eingentlich machen willst.

    Dau kannst z.B. bei einem Array von 6 Elementen die Ausgangsparameter einfach einzeln als OUT angeben.
    Oder einen UDT mit Schritt 1-6 hinterlegen und diesen verwenden.
    Oder obige Funktion schreiben und im Graph-FB unter den Permanten Operationen aufrufen.
    Das Werkzeug ANY-Pointer ist imho nicht notwendig.

    hth
    "Das Leben ist viel zu kurz, um schlecht zu essen !"
    (Johann Lafer zur SWR3 Grillparty)

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

    Standard

    Zitat Zitat von kiestumpe Beitrag anzeigen
    Versuche es mal, aber hab ehrklich noch nicht so ganz gecheckt, was du eingentlich machen willst.
    Ich will:
    - Das Array SAX aus dem Instanz-DB eines GRAPH-FBs an eine Funktion übergeben.
    - Das Array G7S an eine Funktion übergeben
    - In der Funktion auf die Elemente zugreifen, verarbeiten und in ein Array schreiben
    - Das Array als Ausgangsparameter ausgeben

    Zitat Zitat von kiestumpe Beitrag anzeigen
    Dau kannst z.B. bei einem Array von 6 Elementen die Ausgangsparameter einfach einzeln als OUT angeben.
    Richtig, das würde funktionieren

    Zitat Zitat von kiestumpe Beitrag anzeigen
    Oder einen UDT mit Schritt 1-6 hinterlegen und diesen verwenden.
    Dann bräuchte ich aber für jeden Funktionsaufruf einen UDT, und das können einige sein

    Zitat Zitat von kiestumpe Beitrag anzeigen
    Oder obige Funktion schreiben und im Graph-FB unter den Permanten Operationen aufrufen.
    Genau das hatte ich ja versucht, aber GRAPH wollte das Array nicht anzeptieren. Aber zuerst muss ich die Daten rein kriegen, sonst hab ich nix zum auswerten.

  6. #6
    Registriert seit
    22.11.2005
    Ort
    kl.Odenwald
    Beiträge
    716
    Danke
    111
    Erhielt 85 Danke für 71 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von derbenny Beitrag anzeigen
    Dann bräuchte ich aber für jeden Funktionsaufruf einen UDT, und das können einige sein
    warum denn das ? Hast du etwa unterschiedliche Typen, oder einmal 4 und andersmal 7 Schritte?
    Typ: gehe auf Maximalausbau.
    "Das Leben ist viel zu kurz, um schlecht zu essen !"
    (Johann Lafer zur SWR3 Grillparty)

Ähnliche Themen

  1. Kopplung einer 317 mit einer IM151 über Profinet
    Von GerhardPtl im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 08.07.2010, 13:52
  2. Antworten: 7
    Letzter Beitrag: 19.03.2008, 21:11
  3. Ablaufsteuerung S7-Graph nach einer Störung?
    Von tino2512 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 23.10.2007, 13:32
  4. Scl - Ausgangsparameter
    Von kpeter im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 26.02.2007, 20:48
  5. Antworten: 1
    Letzter Beitrag: 10.11.2006, 16:29

Lesezeichen

Berechtigungen

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