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

Page 1 of 2 12 LastLast
Results 1 to 10 of 14

Thread: Codeübergabe am FB Baustein mit SCL

  1. #1
    Join Date
    15.11.2008
    Posts
    69
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default


    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 ?
    Reply With Quote Reply With Quote Codeübergabe am FB Baustein mit SCL  

  2. #2
    Join Date
    22.03.2007
    Location
    Detmold (im Lipperland)
    Posts
    12,402
    Danke
    422
    Erhielt 2,536 Danke für 2,108 Beiträge

    Default

    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
    Join Date
    15.11.2008
    Posts
    69
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default

    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
    Reply With Quote Reply With Quote Codeübergabe  

  4. #4
    Join Date
    22.03.2007
    Location
    Detmold (im Lipperland)
    Posts
    12,402
    Danke
    422
    Erhielt 2,536 Danke für 2,108 Beiträge

    Default

    ... 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
    Join Date
    15.11.2008
    Posts
    69
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default

    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
    Reply With Quote Reply With Quote Codeübergabe  

  6. #6
    Join Date
    19.06.2005
    Location
    in Bayern ganz oben
    Posts
    1,364
    Danke
    188
    Erhielt 374 Danke für 290 Beiträge

    Default

    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
    Last edited by dalbi; 29.12.2008 at 14:19.
    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
    Join Date
    07.03.2004
    Posts
    4,462
    Danke
    948
    Erhielt 1,169 Danke für 837 Beiträge

    Default

    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
    Join Date
    22.03.2007
    Location
    Detmold (im Lipperland)
    Posts
    12,402
    Danke
    422
    Erhielt 2,536 Danke für 2,108 Beiträge

    Default

    ... 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
    Join Date
    27.05.2004
    Location
    Thüringen/Berlin
    Posts
    13,806
    Danke
    746
    Erhielt 3,127 Danke für 2,231 Beiträge

    Default

    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
    Join Date
    06.10.2003
    Posts
    4,474
    Danke
    619
    Erhielt 772 Danke für 606 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Quote Originally Posted by Blackforest View Post
    // 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
    Der höchste Lohn für unsere Bemühungen ist nicht das, was wir dafür bekommen, sondern das, was wir dadurch werden.
    John Ruskin

Similar Threads

  1. Replies: 8
    Last Post: 10.09.2014, 16:56
  2. Step 7 Step 7 SCL Probleme mit Baustein
    By Licht9885 in forum Simatic
    Replies: 4
    Last Post: 07.07.2013, 11:14
  3. Replies: 5
    Last Post: 13.07.2011, 23:12
  4. Baustein mit SCL programmieren
    By mr_spooner in forum Simatic
    Replies: 10
    Last Post: 20.11.2008, 09:19
  5. Problem mit SCL-Baustein..Block_DB
    By slani_bw in forum Simatic
    Replies: 1
    Last Post: 18.05.2008, 00:09

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •