MrC Inserito: 29 maggio 2007 Segnala Share Inserito: 29 maggio 2007 I nuovi ambienti di sviluppo PLC permettono un'allocazione automatica delle aree di memoria, e quindi di lavorare semplicemente con nomi simbolici, senza sapere effettivamente quale sia l'indirizzo fisico della variabile, che appunto viene deciso dal compilatore prima di scaricare l'applicazione nel PLC.In questa situazione, come si fa a progettare l'HMI ? Link al commento Condividi su altri siti More sharing options...
Claudio Monti Inserita: 29 maggio 2007 Segnala Share Inserita: 29 maggio 2007 Io sto utilizzando gia' da tempo Unity della =S= che ti permette questo, ma anche altri produttori si stanno muovendo in questa direzione.La comodita' e' enorme, le possibilita' che offre sono molteplici... pero' come giustamente dici tu rompe le balle x lo scambio dati con HMI.Io mi comporto cosi':forzo un'allocazione di memoria per tutto cio' che riguarda lo scambio con aventuali HMI.L'altra soluzione sarebbe quella di usare un OPCserver, ovviamente devi avere anche il terminale che ti permette di utilizzarlo. Link al commento Condividi su altri siti More sharing options...
MrC Inserita: 29 maggio 2007 Autore Segnala Share Inserita: 29 maggio 2007 Il vecchio protool Siemens permetteva di integrare il progetto di Step7, in modo da condividerne le variabili ...Forse i tempi non erano maturi, ma sarebbe auspicabile che i produttori di HMI si muovessero in questa direzione: bisogna che in qualche modo si lavori in simbolico (magari importando le variabili dal sw PLC) e che poi in qualche modo riescano a leggere le locazioni di memoria assegnate dal compilare del PLC, altrimenti questo diventa un limite abbastanza fastidioso! Link al commento Condividi su altri siti More sharing options...
Luca Bab Inserita: 29 maggio 2007 Segnala Share Inserita: 29 maggio 2007 Il vecchio protool Siemensil nuovo wincc flex , lo fa' ancora megliouno dei punti a favore di siemens credo sia proprio il fatto di poter lavorare con simbolico o con indirizzo fisico allo stesso momento , utilizzando uno o l'latro metodo a seconda del piacere personale ( o della velocita' in base a quello che si sta facendo )Ciao ClaudioLuca Link al commento Condividi su altri siti More sharing options...
irpick Inserita: 29 maggio 2007 Segnala Share Inserita: 29 maggio 2007 Gli HMI lavorano sulla lista variabili strutturate , caso Rockwell 5000 Link al commento Condividi su altri siti More sharing options...
Claudio Monti Inserita: 29 maggio 2007 Segnala Share Inserita: 29 maggio 2007 OK, ma mi sembra che il quesito iniziale fosse un altro:non si tratta di avere la pox di importare le variabili dal progetto o di scegliere se usarle solo con simbolico o con indirizzo... questo lo fanno tutti i sw (piu' o meno...)Pensa che il buon vecchio XBTL1000 della Schneider, anche versioni vecchissime, potevi condividare le variabili del progetto PLC e se lo variavi te lo aggiornava direttamente...Il discorso e':se ho delle variabili NON allocate, cioe' senza indirizzo fisico %MWx, ome faccio a scambiarle con il pannello operatore?Dalle info che ho lo si puo' fare SOLO attraverso un OPC, ma non ho provato quindi riporto cio' che ho solo sentito dire... Link al commento Condividi su altri siti More sharing options...
MrC Inserita: 29 maggio 2007 Autore Segnala Share Inserita: 29 maggio 2007 (modificato) Il discorso e':se ho delle variabili NON allocate, cioe' senza indirizzo fisico %MWx, ome faccio a scambiarle con il pannello operatore?Si, il discorso è questo, appunto ... Quasi tutti possono usare il simbolico, ma poi, queste variabili simboliche, le devi scambiare con degli indirizzi del PLC che DEVI CONOSCERE .. altrimenti .. se ti vengono proposti e cambiati automaticamente dal software PLC .... resti fregato ogni volta! Modificato: 29 maggio 2007 da MrC Link al commento Condividi su altri siti More sharing options...
Claudio Monti Inserita: 29 maggio 2007 Segnala Share Inserita: 29 maggio 2007 Da quello che so e che ho provato, se tu una variabile di tipo INT la chiami Pippo questa rimane cosi' ed il sw del PLC la alloca dove meglio crede (e a te non interessa).Se la devi scambiare con un HMI la chiami Pippo ed in piu' le associ un indirizzo di memoria specifico (ad es. %MW100).A questo punto il tuo HMI leggera' la %MW100 e fin qui rimane tutto come prima.Se ti appoggi ad un OPC, devi dirgli che la variabile Pippo del PLC Pluto la puoi scambiare con l'HMI Paperino (e qui non so darti delle dritte perche' non l'ho mai provato, forse devi anche associargli un indirizzo... ) Link al commento Condividi su altri siti More sharing options...
walter.r Inserita: 30 maggio 2007 Segnala Share Inserita: 30 maggio 2007 Confermo che con OPC devi solo indicare il nome della/delle variabili.Non importa dove sono allocate.Il PLC che uso normalmente alloca automaticamente le variabili, e la differenza tra usare OPC e usare un HMI "normale" sta tutta qui: se usi OPC e aggiungi una variabile, lui te la linka ( linka ??? ) correttamente, se usi HMI e la nuova variabile viene messa, ad esempio, a metà della zona di memoria dedicata, tutte le variabili sucessive sono shiftate, e se non ci pensi prima puoi combinare un bel casino. Link al commento Condividi su altri siti More sharing options...
Cristina Fantoni Inserita: 30 maggio 2007 Segnala Share Inserita: 30 maggio 2007 Anche CoDeSys ha l'allocazione automatica delle variabili, ed e' semplicissimo, quando e' necessario metterle a disposizione di altri PLC e/o HMI, allocarle in un indirizzo di memoria.In CoDeSys funziona cosi':Mw_Pippo AT %MW250: WORD; (*commento: variabile allocata*) Mf_Pluto: REAL:=0.1; (* commento: variabile non allocata con inizializzazione*)Di primo acchito sembra una complicazione, ma quando ci hai fatto la mano, poi se non c'e' ti manca Link al commento Condividi su altri siti More sharing options...
walter.r Inserita: 30 maggio 2007 Segnala Share Inserita: 30 maggio 2007 Brava Cristina, .Non ho mai provato sul sistema che uso quel tipo di definizione.Mi sembra un'ottima idea, appena ne ho l'occasione proverò a "fissare" qualche variabile in quel modo, così, giusto per sapere se anche in altri sistemi funziona. Link al commento Condividi su altri siti More sharing options...
MrC Inserita: 30 maggio 2007 Autore Segnala Share Inserita: 30 maggio 2007 Vebbè ma scusate .. se associamo le variabili ad indirizzi fissi, non usiamo più l'allocazione automatica delle aree di memoria, e quindi non si utilizza questa funzionalità, che è una delle poche novità degli ultimi anni ...Forse la soluzione buona è quella di Caludio, che ne associa solo alcune, e cioè quelle che intende poi usare nell'HMI !!!Tuttavia, spero che i produttori di HMI ci pensino, e trovino il modo di far interagire i loro prodotti con il compilatore del Sw plc (anche se penso che questo potrebbe avvenire solamente tra prodotti della stessa marca ..) Link al commento Condividi su altri siti More sharing options...
luciopro Inserita: 30 maggio 2007 Segnala Share Inserita: 30 maggio 2007 Ci sono pannelli che lavorano con variabili non allocate ( Moeller ad esempio forse anche proface). Questo è l'unica soluzione.ciao Link al commento Condividi su altri siti More sharing options...
trentaluca Inserita: 30 maggio 2007 Segnala Share Inserita: 30 maggio 2007 Io attualmente faccio come Claudio..Dichiaro un'area di memoria fissa in continuo scambio coll'HMI...le allocazioni automatiche le appoggio a tale area...Utilizzo aree di memoria contigue per non fare saltare la supervisione in lettura da un area all'altra.......Quindi per esempioDM0-DM1000= aree di memoria di interfaccia.Mov IR0-IR10=DM0-DM10Mov DM4000-DM4010=DM11-DM21Mov pippo =DM22..E cos'ì via....fino adesso mi è sembrato l'unico modo per ovviare al cambio di allocazione memoria deciso dal PLC in fase di download. Link al commento Condividi su altri siti More sharing options...
irpick Inserita: 30 maggio 2007 Segnala Share Inserita: 30 maggio 2007 se associamo le variabili ad indirizzi fissi, non usiamo più l'allocazione automatica delle aree di memoria, e quindi non si utilizza questa funzionalità, che è una delle poche novità degli ultimi anni ...Hai ragione , questa si chiama Mappatura, nei protocolli nativi NON SERVE, non c'entra niente OPC (caso A. , ma la sintassi del protocollo richiama la variabile strutturata dichiarata dal lato controller, in questo caso si punta al nome e non ad un file (N,B o altro) Link al commento Condividi su altri siti More sharing options...
Cristina Fantoni Inserita: 30 maggio 2007 Segnala Share Inserita: 30 maggio 2007 (modificato) Vebbè ma scusate .. se associamo le variabili ad indirizzi fissi, non usiamo più l'allocazione automatica delle aree di memoria, e quindi non si utilizza questa funzionalità, che è una delle poche novità degli ultimi anni ...In effetti io ho scritto:quando e' necessario metterle a disposizione di altri PLC e/o HMIil che significa che non si fa l'allocazione di tutte, ma solo di quelle che devi scambiare, che sono una minima parte.Ora, per esempio, sto collaudando un impianto con 3 PLC, con il pannello operatore, ogni CPU funziona per suo conto e le variabili allocate sono solo quelle che devono essere lette/scritte tramite il pannello, che sono un numero limitato, idem ho fatto in un impianto dove di PLC ce ne erano 11... Tutto il resto delle variabili del programma e' gestito internamente al PLC Brava Cristina, .Non ho mai provato sul sistema che uso quel tipo di definizione.Grazie, troppo buono... :blush: Ti riferisci forse alla definizione 'Mw_pippo' e 'Mf_pluto'??? In effetti so che sono molto originali... Modificato: 30 maggio 2007 da Cristina Fantoni Link al commento Condividi su altri siti More sharing options...
walter.r Inserita: 30 maggio 2007 Segnala Share Inserita: 30 maggio 2007 Ti riferisci forse alla definizione 'Mw_pippo' e 'Mf_pluto'??? In effetti so che sono molto originali... ..... ........ ...... No Cristina, parlando seriamente mi riferivo a:.....AT %MW250: WORD;E' quel " AT %... " che non mi era mai venuto in mente di provare... Link al commento Condividi su altri siti More sharing options...
MR69 Inserita: 30 maggio 2007 Segnala Share Inserita: 30 maggio 2007 In Passato ho lavorato con pannelli che importavano la dichiarazione delle variabili dal plc (o controllo che dir si voglia).Bello: in realtà il compilatore generava durante la compilazione un piccolo file di testo contenente gli identificatori e loro indirizzo fisico... Il software del pannello importava quel file associando simbolo ad indirizzo.Quando si ricompilava sul controllo bisognava re-importare il file dei simboli, e riscaricare il progetto del pannello (anche se nel pannello non si era variato niente).In pratica tanto bello non era: si sprecava un sacco di tempo a riscaricare il pannello senza averlo modificato.Adesso lavoro con oggetti che richiedono la dichiarazione esplicita degli indirizzi delle varibili coinvolte nella comunicazione e relativa ridichiarazione delle variabili nel pannello...A conti fatti spreco meno tempo.Saluti a tutti Link al commento Condividi su altri siti More sharing options...
Savino Inserita: 31 maggio 2007 Segnala Share Inserita: 31 maggio 2007 I nuovi ambienti di sviluppo PLC permettono un'allocazione automatica delle aree di memoriaBeeh, non solo i nuovi.. anche i vecchi da 20 anni fa'.Poi, direi che tutti i PLC permetterebbero un'allocazione automatica delle aree di memoria... bastarebbe che il SW d'interfaccia lo permetta. Ad esempio Simatic APT emula l'allocazione automatica su la famiglia di CPU Simatic Ti CPU 505-575... quando incambio il SW Tisoft non lo consenterebbe.se ho delle variabili NON allocate, cioe' senza indirizzo fisico %MWx, ome faccio a scambiarle con il pannello operatore?Comunque non vedo il problema... perche il HMI dovrebbe puntare su dei tags allocati su queste aree che sarebbero piuttosto delle aree globali private oppure locali delle funzioni del PLC e non d'interfaccia col HMI ??Dalle info che ho lo si puo' fare SOLO attraverso un OPC, ma non ho provato quindi riporto cio' che ho solo sentito dire molto interessante... Col vecchio OPCAutoSA2.dll della Schneider : L"Schneider-Aut.OFS" impostavo l'indirizzo fisico..OPCITEMDEF ItemDef[1]; // Crea l'item BSTR bsItem = NULL; CString m_strItem1; m_strItem1 = _T("UNTLW01:0.254.0!%MW200"); // locazione del byte da leggere bsItem = m_strItem1.AllocSysString();// alloca memoria per un byte ItemDef[0].szItemID = bsItem; // legge byte ..Comunque, se si vorebbe indirizzare un area di allocazione automatica, si dovrebbe avere la specifica della stringa variabile che rapressentarebbe l'offset per l'area PLC assegnato ..Specification, logic and matemathics..! Link al commento Condividi su altri siti More sharing options...
MrC Inserita: 31 maggio 2007 Autore Segnala Share Inserita: 31 maggio 2007 X MR69:Interessante la tua esperienza .. l'idea mi sembra molto buona, ok, bisogna aggiornare ogni volta il pannello, ma attualmente una connessione usb permetterebbe un update veloce, rispetto ad una porta seriale, quindi il problema potrebbe essere risolto abbastanza semplicemente!Potresti per favore citare quale marca usava questo sistema?Grazie Link al commento Condividi su altri siti More sharing options...
Savino Inserita: 31 maggio 2007 Segnala Share Inserita: 31 maggio 2007 OPCITEMDEF ItemDef[1]; // Crea l'itemBSTR bsItem = NULL;CString m_strItem1;m_strItem1 = _T("UNTLW01:0.254.0!%MW200"); // locazione del byte da leggerebsItem = m_strItem1.AllocSysString();// alloca memoria per un byteItemDef[0].szItemID = bsItem; // legge byteScusate, forse qualche commento non e' a posto..OPCITEMDEF ItemDef[1]; // Define l'item BSTR bsItem = NULL; CString m_strItem1; m_strItem1 = _T("UNTLW01:0.254.0!%MW200"); // locazione del byte da leggere bsItem = m_strItem1.AllocSysString();// alloca memoria per un byte // setup ItemDef[0].szAccessPath = L""; ItemDef[0].szItemID = bsItem; ItemDef[0].bActive = TRUE; ItemDef[0].hClient = 1; ItemDef[0].dwBlobSize = 0; ItemDef[0].pBlob = NULL; ItemDef[0].wReserved = 0; ItemDef[0].vtRequestedDataType = VT_EMPTY; // Crea item HRESULT hr; hr = m_IOPCItemMgt->AddItems(1, ItemDef, ...., ....); ::SysFreeString(bsItem); .... .. // legge byte hr = m_IOPCSyncIO->Read(OPC_DS_DEVICE, .......) ....... ..etc.. 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