ADR von Pointerinhalt übergeben

SY50

Level-1
Beiträge
271
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich habe in einem FB als Input eine Struktur, welche unter anderem folgendes Element hat.

Eingangsstruktur.Parameter (wobei Parameter ein Pointer auf eine Struktur ist).
Diesem Element wurde schon die Adresse auf eine Globale Struktur übergeben.

nun wollte ich folgendes machen, um einem Unterprogramm, welches ein Zeiger auf einen DINT Wert erwartet, den Zeiger zuzuweisen.

Code:
Unterprogramm.Dintpointer := ADR(Parameter^.Dintwert);

Die Adresse wird richtig übergeben (sehe ich korrekt im Dintpointer), jedoch funktioniert es irgendwie nicht wirklich, da irgendwie Daten auf einem anderen Speicherbereich überschrieben werden. Und diverse Funktionen wie bspw. ein fliehende nicht mehr funktionieren.

ist die adressübergabe so überhaupt zulässig, oder schaut codesys da vielleicht irgendwie intern auf die Adrsse des Pointers "Parameter" (so kommt es mir nämlich vor, also würde die Adresse von Parameter + der Offset von Dintwert in der Struktur überschrieben).
Das passiert allerdings sogar, schon, wenn nur der angegeben Code ausgeführt wird, mehr nicht. Dabei wird dort ja nicht mal der Pointer beschrieben, sondern nur ausgelesen.

Benutze ich ein In_Out anstatt einen Pointer auf "Parameter" dann funktioniert es einwandfrei.

hat jemand eine Idee?
 
Poste mal den Code vom Unterprogramm. Dort musst du halt Dintpointer^ schreiben wenn du den Wert haben willst.

Wenn du Dintpointer := 2323; oder sowas machst "verbiegst" du den Pointer und es passiert irgendwas.
 
Leider reicht alles bereinigen nicht, sogar eher das Gegenteil. Wenn man alles bereinigen macht, dann tritt der Fehler beim einloggen und starten eher auf, als wenn man es wieder einkommentiert.
Das Programm habe ich jetzt wie gesagt auf IN_OUT abgeändert. Der Fehler wäre wahrscheinlich auch nicht nachvollziebar... denn er äußert sich so....
ich habe eine Steuerung, welche einen EtzherCAT Maste rhat. hierzu liegen von 3s Daten auf der Steuerung, welche beim Systemstart gelesen werden.
Des weiteren habe ich einen FB, welcher ein filehandling macht. Wenn ich diesen jetzt nach der Struktur mit dem Pointer deklariert habe, trat der Fehler auf, dass angeblich keine EtherCAT Lizenz verfügbar wäre.
Ich nehme an, dass irgendiw ein Problem mit dem Handle besteht, welcher dann nicht mehr die 3s Datei lesen kann.
 
Zurück
Oben