SysGetPhrDI, get peripheral digital input

  1. Home
  2. Knowledge Base
  3. Manualistica
  4. Programmazione IEC 61131-3
  5. Gestione periferiche
  6. SysGetPhrDI, get peripheral digital input

Il blocco funzione esegue l'acquisizione degli ingressi digitali dai moduli periferici. Viene ritornato lo stato degli ingressi digitali dal modulo indicato in Address in base al comando di Mode definito.

Nota: Per acquisire gli ingressi digitali presenti sul modulo CPU occorre definire Address:=255 e Mode:=DI_MODE#DI_8_LL.

Function block
CODESYS: eCDSS8CoreMng
LogicLab: eLLabS8CoreMng, eLLabXUnified12Lib

Address (USINT) Occorre specificare l'indirizzo di modulo da cui eseguire l'acquisizione degli ingressi digitali (Range da 0 a 15). Il valore 0 indica il primo modulo di estensione, 1 il secondo e così di seguito. L'indirizzo 255 indica il modulo CPU.

Mode (DI_MODE) Occorre specificare il modo di acquisizione (Definizione).

Done (BOOL) Dato acquisito, viene attivato se acquisizione terminata.

Fault (BOOL) Errore di acquisizione, viene attivato in caso di errore nella sequenza di acquisizione.

Value (UDINT) Ritorna lo stato degli ingressi digitali acquisiti.

Errori

In caso di errore si attiva l'uscita Fault, eseguendo immediatamente dopo la funzione SysGetLastError è possibile rilevare il codice di errore. Fare riferimento alla tabella seguente per la descrizione.

Esempi

Come utilizzare gli esempi.
Viene acquisito lo stato degli 8 ingressi bassi (Da Inp 0 a Inp 7) del modulo di espansione con indirizzo 0. Se dato valido il valore acquisito nel range da 0x00 a 0xFF è trasferito nella variabile InpValue.

LogicLab (Ptp116)
PROGRAM ST_SysGetPhrDI
VAR
    InpValue : UDINT; (* Digital input value *)
    DInp : SysGetPhrDI; (* Digital input acquisition *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_SysGetPhrDI"
// *****************************************************************************
// This program acquires digital inputs.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // DIGITAL INPUT ACQUISITION
    // -------------------------------------------------------------------------
    // Acquires digital inputs 0 to 7 on module with address 0.

    DInp.Address:=0; //Module address
    DInp.Mode:=DI_MODE#DI_8_LL; //Acquisition mode
    DInp(); //Digital input acquisition
    IF (DInp.Done) THEN InpValue:=DInp.Value; END_IF;

// [End of file]

Ti è stato utile questo articolo ?

Ultimo aggiornamento: 22 Marzo 2020