Test programma su simulatore SimuLab
Home › Forum › Informazioni ambiente di sviluppo LogicLab › Test programma su simulatore SimuLab
- Questo topic ha 7 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 9 anni, 2 mesi fa da
Sergio Bertana.
-
AutorePost
-
Ottobre 30, 2015 alle 11:14 pm #35868
Anonimo
InattivoStò sviluppando un programma su LogicLab, dopo aver definito tutti gli I/O fisici in variabili mappate e qualche word per gestioni analogiche, volevo provare, dopo aver steso qualche riga di codice, il simulatore, purtroppo non riesco ad inserire le variabili di mio interesse, oltre a quelle già presenti sulla workspace, se provo a trascinarle mi da un messaggio di errore “invalid dropped variable format”, sicuramente sbaglio procedura, mi potreste dare indicazioni, grazie.
Altra domanda per la gestione degli ingressi analogici è corretto usare l’FB SysGetAnInp dove indico senza mappare da nessun altra parte il mio ingresso analogico, il valore in uscita Value dall’FB restituisce direttamente la lettura anche se in real ? o bisogna trasformare il dato ed muoverlo su una word o dword ? così da poterla puntare e leggere da HMI.
Novembre 2, 2015 alle 11:21 am #39141Sergio Bertana
Amministratore del forumHo realizzato un semplice progetto che illustra come utilizzare il simulatore (Screenshot). Come vedi ci sono dei pannelli già preconfezionati con gli I/O dei moduli standard, ma agendo sul tasto “Add” puoi aggiungere altri pannelli a tuo piacimento.
Aperto il nuovo pannello puoi trascinare le variabili globali nel pannello, tutto il workspace del simulatore con tutti i pannelli di visualizzazione potrà poi essere salvato per poterlo riaprire all’occorrenza.
Non è possibile trascinare nel pannello del simulatore le variabili locali, per eseguire il debug delle variabili globali occorre trasinarli nella finestra di watch.
Gli ingressi analogici sono acquisiti dal blocco funzione SysGetAnInp che ritorna una variabile REAL con il valore acquisito già convertito in unità ingegneristica. Se vuoi trasferire il valore sul pannello operatore devi ricopiare il valore in uscita dal FB su di una variabile allocata nella DB 100.
Se usi variabili UINT a 16 bits, puoi effettuare una moltiplicazione del valore per avere cifre decimali, ma ti ricordo che gli HMI della Weintek possono gestire direttamente le variabili REAL. Ecco il programma sorgente dell’esempio, in cui viene effettuata anche l’acquisizione analogica. Ricordo che SimuLab non gestisce le comunicazioni quindi per testare il funzionamento con l’HMI puoi utilizzare il simulatore HMI di EasyBuilderPro ma devi avere necessariamente un modulo CPU fisico.
Novembre 4, 2015 alle 9:14 am #39144Anonimo
InattivoSalve a tutti, sto realizzando un progetto con una CPU SlimLine ARM7 e moduli di I/O digitali ed analogici annessi, dopo aver mappato in “variabli mappate” tuttti i miei I/O fisici, volevo sapere se potreste indicarmi come gestire e simulare i miei ingressi specialmente quelli analogici con il simulatore (Dovrei simulare delle Pt100). Ho provato a trascinarli da LogicLab ma da un errore.
Riguardo alle analogiche volevo capire se è corretto senza mappare l’indirizzo fisico, puntare direttamente ad esso per leggerlo tramite l’FB SysGetAnInp inserendo la variabile di sistema adeguata e se il valore che mi restituisce in value può essere letto direttamente puntandolo anche da HMI, oppure bisogna creare una variabile in cui muovere questo valore e magari trasformarlo da real a INT ?
Novembre 4, 2015 alle 9:19 am #39145Sergio Bertana
Amministratore del forumPer la simulazione degli I/O è possibile simulare solo gli ingressi digitali del modulo 0 e gli ingressi analogici del modulo 1 per i quali sono disponibili i pannelli relativi (Screenshot).
Quindi per le analogiche tu puoi mettere nel tuo programma l’esecuzione al FB SysGetAnInp con Address 1 ed avrai come valore in uscita su Value il valore impostato tramite lo slide nel pannello. E’ evidente che non importa il modo di acquisizione, quindi se acquisisci una Pt100 avrai in uscita il valore impostato con lo slide come se fosse la tua temperatura in gradi. Se nel tuo progetto hai molti più I/O di quelli simulabili si usa questo workaround.
Per gli ingressi digitali basterà trascinarli nel pannello di simulazione indipendentemente dal loro indirizzo di assegnazione.
Per gli ingressi analogici si scollega l’uscita Value del blocco funzione dalla variabile di appoggio e se la variabile è globale si alloca in memoria DB100 e poi si trascina nel pannello di simulazione. Se la variabile è locale si può o spostarla nelle variabili globali (Allocandola nella DB100) per la simulazione, oppure si definisce una nuova variabile globale solo per la simulazione eseguendo un MOVE dalla variabile simulata nella variabile locale.
Regola generale del simulatore, è possibile trascinare nei pannelli di simulazione solo gli I/O digitali e le variabili allocate in memoria DB 100.
Non è possibile testare la comunicazione Modbus con il pannello operatore, il simulatore non gestisce il protocollo di comunicazione Modbus.
Febbraio 11, 2016 alle 9:42 pm #39363Alberto
PartecipanteSlimLine CPU ARM7 Compact, tramite un contatore vario il canale (Channel) di acquisizione del FB SysGetAnInp. In simulazione quando l’indirizzo è impostato su 255 (indirizzo CPU) in uscita (Value) rilevo i valori impostatti con i 2 cursori dei canali AnalogInput 0 e 1, quindi mi sembra corretto.
In simulazione quando l’indirizzo è impostato su 0 (modulo 0) in uscita (Value) non rilevo nessun valore. Dove sbaglio ? Si utilizza altro metodo per variare il canale di acquisizione ?
Febbraio 12, 2016 alle 9:25 am #39364Sergio Bertana
Amministratore del forumPer capire il concetto ho preparato un progetto di esempio che dovrebbe riflettere lo scenario che tu hai descritto. Come si vede dallo screenshot selezionando tramite Counter il canale 1 il FB SysGetAnInp acquisisce l’ingresso 1 del modulo CPU (Address 255). Se vuoi simulare un modulo di ingressi analogici con indirizzo 1 devi abilitare il modulo ingressi analogici dal simulatore (Screenshot).
Nel simulatore abbiamo inserito solo alcuni moduli, se devi simulare altri valori, come descritto nei posts precedenti del topic, puoi crearti dei pannelli personalizzati di simulazione in cui trascinare le variabili che ti interessa simulare. Allego il progetto di esempio per il download.
Febbraio 12, 2016 alle 10:42 pm #39366Alberto
PartecipanteGrazie per la puntualità delle risposte.
Indicando come Address 1 e poi i canali 0-1-2-ecc… lo schema adesso funziona.
Nel manuale però è indicato che il primo modulo ha Address 0, io indicavo appunto 0 e non funzionava.Febbraio 13, 2016 alle 7:56 am #39367Sergio Bertana
Amministratore del forumI moduli di estensione hanno un dip switch di configurazione indirizzo che và setttato dal cliente in base alle sue necessità. Di default tutti i moduli hanno indirizzo 0.
In SimuLab abbiamo realizzato alcuni moduli di esempio, i vari moduli CPU, un modulo di ingressi digitali a cui abbiamo assegnato indirizzo 0 ed un modulo di ingressi analogici cui abbiamo assegnato indirizzo 1. In questo modo avendo indrizzi diversi si possono fare coesistere.
In realtà poi non è così importante avere i moduli di esempio, perchè è molto più comodo crearsi dei proprii moduli trascinando all’interno le variabili che si desidera simulare. Anzi in moltissimi casi quando si usa il simulatore, non si usano neanche i moduli di simulazione ma si interagisce direttamente con la finestra di watch di LogicLab.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.