Vai al contenuto
PLC Forum


sfb4 yes or not


Selectron

Messaggi consigliati

Buongiorno 

premetto di non essere un maestro nell'utilizzo di siemens s7 300

ho un piccolo quesito sicuramente sciocco, e forse già discusso in altri topic, io ho guardato ma non ho trovato nulla.

mi spiego ho una macchina di cui ho fatto il programma, nessun problema, ma volevo implementarlo,vorrei metter nelle macchine future un timer che all fine di un tempo mi chiuda un uscita, per esempio indicando alla manutenzione il momento di cambio olio, cambio ricambi interni, pulizia parti interne. tempi vanno dalle 200 alle 1000 ore

non riesco con i normali temporizzatori, per il limite di tempo. ho letto di usre gli sfb4 appogiandoli a una DB, ma ho letto che si resettano alla mancanza di IN.

il temporizzatore in oggetto deve accumulare solo quando la macchina è in funzione non resettarsi alla mancanza dele segnale IN, o togliendo alimentazione al quadro o mettendo in stop e run la cpu, dovrebbe  poter essere resettato solo da un comando a doc esempio pulsante di reset interno al quadro. se possiblie un esempio CPU312 uso step 7 v5.4 grazie moltte per la cortesia.

 

Link al commento
Condividi su altri siti


Ciao.

Quello che vuoi credo sia meglio farlo con dei "contatori", non dei timers..

Sfrutta il clock interno alla cpu.

O nel caso ti crei un tempo che ogni secondo ti da un impulso.

Ogni volta che hai l'impulso, incrementi di 1 il conteggio dei secondi.

Quando arrivi a 60, incrementi di 1 il conteggio dei minuti e riporti a 0 i secondi.

Quando arriverai a 60 minuti, azzererai il conteggio dei minuti e incrementerai quello delle ore.

Alla fine ti basterà fare un confronto sul conteggio delle ore ed un preset da te scelto (che siano 200 o 1000 ore).

Uso anche io questa funzione per la manutenzione in scadenza, mi appoggio a una db così a hmi possiamo vedere quante ore son passate e quante ne mancano.

Ciao!

Link al commento
Condividi su altri siti

On 3/1/2018 at 1:18 PM, DesmoGiec said:

Ciao.

Quello che vuoi credo sia meglio farlo con dei "contatori", non dei timers..

Sfrutta il clock interno alla cpu.

O nel caso ti crei un tempo che ogni secondo ti da un impulso.

Ogni volta che hai l'impulso, incrementi di 1 il conteggio dei secondi.

Quando arrivi a 60, incrementi di 1 il conteggio dei minuti e riporti a 0 i secondi.

Quando arriverai a 60 minuti, azzererai il conteggio dei minuti e incrementerai quello delle ore.

Alla fine ti basterà fare un confronto sul conteggio delle ore ed un preset da te scelto (che siano 200 o 1000 ore).

Uso anche io questa funzione per la manutenzione in scadenza, mi appoggio a una db così a hmi possiamo vedere quante ore son passate e quante ne mancano.

Ciao!

Innanzi a tutto grazie per la risposta DesmoGiec, come ho detto non sono un esperto su S7 300 ma quello che dici io lo faccio su telemecanique e allen ma qui ho dei problemi.

non mi serve hmi non hanno schermo queste macchine.

sarebbe possibile avere un esempio di come fare ? te ne sarei grato.

attualmente sono in Malaysia e rispondero' in ritardo 7 h avanti.

intanto oggi se riesco provo, sto installando altre macchine.

posto anche la mia email se puo' essere utile sltrrt@gmail.com

ti auguro una buona giornata, grazie ancora 

Link al commento
Condividi su altri siti

      U     M     10.0                  //Sarà il tuo bit di clock a cadenza di un secondo
      FP    M     11.0                  //Uso un fronte perchè il bit di clock da me usato non è impulsivo
      SPBN  _SEC
      L     MW   100                    //Carico la word di memorizzazione dei secondi
      +     1                           //Sommo 1
      T     MW   100                    //Trasferisco in word secondi

