4.6666666666667 1 1 1 1 1 1 1 1 1 1 Rating 4.67 (3 Votes)

Valutazione attuale: 0 / 5

Stella inattivaStella inattivaStella inattivaStella inattivaStella inattiva
 

In quest'articolo descriverò come utilizzare un dato di tipo ANY come puntatore in ingresso ad una semplice subroutine in Step 7 v.5.5. Il tipo dati ANY, concordemente alla guida online Simatic, ha lunghezza 10 bytes  con la seguente struttura:

 ANY Definition

 

  1. Innanzitutto creerò un semplice progetto S7 basato sulla CPU 315 codice S7-315 6ES7 315-2EH14-0AB0

    HW config

  2. Quindi , all'interno del progetto, definisco un nuovo tipo di dati UDT1 (mnemonico ANY_UDT) avente lunghezza 1 WORD e composto dal byte 0 (8 bit segnali ingresso) + byte 1 (8 bit segnali uscita). Lo scopo della subroutine sarà quello di mappare (assegnare) il primo bit del byte d'uscita al primo bir del biyte d'ingresso.

    UDT1 detail

  3. Definisco una nuova subroutine (FC1) avente parametri:
    • IN: InData: ANY
    • TEMP: In :UDT1                // UDT1 data type in order to easily access the structure bits into subroutine logic
    • TEMP: InLaddr: DWORD  // pointer to "In" area
    • TEMP: InDBNum: INT        // "In" area DB number

      SubData

  4. Questo il codice della subroutine:

    Subroutine

  5. Richiamo la FC 1 in OB1 assegnando ad "InData" il puntatore  ad DB1 nel quale avevo in precedenza definito un nuovo elemento "Sample1" di tipo UDT1  (P#DB1.DBX0.0 BYTE 2) (=DB1.Sample1 ANY data)

    OB1DB1

  6. Questa è la simulazione della funzione (PLC SIM):

    FC1Job

  7. I vantaggi nell'usare un tipo di dati ANY come ingresso ad un funzione sono:
    • Richiesta limitata di Memoria Lavoro per la CPU (in questa FC di esempio vengono occupati solamente 104 bytes. Per fare un confronto basterebbe creare una funziona analoga avente come parametro di ingresso direttamente il dato UDT1 anziché ANY..la differenza sarebbe notevole).
    • Minor numero di parametri di ingresso/uscita dalla FC= maggior pulizia nel codice

Da qui potete scaricare il sorgente di quest'esempio.Spero vi sia utile. Per qualsiasi domanda, richiesta, chiarimento, non esitate a contattarmi.

 

 

Attachments:
Download this file (ANY_InOu.7z)ANY_InOu.7z[ ]161 kB583 Downloads2014-03-02 16:47