Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 556 a 570 (di 4,379 totali)
  • Autore
    Post
  • in risposta a: Gestione RFiD readers da programma PLC #72068
    Sergio Bertana
    Amministratore del forum

    Il lettore RFID R3 ha uscita Wiegand quindi viene acquisito con counters appoggiati ad ingressi digitali, il ns modulo CPU compact può gestire fino a 4 counters quindi può acquisire 2 lettori (Vedi WiegandDcd). Quindi trattandosi di ingressi digitali a 12Vdc la distanza può arrivare a 100mt, ma attenzione che i segnali non siano disturbati dall’accoppiamento con altri cavi di potenza (crosstalk).

    Ora occorre considerare la velocità di acquisizione dei segnali, come hai visto dalla documentazione del FB WiegandDcd, occorre acquisire i counters ogni 1mS, sul modulo CPU questo non crea problemi, sui moduli di espansione si deve fare i conti con i tempi del bus (ca 400uS per acquisire un counter) è evidente che l’acquisirne 2 saturerebbe il tempo a disposizione. Quindi per acquisire più contatori consiglio di utilizzare più moduli CPU interconnessi vie Ethernet.

    Una soluzione alternativa, se non ti occorre la tastiera, è utilizzare un lettore seriale MW-D7x, utilizzando una connessione RS485 in multidrop puoi collegare più lettori al modulo CPU. (Vedi RFiDMWD7xTAGRd). Anche se non c’è un limite sul numero di lettori collegabili, per avere tempi di reazione accettabili su lettura TAG e gestione beeper consiglio un massimo di 2/3 lettori.

    Ma abbiamo clienti che hanno realizzato applicazioni con più lettori (Esempio 10) connessi ad un modulo CPU, dove per mantenere un’ottima velocità di reazione si sono utilizzati 4 convertitori Ethernet/Seriale ognuno dei quali gestisce 2 lettori, e 2 lettori connessi al modulo CPU.

    in risposta a: Valore variabili REAL IEEE754 #71984
    Sergio Bertana
    Amministratore del forum

    Dalla versione 5.22.x.xx di LogicLab è stata introdotta la possibilità di definire la cartella del repository delle librerie.

    Questa soluzione permette di semplificare la gestione delle librerie, ora viene rilasciata una raccolta di librerie (Codice Pck055xxxx) che contiene tutte le librerie in questo modo basta inserire l’oggetto desiderato nel progetto che LogicLab provvederà autonomamente a cercarlo nella cartella delle librerie senza dover più andarlo ad includere manualmente nel progetto, per la gestione delle librerie rimando a questo articolo.

    in risposta a: Valore variabili REAL IEEE754 #71969
    Sergio Bertana
    Amministratore del forum

    NaN acronimo di Not a Number, è un simbolo di avvertimento indicante che il risultato di un’operazione (numerica) è stata ottenuto eseguendola su operandi non validi (specialmente in calcoli in virgola mobile). Ma esiste anche la definizione INF per indicare un valore infinito.

    Il FB SysGetAnInp ritorna NaN in caso di problemi sulla acquisizione del valore analogico.

    Proprio per risolvere questi problemi di interpretazione dei numeri è stata aggiunta la funzione VarVCheck.

    in risposta a: Tastiera su porta USB condivisa #71957
    Sergio Bertana
    Amministratore del forum

    Ai pannelli può essere connesso un HUB USB e connetter più devices.

    Nel tuo caso il problema è che il lettore è visto dal pannello come emulatore tastiera, quindi è probabile che vada in conflitto con la tastiera. Puoi agire sul bit:

    LB-9064 enable USB barcode device (disable keyboard) (when ON)

    Per disattivare il lettore di bar code ed utilizzare la tastiera, ma devi vedere come fare coesistere i due dispositivi.

    in risposta a: Gestione ricette a più indici su RW #71955
    Sergio Bertana
    Amministratore del forum

    Puoi allegare le macro in testo e non come immagini così si possono verificare più facilmente…

    in risposta a: Informazioni sul client OPC-UA #71951
    Sergio Bertana
    Amministratore del forum

    Verifica le impostazioni di sicurezza del client OPC-UA (Screenshot).

    in risposta a: Installazione di più versioni di LogicLab su stesso PC #71701
    Sergio Bertana
    Amministratore del forum

    Veniamo alla prima domanda, è possibile installare versioni diverse di LogicLab solo se sono versioni major (Quindi 3, 4, 5) indicando in fase di installazione una cartella diversa per ogni versione (Screenshot).

    Axel che sviluppa LogicLab opera in modo da mantenere sempre la compatibilità delle nuove versioni con i programmi sviluppati con versioni precedenti, quindi non dovrebbe essere necessario dover installare più versioni.

    Il problema che lamenti tu è il passaggio dalla nostra architettura XTarget ad XUnified, che come spiegato in questa nota può essere facilmente gestito con le opportune librerie  di supporto. Quindi è possibile con le nuove versioni di LogicLab compilare anche i programmi sviluppati con le precedenti versioni. Naturalmente quando apri un programma vecchio con la nuova versione di LogicLab non devi eseguire upgrade delle librerie.

    Una ulteriore complicazioni è stata introdotta con il rilascio della versione 5.22.x.xx, dove gli sviluppatori Axel hanno aggiunto controlli sulla sintassi del programma quindi possono insorgere alcune warnings in compilazione che non inficiano la funzionalità del programma compilato, leggi articolo.

    in risposta a: Utilizzare il pannello come browser web #71694
    Sergio Bertana
    Amministratore del forum

    I pannelli Cloud HMI Serie cMT-3000X Advanced supportano un oggetto Web Browser HTML che supporta l’HTML5 ma non ha il supporto alle applet java.

    Abbiamo applicazioni in cui questi pannelli sono utilizzati per visualizzare pagine da Web server in HTML5, ma detto questo è sempre consigliato un test per verificare performance e funzionalità in quanto il browser su HMI è custom e non ha gli aggiornamenti di un classico browser PC.

    in risposta a: Booléen expression in EasyBuilderPro #71688
    Sergio Bertana
    Amministratore del forum

    Certo che è possibile, come si vede dallo screenshot precedente la condizione del bit LB 10 dipende dalla condizione:

    LB 10 = (LB 0 = ON) AND (LB 1 = OFF)

    In pratica la condizione NOT si applica inserendo nella condizione il controllo sulla condizione OFF dell’operando.

    in risposta a: Gestione sicurezza HMI con Easyaccess #71685
    Sergio Bertana
    Amministratore del forum

    Probabilmente usi l’App cMTViewer tramite accesso remoto da EasyAccess per la visualizzazione del pannello. in tal caso ti ricordo che ogni connessione ha il suo utente e per la gestione corretta devi utilizzare le variabili PLW (Vedi topic).

    Se invece usi VNC anche da accesso remoto condividi la visualizzazione dell’utente locale e quindi operi con le variabili LW.

    in risposta a: Gestione database su file CSV con macro #71681
    Sergio Bertana
    Amministratore del forum

    Se usi il pannello la soluzione è utilizzare le query SQL (Vedi articolo) in questo modo hai un completo accesso a tutte le funzioni di ricerca. Ti allego due esempi forniti da Weintek che possono esserti utili per lo sviluppo della applicazione (Download).

    • Recipe_Import_Export_File_Browser_Demo, che permette l’importazione/esportazione database ricette da/verso file CSV.
    • Macro_Recipe, che opera con query sulle ricette.

    Se come PLC usi i ns istemi SlimLine puoi operare direttamente su file CSV, il programma TagFinder permette proprio di cercare in un file CSV un campo, mentre con il programma ST_DataLoggerOnCSVFile puoi vedere come scrivere dati su file CSV.

    in risposta a: Informazioni su comunicazione CANOpen #71676
    Sergio Bertana
    Amministratore del forum

    L’errore X4097 Recursive POU è un errore di ricorsione (es funzione che chiama sé stessa), il compilatore dovrebbe darti qualche indicazione in più. Eventualmente invia al supporto  il programma che diamo una occhiata.

    La gestione delle librerie è in corso di modifica nelle ultime versioni di LogicLab, la voce “Importa oggetti” si attiva solo selezionando una cartella nel tree di progetto (Screenshot).

    in risposta a: Errori comunicazione Modbus RTU #71668
    Sergio Bertana
    Amministratore del forum

    Con il programma mi è più facile capire dove stanno i problemi. Hai realizzato un FB che poi hai utilizzato con la tecnica in cascata, ma hai commesso un errore molto grave, la tecnica prevede che il Done di ogni FB rimanga attivo fino alla disabilitazione dell’Enable, ma nel tuo caso non è così. Il codice

      Done:=ACMdb.Done; //Execution done

    Essendo l’istanza Mdb di tipo ModbusMaster_v2 la stessa per tutti i FB di gestione moduli, connessa al FB ACMdb di tipo ACModbus_v2, in questo modo il Done del FB Mdb si propaga in tutti i FB andando a resettare fuori sequenza il relativo Done.

    Ho realizzato un esempio con una nuova FB di gestione modulo, che vista la necesità di solo 2 comandi modbus ho preferito utilizzare direttamente la chiamata al FB Mdb senza utilizzare la ACModbus_v2. Ecco il listato.

    FUNCTION_BLOCK IOModule
    VAR
        CaseNr : USINT; (* Program case *)
        AOutputs : ARRAY[0..8] OF WORD; (* Digital outputs value *)
        HW : ARRAY[0..1] OF WORD;
    END_VAR
    
    VAR_INPUT
        Enable : BOOL; (* Enable *)
        Node : USINT; (* Modbus node *)
        Setpoint : UINT;
        MMdb : @ModbusMaster_v2; (* Modbus master *)
    END_VAR
    
    VAR_OUTPUT
        Done : BOOL; (* Execution done *)
        Ao00 : UINT;
        Ao01 : UINT;
        Ao02 : UINT;
        Ao03 : UINT;
        Ao04 : UINT;
        Ao05 : UINT;
        Ao06 : UINT;
        Ao07 : UINT;
        Ao08 : UINT;
    END_VAR
    
    // *****************************************************************************
    // FUNCTION BLOCK "IOModule"
    // *****************************************************************************
    // Gestione modulo I/O.
    // -----------------------------------------------------------------------------
    
        // -------------------------------------------------------------------------
        // GESTIONE INIZIALIZZAZIONE
        // -------------------------------------------------------------------------
        // Gestione disabilitazione.
    
        IF NOT(Enable) THEN CaseNr:=0; Done:=FALSE; RETURN; END_IF;
        IF (Done) THEN RETURN; END_IF;
    
        // -------------------------------------------------------------------------
        // GESTIONE SEQUENZE PROGRAMMA
        // -------------------------------------------------------------------------
        // Gestione sequenze programma.
    
        CASE (CaseNr) OF
    
            // ---------------------------------------------------------------------
            // Eseguo impostazione valori.
    
            0:
            HW[0]:=1000;
            HW[1]:=Setpoint;
    
            @MMdb.Enable:=TRUE; //Modbus enable
            @MMdb.Node:=Node; //Node number
            @MMdb.FCode:=16#10; //Modbus function code
            @MMdb.Address:=1; //Modbus register address
            @MMdb.Points:=SIZEOF(HW)/2; //Modbus register points
            @MMdb.Buffer:=ADR(HW); //Memory buffer address
            IF NOT(@MMdb.Done) THEN RETURN; END_IF;
            @MMdb.Enable:=FALSE; //Modbus enable
            CaseNr:=CaseNr+1; //Program case
    
            // ---------------------------------------------------------------------
            // Eseguo lettura valori.
    
            1:
            @MMdb.Enable:=TRUE; //Modbus enable
            @MMdb.Node:=Node; //Node number
            @MMdb.FCode:=16#03; //Modbus function code
            @MMdb.Address:=1; //Modbus register address
            @MMdb.Points:=SIZEOF(AOutputs)/2; //Modbus register points
            @MMdb.Buffer:=ADR(AOutputs); //Memory buffer address
            IF NOT(@MMdb.Done) THEN RETURN; END_IF;
            @MMdb.Enable:=FALSE; //Modbus enable
            Done:=TRUE; //Execution done
          END_CASE;
    
    // [End of file]

    Allego il programma IoModbus, con la versione originale del tuo programma e la versione da me modificata (Download).

    Sergio Bertana
    Amministratore del forum

    Dal menù Project -> Address (Screenshot) puoi esportare le TAGs in un file CSV oppure Excel. Poi con un comune TextEditor se file CSV oppure con Excel puoi editare il file e con un cerca/sostituisci modificare il nome del PLC.

    Terminata la sostuitizione potrai reimportare le TAGs nel progetto.

    in risposta a: Informazioni sul client OPC-UA #71648
    Sergio Bertana
    Amministratore del forum

    Probabilmente hai un modello iP che non supporta le impostazioni per la sincronizzazione oraria. Quindi basterà sincronizzare l’orario del pannello con quello del PC volendo durante il download, questo si fa direttamente dal pannello quando si scarica il progetto c’è un flag apposta.

    In simulazione l’orario viene preso dal PC, quindi basterà che il PC abbia un indirizzo IP della stessa classe del server OPC-UA, ho visto che avete messo un 192.168.1.100 come server OPC-UA, nelle impostazioni di rete del PC ci vuole un 192.168.1.xxx che non sia .100 finale, se ci sono altri indirizzi IP provate a cancellarli lasciando solo questa classe di rete.

    Proverei con un progetto vuoto, inserendo un tag alla volta, non so se hai delle sicurezze sugli utenti, io consiglio sempre almeno per la prima volta come test, di entrare in modalità anonima senza sicurezze, partiamo almeno così a comunicare.

    Possiamo provare anche lato server OPC-UA a fare un progetto di test, dove ci condividono solo qualche tag, un bool e un INT per esempio.

    Farei un paio di prove di questo genere, è un driver totalmente simbolico quindi sicuramente non possiamo sbagliare a puntare alle tag.

Stai visualizzando 15 post - dal 556 a 570 (di 4,379 totali)