Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 811 a 825 (di 4,452 totali)
  • Autore
    Post
  • in risposta a: Calcolo media di un valore analogico #68399
    Sergio Bertana
    Amministratore del forum

    Puoi scrivere una macro eseguita a tempo che esegue la lettura del valore analogico e lo memorizza in un array di valori float. Sull’array di valori puoi utilizzare le funzioni di media messe a disposizione dal Macro language.

    • AVERAGE(source[start], result, count). Gets the average value from array.
    • HARMEAN(source[start], result, count). Gets the harmonic mean value from array.
    • MEDIAN(source[start], result, count). Gets the median value from array.

    Trovi gli esempi nel manuale di EasyBuilderPro

    Sergio Bertana
    Amministratore del forum

    Due verifiche ovvie sono:

    Il PC dove esegui la simulazione è nella rete del PLC?, se esegui un ping del PLC da PC il ping riesce?

    Prova a disabilitare il firewall di Windows, magari quando EasyBuilder ti ha chiesto di creare al regola non l’ahi abilitata.

    in risposta a: Errore “eGetBYTE => Funzione sconosciuta” in compilazione #68389
    Sergio Bertana
    Amministratore del forum

    Mi sembra che non hai seguito bene l’esempio che citi, nell’esempio viene eseguita questa operazione:

    LBDTime[0]:=TO_LDATE_AND_TIME(SysDateGetNs()); //Long date and time buffer

    Ma la variabile di appoggio LBDTime[0] è di tipo LDATE_AND_TIME e non LDATETIMESTRUCT.

    Per valorizzare una variabile LDATETIMESTRUCT (Che è una struttura dati) devi eseguire come nell’esempio l’operazione:

    i:=SPLIT_DT(BDTime[0], ADR(LDTime[1].Year), ADR(LDTime[1].Month), ADR(LDTime[1].Day), ADR(LDTime[1].Hours), ADR(LDTime[1].Minutes), ADR(LDTime[1].Seconds));
    in risposta a: Errore “eGetBYTE => Funzione sconosciuta” in compilazione #68382
    Sergio Bertana
    Amministratore del forum

    Il programma che citi (Si trova in questo articolo) non era ancora  stato corretto, quindi il pointer Ptr definito come @BYTE, in realtà punta ad una variabile stringa RxTxBuf, e nel tuo progetto probabilmenti hai la flag Project->Option->Code Generation->Strict pointers check attiva. Con la versione 5.22 di LogicLab il controllo sui pointer è più rigoroso e quindi genera errore.

    Se togli come indicato in questo articolo la spunta sul controllo dei pointers il programma verrà compilato.

    Ho comunque provveduto a modificare l’esempio convertendo Ptr in un pointer PVOID, ed utilizzando le funzioni di gestione void pointer.

    in risposta a: Errore “eGetBYTE => Funzione sconosciuta” in compilazione #68377
    Sergio Bertana
    Amministratore del forum

    Tra le varie novità introdotte con l’uscita della versione 5.22.x.xx di LogicLab è stato introdotta la definizione PVOID per i puntatori. Si utilizza per definire i puntatori che possono indirizzare qualsiasi tipo di variabile.

    Nella libreria eLLabCommonLib poter accedere ai diversi tipi di variabili puntate da un puntatore PVOID sono state definite funzioni specifiche (Vedi manuale).

    Dall’errore credo che il tuo problema sia il non avere inserito la libreria eLLabCommonLib nel progetto.

    Sergio Bertana
    Amministratore del forum

    Il PLC Schneider m251 lavora in protocollo UDP che potrebbe essere gestito più lentamente dal pannello rispetto alla connessione TCP.

    Come consiglio per velocizzare si può provare a gestire gli allarmi come array di bit e non singoli bit di allarme, ed in generale è sempre preferibile per ottimizzare la comunicazione usare array di Tags rispetto a Tags allocate in modo disordinato.

    Per quanto riguarda la velocità sul cambio pagina, moltisimo dipende dalle immagini, conviene sempre avere immagini dimensionate esattamente sulla risoluzione del pannello in modo che non sia necessario eseguire un resize in visualizzazione.

    in risposta a: Condizionare ad autenticazione l’accesso al sistema da LogicLab #68253
    Sergio Bertana
    Amministratore del forum

    Aggiungo che disabilitando il protocollo Modbus il sistema non sarà più accessibile, quindi se hai connesso un pannello operatore oppure altri dispositivi, dovrai abilitare un server IP su una porta diversa da 502 ed abilitare un protocollo Modbus su questo server.

    Così puoi lasciare la porta 502 abilitata per il LogicLab e un’altra porta per l’eventuale terminale. Questo naturalmente se accedi da remoto con un port forwarding, perchè da locale tramite connessione ethernet chiunque conosca la nuova porta potrà connettersi anche con LogicLab.

    Se vuoi evitare che LogicLab possa connettersi allora devi istanziare un FB ModbusSlave connesso ad un SysTCPServer nel tuo programma, così Logiclab non potrà agire su questa connessione.

    in risposta a: Condizionare ad autenticazione l’accesso al sistema da LogicLab #68242
    Sergio Bertana
    Amministratore del forum

    LogicLab si connette con il protocollo Modbus che non prevede autenticazione, per ottenere quello che desideri è possibile agendo da pagina Web disabilitare il protocollo Modbus sulle connessioni che vuoi inibire (Screenshot).

    Ricordo che la connessione TCP ha di default 3 server attivi, infatti dalla pagina web ci sono 3 protocolli Modbus tutti connessi al server IP[0].

    Disabilitando il protocollo Modbus LogicLab non potrà più connettersi, per abilitare nuovamente la connessione dovrai da pagina Web a cui accedi con le credenziali abilitare il protocollo Modbus sulla connessione da cui si connette LogicLab.

    in risposta a: Lettura nome dispositivo da programma utente #68237
    Sergio Bertana
    Amministratore del forum

    Il nome dispositivo (Si imposta da pagina web, screenshot) non è appoggiato su variabili di sistema (System variables), ma si può rilevare tramite la funzione SysOSIDValue. Ecco un semplice programma di esempio.

    PROGRAM MyProgram
    VAR
        i : UDINT; (* Auxiliary variable *)
        DName : STRING[ 20 ]; (* Device name *)
    END_VAR
    
        i:=SysOSIDValue(FALSE, OSID_DEVICE_NAME, ADR(DName));
    in risposta a: Dispositivi su rete RS485 convertitori ethernet/seriale #68233
    Sergio Bertana
    Amministratore del forum

    Leggere/Scrivere registri Modbus RTU da Modbus TCP lo fanno tutti i modelli, la cosa da capire è se chi deve leggere agisce come client o come server.

    Posso immaginare che sia un PC a leggere e che si connetta in modalità client al gateway (Su indirizzo IP e porta), in tal caso va benissimo l’ATC-1300.

    in risposta a: Forzare installazione aggiornamento progetto #68230
    Sergio Bertana
    Amministratore del forum

    Si certo, visto cha hai l’accesso VNC al pannello puoi farti una pagina con il pulsante che attiva  LB12665 e poi quando appare la pagina di upgrade progetto ne forzi il caricamento.

    in risposta a: Forzare installazione aggiornamento progetto #68218
    Sergio Bertana
    Amministratore del forum

    Purtroppo non è possibile comandare l’avvio del download programma in automatico.

    Eventualmente con LB12665 si può forzare il popup di richiesta upload/download ma poi si dovrebbe comunque agire direttamente sul pannello per la conferma.

    Mi parli di impossibilità di apertura delle porte da parte  del cliente, ma perchè non utilizzi EasyAccess che ti permette di accedere a tutte le funzioni del pannello ed anche ad eventuali PLC connessi senza aprire porte sul gateway del cliente.

    in risposta a: Dispositivi su rete RS485 convertitori ethernet/seriale #68213
    Sergio Bertana
    Amministratore del forum

    No, per convertire il protocollo da Modbus RTU/Ascii a Modbus TCP occorre utilizzare un dispositivo gateway. Nella nostra gammo di prodotti puoi trovare:

    • Gateway Modbus TCP a RTU/ASCII ATC-3002
    • Gateway MODBUS TCP-RTU/ASCII TRP-C37M
    • Gateway Modbus TCP a RTU Low cost ATC-1300

    Fai attenzione al modello ATC-1300, che è in grado di operare solo come Modbus TCP Server convertendo il protocollo da Modbus TCP a Modbus RTU su seriale. Il convertitore non può operare come TCP Client e con il protocollo Modbus Ascii.

    in risposta a: Possibilità di connessione con PLC Siemens MPI #68208
    Sergio Bertana
    Amministratore del forum

    Come vedi dall’Appendice A il protocollo MPI è supportato da quasi tutti i modelli di pannello fare riferimento alle note riportate in tabella…

    • Serie iP (Supportato se si utilizza l’ultima versione di EasyBuilderPro)
    • Serie iE ((Supportato se si utilizza l’ultima versione di EasyBuilderPro)
    • Non supportano il protocollo i modelli cMT2078X, cMT2108X, cMT2158X
    • Non supporta il protocollo il modello cMT3161X
    in risposta a: Inserire teleruttore tra inverter e motore #68195
    Sergio Bertana
    Amministratore del forum

    Perché inserire il teleruttore, di solito per garantire che il motore non possa avviarsi viene utilizzato il circuito STO. Aprendo i due contatti del circuito l’inverter interrompe in modo hardware la potenza in uscita.

    Come vedi dallo schema applicativo puoi usare un relè a 2 conatti per interrompere il circuito STO (Il cavo connesso a H1/H2 deve essere schermato e inferiore a 25mt).

    Per quanto riguarda la configurazione che cerchi, potresti programmare uno dei 2 relè in uscita (R01 o R02) alla funzione 1 (Per R01 setta P06.03=1, per R02 setta P07.03=1). In questo modo il relè si chiude in caso di marcia e si apre sullo stop del motore.

Stai visualizzando 15 post - dal 811 a 825 (di 4,452 totali)