Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumSinceramente non hoi mai trovato questo tipo di problema…
L’oggetto impostazione/visualizzazione Ascii come hai detto giustamente tu opera su WORD quindi ogni WORD contiene due caratteri Ascii. Se sul tuo PLC la variabile stringa ad esempio è di 16 caratteri tu dovrai definire nell’oggetto la lunghezza di 8 WORDs.
E nella visualizzazione e/o impostazione non ci saranno spazi, ma il testo verrà visualizzato esattamente come scritto nel PLC (Questo salvo che il PLC non tratti le stringhe in modo particolare), Quello che ho scritto vale sicuramente per i ns sistemi SlimLine ma anche per moltissimi altri PLC con cui i nostri clienti si sono connessi.
Attenzione al codice tappo, le stringhe Ascii sul PLC possono essere terminate con il codice tappo (16#00) quindi solitamente se definisci una variabile STRING[16] in realtà nella memoria vengono allocati 17 bytes (Uno per il tappo) quindi devo definire lunghezza 9 WORDs. Nessun problema in visualizzazione, quando viene acquisito il valore il codice tappo termina la stringa. Ma in inputazione vegono inviati al PLC 18 bytes e quindi vado a sporcare anche i primo bytes della variabile allocata dopo la variabile STRING, in tal caso occorre lasciare un byte libero o allocare stringhe di lunghezza dispari in modo che il byte aggiuntivo di tappo le renda di lunghezza pari.
Sergio Bertana
Amministratore del forumSergio Bertana
Amministratore del forumLa soluzione più semplice è utilizzare l’oggetto Multi-State Switch, questo oggetto permette la definizione di una mappa di stati in cui puoi definire a che stato corrisponde il valore della variabile collegata (Screenshot). Nel tuo caso avremo:
- Valore 2: Stato 0, in cui definirai l’etichetta “Guasto”
- Valore 4: Stato 1, in cui definirai l’etichetta “Disinserito”
- Valore 257: Stato 2, in cui definirai l’etichetta “In Allarme”
Siccome si tratta di unop switch multistato, alla pressione dell’oggetto sullo schermo corrisponde una azione, nell’esempio sarà un JOG-, quindi ad ogni pressione verrà scritto nella variabile indirizzata il valore corrispondente allo stato precedente. Se la variabile vale 257 alla pressione scriverò 4 ed alla prossima pressione scriverò 2.
Siccome mi sembra di capire nel tuo caso devi solo visualizzare gli stati e non impostarli, come workaround puoi definire lettura/scrittura ad indirizzi diversi, ed eseguire la lettura dal sistema di allarme mentre la scrittura la puoi indirizzare in una LW del pannello che non utilizzi.
Marzo 6, 2025 alle 3:19 pm in risposta a: Installazione VPN su router Milesight e costo abbonamento #80350Sergio Bertana
Amministratore del forumMilesight ha pubblicato questo articolo in cui riporta indicazioni su come configurare un client OpenVPN nei proprii routers.
Il servizio si basa sul server di CloudConnexa che permette fino a 3 connessioni contemporanee gratuite. Puoi direttamente verificare sul sito quali sono le condizioni economiche per aggiungere ulteriori connessioni.
Sergio Bertana
Amministratore del forumIl router Milesight UR32 permette di realizzare applicazioni in python per le esigenze più disparate, rimando a questo articolo per ulteriori informazioni. Per permettere lo sviluppo di applicazioni Python è necessario installare la scheda micro SDCard nel router.
Riguardo alla tua applicazione specifica ho chiesto a Milesight se avevano un qualche esempio di invio SMS da Python mi hanno inviato un link a questa loro guida applicativa, spero possa essere di aiuto.
Marzo 3, 2025 alle 4:04 pm in risposta a: Warning T8209: Impossibile scaricare il file sorgente #79990Sergio Bertana
Amministratore del forumIl programma sorgente (File Project.rsm) viene trasferito nel file system dello SlimLine sul disco C nella cartella C:\Plc. La warning stà ad indicare che sul disco non vi è lo spazio sufficente a memorizzare il file sorgente, quindi non viene trasferito.
Il programma eseguibile è comunque sempre trasferito ed è per questo che il programma funziona correttamente, ma non essendoci il file sorgente ecco che non è possibile effettuarne l’upload dal PLC.
Ho dato una occhiata al tuo progetto, e l’errore è nella definizione delle librerie, come vedi dallo screenshot, nel tuo progetto in errore hai incluso tutte le librerie ed inoltre hai definito il percorso di più raccolte di librerie. Nel progetto corretto devi solo includere l’ultima raccolta di librerie disponibile.
Le librerie presenti nella finestra superiore Libraries, sono incluse nel progetto ed inviate al PLC con il codice sorgente del tuo progetto, e siccome sono molte generano un file sorgente molto grande che supera lo spazio disponibile nel disco.
Le librerie presenti nella finestra inferiore Libraries directories invece sono utilizzate per la compilazione del programma e non vengono inviate al PLC rendendo il programma sorgente molto più compatto, velocizzando anche i tempi di download.
Febbraio 28, 2025 alle 11:04 am in risposta a: Autoriduzione larghezza colonne visualizzazione di dati storici #79952Sergio Bertana
Amministratore del forumNon ho informazioni di BUG di questo tipo…
Se invii il progetto alla nostra mail di supporto posso dare una occhiata…
Sergio Bertana
Amministratore del forumLa password è relativa a tutte le ricette.
In alternativa occorre crearsi una sorta di doppio DB ricetta uno protetto e uno no ma poi occorre inventarsi la gestione della visualizzazione dei due e dei richiami.
Febbraio 27, 2025 alle 3:44 pm in risposta a: Riportare pannello cMT ai valori di default di fabbrica #79938Sergio Bertana
Amministratore del forumDa come mi descrivi il problema mi sembra di capire che potresti avere aperto la pagina in Pop-Up e non in cambio di pagina base.
I Pop-Up aprono finestre in visualizzazione sulla pagina base e queste finestre hanno la cornice con il simbolo X di chiusura.
Febbraio 27, 2025 alle 2:11 pm in risposta a: Acquisizione valori via Modbus da contatori Iskraemeco #79927Sergio Bertana
Amministratore del forumDa quello che scrivi vedo che non hai seguito l’evolvere delle versioni LogicLab, da un certo tempo a questa parte, nel progetto non vengono più incluse le singole librerie ma si include una raccolta di librerie (Vedi articolo).
La raccolta ti evita di cercare gli oggetti nelle librerie, basta inserirli nel progetto e si preoccupa LogicLab di cercarli ed utilizzarli.
Quindi elimina dal tuo progetto tutte le librerie ed inserisci la raccolta in questo modo riuscirai a compilare il programma.
Sergio Bertana
Amministratore del forumLo SlimLine è un dispositivo programmabile quindi quello che chiedi anche se non è nativo lo si può facilmente realizzare, vediamo come.
Puoi realizzare un programma con il FB DataStreamExch definendo come streams di comunicazione un FB SysTCPServer in ascolto su di una porta TCP e un FB SysSerialPort sulla porta seriale connessa all’inverter. Ora siccome avrai già un FB SysSerialPort che utilizzi per il FB di comunicazione inverter dovrai utilizzare il suo File scambiandolo tra l’FB di gestione inverter ed il FB DataStreamExch.
Per automatizzare il passaggio al passthrough puoi controllare i peers connessi al SysTCPServer, quando si connette un peer disabiliti la comunicazione Modbus con l’inverter ed abiliti lo scambio dati.
Nota: Il programma INVT Workshop quando selezioni il modello GD20 permette la sola comunicazione seriale, quindi se vuoi indirizzare i dati verso una comunicazione TCP/IP devi installare un programma di virtualizzazione porte nel tuo PC (Ad esempio HW VSP3 – Virtual Serial Port Single port Vers. 3.1.2 (freeware) vedi articolo).
Sergio Bertana
Amministratore del forumNon esistono dispositivi 1-Wire “Standard” esistono dispositivi forniti da Maxim (Ex Dallas semiconductors), di questi dispositivi il produttore fornisce tutte le specifiche del protocollo e quindi è possibile realizzare appositi FB di acquisizione. Ad esempio i sensori di temperatura sono basati sul chip DS18B20 di cui trovi in rete tutte le specifiche.
In breve devi immaginare il protocollo 1-Wire come una comunicazione seriale multidrop (Per semplicità la puoi equiparare al Modbus), ogni sensore ha un ID univoco che è indicato oppure è possibile acquisirlo con il FB OWRdIdentifier o con OWSearch. Tutti i sensori 1-Wire come quelli HWgroup o quello che hai indicato sono realizzati tipicamente in due modi:
- Si basano su qualche chip Maxim, ad esempio il DS2438 utilizzato come convertitore A/D. In questo caso è possibile leggere il valore A/D acquisito perchè esiste documentazione del chip DS2438, ma è ovvio che non sapendo il valore A/D a che valore di misura corrisponde senza la documentazione del produttore non si può utilizzare il sensore.
- Utilizzano un microcontrollore appositamente programmato per lo scopo. In questo caso se il fornitore non dà indicazione sul tipo di protocollo non è possibile utilizzare il sensore.
Sergio Bertana
Amministratore del forumNella gamma HomeBox esistono diversi tipi di sensori con interfaccia 1-Wire, ma HWgroup non rilascia le informazioni sul protocollo di comunicazione, quindi questi sensori possono essere connessi solo ai dispositivi HWgroup.
Ora se la tua esigenza è di acquisire valori di temperatura, umidità, ecc da un dispositivo PLC SlimLine e vuoi utilizzare i dispositivi HomeBox puoi connetterli ad esempio ad un STE2-LITE e poi acquisirne i valori con il protocollo SNMP.
In alternativa il valore di temperatura si può acquisire via interfaccia 1-Wire con una sonda TR-160, mentre nei sensori combinati in RS4845 puoi trovare una gamma di misure disponibili.
Per applicazioni wireless puoi scegliere tra una vasta gamma di sensori a batteria Milesight, ricordo che per la connessione di questi sensori al PLC SlimLine ti occorre un gateway come questo.
Febbraio 27, 2025 alle 7:59 am in risposta a: Acquisizione valori via Modbus da contatori Iskraemeco #79890Sergio Bertana
Amministratore del forumC’è un po di confusione, vedo se riesco a fare chiarezza… La funzione IEE754DoubleToFloat a cui fai riferimento permetteva di convertire un numero dal formato float IEE754 a 64 bits nel formato float IEE754 a 32 bits. Questa operazione era necessaria all’epoca perchè LogicLab non gestiva il formato LREAL cioè float a 64 bits.
Ma tui hai un’altro problema, hai 2 registri Modbus a 16 bits che ritornano un valore DWORD a 32 bits almeno così credo (Attenzione molti meters di energia ritornano un valore su 2 registri Modbus a 16 bits ma con un valore REAL IEE754 a 32 bits).
Ora se è una DWORD basta leggere i 2 registri a 16 bits e poi combinare i due valori con la funzione WordsToDouble stando attendo a LSW e MSW, al limite inverti i due registri. Se invece il valore è un REAL devi combinare i due valori e poi trasferirli in una variabile REAL, per comprendere il formato IEE754 puoi utilizzare un convertitore on-line come questo. Ecco un semplice esempio.
VAR DWValue : DWORD; (* DWORD result *) RLValue : REAL; (* REAL result *) ModbusRegs : ARRAY[0..1] OF WORD; (* Modbus registers *) END_VAR ModbusRegs[0]:=16#449A; //MSW Value ModbusRegs[1]:=16#522B; //LSW value DWValue:=WordsToDouble(ModbusRegs[0], ModbusRegs[1]); //Result=16#449A522B RLValue:=eGetREAL(ADR(DWValue)); //Result=1234.5677
Sergio Bertana
Amministratore del forumSei arrivato con il topic in anticipo di qualche giorno sull’uscita della nuova versione di LogicLab che tra le altre novità ha anche la possibilità di esportare le TAGs di progetto in un file CSV compatibile con l’import di EasyBuilder di Weintek.
Puoi già trovare informazioni su questa nuova feature in questo articolo, usciremo a breve con la nuova versione di LogicLab e con un video illustrativo di questa nuova feature.
-
AutorePost