Vai al contenuto
PLC Forum


Quali sono le differenze tra una programmazione fatta con software siemens step 7 tia portal e software omron


Giovanni Segreto

Messaggi consigliati

Giovanni Segreto

Buonasera a tutti , come da titoto vorrei sapere quali sono le differenze  più rilevanti tra i due software di programmazione dei plc , in particolore lo stato logico dei contatti n.o ed n.c sul ladder omron e identico a  quello dei contatti di siemens tia portal? conosco siemens ma non ho mai visto il software del omron grazie a chi mi darà informazioni.

Screenshot_20190729-205229.png

Link al commento
Condividi su altri siti


2 ore fa, Giovanni Segreto scrisse:

in particolore lo stato logico dei contatti n.o ed n.c sul ladder omron e identico a  quello dei contatti di siemens tia portal?

Beh, direi proprio di sì. Ma non solo per Omron, i simboli dei contatti e delle bobine, in ladder, sono uguali per tutti i plc.

È come se chiedessi se i contatti sono uguali su due schemi elettrici fatti con programmi diversi.

Poi, la base della programmazione è sempre la stessa, ma tra i due plc da te citati ci sono molte differenze.
È diversa la gestione della memoria, è diverso il modo di richiamare i blocchi di programma, è diverso il set di istruzioni.

Link al commento
Condividi su altri siti

Giovanni Segreto
6 ore fa, batta scrisse:

Beh, direi proprio di sì. Ma non solo per Omron, i simboli dei contatti e delle bobine, in ladder, sono uguali per tutti i plc.

È come se chiedessi se i contatti sono uguali su due schemi elettrici fatti con programmi diversi.

Poi, la base della programmazione è sempre la stessa, ma tra i due plc da te citati ci sono molte differenze.
È diversa la gestione della memoria, è diverso il modo di richiamare i blocchi di programma, è diverso il set di istruzioni.

L indirizzamento delle variabili immagino sia uguale? Grazie della risposta

Link al commento
Condividi su altri siti

be una grossa differenza è che siemens lavora a byte, i bit quindi vanno da 0 a 7, omron invece, se non ricordo male lavora a word ed i bit vanno ad 0 a 15, inoltre non posso usare i byte.

Link al commento
Condividi su altri siti

7 ore fa, Giovanni Segreto scrisse:

L indirizzamento delle variabili immagino sia uguale? Grazie della risposta

No. In Omron (se sbaglio ci sarà Acquaman a correggermi) lavori con le DM, in Siemens usi i Blocchi Dati (DB).

 

Link al commento
Condividi su altri siti

Non c'entra nulla o poco con la discussione ma volevo portare una mia recente esperienza. 

 

Dopo anni di Schneider e Mitsubishi, ieri ho re-installato il Tia sul PC dell'ufficio. Pensate che è uscita fuori facendo pulizia in magazzino, chissà dove l'avevo lasciata. E' datata 2012 ed è la versione V11.

La cosa nasce dalla curiosità di aprire progetti fatti col Tia risalenti a quel periodo , anzi a dire il vero stavo pensando di dare una bella modernizzata al programma. Ho attualmente 3 macchinette che girano col 1200, principalmente con stepper motor usando le funzioni tecnologiche. 

 

Dopo gli immancabili moccoli con l'installazione(mancavano degli HSP, installati ) ho aperto i miei progetti e piano piano ripreso confidenza con l'ambiente. 

Sento spesso parlar male di Siemens e vorrei andare leggermente controtendenza: dopo aver ripreso in mano i programmi posso dire che la gestione dati e complessivamente il Sw sembra anni luce avanti al Gx2 che uso adesso. Ricordo che sto usando la V11, quindi vetusta. 

 

Il modo in cui si possono organizzare i dati, i blocchi , i DB...i drag&drop e tutto ciò che rende più vivibile un ambiente di lavoro...sono rimasto piacevolmente colpito. Forse all'epoca ero ancora relativamente acerbo per poter apprezzare il TIA non so..fatto sta che mi è venuta una vena nostalgica. E' vero che col jap si fa bene o male tutto quello che si fa col Tia, ma è il come che fa la differenza.

