Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 211 a 225 (di 4,287 totali)
  • Autore
    Post
  • in risposta a: Grafico Barra Dinamico #78569
    Sergio Bertana
    Amministratore del forum

    Per la gestione dei grafici a barra si deve utilizzare l’oggetto Bar Graph, per le impostazioni, come si vede dallo screenshot:

    • General: In questa sezione si definisce la variabile PLC a cui l’oggetto si riferisce ed al cui variare del valore si sposta la barra sul display in visualizzazione.
    • Outline: In questa sezione si definisce il tipo di visualizzazione della barra, orrizzontate o verticale scegliendo anche il tipo di scorrimento.
    • Range: Si definiscono i valori limite della barra, eventuali limiti di allarme con relativi colori.
    in risposta a: Problema nella inizializzazione variabili #78398
    Sergio Bertana
    Amministratore del forum

    Hai problemi di inizializzazione perchè stai operando sull’area di backup (Area in DB100 da 2048 a 4095). Siccome l’area è in backup il comportamento dell’init è particolare, in pratica se il valore di init è diverso da 16#00 la variabile viene inizializzata.

    Se il valore di init è 16#00 la variabile non viene inizializzata e rimane con il valore che aveva allo spegnimento del sistema.

    In questa verifica poi mi sono accorto di un problema che sembra avere LogicLab, quando si inizializza una stringa con “$00” in realtà anzichè inserire il valore 16#00 che coincide con il codice tappo viene inserito il valore “0” codice hex 16#30.

    Quindi per rispondere alla tua domanda o sposti le variabili in area non backup, oppure le inizializzi da programma sulla task di Boot o testando la variabile SysFirstLoop.

        VarC:=16#00;
        VarX:='zc$00';
    in risposta a: Connessione TCP client con FB SysTCPClient #78390
    Sergio Bertana
    Amministratore del forum

    Devi leggere bene le informazioni del FB ModbusMaster, il FB è realizzato per poter operare con modello a cascata, quindi se mantieni Enable semmpre attivo verrà eseguita una sola interrogazione. Se vedi gli esempi si collega sempre il Done negato all’Enable in questo modo terminata un comando ne viene eseguito un’altro e così via. Il tempo tra i comandi lo puoi definire con il parametro Delay.

    Perchè adesso esegue una lettura ogni circa 28 secondi, se tu vedi hai impostato un tempo di LifeTime nella FB SysTCPClient di 20 secondi, alla connessione il FB modbus con Enable attivo esegue un solo comando, non essendoci più comunicazione dopo 20 secondi il TCP client chiude la connessione e dopo 5 secondi ne ritenta un’altra che và a buon fine  e cosi parte un’altra interrogazione Modbus.

    in risposta a: Gestione bitwise AND su allarmi #78379
    Sergio Bertana
    Amministratore del forum

    Se è possibile puoi inviare il progetto sia del PLC che del pannello alla ns eMail di supporto così possiamo fare una verifica.

    In generale mi sembrano tempi non congrui, sicuramente non aiuta il PLC che è lento nel trasferimento pacchetti, ma comunque mi sembrano tempi elevati.

    Un altra cosa da verificare è il tempo ciclo del PLC se elevato (direi dai 20ms) può compromettere di molto i tempi in quanto questi PLC non hanno una comunicazione indipendente ma la comunicazione è secondaria al processo.

    in risposta a: Connessione TCP client con FB SysTCPClient #78371
    Sergio Bertana
    Amministratore del forum

    Le cause del Fault possono essere molte, intanto ti consiglio di verificare con il comando Syslog da connessione Telnet che errori hai, la descrizione degli errori la trovi qui.

    Hai verificato se il tuo dispositivo 192.168.255.1 è raggiungibile dallo SlimLine, se il dispositivo risponde al ping puoi testarlo con il comando di Ping sempre da connessione Telnet.

    Ma guardando il tuo programma vedo il motivo dell’errore, se leggi bene la documentazione del FB SysTCPClient, vedi questo:

    • LocalAdd (@STRING) Indirizzo IP della interfaccia di rete da cui effettuare la connessione. Default ‘0.0.0.0’: l’interfaccia è scelta automaticamente in base all’IP a cui connettersi.
    • LocalPort UINT) Numero porta TCP da cui parte la connessione (0 scelta automaticamente).

    Tu invece hai definito sia uno che l’altro dei parametri.

    Definendo LocalAdd con l’indirizzo IP dello SlimLine stai obbligando il FB ad utilizzare la connessione che ha questo indirizzo e fino a qui tutto funziona tanto la connessione con il tuo dispositivi parte proprio dalla porta ethernet dello SlimLine.

    Ma definendo LocalPort a 502 stai obbligando il FB ad aprire la connessione verso la porta 502 del tuo dispositivo dalla sua porta 502 che in realtà è già utilizzata dallo SlimLine (é quella dove ci si conette in Modbus). Quindi trovandola già aperta il FB non può utilizzarla.

    in risposta a: Esempio programma Modbus Master in Ladder #78277
    Sergio Bertana
    Amministratore del forum

    Meglio del ladder è il linguaggio FBD che essendo comunque grafico è ancora puù intuitivo del ladder ed è estremamente più veloce nel realizzare il programma.

    Intanto di direi di dare una occhiata al programma di esempio FBD_SDM120Waterfal che trivi in questo articolo.

    L’esempio utilizza una porta seriale come porta di comunicazione, nel tuo caso dovrai semplicemente sostituire il FB SysSerialPort con il FB SysTCPClient, e naturalmente modificare il tipo di protocollo Modbus in MDB_TCP.

    Credo sia superfluo ricordare che il dispositivoi SlimLine abbia l’interfaccia di rete compatibile con il dispositivo con il quale devi connetterti, eventualmente per la verifica puoi utilizzare il comando di ping, ammesso che il dispositivo risponda al ping.

    in risposta a: Gestione bitwise AND su allarmi #78272
    Sergio Bertana
    Amministratore del forum

    E’ stranissimo avere tempi di risposta in lettura così lenti, questo indipendentemente dal tipo di variabili che il pannello legge.

    Non è che esegui nel progetto accesso a variabili in errore, in tal caso si possono sommare i tempi di timeout sulla risposta dal protocollo e quindi avere tempi molto lunghi. Verifica la comunicazione con EasyDiagnoser.

    Eventualmente puoi provare a creare un array di variabili BOOL e puntare a queste.

    in risposta a: Progetto startup HMI e modulo CPU SlimLine #78144
    Sergio Bertana
    Amministratore del forum

    Abbiamo sviluppato l’utility Symbols converter, in questo articolo si trovano le informazioni sull’utilizzo.

    Nell’articolo sono anche riportate le informazioni sulla nuova versione del programma HMIStartUp rivisto con le ultime versioni di LogicLab e di EasyBuilderPro.

    in risposta a: Velocità visualizzazione allarmi #78012
    Sergio Bertana
    Amministratore del forum

    Non hai indicato il tipo di PLC ed il protocollo di comunicazione che stai utilizzando.

    In generale per velocizzare la comunicazione conviene avere le variabili di allarme sul PLC in un array consecutivo, piuttosto che variabili allocate ad indirizzi diversi.

    In questo modo il pannello può raggruppare la lettura con una singola richiesta anzichè in molte richieste una per ogni allarme (Questo dipende dal protocollo utilizzato).

    Se hai già le variabili di allarme in un array e la velocità non migliora occorre analizzare la comunicazione con il programma EasyDiagnoser per vedere che non ci siano errori di comunicazione che la rallentano.

    in risposta a: Diagnostica FB gestione Modbus #78009
    Sergio Bertana
    Amministratore del forum

    Si su ricezione eccezione si esce con il Done attivo senza Fault e senza Ok.

    in risposta a: Weincloud assegnazione permessi accesso pannelli agli utenti #77943
    Sergio Bertana
    Amministratore del forum

    Il portale Weincloud è stato oggetto di modifiche ultimamente e avendo cambiato alcuni menù si sono creati alcuni problemi di gestione. Ora per l’assegnazione dei diritti agli utenti occorre accedere al menù Directory dove sono visualizzati tutti i pannelli connessi al dominio.

    Selezionando il pannello vengono visualizzati gli utenti che hanno permessi sul pannello, con il tasto Add Permission è possibile aggiungere utenti.

    Come si vede dallo screenshot, per ogni utente è possibile selezionare i diritti di accesso al pannello.

    in risposta a: Come funzionano gli index per gestire array #77937
    Sergio Bertana
    Amministratore del forum

    Con protocollo assoluto l’array del PLC Siemens non è 1-2-3-4  ma bisogna puntare al valore assoluto della Tag.

    Esempio:
    DB 10 array [0..10] of word
    Partendo  da indirizzo assoluto 0 avremo:  0,  2,  4,  6, ..

    Quindi sul pannello occorre mettere come Tag iniziale la prima DB10.word 0,  abilitare l’Index e su questo andrà forzato il valore corretto cioè (0,  2,  4,  6, ..) che è il salto necessario per passare all’oggetto successivo.

    in risposta a: Weincloud pannello disattivato Vs pannello rimosso #77931
    Sergio Bertana
    Amministratore del forum

    Dal portale Weincloud è possibile effettuare diverse operazioni sui pannelli vediamole:

    • Remove: Il pannello viene rimosso dal dominio ma mantiene il riferimento HWKey codice attivazione (Activation card), quindi può essere nuovamente connesso al dominio o connesso ad altro dominio utilizzando i valori di SessionID e Password visualizzabili con la pagina 76 del progetto EasyBuilderPro.
    • Transfer: Permette di trasferire il pannello da un dominio ad un’altro.
    • Deactivate: La licenza sul pannello viene disattivata, sarà possibile ricollegare il pannello al dominio o ad altro dominio utilizzando HWKey e codice di attivazione (Activation card). Ricordo che l’activation card permette fino a 3 attivazioni dello stesso pannello o di pannelli diversi ma naturalmente l’attivazione deve essere univoca cioè un solo pannello puo essere attivato con quella activation card.
    in risposta a: Relè controllato da web con richieste GET/POST #77850
    Sergio Bertana
    Amministratore del forum

    La soluzione più semplice è utilizzare un sistema SlimLine, grazie al server web nativo è possibile creare una pagina htm che ritorna su richiesta GET lo stato del relè. In pratica occorre creare una pagina con il seguente contenuto:

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>
    Relay status:<!--['%d', BOOL, 2048]-->
    </body>
    </html>

    Come si evince da questo articolo alla richiesta della pagina al posto del TAG <!–[‘%d’, BOOL, 2048]–> viene ritornato il valore presente nella variabile BOOL allocata nella memoria dello SlimLine in DB100.2048.

    Inviando un POST Content-Type: application/x-www-form-urlencoded con body BOOL+2048=x, verrà settata la variabile con il valore x (0/1), gli indirizzi da 2048 a 4095 sono tamponati, quindi il valore settato rimarrà memorizzato anche allo spegnimento del sistema.

    Nel programma dello SlimLine basterà eseguire la copia della variabile sull’uscita reale. Ecco il semplice programma:

    VAR
        RCommand AT %MX100.2048 : BOOL; (* Relay command from WEB *)
        Do00CPU AT %QX255.0 : BOOL; (* Output 00 CPU module *)
    END_VAR
    
        Do00CPU:=RCommand;
    in risposta a: Visualizzazione ora:minuti:secondi con scalatura a macro #77832
    Sergio Bertana
    Amministratore del forum

    Siccome in molti mi chiedono la macro complementare alla visualizzazione ora per poter impostare HHMMSS da terminale (Nella impostazione non si possono separare i campi con : ma vanno definiti di seguito e sempre a 2 cifre), ecco le 2 macro.

    sub unsigned int TimeRead(unsigned int Value)
    unsigned int VSecs=0, VMins=0, VHour=0, VResult=0
    
    VSecs=Value%60
    VMins=(Value/60)%60
    VHour=Value/3600
    VResult=(VHour*10000)+(VMins*100)+VSecs
    return VResult
    end sub
    sub unsigned int TimeWrite(unsigned int Value)
    unsigned int VSecs=0, VMins=0, VHour=0, VResult=0
    
    VSecs=Value%100
    VMins=(Value/100)%100
    VHour=Value/10000
    VResult=(VHour*3600)+(VMins*60)+VSecs
    return VResult
    end sub

    Nel programma in LogicLab occorre gestire una variabile UDINT a cui indirizzare l’oggetto di visualizzazione numerica nel mio esempio la variabile HMIVars.ClockTime. Come si vede viene trasferito nella variabile solo il valore di ora della SysDateTime, Data/Ora di sistema.

    Su variazione del valore della variabile HMIVars.ClockTime (Sicuramente si è impostato un nuovo valore da terminale) viene aggiornato il valore di SysDateTime, Data/Ora di sistema. Questo programma và eseguito in task Back.

        IF (HMIVars.ClockTime <> ClockTime) THEN
            SysDateTime:=(SysDateTime-MOD(SysDateTime, 86400))+HMIVars.ClockTime;
        END_IF;
    
        ClockTime:=MOD(SysDateTime, 86400); //Clock time
        HMIVars.ClockTime:=ClockTime; //Clock time
Stai visualizzando 15 post - dal 211 a 225 (di 4,287 totali)