Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumDalla documentazione trovata in rete vedo che è possibile configurare M241 Logic Controller sia come come un dispositivo slave che master TCP Modbus, dipende da te come vuoi operare.
M241 come dispositivo slave, sullo SlimLine dovrai istanziare il FB ModbusMaster, da documentazione Schneider vedo che puoi usare i comandi Modbus:
- 16#03 per leggere gli oggetti %IW e %QW del M241
- 16#06 per scrivere l’oggetto %IW del M241
- 16#10 per scrivere l’oggetto %IW del M241
M241 come dispositivo master, SlimLine ha acccessibile da Modbus TCP (Porta 502) tutta l’area DB100, indirizzabile con i comandi 16#01, 16#03, 16#06, 16#10 ed indirizzi a partire da 40000. In alternativa è possibile istanziare il FB ModbusSlave e configurare l’indirizzo e la dimensione dell’area indirizzabile.
Sergio Bertana
Amministratore del forumIl cMT-SVR822 che si differenzia dal cMT-SVR820 per avere la licenza EasyAccess preinstallata, come tutti i panneli operatore Weintek ha la possibilità di utilizzare il Free protocol (Estratto manuale) che ti permette da macro con le funzioni INPORT ed OUTPORT di ricevere ed inviare dati su qualsiasi interfaccia sia seriale RS232/485 che TCP/IP.
Se cerchi nel forum Free protocol puoi trovare informazioni utili.
Sergio Bertana
Amministratore del forumL’applicazione richiesta è realizzabile con i ns sistemi programmabili SlimLine. Utilizzando un modulo PLC Compatto a cui aggiungere 1 o più moduli di espansione I/O digitali è possibile avere i punti di I/O necessari. Gli ingressi sono optoisolati è possibile attivarli fornendo una tensione da 8 a 30Vdc, le uscite sono a relè e possono tranquillamente gestire la potenza in gioco.
Per la gestione delle uscite digitali al FB HTTPServer è possibile inviare in Get o in Post il comando di apertura porta (Si può utilizare una codifica JSON o del semplice testo) con il comando si può inviare anche il tempo di durata. Alla ricezione del comando il FB TON ne gestirà l’attivazione per il tempo definito.
Per gli ingressi digitali alla loro variazione con il FB HTTPClient è possibile inviarne in Get o Post al server lo stato.
Riassumendo, l’utilizzo di un sistema programmabile permette una estrema configurabilità della applicazione, naturalmente è richiesta la realizzazione di un programma ad-hoc ma grazie agli esempi che trovate nella knowledge base molto del lavoro si riduce ad un taglia ed incolla dall’esempio all’ambiente di sviluppo LogicLab. Se nello sviluppo Vi serve un aiuto potete approfittare del ns servizio di supporto tecnico on-line.
Sergio Bertana
Amministratore del forumIn effetti i due codici di errori indicati non sono più presenti nell’elenco degli errori. Questo può succedere quando una funzione o un blocco funzione di libreria subisce un aggiornamento e nell’aggiornamento alcuni errori vemgono sostituiti da altri.
Se cerchi nella tabella solo l’ObjectID (Nel tuo caso 10002), verranno visualizati tutti gli errori dell’oggetto (Nel tuo caso si tratta del FB ModemCore).
Questo FB è stato completamente riscritto proprio per permettere la definizione del tipo di modem (Parametro Type) in modo da poter gestire nuovi tipi di modem come ad esempio l’EGX81. Quindi ti consiglio di utilizare l’ultima versione della raccolta librerie (Al momento è il PCK055A050). Se utilizzi il package ricordati di eliminare dal progetto i link a librerie precedenti.
In questo modo tutti gli errori che si possono generare sono sicuramenti riportati nell’elenco errori. In questo topic trovi altre informazioni sul modem EGX51. Ti ricordo che questo modem non supporta le chimate telefoniche quindi non puoi utilizzarlo per inviare un ring di alert (Vedi ModemPhoneRing).
Sergio Bertana
Amministratore del forumLe due porte 1-Wire del Poseidon 2 3268, son perfettamente identiche e supportano sia dispositivi 1-Wire tradizionali che i dispositivi 1-Wire Uni. Quindi puoi tranquillamente collegare 2 Splitter HUB 1-wire. Come vedi dalle caratteristiche il Poseidon 3268 può acquisire fino ad un massimo di 8 valori da sensori 1-Wire.
Qquindi al di là delle porte 1-wire disponibili che utilizzando 2 HUB diventano 10, potrai comunque collegare al massimo sensori con un totale di 8 misure (Nei sensori combinati devi contare le misure che attuano).
In merito al sensore di temperatura+umidità+CO2 1-Wire HomeBox, puoi gestirlo con il Poseidon 3268 ma in questo caso ricordati che questo sensore ha 3 valori.
Il Sistema di monitoraggio avanzato Perseus, è il nuovo prodotto rilasciato da HW-group e come vedi anche il modello 140 dispone già di 4 porte 1-wire e può acquisire fino a 100 valori. Inoltre ha molte funzioni avanzate di visualizzazione che lo rendono sicuramente più flessibile del Poseidon.
Luglio 30, 2025 alle 2:08 pm in risposta a: Configurazione indirizzo di rete su pannello operatore #83582Sergio 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.
-
AutorePost