unlock Inserito: 1 giugno 2011 Segnala Share Inserito: 1 giugno 2011 (modificato) Ciao a tutti uso altri plc, è la prima volta che uso un siemes per volere del cliente. Ho un problemino con il contatore di step 7 mi espongo il problemaHo un contatore Z_RUECK che funziona sostanzialmente, ma se come valore di settaggio lo metto fisso cioè c#999, per esempio, se voglio rendere impostabile da panello quel valore con un word es MW12 , quando attivo l'ingresso S del contatore il PLC va in errore.Ho cercato nel forum e un rete ma non ho trovato il motivo del problema.Un altra cosa questa MW12 non è possibile renderla ritentiva?Grazie per l'aiuto Modificato: 5 giugno 2011 da Gianmario Pedrani Link al commento Condividi su altri siti More sharing options...
EGS Inserita: 1 giugno 2011 Segnala Share Inserita: 1 giugno 2011 Sistema di destinazione -> Diagnostica/impostazioni -> stato dell'unità -> scheda "buffer di diagnostica".Questo per vedere la causa dell'errore..Per quanto riguarda i contatori, io sono per quelli "autocostruiti".. Ovvero con le funzioni ADD_I, CMP>= I, MOVE, ecc.. Link al commento Condividi su altri siti More sharing options...
amed Inserita: 1 giugno 2011 Segnala Share Inserita: 1 giugno 2011 La MW12 ha il byte MB12 a sinistra (posizione più significativa) e il byte MB13 a destra (posizione meno significativa). La costante di conteggio in questa word deve essere caricata in formato BCD (è qui che hai coomesso l'errore secondo me). Il numero impostabile può andare da 0 a 999, ciò significa che i 4 bit più a sinistra (da M12.4 a M12.7) sono sempre tutti a zero perchè questa tetrade di bit non è usata dal contatore. Ciao Link al commento Condividi su altri siti More sharing options...
unlock Inserita: 1 giugno 2011 Autore Segnala Share Inserita: 1 giugno 2011 Dichiararla in BCD......cioèPoi se io scrivo in mw12 10 lui non scrive 10 partendo dal 12.0 in poi Link al commento Condividi su altri siti More sharing options...
amed Inserita: 1 giugno 2011 Segnala Share Inserita: 1 giugno 2011 E' il numero che un pannello operatore scrive nella word che deve essere scritto in codice BCD. Ciao Link al commento Condividi su altri siti More sharing options...
amed Inserita: 1 giugno 2011 Segnala Share Inserita: 1 giugno 2011 dimenticavo: parte da M13.0,...M13.7, M12.0... M12.7. Ciao Link al commento Condividi su altri siti More sharing options...
amed Inserita: 1 giugno 2011 Segnala Share Inserita: 1 giugno 2011 Vedi l'allegato. Ciao Link al commento Condividi su altri siti More sharing options...
unlock Inserita: 3 giugno 2011 Autore Segnala Share Inserita: 3 giugno 2011 ho visto il ruo pdf, ma quella scoposizione è da binario a esadecimale, se non ricordo male.Comunque quello che non riesco a capire questa MW12 o 255 che sia io la diachiaro nella tabella simpoli di step 7 o pio la importo in wincc , dove dico che deve essere una bcd, credo nella tabella di step 7 giusto?e la posso rendere ritentive non mi sembra o sbaglio?Ripeto è il primo prg che faccio e tra il Vs aiuto e il file . cerco di venirne fuorigrazie Link al commento Condividi su altri siti More sharing options...
unlock Inserita: 5 giugno 2011 Autore Segnala Share Inserita: 5 giugno 2011 Non ne salto fuori, mi fate un'esempio por favor Link al commento Condividi su altri siti More sharing options...
amed Inserita: 5 giugno 2011 Segnala Share Inserita: 5 giugno 2011 Scrivi nella finestrella MW12 formato BCD e premi Enter. Nella finestrella sottostante MW12 formato Binario vedi la corrispondente combinazione di bit che il contatore legge i MW12.Qualunque numero digitato sul pannello operatore deve essere scritto in MW12 nel sistema di numerazione BCD. MW12 deve essere ritentiva.Ciao Link al commento Condividi su altri siti More sharing options...
unlock Inserita: 8 giugno 2011 Autore Segnala Share Inserita: 8 giugno 2011 quello che tu hai fatto come esempio è la stessa cosa che ho fatto io, ma quando la mw12 viene impostata e dico al contatore di prendere quel valore la cpu va in errore.E poi come la rendo ritentiva.Grazie per la pazienza Link al commento Condividi su altri siti More sharing options...
amed Inserita: 8 giugno 2011 Segnala Share Inserita: 8 giugno 2011 Nella finestra di navigazione nel progetto seleziona Stazione > doppio clic su Hardare > Nella tabella fai doppio clic sulla riga della CPU > apri la scheda Ritenzione > il numero di byte di merker ritentivi impostalo a 16 (hai 16 byte ritentivi a partire dal byte 0 cioè da mb0 a mb15)> carica questa parametrizzazione dell'hardware nella CPU.Probabilmente il numero che il tuo pannello operatore scrive in MW12 non è in codice BCD. Controlla come in allegato. Ciao Link al commento Condividi su altri siti More sharing options...
amed Inserita: 9 giugno 2011 Segnala Share Inserita: 9 giugno 2011 Controlla anche che la word con la costante di conteggio (MW12) sia usata solo dAL CONTETORE, cioè controlla che bit di questa word non siano utilizzati in altre parti del programma. Se la costante di conteggio non è scritta in odice BCD ma ci sono valori strani il PLC va in stop.Il numero massimo che puoi trovare in una "tetrade" è "1001" che corrisponde a 9 nel nostro decimale. Le combinazioni di bit "1010" o "1011" o "1100 o "1101"o "1110" o "1111" sono sbagliate perchè non previste nel codice BCD.BCD significa che ogni cifra decimale è codificata in una tetrade (4 bit) binaria:958 in decimale, in BCD diventa 1001 0101 1000Ciao Link al commento Condividi su altri siti More sharing options...
batta Inserita: 9 giugno 2011 Segnala Share Inserita: 9 giugno 2011 Come ti è già stato detto, il valore di preset deve essere in formato BCD e deve essere compreso tra 0 e 999.O imposti il pannello operatore in modo che scriva direttamente il valore in BCD (scelta più logica), oppure converti il valore nel PLC con l'istruzione ITB.Va bene che è la prima volta che utilizzi Siemens, ma non ti puoi arenare su una cosa così banale. Link al commento Condividi su altri siti More sharing options...
batta Inserita: 9 giugno 2011 Segnala Share Inserita: 9 giugno 2011 Altra soluzione (che io reputo migliore, visto che detesto i contatori di Step7), è costruirsi una piccola e semplice funzione da utilizzare come contatore.Crea nella cartella "Sorgenti" del tuo progetto una nuova Sorgente AWL. Copia il codice che segue, salva e compila.ATTENZIONE!!! Con la compilazione viene generata una nuova FC116. Se esiste già una FC116 questa verrà inesorabilmente sovrascritta.Puoi cambiare il numero della FC generata modificando semplicemente il numero nella prima riga del codice sorgente.FUNCTION FC116 : VOID TITLE =Contatore UP AUTHOR : batta VERSION : 0.1 VAR_INPUT CU : BOOL; //Ingresso conteggio UP RST : BOOL; //Reset PRST : INT; //Valore di preset END_VAR VAR_OUTPUT Q : BOOL; //Uscita ON con conteggio raggiunto END_VAR VAR_IN_OUT XOS : BOOL; //Aux per generazione fronte salita segnale CU CV : INT; //Valore corrente conteggio END_VAR BEGIN NETWORK TITLE = //N.B.: il controllo sul valore massimo del valore corrente //viene effettuato dopo l'eventuale incremento. //Il valore massimo utilizzabile come preset sarà //quindi 32767 - 1 = 32766. //Partendo da questo semplice esempio, è facile costruirsi //contatori DOWN e UP/DOWN. //Basta poi utilizzare variabili a 32 bit al posto delle variabili //a 16 bit di questo esempio, per elevare il limite di preset a 2147483646. U #RST; //Con presenza comando RESET, azzera conteggio L 0; SPB M000; U #CU; //Incrementa valore corrente con FP #XOS; //fronte salita segnale CU L #CV; SPBN M001; + 1; M000: T #CV; M001: L #PRST; //Attiva l'uscita se il valore di preset >=I ; //è stato raggiunto = #Q; SPBN M002; //Se il valore corrente ha superato il valore di preset, T #CV; //imposta valore corrente = preset M002: NOP 0; END_FUNCTIONOppure puoi utilizzare SFB0 (CTU), SFB1 (CTD) o SFB2 (CTUD), che trovi nelle librerie Siemens.Hanno però il difetto che richiedono l'utilizzo di un DB di istanza. Link al commento Condividi su altri siti More sharing options...
unlock Inserita: 10 giugno 2011 Autore Segnala Share Inserita: 10 giugno 2011 (modificato) A conoscere il linguaggio awl avrei fatto anch'io un contatore , ma pultroppo conosco Il C il VB ma non L 'awl......comunque grazie per l'aiuto.tra un settimana tornerò sul progetto che per ora è fermo per altri progetti e poi farò sapere Modificato: 10 giugno 2011 da unlock Link al commento Condividi su altri siti More sharing options...
batta Inserita: 12 giugno 2011 Segnala Share Inserita: 12 giugno 2011 Se conosci il C e il VB, non vedo dove sia la difficoltà ad imparare l'AWL.Inoltre, se intendi entrare nel mondo Siemens, conoscere l'AWL è indispensabile.Questo perché, anche se è vero che con la nuova piattaforma l'AWL verrà un po' messo in disparte a favore del linguaggio strutturato, io non prevedo una morte veloce dell'AWL.Inoltre, se scrivi un nuovo programma ti può anche non interessare la conoscenza dell'AWL, ma se devi intervenire su un programma già scritto in AWL...Comunque, se devi solo usare un contatore, se compili il mio esempio viene generata una funzione che, indipendentemente dal linguaggio con la quale è stata sviluppata, può tranquillamente essere utilizzata in KOP.Oppure, come già suggerito, puoi utilizzare SFB0 (CTU), SFB1 (CTD) o SFB2 (CTUD), che trovi nelle librerie Siemens.Se invece ti bastano le funzionalità del contatore "Z_RUECK", devi solo passargli il valore di preset in formato BCD. Link al commento Condividi su altri siti More sharing options...
unlock Inserita: 14 giugno 2011 Autore Segnala Share Inserita: 14 giugno 2011 (modificato) Sull AWL protesti aver ragione, il problema è che i manuali o libri dove poter capire le vari funzioni non sono chiari per niente.Comunque, continuate a dirmi di questo formato BCD (che so cosè) ,ma io sta MW12 nel PLC è dichiarata come WORD e di conseguenza anche nel pannello, non è sufficente ? la convesione no la fa il plc , da word a bcd ( che secondo mè è la stessa cosa )Per la ritenzione i merker ritentivi sono già impostati 16 ma se scrivo qualcosa nella MW12 e spengo e riacciendo il PLC perdo il valore......POSSIBLE?Non dovrò mica dichiararla invece che WORD INT Modificato: 14 giugno 2011 da unlock Link al commento Condividi su altri siti More sharing options...
amed Inserita: 14 giugno 2011 Segnala Share Inserita: 14 giugno 2011 Mw12 è una word. In essa sono scritti una combinazione di zeri ed uno. Se il dispositivo che legge il contenuto della word (la combinazione di bit) legge in codice BCD, il pannello deve scriverci in BCD. In genere i pannelli ti danno la possibilita di convertire il numero che tu digit sul display. Il numero digitato può essere scritto in MW12 in codice binario BCD, ma anche in codice bibario naturale (BIN). A te serve che il numero (combinazione di bit) inMW12 sia scritto in codice binario BCD. Se il pannello scrive solo in codice binario naturale allora devi far fare la conversione al programma nel plc. Cancella temporaneamente il contatore in modo che il PLC vada in RUN, realizza una VAT e dimmi che combinazione di bit vedi e che numero hai digitato sul pannello operatore.Ciao Link al commento Condividi su altri siti More sharing options...
amed Inserita: 14 giugno 2011 Segnala Share Inserita: 14 giugno 2011 Prova anche a scrivere al posto di MW12 in ZW del contatore, una costante fissa C#10 e vedi se il plc va in RUN. Ciao Link al commento Condividi su altri siti More sharing options...
unlock Inserita: 15 giugno 2011 Autore Segnala Share Inserita: 15 giugno 2011 ora nel contatore cè un valore costante e funge bene.....ora non ho il plc sotto mano per fare prove, ma settimana porx sarò dal cliente per finire il lavoro e all'ora farò dei test.Diciamo che sta MW12 che è word la devo convertire in bcd come posso fare ? Link al commento Condividi su altri siti More sharing options...
amed Inserita: 15 giugno 2011 Segnala Share Inserita: 15 giugno 2011 T faccio un paragone. La word come un foglio di carta. Nella word devi scrivere in BCD se vuoi che il contatore capisca, così come nel foglio devi scrivere in italiano, e non ad esempio in francese, se vuoi che io capisca. Ciao Link al commento Condividi su altri siti More sharing options...
amed Inserita: 15 giugno 2011 Segnala Share Inserita: 15 giugno 2011 Non e la word che devi convertire in BCD ma è il suo contenuto che deve essere scritto in BCD. Questa conversione la si può far fare al pannello operatore o al PLC. Ricorda che il numero massimo scrivibile deve essere limitato a 999.Se la conversione la devi far fare al PLC vedi questo esempio: Link al commento Condividi su altri siti More sharing options...
amed Inserita: 15 giugno 2011 Segnala Share Inserita: 15 giugno 2011 Nell'area Downloads/HMI di Forum ho messo due dispense che ti permettono di approfondire un pochino la programmazione degli HMI. Penso ti possano aiutare. Ciao Link al commento Condividi su altri siti More sharing options...
batta Inserita: 15 giugno 2011 Segnala Share Inserita: 15 giugno 2011 Diciamo che sta MW12 che è word la devo convertire in bcd come posso fare ?La risposta c'era già nel post #14.Per farlo in KOP, segui l'esempio di "Amed" dopo aver apportato una correzione.Nell'esempio infatti il risultato della conversione viene scritto nella variabile di origine, che viene quindi modificata, riletta con valore diverso alla prossima scansione, nuovamente convertita in BCD (ma questa volta partendo da un valore sbagliato), e così via.Appoggia il risultato della conversione ad un'altra variabile (anche locale), e vedrai che funziona.Per quanto riguarda la perdita del valore memorizzato al riavvio, non dovrebbe accadere.Comunque, è pratica comune utilizzare non MW ma variabili di DB. Link al commento Condividi su altri siti More sharing options...
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