Hirdetés

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

  • Hali DP_Joci!

    "Lehet-e siemens (s7-300-400 ) plc-nél a DB sorszámát változóval, vagy indirekten, vagy akárhogy megadni? "

    Lehet.
    Így hirtelen két megoldás jut eszembe.
    Az egyik akkor használható ha a DB elérése egy blokkon belül türténik és a DB számát kivülről, paraméterként adod át.
    Ezt teszi lehetővé a BLOCK_DB paraméter típus. A szóbanforgó FC/FB interface részében input változóként megadsz egy BLOCK_DB típusó változót.
    Pl.:

    OPN után a DB-t a T DBWxxx L DBWxxx utasításokkal eléred.

    A másik módszer nyakatekertebb. Össze kell állítani egy ANY pointert úgy, hogy a nekünk megfelelő számú DB-re mutasson (ez akár integer is lehet). Utána egy pointeres címzéssel elérhető a kívánt DB.
    Azért ezzel nem árt vigyázni. Ha rossz DB-re vagy anak nem létező címére hivatkozol, akkor jön a "STOP caused by programming error" :)

    Szia,
    Az első módszert az szoktam használni. Azzal ebben az esetben az a baj, hogy bemenő változó csak konkrét DB lehet.
    CALL FC2
    DB_in:=DB2

    A DB[változó] megadást nem fogadja el.

    Olyat kerestem első körben, hogy DB[var].DBw0 vagy valami hasonló, de ez nem igazán megy ebben a formában.

    Ilyeneket elfogad, hogy:
    OPN DB[MW0]
    vagy
    OPN DB[#DB_temp]
    ahol a
    L #DB_IN ez egy bejövő word változó, ezt nem lehet közvetlen használni
    T #DB_temp ez egy TEMP word változó

    Ez nekem megfelel.

    Az ANY pointeres dolog az érdekes lehet.
    Van esetleg egy példád erre, megpróbáltam kreálni egy ilyen pointert, de nem igazán tudok DB-re hivatkozni vele. :W

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