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

  • Szirty

    őstag

    válasz horvathcsaba #240 üzenetére

    Hali Csaba!

    És napi időpontokat szeretnék összehasonlítani. Pl. elmúlt-e már 7 óra. És ezt csak hihetetlen mennyiségű rendszerfunkcióval sikerült elérnem.
    Van ennek vmi egyszerű módja?

    Van. 1 rendszerhívás. Persze akkor neked is csinálni kell valamit :)
    Én úgy szoktam, hogy az SFC1-el másodpercenként egyszer kiolvasom a rendszer órát:

    A fenti példában az idő a Date_And_Time típusú #CPUIDO lokális változóban landol, ahonnan már úgy olvasod és használod fel, ahogy akarod.
    A DATE_AND_TIME típus így néz ki:

    Mivel tudod melyik byte-on van az óra, a perc, stb, összehasonlítod közönséges komparátor utasítással. De ne feledd, a DATE_AND_TIME típus PCD adatokat tartalmaz!

    Lehet ennél is egyszerűbben, méghozzá a Time-of-day interrupt. Ez arról szól, hogy egy általad meghatározott időpontban a CPU önállóan meghív egy OB-t. Az a funkció CPU függő, a CPU hw konfigjában találod.
    Ezzel arra kell vigyázni, hogy ha a CPU órát átállítod (pl. daylight saving) úgy, hogy az állítás időben előre történik és a time of day interruptnak megadott időt pont átugorja, akkor egy exception keletkezik, amit külön kezelned kell a time error OB-ban!

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