Vai al contenuto

Conversione di programmi da LogicLab in CODESYS

Home Forum Obsoleti SlimLine (CODESYS) Conversione di programmi da LogicLab in CODESYS

Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Autore
    Post
  • #35875
    Andrea
    Partecipante

    Buongiorno, sto cercando di riportare quanto illustrato in questo topic su SlimLine CODESYS, mi riferisco in particolare a l’ultimo esempio postato da Bertaser in cui si illustra l’utlizzo delle strutture (Link a stampa del programma). Ho replicato tutto con le dovute modifiche, ma mi sono bloccato nel replicare la funzione STTimeSwitch in particolar modo nel trovare una fuzione che esegue la conversione a UDINT con la TO_UDINT utilizzata in LogicLab.

    Potete per favore darmi una dritta per trovare la giusta direzione.

    #39177
    Sergio Bertana
    Amministratore del forum

    Lo statement TO_UDINT di LogicLab esegue un cast sul dato, in pratica indica al compilatore di assumere quel dato come se fosse un UDINT (unsigned a 32 bits), esiste tutta una serie di operatori di cast dei dati per i diversi tipi di dati previsti.

    Mentre in LogicLab non occorre definire il tipo dati di partenza per eseguire il cast, CODESYSY ha previsto la definizione anche del tipo dati originale, quindi nel tuo caso trattandosi di un dato USINT dovrai utilizzare lo statement USINT_TO_UDINT. Ecco la funzione STTimeSwitch come si presenta in CODESYS.

    IF NOT(Enable) THEN STTimeSwitch:=FALSE; RETURN; END_IF;
    DSecs:=DateTime MOD 86400; (* Day seconds*)
    STTimeSwitch:=(DSecs >= ((USINT_TO_UDINT(HOn)*3600)+(USINT_TO_UDINT(MOn)*60)+SOn)) AND (DSecs < ((USINT_TO_UDINT(HOff)*3600)+(USINT_TO_UDINT(MOff)*60)+SOff));

    Allego per il download il file export della funzione CODESYS.

Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Devi essere connesso per rispondere a questo topic.