Savino Inserita: 2 dicembre 2006 Segnala Inserita: 2 dicembre 2006 (modificato) Ciao tecnologyassistence Dunque andiamo per parti....Io adesso sono ONLINE con una CPU 314... ho il FC11 richiamato da OB35 che mi aggiorna il DB11 ogni 500ms ... tutto normale.Allora, innazitutto... verifica ed eventualmente aggiorna l'orologgio PLC utilizzando il box del SW S7... vai sulla barra del menu in alto, seleziona PLC / Diagnostic-Setting / Set time of Day... ( PLC/ Diagnostica-Impostazioni / Imposta .....)Dal box del Set Time of Day sincronizza l'orologgio PLC con quello del PC.... Poi, sulla tabella di variabili VAT1 dovresti ricavare la data ed ora per forza.LB 17T MB17LB 16T MB16LB 15T MB15 e cosi vianon possiamo utilizare questo sistema in qualche modo? Certo che puoi.... Io pensavo che l'orologgio non ce lo avevi... ...adesso vorrei chiedervi se qualcuno di voi mi sa spiegare come posso fare a sapere ad esempio:in quale momento la rigenerazione e' partita e memorizzare l'ora in cui il ciclo e' partito e' magari settare delle memorie associate ad un testo che rimangono memorizzate assieme all'ora e' possibile farlo grazie a tutti ciao DomenicoPer fare questo potresti escrivere qualcosa del genere.. UN M 1.0 // se ce l'evento O M 2.0 // solo una volta SPB salto Carica i valori di data ed ora (6 bytes) Trasferisci nel DB del archivio Date&Time ( non so... DB12 per esempio) Carica i valori di .... Trasferisci nel DB del archivio Altri_Dati( non so... DB13 per esempio) Incrementa l'indice S M 2.0 salto NOP 0 UN M 1.0 // se non ce l'evento R M 2.0 Dovresti creare una FC che riceva in INPUT l'indice per il DB e l'offset per la DW a partire da dove salvare piu' i valori da salvare cioe' i 6 bytes data ed ore... altri dati. Esempio.. FC 12 Name DataType Commento ----------------------------------------------------------------------- IndiceDB Word OffsetDW Word data Byte ore Byte min Byte ... .. altri dati..Volendo potresti pasarli anche dei dati del tipo DWord oppure in Date_And_Time direttamente.Nel FC 12 dovresti usare dei puntatori... Non so, se vedi che non ci riesci potrei vedere di preparati qualcosa... fammi sapere.....Ma approposito.. dopotutto l'orologgio ce lo hai girando o cosa Modificato: 2 dicembre 2006 da Savino
tecnologyassistence Inserita: 2 dicembre 2006 Autore Segnala Inserita: 2 dicembre 2006 ciao savino pensavo che la discussione con ken l'avevi letta gli avevo gia detto che usavo LB17 ecc..comunque scusami ancora ho letto tutto quello che hai scritto e ti ringrazio ancora per la tua pazienza sto cercando di tirare su l'esempio che mi hai scritto ma non ho capito come usare i puntatoridevo fare cosi?:un m1.0 questo corrisponde al merker es:che dara' l'allarme?0 m2.0spb salto (non mi permette di scriverlo e' evidenziato in rosso)devo fare cosi?l lb12l lb13l lb14l lb15l lb16l lb17t db12carico valori???non ho capito qualit db 13incrementas m2.0nop 0un m1.0r m2.0adesso cosa faccio creo un fc12e scrivoindice db offset ecc..sicuramente sto sbagliandonon so
Savino Inserita: 2 dicembre 2006 Segnala Inserita: 2 dicembre 2006 Ciao,Ho capito, tu ricavi dalle variabili globali del OB1, quindi tu hai: L LB 12 T MB 12 // anno L LB 13 T MB 13 // mese L LB 14 T MB 14 // giorno L LB 15 T MB 15 // ora L LB 16 T MB 16 // min L LB 17 T MB 17 // sec spb salto (non mi permette di scriverlo e' evidenziato in rosso) Utilizza piuttosto di "salto" un'altra eticchetta non so M1 ... vedi sotto ..... ..... SPB M1 ..... ..... M1: NOP 0 .....carico valori???non ho capito qualiQuelli sulle MB 12 alla MB17...Comunque, visto che sei alle prime armi, penso che ti sara' un po' durina creare questo FC Vedo cosa posso eventualmente fare
tecnologyassistence Inserita: 2 dicembre 2006 Autore Segnala Inserita: 2 dicembre 2006 ok savino se non ti chiedo troppo accetterei ben volentieri un tuo esempionell'attesa vedo di provarci grazie ancora.
tecnologyassistence Inserita: 2 dicembre 2006 Autore Segnala Inserita: 2 dicembre 2006 il problema piu' grosso e' che mi sono impelagato in questo lavoro e devo cercare di venirne fuori portando a termine e soddisfando tutte le richieste fatte dal mil clientenon so ma penso che questo tipo di problema sia + grande di me
Savino Inserita: 3 dicembre 2006 Segnala Inserita: 3 dicembre 2006 (modificato) adesso vorrei chiedervi se qualcuno di voi mi sa spiegare come posso fare a sapere ad esempio:in quale momento la rigenerazione e' partita e memorizzare l'ora in cui il ciclo e' partito e' magari settare delle memorie associate ad un testo che rimangono memorizzate assieme all'ora e' possibile farloDunque.. crea il FC 12.. lo chiami "WriteOffset"..Nella tabella d'interfaccia inserisce le variabili sotto elencate per IN e TEMP:FC 12 : Write Offset IN Name DataType Commento ----------------------------------------------------------------------- DB_NUM Word DB_OFFSET Word VAL1 Word VAL2 Word VAL3 Word TEMP Name DataType Commento ----------------------------------------------------------------------- AKK1 DWord AKK2 DWord STW Word INDEX Word Poi nel segmento 1 scrivi: ( copia / incolla ) L #DB_NUM T #INDEX TAK L #AKK1 AUF DB [#INDEX] L #VAL1 T #AKK1 TAK T #AKK2 L STW T #STW L #DB_OFFSET SLW 4 LAR1 L #STW T STW L #AKK2 L #AKK1 T DBW [AR1,P#0.0] L #VAL2 T #AKK1 TAK T #AKK2 L STW T #STW L #DB_OFFSET SLW 4 LAR1 L #STW T STW L #AKK2 L #AKK1 T DBW [AR1,P#2.0] L #VAL3 T #AKK1 TAK T #AKK2 L STW T #STW L #DB_OFFSET SLW 4 LAR1 L #STW T STW L #AKK2 L #AKK1 T DBW [AR1,P#4.0] Come richiamare FC12 WriteOffset: UN M 165.0 // trigger SPB M001 CALL "WriteOffset" // FC 12 DB_NUM :=MW240 // N. Data Block (DB) DB_OFFSET:=MW242 // Offset VAL1 :=MW244 // prima word di dati VAL2 :=MW246 // seconda word di dati VAL3 :=MW248 // terza word di dati M001: NOP 0 Il FC 12 scrive 3 WORDS di dati a partire dal offset DBx1DWx2. x1 ( DB_NUM ) e' il numero del DB: Deve esistere ed essere lungo almeno di 3 words. x2 (DB_OFFSET ) e' il numero della DW di offset, a partire da dove verrano scritte le 3 words. VAL1 - 2 e 3 sono i 6 bytes di dati. Ad esempio supponiamo che lo richiami 2 volte per salvare dei dati su 2 DB diversi, DB 2 e DB 3. Nel DB 2 salvi i 6 bytes di data ed ora. Nel DB 3 salvi 6 bytes di altri dati. //Carichi l'orologgio L LB 12 T MB 244 // anno L LB 13 T MB 245 // mese L LB 14 T MB 246 // giorno L LB 15 T MB 247 // ora L LB 16 T MB 248 // min L LB 17 T MB 249 // sec L 2 T MW240 // DB 2 L 0 T MW242 // DW 0 // Se tigger =1, allora salvi. UN M 165.0 // trigger SPB M001 CALL "WriteOffset" // FC 12 DB_NUM :=MW240 // N. Data Block (DB) DB_OFFSET:=MW242 // Offset VAL1 :=MW244 // prima word di dati VAL2 :=MW246 // seconda word di dati VAL3 :=MW248 // terza word di dati M001: NOP 0 Costruisce un DB 2 lungo 12 words.Poi richiami il FC 12 .Se.. MW 242 =0 : FC12 scrive la data ed ora negli offset 0 - 2 - 4. MW 242 =3 : FC12 scrive la data ed ora negli offset 6 - 8 - 10. MW 242 =6 : FC12 scrive la data ed ora negli offset 12 - 14 - 16. MW 242 =9 : FC12 scrive la data ed ora negli offset 18 - 20 -22. Prova a scrivere la funzione e testarla con una tabella VAT. Poi vediamo se cominci a vedere piu' chiaro Modificato: 3 dicembre 2006 da Savino
tecnologyassistence Inserita: 3 dicembre 2006 Autore Segnala Inserita: 3 dicembre 2006 ciao savino ho fatto tutto il copia e incolla di tutto ma nel segn°2 come richiamare fc12a partire da DB_NUM :=M240 ho tutto evidenziato in rosso come faccio?
Savino Inserita: 3 dicembre 2006 Segnala Inserita: 3 dicembre 2006 Ciao, Allora.. quando hai finito il segmento 1, salva e chiude il blocco.Poi, devi richiamarlo da un'altro FC oppure da OB1.
tecnologyassistence Inserita: 3 dicembre 2006 Autore Segnala Inserita: 3 dicembre 2006 ok savino funziona adesso se voglio provare on-line con il simulatore del tp a memorizzare un testo e l'ora e poi resettarla come posso fare?
tecnologyassistence Inserita: 3 dicembre 2006 Autore Segnala Inserita: 3 dicembre 2006 e allora savino cambiando lo stato dell'M 165.0 nella tabella delle variabili e' cambiata qualcosa ma rimaneinvariata nonostante cambia lo stato dell'ingresso ma se visualizzo lo stato del mio FC vedo che variando lo stato dell'ingresso MW240 ed il resto iniziano a girare cambiano i numeri se metto a0 il segnale IN vedo memorizzati dei valori adesso sto provando a visualizzare qualcosa sul TP sto cercando di capire come fare apparire l'ora associata ad un MERKER che a sua volta restando settato rimanga invariato fino a quando non viene resettato
Savino Inserita: 3 dicembre 2006 Segnala Inserita: 3 dicembre 2006 (modificato) ....ad esempio:in quale momento la rigenerazione e' partita e memorizzare l'ora in cui il ciclo e' partito e' magari settare delle memorie associate ad un testo che rimangono memorizzate assieme all'oraundefinedAllora, dovresti assocciare delle memorie di "stato delgi eventi" con le variabili di data ed ora per esempio :M 10.0 = start ciclo di regenerazione => salvi data ed ora a partire dal offset 0 della DB2M 10.1 = stop ciclo di regenerazione => salvi data ed ora a partire dal offset 6 della DB2M 10.2 = Fault avvenuto => salvi data ed ora a partire dal offset 6 della DB2..Contemporaneamente salvi anche nella DB 3 questa MB 10 o MW 10 insieme ad altri due words che potrebbero essere dei valori di temperatura e pressione.se voglio provare on-line con il simulatore del tp Non conosco il simulatore del TP.... comunque dovreti sempre associare delle variabili tags nel ambiente TP con le aree di questi DBs....e poi resettarla come posso fare? Anche qui... devi crearti delle pagine con dei pulsanti virtuali associati con delle memorie, etc.. nel PLC.non so ma penso che questo tipo di problema sia + grande di me Vedi te... il mio aiuto era mirato a darti una idea di massima ma non di farti tutto il programma...e quindi il discorso cambiarebbe.... per mettere giu' un programmino "ben fatto" anche se non molto grande ci vorrebbe avere innazitutto tutta l'info neccessaria per cosi estimare il tempo di sviluppo e test che ci vorrebbero.Comunque,penso che tutto sommato, con le informazioni ti avevo dato avresti dovuto vedere piu' chiaro Modificato: 3 dicembre 2006 da Savino
Savino Inserita: 3 dicembre 2006 Segnala Inserita: 3 dicembre 2006 (modificato) Utilizza una VAT come quella di sotto.Address Symbol Display Format Status value Modify value ------------------------------------------------------------------------------- MW 240 DEC 2 2 MW 242 DEC 9 9 MW 244 HEX W#16#0612 MW 246 HEX W#16#0319 MW 248 HEX W#16#0054 DB2.DBW 0 "Data&Time".DB_VAR0 HEX W#16#0612 DB2.DBW 2 "Data&Time".DB_VAR1 HEX W#16#0309 DB2.DBW 4 "Data&Time".DB_VAR2 HEX W#16#3923 DB2.DBW 6 "Data&Time".DB_VAR3 HEX W#16#0612 DB2.DBW 8 "Data&Time".DB_VAR4 HEX W#16#0309 DB2.DBW 10 "Data&Time".DB_VAR5 HEX W#16#3932 DB2.DBW 12 "Data&Time".DB_VAR6 HEX W#16#0612 DB2.DBW 14 "Data&Time".DB_VAR7 HEX W#16#0309 DB2.DBW 16 "Data&Time".DB_VAR8 HEX W#16#3942 DB2.DBW 18 "Data&Time".DB_VAR9 HEX W#16#0612 DB2.DBW 20 "Data&Time".DB_VAR10 HEX W#16#0319 DB2.DBW 22 "Data&Time".DB_VAR11 HEX W#16#0054 MB 165 BIN 2#0000_0001 2#0000_0001 Per esempio, se guardi la MW242 ha un valore 9. Quindi se la M 165.1 e' a 1 la data ed ora vengono scritte nelle DW 18,20.22.Quindi a secondo l'evento imposti un indice diverso in MW244 in un intervallo 0-3-6-9 se la DB ha 12 words. Dovresti fare molto feedback Modificato: 3 dicembre 2006 da Savino
tecnologyassistence Inserita: 3 dicembre 2006 Autore Segnala Inserita: 3 dicembre 2006 ok savino grazie ancora come provo ti faccio sapere grazie mille
Savino Inserita: 3 dicembre 2006 Segnala Inserita: 3 dicembre 2006 M 10.2 = Fault avvenuto => salvi data ed ora a partire dal offset 6 della DB2 CorrezioneM 10.2 = Fault avvenuto => salvi data ed ora a partire dal offset 12 della DB2
tecnologyassistence Inserita: 4 dicembre 2006 Autore Segnala Inserita: 4 dicembre 2006 ciao savino volevo farti sapere che sono riuscito a far girare tutto non voglio chiederti piu' niente hai fatto moltissimo per aiutarmi l'unico ostacolo che rimane e' l'ora e minuti e secondi in pratica quando il trigger va su cambiano i valori non appena torna giu nella tabella delle variabili vedo i dati DATE_TIME ma trasferendoli al TP non corrispondono a quelli reali nonostante l'orologio corrisponde al pc bohhh..comunque grazie non sono stato cosi bravo nonostante il tuo aiuto molto semplice ho stampato tutto l'ho riletto 100 volte sto cercando di saltare l'ostacolo grazie ancora ciao.Domenico
Savino Inserita: 4 dicembre 2006 Segnala Inserita: 4 dicembre 2006 Ciao Domenico,.....Bravo! ... ma trasferendoli al TP non corrispondono a quelli reali nonostante l'orologio corrisponde al pc bohhh..Forse non stai indirizzando bene dal lato TP. Se non sbaglio dovresti indirizzare 3 bytes in formato decimale
tecnologyassistence Inserita: 9 dicembre 2006 Autore Segnala Inserita: 9 dicembre 2006 ciao Savino come va devo distubarti ancora una volta ho fatto il programmino e' funziona ma non capisco una cosa perche sulla tabella della variabili non visualizzo i secondi i minuti e l'ora corretta?in pratica vedo muovere a secondo il merker che metto a 1 ma i valori non vorrispondono a l'ora realemi aiuteresti ancora una volta ciao Domenico
Savino Inserita: 9 dicembre 2006 Segnala Inserita: 9 dicembre 2006 Ciao tecnologyassistence,Dunque.. il formato delle variabili sulla tabella e' in esadecimale (HEX) ?L'orologgio del PLC e' aggiornato con rispetto all'orologgio del PC. ?Quali valori ricavi ?
tecnologyassistence Inserita: 9 dicembre 2006 Autore Segnala Inserita: 9 dicembre 2006 MW 240 DEC 2 MW 242 DEC 0 MW 244 HEX W#16#0612 MW 246 HEX W#16#0918 MW 248 HEX W#16#4600 DB2.DBW 0 HEX W#16#0612 DB2.DBW 2 HEX W#16#0918 DB2.DBW 4 HEX W#16#4525 DB2.DBW 6 HEX W#16#3843 DB2.DBW 8 HEX W#16#1704 DB2.DBW 10 HEX W#16#0000 DB2.DBW 12 HEX W#16#0000 DB2.DBW 14 HEX W#16#0000 DB2.DBW 16 HEX W#16#0000 DB2.DBW 18 HEX W#16#0000 DB2.DBW 20 HEX W#16#0000 DB2.DBW 22 HEX W#16#0000 MB 165 BIN 2#0000_0000 M 10.0 DEC 0 0M 10.1 BOOL false falseM 10.2 BOOL false falseallora sull' fc12 scrivo cosi' L 2 T MW 240 L MW 10 [appoggio pompa in marcia] metto questo dovrebbe essere M10.0 T MW 242 UN M 165.0 SPB M001 CALL "writeoffset" DB_NUM :=MW240 DB_OFFSET:=MW242 VAL1 :=MW244 VAL2 :=MW246 VAL3 :=MW248M001: NOP 0questo e' quanto ho scritto ma della dbw4 non corrispondono i minuti,nella dbw2 il 18 dovrebbe essere l'orama sono le ultime due cifre ma non riesco a visualizarle sul tp dove scrivorappresentazione:DATA E ORAtipo WORDnumero della WORDcome mai???
Savino Inserita: 9 dicembre 2006 Segnala Inserita: 9 dicembre 2006 questo e' quanto ho scritto ma della dbw4 non corrispondono i minuti,nella dbw2 il 18 dovrebbe essere l'ora MW 240 DEC 2 MW 242 DEC 0 MW 244 HEX W#16#0612 MW 246 HEX W#16#0918 MW 248 HEX W#16#4600 DB2.DBW 0 HEX W#16#0612 DB2.DBW 2 HEX W#16#0918 DB2.DBW 4 HEX W#16#4525 Dunque andiamo per parti..... vedo che quando salve nella DB2 , i minuti e secondi non corrispondono !!L MW 10 [appoggio pompa in marcia] metto questo dovrebbe essere M10.0 T MW 242 Questo non va bene... Sulla MW 242 devi dare l'offset del DB ... se questo e' lungo 12 WORDS puoi darli solo i valori tra 0-3-6-9 Dovresti fare presa poco cosi'... UN M 10.0 // se ce l'evento 1 O M 2.0 // solo una volta SPB M001 L 2 T MW 240 L 0 T MW 242 CALL "writeoffset" // salva DB_NUM :=MW240 DB_OFFSET:=MW242 VAL1 :=MW244 // ora VAL2 :=MW246 // min VAL3 :=MW248 // sec S M 2.0 // solo una volta M001: NOP 0 UN M 10.0 // se non ce l'evento 1 R M 2.1 ...... UN M 10.1 // se ce l'evento 2 O M 2.1 // solo una volta SPB M002 L 2 T MW 240 L 3 T MW 242 CALL "writeoffset" // salva DB_NUM :=MW240 DB_OFFSET:=MW242 VAL1 :=MW244 // ora VAL2 :=MW246 // min VAL3 :=MW248 // sec S M 2.1 // solo una volta M002: NOP 0 UN M 10.1 // se non ce l'evento 2 R M 2.1 Allora prova a impostare il codice cosi.... setta la M 10.0 e poi la M 10.1 Dovresti salvare la data e ora sulle WORDS 0-2-4 e 6-8-10 del DB2 !
tecnologyassistence Inserita: 10 dicembre 2006 Autore Segnala Inserita: 10 dicembre 2006 ok Savino funziona tutto alla perfezione adesso ho capito e riesco a vedere che salva nelle dbw in funzione del valore 0-3-6-9 ok ma come faccio a trasferire la es:DBW4 con questo valore es:w#16#0612 il 06 dovrebbe essere l'anno 2006 ed il 12 dovrebbe essere dicembre ecco una volta che trasferisco il dato come WORD mi ritrovo l'anno prima ed il mese dopo e cosi anche per i minuti assieme ai secondi come faccio?
Savino Inserita: 10 dicembre 2006 Segnala Inserita: 10 dicembre 2006 (modificato) ...ma come faccio a trasferire la es:DBW4 con questo valore es:w#16#0612 il 06 dovrebbe essere l'anno 2006 ed il 12 dovrebbe essere dicembre ecco una volta che trasferisco il dato come WORD mi ritrovo l'anno prima ed il mese dopo e cosi anche per i minuti assieme ai secondi come faccio? Devi leggere byte x byte e poi li ordeni a secondo la tua necessita'... allora ... supponiamo che hai:DB2.DBW 0 HEX W#16#0612 DB2.DBW 2 HEX W#16#0918 DB2.DBW 4 HEX W#16#4525 Poi, dal lato TP dichiari 6 tags (variabili) del tipo BYTE e fai la associazione con le data byte della DB2. Tags TP PLC --------------------------------- Var_Giorno = DB2.DBB 2 Var_Mese = DB2.DBB 1 Var_Anno = DB2.DBB 0 Var_ore = DB2.DBB 3 Var_Min = DB2.DBB 4 Var_Sec = DB2.DBB 5 Var_Giorno / Var_Mese / Var_Anno Var_ore : Var_Min . Var_Sec Purtroppo non possiedo il SW del TP e quindi non potrei indicarti la procedura con esattezza ma dovrebbe presa poco essere cosi. Modificato: 10 dicembre 2006 da Savino
Savino Inserita: 10 dicembre 2006 Segnala Inserita: 10 dicembre 2006 Poi, dal lato TP dichiari 6 tags (variabili) del tipo BYTE e fai la associazione con le data byte della DB2. I/O Integer (intero... INT) ... tanto nel PLC le variabili sono gia' in BCD.
tecnologyassistence Inserita: 10 dicembre 2006 Autore Segnala Inserita: 10 dicembre 2006 ciao Savino sei un grande mi hai risolto 1000 problemi non so come ringraziarti grazie d'avvero sei stato gentilissimo adesso che ho capito e provato tutto vado alla grande se non ho capito male se devo allungare e quindi usare unaltra DB ES: DB2 comunque grazie mille ciao Domenico
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora