Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 1 a 15 (di 4,367 totali)
  • Autore
    Post
  • in risposta a: Campionamento dati EBPro con sincronizzazione oraria #84369
    Sergio Bertana
    Amministratore del forum

    Il problema della sincronizzazione data/ora tra sistemi diversi (Esempio tra PLC e pannello) è un problema comune a molti. Per i nostri sistemi SlimLine abbiamo predisposto il blocco funzione WeintekHMIClock.

    Per il tuo problema assodato che la data/ora tra pannello e PLC sia molto simile (Ad esempio entrambi si aggiornano con un server orario) il modo più immediato è attivare il comando da PLC qualche secondo prima della mezzanotte in modo da essere certi che il pannello ha ancora la data sullo stesso giorno. In questo caso perderesti il conteggio dei pezzi tra l’attivazione del comando e la mezzanotte.

    Puoi anche gestire il comando tramite una macro da pannello (La LW 9020 ritorna il valore del giorno) quindi basta confrontarla con un valore memorizzato alla esecuzione precedente della macro e quando cambia forzare il comando di salvataggio. Ma anche in questo caso non sei certo che il giorno sia effettivamente cambiato anche sul PLC.

    in risposta a: Lettura dati Modbus da PLC #84362
    Sergio Bertana
    Amministratore del forum

    A seguito della tua richiesta ho realizzato il programma di esempio ST_ModbusExchange che trovi in fondo a questo articolo.

    in risposta a: Lettura dati Modbus da PLC #84351
    Sergio Bertana
    Amministratore del forum

    Non so se ho capito bene la tua domanda…

    Mi sembra che tu debba gestire una connessione Modbus tra un PLC MPS056 e diversi apparecchi in RS485 e che durante la fase di messa in servizio tu debba accedere agli stessi apperecchi da un PC per configuare registri Modbus che sono utilizzati solo nella messa in servizio e quindi non sono coinvolti nella comunicazione con il PLC.

    La prima considerazione è che avendo l’MPS056 solo una porta seriale RS232 immagino tu abbia utilizzato un convertitore Seriale/Seriale o in alternativa un convertitore Ethernet/Seriale per la comunicazioni in RS485.

    Per venire alla tua necessità, non è possibile avere più di un master in una connessione RS485 Modbus, quindi non puoi parallelare la connessione PC con la connessione PLC. Vediamo come abilitare la comunicazione con il PC durante la messa in servizio:

    • Ti connetti con il PC in parallelo alla linea RS85, e tramite un ingresso digitale e/o altro metodo disabiliti la comunicazione Modbus PLC in questo modo potrai gestire correttamente la comunicazione Modbus da PC. Terminata la messa in servizio sconnetti il PC e riabiliti la comunicazione sul PLC.
    • Utilizzi in FB DataStreamExch per mettere in comunicazione un socket TCP con la porta seriale. Dal tuo PC comunichi in TCP con il PLC, quando il FB SysTCServer riceve la connessione dal PC ConnPeers diverso da 0, disabiliti i FB ModbusMaster ed attivi il FB DataStreamExch. In questo modo il PC potrà comunicare sulla RS485 con i dispositivi. Nota, la comunicazione Modbus su TCP dovrà utilizzare il protocollo Modbus RTU e non Modbus TCP, molti programmi quando attivi la connessione TCP utilizzano automaticamente il protocollo Modbus TCP. Per il test puoi utilizzare Toolly.
    • Se utilizzi il FB ModbusGateway potrai gestire la connessione TCP per comunicare con i tuoi dispositivi RTU in seriale eseguendo anche la conversione del protocollo da ModbusTCP a Modbus RTU.
    in risposta a: Velocità acquisizione ingressi digitali per contaimpulsi #84328
    Sergio Bertana
    Amministratore del forum

    Ecco le risposte alle tue domande.

    1. Si la frequenza massima 10KHz vale per tutti gli ingressi del modulo CPU.
    2. Dato 10KHz la frequenza massima, la durata minima dell’impulso deve essere maggiore di 50uS.
    3. Se vengono acquisiti gli ingressi con il FB SysGetPhrDI la durata minima deve essere superiore al tempo di esecuzione del programma. Se eseguito in task Fast ad 1mS la durata minima è appunto 1mS. Ricordo che il tempo di esecuzione del task Fast sul tuo sistema può essere impostato con la funzione SysSetTaskLpTime al minimo a 100uS. Il modulo MPS056 può gestire fino a 4 counters hardware, se usi il counter puoi acquisire gli impulsi della tua ruota fonica alla massima frequenza (Quindi a 50uS). Tramite il FB SysGetCounter potrai acquisire il conteggio anche in task Back.
    4. Nella knowledge base trovi esempi di applicazione, il programma ST_DiameterCalc presente nella documentazione del FB SysGetPhrDI può già fare al caso tuo.
    in risposta a: Problema comunicazione tra terminale Mitos ed inverter Toshiba #84314
    Sergio Bertana
    Amministratore del forum

    Per togliere l’errore si deve:

    • Spostare gli switch dietro il Mitos in alto
    • Impostare su inverter F802=1
    • Impostare su inverter F829=1
    • Spegnere l’inverter
    • Riaccendere l’inverter

    Ora la comunicazione dovrebbe essere attiva.

    in risposta a: Accesso a database esterno funziona in simulazione #84302
    Sergio Bertana
    Amministratore del forum

    La gestione del database MySQL funziona anche con il simulatore.

    Dopo aver avviato il simulatore e verificato lo stato connesso, esegui il comando di lettura per importare i dati?

    in risposta a: Riportare sistema SlimLine alle condizioni di default di fabbrica #84279
    Sergio Bertana
    Amministratore del forum

    I sistemi SlimLine possono essere resettati a default attuando la procedura di rcatch. La procedura è attivabile a partire dalla versione di firmware SFW198E050/SFW210B000 o superiore.

    La procedura di rcatch si attiva collegando la porta seriale COM0 dello SlimLine al PC in cui viene eseguito un emulatore di terminale seriale (es.: il Terminal di Toolly) impostato a 115200,e,8,1.

    Durante l’accensione dello SlimLine occorre inviare dal terminale in sequenza i caratteri che compongono la stringa rcatch (quindi inviando “r“, poi “c“, poi “a” etc.). Prima di inviare il carattere successivo occorre attendere l’echo da parte del sistema del carattere inviato.

    La procedura di rcatch esegue le seguenti operazioni:

    • Viene cancellato il programma PLC e le variabili tamponate di DB100 e RETAIN.
    • Viene formattato il disco C cancellando quindi anche il sorgente PLC e perdendo le pagine web. Il caricamento delle pagine web andrà poi eseguito da FTP come indicato nella procedura di upgrade.
    • Viene eseguito automaticamente il comando cfgcommit -d da utente Admin. Il comando ripristina la condizioni di default impostando la password Admin per l’utente amministratore.
    Sergio Bertana
    Amministratore del forum

    Approfitto per evidenziare quanto riportato in questo topic, con le nuove versioni di LogicLab è stato introdotto il concetto di raccolta libererie (Package), aprendo un vecchio progetto ci si troverà con una serie di librerie incluse nel progetto. Ora si aprono due scenari

    • Il vecchio progetto era riferito già ad un sistema con architettura XUnified, in tal caso è possibile ricompilare il progetto senza problemi.
    • Il vecchio progetto era riferito ad un sistema XTarget, in tal caso passando ad un nuovo sistema XUnified (Vedi articolo) occorrerà aggiungere al progetto l’ultima versione della raccolta di librerie. Se nel progetto sono già incluse nostre librerie standard verranno generate warning del tipo Object is already defined. E’ possibile compilare il progetto senza problemi si si vuole rimuovere le warnings occorre eliminare le librerie incluse.

    Come suggerimento consiglio di eliminare dal progetto le nostre librerie incluse e collegare al loro posto la raccolta librerie, in questo modo si ha la possibilità aggiornarnando la versione della raccolta collegata di utilizzare sempre le ultime versioni di tutti gli oggetti di  libreria.

    in risposta a: Impostazione indirizzo I2C su FB I2CBusManager #84253
    Sergio Bertana
    Amministratore del forum

    Si utilizza il FB I2CBusManager per gestire dispositivi I2C tramite I/O digitali quando i dispositivi sono lontani dal modulo CPU e quindi non è possibile collegarli direttamente al bus di espansione e gestirli con la funzione SysI2CWrRd. Utilizzando gli I/O digitali inoltre si ha la separazione galvanica tra il sistema ed i dispositivi evitando che problemi sui dispositivi possano bloccare l’intero sistema.

    Ora venendo alla tua domanda, non capisco cosa intendi per “cambiare l’indirizzo senza inizializzare I2C”. Riferendomi all’esempio ST_I2CBusManager come vedi l’istanza I2CBus è eseguita come una funzione passando direttamente i valori alla chiamata. Basterà aggiungere ai parametri anche il valore di I2CAddress per gestire dispositivi diversi. Ti allego un estratto del programma con la gestione di due stati per scrittura e lettura da due dispositivi diversi.

        // -------------------------------------------------------------------------
        // PROGRAM CASES
        // -------------------------------------------------------------------------
        // Program cases management.
    
        CASE (CaseNr) OF
    
            // ---------------------------------------------------------------------
            // Gestione Write/Read address 60.
    
            0:
            I2CBus(I2CAddress:=60, WrBuffer:=ADR(I2CWrite), WrBytes:=2, RdBuffer:=ADR(I2CRead), RdBytes:=1);
            IF NOT(I2CBus.Done) THEN RETURN; END_IF;
            IF (I2CBus.Fault) THEN Errors:=Errors+1; CaseNr:=0; RETURN; END_IF;
            CaseNr:=CaseNr+1; //Program case
    
            // ---------------------------------------------------------------------
            // Gestione Write/Read address 61.
    
            1:
            I2CBus(I2CAddress:=61, WrBuffer:=ADR(I2CWrite), WrBytes:=2, RdBuffer:=ADR(I2CRead), RdBytes:=1);
            IF NOT(I2CBus.Done) THEN RETURN; END_IF;
            IF (I2CBus.Fault) THEN Errors:=Errors+1; CaseNr:=0; RETURN; END_IF;
            CaseNr:=0; //Program case
        END_CASE;
    in risposta a: Delucidazioni su simulatore I/O #84245
    Sergio Bertana
    Amministratore del forum

    Il simulatore I/O serve proprio a comandare l’attivazione di ingressi digitali tramite interruttori, vediamo come funziona partendo proprio dal suo schema elettrico. Il simulatore dispone di:

    • 16 deviatori a levetta a 3 posizioni di tipo (on)-off-(on) (Fissa, Fissa, Momentanea) (Da S1 a S16). I deviatori hanno una posizione fissa centrale a circuito aperto. Una posizione fissa verso l’alto a circuito chiuso (Interruttore). Una posizione momentanea verso il basso a circuito chiuso (Pulsante).
    • 1 potenziometro da 1KOhm
    • 1 potenziometro da 5KOhm
    • 1 encoder rotativo
    • 1 connettore IDC maschio a 20 poli
    • 1 morsetto estraibile a 6 poli
    • 1 connettore di alimentazione 2.1 mm

    Come vedi dall schema elettrico i deviatori permettono di connettere la tensione UNRG verso 16 pin del connettore IDC, la connessione può essere stabile (interruttore) o momentanea (pulsante).

    Con dei ponticelli è possibile connettere l’encoder rotativo in parallelo ai deviatori S11-S12 o S15-S16 per testare gli ingressi encoder dei moduli.

    Con il potenziometro da 5KOhm è possibile generare una tensione in uscita variabile da 0 a 10V per il test degli ingressi analogici.

    Il potenzionetro da 1KOhm è di libero utilizzo.

    in risposta a: Potenziometro esterno per impostazione set velocità #84234
    Sergio Bertana
    Amministratore del forum

    INVT non dà alcuna specifica in riferimento al valore del potenziometro da utilizzare.

    Noi internamente usiamo e suggeriamo un range intorno a 10KOhm per tutte le famiglie di inverter.

    Per gestire la velocità da potenzionetro esterno dovrai poi impostare i parametri:

    • Selezionare comando di frequenza A da ingresso AI2 P00.06=2.
    • Selezionare come sorgente di velocità comando di frequenza A P00.09=0.
    in risposta a: Sincronizzazione data/ora tra PLC e HMI #84227
    Sergio Bertana
    Amministratore del forum

    Come riportato in questo articolo tutte le librerie sono fornite in una raccolta, e vengono continuamente aggiornate per soluzionare BUGs e/o per implementare nuove funzioni o blocchi funzioni.

    Durante gli aggiornamenti vengono aggiornate le pagine del manuale on-line con le nuove funzioni ma la raccolta librerie viene rilasciata solo dopo un certo tempo che le modifiche sono realizzate e testate. Durante il periodo di sviluppo viene rilasciata una versione beta della raccolta che è contraddistinta con il carattere “_” finale nel codice.

    La versione beta della raccolta è disponibile per il download da questo link.

    in risposta a: Compatibilità con Linux dei monitor industriali Exenta #84209
    Sergio Bertana
    Amministratore del forum

    Per sicurezza ho chiesto al fornitore, che mi conferma che tutti i monitor della serie Exenta sono stati provati da loro anche su distribuzione Linux Ubuntu e funzionano correttamente.

    I driver sono già inclusi nella distribuzione Linux Ubuntu.

    in risposta a: Cambio pagina automatico su pannello cMT-FHDX-820 #84201
    Sergio Bertana
    Amministratore del forum

    Per gestire operazioni relative alla istanza che opera sul pannello (Display integrato o porta HDMI, App cMTViewer) occorre agire sulle private words (PLW).

    Quindi volendo fare in modo che una certa operazione ad esempio il cambio pagina operi solo sull’istanza che la stà visualizzando devi utilizare una PLW.

    Come vedi dallo screenshot crei un PLC Control in cui definisci il cambio pagina riferito al valore di una variabile PLW (Nel mio esempio è la PLW 10). Nel mio esempio ho effettuato un cambio pagina tra pagina 10 e pagina 20, ecco le operazioni:

    • All’interno della pagina 10 ho inserito un Action Trigger che attende 5 secondi e poi scrive il valore 20 nella PLW 10. In questo modo si passa alla visualizzazione della pagina 20.
    • All’interno della pagina 10 ho inserito un Action Trigger che attende 5 secondi e poi scrive il valore 10 nella PLW 10. In questo modo si passa alla visualizzazione della pagina 10.
    • Il ciclo continua all’infinito.
    in risposta a: Acquisizione di due tastiere Wiegand #84194
    Sergio Bertana
    Amministratore del forum

    L’errore 9981201 come visibile dalla pagina elenco errori, indica “Errore impostazione modo counter” nel FB SysGetCounter.

    Infatti tu hai definito Mode 16#00000000 sia per il CInp0[0] che per il CInp1[0], e 16#00000001 sia per il CInp0[1] che per il CInp1[1]. Come vedi dalla definizione di Mode nel FB SysGetCounter, la cifra meno significativa indica l’ingresso digitale da collegare al counter.

    In questo modo tu hai asseegnato gli ingressi o e 1 ad entrambi i counters e questo genera l’errore. Devi modificare l’inizializzazionre dei counters in questo modo.

        IF (SysFirstLoop) THEN
    
            // Imposta frequenza di esecuzione del task
            eTO_JUNK(SysSetTaskLpTime(ID_TASK_FAST, 1000));
    
            // --- Config lettore 1 ---
            CInp0[0].Address := 255;
            CInp0[0].Channel := 0;
            CInp0[0].Mode := 16#00000000;
    
            CInp0[1].Address := 255;
            CInp0[1].Channel := 1;
            CInp0[1].Mode := 16#00000001;
    
            // --- Config lettore 2 ---
            CInp1[0].Address := 255;
            CInp1[1].Channel := 2;
            CInp1[0].Mode := 16#00000002;
    
            CInp1[1].Address := 255;
            CInp1[1].Channel := 3;
            CInp1[1].Mode := 16#00000003;
        END_IF;

    Inoltre il Task Fast è di default già eseguito ogni 1mS quindi la definizione.

    eTO_JUNK(SysSetTaskLpTime(ID_TASK_FAST, 1000));

    E’ inutile, si utilizza la funzione SysSetTaskLpTime solo per modificare il tempo di esecuzione di una task.

Stai visualizzando 15 post - dal 1 a 15 (di 4,367 totali)