Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumDa quello che dici immagino tu stia leggendo da un file su disco, quindi ho provato a fare il semplice programmino JSONFRead (Ecco il download) per verificare la tua situazione. Ma intanto il contenuto del file che tu hai indicato è 236 caratteri e non 279. Ecco il programma che ho realizzato.
// ***************************************************************************** // PROGRAM "JSONFRead" // ***************************************************************************** // Read JSON object from file. // ----------------------------------------------------------------------------- // ------------------------------------------------------------------------- // FILE READ // ------------------------------------------------------------------------- // Wait for a "Read" command. IF NOT(Read) THEN RETURN; END_IF; Read:=FALSE; //Read command // Open the file, exit on error. Fp:=SysFfopen(ADR('D:/JSONObj.json'), ADR('r')); //File pointer IF (Fp = eNULL) THEN RETURN; END_IF; // Read data from file. i:=Sysmemset(ADR(JSONObj), 0, SIZEOF(JSONObj)); RChars:=Sysfread(ADR(JSONObj), TO_INT(SIZEOF(JSONObj)), 1, Fp); //Number of characters read i:=SysWrSpyData(SPY_ASCII, 0, 16#00000001, ADR('JSONFRead'), ADR(JSONObj)); i:=Sysfclose(Fp); //Close file // [End of file]
Siccome non mi dici come hai fatto a vedere la stringa letta che era corrotta (Posso immaginare che l’hai vista in dfebug da LogicLab) ma essendo molto lunga io ho preferito ritornarla con una SysWrSpyData e visualizzarla nella console di spionaggio ed il mio programma funziona correttamente. Per decodificare l’oggetto JSON letto puoi utilizzare il FB JSONDecode.
Nota che prima di leggere i dati dal file con Sysfread ho eseguito l’azzeramento dell’intera stringa risultato con Sysmemset perchè la prima volta che esegui il programma la stringa è inizializzata a “0” ma dopo aver letto al suo interno si trovano dei dati e se una successiva lettura legge meno dati di quelli presenti non avendo messo il codice tappo “0” di fine stringa tu vedrai i dati letti seguiti dai dati che seguono presenti nella stringa.
Giugno 16, 2021 alle 8:56 am in risposta a: Verifica funzionamento macchine tramite rete WiFi #60321Sergio Bertana
Amministratore del forumSe devi solo acquisire i 2 ingressi logici il 600693 SD-2xIN può fare al caso. Questo prodotto dispone di supporto per fissaggio su guida DIN da armadio, però se lo vuoi connettere in WiFi dovrai provvedere una antenna esterna perchè chiuso in un armadio metallico potrebbe avere problemi di ricezione.
Ma a differenza del STE2 non può inviare eMail direttamente, può solo inviare dati al portale SensDesk. Potrai poi configurare sul portale l’invio di una eMail su attivazione/disattivazione degli ingressi.
Il portale SensDesk è gratuito è possibile monitorare qualsiasi numero di sensori ma un massimo di 3 dispositivi. Per aumentare il numero di dispositivi occorre installare un proprio servizio SensDesk nel cloud.
Se puoi connettere il dispositivo via Ethernet (O eventualmente puoi aggiungere un access point WiFi) puoi utilizzare un Poseidon 3266 che oltre a darti la possibilità di gestire fino a 8 sensori 1-Wire gestisce 4 ingressi digitali e può inviare direttamente l’eMail, essere gestito da PDMS e collegarsi a SensDesk.
Giugno 16, 2021 alle 8:49 am in risposta a: Verifica funzionamento macchine tramite rete WiFi #60318Sergio Bertana
Amministratore del forumPotrei consigliarti lo STE2, il dispositivo permette tramite connessione Ethernet o WiFi l’acquisizione di fino a 5 sensori 1-Wire per la lettura di grandezze fisiche come temperatura, umidità, CO2, ecc oltre ad acquisisre 2 contatti logici.
In questo modo potrai non solo acquisire lo stato di 2 eventi ma potrai anche monitorare la temperatura dei frigoriferi.
Puoi impostare l’invio diretto di eMail sullo stato degli ingressi o su soglie impostabili di temperatura. Potrai connetterti al portale cloud SensDesk e monitorare lo stato sia degli ingressi che dele grandezze fisiche direttamente nel cloud.
Con il programma PDMS potrai memorizzare su database tutte le informazioni in questo modo avrai un archivio storico dei dati.
Sergio Bertana
Amministratore del forumRispondo subito alla domanda sulla terminazione, non è presente nessuna resistenza di terminazione. Solitamente non viene inserita ma se si desidera terminare il bus RS485 è possibile saldare la resistenza sul connettore.
Per quanto riguarda invece la possibilità di escludere i nodi non presenti riferirsi ai registri interni del pannello.
LB-9152 Auto. connection for device 3 (COM 3) (when On), default is On
Resettando il bit il pannello non esegue più l’auto connessione sulla porta RS85 COM3, ora agendo sui registri:
LB-9800~LB-10055 device 3 status (SN0~255, COM 3), set on to retry connection, default is Off
è possibile settare solo i bit relativi al nodo presente connesso alla COM3 (Esempio LB-9805 per il nodo 5, LB-10055 per il nodo 255). In questo modo il terminale si connetterà solo con i nodi il cui bit è settato.
Sergio Bertana
Amministratore del forumHo aggiunto il programma dimostrativo SDM120SetUp il cui programma sorgente è riportato in questo articolo.
Tramite questo programma è possibile da uno SlimLine leggere e scrivere qualsiasi registro del meter SDM 120. Il programma permete quindi di eseguire la configurazione del meter (Indirizzo di nodo, parametri di comunicazione, rapporto trasformatore amperometrico, ecc) in modo molto semplice impostando i valori da debug con LogicLab.
Sergio Bertana
Amministratore del forumRimando a questo topic per l’impostazione dell’indirizzo di nodo Modbus.
Sergio Bertana
Amministratore del forumDa buon esperto dei ns prodotti Marcello ha indicato la strada utilizzando un modulo CPU SlimLine, ma vediamo come impostarlo utilizzando il programma Toolly. L’elenco dei registri Modbus si evince da questo documento, naturalmente occorre premere il tasto sul frontale ed attendere la scritta -SEt-.
Il registro di impostazione indirizzo è indicato come 40021 Meter ID, l’indirizzo Modbus è 20 (16#0014), ricordo che Modbus ha offset -1. Il valore di nodo è in formato float IEE754 per il calcolo del valore in floating point, puoi usare un convertitore in linea come questo.
Il valore di default è 1 (16#3F800000). Per impostare l’indirizzo 2 dovrai scrivere il valore 16#40000000, l’indirizzo 3 ha valore 16#40400000… Ecco uno screenshot di Toolly con la lettura dell’indirizzo di nodo di default 01 e la scrittura dell’indirizzo 02.
Similarmente alla impostazione del nodo Modbus è possibile eseguire l’impostazione delle altre opzioni, rimando a questo topic per l’impostazione del rapporto del trasformatore TA.
Sergio Bertana
Amministratore del forumPer abilitare il salvataggio dei vari POUs in file specifici (Un file per ogni POU) devi abilitare la flag Multiple files project dal menù Progetto->Opzioni in LogicLab (Screenshot).
In questo modo all’interne della cartella di progetto verrà creata una ulteriore cartella (Denominata src) al cui interno si troveranno tutti i files di progetto.
Sergio Bertana
Amministratore del forum- La licenza EasyAccess è legata ad un solo pannello, alcuni modelli di pannello hanno già la licenza preinstallata (Vedi come attivarla), per gli altri modelli và acquistata la Activation card di attivazione (Vedi come attivarla). La licenza dura per tutta la vita del pannello garantendo una banda minima garantita da 100Kb/s fino ad 1Gb di traffico al mese (Vedi topic).
- Se ti ricordi il dominio associato dal sito Weintek ti puoi fare reinviare le credenziali. Se non ti ricordi il dominio puoi realizzare un progetto vuoto con la sola pagina 76 richiamata, se il terminale è connesso ad Internet puoi vedere il dominio nel quale è registrato il dispositivo e quindi richiedere il rinvio delle credenziali (Nel momento che richiedi il reinvio potrai vedere anche l’indirizzo eMail a cui verranno inviate). Poi seguendo le informazioni in questo post potrai spostare il terminale da un dominio ad un’altro.
Sergio Bertana
Amministratore del forumL’utilizzo de FB JSONDecode rende l’operazione di decodifica molto più semplice ma puoi comunque utilizzare le funzioni SysStrFind e SysVsscanf per acquisire i valori dalla stringa JSON.
Questo era il metodo che utilizzavo prima del FB apposito e comunque il FB utilizza al suo interno queste funzioni per effettuare la decodifica.
Sergio Bertana
Amministratore del forumCerto che esiste…
Puoi utilizzare il FB HTTPClient, lo dovrai inizializzare nel modo.
HTTPRq.RMethod:=0; //Request method, GET HTTPRq.HostAddress:=ADR('xxx.xxx.xxx.xxx'); //IP inverter HTTPRq.HostName:=HTTPRq.HostAddress; // Hostname HTTPRq.HostPort:=80; //Server port HTTPRq.Page:=ADR('/raw_data'); //Web page HTTPRq.Request:=eNULL; //Request string HTTPRq.Header:=eNULL; //HTTP header HTTPRq.DBSize:=512; //Data buffer size HTTPRq.Timeout:=10000; //Execution timeout
Se copi l’esempio della pagina di manuale dimensionando apportunamente la stringa Page, ti troverai all’interno la pagina ritornata dall’inverter.
Poi sarà un gioco da ragazzi con le funzioni SysStrFind e SysVsscanf acquisire i valori ritornati.
Sergio Bertana
Amministratore del forumPurtroppo il FB JSONDecode può decodificare solo variabili array ma non array a matrice come nel tuo caso.
Sergio Bertana
Amministratore del forumIl caricamento del programma da SDCard o USB disk tecnicamente è fattibile ma non lo abbiamo sviluppato per la difficoltà nel gestire le versioni di sistema operativo… LogicLab legge dal sistema target la tabella con gli indirizzi degli oggetti (Funzioni e FB) di sistema e compila il programma “vestendolo” sugli indirizzi letti.
Quindi è evidente che quando si esegue l’upload di un programma già compilato è condizione essenziale che lo si carichi su di un sistema che ha esattamente la stessa versione di sistema operativo del programma compilato. In caso contrario si avrebbe una non funzionalità, per questo motivo abbiamo evitato di eseguire il caricamento di un programma compilato.
Discorso diverso invece per quanto riguarda il LogicLab Loader, a cui è possibile passare il progetto in formato redistribuibile *.rsm. Il programma si connette al sistema target, legge dal sistema la tabella dei simboli e poi ricompila il progetto adattandolo alla versione di sistema operativo del target.
Se vuoi proteggere il tuo progetto sorgente dovrai criptare i vari programmi ed FB del progetto, in questo modo il Loader potrà leggerli ma non potrà leggerli nessuno senza avere la password di decrittatura.
Giugno 7, 2021 alle 12:26 pm in risposta a: Configurazione indirizzi di rete per utilizzo HMI e SCADA #60156Sergio Bertana
Amministratore del forumSulla configurazione della tabella di mapping trovi il capitolo MODBUS TCP/IP Gateway interamente dedicato all’argomento sul manuale di EasyBuilder che puoi scaricare dal nostro sito.
Sergio Bertana
Amministratore del forumI moduli Yotta si gestiscono in Modbus quindi è possibile gestirli utilizzando direttamente il FB ModbusMaster da solo o abbinadolo al FB ACModbus.
Per semplificarne l’utilizzo si può utilizzare il FB YottaA1MMng.
-
AutorePost