yupanqui Inserito: 25 ottobre 2004 Segnala Inserito: 25 ottobre 2004 Buongiorno a tutti.Sono passato dai plc ge al siemens da poco quindi ho qualche problemino.....Qunado scrivevo i programmi col ge inizialmente facevo un reset di tutti i merker in modo da pulire eventuali bit che erano rimasti a 1 e quindi partire da una condizione nota.Volevo sapere se c'e' la possibilita' di resettare tutto anche con il siemens visto che non trovo altra soluzione che muovere 0 nelle varie word da resettare. Non c'e' un istruzione che resetta tutte le word in contemporanea??? o un certo numero di word da me prestabilito???Grazie,Silver.
STEU Inserita: 25 ottobre 2004 Segnala Inserita: 25 ottobre 2004 (modificato) Esiste un fc di sistema SFC21 che fa il tuo caso guarda nell'. dello step 7 o se devi cancellare una db c'è sfc23Comunque ti consiglio di dare uno sguardo agli sfc e fc standard che sono nel firmware della cpu ,ti possono aiutare a risolvere parecchi problemi come quello che stai affrontando ora. Modificato: 25 ottobre 2004 da STEU
Gianmario Pedrani Inserita: 25 ottobre 2004 Segnala Inserita: 25 ottobre 2004 Di solito al primo riavvio del plc tutti i merker sono a zero perche' non sono ritentivi senza corrente, a meno che non hai scelto nella configurazione ardware della cpu di mantenerli nel loro stato anche senza corrente, se entri nella configurazione ardware e metti tutto a zero allora anche i merker vanno a zero quando riavvii. Non e' la stessa cosa con idb, loro mantengono il valore che avevano, se li vuoi azzerare devi inserire la tua funzione di reset nell OB100 che viene eseguito prima di tutti i tuoi fc o fb all'avvio e solo per un ciclo di scansione. ciaooooooooooo
yupanqui Inserita: 25 ottobre 2004 Autore Segnala Inserita: 25 ottobre 2004 ok Grazie ragazzi ora do un occhiata a quello che avete detto.....X Gianmario Pedrani:Si infatti il problema lo incontro solo quando viene premuta l'emergenza a macchina gia' avviata.
Slims83 Inserita: 25 ottobre 2004 Segnala Inserita: 25 ottobre 2004 Nelle proprietà dei DB li puoi impostare non ritentivi...
yupanqui Inserita: 27 ottobre 2004 Autore Segnala Inserita: 27 ottobre 2004 Ragazzi sto' dando un occhiata al blocco sfc21 "fill" ma non capisco come funziona.ho scritto:CALL "FILL"BVAL := "LA MIA WORD CHE STA PERENNEMENTE A ZERO"RET_VAL := "RETURN_VAL"BLK := "DEVO RESETTARE LE WORD DALLA 20 ALLA 800"non capisco come faccio ad indicare al blocco la quantita' di word che devo resettare o riempire "FILL"Qualcuno puo' farmi un esempio???Grazie,Silver.
Gianmario Pedrani Inserita: 27 ottobre 2004 Segnala Inserita: 27 ottobre 2004 CALL SFC 21 BVAL :=MW0 word contenente il valore da trasverire RET_VAL:=MW20 se trova un errore lo mette li BLK :=P#DB1.DBX 20.0 WORD 780 db da azzerare partendo dall word20 per 780 word ciaoooooooo
yupanqui Inserita: 27 ottobre 2004 Autore Segnala Inserita: 27 ottobre 2004 Grazie Gianmario Pedrani.Ora e' tutto chiaro......Dalla guida non riuscivo a capire... Sai come' e' la prima esperienza col siemens!!!Ciao.
Gianmario Pedrani Inserita: 27 ottobre 2004 Segnala Inserita: 27 ottobre 2004 vedrai che poi ti piacera'
STEU Inserita: 28 ottobre 2004 Segnala Inserita: 28 ottobre 2004 Per gian mario pedraniper non confondere le idee a silver novizio Siemens non dovresti postare degli errorini , al posto di word deve scrivere byte nel puntatore oppure se vuole a lavora a word al posto di 780 deve scrivere 390, per informazionE il puntatore di destinazione deve essere:P#DB1.DBX 20.0 BYTE 780 OPPUREP#DB1.DBX 20.0 WORD 390OPPUREP#DB1.DBX 20.0 DWORD 195
Gianmario Pedrani Inserita: 28 ottobre 2004 Segnala Inserita: 28 ottobre 2004 Hai ragione, mi sono accortio ora, anche perche lo avevo fatto velocemente ciaoooooooooooo
yupanqui Inserita: 2 novembre 2004 Autore Segnala Inserita: 2 novembre 2004 Ei ragazzi fatemi capire....Ragioniamo a word:P#DB1.DBX 20.0 WORD 390Considerando che parto dalla word 20,perche' devo scrivere 390 se voglio resettare fino alla word 800????PS: non ha molta importanza visto che praticamente non uso le word piu' in alto della 800 quindi funzionerebbe anche come ha scritto Gianmario.... ma vorrei capire anche io quello che dice STEU.Grazie,Silver.
Slims83 Inserita: 2 novembre 2004 Segnala Inserita: 2 novembre 2004 perchè partendo da DB1.DBX 20.0 e cancellando 390 word cancelli questo:DB1.DBW20 // Prima wordDB1.DBW22 // Seconda wordDB1.DBW24 // Terza wordDB1.DBW26 // Quarta word....DB1.DBW800 // 390° word
STEU Inserita: 2 novembre 2004 Segnala Inserita: 2 novembre 2004 Con il puntatore dai il bit di partenza DB1.DB20.0Poi gli dici l'unità con cui lavori: a byte (8 bit), word (16 bit), dword(32 bit)poi la quantità di unità,Considera che Siemens lavora a byte quindi se hai deciso byte devi mettere (byte finale - byte iniziale) = (800-20)=780 e fino a qui è tutto chiaro.Se hai deciso di lavorare a word (quindi una word è "lunga" il doppio del byte) devi dividere per 2 infatti infatti 780 byte * 8 bit =6240 bit quindi se lavori a word deduci facilmente che:6240 bit = 390 word * 16 bit quindi vai a cancellare tutti i bit solamente con 390 word contro 780 byte perchè la word è lunga il doppio del byteda cui si intuisce che se lavori con doppie word ( 32 bit)6240 bit =195 dword *32 bit utilizzi solo 195 dword la metà di quelle che utilizzeresti se usassi le word un quarto di quelle che utilizzeresti se usassi i bite.Chiaro?
yupanqui Inserita: 5 novembre 2004 Autore Segnala Inserita: 5 novembre 2004 scusate ragazzi ho letto le risposte solo ora....Siete stati chiarissimi ora e' tutto ok.Grazie,Silver.
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