luca_82 Inserito: 28 febbraio 2015 Segnala Share Inserito: 28 febbraio 2015 Ciao a tutti, avrei bisogno di un consiglio da voi che sicuramente avete più esperienza di me!! Ho sempre programmato l'S-7 1200 e di fatto in KOP, ora dovrei fare una serie di lavori con l'S-7 1200 che di fatto è una 300. Quello che ho capito è che i linguaggi testuali SCL e AWL ti permettono molto di più, premesso che dovrei partire da zero con entrambi ne vorrei imparare almeno per ora solamente uno dei due, sapete dirmi quale dei due è migliore ? Sicuramente l'AWL è più datato mentre l'SCL è nuovo, converrebbe pensare già a qualcosa che guardi avanti? grazie a tutti!! Link al commento Condividi su altri siti More sharing options...
batta Inserita: 28 febbraio 2015 Segnala Share Inserita: 28 febbraio 2015 (modificato) con l'S-7 1200 che di fatto è una 300 Non capisco: devi programmare il 1200 o il 300? Se devi programmare il 1200, la scelta non si pone: questa CPU non si può programmare in KO e in SCL, ma non in AWL. Se devi programmare il 300, meglio sarebbe imparare sia AWL che SCL. Io non vedo questi due linguaggi come alternativi. Per esempio, se devi operare con i puntatori, devi usare l'AWL. L'SCL è molto versatile se devi fare cicli FOR NEXT, se devi operare su array, e per moltissime altre cose. Non è il pià adatto, a mio avviso, per logiche booleane. Diciamo che, ad oggi, si trovano sempre più programmi in linguaggio strutturato (SCL). Modificato: 28 febbraio 2015 da batta Link al commento Condividi su altri siti More sharing options...
luca_82 Inserita: 28 febbraio 2015 Autore Segnala Share Inserita: 28 febbraio 2015 Scusami Batta,ho sbagliato a scrivere, devo programmare l'IM151-8,che quindi è un 300... Quindi da come scrivi è abbastanza comune trovare programmi scritti con diversi linguaggi Nello stesso progetto...? Perdonami per la domanda banale ma fin ora purtroppo ho visto solo i miei di programmi!! mi sono posto il problema perché devo da una word fare una codifica binaria di 8 bit che non corrispondono ad un byte,e ho pensato che senza usare il KOP sarei riuscito meglio..... Link al commento Condividi su altri siti More sharing options...
batta Inserita: 1 marzo 2015 Segnala Share Inserita: 1 marzo 2015 (modificato) Quindi da come scrivi è abbastanza comune trovare programmi scritti con diversi linguaggi Nello stesso progetto...? Certo. E questo è un bene, perché ti permette di utilizzare il linguaggio che meglio si presta alla soluzione di ogni singolo problema. Nelle cpu 300/400/1500 puoi anche usare KOP e l'AWL anche all'interno dello stesso blocco. mi sono posto il problema perché devo da una word fare una codifica binaria di 8 bit che non corrispondono ad un byte,e ho pensato che senza usare il KOP sarei riuscito meglio..... Probabilmente è così ma, se non descrivi meglio quello che devi fare, dare una risposta precisa è roba da indovini, non da tecnici. Andando ad intuito, credo potresti fare uno shift a destra della word di un numero di bit tale da ritrovare i bit che ti interessano tutti nel byte di destra. Modificato: 1 marzo 2015 da batta Link al commento Condividi su altri siti More sharing options...
Bizz Inserita: 1 marzo 2015 Segnala Share Inserita: 1 marzo 2015 Un mio consiglio, lascia perdere l'AWL meglio SCL almeno questo lo trovi anche su altri linguaggi di programmazione ed è più comprensibille del AWL. Inviato dall'app. Mobile di PLC Forum da A0001 Link al commento Condividi su altri siti More sharing options...
Bizz Inserita: 1 marzo 2015 Segnala Share Inserita: 1 marzo 2015 Un mio consiglio, lascia perdere l'AWL meglio SCL almeno questo lo trovi anche su altri linguaggi di programmazione ed è più comprensibille del AWL. Inviato dall'app. Mobile di PLC Forum da A0001 Link al commento Condividi su altri siti More sharing options...
batta Inserita: 1 marzo 2015 Segnala Share Inserita: 1 marzo 2015 Se, come scrivi nel primo post, vuoi per forza scegliere tra AWL ed SCL, e se ti interessa mettere le mani solo suoi tuoi programmi, ti consiglio anch'io di scegliere SCL. Ma se pensi che dovrai mettere le mani anche su programmi scritti da altri, dovrai sicuramente fare i conti con l'AWL. Secondo me scegliere di non usare uno dei linguaggi permessi, significa autolimitarsi. Inoltre non è vero che l'AWL è difficile. Si scrivono le istruzioni una alla volta, così come vengono eseguite dal processore. E, anche se a molti non interessa, nei PLC serie 300/400 è il linguaggio che ti permettere di ottenere il codice più efficiente. Link al commento Condividi su altri siti More sharing options...
luca_82 Inserita: 1 marzo 2015 Autore Segnala Share Inserita: 1 marzo 2015 Effettivamente Batta conoscere un solo linguaggio è autolimitarsi e non mi piace, ma non vorrei essere presuntuoso e pensare di imparare insieme sia AWL che SCL, farei una gran confusione credo, e proverò a farlo uno alla volta. Testualmente sono abituato con il linguaggio dei robot che è molto simile all'SCL, ma vedo il Plc che gira ciclicamente come un qualcosa del tutto diverso rispetto d un robot antropomorfo. Quello che devo fare è gestire tale robot da remoto, per caricare il programma imposto un valore decimale in formato binario in una QB che il robot ha come ingressi, a seconda del valore che ha quando gli do il segnale di STROBE carica il giusto programma. Per verificare se l'operazione si è svolta correttamente lui mi dà 8 bit all'interno delle due word che ho nell'interfaccia tra robot e Plc. Per ora scrivo solo la Word che mi interessa: DO1 DO2 DO3 DO4 DO5 DO6 DO7 DO8 DO9 DO10 DO11 D12 DO13 DO14 DO15 DO16 segnali robot I11.0 I11.1 I11.2 I11.3 I11.4 I11.5 I11.6 I11.7 I12.0 I12.1 I12.2 I12.3 I12.4 I12.5 I12.6 I12.7 ingressi Plc Lui imposta dalla DO3 alla DO10 (I11.2 a I12.1) lo stesso valore che io ho dato sulla QB in uscita, e devo quindi fare questo controllo per verificare che l'operazione di carico si sia svolta correttamente. Per fare questo pensavo in AWL di mettere la IW11 nell'accumulatore: L IW11 A questo punto con l'istruzione TAW inverto i due byte nell'accumulatore per dargli il giusto peso e shifto di due bit verso destra, se non erro gli 8 bit che mi interessano dovrebbero rimanere nell'accumulatore ACCU1-L-L. Nascondo poi il primo Byte ACCU1-L-H mettendo il tutto in and con un'altra word,visto che quei segnali potrebbero essere alti: UW W#16#00FF A questo punto trasferisco il tutto nella MW10 che vado poi a paragonare alla QB che avevo in uscita. Questa è la soluzione che ho pensato, domani proverò a buttarla giù in AWL e vedrò se funziona.... Spero di essere riuscito a farti capire la mia applicazione, ed ogni soluzione per semplificare il tutto è ben accetta!! :smile: Link al commento Condividi su altri siti More sharing options...
batta Inserita: 1 marzo 2015 Segnala Share Inserita: 1 marzo 2015 Caricando IW11 il byte IB11 viene messo a sinistra, e il byte IB12 a destra. Quindi non devi scambiare i byte, e devi fare uno shift a destra di 6 bit. Giusta la mascheratura con UW W#16#00FF Poi meglio trasferire in MB10 e non in MW10. Anzi, se ti serve solo il confronto con la QB di partenza, non c'è nemmeno bisogno di appoggiare il dato a MB10. Una cosa di questo tipo, secondo me, è più facile scriverla in AWL che in SCL. L IW10 SRW 6 L W#16#00FF UW L QBnn ==I = Ok Link al commento Condividi su altri siti More sharing options...
luca_82 Inserita: 1 marzo 2015 Autore Segnala Share Inserita: 1 marzo 2015 Scusami Batta,magari faccio confusione io ma qualcosa non mi torna... Se io non inverto i byte e shifto semplicemente di sei posizioni perdo l'ingresso %I12.0,%I12.1 e %I12.2 e mi ritrovo nei bit meno significativi della byte l'%I12.6 e %I12.7. Tanto se non erro lui caricando IW11 nell'accumulatore mette così i bit nel byte: %I11.7-%I11.6-%I11.5-%I11.4-%I11.3-%I11.2-%I11.1-%I11.0-%I12.7-%I11.6-%I12.5-%I12.4-%I12.3-%I12.2-%I12.1-%I12.0 La byte che dovrei leggere io è la seguente: %I12.1-%I12.0-%I11.7-%I11.6-%I11.5-%I11.4-%I11.3-%I11.2-%I11.1-%I11.0 O magari sto facendo confusione io... Link al commento Condividi su altri siti More sharing options...
batta Inserita: 1 marzo 2015 Segnala Share Inserita: 1 marzo 2015 Sì, hai ragione. Ho letto troppo in fretta il post e mi sono banalmente lasciato ingannare dall'ordine inverso dei bit (con il bit 0 a sx e il bit 7 a dx). Quindi lo scambio dei byte ti serve. Il codice potrebbe essere il seguente: L IW11 TAW SRW 2 L W#16#00FF UW l QBnn ==I = Ok Dopo l'AND WORD nell'accumulatore, che è sempre a 32 bit, ti trovi i tre byte a sinistra tutti a zero, e nel byte a destra I12.1-I12.0-I11.7-I11.6-I11.5-I11.4-I11.3-I11.2 Link al commento Condividi su altri siti More sharing options...
luca_82 Inserita: 1 marzo 2015 Autore Segnala Share Inserita: 1 marzo 2015 Domani provo a scriverlo,ma senza dubbio dovrebbe funzionare!!! Grazie ancora per l'aiuto!! 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