Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 2,461 a 2,475 (di 4,264 totali)
  • Autore
    Post
  • in risposta a: Come inserire un FB in un programma ladder #38896
    Sergio Bertana
    Amministratore del forum

    Ipotizzando di realizzare un nuovo progetto, dopo avere aggiunto al progetto la libreria eSLineC2SysLib (Vedere capitolo Librerie sul Manuale programmazione IEC61131-3) è possibile inserire in un programma ladder il FB di acquisizione analogica SysGetAnInp.

    Questo FB non dispone di un ingresso BOOL di abilitazione quindi per inserirlo in un programma ladder occorre utilizzare un oggetto Box with EN. Questo tipo di oggetto aggiunge in automatico al FB l’ingresso EN di abilitazione che permette di connetterlo al ramo logico del programma ladder. Per spiegare i concetti ho realizzato una semplice Nota applicativa che illustra passo per passo le operazioni da eseguire. Download programma di esempio per l’acquisizione di una termocoppia.

    in risposta a: Ricetta da HMI abbinata a struttura dati su SlimLine #38895
    Sergio Bertana
    Amministratore del forum

    La soluzione scelta è corretta, per  gestire le ricette è buona norma definire una struttura dati nello SlimLine abbinata ai dati della ricetta sul terminale, in questo topic si parla di come gestire le ricette.

    Una curiosità perchè hai definito 3 strutture dati se i dati sono identici per ogni ricetta ? Meglio definire una sola struttura dati e poi allocare un array di strutture con 3 elementi. E con questo rispondo alla tua domanda sul tipo dati, il tipo dati nelle variabili globali sarà un array di 3 elementi di tipo struttura dati da te definita (Ecco uno screenshot di esempio).

    Ora nella definizione della struttura dati puoi mischiare tutti i tipi che desideri, ma attenzione alla loro allocazione in memoria (Vedo che già conosci il problema della divisibilità per 2 delle variabili a 16 bit e per 4 delle variabili a 32 bit). Se noti nella mia definizione della struttura ho volutamente definito Umidita dopo Temperatura per evidenziare il concetto.

    Naturalmente sul terminale quando definisci la ricetta dovrai definire anche le variabili Dummy di riempimento così come sono definite nella struttura dati.

    in risposta a: Esecuzione macro periodica all’interno di una pagina #38894
    Sergio Bertana
    Amministratore del forum

    Devi definire nella macro oltra alla esecuzione periodica anche Esegui su condizione, impostando come condizione l’attivazione di un bit (Nel mio esempio LB 0).

    Ora nella pagina dove vuoi che la macro venga eseguita inserisci due oggetti Imposta Bit, che li definirai trasparenti in modo da non essere visibili. Uno di questi definito con Imposta ON quando apri pagina attiverà il bit LB 0, l’altro definito con Imposta OFF quando chiudi pagina, disattiverà il bit LB 0.

    Ti ho fatto un semplice programma di esempio che puoi testare direttamente simulandolo sul PC con EasyBuilderPro (Download progetto).

    in risposta a: Utilizzo di Picoface con SlimLine #38893
    Sergio Bertana
    Amministratore del forum

    Ecco lo screenshot di un programma essenziale di come si utilizza il terminale Picoface connesso allo SlimLine. Nel progetto occorre includere la libreria eHMIBuiltInLib (Menù Project -> Library manager), il progetto di esempio in questo topic contiene l’ultima versione.

    Per gestire il terminale Picoface connesso al bus di estensione, come vedi, viene aperto un file pointer sullo stream PCOM15.1 e poi viene passata la variabile Fp alla FB di gestione del terminale Picoface. Nella sezione Resources è possibile aggiungere un HMI con la definizione dei messaggi display (Nel progetto di esempio l’ho chiamato Messages). Nella FB di gestione Picoface occorre passare la variabile Messages.HMIBuiltInID.

    Ecco come si presenta nella sezione Resources la definizione di un messaggio display (Screenshot). Come vedi sono impostati i testi da visualizzare con il riferimento alle variabili. Durante la visualizzazione sul display i tags delle variabili saranno sostituiti dal reale valore. Sono gestibili sul terminale solo le variabili allocate nella DB 100.

    Per inputare da tastiera una variabile occorre selezionarla con il tasto FUN del terminale (Il valore della variabile diventa lampeggiante) poi agendo sul tasto CLR è possibile inputare un nuovo valore.

    Puntandosi con il mouse sull’albero dei messaggi ed agendo sul tasto destro è possibile inserire nuovi messaggi (Screenshot). Da terminale Picoface sarà possibile navigare tra i messaggi con i tasti freccia Su, Giù, Destra, Sinistra (Download progetto).

    in risposta a: Comunicazione con protocollo Modbus master #38890
    Sergio Bertana
    Amministratore del forum

    Di solito lascio la gestione al loop successivo. Trovo il tempo da te indicato molto lungo, hai molte interrogazioni modbus o hai un baud rate molto basso per avere tempi fino a 5 Sec.

    Però mi hai meso una pulcina nell’orecchio… potrei pensare di modificare (Tempo permettendo) il FB ModbusMaster aggiungendo la gestione di retries sul comando.

    in risposta a: Comunicazione con protocollo Modbus master #38888
    Sergio Bertana
    Amministratore del forum

    Tutte i FB che gestiscono stream di comunicazione (Seriale, UDP, TCP/IP) o accedono al file system devono essere eseguiti nella task di Back.

    Se le interrogazioni Modbus non sono molte puoi istanziare tante istanze della FB ModbusMaster quante sono le interrogazioni (Lettura/Scrittura) da eseguire (Questo topic spiega come mettere in cascata le varie istanze, ecco uno screenshot). In questo modo si ha uno “spreco” nell’utilizzo delle risorse in quanto ogni istanza del FB occupa memoria RAM anche se vi è una esecuzione sequenziale delle varie istanze.

    Molto più ottimizzato è l’utilizzo di una singola istanza del FB a cui vengono ciclicamente passati i parametri di configurazione, nodo del dispostivo con cui comunicare, codice funzione e range indirizzi del comando da eseguire. Il modo migliore per realizzarlo è gestire da ST una macchina a stati con l’operando CASE. Nel forum ci sono posts che trattano l’argomento ma a titolo di esempi ti allego un programma che utilizza questa tecnica (Download sorgente).

    Come vedi dalla stampa del programma, si tratta di un programma che comunica con drivers brushless, tutti i comandi mosdbus operano su registri a 32 bits (2 registri modbus) ed è eseguito anche lo swap tra MSB e LSB. Altra particolarità è la gestione di un socket TCP per permettere il dialogo con il driver “passando” tramite lo SlimLine. Aprendo una connessione con la porta 2000 è possibile da TCP/IP comicare su RS485 con i drivers (In questo topic si tratta l’argomento).

    Troverai il programma un pò più complesso (Per ogni interrogazione modbus viene utilizzata una struttura dati) perchè per velocizzare la comunicazione per i comandi di scrittura verso il driver viene mantenuta una copia del valore scritto ed il comando Modbus viene eseguito solo se il programma utente cambia i valori da scrivere.

    in risposta a: Problema su ladder diagram, LogicLab và in crash #38886
    Sergio Bertana
    Amministratore del forum

    Il FB ModbusMaster utilizza la nuova funzione SysSpyData (Topic) che è disponibile dalla versione SFW184A800 del sistema operativo (Solo sugli SlimLine versione B).

    In questo topic un workaround per aggirare il problema se il tuo SlimLine è una versione A. In questo topic le informazioni per come aggiornare il tuo sistema se è uno SlimLine versione B.

    in risposta a: Problema su ladder diagram, LogicLab và in crash #38883
    Sergio Bertana
    Amministratore del forum

    Intanto alcune precisazioni, il blocco funzione per la gestione del protocollo Modbus master ha subito diverse revisioni ed affinamenti (Topic). L’ultima versione il ModbusMaster gestisce tutti e tre i tipi di protocollo Ascii, RTU e TCP/IP, ti consiglio di utilizzare questa versione al posto del precedente ModBusRtuMaster.

    Poi come in tutti i miei esempi in LD, utilizzando il FB ModbusMaster non servono gli I/O EN/ENO, pertanto ti consiglio di eliminarli dalla grafica (Topic).

    Detto questo, dalla tua descrizione non mi è chiaro il tuo problema, il modo migliore è di inviare alla mail di supporto (Vedi link)  il tuo progetto in modo che io possa capire il tuo problema.

    in risposta a: Utilizzo PLC con pannelli operatore e I/O remoti #38882
    Sergio Bertana
    Amministratore del forum

    Visto che hai già esperienza di programmazione di altri prodotti, credo che il passaggio all’ambiente LogicLab sia semplice, inoltre come hai detto tu la guida PLC in pratica è un ottimo supporto. Nel forum troverai inoltre molti esempi di programmi in codice sorgente pronti per il download.

    Per quanto riguarda la tua domanda sulla comunicazione tra il pannello HMI ed il PLC, utilizzando EasyBuilder Pro puoi sviluppare il progetto HMI e poi testarlo direttamente connesso al modulo CPU (Il simulatore funziona per 15 min). In questo topic un progetto di esempio, il progetto è sviluppato con il vecchio tool EasyBuilder 8000 ma lo puoi importare in EasyBuilder Pro.

    Consiglio… Se acquisti un modulo CPU per delle prove ti consiglio il modello Compact con ethernet, così puoi testare tutte le funzionalità del prodotto e nella simulazione con l’HMI utilizzando la ethernet puoi eseguire contemporaneamente il debug della applicazione PLC con LogicLab.

    Inoltre se dovessimo attivare un supporto tecnico On-Line la connessione ethernet permette a noi di “vedere” tutti i dispositivi da remoto.

    in risposta a: Collegamento WiFi tra diversi dispositivi PLC #38880
    Sergio Bertana
    Amministratore del forum

    La crittografia sulla comunicazione WiFi è attivabile in tutte le configurazioni, e sicuramente anche in configurazione access point e stations che è là più utilizzata per la distribuzione del segnale WiFi.

    Il fatto che la rete degli SlimLine sia connessa ad router ADSL di fatto non incide sulla sicurezza, il problema nasce solo se tu configuri il router per avere accesso in NAT dalla rete Internet verso la rete locale magari per la programmazione remota dei dispositivi SlimLine.

    In questo caso se dai accesso da Internet alla porta del Modbus per evitare che i dispositivi SlimLine vengano programmati da eventuali hackers dovrai disabilitare da Telnet il protocollo modbus (Comando sysconfig -mtcpd). Potrai abilitarlo solo quando vuoi accedervi tu per la programmazione (Comando sysconfig -mtcpe).

    in risposta a: Libreria per gestione modem #38877
    Sergio Bertana
    Amministratore del forum

    Sui sistemi programmabili con LogicLab come hai fatto giustamente notare esiste una libreria per la completa gestione del modem. Non abbiamo fatto il porting della libreria con CODESYS ma credo che puoi trovare librerie analoghe già pronte sul mercato.

    Eventualmente puoi gestire direttamente da programma ST i comandi AT del modem per gestire l’invio dei messaggi SMS (Topic).

    in risposta a: Strane differenze tra simulazione e risultati reali #38876
    Sergio Bertana
    Amministratore del forum

    Informato Axel del problema, posto la risposta ricevuta.

    Abbiamo effettivamente verificato, non funziona il cast implicito di una costante come parametro a una funzione. La soluzione, per ora, è appoggiare il paramentro su una variabile (o aggiungere .0 alla costante). Apriamo il ticket #LL-1418: Wrong implict conversion to REAL of a costant, passed as function’s argument

    in risposta a: Strane differenze tra simulazione e risultati reali #38875
    Sergio Bertana
    Amministratore del forum

    Ho visto il tuo progetto e l’errore che hai commesso è nella definizione dei valori di limite alla funzione ValueScale, la funzione vuole un valore di tipo REAL che vanno sempre definiti con l’indicazione del decimale. In pratica non devi scrivere 0 ma 0.0, non 10 ma 10.0, ecc…

    Probabilmente il compilatore sul simulatore è in grado di convertire il formato in REAL mentre il compilatore sul target non esegue la conversione. Farò presente questa discrepanza alla Axel.

    Ecco lo screenshot del programma in esecuzione sul sistema target (SlimLine con modulo espansione 20I/O mixed signal), allego programma sorgente.

    in risposta a: Posizionamento di un asse #38874
    Sergio Bertana
    Amministratore del forum

    Esame superato a pieni voti… Con il FB IOEncoder si possono utilizzare due ingressi digitali per acquisire segnali da un encoder in quadratura. Naturalmente essendo la gestione tutta software occorre che il ciclo macchina di esecuzione del FB sia compatibile con la frequenza massima dell’encoder da acquisire.

    Dovendo campionare i segnali encoder almeno 4 volte per ciclo, se ne deduce che la frequenza massima dell’encoder nel caso di FB eseguita ogni 1 mS è di 200 Hz.

    Il FB SysGetEncoder invece utilizza un circuito hardware presente nei moduli di I/O che permette di acquisire segnali fino a 50 KHz. Standard è possibile gestire un encoder per modulo di espansione, ma su richiesta possiamo fornire packages hardware specifici per poter gestire più encoders sullo stesso modulo di I/O.

    in risposta a: Posizionamento di un asse #38872
    Sergio Bertana
    Amministratore del forum

    Sicuramente la tua esposizione è corretta il sistema è fattibile nei termini in cui lo hai esposto. Per la lettura encoder devi usare il FB SysGetEncoder che acquisisce l’encoder tramite il circuito hardware del modulo di estensione. Puoi utilizzare il PWM out del modulo CPU (In questo topic alcune considerazioni in  merito).

    Per le rampe di accelerazione e decelerazione puoi utilizzare il FB LRamp, Linear Ramp. Ora se il tuo problema è di fare solo un posizionamento e non hai problemi di velocità, concordo con te che è fattibile. Calcoli la traiettoria di rallentamento per arrivare un pò in anticipo sulla quota e poi percorri l’ultimo pezzo in velocità lenta per avere la precisione sulla quota.

    Però la tendenza generale è quella di utilizzare drivers intelligenti, il PLC dialoga con il driver (Esempio in modbus), ed è il driver che gestisce il posizionamento. Esistono drivers anche per piccoli motori sia stepping (Topic) che brushless.

    In questo topic un programma spartano per la gestione del posizionamento di un asse.

Stai visualizzando 15 post - dal 2,461 a 2,475 (di 4,264 totali)