Hirdeté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

Hirdetés