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

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

Thema: Codeübergabe am FB Baustein mit SCL

  1. #1
    Registriert seit
    15.11.2008
    Beiträge
    67
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen

    Habe mal wieder meine kreative Phase und stehe vor einem Problem

    Ich möchte einem Baustein eine Funktion übergeben, das ganze will ich in eine Zeile schreiben, da der Baustein sonst zu groß wird.

    Dem Baustein möchte ich sagen z.B

    Hole Messwert 1
    Lade interne Funktion 10
    mache am PLS 2 Komma stellen

    also muß ich die Kombination 1,10,2 übergeben
    jetzt habe ich für den Eingangswert einen string parametriert
    Wenn ich den Baustein aufrufe kann ich weder '1,10,2' noch "1,10,2"
    noch #1,10,2# übergeben. Kann ich überhaut Texte übergeben uund wie ?
    Zitieren Zitieren Codeübergabe am FB Baustein mit SCL  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.402 Danke für 2.001 Beiträge

    Standard

    Hallo,
    eine Übergabe, wie du die dir wahrscheinlich vorstellst, geht so nicht.
    Du kannst einen String nicht im Klartext übergeben (das läuft nur als Pointer). Wenn du einen bereits deklarierten und zugewiesenen String an die Funktion übergeben willst, so geht das natürlich, aber den musst du in der Funktion dann auch wieder zerlegen ... Nach meiner Meinung wäre es hier wesentlich einfacher und übersichtlicher, mit mehreren Parametern in der Übergabe zu arbeiten ...

    Gruß
    LL

  3. #3
    Registriert seit
    15.11.2008
    Beiträge
    67
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Larry

    das ging aber schnell. Habe die Problematik verstanden. Nur wenn ich einzelübergabe mache wie in meinem Beispiel 32 Werte a 3 Werte habe ich schnell mal 96 Eingansvariablen am Var_Input. Ich könnte das ganze auch
    direct reinschreiben, aber da fällt der Montagemann drausen wieder tot um.

    Was gibt es denn sonst noch für möglichkeiten BCD oder sowas
    Real hab ich auch schon ausprobiert, da bekomme ich aber nur 2 Funktionen rein. Die vor dem Komma und die Nach dem Komma
    Zitieren Zitieren Codeübergabe  

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.402 Danke für 2.001 Beiträge

    Standard

    ... da müßtest du mir ein paar mehr Info's geben - vielleicht fällt mir dann dazu noch etwas Schönes ein. Was soll dein FB bzw. FC denn letztlich machen ?
    Mit REAL würde ich nicht arbeiten, da du mit der Stellenzahl begrenzt bist und es dadurch (und durch das Zustandekommen von Exponent und Mantisse) zu netten Rundungsfehlern kommen kann.

  5. #5
    Registriert seit
    15.11.2008
    Beiträge
    67
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hintergrund

    Also habe mir mit SCL einen Baustein geschrieben, der 100 % Funktioniert und auch schon im Einsatz ist. Der Baustein enhält alle Funktionen die ich momentan brauche. Brauche ich eie Weitere Funktion mache ich einfach eine dazu. D.H ich kann für alle kleinanlagen das gleiche Programm verwenden.
    Funktionen sind
    // 0 keine Funktion
    // 1 Pegel > ein über
    // nachfolgend aus unter
    // 2 Pegel < ein unter
    // nachfolgend aus über
    // 3 Pegel > ein über aus gleichzeitig unter <
    // 4 Pegel < ein unter aus gleichzeitig über >
    // 5 Einschaltverzögerung Sekunde Beginn mit Start ein Ende bei Start aus
    // 6 Auschaltverzögerung Sekunde Beginn mit Start aus Ende bei Start ein
    // 7 Einschaltverzögerung Minute Beginn mit Start ein Ende bei Start aus
    // 8 Auschaltverzögerung Minute Beginn mit Start aus Ende bei Start ein
    // 9 Timer schaltet bei gleich ein, wenn aus, schaltet bei gleich ein, wenn aus
    //10 Arbeitszeit / Pausenzeit Sekunde bei Pause 0 ist dauer ein
    // nachfolgend ist Pausenzeit
    //11 Arbeitszeit / Pausenzeit Sekunde bei Pause 0 ist dauer ein
    // nachfolgend ist Pusenzeit

    zu diesen Funktionen übergebe ich noch wieviele Kommastellen am PLS angezeigt werden sollen

    Weiterhin benötige ich z.b für die Funktion 1 und 2 einen Messwert
    also sieht meine Var_Input so aus

    Gruppe_1:INT; // 1 Gruppe für anzeige PLS
    Istwert_1:INT; // 1 Pegelabfrage
    Kom_1:int; // 1 vorgewählte Kommastelle
    FunC_1:int; // 1 vorgewählte Funktion

    das ganze mal 32 gibt ein Riesen ding
    so hab ichs auch nur aus den 4 Zeilen wollte ich eine Machen
    zB. 1,1,1,1

    1, = Gruppe 1
    1, = Messwert 1
    1, = eine kommastelle als Anzeige
    1, = Funktion 1

    wenn es keine bessere Lösung gibt laß ichs halt
    Zitieren Zitieren Codeübergabe  

  6. #6
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Eine möglichkeit wäre das als UDT anzulegen

    Gruppe_1:INT; // 1 Gruppe für anzeige PLS
    Istwert_1:INT; // 1 Pegelabfrage
    Kom_1:int; // 1 vorgewählte Kommastelle
    FunC_1:int; // 1 vorgewählte Funktion
    und diese wiederum in einen Datenbaustein als ARRAY 1..32 vom Typ des UDT.

    Die Parametrierung erfolgt dann allerdings im Datenbaustein.


    Gruss Daniel
    Geändert von dalbi (29.12.2008 um 14:19 Uhr)
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

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

    Standard

    Wie wäre es mit einer DWORD Konstante?

    Die geht von D#16#00000000 bis D#16#FFFFFFFF

    Wenn man sich nun darauf einigt welche Stelle welche Funktion hat:

    Code:
         ++-------Messstelle
         ||
         ||++-----Funktion
         ||||
         ||||++---Kommastellen
         ||||||
         ||||||++-Reserve Byte
         ||||||||
    D#16#01100200
    Ich würde da aber einfach drei Eingänge nehmen und mir den ganzen Zirkus einfach sparen ;o)
    If you open your Mind too much, your Brain will fall out.

  8. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.402 Danke für 2.001 Beiträge

    Standard

    ... dazu habe ich noch Fragen :

    - wieso "das Ganze mal 32" ?
    - die Funktionen habe ich noch nicht verstanden ... bzw. die Sache mit "<" und ">"

    Gruß
    LL

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

    Standard

    Das schreit ein wenig nach einer udt, wie D.Albinus schon schrieb.
    Die udt als IN im FB deklarieren, dann kann man "Außen" am FB die UDT-Variablen aus dem angelegten DB anparametrieren. Und im FB kann man mit den Variablen aus der udt weiterarbeiten, das ist dann auch recht übersichtlich.
    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

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Blackforest Beitrag anzeigen
    // 0 keine Funktion
    // 1 Pegel > ein über
    // nachfolgend aus unter
    // 2 Pegel < ein unter
    // nachfolgend aus über
    // 3 Pegel > ein über aus gleichzeitig unter <
    // 4 Pegel < ein unter aus gleichzeitig über >
    // 5 Einschaltverzögerung Sekunde Beginn mit Start ein Ende bei Start aus
    // 6 Auschaltverzögerung Sekunde Beginn mit Start aus Ende bei Start ein
    // 7 Einschaltverzögerung Minute Beginn mit Start ein Ende bei Start aus
    // 8 Auschaltverzögerung Minute Beginn mit Start aus Ende bei Start ein
    // 9 Timer schaltet bei gleich ein, wenn aus, schaltet bei gleich ein, wenn aus
    //10 Arbeitszeit / Pausenzeit Sekunde bei Pause 0 ist dauer ein
    // nachfolgend ist Pausenzeit
    //11 Arbeitszeit / Pausenzeit Sekunde bei Pause 0 ist dauer ein
    // nachfolgend ist Pusenzeit
    Mir wird da schon beim Lesen schwindelig. Sieht irgendwie nach einem dunkelschwarzen Wald aus, wo man sich sehr leicht verläuft . Du solltest das ganze Konzept noch einmal überdenken.

    Wenn wirklich -zig Parameter übergeben werden müssen, dann nur als UDT, wie schon empfohlen wurde.


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

Ähnliche Themen

  1. RTC-Baustein
    Von Bambam im Forum CODESYS und IEC61131
    Antworten: 0
    Letzter Beitrag: 15.09.2010, 14:52
  2. CFC --> S7-Baustein
    Von Engelskrieger im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 14.09.2009, 09:37
  3. S7 Baustein für IB IL AO 2/U/BP
    Von manas im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 12.12.2007, 22:44
  4. Baustein für FU
    Von waldy im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 18.01.2006, 23:01
  5. DB Baustein FAQ
    Von Hoilebolle im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 21.10.2004, 08:31

Lesezeichen

Berechtigungen

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