Oh in 1 oretta d'uso è crashato 3 volte ma questo non potrò mai dire se sia colpa del mio pc o del Tia..e comunque anche il Gx2 crasha.

 

Primo: posso finalmente dare alle variabili il nome che desidero(anche usando spazi!) senza il patema d'animo di usare max 32 caratteri. 

Posso creare un DB ordinato, potendo spuntare comodamente i dati ritentivi da li, senza preoccuparmi dell'allocazione..mitico. 

Posso creare 'Gruppi' dei quali possono fare parte DB, FC, blocchi organizzativi ecc. Nel mio albero a sinistra ho tutto ordinato e facilmente raggiungibile. 

Posso Creare FC le quali possono avere In,Out, InOut ecc , senza per forza creare una FB con la propria istanza. (a proposito: l'area Temp è pericoloso usarla?posso trovarci valori casuali?)

Ho il progetto HMi nel medesimo ambiente..questa è una cosa che ho sempre rimpianto al Tia. Per fare la stessa cosa con IQWorks bisogna usare delle 'reflections' che persino i tecnici Mits ti sconsigliano di usare. L'alternativa è allocare tutti i dati in modo che abbiano un indirizzo fisso ma questo rende impossibile 'spuntare' quello che vuoi ritentivo a quello che non vuoi, in quanto l'area Retain è ovviamente contigua anche se decisa da te. 

 

Per ora non mi viene in mente altro..ho scritto qui perchè Omron somiglia molto a Mits come filosofia. Poi un Ladder è un Ladder capiamoci!

 

Modificato: da step-80
Link al commento
Condividi su altri siti

Non c'entra nulla o poco con la discussione ma volevo portare una mia recente esperienza. 

 

Dopo anni di Schneider e Mitsubishi, ieri ho re-installato il Tia sul PC dell'ufficio. Pensate che è uscita fuori facendo pulizia in magazzino, chissà dove l'avevo lasciata. E' datata 2012 ed è la versione V11.

La cosa nasce dalla curiosità di aprire progetti fatti col Tia risalenti a quel periodo , anzi a dire il vero stavo pensando di dare una bella modernizzata al programma. Ho attualmente 3 macchinette che girano col 1200, principalmente con stepper motor usando le funzioni tecnologiche. 

 

Dopo gli immancabili moccoli con l'installazione(mancavano degli HSP, installati ) ho aperto i miei progetti e piano piano ripreso confidenza con l'ambiente. 

Sento spesso parlar male di Siemens e vorrei andare leggermente controtendenza: dopo aver ripreso in mano i programmi posso dire che la gestione dati e complessivamente il Sw sembra anni luce avanti al Gx2 che uso adesso. Ricordo che sto usando la V11, quindi vetusta. 

 

Il modo in cui si possono organizzare i dati, i blocchi , i DB...i drag&drop e tutto ciò che rende più vivibile un ambiente di lavoro...sono rimasto piacevolmente colpito. Forse all'epoca ero ancora relativamente acerbo per poter apprezzare il TIA non so..fatto sta che mi è venuta una vena nostalgica. E' vero che col jap si fa bene o male tutto quello che si fa col Tia, ma è il come che fa la differenza. 

 

Primo: posso finalmente dare alle variabili il nome che desidero(anche usando spazi!) senza il patema d'animo di usare max 32 caratteri. 

Posso creare un DB ordinato, potendo spuntare comodamente i dati ritentivi da li, senza preoccuparmi dell'allocazione..mitico. 

Posso creare 'Gruppi' dei quali possono fare parte DB, FC, blocchi organizzativi ecc. Nel mio albero a sinistra ho tutto ordinato e facilmente raggiungibile. 

Posso Creare FC le quali possono avere In,Out, InOut ecc , senza per forza creare una FB con la propria istanza. (a proposito: l'area Temp è pericoloso usarla?posso trovarci valori casuali?)

Ho il progetto HMi nel medesimo ambiente..questa è una cosa che ho sempre rimpianto del Tia. Per fare la stessa cosa con IQWorks bisogna usare delle 'reflections' che persino i tecnici Mits ti sconsigliano di usare. L'alternativa è allocare tutti i dati in modo che abbiano un indirizzo fisso ma questo rende impossibile 'spuntare' quello che vuoi ritentivo a quello che non vuoi, in quanto l'area Retain è ovviamente contigua anche se decisa da te. 

 

Per ora non mi viene in mente altro..ho scritto qui perchè Omron somiglia molto a Mits come filosofia. Poi un Ladder è un Ladder capiamoci!

 

Link al commento
Condividi su altri siti

Aggiungo(appena scoperta): Cambi il nome nella dichiarazione ed automaticamente viene aggiornato in tutte le parti di programma dove la variabile viene usata. Questo(almeno con Gx2 )non succede.

Link al commento
Condividi su altri siti

2 ore fa, step-80 scrisse:

Aggiungo(appena scoperta): Cambi il nome nella dichiarazione ed automaticamente viene aggiornato in tutte le parti di programma dove la variabile viene usata. Questo(almeno con Gx2 )non succede.

Con Gx2 non avviene ma con GX3 basta ricompilare

Link al commento
Condividi su altri siti

4 ore fa, step-80 scrisse:

(a proposito: l'area Temp è pericoloso usarla?posso trovarci valori casuali?)

 

Sì, assumuno valori casuali, come tutte le variabili locali; devi solo ricordarti che vanno sempre inizializzate.

Link al commento
Condividi su altri siti

Stavo provando ad installare il TIA anche sul portatile, ma naturalmente non me lo lascia fare. Mi dice 'Prima di eseguire il setup è necessario riavviare il sistema. Riavviare il sistema?' 

 

Se gli do si, il sistema si riavvia ma chiedendomi ancora la stessa cosa all'infinito. 

Quasi quasi mi sta tornando in mente perchè all'epoca avevo cambiato:superlol:

Link al commento
Condividi su altri siti

Il tia 11 è vero che si bloccava, ma non era tutta colpa sua , quando avevo messo SSD e RAM adeguata anche su un i3 girava come un olio....

Il problema è il tempo di accesso del disco che crea problemi.

Link al commento
Condividi su altri siti

Googolando il problema sembrerebbe dovuto al fatto che esiste ancora qualche registro di una istallazione precedente. Effettivamente il Tia l’avevo proprio su quel portatile..ora non ho molto tempo da dedicargli purtroppo, ma mi piacerebbe venirne a capo

Link al commento
Condividi su altri siti

Giovanni Segreto
6 ore fa, acquaman scrisse:

be una grossa differenza è che siemens lavora a byte, i bit quindi vanno da 0 a 7, omron invece, se non ricordo male lavora a word ed i bit vanno ad 0 a 15, inoltre non posso usare i byte.

Il ciclo di attivazione delle uscite va da alto  a ultima istruzione bassa nel ultimo ramo del OB? Ce si attivano dal alto al basso? Non so se mi spiego..

Link al commento
Condividi su altri siti

Simone.Salarsi
10 minuti fa, step-80 scrisse:

Googolando il problema sembrerebbe dovuto al fatto che esiste ancora qualche registro di una istallazione precedente. Effettivamente il Tia l’avevo proprio su quel portatile..ora non ho molto tempo da dedicargli purtroppo, ma mi piacerebbe venirne a capo

 

è un problema noto, fin dai tempi di Step7 succede questa cosa, e tutt'ora persiste di tanto in tanto.

devi andare a cancellare o modificare una voce del registro di windows

 

https://support.industry.siemens.com/cs/document/8861819/how-do-you-disable-the-message-please-reboot-before-installing-any-more-programs-?dti=0&lc=en-WW

Link al commento
Condividi su altri siti

1 ora fa, Giovanni Segreto scrisse:

Il ciclo di attivazione delle uscite va da alto  a ultima istruzione bassa nel ultimo ramo del OB? Ce si attivano dal alto al basso? Non so se mi spiego..

La domanda non mi è chiara. Intendi se le istruzioni vengono eseguite dall'alto verso il basso? Sì, certo, come in tutti i programmi, non solo nei plc.

Link al commento
Condividi su altri siti

Giovanni Segreto
7 ore fa, batta scrisse:

La domanda non mi è chiara. Intendi se le istruzioni vengono eseguite dall'alto verso il basso? Sì, certo, come in tutti i programmi, non solo nei plc.

Esatto intendevo le istruzioni

Link al commento
Condividi su altri siti

Simone.Salarsi
10 ore fa, step-80 scrisse:

@Simone.Salarsi grazie 1000. Anch io ho visto quella pagina del support, ma non ho ben capito cosa devo modificare o cancellare. Tu per caso ti ricordi? 

io solitamente cancello direttamente la voce PendingFileRenameOperations

Link al commento
Condividi su altri siti

Quote

Sì, assumuno valori casuali, come tutte le variabili locali; devi solo ricordarti che vanno sempre inizializzate.

Scusate ragazzi, sul fatto descritto da Drugo ci sto: le variabili #Temp ovviamente sono da inizializzare ogni volta per evitare che assumono valori casuali. 

 

Volevo solo chiedere, visto che come opzioni leggo solo In, Out, InOut , Temp e Ret_Val, se dovessi usare una manciata di bit ..per esempio bit di passo usati solo in quella FC..sarebbe sbagliatissimo dichiararli nell'area Temp giusto? Cosi come se dovessi usare un bit dell'area temp per appoggiarci un Fronte di salita...

In questo caso sempre meglio usare i dati contenuti in un DB giusto? 

Modificato: da step-80
Link al commento
Condividi su altri siti

2 ore fa, step-80 scrisse:

se dovessi usare una manciata di bit ..per esempio bit di passo usati solo in quella FC..sarebbe sbagliatissimo dichiararli nell'area Temp giusto? Cosi come se dovessi usare un bit dell'area temp per appoggiarci un Fronte di salita...

In questo caso sempre meglio usare i dati contenuti in un DB giusto? 

Esatto.

L'area di memoria dedicata alle variabili TEMP, nel momento in cui tu abbandoni il blocco di programma (indifferentemente OB, FC o FB) viene considerata libera. Ecco che un altro blocco di programma potrebbe andare a scrivere in quell'area e tu, quando rientri nel blocco al ciclo successivo, nella variabile TEMP ti trovi un valore scritto non si sa da chi.
Da alcune prove fatte con il 1500, a dire il vero, io ho sempre trovato le variabili TEMP reinizializzate a zero, ma non sono ancora riuscito a trovare documentazione che mi confermi questo fatto.
In ogni caso, come hai detto, non puoi usare le variabili TEMP per memorizzare i passi di una sequenza o per rilevare un fronte. Potresti però usare una variabile TEMP per appoggiare il risultato del fronte, che magari utilizzi più volte nel tuo blocco di programma.
A chi non è abituato ad usarle, forse il fatto che non mantengano il valore può farle sembrare inutili. Ti garantisco invece che sono utilissime. Io ne faccio largo uso. Si tratta solo di adoperarle nel modo giusto.
Solo un esempio: io detesto, anche in ladder, i segmenti troppo complessi. Preferisco fare rami semplici, appoggiare il risultato dei singoli rami ad una variabile TEMP, e poi mettere insieme questi "risultati parziali" per ottenere il "risultato finale".

Nei calcoli poi, capita molto spesso di dover appoggiare il risultato parziale di una operazione. Perché perdere tempo e risorse dichiarando variabili in un DB? Dichiari quello che ti serve in una TEMP, ed hai risolto.
 

Riguardo poi "l'uso dei dati contenuti in un DB", tieni presente che se al posto di una FC crei una FB, trovi anche l'area delle variabili STAT. Queste variabili vengono appoggiate al DB di istanza della funzione, e mantengono quindi il loro valore. Puoi anche decidere se la variabile debba essere ritentiva o meno.

Riguardo i DB di istanza, una cosa che non piace ai puristi della programmazione ma che in realtà risulta essere molto comoda (basta non abusarne), è che sono a tutti gli effetti dei "DB Globali". Da qualsiasi parte del programma è quindi possibile accedere, sia in lettura che in scrittura, alle variabili di questi DB. Pericoloso? Forse. Utile? Assolutamente sì.

Link al commento
Condividi su altri siti

Grazie Batta, gentilissimo come sempre. 

 

Avrei un ulteriore quesito. 

Ho creato una FB ( quindi con istanza) denominata “gestione asse”. Lo scopo è quello di creare un fb appunto che gestisca il posizionamento di un asse( da start—-> 3 posizionamenti assoluti in catena) ma di poterla usare per 4 assi diversi. Dovró quindi richiamarla 4 volte, ognuna col suo DB univoco, perfetto. 

 

Il mio dubbio è il seguente: dentro l’FB ho inserito alcuni blocchi MotionControl, ed ovviamente anch’essi hanno il proprio db. 

Perchè ogni asse funzioni correttamente,è sufficiente che al parametro ‘asse’ passi un tipo di dato ‘asse’ , anzichè il nome dell’asse vero e proprio? Poi ovviamente dovró, per ognuno dei 4, andare a passare (magari come parametro input?) l’asse voluto?

 

Sto parlando di assi comandati a treno di impulsi. 

 

Grazie!

 

Modificato: da step-80
Link al commento
Condividi su altri siti

1 ora fa, step-80 scrisse:

Il mio dubbio è il seguente: dentro l’FB ho inserito alcuni blocchi MotionControl, ed ovviamente anch’essi hanno il proprio db.  

Perchè ogni asse funzioni correttamente,è sufficiente che al parametro ‘asse’ passi un tipo di dato ‘asse’ , anzichè il nome dell’asse vero e proprio? Poi ovviamente dovró, per ognuno dei 4, andare a passare (magari come parametro input?) l’asse voluto?

No, non basta che tu passi il diverso asse come parametro, perché il DB di istanza delle varie istruzioni motion rimarrebbe comunque sempre lo stesso. MC_Power dell'asse x non può avere lo stesso DB di istanza di MC_Power dell'asse y.
Per risolvere questo problema, hai due possibilità.

La prima, ed anche la più usata, è che devi inserire le istanze delle funzioni motion come "multiistanza". Puoi farlo manualmente, oppure, quando trascini la funzione e ti si apre la finestra per la generazione del db di istanza, selezioni "DB Multi-istanza". Così facendo, il sistema genera una struttura nell'area STAT. Ecco che tutte le variabili necessarie al funzionamento delle funzioni motion vengono inglobate nel db di istanza della FB principale.
La seconda soluzione (a quanto mi risulta meno usata) è dichiarare l'istanza della funzione motion nelle variabili IN/OUT. Anche questa operazione la puoi fare manualmente, oppure, quando trascini la funzione, selezioni "DB istanza del parametro". Se segui questa strada, dovrai poi creare db di istanza diversi per ogni asse, da passare come parametro alla funzione.

Quale dei due sistemi è migliore?
Il primo è sicuramente più pratico, ma ha l'inconveniente che se fai una modifica che richiede la reinizializzazione del DB di istanza, vengono reinizializzate anche tutte le variabili delle multiistanze. Nel secondo caso invece le istanze delle funzioni motion non vengono reinizializzate, perché non sono contenute nel DB di istanza della funzione "madre", ma sono DB esterni, collegati come parametri IN/OUT. Un altro vantaggio di questa soluzione è che, se inserisci come multiistanza una funzione che permette la configurazione e la messa in servizio guidate (quelle con il simbolino della cassetta attrezzi e della pinza e cacciavite, esempio funzione PID), perdi questa possibilità.
Nel tuo caso, per l'utilizzo di funzioni motion PlcOpen, che non richiedono configurazione, io le inserirei come multiistanza (nel primo modo descritto).

La stessa identica cosa la devi fare anche se hai inserito dei timer (TON, TOF), o qualsiasi altra cosa che ha bisogno di una sua istanza.
Con i timer poi, come descritto in un'altra discussione, devi prestare attenzione al riavvio del timer stesso. Cosa succede? Succede che, se un timer ha terminato il conteggio e il db di istanza viene reinizializzato (questo avviene a seguito di una modifica dell'interfaccia delle variabili, escluse le temp), se il timer non vede un cambio di stato da false a true dell'ingresso, non si riavvia. Online vedresti l'ingresso alto, il timer che non conta e l'uscita bassa.
Questa è una cosa che considero vergognosa. Non riesco proprio a comprendere come Siemens, in tanti anni, non sia ancora riuscita a risolvere questo assurdo problema. Probabilmente i tedeschi, da tedeschi, hanno deciso che si tratta non di una "anomalia" ma di una "caratteristica", e quindi per loro la faccenda è chiusa.

Link al commento
Condividi su altri siti

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...