Hirdetés

2024. május 23., csütörtök

Gyorskeresés

Útvonal

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

Hozzászólások

(#773) Szirty válasza kis.balage (#772) üzenetére


Szirty
őstag

Helló kis.balage!

"PLC ciklusonként kellene 120 doubleword-öt 1 doubleword-el arréb mozgatnom (FIFO). Tudtok erre valami elegáns megoldást vagy marad a 120-szor LOAD-TRANSFER?"

Az is egy megoldás, de munkaigényes beírni :)

Két másik módszer:
1. cikust kell szervezni, ami szépen elketyeg 120-ig. A dolog hátránya, hogy ismerni kell az STL programozást és tisztában kell lenni az indirekt címzésekkel.
Egy ehhez hasonló megoldás van ebben az írásban is.

2. 119 duplaszót átmásolsz egy blockmove utasítással egy 119 dw elemű pufferbe, majd egy duplaszóval arrébbra visszamásolod. Előnye, hogy ehhez nem kell STL, hátránya, hogy kell egy 476byte-os puffer (már ha ez hátrány a konkrét esetben).

Valami ilyesmi:

Persze nem írtad, hogy merről merre akarod "léptetni" a tárolót, a fenti példa az egész puffert egyel magasabb címre másolja (1 dworddel, azaz 4 byte-tal).
A példában a léptetendő adatterület a DB1.DBD0-nál kezdődik. Nem próbáltam ki, hogy nem vétettem-e hibát benne, a példával az elvet próbáltam szemléltetni...

Ja igen: A pufferrel való vacakolás azért kell, mert amennyire emlékszem, a BLKMOV (SFC20) nem engedi meg hogy a másolt cél és forrás terület átfedésben legyen egymással. Persze biztos megírta már valaki azt a blkmove-t amelyiknél ez nem gond, de kapásból nem tudok olyat most.

[ Szerkesztve ]

Útvonal

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