Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Luglio 30, 2025 alle 2:08 pm in risposta a: Configurazione indirizzo di rete su pannello operatore #83582
Sergio Bertana
Amministratore del forumSolitamente dovendo fare l’acccesso via Internet con EsayAccess si preferisce scegliere pannelli con 2 porte ethernet in modo da separare le reti tra rete PLC e rete aziendale. Sfruttando l’accesso Internet dalla reste aziendale senza dover utilizzare router aggiuntivi ed evitando di avere i PLC connessi alla rete aziendale.
Ma comunque è possibile utilizzare una unica rete LAN, specie se la lasci sconnessa dalla rete aziendale utilizando un router dedicato per l’accesso ad Internet come hai fatto tu. Vediamo quali sono le regoli generali di configurazione delle reti ethernet:
- Tutti i dispositivi per comunicare tra di loro devono appartenere alla stessa subnet. Esempio 192.168.50.xxx, mask 255.255.255.0.
- Non devono esserci IP duplicati nella rete, se si usano IP statici, occorre tenere un elenco per evitare conflitti.
- Il gateway deve essere impostato solo se vuoi uscire su Internet (es. via router).
- I DNS sono utili per navigare (es. risolvere nomi come google.com).
Quindi venendo al tuo problema non vedi il panello on-line su internet perchè probabilmente non hai configurato correttamente la rete LAN del router che ti consiglio impostare con indirizzo IP 192.168.50.1.
Nel pannello dovrai impostare come indirizzo IP del gateway l’indirizzo assegnato al router. Mentre come DNS potrai impostare il classico DNS Google IP 8.8.8.8, se il pannello prevede 2 impostazioni di DNS puoi definire come primario l’indirizzo IP del router e come secondario 8.8.8.8.
Non conviene impostare il pannello in DHCP anche se probabilmente il router ha il server DHCP abilitato, perchè poi non conosceresti l’IP del pannello e dovresti cercare nella pagina di configurazione del server DHCP che indirizzo ha assegnato al pannello. Inoltre se non definisci nel server DHCP l’assegnazione con il MAC address il server DHCP potrebbe cambiare l’indirizzo IP assegnato al pannello.
Sergio Bertana
Amministratore del forumAxel fornisce una versione di run time LogicLab per Raspberry (Vedi Wiki), questa versione è installabile su tutti i modelli supportati, ma non supporta le librerie da noi sviluppate.
La versione che noi distribuiamo è supportata solo se al modulo Raspberry è connessa la nostra interfaccia hardware che permette la connessione ai nostri moduli di estensione I/O. Questa interfaccia hardware viene assemblata al modulo Raspberry nel Modulo CPU SlimLine Raspberry PI IEC61131-3 e non è venduta stand-alone.
In conclusione non è possibile utilizzare il nostro run time sui moduli Raspberry se non assemblati con la nostra interfaccia, per utilizzare LogicLab su un modulo Raspberry commerciale devi utilizzare il LogicLab scaricato dal sito della Axel.
Sergio Bertana
Amministratore del forumLa versione attuale di LogicLab non permette l’inserimento e/o la sostituzione di oggetti nelle librerie plclib. Axel mi comunica che è in fase di sviluppo una nuova versione che prevederà questa operazione ma sconsiglia comunque di perseguire questa strada. Questo perchè i nuovi oggetti inseriti non potranno comunque essere inseriti in cartelle all’interno della libreria ma saranno accodati perdendo la visualizzazione ad “albero” nel browsing delle librerie.
Per soluzionare il tuo modo operativo ti consiglio di creare uno o più progetti libreria, all’interno del progetto creare una o più cartelle di libreria nelle quali distribuire in ulteriori cartelle secondo una logica di funzione i vari oggetti. In questo modo con un singolo comando potrai creare la tua o le tue librerie. Se vuoi aggiungere ad una libreria un oggetto dovrai semplicemente importare l’oggetto nel progetto libreria e poi ricreare la libreria.
Come vedi nella nostra raccolta di librerie forniamo molte librerie suddivise per argomenti ed all’interno di ogni libreria suddividiamo gli oggetti in base alla loro funzione (Vedi screenshot) in questo modo chi deve utilizzarle può trovare l’oggetto che cerca navigando nell’albero in base alle definizioni.
Sergio Bertana
Amministratore del forumLe librerie sono raccolte di funzioni, blocchi funzione (FB), variabili, costanti e tipi di dato predefiniti o personalizzati che puoi includere nei tuoi progetti PLC per riutilizzare codice già sviluppato. Le librerie ti permettono di:
- Risparmiare tempo: non occorre riscrivere codice comune (es. gestione seriale, comunicazione Modbus, PID, ecc.)
- Strutturare meglio i progetti: separando la logica applicativa da componenti riutilizzabili
- Utilizzare codice collaudato: le librerie ufficiali sono testate e affidabili (Ecco quelle da noi rilasciate)
Le librerie possono essere in formato pll o plclib (Formato consigliato):
- Libreria pll: è possibile inserire oggetti presi da progetti diversi accodandoli all’interno della libreria. Questa soluzione deprecata non permetteva di ordinare gli oggetti all’interno di cartelle, ne di assegnare all’oggetto icone o immagini esplicative delle sue caratteristiche.
- Libreria plclib: In questa nuova soluzione è possibile suddividere gli oggetti in cartelle, assegnare agli oggetti icone ed immagini esplicative. Per la realizzazione della libreria si consiglia di creare un progetto nel quale inserire all’interno di una cartella tutti gli oggetti che si desidera includere nella libreria, assegnando alla cartella l’attributo di generazione libreria (Vedi Wiki Axel). In questo modo il comando Generate Library dato sulla cartella provvederà alla creazione della libreria. Se è definita una chiave di crittazione tutto il contenuto della libreria verrà crittografato permettendone l’utilizzo ma senza poter visualizzare il programma sorgente.
Luglio 21, 2025 alle 3:01 pm in risposta a: Verifica correttezza caratteri in una stringa codice #83504Sergio Bertana
Amministratore del forumLa soluzione è utilizzare le regular expressions (o espressioni regolari), che sono uno strumento potentissimo per cercare, verificare o manipolare testo usando dei modelli (pattern).
Vediamo come realizzare un semplice programma che soddisfi le tue necessità:
VAR SStr : STRING[ 32 ]; (* Source string *) DStr : STRING[ 32 ]; (* Destination string *) Ok : BOOL; END_VAR eTO_JUNK(SysVsscanf(ADR(SStr), ADR('%32[0-9a-zA-Z]'), STRING_TYPE, ADR(DStr))); Ok:=(SStr = DStr);
In SStr si trova la stringa da controllare, la funzione SysVsscanf la scansiona accettando tutti i caratteri che soddisfano la definizione racchiusa tra parentesi quadre fino ad un massimo di 32 caratteri e memorizza il risultato in DStr. Se la stringa risultato è uguale alla stringa sorgente il valore è corretto, si attiva la varioabile Ok. Si possono definire d iversi pattern di controllo:
eTO_JUNK(SysVsscanf(ADR(SStr), ADR('%32[a-zA-Z]'), STRING_TYPE, ADR(DStr))); //Caratteri alfabetici (Maiuscoli/Minuscoli) eTO_JUNK(SysVsscanf(ADR(SStr), ADR('%32[a-zA-Z ]'), STRING_TYPE, ADR(DStr))); //Caratteri alfabetici (Maiuscoli/Minuscoli) e space eTO_JUNK(SysVsscanf(ADR(SStr), ADR('%32[a-z]'), STRING_TYPE, ADR(DStr))); //Caratteri alfabetici (Minuscoli) eTO_JUNK(SysVsscanf(ADR(SStr), ADR('%32[0-9]'), STRING_TYPE, ADR(DStr))); //Solo numeri
Luglio 15, 2025 alle 9:33 am in risposta a: Problemi con memorie ritentive PLC SlimLine MPS5054C110 #83467Sergio Bertana
Amministratore del forumColgo l’occasione della discussione per trattare lo spinoso argomento del rendere ritentivi i blocchi funzione. I FB utilizzano al loro interno svariate variabili e non è noto il loro impegno di memoria, quindi sconsiglio la loro allocazione in area indirizzabile come la DB100. Perchè dovendo definire gli indirizzi di allocazione non è possibile sapere a priori a che indirizzo allocare la variabile successiva alla allocazione del FB. Quindi se proprio si desidera rendere ritentivo un FB è preferibile definirlo in area automatica con l’attributo RETAIN.
Rendere retain un FB potrebbe nascondere insidie, chi sviluppa i FB solitamente non li struttura per essere tamponati, per esempio potrebbe alllocare al loro interno memoria rilocabile ed in questo caso il mantenere retain l’indirizzo di allocazione potrebbe portare a gravi errori di funzionamento del programma. Nel tuo caso quindi puoi allocare il tuo FB CTU in area automatica con l’attributo RETAIN.
Nel caso ti occorra accedere da Modbus il valore di conteggio, non utilizzare più il FB CTU ma alloca ad esempio in DB100.2048 una variabili UINT o UDINT e gestisci il conteggio da programma, ecco un esempio:
VAR Pulse : BOOL; (* Clock pulse *) Di00CPU AT %IX255.0 : BOOL; (* Digital input *) Counter AT %MD100.2048 : UDINT; (* Counter value *) END_VAR IF (Di00CPU <> Pulse) THEN Pulse:=Di00CPU; //Clock pulse IF (Di00CPU) THEN Counter:=Counter+1; END_IF; END_IF;
Sergio Bertana
Amministratore del forumEcco come potremmo soddisfare le richieste con i ns prodotti:
- MPS056B320 SlimLine Modulo CPU Cortex M7 Compact Ethernet LLab Ext. Statico, il modulo ha 6 ingressi digitali e 4 uscite statiche con le quali è possibile comandare 4 relè statici di comando resistenze.
- PCB126C110 SlimLine Modulo esp. I/O Analogico 5In, con il modulo è possibile acquisire 5 sensori di temperatura Pt100/1000 o 4 termocoppie.
- TG68-60 Sonda di temperatura PT1000, visto il range di temperatura consiglierei una Pt1000 anzichè la termocoppia. Per il montaggio su tubo possiamo proporre PTS350A Sonda di temperatura a contatto PT1000/3850.
Veniamo alla regolazione, normalmente nei serbatoi si utilizza una regolazione PID (Vedi FB PIDMng), che produce in uscita un comando PWM delle resistenze. Trattandosi di liquido in transito possiamo sfruttare la sua inerzia termica solo se il serbatoio è molto grande rispetto al volume del liquido in transito.
Se invece il volume del serbatoio è molto piccolo e bisogna scaldare il liquido mentre transita è possibile che la regolazione PWM delle resistenze non riesca a garantire una buona regolazione, quindi in questo caso opterei per un comando delle resistenze a parzializzazione di fase.
Sergio Bertana
Amministratore del forumNon mi dici se c’è possibilità di alimentazione elettrica sul serbatoio, e se il galleggiante và gestito con un semplice contatto oppure vi è un indicatore di livello analogico.
Abbiamo diverse soluzioni, la più semplice che propongo è basata su dispositivi LoRaWAN una tecnologia progettata per comunicazioni wireless a lungo raggio ed a basso consumo energetico che in area urbana può raggiungere dai 2 ai 5 km di copertura. Sul serbatoio puoi installare:
- UC300, controller IoT LoRaWAN, può gestire sia ingressi digitali che segnali analogici, ma deve essere alimentato.
- EM300-DI, contatore impulsi LoRaWAN, può gestire l’ingresso digitale ed è autoalimentato a batteria.
Sulla pompa andrà installato il PLC di gestione ed il gateway LoRaWAN:
- MPS056B110 SlimLine Modulo CPU Cortex M7 Compact Ethernet, PLC di controllo con 6 ingressi digitali e 4 uscite relè.
- UG56-868M Gateway industriale LoRaWAN.
Tramite il FB MlsDevice è possibile dal PLC di gestione acquisire tramite il gateway l’informazione del galleggiante dal sensore LoRaWAN e gestire con l’uscita logica il comando pompa. Agli ingressi del PLC possono essere connessi altri segnali come ad esempio il contatto del termico motore pompa per gestire l’allarme. Altre informazioni di allarme si possono gestire nel caso con la pompa attiva non vi siano variazioni di livello nel serbatoio, o se la pompa è gestita da inverter controllandone gli eventuali allarmi. Per la gestione degli inverter INVT abbiamo il FB InvtGD20EU.
Se si utilizza un gateway con gestione LTE, sarà possibile dal PLC inviare eMail o messaggi Telegram di avviso, installando una VPN sarà anche possibile raggioungere l’impianto da internet per la teleassistenza.
Luglio 14, 2025 alle 10:45 am in risposta a: Riproduzione suoni wav con terminali touch screen #83425Sergio Bertana
Amministratore del forumSi i pannelli tranne un paio di modelli non hanno lo speaker ma solo il buzzer.
Per poter riprodurre i suoni bisogna collegare una cassa esterna e gestire sempre esternamente il volume.
Luglio 14, 2025 alle 8:36 am in risposta a: Problemi con memorie ritentive PLC SlimLine MPS5054C110 #83408Sergio Bertana
Amministratore del forumIl backup dei dati è effettuato in una memoria FRAM che non necessita di batterie. Alla accensione viene eseguita una verifica sul CRC dei valori memorizzati allo spegnimento, se il controllo è in errore tutte la variabili sono azzerate e viene settata la variabile SysRestoreFault.
Se il controllo è corretto le variabili vengono valorizzate con i valori allo spegnimento poi viene eseguita la funzione che assegna alle variabili i valori di inizializzazione. Nel tuo caso vedo che hai inizializzato alcune variabili in area ritentiva, queste naturalmente assumeranno sempre il valore definito nella inizializzazione.
Il fatto che le variabili ritentive si azzerino è molto strano, per evitare che sia il programma a sporcarle, ti consiglio di realizzare un nuovo programma LogicLab con solo il programma MyProgram, poi definire le variabili ritentive così come hai indicato e da debug impostare valori casuali nelle variabili. Spegnere ed accendere il sistema e verificare se il valore viene mantenuto.
Nel caso siano azzerate puoi collegarti verificare da debug lo stato della variabile SysRestoreFault, ed eventualmente collegarti in telnet, eseguire il comando SysLog e postare il risultato del comando.
Sergio Bertana
Amministratore del forumL’EM300-DI-868M è un sensore LoRaWAN pensato per rendere i tradizionali contatori dell’acqua wireless ed intelligenti. Utilizza una tecnologia a risparmio energetico e può lavorare fino a 5 anni con la batteria integrata da 4000 mAh. In riferimento ai dati richiesti:
- Frequenza massima in ingresso ≤ 2000 Hz
- Larghezza minima dell’impulso 250 μs
Oltre alla frequenza massima è importante considerare l’ampiezza minima del segnale per evitare situazioni con frequenze basse ma con impulsi di durata estremamente breve. Viste le sue caratteristiche può essere certamente utilizzato per la tua applicazione, ma ti faccio notare che non ha certificazione Atex quindi occorre prestare attenzione alla sua installazione.
Per l’acquisizione con i ns sistemi SlimLine, si può utilizzare l’apposito blocco funzione MlsDevice.
Sergio Bertana
Amministratore del forumSe i punti da controllare non sono vicini, è possibile utilizzare ad esempio una soluzione basata su rete LoRaWAN. Un modulo TS301 o TS302 può acquisire 1/2 sonde Pt100, il modulo ha una batteria ed un display di visualizzazione locale della temperatura.
Un gateway LoRaWAN come l’UG56 può acquisire i valori di temperatura dai vari moduli e pubblicarli in MQTT. Con FB MlsDevice è possibile ricevere dallo SlimLine i valori e analogamente alla situazione precedente memorizzarli nel file CSV.
Se sul punto di misura è disponibile una sorgente di alimentazione è possibile utilizzare un controller IoT LoRaWAN UC300, oppure un modulo di I/O remoto WiFi come ad esempio lo Yotta A-1212. La soluzione WiFi è sicuramente più semplice anche come implementazione, basterà connettersi ad una rete WiFi esistente o crearne una con un access point ad esempio il RUT140, e potrai acquisire direttamente i valori di pressione via Modbus TCP.
Per i ns sistemi SlimLine abbiamo un FB YottaA1MMng dedicato ai moduli Yotta, oppure puoi acquisisire il valore direttamente utilizzando il FB ModbusMaster con il FB SysTCPClient.
Sergio Bertana
Amministratore del forumIl trasduttore di pressione Milesight EM500-PP ha range da 0-1600 kPa (16 Bar) quindi non è adatto alla tua applicazione.
Non mi è chiaro se sul punto di misura hai disponibile una sorgente di alimentazione oppure no.
Se non hai disponibile la sorgente di alimentazione devi forzatamente utilizare un dispositivo LoRaWAN con alimentazione a batteria. Sul mercato ne puoi trovare diversi modelli ma noi non li trattiamo. Teoricamente qualsiasi dispositivo LoRaWAN 868Mhz si può interfacciare con il gateway suggerito.
Se invece hai disponibile la sorgente di alimentazione puoi scegliere un qualsiasi trasduttore di pressione con uscita 4-20mA e poi interfacciarlo ad esempio con un controller IoT LoRaWAN UC300, oppure un modulo di I/O remoto WiFi come ad esempio lo Yotta A-1212. La soluzione WiFi è sicuramente più semplice anche come implementazione, basterà connettersi ad una rete WiFi esistente o crearne una con un access point ad esempio il RUT140, e potrai acquisire direttamente i valori di pressione via Modbus TCP.
Per i ns sistemi SlimLine abbiamo un FB YottaA1MMng dedicato ai moduli Yotta, oppure puoi acquisisire il valore direttamente utilizzando il FB ModbusMaster con il FB SysTCPClient.
Sergio Bertana
Amministratore del forumIn modalità bridge il pannello assume un unico IP, le due porte LAN si comportano come uno switch a doppia porta di rete.
Proverei con un progetto vuoto per essere certo che non sia qualcosa a livello del progetto a modificare l’indirizzo IP.
Sergio Bertana
Amministratore del forumDal datasheet vedo che il prodotto può interfacciarsi in Bluetooth® 4.0, questa tecnologia (nota anche come Bluetooth Low Energy o BLE) ha una portata teorica in ambienti chiusi circa 10 metri, in esterno (linea di vista) fino a 50-100 metri. Quindi la prima considerazione và fatta sulla distanza di comunicazione.
Poi chiedi un metodo per interfacciarti al sensore, non dici che tipo di interfaccia ti serve, la tecnologia Bluetooth è plug and play su sistemi Android o PC ma se devi interfacciarti con un PLC nasce qualche problema, noi non abbiamo nessun tipo di interfaccia adatto.
Diverso se per acquisire la pressione utilizzi un sensore LoRaWAN come ad esempio questo della Milesight, non è disponibile sul ns sito ma possiamo fornirlo a richiesta. LoRaWAN (Long Range Wide Area Network) è una tecnologia di comunicazione wireless a bassa potenza progettata per connettere dispositivi su lunghe distanze, soprattutto in applicazioni IoT (Internet of Things). La portata dei sistemi LoRaWAN a 868 MHz all’interno degli edifici è generalmente molto buona grazie alla sua capacità di “penetrazione profonda” (deep indoor penetration) e può arrivare a 50–100 metri, mentre in esterno (linea di vista) fino a 10–20 km.
Per l’acquisizione dei dati occorre un gateway come l’UG56, il gateway può raccogliere i dati da molti sensori, i dati acquisiti sono pubblicati in MQTT operando come broker. Per i ns sistemi programmabili SlimLine forniamo il blocco funzione MlsDevice già predisposto allo scopo. E’ comunque possibile programmare il gateway in Python o Node-RED per permettere la pubblicazione dei dati in svariati altre modalità ad esempio in Modbus TCP.
-
AutorePost