Beschaltung von IN-Parametern mit Datenbausteinvariablen

Elektro-Doc

Level-1
Beiträge
3
Reaktionspunkte
0
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?:confused:

Danke für eine Antwort
Stefan
 
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?:confused:

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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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?:confused:
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. ;)
 
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
 
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

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


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
 
Zurück
Oben