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

  • Szirty

    őstag

    válasz n0rbert0 #3387 üzenetére

    Helló n0rbert0!

    Jó irányba indultál ez a módszer megfelelő lesz.
    De van néhány megjegyzésem:

    A 3-as rung-ban a BIN(023) W6 W6 szerepel ha jól látom. Ez így a W6 BCD tartalmát (ide másoltad a timer pillanatnyi értékét (Present Value) ami BCD, ez ok. De a BIN a W6-ba teszi vissza a konverzió bináris eredményét. Még ez sem lenne baj, de BIN előtt always on flag van, tehát ezt az utasítást a PLC minden ciklusban végrehajtja, miközben az 1-es rung-ban lévő MOVE csak egy felfutó élre. Ezért ha már egyszer átkonvertálta a BCD számot binárisra, akkor, a következő ciklusban újra át akarja konvertálni de akkor ott már bináris szám van.
    Sajnos néhány bináris szám értelmezhető BCD számnak is, más bináris szám pedig nem.
    Ezért én a BIN-t a MOV alá tenném, hogy mindig egyszerre és egymás után hajtsa végre őket.

    De egyszerűsíthető is a dolog, mert nincsen szükség a MOV-ra mivel a BIN az eredményt máshol is tárolhatja nem csak ott ahonnan a forrást veszi, így a BIN egyben MOV is :)

    A timert én elengedném a max értékig #9999
    Ha nem akarsz BCD-BIN konverziókat, akkor használhatsz bináris timert is (TIMHX).
    Vagy 1ms felbontású bináris timert (TIMHHX)

    Bár a mérés pontossága nem lesz 1ms, mert a CPU ciklus edejével szórni fog.

    "A reciprok műveletet hogy lehet legegyszerűbben megoldani?"

    Elosztod 1-el az értéket :)
    Persze érdemes lebegőbontos számmal csinálni,

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