Jump to content
PLC Forum

alemini

traduzione parentesi da awl a kop

Recommended Posts

alemini

buona sera a tutti, dovrei fare una piccola modifica ad un programma, avrei il seguente codice che mi attiva il motore M2130.6

non capisco se siano 3 contatti aperti in parallelo seguiti da due chiusi sempre in parallelo o altro?

O m2130.0
O m2130.1
O m2130.3
AN(
O m2130.4
O m2130.5
)
= m2130.6
 

grazie mille a chi risponderà

Link to post
Share on other sites

TravelMen

Ciao se non sbaglio questa è la traduzione:

 

   m2130.0      m2130.4          m2130.6
----|  |----------|/|---------------()----
               |       |
   m2130.1     |m2130.5|
----|  |----------|/|---
               | 
  m2130.3      |
----|  |-------

saluti

Link to post
Share on other sites
alemini

grazie, come pensavo purtroppo se lo riproducevo in ladder e lo convertivo in (stl) awl mi dava:

      A(    
      O     M   2130.0
      O     M   2130.1
      O     M   2130.3
      )     
      A(    
      ON    M   2130.4
      ON    M   2130.5
      )     
      =     M   2130.6
 

Link to post
Share on other sites
batta

La conversione corretta in ladder è quella indicata da "Il Toby".

Link to post
Share on other sites
max.bocca

Quando ho dubbi... Provo a scrivere il awl il rug e poi lo rivedo in modo ...

Per fare ciò uso micro win del 200...

Link to post
Share on other sites
batta
3 ore fa, max.bocca ha scritto:

Quando ho dubbi... Provo a scrivere il awl il rug e poi lo rivedo in modo

Il problema è la parentesi

AN(
O m2130.4
O m2130.5
)

che non viene convertita in ladder.

 

Che poi, a mio avviso, nasce da un modo di ragionare non sbagliato, ma un po' contorto, perché mi pare più chiaro se scrivo:
O m2130.0
O m2130.1
O m2130.3
AN m2130.4
AN m2130.5
= m2130.6

 

Perché il 300 lo possa convertire in ladder si devono aggiungere un paio di parentesi, e diventa:

A(

O m2130.0
O m2130.1
O m2130.3

)
AN m2130.4
AN m2130.5

= m2130.6

 

Sicuramente più logico ed intuitivo della versione originale.

Questo dimostra che, almeno a volte, il problema non è l'AWL di difficile comprensione, ma è come le cose vengono scritte in AWL che rendono difficile la comprensione.

Link to post
Share on other sites
alemini
3 ore fa, batta ha scritto:

Il problema è la parentesi

AN(
O m2130.4
O m2130.5
)

che non viene convertita in ladder.

 

Che poi, a mio avviso, nasce da un modo di ragionare non sbagliato, ma un po' contorto, perché mi pare più chiaro se scrivo:
O m2130.0
O m2130.1
O m2130.3
AN m2130.4
AN m2130.5
= m2130.6

 

Perché il 300 lo possa convertire in ladder si devono aggiungere un paio di parentesi, e diventa:

A(

O m2130.0
O m2130.1
O m2130.3

)
AN m2130.4
AN m2130.5

= m2130.6

 

Sicuramente più logico ed intuitivo della versione originale.

Questo dimostra che, almeno a volte, il problema non è l'AWL di difficile comprensione, ma è come le cose vengono scritte in AWL che rendono difficile la comprensione.

grazie mille sei stato molto esaustivo, sul capitolo parentesi siemens poteva spendere anche due parole in più con due esempi in più sul manuale cosicché anche chi è abituato a leggere il ladder ci possa arrivare senza sentirsi stupido. grazie mille a tutti ancora 

Link to post
Share on other sites
batta
3 minuti fa, alemini ha scritto:

sul capitolo parentesi siemens poteva spendere anche due parole in più con due esempi in più sul manuale

Ma non è che ci siano tanto parole da spendere, le parentesi sono parentesi, ed hanno lo stesso significato che hanno in una espressione algebrica.

Il fatto è che

AN(

O...

O...

)

 

non c'è modo di convertirlo in ladder.

Link to post
Share on other sites
TravelMen

Grazie Batta, potresti spiegare da quale ragionamento nasce:

AN(

O ...

O....

)

 

Perché la trovo molto spesso nei software che mi danno da sistemare e sino ad ora ho sempre pensato, sbagliando, che la traduzione fosse quella che ho scritto.

 

Saluti

Link to post
Share on other sites
pigroplc

il percorso logico è: NON deve esserci questa condizione oppure quest'altra condizione:
come diceva Batta, è il modo in cui si scrivono le condizioni che fa la differenza. Secondo me chi ha scritto questo software è abituato ad usare questa logica, è palese che se NON deve esserci la condizione di uno o l'altro corrisponde alla condizione AND di entrambi negati cioè NON ci deve essere la condizione 1 e NON ci deve essere la condizione 2.

 

