Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumIl router dispone di 2 ingressi ed 1 uscita digitale (Vedi schema elettrico), prestare attenzione alla connessione, sono segnali a 3.3 Volt.
L’accesso in SSH al device è possibile oltre che da seriale anche da porta Ethernet, eseguita l’autenticazione (Default user:root nessuna password) è possibile accedere ai comandi del sistema operativo OpenWRT. La gestione degli I/O è possibile tramite lo pseudo file system sysfs, i due ingressi sono connessi ai segnali GPIO_1 e GPIO_2 mentre il digital output è connesso al GPIO_0. Per accedere al GPIO_0 di uscita digitale occorre dare i comandi:
echo 0 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio0/direction
Il primo comando esporta il GPIO_0 nello spazio utente, mentre il secondo lo imposta come uscita, se il comando viene eseguito correttamente verrà creato il link al device virtuale gpio0 nella cartella “/sys/devices/virtual/gpio/”. Ora sarà possibile settarne il valore con i comandi:
echo 1 > /sys/class/gpio/gpio0/value echo 0 > /sys/class/gpio/gpio0/value
Il primo comando forza ad 1 l’uscita, che essendo di tipo open collector si chiude a GND. Il secondo forza a 0 l’uscita che si porterà tramite la resistenza interna di pull-up a 3.3 volt.
Sergio Bertana
Amministratore del forumLa soluzione è già nelle tue mani… anzichè utilizzare il caricatore LLC.exe del LogicLab Loader puoi utilizzare direttamente quello della versione di LogicLab che stai utilizzando per compilare il programma. Esempio
"C:\Program Files (x86)\Elsist\LogicLab\LogicLab5\LLC.exe" "PERCORSO_FILE.rsm" /D /DR /WRU /F:"ModbusTCP:1,1000,M#TCPIP:192.168.0.122/502,5000"
Giugno 16, 2021 alle 10:41 am in risposta a: Come utilizzare gli I/O logici presenti su terminale Picoface #60325Sergio Bertana
Amministratore del forumSul terminale Picoface oltre ai 2+2 I/O logici galvanicamentre isolati è presente anche una porta 1-Wire ed una porta seriale RS232/RS485. Il terminale è disponibile in 2 versioni una base da collegare direttamente al bus di espansione dei sistemi SlimLine ed una full dotata di alimentazione indipendente da collegare in seriale RS232/RS485 ai sistemi SlimLine.
Per la gestione del Picoface ti consiglio di utilizzare il FB HMIAInOnePicoface, che permette di gestire il terminale sia connesso al bus che connesso in seriale. Agendo sulle variabili del FB potrai gestire tutti i segnali di I/O del terminale, tasti, LED e I/O digitali come desideri dal tuo programma PLC, in qualunque linguaggio.
Sull’uscita OneWireData sono ritornati i dati letti da un dispositivo 1-Wire connesso al terminale potendo così gestire lettori di TAG, sensori di temperatura, ecc…
Se il terminale è connesso al bus di espansione (quindi la porta seriale è disponibile) è possibile utilizzarla da programma LogicLab.
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.
-
AutorePost