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

Ergebnis 1 bis 9 von 9

Thema: Datenbaustein indirekt adressieren

  1. #1
    Registriert seit
    07.12.2011
    Beiträge
    10
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo!

    Voraussetzungen: Step7-Basic, CPU1214C
    Ich möchte in einer Funktion einen PID-Compact Regler verwenden. Der PID-Compact Regler benötigt einen Datenbaustein, welchen in gerne indirekt als IN/OUT der Funktion übergeben würde. Ist das möglich, wenn ja wie? Welcher Datentyp muss angegeben werden?

    Danke im Voraus!

    mfG Franky
    Zitieren Zitieren Datenbaustein indirekt adressieren  

  2. #2
    Registriert seit
    15.03.2012
    Ort
    Hessen
    Beiträge
    35
    Danke
    4
    Erhielt 4 Danke für 3 Beiträge

    Standard

    Hi!

    Wenn ich dich richtig verstanden habe, sollte folgende Quelle dein Problem lösen (BEISPIEL!)

    FUNCTION FC 666 : VOID
    TITLE =Beispiel
    VERSION : 0.1


    VAR_INPUT
    DeBe : INT ;
    END_VAR
    VAR_TEMP
    DBNr : INT ;
    END_VAR
    BEGIN
    NETWORK
    TITLE =Datenbaustein indirekt aufschlagen

    L #DeBe; //Nr. des DBs
    T #DBNr;
    AUF DB [#DBNr];
    END_FUNCTION

  3. #3
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    na, bin jetzt nicht der 1200-Profi, vielleicht läuft´s da ja anders.

    Im "normalen" () STEP 7 müsste die Temp_Var "DBNr" als WORD angelegt sein, sonst ist das Umkopieren wertlos.
    kind regards
    SoftMachine

  4. #4
    Registriert seit
    15.03.2012
    Ort
    Hessen
    Beiträge
    35
    Danke
    4
    Erhielt 4 Danke für 3 Beiträge

    Standard

    Nee, das funktioniert schon mit INT...

    ABER: Ich hab überlesen, das es um die 1200er geht. Sorry, vielleicht läufts da anders. Hab keinen Plan von der Kleinen...

  5. #5
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    Zitat Zitat von Timmy80 Beitrag anzeigen
    Nee, das funktioniert schon mit INT...
    Sicher? Du musst mir mindestens ein SP im Vorraus sein

    Beim "normalen STEP 7" !
    Geändert von SoftMachine (22.03.2012 um 22:02 Uhr) Grund: wegen evtl. Unklarheit
    kind regards
    SoftMachine
    Zitieren Zitieren gemeint ist STEP 7  

  6. #6
    Registriert seit
    15.03.2012
    Ort
    Hessen
    Beiträge
    35
    Danke
    4
    Erhielt 4 Danke für 3 Beiträge

    Cool

    Indirekte Adressierung mittels 16 oder 32bit Zeiger.

    INT=16bit somit alles gut

    PS: Ich hab der Einfachkeit / Faulheit halber das Beispiel aus nem Pro2 Muster kopiert

  7. #7
    franky22 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.12.2011
    Beiträge
    10
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo!

    Das oben angeführte Beispiel ist in SCL, oder?
    Meine CPU mit Firmware 2.0.2 kann leider kein SCL noch, wie könnte ich das in FUP lösen?

    Mir geht es rein darum eine Funktion mit einem PI-Regler zu programmieren, welche Ich mehrmals verwenden bzw. aufrufen kann und dazu müsste ich eben dem Reglerbaustein den Datenbaustein als Eingang der Funktion übergeben, denn Ich will die Funktion nicht 10 mal in meinem Projekt stehen haben.

    mfG

  8. #8
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.713
    Danke
    443
    Erhielt 914 Danke für 739 Beiträge

    Standard

    Zitat Zitat von franky22 Beitrag anzeigen
    ...
    Das oben angeführte Beispiel ist in SCL, oder?
    Nö, ist AWL (als Quelle, aber außer dem Semikolon am Ende wie original)!


    Name des FC sowie Deklaration der Ein-, Ausgänge und Temp-Variablen:
    Zitat Zitat von Timmy80 Beitrag anzeigen
    Code:
    FUNCTION FC 666 : VOID
    TITLE =Beispiel
    VERSION : 0.1
    
     VAR_INPUT
    DeBe : INT ; 
    END_VAR
    VAR_TEMP
    DBNr : INT ; 
    END_VAR
    BEGIN
    ...
    In FUP ein MOVE unter Verschieben:
    Zitat Zitat von Timmy80 Beitrag anzeigen
    Code:
    ...
    L #DeBe; //Nr. des DBs 
    T #DBNr;
    ...
    und ein OPN unter DB-Aufruf:
    Zitat Zitat von Timmy80 Beitrag anzeigen
    Code:
    ...
    AUF DB [#DBNr]; 
    ...
    Ob es bei Deiner Software in genau diesen Ordnern ist, weiß ich jetzt nicht mit Sicherheit. Wenn nicht heißen Sie aber bestimmt ähnlich.

  9. #9
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.713
    Danke
    443
    Erhielt 914 Danke für 739 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hab' mir die Sache mal unter TIA Basic V10.5 angesehen.

    So wie von Timmy80 vorgeschlagen (vom "großen" Step7), scheint's unter Basic nicht zu gehen.
    Zum Einen ist AWL ja gar nicht verfügbar und zum Anderen konnte ich keine Variable (weder in der FC-Schnittstelle noch die PLC-Variablen) auf Block_DB einstellen. Die Fehlermeldung beim Eingeben einer Variablen als DB-Namen konnte mir zwar sagen, daß ein solcher Typ erwartet wird, aber die Hilfe kennt diesen Begriff nicht, so daß ich davon ausgehe, daß dies nicht vorgesehen ist.
    Auch einen Befehl zum Öffnen eines DB konnte ich nicht finden.

    Vielleicht hilft Dir ja diese Variante mit dem Vergleicher?
    Zwar mußt Du dann den PID-Regler mehrfach kopieren, aber es dürfte dann immer nur der gewünschte abgearbeitet werden.
    (Nicht so schön, aber Beschwerden ans Big S.)

    In KOP:


    In FUP:


    PS: Als Programmbaustein ist der PID nur einmal aufgeführt, nur als Technologieobjekt erscheint er mehrfach. Wie sich daß auf die S7-1214C auswirkt, kann ich aber auch nicht sagen. Hab' jetzt nur mal kurz ins Programm geschaut.

Ähnliche Themen

  1. Pointer indirekt zu adressieren
    Von Erich04 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 26.05.2011, 07:54
  2. SFC 20 indirekt adressieren
    Von drmicha im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 19.10.2009, 09:24
  3. PEWs indirekt adressieren
    Von MatMer im Forum Simatic
    Antworten: 23
    Letzter Beitrag: 09.08.2004, 20:01
  4. DB-Pointer indirekt Adressieren
    Von Anonymous im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 19.03.2004, 16:59
  5. ANY-Pointer indirekt adressieren
    Von Anonymous im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 14.02.2004, 15:41

Lesezeichen

Berechtigungen

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