Pointer mit Variable als Offset

micha1983
2010-08-26
2010-08-27
  • micha1983 - 2010-08-26

    Hallo liebes Forum,

    ich würde gerne folgendes nutzen:

    PT: Pointer to Byte;
    offset: dint :=8;
    PT := ADR(%IB0) +offset;
    %QX0.0 := PT^.1;
    

    Leider funktioniert dies nicht.

    Erst wenn ich dauernd min. ein Bit aus dem anzusprechenden Wort beobachte indem ich einfach %QX4.0 einfüge wird der Inhalt des Pointer korrekt auf den Ausgang geschrieben. Vorher werden Änderungen nicht übernommen.

    PT: Pointer to Byte;
    offset: dint:=8;
    PT := ADR(%IB0) + 8;
    %QX0.0 := PT^.1;
    %IX4.0;
    

    Kann mir jemand erklären warum das so ist. Und wie ich es besser machen könnte?

    Vielen Dank schon mal.
    Ich komme aus der Siemens Welt da konnte man mit Pointer echt schönde Dinge machen. Allerdings bei Codesys scheitere ich im Moment noch.

    Das müsste doch normalerweise funktionieren. oder?

    Vielen Dank schon mal.
    Gruß Michael

     
  • Anonymous - 2010-08-27

    Originally created by: ebt'ler

    Das Problem ist mir auch schon über den Weg gelaufen:

    Erik Böhm hat geschrieben:
    Mahlzeit
    Schau mal in den Zielsystemeinstellungen -> Allgemein.
    Da gibts evtl. "Nicht verwendete I/Os aktualisieren".
    Wenn diese Option nicht aktiv ist (Default), dann werden eben nicht verwendete IO's auch nicht aktualisiert.
    Gruß
    Erik

    Hier der komplette Beitrag: l viewtopic.php?f=2&t=2418 l

     
  • Erik Böhm - 2010-08-27

    Hi
    Es ist einfach so, dass CoDeSys prüft ob eine Variable im Projekt irgendwo benutzt wird.
    Ist dies nicht der Fall, dann wird diese beim Monitoring nicht berücksichtigt.
    Nicht benutzte Variablen sind ja meistens auch weniger interessant...

    Das addieren eines Offsets auf einen Pointer funktioniert aber generell genauso wie du es gemacht hast.

    Gruß
    Erik

     
  • micha1983 - 2010-08-27

    Hallo,

    Danke für deine Hilfe.

    Habe es jetzt so gemacht, dass ich ein Array von 0-255 deklariert habe, was bei %IB0 startet.
    Damit funktioniert es.

    Gruß Michael

     

Log in to post a comment.