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

Ergebnis 1 bis 6 von 6

Thema: Beschaltung von IN-Parametern mit Datenbausteinvariablen

  1. #1
    Registriert seit
    18.05.2011
    Ort
    Berlin
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Guten Abend,

    habe mich hier gerade registrieren lassen, weil ich trotz jahrelanger Erfahrung mit S7 auf ein Problem gestossen bin, für dass ich keine Erklärung habe.

    Bei einer parametriebaren Funktion für eine Sollwert-Rampe sind In-Parameter mit Datenbausteinvariablen beschaltet.
    Der aktuelle Sollwert wird über einen InOut-Parameter eingelesen, als neuer Sollwert mit dem alten Sollwert verglichen; dieser wird über eine zeitlich gesteuerte Addition bzw. Subtraktion angepasst und an den aktuellen Sollwert zurückgegeben.

    Beschaltung ungefähr so:

    Call FC28
    IN0= T45
    IN1= DB56.dbx60.0 (Regler aktiv)
    IN2= DBD102 (Neuer Sollwert)
    IN3= DBD106 (Alter Sollwert)
    INOUT4= MD216 (Aktueller Sollwert)
    INOUT5= M120.2 (Timerstatus)

    Frage: Obwohl als IN-Parameter angelegt, ändern sich die Aktualwerte für alten und neuen Sollwert im DB und bei Beschaltung von IN2 und IN3 in Komplettaddressierung (also DB56.DBD102) funktioniert es nicht???

    Gibt es innerhalb des Makros "CALL" spezielle Speicherzugriffe, die in diesem besonderen Fall die Beschaltung in Komplettadressierung boykottieren?

    Danke für eine Antwort
    Stefan
    Zitieren Zitieren Beschaltung von IN-Parametern mit Datenbausteinvariablen  

  2. #2
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Zitat Zitat von Elektro-Doc Beitrag anzeigen
    Guten Abend,

    habe mich hier gerade registrieren lassen, weil ich trotz jahrelanger Erfahrung mit S7 auf ein Problem gestossen bin, für dass ich keine Erklärung habe.

    Bei einer parametriebaren Funktion für eine Sollwert-Rampe sind In-Parameter mit Datenbausteinvariablen beschaltet.
    Der aktuelle Sollwert wird über einen InOut-Parameter eingelesen, als neuer Sollwert mit dem alten Sollwert verglichen; dieser wird über eine zeitlich gesteuerte Addition bzw. Subtraktion angepasst und an den aktuellen Sollwert zurückgegeben.

    Beschaltung ungefähr so:

    Call FC28
    IN0= T45
    IN1= DB56.dbx60.0 (Regler aktiv)
    IN2= DBD102 (Neuer Sollwert)
    IN3= DBD106 (Alter Sollwert)
    INOUT4= MD216 (Aktueller Sollwert)
    INOUT5= M120.2 (Timerstatus)

    Frage: Obwohl als IN-Parameter angelegt, ändern sich die Aktualwerte für alten und neuen Sollwert im DB und bei Beschaltung von IN2 und IN3 in Komplettaddressierung (also DB56.DBD102) funktioniert es nicht???

    Gibt es innerhalb des Makros "CALL" spezielle Speicherzugriffe, die in diesem besonderen Fall die Beschaltung in Komplettadressierung boykottieren?

    Danke für eine Antwort
    Stefan
    Dann musst du suchen wo der Sollwert im DB 56.dbd102 beschrieben wird.
    Komplettadressierung?
    Das sind vollqualifizierende Zugriffe. Aber das ist diesen Fall unerheblich, da der DB 56 bei IN 1 aufgeschlagen wird



    bike

  3. #3
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard

    Zitat Zitat von Elektro-Doc Beitrag anzeigen
    Frage: Obwohl als IN-Parameter angelegt, ändern sich die Aktualwerte für alten und neuen Sollwert im DB und bei Beschaltung von IN2 und IN3 in Komplettaddressierung (also DB56.DBD102) funktioniert es nicht???

    Gibt es innerhalb des Makros "CALL" spezielle Speicherzugriffe, die in diesem besonderen Fall die Beschaltung in Komplettadressierung boykottieren?
    Hallo Stefan,
    willkommen im Forum.

    Ich behaupte jetzt einfach mal dass der Parameter IN2 und IN3 einen anderen Typ verlangt als in dem DB56 für DD102 und DD106 deklariert wurde.
    Und durch die Schreibweise "nur" DBD 102 wird der Typ ignoriert.
    Ist jetzt aber jeher eine Vermutung als eine Behauptung.
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  4. #4
    Registriert seit
    18.05.2011
    Ort
    Berlin
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Paule Beitrag anzeigen
    Hallo Stefan,
    willkommen im Forum.

    Ich behaupte jetzt einfach mal dass der Parameter IN2 und IN3 einen anderen Typ verlangt als in dem DB56 für DD102 und DD106 deklariert wurde.
    Und durch die Schreibweise "nur" DBD 102 wird der Typ ignoriert.
    Ist jetzt aber jeher eine Vermutung als eine Behauptung.

    An Paule: das ist natürlich ein ganz heißer Tip! Aber würde die Beschaltung mit anderen Datentypen überhaupt erlaubt werden von Step7?

    An bike: die Variablen werden weder von Panels noch sonstwo im Programm benutzt! Frage ist, warum der "vollqualifizierende Zugriff" nicht funktioniert und wieso die Werte in den DB eingelesen werden, obwohl als IN-Parameter beschaltet?

    Stefan

  5. #5
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Also um das beurteilen zu können solltest du den Baustein zumindest die Nahtstelle einmal anschauen.
    Was wird von dem FB als IN erwartet?


    bike

  6. #6
    Registriert seit
    18.05.2011
    Ort
    Berlin
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Cool


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    nach Rücksprache mit Siemens und Betrachtung eines extrahierten Bausteinaufrufs weiß ich jetzt mehr.

    1. Es ist mindestens seit Step7 5.0 möglich, auf IN-Parameter auch schreibend zuzugreifen. Warum das erlaubt wurde, war leider nicht heraus zu bekommen.

    2. Bei der Teiladdressierung wird mit Bereichszeigern gearbeitet, so dass direkt auf den Speicherbereich zugegriffen wird.
    Bei der Komplettaddressierung werden die Werte in den Lokaldatenbereich eingelesen, dort auch entsprechend bearbeitet, nur leider nicht wieder zurückgegeben.

    Grundsätzlich ist das natürlich eine sehr unsaubere Programmierung mit dem schreibenden Zugriff auf INs; einfach InOut nehmen und alles ist schön!

    Schöne Grüße
    Stefan
    Für eine beherrschbare Technik

Ähnliche Themen

  1. Konfiguration von Parametern...
    Von Tommi im Forum Stammtisch
    Antworten: 3
    Letzter Beitrag: 12.12.2010, 12:22
  2. Online Änderung von Parametern im CFC
    Von Benjamin im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 27.07.2010, 11:20
  3. Beschaltung SM 334
    Von patrickd im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 07.10.2009, 11:35
  4. Beschaltung CPU
    Von BastiMG im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 01.06.2007, 13:44
  5. Übergabe von Parametern
    Von Thomas86 im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 17.04.2007, 08:57

Stichworte

Lesezeichen

Berechtigungen

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