Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 1,186 a 1,200 (di 4,379 totali)
  • Autore
    Post
  • in risposta a: Simulazione programma dimostrativo pagine web #58879
    Sergio Bertana
    Amministratore del forum

    Il PTP128 è un vecchio dimostrativo, per prendere pratica con le pagine web ti rimando a questo articolo dove puoi eseguire il download di alcuni esempi.

    Ricordo che il simulatore su PC permette di eseguire programmi logici e matematici, non è gestito dal simulatore tutto quello che riguarda la comunicazione sia seriale che TCP.

    Inoltre il simulatore non ha un server HTTP attivo, quindi per provare le pagine web devi necessariamente utilizzare un modulo CPU SlimLine.

    in risposta a: Definizione valore NaN su variabili REAL #58874
    Sergio Bertana
    Amministratore del forum

    La definizione NaN è un acronimo che indica “Not A Number”. I valore NAN per una variabile REAL in formato IEE754 è un valore che ha tutti gli 8 bit di esponente a “1” e la mantissa diversa da “0”, il segno non importa.

    Quindi se lo rappresentiamo in esadecimale sarà un numero del tipo 16#7F8FFFFF, ma qualsiasi altro numero che mantenga tutti gli 8 bit di esponente a “1” e la mantissa diversa da “0” verrà indicato cone un NaN. Risulta quindi evidente che non c’è un numero univoco per rappresentare il NaN, se vuoi settare una variabile a NaN puoi utilizzare una definizione del tipo:

    VAR
        APtr : @DWORD;
        RVars : ARRAY[0..3] OF REAL;
    END_VAR
    
        // Definizione valori REAL in esadecimale. Vedi sito:
        // https://www.binaryconvert.com/convert_float.html
    
        APtr:=ADR(RVars[0]);
        @APtr:=16#41280000; //10.5
    
        APtr:=ADR(RVars[1]);
        @APtr:=16#42C80000; //100.0
    
        APtr:=ADR(RVars[2]);
        @APtr:=16#7F8FFFFF; //NaN (Not a number)
    
        APtr:=ADR(RVars[3]);
        @APtr:=16#7F800001; //NaN (Not a number)

    Come vedi dall’esempio sia il valore 16#7F8FFFFF che 16#7F800001 sono riconosciuti come NaN. Da quanto espresso si deduce che non è possibile fare comparazioni sul valore NaN, e certamente potrebbero servire due cose:

    • Una definizione di NaN per settare il valore in una variabile.
    • Una funzione di verifica se un numero REAL e NAN. La funzione deve verificare se il numero ha gli 8 bit di esponente a “1” e la mantissa diversa da “0”.
    in risposta a: Collegamento termoresistenze Pt100/Pt1000 #58869
    Sergio Bertana
    Amministratore del forum

    La lettura delle termoresistenze viene effettuata con una corrente (Generata da IExc) di 200uA, che su una resistenza da 100 Ohm danno una tensione di 20mV. La corrente è mantenuta così bassa per non riscaldare l’elemento resistivo, ma è evidente che eseguendo la lettura di valori di tensionre dell’ordine di mV è molto facile acquisisre anche i disturbi a 50Hz captati dai cavi.

    Il firmware della scheda acquisisce gli ingressi alla massima velocità possibile quindi può succedere che lasciando gli ingressi “appesi” vengano acquisiti anche i disturbi.

    Come suggerimento posso dirti di controllare l’uscita di Fault e utilizzando un timer considerare il valore acquisito corretto solo se l’uscita è disattiva per un tempo.

    in risposta a: Allocazione in memoria delle variabili strutturate #58864
    Sergio Bertana
    Amministratore del forum

    Il problema è dovuto ad un errore nella libreria eLLabXTargetAdjLib, è errata la definizione di eNULL, ho provveduto a creare la nuova versione di libreria si può scaricare dal sito.

    in risposta a: HMI Master collegato a rete di HMI slave #58856
    Sergio Bertana
    Amministratore del forum

    Si puoi farlo e sul pannello cMT puoi aggiungere i pannelli MT80(5/7)1IP quindi il PLC come remoto cosi da poter prelevare direttamente i dati con le nomenclature del PLC e poi passarli in OPC UA.

    in risposta a: Utilizzo protocollo DMX, errore in compilazione #58852
    Sergio Bertana
    Amministratore del forum

    Mi cospargo il capo di cenere…

    Ho commesso un errore nella copia dell’esempio, mi sono dimenticato di definire il file pointer (Stream di comunicazione) che deve utilizzare il FB SysDMXMng. Ho corretto l’esempio, in pratica sulla chiamata del FB devi definire il file pointer.

    FBDMX(File:=Sp.File); //DMX manager
    in risposta a: Gestire un controllo motore NTT460 #58849
    Sergio Bertana
    Amministratore del forum

    Se utilizzi Modbus RTU puoi utilizzare un MPS054, comunicando a 57600 puoi trasferire oltre 5000 caratteri al secondo. Quindi il tempo di rinfresco dei dati dipenderà da quanti caratteri devi trasmettere per la richiesta e ricevere per la risposta Modbus.

    Se invece vuoi utilizzare CANOpen devi utilizzare un modulo MPS055 dove puoi configurare i PDU da ricevere e probabilmente sei più veloce rispetto al Modbus ma è un po più complesso da configurare.

    in risposta a: Utilizzo protocollo DMX, errore in compilazione #58838
    Sergio Bertana
    Amministratore del forum

    L’errore che riporti indica che non viene trovato il FB SysDMXMng che è un FB di sistema quindi sicuramente presente.

    Nel frattempo ho riportato nel manuale on-line la spiegazione del FB SysDMXMng, ti consiglio di  provare ad utilizzare l’esempio riportato nella pagina.

    in risposta a: Allocazione in memoria delle variabili strutturate #58824
    Sergio Bertana
    Amministratore del forum

    C’è stata una versione di LogicLab che aveva questo problema ma sull’ultima versione scaricabile dal nostro sito il problema dovrebbe essere risolto. Io ho provato con questa versione e non ho riscontrato il problema, la mia versione è:

    Version: 3.1.1.0
    Build Jul 10 2020 17:0007 – 5.12.0.36

    Puoi verficare la versione che stai utilizzando?

    in risposta a: Realizzare una comunicazione TCP/IP con protocollo libero #58813
    Sergio Bertana
    Amministratore del forum

    Puoi provare a creare 2 macro per inviare 2000 caratteri per volta che richiamerai in modalita sincrona dalla tua macro. Credo che il tutto possa funzionare senza troppe latenze.

    SYNC_TRIG_MACRO: Triggers the execution of a macro synchronously in a running macro. The current macro will pause until the end of execution of this called macro.

    in risposta a: Connessioni Modbus RTU/TCP con rete di dispositivi #58812
    Sergio Bertana
    Amministratore del forum

    Si certo puoi usare il FB ModbusMaster con connessione seriale per gestire la comunicazione in RTU e visto che mi parli di Host PC credo che anche loro agiscano come slave Modbus quindi puoi usare il FB ModbusMaster anche per comunicare con loro in TCP/IP usando il FB SysTCPClient. C’è già un esempio nella pagina del FB ModbusMaster.

    Se i registri sono continuativi puoi utilizzare più istanze della FB ModbusMaster in cascata, in pratica il Done della 1a FB si connette all’Enable della successiva e così via fino all’ultima il cui Done negato si connette all’Enable della 1a.

    Se invece i registri sono distanti tra di loro e devi quindi gestire più richieste Modbus puoi utilizzare il FB ACModbus.

    Siccome devi collegarti a più hosts se vuoi avere più velocità puoi istanziare 6…8 FB SysTCPClient e altrettante istanze ModbusMaster in modo da poter comnunicare in parallelo con tutti gli Hosts.

    in risposta a: Comunicazione Modbus RTU con Energy meter SDM120 #58807
    Sergio Bertana
    Amministratore del forum

    Quindi se ho capito non utilizzi il FB EastronSDM120, ma vuoi provare a realizzare tu il programma con il FB ModbusMaster?

    Allora se devi comunicare con più dispositivi in RS485 multidrop devi utilizzare la tecnica delle FB in cascata, in pratica istanzi più FB ModbusMaster tutte condividono il File in uscita dalla SysSerialPort. Il Done della prima FB lo colleghi all’Enable della seconda e così via, il Done dell’ultima istanza lo colleghi invertito all’Enable della prima. Puoi intrudurre una pausa di attesa tra le comunicazioni defindendo il valore di Delay.

    Ma molto meglio in questo caso utilizzare il FB ACModbus, che ti permette di connetterti a più dispositivi in multidrop utilizzando un solo FB ModbusMaster.

    in risposta a: Installazione driver RNDIS per connessione USB #58804
    Sergio Bertana
    Amministratore del forum

    Yes the SlimLine must be powered with a voltage from 10 to 30 Vdc.

    in risposta a: Comunicazione Modbus RTU con Energy meter SDM120 #58798
    Sergio Bertana
    Amministratore del forum

    Quando parli di tutorial credo tu ti riferisca a questo video, dove ho spiegato come eseguire l’acquisizione dei dati dagli Energy meter SDM120.

    Ora immagino tu abbia utilizzato per la lettura il FB EastronSDM120, che ne gestisce completamente la lettura. Ma come vedi il FB ha il parametro Node dove devi definire il nodo Modbus del meter da acquisisre.

    In pratica ogni SDM120 deve avere il proprio indirizzo di nodo uno diverso dall’altro, di default l’indirizzo di nodo è 1, per cambiarlo devi seguire le informazioni del manuale, in pratica devi tenere premutoil tasto sul frontale per entrare in Set parametri e poi inviare un comando Modbus di scrittura indirizzo di nodo.

    in risposta a: Installazione server MySQL #58791
    Sergio Bertana
    Amministratore del forum

    Ricordo che attualmente SlimLine Raspberry rispetto alle altre versioni di SlimLine, non è realtime e quindi i task Slow e Fast sono eseguiti con jitter che potrebbero essere elevati in relazione al carico dei vari core della CPU. Quindi nel tuo caso non conoscendo quanto il server MySQL appesantisca la CPU, non posso darti una risposta precisa.

    Può lanciare il comando “top” o “htop” da una connessione SSH (Utilizza Putty o MobaXTerm) per verificare il carico CPU.

    Prossimamente ma al momento non ho una data, nelle prossime versioni del runtime LogicLab, ci sarà una FB utilizzabile per calcolare sia i tempi di esecuzione dei vari task che i jitter di ognuno di essi.

Stai visualizzando 15 post - dal 1,186 a 1,200 (di 4,379 totali)