Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 331 a 345 (di 4,234 totali)
  • Autore
    Post
  • in risposta a: Dinamicizzare stringa GetData #74306
    Sergio Bertana
    Amministratore del forum

    Purtroppo attualmente l’indicizzazione sui protocolli simbolici, quindi agendo sulla definizione simbolica della Tag non è possibile.

    in risposta a: Gateway SMS per interfacciamento con dispositivi interni #74293
    Sergio Bertana
    Amministratore del forum

    Per l’invio dei messaggi SMS o per effettuare chiamate (Solo ring del telefono) il gateway SMS-GW3 mette a disposizione una serie di metodi ecco una nota applicativa come riportata sul sito web del costruttore.

    Tra i vari metodi possibili esiste proprio il metodo che hai citato, ossia la possibilità di invio direttamente con una chiamata GET indicando come parametri il numero a cui inviare il messaggio ed il testo del messaggio (Vedi topic).

    Per l’utilizzo di questo gateway occorre solo effettuare  una semplice configurazione ma se la tua esigenza non può adattarsi ai metodi che il gateway espone, ricordo che utilizzando i ns sistemi programmabili SlimLine puoi realizzare un programma in grado di accettare richieste TCP o HTTP e gestire un modem connesso alla porta seriale.

    in risposta a: Multiple IP-series HMI over RS485 2W #74276
    Sergio Bertana
    Amministratore del forum

    Exactly you have only one connection to the serial port.

    The connection is a multidrop RS485 on which the PLC acts as a Modbus master and all the HMIs act as a Modbus slave.

    in risposta a: Problema su ingressi digitali #74275
    Sergio Bertana
    Amministratore del forum

    Non mi dici se l’impianto prima funzionava e poi si è presentato il problema, oppure se è un problema nato all’avvio dell’impianto ed il tipo di modulo di espansione.

    Se l’impianto prima funzionava ed ora c’è il problema proprio non me lo sò spiegare…

    Se invece si è presentato al primo avvio, così come lo poni mi sembra prprio un problema di cablaggio, anche se tu dici di averlo controllato…

    Posso capire un contatto tra due ingressi, ma in tal caso si accenderebbero due ingressi con lo stesso segnale. Posso capire un ingresso guasto, ma in tal caso non si accenderebbe l’ingresso ma avere i segnali scambiati mi sembra impossibile come guasto.

    in risposta a: Sostituzione pannello serie iH con nuovo modello #74238
    Sergio Bertana
    Amministratore del forum

    Vediamo se riesco a rispondere alle tue domande.

    • I pannelli serie iH sono molto datati e tramite i canali ufficiali Weintek non sono più reperibili. Se cerchi su Internet potrai trovare dei pannelli usati o nuovi nei siti di commercio elettronico.
    • Per scaricare il programma dai pannelli serie iH devi utilizzare il programma EasyBuilder8000 (Scaricabile del ns sito). Ma è anche possibile che chi ha sviluppato il programma ne abbia protetto l’upload con password, in tal caso non è possibile scaricarlo.
    • Se l’upload non è protetto, lo puoi scaricare dal pannello e se chi ha sviluppato il programma lo ha protetto da password, lo potrai solo caricare su un’altro pannello MT8070iH.
    • Se il programma non è protetto da password, utilizzando EasyBuilderPro (Scaricabile dal ns sito) lo potrai importare e trasferirlo su un pannello della nuova serie. Ti consiglio il modello MT8072iP Terminale Touch screen 7″ TFT.
    in risposta a: Gateway Modbus TCP/RTU per lettura condizionatori #74206
    Sergio Bertana
    Amministratore del forum

    Il tuo progetto si può realizzare con i ns sistemi programmabili utilizzando il blocco funzione ModbusGateway. Questo blocco funzione oltre a operare come gateway tra diversi tipi di Modbus può:

    • Effettuare modifiche sui frames di comando ricevuti dal master prima di inviarle al sistema slave.
    • Effettuare modifiche sui frames di risposta ricevuti dal sistema slave prima di inviarle al sistema master.

    Quindi basterà utilizzare l’esempio ST_ModbusGateway riportato nella pagina del manuale FB a cui si dovrà aggiungere il codice per la modifica dei pacchetti di comando e di risposta. Ti posto un esempio del programma.

        // -------------------------------------------------------------------------
        // PACCHETTI MODBUS DI COMANDO RICEVUTI DA MODBUS TCP
        // -------------------------------------------------------------------------
        // Nodo e indirizzo registro per questi comandi sono in testa al frame.
        // 16#01 Read coil status
        // 16#02 Read input status
        // 16#03 Read holding registers
        // 16#04 Read input registers
        // 16#05 Force single coil
        // 16#06 Preset single register
        // 16#10 Preset multiple registers
        //
        //                +----+---+---+---+---
        //  Frame comando |Node|Cmd|Address|...
        //                +----+---+---+---+---
        // -------------------------------------------------------------------------
        // Modifica pacchetti comandi ricevuti da Modbus TCP.
        // L'indirizzo di nodo cambia in funzione dell'indirizzo registro.
    
        IF (ITrigger) THEN 
            ITrigger:=FALSE; //Trigger command (Input)
    
            // Controllo indirizzo e modifico il nodo di destinazione.
    
            ARAddress:=eGetBYTE(MdbGw.DFrame+2);
            ARAddress:=(ARAddress*256)+eGetBYTE(MdbGw.DFrame+3);
    
            CASE (ARAddress) OF
                1..15: i:=eSetBYTE(MdbGw.DFrame, 16#01);  CRAddress:=ARAddress-0; //Setto nodo 16#01
                16..31: i:=eSetBYTE(MdbGw.DFrame, 16#02); CRAddress:=ARAddress-16; //Setto nodo 16#02
            END_CASE;
    
            // Setto indirizzo registro.
    
            i:=eSetBYTE(MdbGw.DFrame+2, TO_BYTE(CRAddress/256)); //Setto MSB
            i:=eSetBYTE(MdbGw.DFrame+3, TO_BYTE(CRAddress)); //Setto LSB
        END_IF;
    
        // -------------------------------------------------------------------------
        // PACCHETTI MODBUS DI RISPOSTA RICEVUTI DA MODBUS RTU
        // -------------------------------------------------------------------------
        // Nodo per questi comandi è in testa al frame.
        // 16#01 Read coil status
        // 16#02 Read input status
        // 16#03 Read holding registers
        // 16#04 Read input registers
        //
        //                 +----+---+---
        //  Frame risposta |Node|Cmd|...
        //                 +----+---+---
        //
        // Nodo e indirizzo registro per questi comandi sono in testa al frame.
        // 16#05 Force single coil
        // 16#06 Preset single register
        // 16#10 Preset multiple registers
        //
        //                 +----+---+---+---+---
        //  Frame risposta |Node|Cmd|Address|...
        //                 +----+---+---+---+---
        // -------------------------------------------------------------------------
        // Nelle risposte l'indirizzo di nodo da ritornare è sempre 16#01.
    
        IF (OTrigger) THEN 
            OTrigger:=FALSE; //Trigger command (Output)
    
            i:=eSetBYTE(MdbGw.DFrame, 16#01); //Setto nodo 16#01
    
            // Setto indirizzo registro nei comandi in cui è previsto
    
            CASE (eGetBYTE(MdbGw.DFrame)) OF
                16#05, 16#06,16#10:
                i:=eSetBYTE(MdbGw.DFrame+2, TO_BYTE(ARAddress/256)); //Setto MSB
                i:=eSetBYTE(MdbGw.DFrame+3, TO_BYTE(ARAddress)); //Setto LSB
            END_CASE;
        END_IF;
    
    // [End of file]
    in risposta a: Multiple IP-series HMI over RS485 2W #74199
    Sergio Bertana
    Amministratore del forum

    On a 2 wire RS485 multidrop connection there must be only 1 master device. To connect multiple HMIs on the same connection the best way is to use the Modbus protocol and set the HMIs as “MODBUS Server”.

    Each HMI must have its unique Station number, and the PLC must act as a master Modbus interrogating the HMIs.

    in risposta a: Pannello cMT3152X con PLC M241 Schneider #74198
    Sergio Bertana
    Amministratore del forum

    L’errore “Device server disconnected” sembrerebbe un problema interno al funzionamento del pannello più che un problema di connessione con il PLC.

    Verifica se vi sono dei campionamenti dati nel tuo programma, in tal caso verificane la configurazione, non vorrei che campionamenti troppo ravvicinati possano dare origine al problema.

    in risposta a: Errore su connessione VNC #74194
    Sergio Bertana
    Amministratore del forum

    Sinceramente è un problema che non mi spiego è come se qualcuno si connettesse al pannello bloccandoti la connessione, oppure sembra che continuando ad utilizzare il servizio VNC connettendoti e sconnettendoti capiti qualcosa che blocchi le connessioni. Sicuramente non è un problema di connessione al router visto che agli altri dispositivi in rete riesci a connetterti.

    Visto che la connessione sembra funzionare per un pò di giorni quando riavvii il pannello un consiglio potrebbe essere di forzare dal PLC il reboot del pannello, puoi dare un’occhiata alla macro descritta in questo topic.

    Oppure anche solo reinizializzare il servizio VNC sul pannello, puoi disattivare il bit LB-12092 per disattivare il servizio e dopo alcuni secondi puoi riattivarlo. Ad esempio puoi utilizzare la funzione DataTransfer per appoggiare sul bit LB-12092 una variabili BOOL del PLC permettendone la gestione direttamente dal programma PLC.

    in risposta a: Errore A4153 in compilazione programma #74167
    Sergio Bertana
    Amministratore del forum

    L’errore indica che una variabile a 32 bit è stata allocata in memoria ad un indirizzo non allineato a 32 bit.

    Ricordo che nei sistemi con architettura ARM le variabili a 16 bit vanno allocate ad indirizzi divisibili per 2, e le variabili a 32 bit vanno allocate ad indirizzi divisibili per 4. Nelle variabili automatiche ci pensa il linker ad allocare correttamente le variabili, ma nelle variabili allocate nella DB100 l’allocazione deve essere curata dal programmatore.

    Se guardi la tabella di allocazione variabili trovi alcuni errori:

        Abil_Antigelo         AT %MX100.2151 : REAL; (* [42051] valore manuale temperatura antigelo *)
        Val_Bruciatore_C1     AT %MR100.2152 : REAL; (* [41076] valore percentuale funzionamento bruciatore *)
        Val_man_temp_mandata  AT %MR100.2166 : REAL; (* [41083) valore manuale temp mandata *)
        Val_man_temp_antigelo AT %MR100.2170 : REAL; (* [41085) valore manuale temp antigelo *)

    La variabile Abil_Antigelo è di tipo REAL quindi và dichiarata %MR100.xxxx e l’indirizzo 2151 non è divisibile per 4. Inoltre essendo di tipo REAL occupa 4 bytes quindi và a sovrapporsi alla variabile Val_Bruciatore_C1. Anche l’indirizzo Modbus [42051]  dichiarato come descrizione è errato ricordo che và utilizzato l’indirizzo di allocazione diviso per 2 a cui và sommato 40000.

    Le variabili Val_man_temp_mandata e Val_man_temp_antigelo non sono allocate ad indirizzi divisibili per 4.

     

    in risposta a: Accesso oggetto VNC Viewer da cMTViewer #74108
    Sergio Bertana
    Amministratore del forum

    L’oggetto VNC Viewer è utilizzabile solo dallo schermo del pannello non è possibile visualizzarlo da remoto con il cMTViewer.

    Puoi visualizzarlo se utilizzi WebView da un browser, avrai certo un pò di rallentamento dovuto al doppio accesso alla interfaccia grafica.

    in risposta a: Arrotondamento valori REAL nei calcoli #74091
    Sergio Bertana
    Amministratore del forum

    Ho dato una occhiata al tuo programma, con un valore di peso di 22085.2 i calcoli in REAL ritornano un valore di media di  22085.080 con un errore di 0,12. I calcoli in LREAL ritornano un valore di media di 22085.123 con un errore di 0,077.

    Se se fai una verifica di conversione dati da decimali a REAL IEE754 usando un calcolatore On-line, vedrai che già il valore 22085.2 in REAL corrisponde a 22085.19921875 con un errore di -0.00078125. Lo stesso arrotondamento si avrà per altri valori in gioco e quindi le operazioni eseguite su valori di partenza che già differiscono dal valore originale produrranno un errore.

    Nella tua soluzione con numeri LREAL solo i valori definiti (0,01 e 0,99) sono stati effettivamente convertiti in LREAL per le variabili hai solo convertito il valore REAL già con arrotondamento  ecco quindi che il risultato è un pò migliorato ma non è perfetto. Se usi questo programma vedrai che il risultato sarà perfetto.

    VAR
        Weigth : LREAL;  (* Weigth *)
        WeigthAvg : LREAL; (* Weigth average *)
    END_VAR
    
        WeigthAvg:=(Weigth*LREAL#0.01)+(WeigthAvg*LREAL#0.99);
    in risposta a: EasyWeb 2.0 vs EasyAccess 2.0 #74084
    Sergio Bertana
    Amministratore del forum

    Con EasyWeb Weintek identifica l’accesso tramite  pagina web ai setting/dashboard del pannello. La caratteristica disponibile solo sui pannelli serie cMT permette:

    • La configurazione del pannello tramite browser
    • L’operatività del pannello da browser (Stile VNC)

    In pratica è possibile attivare l’opzione WebView come homepage, in questo modo da browser digitando l’IP del pannello ne viene visualizzata l’immagine permettendone l’operatività direttamente dal browser.

    Detto questo è evidente che se si accede al pannello da rete locale o se si dispone di una VPN EasyAccess non è necessario. EasyAccess serve solo per poter accedere al pannello ed a altri dispositivi in rete al pannello (Tramite il Passthrough) da Internet, permettendo la teleassistenza degli impianti.

    in risposta a: Come risolvere “error G0271” in compilazione #74079
    Sergio Bertana
    Amministratore del forum

    L’errore deriva dal controllo più stringente sull’utilizzo dei puntatori.

    Nelle versioni precedenti di LogicLab era possibile utilizzare puntatori di tipo diverso dal dato effetivamente puntato. Per esempio era accettato che un puntatore di tipo STRING puntasse ad un BYTE.

    Per evitare l’errore occorre disabilitare il controllo:

    Project->Option->Code Generation->Strict pointers check

    Come riportato in questo articolo.

    in risposta a: Configurazione router Wifi #74064
    Sergio Bertana
    Amministratore del forum

    Di default è attivo anche l’access point WiFi ma è settato con canale a 40Mhz e questo può provocare difficoltà di connessione meglio impostarlo a 20Mhz (Screenshot).

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