Hirdetés

2024. április 28., vasárnap

Gyorskeresés

Útvonal

Fórumok  »  Egyéb hardverek  »  PLC programozás

Hozzászólások

(#250) Szirty válasza horvathcsaba (#249) üzenetére


Szirty
őstag

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 :)

Útvonal

Fórumok  »  Egyéb hardverek  »  PLC programozás
Copyright © 2000-2024 PROHARDVER Informatikai Kft.