Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumIl blocco funzione ModbusMaster opera su uno stream di I/O (Parametro File di tipo FILEP) che deve essere ritornato da una funzione Sysfopen. Per operare in modalità master occorre eseguire un connect TCP verso il modulo slave, attualmente non è possibile eseguire una connect TCP. I sistemi SlimLine attualmente possono operare solo come server TCP e non come client.
Quindi puoi fare dialogare i sistemi SlimLine tramite l’FB ModbusMaster utilizzando una connessione seriale ma non TCP. Però se il tuo problema è fare dialogare tra di loro due o più sistemi SlimLine tramite Ethernet puoi utilizzare l’FB UDPDataTxfer che utilizza il protocollo UDP, Topic (1), (2).
Sergio Bertana
Amministratore del forumUn uscita PWM fà esattamente quelle di cui hai bisogno, naturalmente per poter pilotare i 25 Watt dovrai inserire un driver di potenza sulla uscita dello SlimLine (Può andare benissimo un transistor o meglio un IGBT).
Tramite il blocco funzione SysSetPWMOut, potrai impostare la frequenza (Credo ad occhio che 1 Khz vada bene), poi agendo sul parametro Duty portandolo da 0% a 100% potrai variare la luminosità dei LED.
Ottobre 21, 2014 alle 7:58 am in risposta a: Problema sulla gestione delle variabili negative #38465Sergio Bertana
Amministratore del forumNon sò che PLC stai utilizzando, ho fatto un semplice progetto di prova con un terminale MT8050iE connesso in Modbus TCP con un nostro PLC SlimLine (Download progetto). Con questo progetto di esempio non si evidenzia nessun problema.
Sul PLC ho definito una variabile INT allocata all’indirizzo DB 100.16, sul terminale ho inserito un oggetto inputazione numerica e come si vede dallo screenshot ho impostato 2 cifre decimali.
Una variabile INT 16 bits con segno ha range da -32768 a 32767, ho fissato un range da -30000 a +30000, che considerando le due cifre decimali varranno da -300,00 a +300,00. Come vedi ho definito 4 cifre intere, perchè nel caso dei numeri negativi devo visualizzare anche il segno.
Sergio Bertana
Amministratore del forumLogicLab non apre direttamente i file zip, un file zip deve prima essere scompattatato con un apposito programma (Esempio WinZip) e poi da LogicLab sarà possibile aprire il file di progetto (Estensione ppjs).
Tutti i nostri esempi, anche quelli che sono postati nel forum vengono per semplicità compattati in un unico file zip ma in realtà si compongono di una directory che contiene alcuni files. Il file che LogicLab utilizza è il file di progetto che contiene tutte le informazioni per compilare il progetto.
Altro discorso per le librerie, le librerie non si devono aprire con LogicLab ma devono essere inclusi nel proprio progetto solo gli oggetti che servono importandoli dalla libreria. Alcune librerie invece vanno incluse interamente ti rimando a questo topic dove l’argomento librerie è discusso.
Sergio Bertana
Amministratore del forumHai dettagliato molto bene la tua situazione, analizzandola emerge come l’utilizzo di un prodotto programmabile come la nostra serie SlimLine grazie alla disponibilità di un gran numero di blocchi funzione per la gestione della comunicazione con diversi protocolli permetta in modo semplice di fare dialogare tra di loro in “serenità” (Prendo in prestito la tua definizione) apparati diversi di diversi vendors.
Intanto inizio con il chiederti perchè disponendo di un modulo SlimLine con Ethernet non hai interconnesso il terminale operatore usando l’interfaccia Ethernet al posto della porta seriale. Basta impostare la comunicazione con il protocollo Modbus TCP al posto del Modbus RTU.
Ma vengo alla tua domanda, l’interfaccia RS485 è nata per le comunicazioni multidrop, più apparati connessi con un doppino twistato. Il protocollo modbus gestisce la comunicazione multidrop, il master interooga i vari nodi che devono avere indirizzi diversi e stessa modalità di comunicazione seriale. Lo standard RS485 teoricamente può supportare fino a 32 dispositivi connessi sul bus (con ricevitori speciali ad alta impedenza questo numero può essere aumentato fino a 128 o 256). Questa quantità è determinata solamente dalla capacità di pilotaggio del driver di trasmissione e dalla impedenza d’ingresso dei ricevitori.
Per gestire da SlimLine la comunicazione Modbus multidrop su seriale ti viene in aiuto la FB ModbusMaster che permette di essere eseguita in cascata (Topic). In questo topic trovi esempio di rete modbus tra moduli CPU SlimLine utilizzati come remote I/O.
Ottobre 14, 2014 alle 12:05 pm in risposta a: Utilizzo del convertitore Temperatura/Modbus ST485C #37079Sergio Bertana
Amministratore del forumIl modulo dispone di una memoria EEPROM per la memorizzazione della configurazione, è possibile impostare il numero di nodo ed il valore di baud rate di comunicazione. Vediamo come effettuare la configurazione del modulo, per ulteriori informazioni si rimanda al manuale utente allegato al modulo. Tutte le operazioni sono eseguite con comandi di scrittura registri modbus (0x10 Write Multiple Registers).
a) Scrivere il valore 0x0001 nel registro modbus 0x0002 (EEPROM Write Enabled).
b) Scrivere l’indirizzo di nodo (Registro 0x0003 Low) e baud rate (Registro 0x0003 High).
c) L’operazione di scrittura memorizza il valore in memoria EEPROM ed azzera il bit di abilitazione.
d) Spegnere e riaccendere il modulo.Sergio Bertana
Amministratore del forumPer rendere più chiara la connessione dei dispositivi con uscita 4÷20mA ai nostri moduli di acquisizione analogica ecco lo schema di connessione del sensore STI Pt1000. Nello schema sono rappresentate i due possibili modi di connessione.
Common mode
Si utilizza sui moduli CPU Compact e 20I/O mixed signal, sui moduli CPU compact visto che è prevista la sola lettura 0÷10Volt è necessario utilizzare la resistenza da 500Ω. Sul modulo mixed signal essendo prevista la modalità ingresso in corrente occorre utilizzare la resistenza da 62Ω fornita insieme al modulo.Differential mode
Si utilizza nei moduli di espansione I/O analogico, essendo prevista la modalità ingresso in corrente occorre utilizzare la resistenza da 62Ω fornita insieme al modulo. E’ utile ricordare che nella connessione in differenziale per avere i vantaggi di eliminazione dei disturbi propria del tipo di connessione, occorre utilizzare un cavo twistato e la connessione di entrambi i capi del segnale Aixx+ ed Aixx- deve essere fatta il più vicino possibile al dispositivo da acquisire.Sergio Bertana
Amministratore del forumSe sul sito dove hai lo SlimLine hai un IP statico o un router ADSL che supporta DynDNS (L’importante è che il fornitore del servizio ti dia un IP pubblico) puoi usare la tecnica da me descritta. Naturalmente il server PHP dovrà attivare lo script ad intervalli regolari.
Il fare richiedere la pagina web sul server dallo SlimLine con i parametri in GET (Come da tè indicato) è la tecnica che ho descritto nel caso di utilizzo del modem. In questo caso è il modem che gestisce l’invio dell’header http.
Siccome lo SlimLine allo stato attuale non può agire come client TCP ma solo come server, per aprire la conessione in modo client puoi usare (Come hanno fatto alcuni clienti) un convertitore Ethernet/Seriale connesso alla seriale dello SlimLine e delegare al convertitore l’apertura della connessione TCP, mentre lo SlimLine invierà l’header http tramite la seriale.
Sergio Bertana
Amministratore del forumNon presentati sulle pagine del nostro sito ma disponibile su ordinazione i modelli NS 540 con uscita in corrente 4÷20mA ed NS 740 con uscita in tensione 0÷10V contengono in un unico contenitore adatto al montaggio diretto sul tubo sia il sensore che il condizionatore di segnale (Vedi datasheet serie completa).
Sergio Bertana
Amministratore del forumLa domanda non specifica se si tratta di server Web che gira in una rete locale o VPN, oppure se è distribuito geograficamente ed in tal caso come è connesso alla rete Internet. In ogni caso vediamo le possibili soluzioni.
Rete locale, VPN, connessione con IP statico o DynDNS, il server sul cloud può con uno script PHP eseguito a tempo (Esempio cron di Linux) effettuare l’accesso ad una pagina web dello SlimLine. Nella pagina vi sono i TAG di visualizzazione variabili (Creazione di pagine dinamiche topics (1), (2), (3)). Eseguendo la richiesta della pagina come se fosse un browser lo script PHP riceve i valori e li memorizza nel database. Ipotizzando di avere nello SlimLine una pagina Values.htm nella directory Storage, per eseguirne la lettura lo script PHP utilizzerà la funzione file_get_contents nel modo:
$Content=file_get_contents(“http://192.168.0.122/Storage/Values.htm);
Ho preparato un semplice esempio con un programma SlimLine che gestisce 4 contatori, ed un programma PHP che ne esegue la lettura e li ritorna in echo. Naturalmente il programma PHP andrà eseguito a tempo ed andrà inserita tutta la gestione MySQL. Sullo SlimLine andrà caricato nella cartella Storage il file Values.htm (Download esempio completo).
Se invece la connessione viene effettuata tramite un modem puoi vedere questo topic.
Sergio Bertana
Amministratore del forumLe variabili DINT, UDINT, REAL solitamente sono allocate in due registri consecutivi, quindi basterà leggere o scrivere da Modbus 2 registri all’indirizzo della variabile. L’unico problema che ci può essere riguarda l’endianness dei dati siccome Modbus non prevede gestione di variabili a 32 bits non esistono specifiche che trattano l’endianness.
SlimLine è basato su di un procesore ARM che utilizza la memorizzazione dei dati nel formato little-endian, inizia dal byte meno significativo per finire col più significativo ora se anche il sistema slave usa la stessa endianness non ci sono problemi, se invece il sistema utilizza il formato big-endian devi eseguire uno SWAP della variabile. Ecco il codice in ST
VarOut:=ROL(VarIn, 16); (* Output variable *)
Altro discorso per le variabili REAL dove oltre al problema endianness devi fare riferimento al formato del dato, SlimLine utilizza lo standard IEEE 754-1985 in singola precisione a 32 bit (Topic). Questa codifica è la più utilizata e quindi non ci dovrebbero essere problemi.
Sergio Bertana
Amministratore del forumNella gamma di sensori Sensit abbiamo sensori adatti al montaggio diretto su tubo . La gamma comprende una vasta serie di sensori ma per l’applicazione io consiglio il modello Pt1000. Purtroppo l’ingresso analogico del Modulo CPU Compact prevede solo ingresso da 0÷10Volt. Quindi per l’acquisizione o aggiungi un modulo di espansione, il modello mixed signal (Acquisisce 2 sensori) il modulo analogico (Acquisisce 5 o 10 sensori). Se però hai un solo sensore da acquisire la soluzione più comoda è utilizzare il convertitore di temperatura STI (Attenzione occorre specificare in fase di ordine il range di temperatura da convertire).Il convertitore esce con una corrente 4÷20mA, per poter utilizzare l’ingresso analogico del modulo CPU compact occorre convertirla in volt, possiamo utilizzare una resistenza da 500Ω. Siccome il convertitore si alimenta tramite il circuito di uscita per garantire che alla massima uscita 20mA ai capi del convertitore vi siano ancora i volts sufficienti ad alimentarlo, occorre utilizzare una tensione di 24V per alimentare il circuito di lettura.Per la lettura è possibile utilizzare lo stesso programma in FBD riportato in questo topic, ecco la foto del test da me effettuato dove si vede il convertitore STI, la sonda Pt1000 il modulo CPU Compact e l’alimentatore 24Vdc.
Ottobre 9, 2014 alle 6:10 am in risposta a: Lettura velocità vento con soglie programmabili da pagina web #38456Sergio Bertana
Amministratore del forumIl mio esempio voleva spiegare come realizzare l’intera applicazione, con particolare focus sulla visualizzazione web. Per questo ho scelto di acquisire un anemometro con uscita analogica. Ma certo moltissimi anemometri hanno una uscita digitale in tal caso è anche molto più economico gestirne l’acquisizione in quanto basta utilizzare un comune ingresso digitale.
Tra tutti i programmi sviluppati ho trovato quello che avevo suggerito ad un cliente per la lettura proprio di un anemometro digitale ecco la stampa. Questo programma è eseguito nella task Fast (Ogni 1 Ms) quindi può acquisisre una frequenza massima di 400Hz.
Come vedi vengono conteggiati gli impulsi sull’ingresso digitale e ogni 30 secondi viene eseguito il calcolo della velocità del vento. Il valore letto viene poi mediato con la FB Average. La scelta del tempo di campionatura di 30 S era basata sul numero di impulsi generati dall’anemometro. Più veloce è la campionatura minore è la risoluzione in lettura della velocità.
Sergio Bertana
Amministratore del forumIntanto inizio con il suggerirti di utilizzare il nuovo FB ModbusMaster (Estratto manuale) di gestione protocollo modbus master, vediamo le nuove ed interessanti caratteristiche di questa FB.
Può essere gestita in sequenza, puoi cioè definire piu istanze della FB definendo per ogni istanza il comando modbus da eseguire, basta connettere il Done della FB precedente sull’Enable di quella successiva per effettuare tutti i comandi in sequenza (Vedi questo topic). Certo che se i registri da leggere e/o scrivere sono molti e non consecutivi, piuttosto che istanziare in LD o FBD molte FB conviene gestire una sola FB da ST gestendo una macchina a stati con l’operando CASE (Trovi un esempio di programma in questo topic).
Se poni a TRUE l’ingresso SpyOn ti sarà possibile attivare la procedura di spionaggio da connessione Telnet e vedere i dati trasmessi e ricevuti su porta seriale, questo ti permetterà di capire cosa risponde l’azionamento. Può essere che fai un indirizzamento fuori range, chiedi troppi registri contemporaneamente o utilizzi un comando modbus non supportato.
Ricordati che il protocollo Modbus ha un offset di 1 quindi se nella FB definisci indirizzo di lettura 100 sul pacchetto Modbus verrà inviato l’indirizzo 99 in quanto il dispositivo Slave dovrebbe in accordo allo standard sommare 1. In molti dispositivi Slave questo non viene fatto, quindi in tal caso devi sommare 1 tu all’indirizzo richiesto.
Ottobre 8, 2014 alle 8:24 am in risposta a: Come utilizzare la SDCard per il salvataggio di file di log #38453Sergio Bertana
Amministratore del forumSe esegui il download del programma che trovi in uno dei posts di questo topic hai già una buona base di partenza. Comunque partendo dal programma del post precedente ho preparato un programma che realizza quello che necessiti, ecco la stampa del programma WriteLog.
Come vedi ho definito un array di stringhe per la definizione dei giorni setimanali, così è possibile scrivere un file CSV per ogni giorno (Il file avrà il nome del giorno). Al cambio di giorno viene cancellato il file dello stesso giorno (Si tratta del file della settimana prima) e viene creato un nuovo file del giorno con i nuovi dati. In questo modo hai una settimana di tempo per eseguire il download in FTP dei file di log memorizzati.
Il record di log l’ho creato nel formato 2014-10-08 09:25:58;02.8;02.8;02.8;02.8, come vedi il campo data/ora è seguito dai 4 valori analogici. Nel mio esempio eseguo una sola acquisizione analogica per tutti e 4 i canali ma lascio a te il compito di effettuare le 4 acquisizioni e riportarle nel record.
Credo che con questo esempio insiene all’esempio precedente hai tutte le indicazioni per realizzare il tuo DataLogger. Ecco il programma sorgente.
-
AutorePost