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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 22

Thema: Parameter-Übergabe an FC

  1. #1
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich könnte da mal eine Anregung gebrauchen ...

    Zunächst ein bißchen drum-herum-Geplänkel :
    In menier Firma arbeiten wir viel mit Rundtischen für Monatge und Prüf-Aufgaben. Um die einzelnen Arbeitsschritte der Rundtisch-Station korrekt nachvollziehen zu können bilde ich das Ergebnis deren Arbeit in einem sogenannten "Schiebespeicher" ab. Das ist im Prinzip ein rotierendes ARRAY of UDT. Der Inhalt dieses Schiebespeichers gibt u.A. die Start-Freigabe für die jeweilige Station. Das sieht im Moment in etwa so aus :
    Code:
    UN  DB100.DBX10.0   // Teil nicht NIO
    U   DB100.DBX10.1   // Teil 1 vorhanden
    UN  DB100.DBX10.2   // Teil 2 vorhanden
    =  #Teil_OK
    Das funktioniert auch und ist im Prinzip OK. Nun möchte ich aber lieber eine FC habe, die mir Teil_OK als BOOL zurückgibt entsprechend der Parameter, die ich übergeben habe. Und da ist jetzt mein Problem ...

    Am liebsten würde ich es so machen :
    Code:
    call FC 500
      Station := 12
      Maske  := 'nNIO,T1,nT2'
    Aber das möchte die SPS natürlich nicht. Ich möchte den String, den ich bei Maske übergebe nicht in einem DB hinterlegen, sondern die Parameter frei antragen können. Ich bestehe allerdings nicht auf diese Form der Parameter-Übergabe.

    Hat jemand dazu eine gute Idee (kein Programmier-Vorschlag) ?
    Danke schon mal im Voraus ...
    Zitieren Zitieren Parameter-Übergabe an FC  

  2. #2
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    sind die übergebenen parameter immer die ersten 3 bit des bytes?

    dann könntest du doch einfach das byte übergeben
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  3. #3
    Registriert seit
    06.10.2003
    Beiträge
    3.413
    Danke
    451
    Erhielt 506 Danke für 408 Beiträge

    Standard

    Hallo Larry,

    am einfachsten wird es sein wenn du einen Parameter vom Typ "UDT" übergibst. Dann stehen dir im Fb alle Variablen symbolisch zur Verfügung. Oder halt über Any-Pointer.


    Gruß, Onkel
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  4. #4
    Avatar von Larry Laffer
    Larry Laffer ist offline Super-Moderator
    Themenstarter
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard

    Zitat Zitat von volker Beitrag anzeigen
    sind die übergebenen parameter immer die ersten 3 bit des bytes?
    Nein, es können z.Zt. bis zu 16 Bits werden, je nachdem, wie weit die Station hinten im Prozess steht. Es ist auch nicht so, dass immer alle Bits gesetzt sind. Es kann genauso sein, das welche nicht gesetzt sein sollen. Eben im Prinzip so, wie ich es oben dargestellt habe ...

    von Onkel Dagobert: am einfachsten wird es sein wenn du einen Parameter vom Typ "UDT" übergibst. Dann stehen dir im Fb alle Variablen symbolisch zur Verfügung. Oder halt über Any-Pointer.
    wie fügt man eigentlich 2 Zitate richtig ein ?
    Ein UDT ist es jetzt ja schon. Ich hätte am Liebsten (man kann sich ja mal was wünschen - es ist ja bald wieder Weihnachten) eine parametrierte Übergabe. Die Funktion soll sich dann selbst daraum kümmern, wo der Salat weg kommt und ob es "1" oder "0" ist. Ich dachte da so ein bißchen an die gute alte Turbo-Pascal-Zeit.

  5. #5
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.224
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Das mit dem Schiebespeicher mache ich genauso, allerdings hat sich gezeigt, daß es sinnvoll ist auch noch jeder einzelne Station ein Bit "Habe gearbeitet" mit auf die Teileinformation zu legen. Wenn jemand den Rundtisch per Hand 2 Stationen weiter gedreht hat, wurden ansonsten Teile bearbeitet, denen vorhergehende Schritte fehlen. Da man auch u.U. Stationen abwählen kann, je nach herzustellendem Teil, bin ich dann von so einem FC abgekommen, wie er dir vorschwebt und bilde mit nach wie vor meine Bits "Teil bearbeiten" etc. von Hand, so wie du das ja bisher auch machst. Aber es lohnt sich wohl, mal wieder darüber nachzudenken. Man kann natürlich dem FC 16 Bool-IN verpassen (für ein Wort z.Bsp.), welche alle True sein müssen, damit am Out ein "Teil bearbeiten" erscheint. Ungenutze bekommen ein True an den Input. Wenn du viele negierte Bits hast könnte man eine "Input-Maske im Wortformat vorsehen". Die Bits darin, negieren dann bei Bedarf im FC den Input.
    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

  6. #6
    Avatar von Larry Laffer
    Larry Laffer ist offline Super-Moderator
    Themenstarter
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard

    Hallo Ralle,
    den Ansatz (UND-Maske und ODER-Maske) hatte ich auch schon. Das wäre für mich auch OK. Aber ich habe ja noch 2 Mitarbeiter, die das Ganze idealerweise auch verstehen sollen. Ich habe da allerdings schon die Erfahrung gemacht, das so etwas wie L 2#11100011_00001111 auf ein wenig Unverständnis stösst. Vor allen Dingen dann, wenn noch H- und L-Byte vertauscht dargestellt werden ...

    Ich hatte ja schon erwähnt, meine aktuelle Lösung tut es. Ich möchte halt nur etwas "schickes" neues erstellen ... Irgendwie lässt mich halt dieser Gedanke nicht los ...

    Die andere Geschichte mit "habe gearbeitet" mache ich auch. Manche Station haben gearbeitet, wenn sie ihr Teil hinzugefügt haben, andere wenn sie es (wie auch immer) geprüft haben und wieder andere, wenn sie es bearbeitet haben. Das taucht dann auch so in meiner UDT-Zuordnung auf.

  7. #7
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.224
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Na gut, wenns fdenn dein sein soll dann wird halt ein langer FC:

    NEG_IN01
    FRG_IN01
    NEG_IN02
    FRG_IN02
    NEG_IN03
    FRG_IN03
    ...
    NEG_IN16
    FRG_IN16

    als INPUT
    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. #8
    Avatar von Larry Laffer
    Larry Laffer ist offline Super-Moderator
    Themenstarter
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard

    Brrrrr .....

  9. #9
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Hallo Ralle,
    den Ansatz (UND-Maske und ODER-Maske) hatte ich auch schon. Das wäre für mich auch OK. Aber ich habe ja noch 2 Mitarbeiter, die das Ganze idealerweise auch verstehen sollen. Ich habe da allerdings schon die Erfahrung gemacht, das so etwas wie L 2#11100011_00001111 auf ein wenig Unverständnis stösst. Vor allen Dingen dann, wenn noch H- und L-Byte vertauscht dargestellt werden ...
    Ich glaube zu verstehen, aber nicht warum

    call FC 500
    Station := 12
    Maske := 'nNIO,T1,nT2'

    für die 2 anderen Mitarbeiter klarer ist.

    Weil da muss man nun auch einen Syntax einhalten.....und der muss, wie auch immer gecheckt werden.

    Weiters, in Deinem Wunsch FC fehlt noch der "Istzustand" oder? Die "Maske" beschreibt doch nur wie es sein soll, oder steht der Istzustand immer im DB100.DBX10.0 ...... DB100.DBX11.7 (oder was auch immer für eine Länge)?

  10. #10
    Avatar von Larry Laffer
    Larry Laffer ist offline Super-Moderator
    Themenstarter
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Booromeus,
    der Istzustand ist das was in dem DB drinsteht. DBD10 steht für Station 1, DBD14 für Station 2 usw.
    Der Wunsch-FC soll (sollte) über den RET_VAL zurückgeben, ob die Vorgabe mit dem Istzustand übereinstimmt.

    Der Hintergrund der ganzen Geschichte ist, dass manchmal die Stationen auf (an) dem Drehtisch ihre Postion wechseln. Ich brüchte dann jetzt nun den Index an meinem FC ändern (im Bespiel die 12) und schon ist alles vergessen. Selbstverständlich gibt es wenn dann auch noch einen 2. FC, der in der Lage ist, die Zustände zu manipulieren. Aber hat man das Eine, dann ergibt sich daraus auch das Andere ...

Ähnliche Themen

  1. FB Aufruf mit DB übergabe in AWL/SCL
    Von Admec im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 07.10.2010, 09:24
  2. Parameter Übergabe in ST
    Von RobiHerb im Forum Programmierstrategien
    Antworten: 10
    Letzter Beitrag: 11.05.2010, 07:20
  3. Parameter übergabe nicht Korrekt
    Von Björn im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 04.03.2010, 10:35
  4. SCL: Übergabe Instanz-DB (für FB in FC)
    Von IchBinsNur im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 22.07.2008, 19:34
  5. Übergabe von Parametern
    Von Thomas86 im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 17.04.2007, 08:57

Lesezeichen

Berechtigungen

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