Keresés

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

  • Szirty

    őstag

    válasz KB.Pifu #4157 üzenetére

    Üdv!

    "a kérdésem az lenne, hogyha a bytot-t integer típusú lokális változóba "mozgatjuk" akkor az integer nulladik sorszámú byte-ja mindig 0-val lesz feltöltve?"

    Így van! Mivel a word nagyobb helyiértékű byte-ja van elöl (az alacsonyabb címen).

    A "STEP 7 - Ladder Logic for S7-300 and S7-400"-ban említik is ezt:

    Vagyis:
    Amikor értéket mozgatunk eltérő hosszúságú adattípusok között, akkor a mgasabb helyiérték csonkul ha szükséges, vagy nullákkal lesz feltöltve.

    A táblázat pedig bemutatja mindkét esetet egy-egy példával. vagyis hogy mi történik ha hosszabbat mozgatunk rövidebbe és fordítva.
    Ha megnézed, a LAD vagy FBD MOVE utasítás STL-ben egy LOAD és aegy TRANSFER utasításra fordul le. A LOAD pedig így működik:
    "Description
    L <address> loads the addressed byte, word, or double word into ACCU 1 after the
    old contents of ACCU 1 have been saved into ACCU 2, and ACCU 1 is reset to "0"."

    Vagyis:
    Betölti a címzett byte, word, vagy double word adatot az ACCU1 regiszterbe miután az ACCU1 korábbi tartalmát ACCU2-be másolta és az ACCU1-et törölte (nullát rakott bele).
    Tehát a load előszőr átpakolja ACCU1-et ACCU2-be, majd ACCU1-be nullát rak és azután beleteszi a címzett adatot. Mindkét ACCU 32 bites, így ha 32 bitnél rövidebb adattípust töltünk be (byte, word, int) akkor az ACCU nem érintett magasabb bitjei nullák lesznek.

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