_SEC: L     MW   100                    //Carico i secondi
      L     60                          //Carico 60
      >=I                               //Se word secondi => 60
      SPBN  _MIN                        //Salto a _MIN se il compare è falso
      L     MW   102                    //Carico word dei minuti
      +     1                           //Sommo 1
      T     MW   102                    //Trasferisco in word minuti
      L     0                           //Azzero la word dei secondi
      T     MW   100
_MIN: L     MW   102                    //Carico i minuti
      L     60                          //Carico 60
      >=I                               //Se word minuti => 60   
      SPBN  _HRS                        //Salto a _HRS se il compare è falso
      L     MW   104                    //Carico word delle ore
      +     1                           //Sommo 1
      T     MW   104                    //Trasferisco in word delle ore
      L     0                           //Azzero la word dei minuti
      T     MW   102
_HRS: NOP   0

Te l'ho fatto su mw, se non sono ritentive nel tuo plc si azzereranno ad ogni riaccensione del plc.

Per generare l'allarme, confronterai la mw104 che sarà quella delle ore.

La stessa cosa si può fare con i contatori veri e propri, poi va a comodità!

Link al commento
Condividi su altri siti

On 3/1/2018 at 1:18 PM, DesmoGiec said:

Ciao.

Quello che vuoi credo sia meglio farlo con dei "contatori", non dei timers..

Sfrutta il clock interno alla cpu.

O nel caso ti crei un tempo che ogni secondo ti da un impulso.

Ogni volta che hai l'impulso, incrementi di 1 il conteggio dei secondi.

Quando arrivi a 60, incrementi di 1 il conteggio dei minuti e riporti a 0 i secondi.

Quando arriverai a 60 minuti, azzererai il conteggio dei minuti e incrementerai quello delle ore.

Alla fine ti basterà fare un confronto sul conteggio delle ore ed un preset da te scelto (che siano 200 o 1000 ore).

Uso anche io questa funzione per la manutenzione in scadenza, mi appoggio a una db così a hmi possiamo vedere quante ore son passate e quante ne mancano.

Ciao!

non so come ringraziarti.

ti offrirei una cena se fossi in Italia.

ora provero' a scriverlo e a trasformalo in KOP  perche io lo ammetto non uso AWL . 

tutto il programma e' in KOP , 

penso ci sia una funzione che puo' farlo.

come ho detto prima non sono un esperto di S7-300, e non uso AWL e me ne vergogno.

chiedo un ultima cosa posso usare una parte KOP e una AWL? 

Buon Weekend per me e' gia' Venerdi sera 

grazie immensamente per la cortesia 

 

Link al commento
Condividi su altri siti

Con il 300 puoi avere sia kop che awl nel programma.

Con l'editor aperto puoi cambiare a piacimento il metodo di visualizzazione.

Il codice che ti ho scritto non riesci a convertirlo automaticamente in awl però.

Questa è la trasposizione in kop

b51S9XV.png

 

Puoi usare i contatori se vuoi, io mi trovo meglio in questo modo però ;)

Link al commento
Condividi su altri siti

boungiorno

ho provato ma ho dovuto cambiare il merker m10 gia utilizzato, nel programma, ho usato m100. ho abilitato il merker di clock 100 sulla cpu, ho utilizzato m100.5 essendo il clock a 1 sec

ho rinominato le mw perchè se non sbaglio la mw 100 = 2 bytes mb100 mb101 e mb 100 e 8 byte m100.0 fino a m100.7 

le tue mw 100 diventano mw103  le mw 102 diventano mw107  le mw 104 diventano mw105.

alla fine ho utilizzato mw 105 per un set di una bobina.