Mi ricorda tanto le parti di codice da me non fatte che utilizzano il salto negato, cioè SPN: NON effettua il salto se la condizione logica è vera. Io mi sono sempre servito del contrario cioè SPB e successivo SPA (salto condizionato alla condizione logica vera e salto incondizionato se falsa.

So per certo che qualcuno storcerà il naso, ma A ME sembra più intuitivo, anche adesso a distanza di anni .....
 

Per tornare alla discussione, o ti "adegui" a pensare come chi ha scritto il programma o semplicemente adegui il codice in modo tale che per te sia più intuitivo. Io non ho dubbi sul fatto che invece di avere quell'AND NOT e poi in cascata due OR sia perlomeno ostico per la maggior parte degli utenti del forum. 
Se anche tu sei del parere, nessuno ti vieta di togliere la parentesi e mettere in catena i 2 AND NOT.

Link to post
Share on other sites
Cialtrone

sottoscrivo pienamente quanto scritto da Pigroplc, mi inchino a Batta e spezzo... un'arancia per il ladder, che in questo caso, rende l'idea molto meglio della condizione logica.

Link to post
Share on other sites
batta
8 ore fa, pigroplc ha scritto:

Mi ricorda tanto le parti di codice da me non fatte che utilizzano il salto negato, cioè SPN: NON effettua il salto se la condizione logica è vera. Io mi sono sempre servito del contrario cioè SPB e successivo SPA (salto condizionato alla condizione logica vera e salto incondizionato se falsa.

Anch'io ho sempre preferito utilizzare SPB al posto di SPBN, anche se l'uso di SPBN, in alcuni casi, ha il suo motivo di esistere.
Quello che voglio dire è che, se devo fare salti a punti del programma, usare SPBN è da menti contorte.
I salti però vengono usati anche per fare, per esempio, una semplice operazione matematica. O meglio, il salto viene usato per NON fare l'operazione.
In questo caso, potrebbe risultare comodo creare la catena logica con le condizioni per eseguire l'operazione piuttosto che le condizioni per non eseguirla.

 

56 minuti fa, Cialtrone ha scritto:

spezzo... un'arancia per il ladder, che in questo caso, rende l'idea molto meglio della condizione logica

Io non amo in modo particolare il ladder, ma ho sempre sostenuto che, per questo tipo di logica, sia il migliore. Anche chi non ha mai visto un programma, messo davanti ad un ramo simile in ladder, riesce a capirlo.
Al riguardo, risulta comodissima la possibilità offerta dal TIA (con 1200 e 1500) di creare un blocco in ladder, ma di potervi inserire segmenti in awl o (meglio) in testo strutturato.
La maggior parte dei miei programmi è composta da blocchi misti ladder/strutturato.

 

Sembra che chi proviene direttamente dal mondo dell'informatica abbia difficoltà a comprendere il ladder. Non ci crederò mai. Forse sbaglio ma, questo tipo di affermazioni, ho tanto l'impressione che derivino dalla volontà di snobbare il ladder, come se fosse un linguaggio da "elettriciai", da bassa manovalanza, e non da "veri" programmatori.

Il ladder, soprattutto in fase di debug, ti si spara lì davanti in tutta la sua immediatezza. Chiunque vede, al volo, quale condizione manca alla catena logica, senza bisogno di fare ragionamenti di nessun tipo.

Certo, a volte ci si imbatte in segmenti scritti in ladder così articolati da renderne difficile la comprensione anche in questo linguaggio, ma non si tratta di un problema del ladder, si tratta di un problema di chi ha create tale segmento.
Del resto, scrivere in modo comprensibile in strutturato (o in qualsiasi linguaggio testuale) è ancora più importante..
Se un segmento contorto risulta difficile da interpretare in ladder, proviamo ad immaginare cosa accadrebbe con una scrittura contorta in strutturato.
 

Link to post
Share on other sites
drn5
28 minuti fa, batta ha scritto:

usare SPBN è da menti contorte

se devo testare 3 condizioni e saltare con SPB o una sola non vera e poi fare un SPBN uso il secondo metodo.

Dipende se scrivi un codice in stile "didattico" o uno più da "lavoro". Regola essenziale è non scivolare nello "spaghetti code" e scrivere con l'intenzione che quello che lasci lo possano leggere anche altri.

 

34 minuti fa, batta ha scritto:

come se fosse un linguaggio da "elettriciai", da bassa manovalanza, e non da "veri" programmatori

Ogni ambiente ha il suo stile di programmazione, con le sue regole. Quelli di cui parli tu sono quelli che io chiamo "sacerdoti del bit" , ma li entriamo nel campo della "fede"....

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...