Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumPuoi provare a fare un salvataggio dati su USB e poi utilizzare le query SQL in locale per cercare di recuperare i dati nel periodo voluto.
Con un macro potrai poi leggerli e inviarli con free protocol alla stampante.
In alternativa puoi salvare i dati di misura in variabili ritentive RW e tramite macro elaborarli e inviarli alla stampante.
Gennaio 19, 2024 alle 10:05 am in risposta a: Visualizzazione pagine con accesso a databse MySQL #75467Sergio Bertana
Amministratore del forumPurtroppo attualmente non è prevista alcuna possibilità.
Sergio Bertana
Amministratore del forumSe usi una stampante che è possibile comandare come stampa videata (Esempio Epson TMT) si potrebbe gestire una pagina con il visualizzatore dati storici selezionando la visualizzazione di quelli voluti e tramite comando stampare la pagina.
Se invece la stampante è pilotata da free protocol, su pannelli cMT3xxx si può fare qualcosa con le query per estrarre i dati ma sulle altre serie di pannelli è tutto molto più complicato per non dire impossibile.
Sergio Bertana
Amministratore del forumSi certo credo sia l’unica soluzione al problema.
Anche se sinceramente non riesco a spiegarmi il perchè succeda.
Sergio Bertana
Amministratore del forumCominciamo con il dire che per il conteggio consiglio di utilizzare l’operando somma al posto del FB CTU. Questo ti permette di utilizzare per il conteggio una variabile della dimensione che desideri 8/16/32/64 bits, inoltre puoi definirla come RETAIN o allocarla nella DB100 ad indirizzo da 2048 per avere il valore mantenuto allo spegnimento. E con semplici operazioni di MOVE puoi variarne il valore per il reset od il preset.
Come ingresso digitale è consigliato utilizzare quelli del modulo CPU come correttamente hai fatto, ma non devi utilizzare l’immagine di processo bensì devi acquisirne lo stato con il FB SysGetPhrDI. Ecco un programma di esempio.
// ***************************************************************************** // PROGRAM "CounterOnDI" // ***************************************************************************** // Manage counter on CPU module Di00. // ----------------------------------------------------------------------------- // ------------------------------------------------------------------------- // INITIALIZATION // ------------------------------------------------------------------------- // Initialize variables. IF (SysFirstLoop) THEN i:=SysSetTaskLpTime(ID_TASK_FAST, 500); //Task Fast is executed every 500uS // Set digital input module. DInp.Address:=255; //Module address DInp.Mode:=DI_MODE#DI_8_LL; //Acquisition mode END_IF; // ------------------------------------------------------------------------- // COUNTER MANAGEMENT // ------------------------------------------------------------------------- // Check digital input rising pulse. DInp(); //Digital input acquisition IF (DInp.Value.0 = Pulse) THEN RETURN; END_IF; Pulse:=DInp.Value.0; //Digital input pulse // Increase the counter. IF (DInp.Value.0) THEN Counter:=Counter+1; END_IF; // [End of file]
Il programma và eseguito in task Fast di cui puoi cambiare il tempo di esecuzione, lo standard è 1mS ma puoi scendere fino a 100uS. Se vuoi modificare l’ingresso digitale cambia DInp.Value.x dove x è l’ingresso da utilizzare.
Sergio Bertana
Amministratore del forumCon i nostri sistemi programmabili abbiamo soluzioni che utilizzano i protocolli IoT per l’accesso Internet, è possibile utilizzare servizi come Beebotte o svilupparsi un proprio portale cloud con connessione in REST.
Abbinando un pannello operatore tramite EasyAccess è possibile accedere da remoto alla operatività del pannello. Se si dispone di un indirizzo IP pubblico grazie al web server integrato è possibile accedere direttamente alla pagina web generata dal sistema. Questi sistemi necessitano dello sviluppo di una applicazione quindi sono rivolti a clienti che hanno esperienza nella programmazione.
Una alternativa è utilizzare prodotti dedicati in cui è richiesta solo una configurazione, ad esempio l’HWg-STE2 R2/Plus può acquisire fino a 5 sensori. Il prodotto è configurabile da pagina web ed anche in questo caso se si dispone di un indirizzo IP pubblico è possibile accedere direttamente alla pagina web. In alternativa è possibile connettersi al portale cloud gratuito HWg-cloud.
Sergio Bertana
Amministratore del forumI feedback che ho con il problema che tu lamenti capitano se è stato attivato i server VNC a singola connessione. Consiglio sempre di attivare il server multiconnessione.
Può succedere che con un client VNC connesso, in caso di perdita di rete momentanea la connessione rimane “appesa” e se è attiva la singola connessione nessun altro client VNC si può connettere. E’ previsto un timeout sulla connessione se non vi è traffico, ma alcune volte si è visto che la connessione rimane bloccata per molto tempo. Naturalmente il multiconnessione in questo caso garantirebbe l’accesso su un’altra connessione.
Sergio Bertana
Amministratore del forumPremesso che il massimo delle prestazioni dei pannelli cMT si ottiene con la connessione in rete Ethernet, utilizzata non solo per la programmazione ma anche per visualizzazione da pagina web o tramite App cMTViewer, accesso a server SQL, gestione protocollo OPC-UA, l’accesso da remoto con EasyAccess e molto altro.
Nel caso in cui si possa utilizzare la sola porta USB, la programmazione và fatta EasyBuilderPro, da cui si può anche testarne il funzionamento con il simulatore On-line/Off-line integrato. Dovrà poi essere generata una immagine del programma su PenDrive che inserita nel pannello ne permette il caricamento. Questa è anche la soluzione utilizzata per inviare al cliente finale upgrade di programma.
Su PenDrive si possono salvare log dati (creando l’opportuna configurazione del log), lista allarmi. Le ricette si salvano su HMI ma possono essere esportate/importate su PenDrive.
Sergio Bertana
Amministratore del forumIl formato dei numeri REAL è IEE754, ed è lo standard che quasi tutti i PLC utlizzano. IL tuo problema mi sembra legato alla endiannes del dato, il numero REAL è a 32 bits potrebbero esserci le due word a 16 bits che lo compongono invertite tra di loro.
Se il protocollo di comunicazione con il PLC S7 è assoluto, verifica di trasferire con il formato DBDn, in questo modo Weintek dovrebbe utilizzare il corretto endiannes.
Se utilizzi il formato simbolico, se la TAG è codificata come REAL, Weintek dovrebbe riconoscerla correttamente.
Sergio Bertana
Amministratore del forumMolte volte riceviamo richieste simili vediamo che soluzioni possiamo proporre. Intanto escludiamo lo sviluppo di App apposite visto il costo elevato, la necessità di svilupparle per sistemi Android e iOs ed il doverle caricare sul marketplace per la distribuzione. Detto questo la soluzione è di utilizzare per il comando da cellulare un semplice browser che è disponibile su tutti i cellulari.
I nostri PLC hanno il server web integrato su cui è possibile sviluppare pagine utente (Vedi articolo). Il problema è accedere al sistema tramite connessione cellulare, perchè in questo caso non si dispone di un indirizzo IP pubblico, una soluzione è utilizzare soluzioni di connessione peer-to-peer come ZeroTier (Vedi articolo).
Un’altra soluzione è appoggiarsi a portali IoT come ad esempio Beebotte (Vedi articolo), in questo caso il PLC dialoga via MQTT con il servizio mentre chi consulta le pagine si connette con un normale browser.
Utilizzando il protocollo MQTT è possibile anche appoggiarsi a broker commerciali e utilizzando App disponibili per i vari smartphone gestire i comandi (Vedi articolo).
Se ci si vuole cimentare con lo sviluppo di una aplicazione cloud è possibile utilizzare il protocollo di comunicazione REST. In questo caso i vari utenti si connettono sempre via browser alla applicazione la quale gestita l’autenticazione invierà i dati al PLC (Vedi articolo).
Naturalmente tutte queste soluzioni prevedono lo sviluppo dei relativi programmi, sia sul PLC, che, nel caso di applicazioni cloud anche sul server cloud. Noi possiamo fornire supporto per lo sviluppo ma non realizziamo soluzioni chiavi in mano. Per quanto riguarda i prodotti:
Gennaio 10, 2024 alle 2:27 pm in risposta a: Salvare credenziali accesso definite su pannello #75296Sergio Bertana
Amministratore del forumDevi abilitare la spunta
Use existing user accounts on HMI first (if existed)
nelle impostazioni di sicurezza del progetto (Screenshot).
Sergio Bertana
Amministratore del forumDalla versione 9.1.20 LogicLab implementa il supporto agli operandi TIME e DATA, questo ha obbligato ad alcune modifiche del sistema operativo. Alcune funzioni relative alla gestione dei tempi di sistema sono state eliminate, per mantenere la compatibilità con i programmi precedenti viene rilasciata la libreria eLLabDTimeAdjLib.
Ti ricordo che dalla versione 9.1.30 di LogicLab è stata introdotta la gestione della raccolta (Package) delle librerie (Vedi articolo), ora se utilizzi questa tecnica non dovresti mai trovare problemi di compatibilità con la compilazione dei programmi anche se utilizzano vecchie versioni di FB. Nel package viene distribuita la libreria eLLabObsoleteLib che contiene tutte le vecchie versioni.
Ora per risolvere il tuo problema puoi inserire nel progetto la libreria eLLabDTimeAdjLib che trovi nel package Pck055xxxx. Ma ti consiglio di modificare il progetto utilizzando il package.
Sergio Bertana
Amministratore del forumGuardando la tua configurazione vedo che sul pannello Weintek hai utilizzato la configurazione Modbus standard e non la zero base addressing, quindi anche sullo SlimLine è corretto non settare l’ingresso Absolute.
Vedo che l’indirizzo è 55 decimale quindi è corretto quello che hai definito nel progetto LogicLab.
Sul pannello Weintek hai utilizzato il comando 04, mentre nel progetto LogicLab hai definito 16#03 in FCode, prova ad utilizzare anche qui il 16#04.
Sul pannello Weintek esegui la lettura solo di un registro WORD, mentre nel programma LogicLab hai definito 8 in Points, prova a definire 1.
Fatto questo verifichiamo con la console di spionaggio se la comunicazione funziona, poi andremo a capire se il problema era il codice funzione (Come io credo) o il numero di registri da leggere.
Sergio Bertana
Amministratore del forumQuindi se non ricevi risposta con l’emulatore Modbus di Toolly c’è un errore in qualche parametro.
Modbus TCP è il protocollo da utilizzare, come vedi dal report di spionaggio il frame inviato è:
00 35 00 00 00 06 01 03 00 31 00 08
Infatti il Modbus TCP inizia con 2 bytes con un numero progressivo 00 35, 2 bytes sempre 00 00, 2 bytes con la lunghezza del pacchetto 00 06. Poi segue il frame Modbus RTU senza CRC, inizia con nodo 01, codice funzione 03, indirizzo 00 31, numero registri da leggere 00 08.
Ora il 40055 nel dialetto Modbus potrebbe indicare la lettura (Codice 04) all’indirizzo 55 esadecimale. Tieni conto che Modbus ha offset 1, ma alcuni sistemi non lo gestiscono infatti anche nell’emulatore è previsto il tick Zero base addressing che annulla l’offset.
Sergio Bertana
Amministratore del forumCarica le immagini su qualche sito cloud (Esempio imgur) e postane il link…
Dal report di spionaggio vedo che il sistema innvia il pacchetto Modbus di interrogazione corretto, ma non riceve nessuna risposta… Così và in errore di timeout…
Sei sicuro dell’indirizzo 55 ?
Prova con l’emulatore Modbus di Toolly ad interrogare il tuo dispositivo e provare se riesci a ricevere la risposta.
Visto che con il terminale Weintek hai detto che sei riuscito ad interrogare il dispositivo, invia alla eMail di supporto il programma che hai utilizzato che provo a verificare.
-
AutorePost