visualizza l'elenco degli articoli
Ricerca di una configurazione di bit in una sequenza di blocchi dati
Numero di ordinazione:

DOMANDA
Come si può effettuare una ricerca di una determinata configurazione di bit in più blocchi dati?

RISPOSTA
In STEP 7, nella libreria "TI-S7 Converting Blocks" è disponibile la funzione "TBL_FIND" (FC86), con la quale si può cercare una configurazione di bit in una tabella (DB). Questa funzione può essere poi impiegata quando i DB in cui si deve cercare corrispondono come struttura ad una tabella.

Il presente articolo descrive come si può scrivere una tale funzione con l'impiego della programmazione a loop, che ricerca una configurazione di bit in una sequenza di DB. Qui la configurazione di bit può essere costituita da tipi dati elementari opp. da strutture. Il risultato è l'indirizzo della configurazione, così come il numero di concordanze.

Descrizione della funzione
La funzione descritta ricerca una determinata configurazione di bit in una sequenza di DB. La sequenza dei DB viene definita dal numero di DB di inizio e dal numero dei DB in cui cercare. Se p. es. per il parametro IN "StartDBNumber" viene scelto il "2" e per "CountDB" un "3", allora ricerca della configurazione di bit viene effettuata nei DB con i numeri "2", "3" e "4".

Tramite un pointer ANY la configurazione viene trasferita alla funzione di confronto tramite il terzo parametro IN "Pattern". La ricerca della configurazione comincia con il primo DB (p. es. "2") ed avviene nei passi di tipo dati specificati tramite il pointer ANY. All'interno della configurazione il confronto avviene poi a byte.

La configurazione può essere formata dai tipi dati seguenti.

  • Tipi dati elementari (esclusi BOOL e CHAR)
  • tipo dati complesso DATE_AND_TIME

La configurazione può trovarsi nelle seguenti posizioni di memoria:

  • struttura temporanea nel blocco chiamante
  • campo di merker
  • blocco dati

La ricerca avviene in tutti gli DB della sequenza indicata. Essa non viene interrotta dopo la prima concordanza. In questo modo è possibile definire la prima concordanza: questa viene visualizzata sui parametri OUT "DBNumber" e "ByteAddress" ed è possibile definire il numero delle concordanze trovate. Questo viene visualizzato sul parametro OUT "MatchCount".

Se un DB della sequenza indicata non esiste, esso viene ignorato e la ricerca continua con il DB successivo nella sequenza.

Descrizione delle interfacce della funzione FC 1 "FindPattern"

Dichiarazione

Nome

Tipo

Descrizione

IN

StartDBNumber

INT

Primo numero del DB nel quale deve essere cercato un valore

IN

CountDB

INT

Numero dei DB nei quale si deve cercare a partire dal primo numero

IN

Pattern

ANY

Pointer ANY sulla struttura della configurazione da cercare

OUT

DBNumber

INT

Numero del DB dove la configurazione compare per la prima volta

OUT

ByteAddress

DWORD

Offset nel DB in cui la configurazione compare per la prima volta

OUT

MatchCount

WORD

Numero delle concordanze

OUT

Match

BOOL

TRUE: esiste min. una concordanza
FALSE: nessuna concordanza

OUT

Err

BOOL

Errore cumulativo, p. es. errore di parametrizzazione (tipo dati errato,area errata, lunghezza DB non valida)

Avvertenza

  • Nel trasferimento di array, strutture opp. pointer UDT come pointer ANY, l'editor genera un pointer ANY sul campo o sulla struttura. Qui l'identificatore di tipo BYTE è indipendente dai tipi dati delle singole variabili di campo o di struttura.
  • Il pointer ANY è un puntatore di campo globale
  • Poiché in tutti gli DB la ricerca avviene a byte, con un corrispondente numero di DB oppure in funzione della lunghezza dei DB il tempo del ciclo cresce.
  • Se il numero delle variabili in un DB non è compatibile con la lunghezza della configurazione da ricercare, allora le "variabili Resto" vengono ignorate. P. es. la configurazione è costituita da 4 variabili INT, un DB è lungo 10 variabili INT. La ricerca comincia all'inizio del DB. Questo significa che nel DB la configurazione viene ricercata due volte (fino a 8 variabili INT). Le due ultime variabili INT vengono ignorate.
  • I registri indirizzo non vengono modificati.

Descrizione dell'esempio di programma
Nel esempio di programma ha luogo la ricerca di due configurazioni diverse nei 3 DB (DB10, DB11 e DB12). I DB creati come esempio hanno lunghezza diversa ed i valori in essi contenuti sono dello stesso tipo dati "INT" così come le variabili nella configurazione di bit.

Per la ricerca delle due configurazioni, in OB 1 viene richiamata la funzione "FindPattern" (FC 1) con parametri diversi.

  • Nel primo segmento viene effettuata nei DB la ricerca di una configurazione che si trova in DB 1 ed è costituita da tre variabili Integer. Le tre variabili hanno i valori 1, 2 e 3.
  • Nel secondo segmento al richiamo della funzione viene trasferito una configurazione che si trova nei dati locali nella variabile temporanea "#Pattern". La configurazione in questo caso è una variabile Integer con il valore "7".

Nella tabella delle variabili si possono osservare i parametri OUT dei due richiami della funzione che si possono pilotare i valori nei tre DB della sequenza.

Il download allegato contiene il progetto STEP7 con il blocco funzionale per la ricerca della configurazione, così come i blocchi dati predisposti e le tabelle delle variabili per il test funzionale.

Find_Pattern.exe

Copiare il file "Find_Pattern.exe" in una directory separata ed avviarlo con un doppio clic. Il progetto STEP7 viene scompattato automaticamente con tutte le subdirectory corrispondenti. Poi si può aprirlo ed elaborarlo con il SIMATIC Manager.

Eseguibilità e ambiente di test
L'esempio è impiegabile in tutte le CPU del SIMATIC S7-300, S7-400 e WinAC.
Nella tabella seguente sono elencati i componenti con le quali è stato realizzato quest'articolo ed è stato verificato il funzionamento descritto.

Ambiente di test

Versione

Piattaforma PC

Pentium III 800MHz, 264 MB

Sistema operativo

Windows XP

STEP 7

V5.2

CPU S7

CPU 315-2DP
(6ES7315-2AF03-0AB0)



Criteri del filtro:
Hardware platform: SIMATIC S7-300/S7-400
Software: STEP 7 up to V5.x
Entry contents: Function blocks/tools
 Articolo con ID:16792091   Data:2003-12-20 
Questo articoloè stato utilenon è stato utile                                 
related links
Ricerca del valore minimo/massimo ...
Preassegnazione / riempimento di ...
SIMATIC HMI Pannello operatore TP ...
Come si può aprire un blocco dat ...
CP 340 PtP Driver per la stampante
mySupport
My Documentation Manager 
Newsletter 
CAx-Download-Manager 
Support Request
Contatto
Support Request
Contatti in tutto il mondo
Technical Forum
QuickLinks
Strumento di compatibilità 
Dati delle performance 
Micro Automation Set
Aiuto
Aiuto on-line
Guided Tour
Maggiori informazioni sulla AV-Card
Maggiori informazioni sulla AV-Card