Step 7 Verschaltung eines Eingangs prüfen

Snape

Level-1
Beiträge
117
Reaktionspunkte
13
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
ich habe einen SCL-Baustein mit einem IN_OUT-Parameter vom Datentyp INT.
Nun will ich im Baustein prüfen, ob der Parameter beim Aufruf verschaltet wurde oder nicht. Wie kann ich das machen?

Snape
 
Wenn dein Baustein ein FC ist dann läßt der Editor das gar nicht anders zu.
Ist dein Baustein ein FB dann ginge es nur, wenn dein IN bzw. IN_OUT vom Typ Pointer ist.

Gruß
Larry

Nachsatz:
Im Falle des Pointers mußt du dir dann den Zugriff im Baustein auf die eigentliche Variable allerdings erst erstellen.

Was ist der Hintergrund des Ganzen ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Geht nicht.
Was willst Du damit erreichen? Du siehst im FB auch nicht, ob irgendwo im Programm lesend oder schreibend auf den IN_OUT der Instanz zugegriffen wird.

Harald
 
Der Parameter soll auf jeden Fall ein INT sein, kein Pointer oder Any oder so.
Der Sinn ist, dass ich einen Baustein schreibe, bei dem der Anwender diesen Parameter auf jeden Fall verschalten muss. Im anderen Fall soll eine Fehlermeldung ausgegeben werden. Der Baustein soll an mehrere Kunden rausgehen und ich will sicherstellen, dass sie ihn verschalten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Naja ... du hast ja nun gelesen, dass das so nicht geht, wie du es haben willst.
Du müßtest nun also über Alternativen nachdenken.
In welchem Werte-Bereich bewegt sich denn dein INT ? Du hättest ja ggf. noch die Möglichkeit, den Wert zu checken und bei nicht sinnvoll einen Fehler auszugeben ...
 
Du könntest evtl. im FB am Ende einen unsinnigen Wert auf den Formalparameter (also in den Instanz-DB) schreiben. Wenn der Parameter nicht beschalten ist wird dieser Wert im nächsten Zylus noch drinstehen und du kannst reagieren. Wird der Parameter beschrieben ist dein Wert weg....
 
Danke für Eure Antworten. Ich lese daraus, dass es nicht geht.
Der Parameter kann "beliebige" Werte annehmen, daher kann ich nicht auf einen unsinnigen Wert oder auf <> 0 prüfen. Die Kunden müssen eben doch die Hilfe dazu lesen. ;-)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn dein Baustein ein FC ist dann läßt der Editor das gar nicht anders zu.
Ist dein Baustein ein FB dann ginge es nur, wenn dein IN bzw. IN_OUT vom Typ Pointer ist.

Gruß
Larry

Nachsatz:
Im Falle des Pointers mußt du dir dann den Zugriff im Baustein auf die eigentliche Variable allerdings erst erstellen.

Was ist der Hintergrund des Ganzen ?
Hallo,
ich greife das alte Thema nochmal auf, da ich genau das will: Feststellen, ob am FB ein IN-Parameter vom Typ ANY verschaltet ist. Aus der Antwort interpretiere ich, dass das möglich sein sollte. Allerdings kapiere ich nicht, wie.
Danke!
Alfred
 
Du könntest ja je nach Vorgabe prüfen ob an deinem Eingang ein gültiger Wert anliegt (also wenn du zB 123 übergeben willst, muss der Wert zB zuerst mit 10.000 multipliziert werden. (also vor dem auflegen) jetzt prüfst du ob der Wert >10.000 und Kleiner zB 100.000 ist.)

Ob das bei dir natürlich Sinn macht?

Alternative wäre noch im 1. Zyklus eine Variable setzen (zB auf 123) und dann prüfen ob am Eingang was anderes Liegt. Musst halt sicherstellen dass im Anlauf auch der Blödsinn da reingeschrieben wird (Das könntest du ja im FB mit einer 2. Variable machen die auf einen bestimmten Wert gesetzt werden muss, . . . .
 
Man kann aber auch den Typ einer Variant-Variablen abfragen.

Such mal in der Hilfe nach : TypeOf: Datentyp einer VARIANT-Variable abfragen...

EDIT: Mist ist ja gar kein TIA...
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,
und danke euch für die Antworten.
Ich denke, ich hab mittlerweile eine elegante Lösung gefunden (auch basiert auf dem letzten Hinweis). Muss noch ausgiebig testen, obs auch zuverlässig ist:
Es sieht so aus, dass bei nicht verschaltetem Pointer sowohl DataType als auch DB-Nummer immer auf 0 stehen. Damit reicht also eine Abfrage auf einen oder beide dieser Elemente des Any-Pointers.
Grüsse
Alfred
 
Zurück
Oben