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

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

Thema: FB41: Variable an TI

  1. #1
    Registriert seit
    22.05.2012
    Beiträge
    8
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo!

    Ich habe folgendes Problem: Eine einfache Regelung mit einem PI-Regler soll mit einem FB41 realisiert werden. Von einem Simulationsprogramm (Promod-Pro) bekomme ich für die Verstärkung P und die Nachstellzeit I jeweils ein Eingangsbyte. Nun rangiere ich die Bytes in einen Datenbaustein und arbeite in meinem Programm nur noch mit den Datenbausteinen. Problem ist nun, dass der Regler nur als reiner P-Regler arbeitet und meinen I-Anteil nicht erkennt. Wenn ich im Programm direkt an den FB41 schreibe " Ti --> t#10s " dann funktioniert es.

    Ich habe die Umwandlung wie folgt gemacht:

    EB1 --> rangiert als WORD auf DB10.DBW2

    DB10.DBW2 über folgenden Code in ein DB10.DBD4 (TIME) normiert:

    //
    L DB10.DBW2
    ITD
    DTR
    T DB10.DBD4
    //

    Ich hoffe mir kann jemand helfen! Danke im Vorraus!
    Kai
    Zitieren Zitieren FB41: Variable an TI  

  2. #2
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.628
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard

    TIME ist nicht REAL.
    Gruß
    Michael

  3. #3
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.316
    Danke
    932
    Erhielt 3.331 Danke für 2.689 Beiträge

    Standard

    TIME ist ein vorzeichenloser 32-Bit-Wert (Anzahl ms). Also einfach nur:
    Code:
    L DB10.DBW2
    T DB10.DBD4
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

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

    Standard

    Was für eine Einheit hat die Nachstellzeit am Eingangsbyte?
    Das müsste man noch berücksichtigen, weil sich der TI ms erwartet.
    Also wenn das EB in Sekunden daherkommt, vorher mit 1000 multiplizieren.

  5. #5
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.639
    Danke
    377
    Erhielt 803 Danke für 644 Beiträge

    Standard

    Wie ist den Wert in DB10.DBW2 formattiert ?
    Ist es vielleicht Sekunden ?
    Wenn Ja, dann muss ein bisschen konvertierung zu, weil TIME zählt in Milli-Sekunden.

    Code:
    L      DB10.DBW2
    ITD
    L      L#1000
    *D                    // Von Sekunden nach Milli-Sekunden.
    T      DB10.DBD4
    Jesper M. Pedersen

  6. #6
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.639
    Danke
    377
    Erhielt 803 Danke für 644 Beiträge

    Standard

    Von einem Simulationsprogramm (Promod-Pro) bekomme ich für die Verstärkung P und die Nachstellzeit I jeweils ein Eingangsbyte
    Das ist doch etwas eigenartig. Was liegt hinter dies ?
    Jesper M. Pedersen

  7. #7
    kai9r ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.05.2012
    Beiträge
    8
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke für die bisherigen Antworten!

    Also ich kann die Anteile P und I verstellen von 0,1 bis 25,5 im Promod-Pro. 0,1 entspricht dann einer 1 im EB1. 25,5 würde einer 255 im EB1 entsprechen.

    Wenn ich nun das EB in einen Datenbaustein rangieren möchte, deklariere ich diesen dann als BYTE oder als WORD? Also DB10.DBB2 oder DBW2?

  8. #8
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.628
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard

    Nimm ruhig DBW2, mit WORD zu hantieren ist meiner Meinung nach sauberer, als mit BYTE, ganz sauber wird's, wenn Du den Wert als INT deklarierst.
    Gruß
    Michael

  9. #9
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.639
    Danke
    377
    Erhielt 803 Danke für 644 Beiträge

    Standard

    Wie du es erklärt handelt es um ein Wert als Zehntel-Sekunden.
    Um es ins Milli-Sekunden zu konvertieren:

    Code:
    L       EB1
    ITD     // Ist vielleicht redundant, aber ich finde es schöner wenn man sofort ins Ziel-Format umwandle
    L       L#100
    *D      // Von 1/10-Sekunden nach Milli-Sekunden.
    T       DB10.DBD4
    Du brauchst nicht EB1 symbolisch zu deklarieren.
    Wenn du willst, dann einfach als BYTE.
    Wenn du den Konvertierung in AWL programmierst gibt es kein Typechecking, ist also nicht wichtig mit ein symbolische Deklaration.
    Und du brauchst auch kein Zwischenspeicher (DB10.DBW2). Siehe Codesnipsel.
    Jesper M. Pedersen

  10. #10
    kai9r ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.05.2012
    Beiträge
    8
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Es funktioniert, vielen Dank!

    Folgendes habe ich nun gemacht:

    EB1 rangiert in DB10.DBW2 ( im DB als INT deklariert )

    DB10.DBW2 über einen FC in DB10.DBD4 normiert mit folgendem Code:

    //
    L DB10.DBW2
    ITD
    L 100
    *D
    T DB10.DBD4
    //

    Der Fehler lag wohl doch daran, dass ich nur Milli Sekunden bekommen habe.

Ähnliche Themen

  1. FB41 parametrieren
    Von Chris48 im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 14.10.2012, 20:00
  2. Fb41
    Von aplincd im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 13.05.2012, 23:07
  3. S7 Variable in Java Variable umwandeln
    Von maxi81 im Forum HMI
    Antworten: 0
    Letzter Beitrag: 26.11.2010, 17:55
  4. Abluftregelung FB41
    Von scrolllkock im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 29.01.2007, 18:34
  5. Hilfe zu FB41
    Von jesch im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 27.04.2005, 18:06

Lesezeichen

Berechtigungen

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