Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 586 a 600 (di 4,264 totali)
  • Autore
    Post
  • in risposta a: ModbusMaster_v2(55) – error S1305: Unknown function #69220
    Sergio Bertana
    Amministratore del forum

    Il FB ModbusTCPGateway è stato sostituito dal nuovo FB ModbusGateway che implementa ulteriori funzionalità.

    In questi casi il vecchio FB è stato trasferito nella libreria eLLabObsoleteLib insieme a tutti gli oggetti obsoleti (Download manuale). Quindi se non si vuole modificare il programma utilizzando il nuovo FB (Cosa che comnunque io consiglio di fare) è possibile importare il vecchio oggetto dalla libreria obsoleti.

    La crocetta rossa nella libreria appare nel caso tu abbia già un oggetto ModbusGateway nel tuo progetto, magari lo avevi importato nel progetto precedentemente ed ora hai incluso l’intera libreria eLLabMdbDevsLib. In questo caso se lo utilizzi verrà compilato l’oggetto importato e non quello della libreria.

    L’errore riguardo alla variabile Fp non riesco a capire da dove possa scaturire, ti consiglio di dare una occhiata al programma ST_ModbusGateway nella pagina di manuale.

    in risposta a: Riavvio casuale di PLC serie SlimLine #69210
    Sergio Bertana
    Amministratore del forum

    Andiamo per ordine, guardando l’estratto del file di log che hai postato noto che vi sono riferimenti a SFW198 che non è il firmware a cui tu ti riferisci. Questa versione di firmware può essere installata solo su MPS054B*** mentre sui MPS054C*** occorre installare la versione SFW210, come indicato in questo articolo. Comunque non è possibile commettere errori perchè il sistema durante l’aggiornamento controlla la versione firmware e se non è corretta non si aggiorna.

    Venendo all’errore specifico “[ 6120] Background locked“, questo errore si manifesta quando il tempo medio di esecuzione della task Back supera i 300mS. Si parla di tempo medio quindi se si manifesta significa che si hanno diverse esecuzioni della task Back con tempi superiori. Questo errore provoca il riavvio del sistema come si vede dai due report successivi.

    [05/01/2023 18:01:58.010] [L] SFW198[ 6010] Stop ApplID:0x13D00DBD
    [01/01/1970 00:00:28.678] [E] SFR050[ 1020] Except: WDOG At:0x0049DB30

    Probabilmente il tuo programma ha un tempo di esecuzione troppo lungo, i tempi di esecuzione si possono evincere eseguendo il debug delle variabili di sistema (Screenshot) i tempi sono in uS. Eseguendo il set di SysTimeInit si inizializzano i tempi minimo e massimo.

    Ipotizzando che sia troppo lungo il tempo, quali possono essere le cause, vedo che stai utilizzando la FLASH quindi stai utilizzando il File System per scrivere su file su disco C:. La scrittura su disco richiede tempi apprezzabili, per ogni settore (512 bytes) sono necessari mediamente 20mS, ma ricordo che la FLASH ha una vita in scrittura, più viene utilizzata più i tempi di scrittura si allungano sino a diventare non più scrivibile, ecco perchè consigliamo di non eccedere con le scritture sul disco C:, di preferire in alternativa la SDCard che anche lei ha una vita ma grazie al wear levelling ed alla dimensione molto più grande la vità è enormemente maggiore. Inoltre in caso di blocco in scrittura la si può sostituire. Dal log infatti vedo che il settore 18 è troppo lento. Per vedere le statistiche dei dischi utilizza il comando FSStats da telnet.

    [05/01/2023 18:02:58.649] [E] SFR050[ 5410] SFLASH slow sector[18]

    Nel caso di utilizzo del disco consiglio di non gestire mai in lettura/scrittura blocchi di dato troppo grandi, perchè ad ogni settore si sommano i tempi di accesso. Dovendo gestire blocchi grandi di dati occore suddividerne la gestione in più loop di programma. Ad esempio il FB FSFileCopy suddivide la copia in molti loop di esecuzione.

    in risposta a: Visualizzazione finestre in pop-up #69193
    Sergio Bertana
    Amministratore del forum

    Cerco di darti una spiegazione con questo screenshot. Come vedi l’oggetto Embed Window permette due tipi di  visualizzazione finestre  di pop-up:

    • Indirect: Si fà riferimento ad una variabile numerica il cui valore forzerà la visualizzazione della pagina relativa. Esempio se la variabile vale 50 verrà visualizzata la pagina 50.
    • Direct: Si fà riferimento ad una  variabile booleana, la cui attivazione/disattivazione forzerà la visualizzazione della pagina definita.

    Poi come vedi l’oggetto grafico nelle sue proprietà permette di definire la posizione di visualizzazione della finestra nella pagina e la dimensione della finestra di visualizzazione pagina.

    in risposta a: Utilizzo di cURL per accedere a pagine web di SlimLine #69179
    Sergio Bertana
    Amministratore del forum

    Il concetto è corretto ma probabilmente la pagina che richiedi in cURL è in una cartella accessibile solo da un utente loggato. Quando accedi da browser prima ti viene richiesta l’autenticazione e poi accedi alla pagina. Se noti la risposta contiene un codice 302 che è una ridirezione verso la pagina di login.  Ho fatto il programma di esempio cURLExample (Download) dove nel programma LogicLab ho dichiarato 3 variabili globali:

    VAR_GLOBAL
        Var1 AT %MW100.10 : UINT;
        Var2 AT %MW100.12 : UINT;
        Var3 AT %MW100.2048 : UINT;
    END_VAR

    Ed una pagina web così definita:

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>SlimLine - Simple page</title>
    <style type="text/css">
    body {font-family: Arial, Helvetica, sans-serif; font-size: 18px; font-style: normal;}
    </style>
    </head>
    <body>
    This page is served by the <b>SlimLine</b><br>
    Var3:<!--["%d", UINT, 2048]-->
    </body>
    </html>

    Ho caricato la pagina con il nome Values.htm in C:\Web, la cartella C:\Web come vedi dallo screenshot è accessibile in lettura anche da utente anonimo, quindi con il comando cURL:

    curl "http://192.168.0.181/Values.htm?UINT+10=8&UINT+12=20"

    Valorizzo Var1=8 e Var2=20 e mi viene ritornata la pagina con il valore di Var3 che essendo allocata in DB100.2048 ha il valore mantenuto in backup allo spegnimento del sistema.

    C:\Windows\system32>curl "http://192.168.0.181/Values.htm?UINT+10=8&UINT+12=20"
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>SlimLine - Simple page</title>
    <style type="text/css">
    body {font-family: Arial, Helvetica, sans-serif; font-size: 18px; font-style: normal;}
    </style>
    </head>
    <body>
    This page is served by the <b>SlimLine</b><br>
    Var3:208
    </body>
    </html>
    in risposta a: ModbusMaster_v2(55) – error S1305: Unknown function #69139
    Sergio Bertana
    Amministratore del forum

    Ho pubblicato l’ultima versione della libreria e scaricabile da qui.

    in risposta a: Lettura variabili ritenitive da Python ritornano valore “0” #69136
    Sergio Bertana
    Amministratore del forum

    Quindi come vedi i valori sono ritornati in little endian, il valore REAL è in realtà rappresentato in esadecimale con il valore 0x419CC4C0 che convertito con un convertitore on line dà proprio 19.5960693359375.

    Per quanto riguarda la variabile 100.2688 vedo una incongruenza con la visualizzazione in pagina web dove hai definito <!–[‘%u’, UDINT, 2288]–> e non <!–[‘%u’, UDINT, 2688]–>.

    Riguardo a LogicLab ti suggerivo di mettere in debug le variabili in modo da verificarne il loro relativo valore ed eventualmente modificarlo run time per verificare che il tuo programma lo acquisisca correttamente (Screenshot).

    in risposta a: Lettura variabili ritenitive da Python ritornano valore “0” #69128
    Sergio Bertana
    Amministratore del forum

    Complimenti hai fatto un ottimo lavoro…

    Ora venendo al tuo problema a parte precisare che per accedere alla variabile MD100.2088 l’indirizzo Modbus sarà 40000+(2088/2) quindi 41044. Ti ricordo che Modbus ha offset 1 e quindi dipende dal tuo driver se definire indirizzo 41043, 41044 o 41045, puoi comunque fare delle prove. E dovendo acquisire 2 variabili REAL giustamente devi leggere con il comando Read Holding Register 4 registri.

    Ma a parte la precisazione sull’indirizzo Modbus avendo letto 4 registri non dovresti avere dati a “0”. Ma una domanda stupida il programma su LogicLab è in esecuzione? Se metti in debug su LogicLab le variabili vedi i valori che hai definito?

    Attenzione volendo utilizzare variabili in backup e quindi fare in modo che alla successiva accensione mantengano il valore allo spegnimento non devi definire un Init Value, perchè altrimenti all’avvio il programma forzerà le variabili sempre al valore definito.

    I valori REAL sono nel formato IEE754 su 32 bits e come tutte le variabili a 32 bits leggendole o scrivendole da Modbus visto che si accedono a 16 bits potresti avere un problema di endiannes cioè LSWe MSW scambiate di ordine.

    in risposta a: Upgrade firmware fallito su MPS0054A110 #69121
    Sergio Bertana
    Amministratore del forum

    Intanto mi senmbra che l’operazione che hai fatto sia un downgrade, cioè sei passata dall’ultima versione di sistema operativo XUnified all’ultima versione del sistema operativo XTarget.

    Questa operazione è da fare solo se si hanno vecchi programmi XTarget e non si vuole ricompilarli aggiungendo nel progetto la libreria eLLabXUnifiedAdjLib come indicato in questo articolo.

    Detto questo l’operazione dovrebbe funzionare senza alcun problema, ma vedo dal report di SysLog che c’è stato un problema sul file di configurazione:

    [E] SFW198 [01/01/1970 02:25:19]  1150, Cfg.bin check error:0x00000040
    [E] SFW198 [01/01/1970 02:25:19]  1405, Wrong configuration

    In questo caso avendo perso la configurazione il sistema si configura con i dati di default, quindi perde l’indirizzo IP ed attiva il client DHCP per acquisire l’indirizzo e perde tutte le credenziali di accesso utenti ritornando a quelle di default. Con username Admin e password Admin è possibile connettersi in Telnet come mi sembra tu abbia fatto visto che mi riporti i dati del firmware  dopo il downgrade.

    Connessi in Telnet consiglio di dare il comando CfgCommit -d per forzare la scrittura  di un nuovo file di configurazione con tutti idati di default e poi provvedere a configurare il sistema con gli altri dati. Comunque dopo il comando di configurazione il sistema sarà accessibile in FTP e quindi sarà possibile trasferire le pagine web per proseguire la configurazione da browser.

    in risposta a: Sensori pressione barometrica su bus I2C #69114
    Sergio Bertana
    Amministratore del forum

    Aggiungo al post precedente che utilizzando il FB I2CBusManager è possibile simulare il bus I2C utilizzando gli I/O del modulo CPU.

    Questa soluzione può essere utilizzata se si vuole gestire dispositivi I2C posizionati molto distanti dal modulo CPU, inoltre utilizzando gli I/O si dispone di un bus I2C isolato galvanicamente dal sistema.

    Naturalmente la velocità di gestione dei dispositivi sarà molto rallentata ma come nel tuo caso che devi acquisire sensori la cui velocità di acquisizione può essere relativamente lenta, può essere una soluzione attuabile.

    in risposta a: Sensori pressione barometrica su bus I2C #69113
    Sergio Bertana
    Amministratore del forum

    Collegare dispositivi I2C sul bus di espansione è sicuramente possibile diamo disponibile la funzione SysI2CWrRd proprio per questo scopo. Unico accorgimento è che i dispositivi I2C non si sovrappongano al campo di indirizzamento degli eventuali moduli di estensione (Da 0x20 a 0x2F).

    Connesso il dispositivo al bus di espansione con il comando telnet I2CSts è possibile verificare  se viene riconosciuto dal sistema.

    Per la connessione se fai riferimento al manuale riferimenti hardware modulo CPU OEM troverai degli schemi elettrici di riferimento. In pratica puoi dal connettore 10 poli di estensione ricavare sia l’alimentazione a 5Vdc che i segnali SCL e SDA.

    Sergio Bertana
    Amministratore del forum

    Hai verificato se nel progetto è attiva la conversione formati (Vedi screenshot).

    in risposta a: Tempo commutazione Rx/Tx su radiomodem serie D5 #68977
    Sergio Bertana
    Amministratore del forum

    La commutazione da Tx a Rx richiede un tempo massimo di 20mS.

    in risposta a: Connessione pannello cMT-3072XH con PLC SE TM241 in ethernet #68971
    Sergio Bertana
    Amministratore del forum

    When you work with PLC with simbolic addressing the imported TAGs are not displayed in the TAG list, they are directly visible in the variable selection inside the objects declaration.

    Insert an object (As a Toggle button) on a page and when selet the relate variable choose User-defined tag.

    in risposta a: Pagine “oscurate” in EasyBuilderPro e lettura FTP #68961
    Sergio Bertana
    Amministratore del forum

    E’ un problema che può capitare nel caso di installazione di EasyAccesPro su di un PC che ha come tema l’impostazione “Scura” o “Dark mode”.

    L’argomento è già stato trattato e risolto in questo topic.

    in risposta a: Informazioni su FB HTTPClient_v4 #68958
    Sergio Bertana
    Amministratore del forum

    Non sei stato attento nella lettura dell’esempio ST_HTTPClient in fondo alla pagina del FB HTTPClient.

    A partire da questa versione è stata eliminata la gestione della connessione TCP da parte  della FB, ora occorre istanziare il FB SysTCPClient nel proprio programma e passare lo stream di comunicazione eFILEP al FB HTTPClient.

    Risulta quindi evidente che sia l’URL e la porta a cui connettersi vanno definite nel FB SysTCPClient e non più nel HTTPClient.

    Queste modifiche si sono rese necessarie per poter gestire la crittografia TLS, se dai una occhiata al FB SysTLSClient, in caso di connessione HTTPS và inserito tra il FB SysTCPClient ed il FB HTTPClient trasferendo eFILEP da un FB all’altro.

Stai visualizzando 15 post - dal 586 a 600 (di 4,264 totali)