Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Novembre 29, 2021 alle 8:05 am in risposta a: Utilizzare FB HttpClient per connessione in HTTPS #62372
Sergio Bertana
Amministratore del forumNo, ci siamo dimenticati di aggiornare la versione pubblicata, ho provveduto a farlo adesso troverai la nuova versione Libreria HTTP eLLabHTTPLib v3.6.10.
Novembre 26, 2021 alle 4:43 pm in risposta a: Conversione da DWORD a REAL con lo standard IEEE-754 #62367Sergio Bertana
Amministratore del forumSi è corretto ecco un semplice esempio in LogicLab che ti illustra il problema.
VAR i : UDINT; (* Auxiliary variable *) DArray : ARRAY[0..1] OF WORD; RVar : REAL; (* REAL variable *) END_VAR // Esempio in little endian. DArray[0]:=16#51EB; DArray[1]:=16#417C; i:=Sysmemmove(ADR(RVar), ADR(DArray[0]), 4); // Esempio in big endian. DArray[0]:=16#417C; DArray[1]:=16#51EB; i:=VarSwap(WORD_TYPE, ADR(DArray[0]), ADR(RVar));
Come vedi nel caso di little endian ho solo copiato il valore ma potevo anche farlo scrivere direttemente da Modbus nella variabili RVar. Mentre nel caso del big endian ho dovuto utilizzare la funzione VarSwap.
Novembre 26, 2021 alle 7:56 am in risposta a: Rete di PLC distribuita con connessione Internet #62361Sergio Bertana
Amministratore del forumVediamo prima il problema degli IP, mi dici che il PLC master non ha la possibilità di essere esposto su internet, quindi l’unica soluzione è di usarlo come client quindi senza dover fare nessuna operazione sulle reti questo PLC può connettersi agli altri.
In questo PLC dovrai istanziare tante istanze del FB TCPDataExchClient tanti quanti sono i PLC sul campo a cui dovrai connetterti. Per ogni istanza dovrai definire IP o URL del PLC server a cui ti connetterai.
I vari PLC sul campo saranno tutti esposti su Internet e quindi raggiungibili, su ognuno di essi istanzierai il FB TCPDataExchServer, con la possibilità di accettare un’unica connessione.
Ora il PLC client dell’ufficio del sindaco scambierà dati con i vari PLC server distribuiti sull’impianto e nel suo programma potrai eseguire scambio dati tra i vari PLC e fornire i dati al pannello HMI a lui connesso.
In merito alle pagine HTM lascerei al momento perdere la questione, il programma SWM757 è un programma di esempio ed ha pagine web di configurazione per poterlo usare stand alone. Ma nel tuo progetto non ti serve configurare i FB di scambio dati da pagina web. Tu dovrai semplicemente utilizzare gli esempi TCPDataExchServer e TCPDataExchClient che trovi nel manuale on-line.
Il comando SpyOn che trovi nelle varie FB ti permette di verificare il funzionamento delle FB tramite la console di spionaggio.
Sergio Bertana
Amministratore del forumNel forum ci sono sicuramente moltissimi esempi di scambio dati tra due o più sistemi SlimLine, ma visto che tu hai necessità di dialogare in seriale non puoi utilizzare la libreria eLLabDataExchLib di scambio dati via TCP/IP ma devi utilizzare il FB ModbusMaster.
Il modo più semplice è realizzare un programma PLCMdbMaster che istanziando 2 blocchi funzione ModbusMaster esegue la lettura e la scrittura di blocchi di memoria sul PLC slave. Nell’esempio che ti allego per il download (Ecco lo screenshot) ho allocato i dati in scambio in due strutture dati, basterà che definisci nelle strutture i dati che devi scambiare.
Nell’esempio troverai anche un programma FBD che gestisce lo scambio via ModbusTCP, e come vedi si connette con l’indirizzo 127.0.0.1 (localhost) in pratica comunica con se stesso. Può essere utile per fare delle prove.
Dalla parte slave non devi fare nulla perchè utilizzi il Modbus gestito dal sistema operativo, dovrai solo allocare le due strutture dati della DB100 che è l’unica raggiungibile da Modbus.
E’ inutile dire che le due strutture dati MASTER_TO_SLAVE e SLAVE_TO_MASTER devono essere identiche nei due programmi (PLC Master e PLC Slave).
Sergio Bertana
Amministratore del forumNon mi viene in mente nulla di simile.
Sergio Bertana
Amministratore del forumPurtroppo non sono un esperto di protocollo BACnet, di certo ti posso dire che sulle variabili booleane non c’è la possibilità di scrivere in modalità Relinquish.
Ti allego estratto del manuale Weintek che tratta il protocollo BACnet anche se credo tu lo abbia già letto.
Novembre 25, 2021 alle 2:28 pm in risposta a: WL-R210, utilizzo delle 2 porte Ethernet in modalità switch #62347Sergio Bertana
Amministratore del forumIl router WL-R210 come tutti i router basati su firmware Tomato (Tra quelli da noi distribuiti il WL-R200), ha 2 porte ethernet indicate come LAN e WAN/CON, è possibile utilizzarle entrambe come porte ethernet in switch.
In pratica i dispositivi connessi alle due porte si “vedono” tra di loro e possono utilizzare il modem LTE per connettersi ad Internet.
Allego un estratto del manuale How to utilizzato internamente dai ns tecnici che descrive la configurazione.
Sergio Bertana
Amministratore del forumIl mio suggerimento precedente era secondo me la soluzione più semplice ma se tu vuoi avere uno switch che cambia colore oppure cambia disegno in base al valore di una word puoi usare il Multi-State Switch.
Sergio Bertana
Amministratore del forumNon sò se ho capito bene il tuo problema…
Mi sembra che ti possa venire in aiuto la funzione Linearize, definendo come parametri le varie posizioni relative ai vari tempi.
Sergio Bertana
Amministratore del forumBravo ad avere utilizzato la console di spionaggio che permette di avere una visione completa del funzionamento. Ricordo che per una spiegazione degli errori occorre riferirsi a questa pagina. Oppure più semplicemente aprire il browser sull’indirizzo IP dello SlimLine e nella pagina di Logs troverete accanto ai vari errori il link diretto alla pagina di visualizzazione.
Il tuo errore indica che non si riesce ad inviare il frame di interrogazione Modbus sullo stream di comunicazione, probabilmente non era aperta la comunicazione con il Logo.
Sergio Bertana
Amministratore del forumNon so che versione della libreria tu abbia, ma se scarichi dal sito l’ultima versione trovi sicuramente il FB di gestione Modbus master.
Ora si chiama ModbusMaster_v1, chi ha dimestichezza con le nostre librerie conosce che ogni volta che in un oggetto di libreria (Funzione o FB) vengono modificati i parametri di I/O viene cambiato anche il nome dell’oggetto aggiungendo una versione, come in questo caso “_v1“.
Se in un vecchio progetto si è utilizzato un oggetto precedente esempio ModbuMaster è possibile recuperarlo dalla libreria eLLabObsoleteLib.
Inutile dire che in caso di revisione di un vecchio progetto converrebbe comunque utilizzare sempre le ultime versioni disponibili.
Sergio Bertana
Amministratore del forumDirei che dalle domande mi sembra che hai le idee molto chiare. Vediamo i vari punti.
- Puoi utilizzare un unico FB SysTCPClient modificando di volta in volta l’indirizzo IP a cui connettersi, in questo modo risparmi memoria dati ma certo hai un tempo di connessione al dispositivo. Questa soluzione è obbligatoria se dovessi comunicare con molti dispositivi ma avendo solo 2 dispostivi puoi anche istanziare 2 FB client.
- Si il Done si attiva al termine della esecuzione del comando ed è da utilizzare per passare ad un eventuale comando successivo. E’ l’uscita Ok ad indicare che la comunicazione ha avuto esito positivo.
- Si direi proprio che la soluzione migliore è realizzare una macchina a stati utilizzando l’operatore CASE e passare di stato in stato sull’uscita di Done attiva. Nel passaggio tra i vari stati se usi un solo client dovrai anche modificare l’indirizzo IP a cui connetterti.
Sergio Bertana
Amministratore del forumHo visto dal tuo progetto che hai inserito un certo numero di trasferimenti ciclici (Screenshot).
La funzione di trasferimento ciclico và usata con parsimonia, il pannello la esegue con la stessa priorità della grafica, quindi se è molto pesante (O se il dialogo con il PLC è lento) ti porta ad un rallentamento significativo delle prestazioni grafiche.
Il alternativa al data transfer ti consiglio di inserire i trasferimenti in una macro eseguita a tempo, la macro ha una priorità di esecuzione inferiore alla grafica, quindi non avrai rallentamenti sulla gestione grafica. Ecco un esempio di macro:
macro_command main() short Var //Variabile di appoggio // Ripetere queste due funzioni per ogni trasferimento. GetData(Var, "PLC2_Siemens S7-1200", "MArea-AUT_CMD_BR2", 1) SetData(Var, "PLC3_Siemens S7-1200", "DB14_HMI2(forno2)_to_PLC3[DB14]-Reg_Ciclo_Generale_PLC2", 1) end macro_command
Come vedi ho eseguito il trasferimento da un PLC all’altro, ma puoi anche trasferire da PLC a HMI e viceversa. Naturalmente devi ripetere la coppia GetData, SetData per ogni variabile. Per diminuire il numero di istruzioni puoi raggruppare le variabili in posizioni consecutive così con un unica coppia di istruzioni puoi trasferire molte variabili.
Novembre 17, 2021 alle 2:10 pm in risposta a: Utilizzo del comando UserConfig da Telnet per modifica password #62133Sergio Bertana
Amministratore del forumAbbiamo cambiato la lettera del firmware da Sfw198Dxxx a Sfw198Exxx perchè è cambiata la gestione utenti, rimando all’articolo per una spiegazione dettagliata del comando UserConfig. Ecco le modifiche:
- La gestione degli utenti si basa su 3 livelli di credenziali Admin, User, Guest.
- Prima vi erano solo 3 utenti uno per ogni livello di credenziale
- Ora si possono distribuire i livelli di crendenziali sui 4 utenti avendo quindi la possibilità di più utenti allo stesso livello.
- Prima di default vi erano 3 utenti: Admin, User, Guest ognuno con il livello di credenziali omonimo. Ora si ha il solo utente Admin che può aggiungere e rimuovere a piacere altri utenti.
- Prima il comando CfgCommit -d reimpostava a default gli utenti con credenziali minori o uguali a quella del’utente che eseguiva il comando. Adesso il comando se eseguito da un utente con credenziali di Admin elimina tutti gli utenti tranne se stesso assegnandosi la password di default Admin. Se eseguito da un utente con credenziali inferiori non ha effetto sugli utenti.
Novembre 17, 2021 alle 12:18 pm in risposta a: Rete di PLC distribuita con connessione Internet #62130Sergio Bertana
Amministratore del forumIl primo requisito è che i due PLC geograficamente distribuiti siano raggiungibili tramite indirizzo IP. Quindi dovrai avere nei 2 siti una connessione Internet con IP pubblico e configurare il router per il port forwarding dalla porta pubblica verso la porta 502 del PLC.
L’HMI dovrà potersi connettere ad Internet, quindi dovrai avere configurato correttamente il Gateway di rete. Il problema è che quando configuri il PLC all’interno dell’HMI puoi solo assegnare l’IP e non l’URL, quindi se le connessioni internet dei 2 PLC hanno un IP dinamico non potrai raggiungerli anche utilizzando un servizio come DynDNS.
Il nodo Modbus dei vari PLC puoi lasciarlo ad 1 in tutti tanto raggiungerai ognuno di essi tramite una connessione TCP ed ognuno avrà indirizzo IP diverso dall’altro.
Una considerazione, visto anche il problema dell’URL (Credo che le tue connessioni Internet ti daranno un IP pubblico ma sarà quasi certamente dinamico) perchè non creare una connessione tra i 3 sistemi SlimLine (In questo caso l’unico indirizzo IP pubblico sarà quello dello SlimLine connesso al pannello) mentre i 2 PLC remoti creeranno solo connessioni in uscita quindi funzionanti anche con IP NATtati e non dovrai aprire porte sul router. Dai una occhiata a questa nota.
-
AutorePost