Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 3,331 a 3,345 (di 4,441 totali)
  • Autore
    Post
  • in risposta a: Gestire un display alfanumerico con un modulo SlimLine #37798
    Sergio Bertana
    Amministratore del forum

    Tra i vari posts del forum c’è sicuramente qualche esempio di utilizzo della funzione SysVarsnprintf, in ogni caso ecco di seguito come visualizzare due variabili REAL sul display. La variabile LCDMessage di tipo STRING viene poi visualizzata sul display.

    (* Real 1:xxx.xxx *)
    (* Real 2:xx.x     *)

    i:=SysVarsnprintf(ADR(LCDMessage), 16+1, ‘Real 1:%7.3f ‘, REAL_TYPE, ADR(RVar[0]));
    i:=SysVarsnprintf(ADR(LCDMessage)+16, 16+1, ‘Real 2:%4.1f ‘, REAL_TYPE, ADR(RVar[1]));

    Come vedi la prima chiamata alla funzione scrive il testo seguito dal valore della variabile RVar[0] su 3 cifre intere e 3 cifre decimali. La seconda chiamata alla funzione scrive il testo seguito dal valore della variabile RVar[1] su 2 cifre intere e 1 cifra decimale. Sfrutto comunque la domanda per postare un programma (Stampa, Download sorgente), che visualizza ciclicamente (Ogni 2 secondi) 3 diversi messaggi:

    Un messaggio di solo testo.
    Un messaggio con le 2 variabili REAL.
    Un messaggio con il valore di data ed ora.

    in risposta a: Come gestire motori passo/passo con i vostri prodotti #37796
    Sergio Bertana
    Amministratore del forum

    In questo post una soluzione con driver gestito dall’uscita PWM di un modulo CPU.

    in risposta a: Gestire motori passo passo con un sistema SlimLine #37795
    Sergio Bertana
    Amministratore del forum

    I moduli SlimLine CPU ARM7 IEC61131-3, dispongono di una uscita PWM hardware (Out 0), che può generare segnali ad onda quadra con un limite di 1 Khz. Tramite il blocco funzione SysSetPWMOut, set PWM output (Estratto manuale), è possibile impostare sia la frequenza di uscita che il duty cycle.

    In realtà in generatore PWM può essere programmata per generare frequenze molto maggiori, ma l’OptoMOS di uscita taglia la frequenza. Il valore di 1 Khz è garantito, ma regolando il valore di Duty-Cycle in modo da compensare la differenza tra il tempo di ON ed il tempo di Off dell’OptoMOS si può raggiungere anche valori supuriori ai 2 Khz.

    Se si collega l’uscita Out0 con l’ingresso Inp0 utilizzando il blocco funzione SysGetCounter get counter, è possibile utilizzare il counter hardware per conteggiare gli impulsi in uscita ed in questo modo poter gestire anche il loop di posizionamento dello stepping motor.

    In questo post un’altra soluzione possibile.

    in risposta a: Gestire un display alfanumerico con un modulo SlimLine #37794
    Sergio Bertana
    Amministratore del forum

    Sono contento che il display funzioni, per la visualizzazione delle variabili puoi utilizzare la funzione SysVarsnprintf, variable print to string, ti componi una stringa con il testo ed il valore delle variabili e poi la trasferisci sul display. In merito all’indirizzamento del display sul bus I2C, ho fatto riferimento al datasheet dove è riportato.

    Four 7-bit slave addresses (0111100, 0111101, 0111110 and 0111111) are reserved for the Controller. The least significant bit of the slave address is set by connecting the input SA0 (DB0) and SA1 (DB1) to either logic 0 (VSS) or logic 1 (VDD).

    Nel mio circuito entrambi i segnali SA0 e SA1 sono connessi a VSS, quindi l’indirizzo è 16#3C.

    in risposta a: Utilizzo tipi dati definiti da utente nelle funzioni e FB #37789
    Sergio Bertana
    Amministratore del forum

    Hai ragione ho fatto un semplice programma che evidenzia il problema (Stampa, Download), ho segnalato alla Axel il problema ed in attesa di una sua soluzione, ti propongo come Workaround di utilizzare una FB al posto della Function.

    Se proprio vuoi utilizzare la Function puoi passare l’indirizzo della struttura dati come parametro alla funzione anziché definire la variabile al suo interno, così come ho fatto in questo programma (Stampa, Download).

    in risposta a: Comando in frequenza di inverter Power-One per eolico #37787
    Sergio Bertana
    Amministratore del forum

    I moduli SlimLine CPU ARM7 IEC61131-3, dispongono di una uscita PWM hardware (Out 0), che può generare segnali ad onda quadra con un limite di 1 Khz. Tramite il blocco funzione SysSetPWMOut, set PWM output (Estratto manuale), è possibile impostare sia la frequenza di uscita che il duty cycle.

    Aggiungendo al modulo CPU un modulo di acquisizione analogica è possibile acquisire il valore analogico di comando ed un semplice programma in ST può agevolmente gestire la tua applicazione. In merito all’interfacciamento con l’inverter, l’uscita è realizzata con un Opto-MOS quindi se utilizzi una sola uscita delle due presenti (Si ha un unico comune per entrambe le uscite) puoi direttamente collegarla all’inverter senza nessuna interfaccia aggiuntiva.

    in risposta a: Protezione su funzionamento librerie #37786
    Sergio Bertana
    Amministratore del forum

    Il MAC address è una informazione di sistema, viene gestita esclusivamente dal sistema operativo, non esiste nessun modo per conoscerlo da programma utente.

    in risposta a: Utilizzo tipi dati definiti da utente nelle funzioni e FB #37784
    Sergio Bertana
    Amministratore del forum

    No non vi è alcuna limitazione ad utilizzare tipi di dati definiti da utente nelle funzioni, ecco lo screenshot di un programma che ne fa uso.

    L’errore che tu hai citato A04110 Invalid data type, The data type used in the variable definition doesn’t exist. sembra un problema di errata definizione del tipo dati. Sei sicuro di scrivere correttamente il tipo dati ed hai la spunta sulla flag Case sensivity nelle opzioni di progetto (Screenshot) ?

    Siccome i tipi dati sono scritti in lettere maiuscole senza la flag di Case Sensivity potrebbero essere confuse con le stesse definizioni scritte in lettere minuscole.

    in risposta a: Protezione su funzionamento librerie #37783
    Sergio Bertana
    Amministratore del forum

    Aggiungo che in alternativa alla variabile PCode puoi utilizzare la variabile SysCustomerCode Codice customer, questo codice può essere impostato dall’utente che ha accesso come amministratore al sistema. In questo modo accedendo al sistema da Telnet con il comando SysConfig -cc xxxxxxxx potrai impostare il valore della variabile SysCustomerCode, ecco lo screenshot di Toolly.

    in risposta a: Protezione su funzionamento librerie #37782
    Sergio Bertana
    Amministratore del forum

    Per proteggere le nostre librerie esistono due metodi il Manufacturer ID (MID) ed il Device ID (DID) vedi FAQ. Questi metodi sono gestibili solo dalla Elsist, non è possibili estenderne l’utilizzo ai clienti.

    Però facendo seguito alla tua domanda vengo con una soluzione realizzabile direttamente dal cliente, la variabile di sistema SysUniqueID identifica in maniera univoca ogni sistema (Estratto manuale). Nelle tue Functions o FBs di libreria puoi controllare se il valore di una variabile (Impostabile con modbus) coincide con il valore di SysUniqueID, e se diversi ne blocchi il funzionamento.

    Naturalmente il controllo non sarà una semplice eguaglianza ma potrebbe essere frutto di un algoritmo, ti do ad esempio una semplice XOR utilizzando la variabile PCode allocata in DB 100.2048 per averla come variabile tampone.

      IF ((PCode XOR 16#FFFFFFFF) <> SysUniqueID) THEN RETURN; END_IF;

    Ma potrai sbizzarrirti con algoritmi più complessi. La variabile PCode potrà essere impostata da Modbus, in debug, o creando una pagina web apposita (Stampa e Download programma).

    in risposta a: Sistema di monitoraggio e controllo dell’abitazione #37780
    Sergio Bertana
    Amministratore del forum

    Il protocollo di comunicazione degli inverter Aurora è un protocollo Master/Slave e prevede un solo Master, quindi o colleghi l’Aurora Communicator o colleghi lo SlimLine.
     
    Alcuni clienti utilizzano lo SlimLine per acquisire i dati dall’inveter e poi gli stessi sono visualizzati su di un pannello operatore oppure su pagina web (Direttamente dallo SlimLine, vedi post) o acquisiti dallo SlimLine con un PC ma utilizzando il protocollo Modbus.

    in risposta a: Esempio movimentazione carrello in linguaggio SFC #37778
    Sergio Bertana
    Amministratore del forum

    Con un attimo di tempo libero ho provveduto ad ampliare il progetto di movimentazione carrello e/o asse aggiungendo la movimentazione automatica, come si vede dallo screenshot del programma SFC.

    In modo manuale viene atteso il comando di start per movimentare in avanti o indietro, il movimento continua fino al raggiungimento del finecorsa relativo.

    In modo automatico, su comando di start viene eseguita la movimentazione in avanti, raggiunto il finecorsa viene atteso un tempo di pausa, poi viene eseguita la movimentazione indietro. Raggiunto il finecorsa viene eseguita una pausa poi il ciclo riprende con la movimentazione in avanti. Per interrompere il ciclo automatico occorre passare in manuale.

    Ho predisposto anche un ingresso %IX0.2 di simulazione, con l’ingresso attivo vengono simulati i finecorsa dopo un tempo dall’avvio della movimentazione, in questo modo si può testare il funzionamento in modo molto più agevole, non dovendo gestire gli ingressi di finecorsa.

    Le varie azioni e transizioni sono gestite con programmi sia in linguaggio ladder LD che structured text ST, questo per dimostrare come un unico programma SFC possa contenere parti scritte negli altri 4 linguaggi della normativa IEC61131, allego stampa programma e files sorgenti.

    in risposta a: Collegamento di un HMI MT6050iV3 con CPU SlimLine #37777
    Sergio Bertana
    Amministratore del forum

    Si certo è possibile, il protocollo di comunicazione tra il panello e la CPU è il Modbus RTU che è un protocollo a pacchetti adatto ad essere utilizzato anche su linee RS485, quindi nel caso di utilizzo su RS232 sono necessari solo il Tx e Rx oltre al GND. Per la connessione al terminale MT6050 devi eseguire le connessioni:

    HMI -> Modulo CPU
    6 (Tx) -> 5 (Rx)
    9 (Rx) -> 6 (Tx)
    5 (GND) -> 4 (GND)

    Per la programmazione del terminale puoi usare un normale cavo USB To Mini USB, lo stesso che utilizzi per connetterti alla porta USB del modulo CPU SlimLine.

    in risposta a: Realizzare un multiplexer seriale programmabile #37776
    Sergio Bertana
    Amministratore del forum

    Attualmente la seriale del modulo di I/O analogico non può essere utilizzata come PCOMx.x, l’unico modulo che permette di estendere il numero di porte seriali dei sistemi SlimLine è il modulo 20I/O mixed signal. Questo modulo aggiunge una porta seriale RS232 per ogni modulo che utilizzi, ma ti trovi ad avere anche un numero di I/O che non utilizzi. Vediamo altre soluzioni possibili.

    Utilizzare un modulo CPU aggiuntivo
    Come hai detto ogni modulo CPU dispone di 3 porte seriali, interconnettendo via ethernet i moduli CPU puoi passare i dati da un modulo all’altro utilizzando l’FB UDPDataTxfer, UDP data transfer. E puoi mettere tanti moduli CPU aggiuntivi in base al numero di seriali necessarie (Nel tuo caso ne basta 1).

    Utilizzare convertitore Ethernet/Seriale in TCP/IP
    Ogni convertitore ATC-1000 può gestire una seriale, il modo più semplice di gestirli è configurare il convertitore come Client TCP definendo come Server l’indirizzo IP e la porta dello SlimLine. Sullo SlimLine dovrai mettere in ascolto dei sockets sulle varie porte TCP che utilizzi (Una per ogni convertitore). Vi sono 3 sockets liberi utilizzabili per questo servizio, il vantaggio che nel programma potrai disporre di 3 file pointers FILEP che potrai utilizzare come fossero porte seriali.

    Utilizzare convertitore Ethernet/Seriale in UDP
    Anche in questo caso ogni convertitore ATC-1000 può gestire una seriale, non disporrai più del file pointer FILEP ma dovrai utilizzare le funzioni SysUDPSktSend, UDP socket send e SysUDPSktRcv, UDP socket receive, per gestire la comunicazione. Però non vi è più il limite dei 3 sockets disponibili.

    in risposta a: Realizzazione di un semplice serial server #37774
    Sergio Bertana
    Amministratore del forum

    In questo post si può trovare un programma che realizza un semplice convertitore Ethernet/Seriale.

Stai visualizzando 15 post - dal 3,331 a 3,345 (di 4,441 totali)