il tutto funziona ma la mw 107 conta i secondi e si riazzera la mw 105 i minuti la mw 103 teoricamente dovrebbe essere dei secondi non si muove.

poi se potevo chiedere posso ritenere le ore perchè altrimenti ad una nuova accensione del plc si azzera il tutto 

so che per uno pratico queste sono banalità.

io ci lavoro una volta all,anno su s7, e ogni volta mi dimentico.

grazie e buona Domenica.

 

Link al commento
Condividi su altri siti

Ciao

Ho provato a capire i tuoi cambiamenti, ma non mi sono chiari .

Ma non puoi lasciare i merker come te li ha messi Desmo e cambiare il MB di clock con uno libero? Es. MB200.......

Poi confermo anch'io, meglio se ti crei un DB.

 

Link al commento
Condividi su altri siti

Buongiorno

grazie per le risposte 

Beppo hai ragione ho cambiato i merker perchè già utilizzati in altre parti del programma ,ora funziona.

altro problema càe un modo per ritenere per esempio solo i merker 50.0 fino 050.7 ho guardato ma la cpu mi dice da m0.0 a maerker m-.- fino a 256, non voglio ritenere tutti i merker ma solo 8 o 16.

CPU 314c-2ptp

la prossima settimana sono in Vietnam per altre due macchine e anche queste hanno siemens S 7-300

un metodo sicuro per fare una copia del programma, secondo voi, puo' essere questa:

" apro un nuovo progetto su simatic manager" 

" vado online"

" sistema di destinazione, Carica nel pg" puo' funzionare? 

so che cosi non ho i commenti. 

esiste un metodo per tirare su anche i commenti, e il programma completo?

Grazie a tutti per la pazienza 

Buon Voto 

 

 

 

Link al commento
Condividi su altri siti

Quote

tempi vanno dalle 200 alle 1000 ore

 

Secondo me, non vale la pena incrementare ore e minuti. Fai un unico contatore che conta i secondi. Con il conteggio in secondi su una DINT ne hai per quasi 70 anni. Un solo conteggio risulta più pratico se devi fare comparazioni.
Poi, se vuoi visualizzare i tempi in hh:mm:ss, puoi fare delle divisioni ed usare il resto della divisione (vedi istruzione MOD).

Link al commento
Condividi su altri siti

Buongiorno

grazie a tutti per le risposte

scusate per la mia ignoranza su s7-300, sicuramente sono cose semplici per tutti voi.

grazie Batta per il suggerimento ci provero'.

per avere dei merker che allo spegnimento non si azzerano come posso fare ? 

se uso una db che ho configuato con minuti e ore abilitando dbw 2 e dbw 4 come facico a scrivere su questa db i minuti per esempio da mw 104 ? dopo devo fare un confronto e quando arriva  a 10min attivare un merker che allo spegnimento non si resetta ma che debba essere resettato esternamente esempio con un pulsante?

se possibile un esempio in kop.

so di essere veramente schiappa, e di chiedere molto.

scusate e grazie a tutti per la pazienza.

 

 

Link al commento
Condividi su altri siti

i db funzionano come mw, quindi apri un db. inserisci tre righe.

ore, minuti, secondi; tutti dichiarati come intero (int).

nel tuo progetto al posto di mw104 ci scriverai dbxx.dbwyyy dove xx è il numero del db e yy il numero della word dichiarata come intero. in un db nuovo saranno dbw0 - dbw2 - dbw4

 

prendi in considerazione il consiglio di batta. in quel caso invece di int dovrai usare dint

Link al commento
Condividi su altri siti

ifachsoftware

Se invece di scrivere in delle FC con dei db di appoggio ,usassi degli FB potresti farti un blocco conteggio riusabile , dove in entrata prevedi un ingresso di reset , la DINT suggerita da batta la metti nella sezione Static così sarebbe ritentiva , poi magari mandi in uscita i giorni , ore , minuti e secondi.

Link al commento
Condividi su altri siti

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