Vai al contenuto
PLC Forum


Linguaggio STL


Messaggi consigliati

Inserito:

Salve ragazzi, non so se  sfugge a me qualcosa oppure e' il mio S7 comunque vorrei chiedervi questo:

Il seguente codice

O(

O(

A  I1. O

A  I 1.1

A  I1. 2

A  I 1.3

)

=  Q 1.O

dovrebbe essere uguale a quest'altro? 

O((

A  I1. O

A  I 1.0

O(

A  I1. 2

A  I 1.3

)

=  Q 1.O

ovvero dare due coppie di AND(I1. 0 con I 1.1) ed (I 1.2 con I 1.3) in OR  tra loro . 

Questo mi si verifica solo con il secondo codice. 

 


Inserita:

Non è Uguale.

 

O(

O(

A  I1. O

A  I 1.1

A  I1. 2

A  I 1.3

)

=  Q 1.O

 

I1.0 e I1.1 sono in parallelo. I1.2 e I1.3 sono tutte e due in serie al primo parallelo

 

 

Inserita:

Confermo: non sono equivalenti.

 

Inoltre, il secondo caso è sintatticamente non corretto: ne' il 300, ne' il 1500 ti accettano le due parentesi unite.
Se la parentesi in più è solo un errore di scrittura (probabile, visto che ci troviamo con 3 parentesi aperte e 2 chiuse, allora in ladder sarebbe come segue:

immagine.png.3752aa508a334c71c868ccf45a0a37a0.png

 

Il primo caso, invece, anche se sintatticamente corretto, sembra essere solo una parte di un segmento. Solo se c'è qualcosa prima quegli OR hanno un senso.

 

2 ore fa, 84paolo ha scritto:

I1.0 e I1.1 sono in parallelo. I1.2 e I1.3 sono tutte e due in serie al primo parallelo

Guarda con attenzione. È l'AND tra I1.0 ed I1.1 ad essere posto in OR con qualcosa che viene prima (e che non c'è), e non i due ingressi in OR tra di loro.
Poi, si aggiunge l'AND di I1.2 e I1.3.

 

In pratica, se non c'è nulla prima di queste istruzioni, è come scrivere:

A I0.1

A I1.1

A I1.2

A I1.3

= Q1.0

 

Inserita:

Grazie per il vostro intervento. 

Ho fatto questo esempio partendo da un altro  e cioe':

A(

A(

O i1. 0

O i1. 1

)

O I 1.2

O I 1.3

)

= Q 1.0    che e' uguale questa volta  al seguente:

A(

O i1. 0

O i1. 1

)

A(

O I 1.2

O I 1.3

)

= Q 1.0. 

Allora mi sono chiesto perché la sintassi funziona con le AND  A( A( ,,,, ,, ),,,,,,,, ) e non funziona con le OR   O( O(,,,,,),,,,,,)  ? 

 

 

Inserita:

i due esempi che hai postato per ultimi non sono uguali

Inserita:

Concordo con Paolo. È come ha rappresentato in ladder.
Nel primo esempio ci sono delle parentesi e degli AND inutili, che servono solo a fare confusione.

 

Ma da dove vengono questi esempi di segmenti sballati?
E perché questo interesse per l'AWL, che la stessa Siemens sta accantonando?
Se devi lavorare sui 300, è praticamente indispensabile perché ti troverai molti programmi scritti in AWL.
Se devi lavorare con le nuove CPU 1200/1500, dedica più tempo al testo strutturato (quello che Siemens chiama SCL).

Inserita:

Si anche io convertendo in Kop I due esempi ottengo lo stesso risultato di Paolo. La stessa sintassi del tipo                         A(   

           A(    

          ............. 

          ............. 

            )

         .............. 

         .............. 

           ) 

        = Q 1.0

si trova nei programmi della mia azienda realizzati da programmatori tedeschi ed e' da qui che nasce la mia curiosita dopo aver anche quardato questo video dal minuto 15 e 42 sec. al fine di chiarire I dubbi.

           

          

 

Nella mia azienda abbiamo circa il 30% del programma in STL(Awl) con CPU famiglia 300. 

Inserita:

Certo che se quei segmeni sono stati scritti dai tedeschi, i miei dubbi sul fatto che la precisione teutonica sia solo un falso mito diventano certezza.
Ad essere onesto, è già certezza, e questa è solo una ulteriore conferma 😉

 

Inserita:

Relativamente al video e alla conversione da AWL a ladder, non ho analizzato se è corretta (ma presumo di sì).
Tu però, nei tuoi esempi, avevi preso solo una parte di questi segmenti, e non il segmento completo.

Che poi, c'è da dire una cosa: io ho utilizzato molto l'AWL, e mi ci sono sempre trovato bene. Ma scrivere in AWL segmenti come quello del video, significa solo volersi fare del male.
I segmenti in AWL, per essere facilmente comprensibili, devono essere il più semplici e lineari possibili.
Per esempio, lo stesso segmento si può spezzare in più parti, appoggiando i singoli risultati a variabili locali, ed utilizzando queste variabili locali per il risultato finale.
Aggiungere file di parentesi serve solo a rendere il segmento incomprensibile.

Inserita:

 

 

           

          

 

Inserita:

Si  infatti il mio era solo un esempio, ho copiato la parte del programma dove avevo dubbi anche se con indirizzi a caso, solo per capire se le due sintassi davano in Ladder lo stesso risultato. Concordo sul giudizio del linguaggio Awl, aggiungerei anche "professionale" . Io sono un elettrico, ero abituato al kop ma l'awl anche se ho cominciato a studiarlo per necessita', mi piace sempre di piu'. 

Grazie ancora per il vostro intervento. 

Inserita:
3 ore fa, Anikare ha scritto:

ma l'awl anche se ho cominciato a studiarlo per necessita', mi piace sempre di piu'. 

Non ti ci affezionare troppo. Sarà usato sempre meno.
Anzi, consiglio anche a te di utilizzarlo per i programmi esistenti, ma di evitarlo nei programmi nuovi.
U po' dispiace anche a me, perché, in alcuni casi, è più pratico e più immediato anche del testo strutturato. Ma, prima o poi, sparirà.

 

4 ore fa, Anikare ha scritto:

ho copiato la parte del programma dove avevo dubbi anche se con indirizzi a caso

Il problema non erano gli indirizzi presi a caso, ma il fatto che avevi tagliato una parte del segmento, stravolgendone completamente la logica.

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...