Vai al contenuto

Utilizzo di LogicLab per la programmazione dello SlimLine

Home Forum Informazioni ambiente di sviluppo LogicLab Utilizzo di LogicLab per la programmazione dello SlimLine

Stai visualizzando 8 post - dal 1 a 8 (di 8 totali)
  • Autore
    Post
  • #35286
    Anonimo
    Inattivo

    Stò cercando di imparare a programmare con il linguaggio IEC-61131 (In particolare utilizzo un modulo CPU SlimLine ARM7 con porta ethernet e RS485).

    Per iniziare ho creato un programma che legge in pulsante ed eccita alla sua pressione una uscita. Ho testato il programma sull’emulatore ed non ho avuto problemi. Ho cambiato il target per poter eseguire il download nella CPU SlimLine, ho compilato e lanciato il download (Dopo aver configurato la connessione ethernet Modbus TCP/IP). Nella finestra di output compare il seguente messaggio:

    Preparing for download .. completed.
    Downloading code into target ..

    completed.
    File D:LogicLabproveProva_1_slProva_1_sl.cod downloaded.
    Booting PLC on the target .. done.
    0 warnings, 0 errors.

    Ma al termine dell’operazione in basso a destra compare “NO CODE”. Ho cercato sul manuale, ma non ho saputo identificare il motivo del fallimento. Potete suggerirmi la strada corretta ?

    #37439
    Sergio Bertana
    Amministratore del forum

    Il tuo problema risiede nella errata definizione del sistema target. Tutti i moduli SlimLine CPU ARM7, hanno come codice MPS046****, ma occorre definire il corretto target in funzione della versione firmware installata. Come riportato sulle Note di rilascio del firmware CPU SlimLine ARM7 il cui link si trova sul sito nella pagina dei moduli CPU.

    Fino alla versione SFW167C*** occorre definire come sistema target MPS046**** 7.0
    Dalla versione SFW167D*** occorre definire come sistema target MPS046**** 8.0

    Screenshot impostazione sistema target in LogicLab. Per verificare quale versione di firmware è presente sul modulo CPU SlimLine si rimada alla lettura di questo post.

    Oltre a trasferire il programma eseguibile sul sistema target, LogicLab permette anche il trasferimento del progetto sorgente (Vedi post).

    #37448
    Anonimo
    Inattivo

    Grazie per la risposta rapida ed esaustiva. Ora riesco a programmare la CPU ed avere il messaggio “Source OK”. Purtroppo però il mio problema si è spostato: non riesco a far funzionare il programma che ho creato.

    In pratica ho connesso un pulsante che, quando premuto, porta il primo ingresso a +12V e mi aspetto (secondo il mio programma) che l’uscita DO0 mi dia anch’essa 12V (ho seguito i collegamenti come riportato sul datasheet ed ho connesso un LED in serie ad una resistenza. L’obiettivo mi pare elementare, ma purtroppo non funziona. Ho verificato le tensioni con un tester e all’ingresso arrivano correttamente i 12V, ma l’uscita è fissa a 1,2V. Ho provato anche ad utilizzare il vostro programma di esempio “IOOnCPUModule” ma non ottengo nulla (Allego stampa programma).

    #37450
    Sergio Bertana
    Amministratore del forum

    Beh il programma è proprio solo un appoggio input su output ed è scritto in modo corretto, ma tui hai anche un modulo di estensione oppure solo il modulo CPU ?

    Perche avendo definito l’ingresso P1 come %IX0.0 lo hai riferito all’ingresso 0 del modulo di estensione 0 (L’ingresso 1 dello stesso modulo sarà %IX0.1, e così di seguito). Avendo definito l’uscita motore come %QX0.0 l’hai riferita all’uscita 0 del modulo di estensione 0 (Luscita 1 dello stesso modulo sarà %QX0.1, e così di seguito).

    Quindi questo due I/O sono gestiti solo se connessi ad un modulo di estensione con indirizzo 0 connesso al bus di espansione del modulo CPU. Se invece vuoi utilizzare i due I/O presenti sul modulo CPU devi gestirli utilizzando il blocco funzione CPUModuleIO, l’argomento è trattato in questo post.

    Ho provveduto a modificare il tuo programma aggiungendo la gestione degli I/O sul modulo CPU e definendo come ingresso pulsante l’ingresso DI00 e come motore l’uscita DO00 del modulo CPU (Allego stampa e codice sorgente).

    Come vedi ho inserito il blocco funzione CPUModuleIO ed ho appoggiato gli I/O su variabili globali allocate in AUTO, perchè sarà il blocco funzione a gestirle a differenza degli ingressi %IX e delle uscite %QX che sono gestite automaticamente dal sistema.

    #37449
    Giovanni
    Partecipante

    Nel sito della axelsw è presente una versione 3.2 del programma LogicLab. Detta versione è utilizzabile ?(La versione scaricabile dal vostro sito è la 1.

    Oppure occorre usare necessariamente la versione scaricabile dal vostro sito ?

    #37465
    Sergio Bertana
    Amministratore del forum

    La ditta Axel sviluppa il programma LogicLab che poi viene utilizzato dai produttori di apparati per la programmazione. Il software scaricabile dalla Axel permette la sola simulazione su PC ma non la programmazione dei prodotti.

    LogicLab viene poi da noi ripreso con l’aggiunta dei drivers di comunicazione e con le informazioni per la programmazione dei nostri dispositivi oltre all’aggiunta nel pacchetto di installazione delle librerie e dei programmi di esempio. Quindi per programmare i nostri prodotti occorre necessariamente scaricare il software dal nostro sito.

    In merito alle versioni noi operiamo una ricodifica per tenere conto delle variazioni inserite, ma se noti nella pagina di download o se visualizzi l’about del software, trovi anche l’indicazione della versione di riferimento così come rilasciata da Axel. La versione attuale è la 1.8.0.0 basata sulla versione 2.18.0.3 della Axel (Screenshot).

    Operiamo un upgrade della versione nel caso ci siano variazioni sulle nostre librerie software o nel caso Axel abbia implementato bug fixes o migliorie di particolare importanza. A titolo informativo siamo già in fase avanzata di test di una nuova versione di LogicLab basato sulla versione 3.2.0.18 di Axel, appena saranno conclusi i test la versione sarà disponibile per il download.

    #37476
    Maurizio Conti
    Partecipante

    Buongiorno, sto iniziando ora a muovere i primi passi sulla programmazione ST in ambiente LogicLab e sto incontrando difficoltà nella realizzazione di una banale funzione che, ricevendo in input un’array di byte, restituisce come risultato un elemento di questa.

    Il  problema sembra risiedere nel passaggio dei parametri (l’array) alla funzione. La domanda è questa: l’array viene passata alla stregua delle variabili di tipo semplice (passaggio per valore) oppure occorre fare delle considerazioni particolari (passaggio per indirizzo) ?

    #37477
    Sergio Bertana
    Amministratore del forum

    Per passare un array ad una funzione od ad un blocco funzione io solitamente utilizzo la tecnica del passaggio dell’indirizzo, in questo modo mi svincolo dalle dimensioni dell’array. Nel programma di esempio (Stampa, Codice sorgente) ho realizzato una semplice funzione che estrae il valore nella posizione indicata da un array di USINT.

    Naturalmente devi controllare prima di passare il valore di Index alla funzione che esso sia nella dimensione dell’array altrimenti la funzione ti ritornerà un dato indeterminato preso nella memoria.

Stai visualizzando 8 post - dal 1 a 8 (di 8 totali)
  • Devi essere connesso per rispondere a questo topic.