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




Storico Allarmi


Messaggi consigliati

Inserito:

Ciao Ragazzi

Mi piacerebbe sapere se possibile creare nel PLC un DB con lo storico degli allarmi ?

Normalmente lo crea sul supervisore ma stavolta mi hanno chiesto di farlo sul PLC . Magari un DB con denro un certo numero di righe che riportino data e ora e descrizione allarme , che una volta riempito all'arrivo di un nuovo allarme il più vecchio esca..

Spero di essermi spiegato

Se non ci sentiamoprima faccio a tutti , i migliori auguri di Buone Feste e Felice Anno..


Inserita: (modificato)

certamente si,

dichiari 2 array globali di grandezza sufficiente a contenere il n° di allarmi (int) e le ore (dint)

quando si verifica un allarme:

fai un move block delle word nell'array di allarme "A" partendo dall'indirizzo 2

fai un move block delle dword nell'array delle ore "B" partendo dall'indirizzo 2

fai un move della word dell'allarme attuale nell'array "A" all'indirizzo 1

fai un move dell'ora attuale nell'array "B" all'indirizzo 1

per visualizzare sigolarmente puoi usare l'istruzione fieldread.

buone feste a tutti anche da parte mia

Modificato: da sonnyb
Inserita: (modificato)

Grazie mille sonnyb

infatti per quanto riguarda data e time nessun problema, ma il messaggio di allarme è una stringa di 80 caratteri , il block move non me la accetta..

di nuovo grazie

Modificato: da Frank681
Giuseppe Signorella
Inserita:

Per trasferire una stringa da un'area di memoria ad un'altra, devi utilizzare l'istruzione Muovi stringa "S_MOVE"

Ovviamente anche l'array deve essere dichiarata come stringa

Ciao

Inserita:

Ciao Giuseppe

Ho provato come mi hai suggerito ma così purtroppo devo spostare una strnga alla volta mentre con blk_move era comodo poichè lavoravo come blocco , poichè penso di fare un db per i messaggi con n stringhe vedrò di farmi una funzione.

grazie mille.

Inserita:

Con S7 300 era possibile inserire nei parametri di blockmove un puntatore ANY cn lunghezza del campo dati (p.es. P#DB1.DBX0.0 BYTE 500), col 1200 non è più possibile?

Inserita: (modificato)

selezionando la visualizzazione in SCL nelle operazioni di trasferimento appaiono anche le funzioni POKE che permetto di crearsi un FC che muove blocchi di dati, spero vi possa aiutare.

POKE_BLK(area_src:=#DB_source,
dbNumber_src:=#DB_number_source,
byteOffset_src:=#Bit_offset_source,
area_dest:=#area_dest,
dbNumber_dest:=#DB_number_dest,
byteOffset_dest:=#Bit_offset_dest,
count:=#count);
Modificato: da mrsunday
Inserita:

Una domanda mi sorge spontanea, è possibile sovrapporre indirizzi sorgente/destinazione? Mi sembra di aver capito che qui si vuole shiftare avanti un blocco di variabili nella stessa db

Inserita:

mi sembra di si io ho usato il blocco per leggere/scrivere nello stesso DB.

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...