Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 3,076 a 3,090 (di 4,261 totali)
  • Autore
    Post
  • in risposta a: Realizzare un semplice convertitore Ethernet/Seriale #37920
    Sergio Bertana
    Amministratore del forum

    Viste altre richieste relative a questo topic ho sviluppato il blocco funzione DataStreamExch che permette di scambiare dati tra due stream di I/O (Estratto manuale). Definendo come stream un socket TCP e come altro stream una porta seriale è facilmente realizzabile un convertitore Ethernet/Seriale.

    Allego la stampaprogramma sorgente di utilizzo di uno SlimLine come convertitore Ethernet/Seriale.

    in risposta a: Comunicazione WiFi in ambiente industriale #37918
    Sergio Bertana
    Amministratore del forum

    Come alternativa alla serie Scalance della Siemens possiamo proporre i prodotti ORing. Mentre per quanto riguarda la tua applicazione la puoi realizzare esattamente come hai figurato la rete cablata. Uno switch di rete che nel wireless sarà un access point e poi tante stations wireless una per ogni dispositivo della rete. Utilizzando una configurazione bridged (Vedi foto) tutti i dispositivi station si connettono all’access point come se fossero connessi con  un cavo di rete ethernet. In questa configurazione non vi è alcun limite di comunicazione tra i vari dispositivi della rete esattamente come in una rete cablata. Risulta evidente quindi che potrai accendere e spegnere i vari nodi indipendentemente. Naturalmente tutta la comunicazione passa attraverso l’access point che può anche essere solo alimentato e non connesso a nessuna rete ethernet e questa è esattamente la stessa situazione che hai con uno switch di rete. Come access point puoi utilizzare un dispositivo con antenna omnidirezionale (Picostation, Bullet, Rocket) mentre per le station puoi utilizzare dispositivi direzionali (NanoStation), vedi tutta la gamma Ubiquiti.

    in risposta a: Codici modbus utilizzati per la comunicazione dal pannello #37917
    Sergio Bertana
    Amministratore del forum

    I codici riportati nel menù a tendina delle impostazioni oggetto sul terminale (Screenshot) sono solo una convenzione non corrispondono ai reali codici Modbus utilizzati nel protocollo di comunicazione. Come riportato nel manuale connessioni PLC ecco una tabella con le corrispondenze tra il codice definito nell’oggetto ed il relativo codice Modbus.

    (0x) Codici Modbus: Lettura 0x01 Read coil, Scrittura 0x05 write single coil
    (0x_multi_coils) Codici Modbus: Lettura 0x01 Read coil, Scrittura 0x0F Write multiple coils
    (1x) Codici Modbus: Lettura 0x02 Read discrete input, Non gestisce scrittura
    (3x) Codici Modbus: Lettura 0x04 Read input register, Non gestisce scrittura
    (4x) Codici Modbus: Lettura 0x03 Read holding register, Scrittura 0x10 Write multiple registers
    (5x) Codici Modbus: Lettura 0x03 Read holding register, Scrittura 0x10 Write multiple registers (Swap valore)
    (6x) Codici Modbus: Lettura 0x03 Read holding register, Scrittura 0x06 Write single register (Solo un registro)
    (3xbit) Equivalente al comando 3x
    (4xbit) Equivalente al comando 4x

    in risposta a: Gestione allarmi su terminale Weintek abbinato a SlimLine #37916
    Sergio Bertana
    Amministratore del forum

    Weintek tratta gli allarmi e gli eventi nello stesso modo, saranno allarmi o eventi in base alla categoria in cui sono raggruppati. No non vi sono aree particolari per l’allocazione sullo SlimLine, si possono appoggiare i bit o le word di Allarme/Evento in tutta l’area accessibile da Modbus (DB100). Sul terminale tramite l’oggetto Allarmi è possibile definirne il testo e l’indirizzo della variabile nello SlimLine (Screenshot).

    Come si vede gli Allarmi/Eventi possono essere suddivisi per categoria di visualizzazione (Sono gestite 256 categorie), gli oggetti di visualizzazione permettono di raggrupparne la visualizzazione in base alla categoria. Potremo cosi visualizzare gruppi di Allarmi/Eventi in base alla loro priorità oppure in base alla sezione di macchina in cui sono generati, od in base alle vostre sopecifiche necessità.

    Attivando la funzione storico, si possono salvare gli Allarmi/Eventi in un file storico direttamente nel terminale (HMI) oppure su SDCard o disco USB per i terminali che li gestiscono. Verrà generato un file storico per ogni giorno con tutti gli Allarmi/Eventi memorizzati.

    Attenzione non è possibile acquisire variabili BOOL allocate ad indirizzo inferiore di DB100.16 (Topic).

    in risposta a: Connessione in RS485 a due fili #37915
    Sergio Bertana
    Amministratore del forum

    Le connessioni in RS485 possono essere tranquillamente effettuate utilizzando solo 2 fili, alcuni indicano i fli come A e B, altri come nel caso del terminale Weintek come Data+ e Data-. Se i dispositivi interconnessi in rete hanno la RS485 isolata non ci sono problemi, in caso contrario occorre tenere in considerazione è la differenza di potenziale tra i vari nodi della rete RS485.

    Il terminale Weintek ha l’alimentazione galvanicamente isolata dall’elettronica, quindi se usi la sola RS485 non vi sono problemi di differenza di potenziale in quanto tutta l’elettronica è flottante rispetto alla connessione di terra. Ma attenzione che se oltre alla RS485 utilizzi anche una connessione RS232 vincoli con il GND della RS232 la massa elettronica (Quindi anche la massa della RS485).

    Allego un estratto manuali del misuratore e del pannello operatore della parte che ne illustra le connessioni. In pratica dovrai connettere RS485 (A) dello strumento con Data+ e RS485 (B) con Data-. Vedo comunque che lo strumento ha anche un GND per la RS232, eventualmente puoi connetterlo al GND del terminale.

    Unendo i segnali GND stai mettendo insieme le masse dei due apparati e se le masse sono a terra da entrambi i lati, attento ai loop di terra, due messe a terra distanti tra di loro potrebbero non essere equipotenziali.

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

    Il simulatore interno a LogicLab non è implementato nella versione attuale, sarà disponibile dalla prossima versione in via di rilascio. Attualmente forniamo un simulatore esterno, devi selezionare il target simulatore per utilizarlo (Topic).

    Ho convertito il tuo programma per l’utilizzo con il simulatore e ti ho aggiunto la gestione dell’allarme di avanzamento asse (Download programma sorgente). Ecco lo screenshot del tuo programma in simulazione.

    in risposta a: Utilizzo del protocollo CAN open #37912
    Sergio Bertana
    Amministratore del forum

    Il protocollo CAN open segue regole ben precise, il pannello operatore può operare come nodo slave in una rete CAN open. Ma per conoscere le variabili in scambio devi fornire al pannello il file eds del tuo dispositivo e  sul tuo dispositivo devi avere implementato tutto lo stack del protocollo CAN open.

    in risposta a: Lettura dati protocollo modbus da circolatore elettronico #37911
    Sergio Bertana
    Amministratore del forum

    La rete RS485 permette proprio di poter dialogare con più dispositivi utilizzando una connessione multidrop (Tutti connessi sullo stesso doppino), per fare questo dovrai dare un indirizzo di nodo diverso ad ogni circolatore.

    Il Profilab-Expert permette di gestire il protocollo Modbus RTU e quindi ti permette di gestire la comunicazione e la visualizzazione dei dati. Naturalmente devi crearti un programma per le tue esigenze Profilab-Expert è un ambiente di sviluppo non è un programma finito.

    Per fare test sulla comunicazione Modbus ti consiglio di dare una occhiata al programma Modbus Poll.

    in risposta a: Lettura dati protocollo modbus da circolatore elettronico #37909
    Sergio Bertana
    Amministratore del forum

    Ho dato una occhiata al circolatore in questione e come si vede dal manuale modbus, è possibile acquisire i valori andando a leggere i relativi registri modbus, ad esempio:

    Registro 00216: Pump1RPM (1rpm) Giri al minuto del motore
    Registro 00218: Pump1OperatingTimeHI (1h) Tempo di utilizzo della pompa

    La connessione modbus è una seriale RS485, per la connessione al PC puoi utilizzare un convertitore USB/Seriale (Esempio ATC-850). Ma poi ti servirà un programma sul PC che gestisca il protocollo Modbus andando ad acquisire i registri che ti interessano, in questo topic trovi ulteriori informazioni.

    Se invece vuoi visualizzare i valori e/o gestire una automazione utilizzando i prodotti della linea SlimLine puoi acquisire i registri via Modbus e visualizzarli su pagina web e/o su pannello operatore. Se fai una ricerca nel forum con la parola Modbus troverai centinaia di topics che trattano l’argomento.

    in risposta a: Gestione pagine web dinamiche da parte dell’utente #37908
    Sergio Bertana
    Amministratore del forum

    In questo topic viene trattato l’utilizzo delle Google Charts per la visualizzazione di dati in forma grafica su pagine web.

    in risposta a: Come scrivere funzioni e blocchi funzioni in LogicLab #37907
    Sergio Bertana
    Amministratore del forum

    Un blocco funzione per decomprimere la WORD in 16 BOOL potrebbe essere scritto nel modo che ti indico sotto. Naturalmente devi mettere tutti i bits, io ti ho solo messo un esempio con i primi e gli ultimi.

      b00:=TO_BOOL(In AND 16#0001); (* Bit 0 result *)
      b01:=TO_BOOL(In AND 16#0002); (* Bit 1 result *)

      b07:=TO_BOOL(In AND 16#0080); (* Bit 7 result *)
      b08:=TO_BOOL(In AND 16#0100); (* Bit 8 result *)

      b15:=TO_BOOL(In AND 16#8000); (* Bit 15 result *)

    Per il problema dell’orologio, ti consiglio di eseguire un upgrade del firmware dei moduli (Vedi nota). Ma aspetta qualche giorno che sia stata pubblicata la versione SFW184A800 che ha anche le pagine web così come hai visto nel mio screenshot.

    in risposta a: Come scrivere funzioni e blocchi funzioni in LogicLab #37905
    Sergio Bertana
    Amministratore del forum

    Prendo spunto dalla tua richiesta per realizzare un programma in cui ho definito due FB identiche nel funzionamento ma realizzate con due linguaggi diversi. In questo modo desidero dimostrare come sia possibile ad esempio utilizzando il linguaggio FBD realizzare la FB di cui tu hai bisogno BitToWordFBD, semplicemente richiamando altre FB di libreria.

    Nello stesso programma troverai anche la BitToWordST, dove realizzo quello di cui hai bisogno in modo nativo in linguaggio ST. Ora ognuno può usare la tecnica che vuole per realizzare le proprie FB ma credo sia preferibile sempre raggruppare funzioni o FB già scritte e testate piuttosto che realizzare una FB completamente da zero. Ecco la stampa ed il download del programma.

    In merito alla impostazione della data nella pagina General Setup basta impostare il nuovo valore di data ed ora e agire sul tasto Save (Screenshot). Devi fare attenzione a scrivere la data e l’ora nel formato in cui sono visualizzate, mantenendo sia la barra che i due punti di separazione tra le cifre senza interporre spazi, l’anno và scritto su 4 cifre.

    in risposta a: Effettuare la scalatura di un valore #37903
    Sergio Bertana
    Amministratore del forum

    Si è proprio la funzione Linearize (Estratto manuale) che ti serve. Come vedi dal manuale devi fornire alla funzione gli indirizzi di due array di variabili REAL.

    VInReference, Array con i valori in ingresso da linearizzare (Nel tuo caso 1.0, 2.0, ecc.).
    VOutReference, Array con i valori di uscita linearizzati (Nel tuo caso 1.0, 1.5, ecc.).

    La funzione esegue la ricerca nell’array VinReference del valore immediatamente superiore al valore in ingresso interpolando linearmente tra il valore trovato e quello precedente, calcolando il valore in uscita in base ai due valori presenti nelle stesse posizioni dell’array VOutReference. Naturalmente il valore in uscita sarà molto piuù preciso quanti più punti avrai tabellato nei due arrays.

    in risposta a: Riconoscere da programma utente i moduli di espansione #37900
    Sergio Bertana
    Amministratore del forum

    SlimLine come tutti i PLC lavora in immagine di processo, il sistema riconosce i moduli di I/O logici connessi al bus di estensione che vengono gestiti automaticamente sulla esecuzione della task Slow. La funzione SysSetPhrDO si utilizza solo nel caso si desideri acquisire ingressi o gestire uscite immediatamente senza attendere la gestione automatica in immagine di processo.

    Naturalmente la gestione del bus I2C utilizza tempo processore e quello che succede è che il tempo di esecuzione della task Slow ha subito un aumento solo per il fatto di avere collegato il modulo al sistema. La task Slow interrompe l’esecuzione della task Back.

    Però ti voglio ricordare che la gestione seriale è eseguita in interrupt sul processore e quindi i dati seriali sono sicuramente ricevuti e caricati nel buffer di ricezione a qualsiasi velocità essi arrivino. Sarà poi il tuo programma con la chiamata alla funzione SysGetIChars a verificare se sono stati ricevuti dati tra una esecuzione e l’altra e potrà leggerli con le funzioni Sysfgetc e Sysfread fino a svuotare il buffer.

    Lo stesso vale per la trasmissione, il programma utente con la funzione SysGetOSpace può controllare quanto spazio c’è nel buffer di trasmissione seriale e con le funzioni Sysfputc e Sysfwrite, potrà trasferire i caratteri da trasmettere nel buffer di trasmissione. Il sistema operativo autonomamente provvederà ad inviarli sulla seriale indipendentemente dalla esecuzione del programma utente.

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

    Il blocco funzione SysSetPWMOut può operare solo sulla uscita DO00 del modulo CPU ARM7. La nuova versione del firmware SFW184A800 è pronta, stiamo facendo gli ultimi aggiornamenti sull’ambiente di sviluppo LogicLab per implementare le nuove funzionalità, non ho ancora una data certa di rilascio ma è sicuramente questione di un paio di settimane.

    Per la gestione di stepping motors ho trovato interessante l’approccio che ho consigliato ad un nostro cliente un po di tempo fa (Topic).

Stai visualizzando 15 post - dal 3,076 a 3,090 (di 4,261 totali)