Keresés

Új hozzászólás Aktív témák

  • Szirty

    őstag

    válasz horvathcsaba #249 üzenetére

    Helló Csaba!

    Én ezt szeretném csinálni:
    T DB1.DBD [MD30]
    De nem engedi, mondván "Fully qualified access is not permitted with DI or indirect addresses."
    Ezt viszont engedi:
    T DBD [MD30]
    Csak innen honnan tudom, illetve hogy tudom meghatározni melyik DB.

    Így csináld:
    OPN DB1
    T DBD [MD30]

    Az OPN DB1 "megnyitja" a DB-t. Innentől kezdve a DB számára már nem kell hivatkoznod.
    De két dologra nagyon kell figyelni:
    A DB-t az ún DB regiszterrel címzi. Az OP gyakorlatilag a DB regiszterbe teszi bele a megnyitott DB számát.
    Fully qualifyed access esetén, amikor kiírod a teljes címet, a DB regisztert akkor is használja. Ha tehát ezt csinálod hogy:

    OPN DB1
    L DBW4
    ...
    L DB6.DBW2
    ...
    L DBW8

    Akkor az első load a DB1-ből, a második természetesen a DB6-ból, de a harmadik nem a DB1-ből, ahnem a DB6-ból fog betölteni egy értéket (ha sikerül neki).

    A másik amire vigyázni kell az az indirekt címzésmód:
    T DBD [MD30]
    Itt MD30 címzi ugye a DB-t, de nagyon fontos, hogy az MD30-ban egy pointer (P#x.y) van, és nem egy sima index!!!
    A helpben érdemes utánanézni a "Using the Parameter Type POINTER" című résznél.
    A pointer alsó 3 bitje pedig bit cím. Hoyg úgy működjön ahogy szeretnéd, így csináld:

    OPN DB1
    L idebetöltöd az indexet
    SLD 3
    T MD30
    T DBD [MD30]

    Írtam erről az oldalamon, ha gondolod nézd meg:
    [link]
    Jóval kezded te is, pont az indirekt címzéssel :)

  • Szirty

    őstag

    válasz horvathcsaba #249 üzenetére

    Helló Csaba!

    Jah eegen. Azt elfelejtettem írni, hogy az indirekt címzéssel vigyázni kell. Nagyon könnyen elcímzi magát a program és akkor jön az Area length error, aminek a következménye egy szép kövér CPU stop.
    Nagyon körültekintően kell csinálni nagyon alaposan tesztelni és telerakni védelemmel ami megakadályozza az elcímzést. Csúnya dolgokat tud csinálni.

    Én pont most szívtam egy gyári blokkal (Read Danfoss VLT parameter) amiben volt egy ilyen szép kis meglepetés.

Új hozzászólás Aktív témák