renluis Inserito: 6 maggio 2004 Segnala Inserito: 6 maggio 2004 Salve Scusate ma sto imparando lo step7 su S7-315-2dp Trovo delle grosse differenze tra il KOP e AWL, in particolare sul comando CMP ==I.in AWL scrivo L MW 100 L MW 200 ==I = A 2.0e con gli stessi valori posso usare il KOPse invece in AWL scrivo L MB 100 L MB 200 ==I = A 2.0il compilatore KOP non mi accetta i valori in ingresso.Mi sono perso qualche passaggio? devo inserire in ingresso i valori con qualche formato particolare?saluti renluis
mbiella Inserita: 6 maggio 2004 Segnala Inserita: 6 maggio 2004 L'istruzione CMP ==I confronta due numeri interi, che per definizione sono a 16 bit e quindi sono due Word, non due byte.Quindi una variabile INT deve essere necesariamente almeno una MW.
renluis Inserita: 6 maggio 2004 Autore Segnala Inserita: 6 maggio 2004 Ok ma come mai in AWL funziona e in KOP no?ciaorenluis
Cristina Fantoni Inserita: 6 maggio 2004 Segnala Inserita: 6 maggio 2004 Perche', come dice giustamente mbiella, ina variabile INT è necessariamente una word -16 bit-, quindi MW, se tu utilizzi una variabile MB è un byte -8 bit-, quindi non puo' funzionare, ma solo perche' il tipo di variabile byte non e' corretto per un INT.Spero di essere stata chiara.
STEU Inserita: 6 maggio 2004 Segnala Inserita: 6 maggio 2004 In KOP non funziona perchè l'istruzione è un controllo tra due numeri a 16 bit quindi tu DEVI introdurre 2 variabili a 16 bit, in quanto il blocchetto di confronto va visto come una funzione che accetta solo valori a 16 bit.In AWL puoi scrivere quello che vuoi in quanto tu carichi il primo accumulatore , poi con un'altra istruzione l sposti il primo accumulatore nel secondo e carichi il primo , poi confronti i 2 accumulatori.Anche se può sembrare strano programmare in AWL o in kop e fup non è proprio la stessa cosa.In AWL tu puoi scrivereL MD 100L mb 200==I = A 2.0Il PLC accetta tutto però capisci che un confronto come quello scritto sopra non ha molto senso , il KOP e il FUP evita il poter compiere questi errori.Anche se un po' contorto penso sia chiaro quello che ti ho spiegato.Ciao Steu
renluis Inserita: 6 maggio 2004 Autore Segnala Inserita: 6 maggio 2004 intanto grazie a cristina, a steu, e a mbiellaMa allora come faccio a confrontare in KOP due variabili MB a -8 bit- ?Grazierenluis
STEU Inserita: 6 maggio 2004 Segnala Inserita: 6 maggio 2004 La tua domanda è lecita devi apoggiare i tuoi byte a delle word (magari locali) e poi fare il confronto tra valori a 16 bit.Ho fatto delle prove , ma nè nell'. e nel catalogo dello step 7 esistono "blocchetti" di confronto tra 2 variabili in byte.ciaoSteu
rddiego Inserita: 6 maggio 2004 Segnala Inserita: 6 maggio 2004 renluis, purtroppo devi sapere che Siemens deve in qualche modo ostacolarti la programmazione se no non ci si diverte. Quello che puoi fare è scrivertelo in AWL. Oppure se sei sicuro di non utilizzare mai il byte precedente (e quindi sia sempre = 0), utilizza tranquillamente il KOP comparando due word, ma fai attenzione a ciò che ti dico:Esempio... tu vuoi comparare due byte MB10 e MB20 ed attivare una bobina M0.0in AWL scriviL MB10L MB20==I=M0.0in KOP non puoi utilizzare i byte, ma solo word quindi scriverai nel blocco CMP==IMW9MW19solo se sei sicuro che MB9 e MB19 siano =0 e che non utilizzi mai le word MW8 e MW18In questo modo se l'AWL ti da fastidio puoi ottenere lo stesso risultato anche in KOPTutte le operazioni che vorrai eseguire sui byte MB10 e MB20 dovrai in realtà eseguirle sulle word MW9 e MW19La spiegazione è semplice e risiede nel fatto che la word MW9 è composta dai byte MB9 + MB10Se per esempio tu caricassi il valore 211 nella word MW9 ti accorgerai che MB9 = 0 e MB10 = 211E' solo un trucco (inutile a mio parere), ma se proprio vuoi il KOP!!!Io ti consiglierei di imparare bene l'AWL e prenderci bene la mano.Tieni conto che altri PLC non hanno questi tipi di problemi: uno su tutti Allen Bradley
TRUNC Inserita: 6 maggio 2004 Segnala Inserita: 6 maggio 2004 Siemens deve in qualche modo ostacolarti la programmazione se no non ci si diverteFinalmente ho capito il perchè del successo di Siemens... Scherzi a parte, qualche volta, lavorando con Siemens, forte dell'esperienza con altri sistemi, mi capita di pensare davvero che in giro ci sia un sacco di gente a cui piace complicarsi (... e tanto...) la vita. Beh, che devo dirvi.... Buon divertimento, io ve lo lascio tutto!!!
rguaresc Inserita: 6 maggio 2004 Segnala Inserita: 6 maggio 2004 Puoi anche aggirare in KOP il controllo del tipo di operando.Apri il blocco, poi apri: Strumenti\Impostazioni\KOP FUP e deseleziona "Controllo tipo di operandi".
STEU Inserita: 6 maggio 2004 Segnala Inserita: 6 maggio 2004 grazie rguaresc funziona benissimo non ci avevo pensatociaoSteu
beppeconti Inserita: 6 maggio 2004 Segnala Inserita: 6 maggio 2004 A parte le valide soluzioni che ti sono state proposte non capisco perchè vuoi per forza fare tutto in KOP, visto i limiti che il KOP Siemens ha.In un blocco ci puoi far stare sia segmenti in KOP che segmenti in AWL, il mio consiglio è di scrivere le istruzioni base (logica a contatti) in KOP, le altre in AWL.CIAO
renluis Inserita: 6 maggio 2004 Autore Segnala Inserita: 6 maggio 2004 x beppecontiNon è che io voglia assolutamente usare il KOP, siccome sto imparando e ho trovato questo problema, pensavo di aver sbagliato qualcosa io; e non pensavo certo ad una limitazione del KOPperò a questo punto mi sorgono altri dubbi se ho una lista cosìL MB 100L MB 101==I = A 2.0nel confronto entrano in campo MB 99 e MB 102Ringrazio ancora tutti i partecipanti alla discussione che finora è stata molto esaustiva e costruttivarenalui
rddiego Inserita: 6 maggio 2004 Segnala Inserita: 6 maggio 2004 Noooo, non volevo confonderti col mio giochetto.... non ti sbagliare coi tipi di variabili che usi.Se scrivi variabili MB scrivi sempre e solo queste, o meglio modificherai gli 8 bit che le compongonoSe scrivi variabili MW scriverai entrambi i byte che le compongono e quindi gli 8 + 8 bit.con la tua istruzioneL MB 100L MB 101==I = A 2.0non entra in gioco nessun altro byte se non quello da te dichiaratoCon questa istruzione invece inizia il casino (chiamato Siemens)L MW 100L MW 101==I = A 2.0in questo caso si mettono a confronto MB100 + MB101 == MB101 + MB102e come puoi ben capire è un disastro che sarebbe sempre da evitare (salvo vere e proprie necessità)
Cristina Fantoni Inserita: 6 maggio 2004 Segnala Inserita: 6 maggio 2004 Con questa istruzione invece inizia il casino (chiamato Siemens)L MW 100L MW 101==I = A 2.0in questo caso si mettono a confronto MB100 + MB101 == MB101 + MB102e come puoi ben capire è un disastro che sarebbe sempre da evitare (salvo vere e proprie necessità)A prescindere dal fatto che concordo che l'U.C.A.S. (Ufficio Complicazione Affari Semplici) di Siemens e' efficientissimo, e ci se ne rende conto quando si devono fare operazioni particolari con le analogiche, e' pero' vero che la "regola di sovrapposizione" e' valida anche in altri tipi di PLC, per esempio, in Schneider:MW0 > MB0 + MB1 MW1 > MB2 + MB3 --- MD(F)0 > MW0 + MW1 MD(F)1 > MW1 + MW2 ---Quindi anche qui bisogna stare attenti: quando usi una MD(i) o un MF(i) si occupano sia la MW(i) che la MW(i+1), altro discorso e' per la sovrapposizione dei byte...
renluis Inserita: 6 maggio 2004 Autore Segnala Inserita: 6 maggio 2004 Ringrazio tutti ancora Le spiegazioni che mi avete dato sono illuminanti cercherò di utilizzare solo AWL, e nel frattempo spero che qualche dirigente siemens commissioni la revisione dei mauali step 7 a qualcuno come voi, in modo da avere spiegazioni ed esempi comprensibili anche a chi si avvicina a questo mondo.Salutoni renluis
walterword Inserita: 9 maggio 2004 Segnala Inserita: 9 maggio 2004 si puo anche utilizzare i byte , ppartendo dall'indirizzo a word , basta mascherare il byte che non interessa prima delle operazioni e dopo , cioe al trasferimento (move).ciao
Stefano.86 Inserita: 30 ottobre 2015 Segnala Inserita: 30 ottobre 2015 (modificato) Ciao a tutti.so che la discussione è ormai datata ma da poco ho avuto un problema simile che volevo condividere...Allora, ho cominciato a scrivere, in FUP con step 7 v5.5.0.0 (2010) e ho scritto regolarmente (ATTENZIONE: con l'operando equivalente EQ_I della cartella operazioni di confronto) LB1 --| EQI |0 --| > |--- |= M20.0| e mi ha accettato, la scritta in byte...A questo punto, contento del risultato (provato anche sulla CPU) apro il progetto con step 7, v 5.5 + SP1...E lo trovo scritto solo in AWL senza possibilità di convertirlo!!!provo a riscriverlo ma mi da, come nel caso citato, errore di sintassi se provo a dargli il byte (sia diretto che simbolico).inoltre, il blocco di comparazione ora è scritto CMP, non più EQ,GT o NE (a seconda della comparazione).ho provato a portare s7 a sp4 pensando ad un errore, ma poi leggendo qui ho capito che è tutto "regolare"...non credo che la cosa possa essere d'aiuto, ma mi sembrava utile scriverla per casi futuri..un saluto!! Modificato: 30 ottobre 2015 da Stefano.86
Giuseppe Signorella Inserita: 30 ottobre 2015 Segnala Inserita: 30 ottobre 2015 Ciao Stefano,Effettivamente la discussione è alquanto vetusta.Accodarsi ad una discussione esistente, oltre a creare confusione, è anche contro il regolamento del forum.Ti conviene aprirne una nuova tutta tua in quanto questa discussione è chiusa.Buon proseguimento. ********************DISCUSSIONE CHIUSA************************
Messaggi consigliati