Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Numero Anomalia - numero anomalia con puntatore


Messaggi consigliati

Inserito:

Ho bisogno di una idea . Spiego , ho una serie di bit a 1 in un'area ben definita. con partenza supponiamo mw140 per una lunghezza xxx , vorrei fare un FB parametrizzato dove in input si trova la prima mw , secondo input numero delle word ,ed in uscita ,secondo il bit ad uno il suo corrispondente in numero decimale. Mi spiego, se la prima mw è la mw140 ed il bit a 1 è m 140.0 il numero sarà 1, se è m141.7 il numero in decimale progressivo sarà 16 , se il bit ad uno è 142.0 sarà 17 e così via . Ringrazio chi può indirizzare per risolvere il problema

Michele


Inserita:

non ho ben capito i parametri in ingresso alla tua funzione.

Ma la prima cosa che m viene n mente è fare un loop , dove carichi all'inzio il tuo indirizzo d partenza (ad es. usando AR1), azzer un contatore locale ed inizi a vedere bit per bit (A M[AR1,P#0.0], incrementando sia il contatore (nc 1) che il puntatore (ncremento d un bit) se non soddisfano le tue esgenze.

Esci dal loop se:

- hai trovato 1

o

- hai raggiunto la fine della tua zona di memoria (che deve essere circoscritta e conosciuta!!)

in uscita da il contatore

Inserita:

diciamo che controllando un'area di memoria da MW140 per n MW ogni volta che un singolo bit cambia stato ( da 0 a 1) in una mw ( INT) mi venga di conseguenza il numero progressivo del bit

Inserita: (modificato)

Devi vedere quale bit va a 1 rispetto alla scansione precedente?

Quanti bit nella tua stringa possono essere a 1?

Se hai più di un bit ad 1 ti viene visualizzato il numero del primo bit a 1 o dell'ultimo?

Modificato: da STEU
Inserita: (modificato)

vediamo di essere più chiari .Supponenedo di avere un area di memoria da MW140 a Mwnnn bene in quest'area sono appogiate le anomalie che possono essere anche più di una , durante la scansione di quest area ogni volta che un singolo bit o più di uno va ad 1 su una word (INT) appare il numero relativo bit , cioè M140.0 = 1, M140.1=2 M140.2=3 ecc. ecc. Spero dim aver spiegato il problema e che qualcuno mi dia un idea per eseguire questo piccolo problema , non voglio fare [ u m140.0 move 1 su mw150, u m140.1 move 2 su mw150 ecc. ecc. ]

Grazie di tutto

Modificato: da Indelicato
Matteo Montanari
Inserita: (modificato)

seguendo il tuo ultimo esempio, nel MW150 avresti sempre il numero dell'utima "anomalia", mi sbaglio, oppure vuoi che MW150 assuma in nuovo valore da ogni ciclo:

se presenti allarmi 1, 3, 18 su mw150 si deve ottenere 1 il primo ciclo, 3 il ciclo successivo e 18 quello successivo ancora.

devi generare un gestore di allarmi che analizza i bit di allarmi presenti in una determinata area di dati (merker o altro) ed ottenere il numero dell'allarme corrispondente.

qualcosa del genere era già stata fatta per esaminare il contenuto di una tabella.

puoi vedere l'esempio nella sezione UP/DownLoad file nella cartella esempi di programmazione.

link

Modificato: da keosmm

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...