Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Novembre 4, 2019 alle 9:28 am in risposta a: Comunicazione seriale con modulo SIM800L e Arduino #50677
Sergio Bertana
Amministratore del forumIl modulo SIM800L è interessante per il prezzo, credo tu lo desideri utilizzare per inviare SMS, in tal caso puoi dare una occhiata alla ns libreria eModemLib (Vedi topic), comunque tramite il linguaggio ST hai tutte le funzioni per gestire i comnadi AT del modulo.
Per connetterti via TCP/IP con Arduino devi utilizzare la versione compact con ethernet. Puoi comunicare in ModbusTCP oppure crearti un tuo socket di comnicazione, nello SlimLine disponi dei FB SysTCPClient e SysTCPServer.
Una tecnica utizzata per scambiare dati tra SlimLine ed altri sistemi può essere l’HTTP, in questo esempio un modulo Raspberry si connette da Node-RED via WebSocket.
Novembre 4, 2019 alle 9:11 am in risposta a: Controllo inverter in Modbus RTU e pannello Weintek #50674Sergio Bertana
Amministratore del forumIl Modbus RTU prevede un unico sistema master, quindi il pannello sarà master Modbus mentre sia gli inverter che lo SlimLine saranno slave Modbus.
Per quanto riguarda la connessione del panello Weintek allo SlimLine puoi guardare questo topic, per gli inverter devi riferirti alla documentazione relativa.
Tutti i dispositivi della rete Modbus dovranno comunicare con gli stessi parametri seriali (Lo SlimLine di default è 115200, e, 8), ed avere ognuno indirizzo di nodo diverso (LO slimLIne di default è 1). Sia i parametri di comunicazione seriale che l’indirizzo di nodo possono essere modificatio da pagina web.
Sergio Bertana
Amministratore del forumDovremmo uscire a breve con una nuova versioe di LogicLab che include anche il prodotto MPS055 basato su Raspberry.
A detta di Axel dovrebbero avere risolto questo problema insieme a molti altri BUGs minori. aspettiamo l’uscita così potrai provare direttamente e verificare se effettivamente risolto.
Sergio Bertana
Amministratore del forumAggiungo una nota, molte volte i dispositivi con connessione in RS422 prevedono la possibilità di lavorare il multidrop. Dovendo parallelare le linee di Tx+/Tx- di tutti i dispositivi della rete queste linee sono gestire con un comandi di three-state.
Se il tuo dispositivo prevede questa possibilità potresti tentare di parallelare i Tx+ con Rx+ d il Tx- con Rx- e ricondurti da una linea RS485 e quindi collegarti alla RS485 nativa del modulo Raspberry.
Da considerare che in questa configurazione rispetto all RS422 multidrop il dispositivo mentre trasmette si autoriceve e questo potrebbe impedirne il funzionamento. Quindi la regla è sempre la stessa provare sul campo.
Sergio Bertana
Amministratore del forumLa soluzione è utilizzare un convertritore USB/Seriale ATC-850 connesso ad una porta USB del modulo. Le porte aggiuntive assumeranno un identificativo assegnato automaticamente (Avremo /dev/ttyUSB0, /dev/ttyUSB1, ecc). Connesso il convertitore al modulo, da console SSH con il comando lsusb è possibile vedere se è stato riconosciuto. Ecco il comando eseguito su di un modulo a cui è stato connesso un convertitore ATC-810.
#lsusb Bus 001 Device 008: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
Per conoscere il nome assegnato alla porta eseguire un listing della directory /dev, ecco il comando:
#ls /dev | grep ttyUSB ttyUSB0 ttyUSB1
In questo caso al modulo sono stati connessi 2 convertitori USB/Seriale e le porte sono identificate con /dev/ttyUSB0 e /dev/ttyUSB1.
Per utilizzare le porte seriali da LogicLab fare riferimento al FB SysSerialPort.
Sergio Bertana
Amministratore del forumIl FB è disponibile anche su XTarget_11_0.
Comunque per l’aggiornamento devi fare riferimento a questo articolo.
Sergio Bertana
Amministratore del forumHai due soluzioni per raggiungere il tuo obbiettivo.
1) Un pannello HMI centrale connesso al PLC e 5 HMI remoti connessi al pannello principale, in questa configurazione i pannelli remoti dialogano con il PLC attraverso la connessione realizzata dal pannello principale. Vantaggi hai una sola connessione al PLC (Nel caso il PLC avesse limiti sulle connessioni), ma potresti avere un rallentamento dovuto al collo di bottiglia dell’unica connessione.
2) Tutti i pannelli connessi direttamente al PLC ma occorre verificare che il PLC accetti il numero di connessioni richieste.
La soluzione 1 permette di connettere il pannello principale anche in seriale con il PLC permettendo poi la connessione dei pannelli remoti in ethernet con il principale.
Puoi anche optare per soluzioni miste più pannelli principali connessi al PLC a cui connetti pannelli remoti.
Sergio Bertana
Amministratore del forumLa FB SysGetCounter come tutti gli oggetti il cui nome inizia per Sys è una libreria embedded la trovi nella cartella librerie. Usa i tasti Ctr-L in LogicLab si apre in basso la visualizzazione degli oggetti di libreria e li trovi il FB.
Comunque essendo embedded basta istanziare un oggetto di quel tipo lo puoi usare direttamente. Ma una domanda hai aggiornato il sistema a XTarget_12 ?
Sergio Bertana
Amministratore del forumSe con encoder indichi un generatore di impulsi puoi utilizzare il semplice counter che si trova sulla scheda CPU, per l’acquisizione devi utilizzare il FB SysGetCounter.
Se invece vuoi acquisisre un vero encoder con uscite A e B sfasati di 90 gradi devi utilizzare una scheda hardware che abbia la gestione encoder ed acquisire il valore con il FB SysGetEncoder.
Sergio Bertana
Amministratore del forumNon capisco il perchè della necessità di duplicare la FB , se ti servono più numeri o più messaggi basta aggiungerli alla FB.
L’FB può inviare fino a 32 messaggi diversi, basta definirli nell’array Message settando il relativo bit nella variabile MsgSelector.
MsgSelector:=16#00000007; (* Message selector *) Message[0]:=ADR('Messaggio 0'); Message[1]:=ADR('Messaggio 1'); Message[2]:=ADR('Messaggio 2');Ogni messaggio può essere inviato fino a 32 numeri diversi, basta definirli nell’array PhoneNr settando il relativo bit nella variabile PNrSelector
PNrSelector:=16#00000003; (* Phone number selector *) PhoneNr[0]:=ADR('+39123456789'); PhoneNr[1]:=ADR('+39123456789');Se hai esigenze diverse nel progetto c’è il codice sorgente della FB basta modificarla per adattarla alle tue esigenze.
Sergio Bertana
Amministratore del forumIl LogicLab specifico per Raspberry che viene fornito da Axel permette di utilizzare solo gli operatori standard IEC, mentre la versione che forniamo noi (sarà disponibile tra poco) permette di utilizzare tutto il set di funzioni e FB da noi sviluppate (Vedi manuale).
Molte di queste funzioni sono state sviluppate in C++ come PlugIn di LogicLab, altre sono sviluppate direttamente in LogicLab utilizzando il linguaggio ST (Structured Text).
E’ prevista la possibilità di fornire una distribuzione di LogicLab completa di tutte le nostre librerie utilizzabile anche su moduli Raspberry di mercato, quindi anche sul modulo che già possiedi. Stiamo lavorando proprio su questo, se ci segui, sul sito a breve, troverai notizie che riguardano la pubblicazione del frutto di questo lungo lavoro.
Sergio Bertana
Amministratore del forumSi in effetti ho provato a compilare il vecchio progetto e vi erano i due errori che tu lamenti. Così essendo un vecchissimo progetto ho pensato di aggiornarlo utilizzando la nuova versione della libreria eLLabModemLib_F100.
Ho riscritto il programma principale in FBD, ma non ho provato il progetto, lascio a te il compito di testarlo ed eventualmente dirmi se hai problemi, ti lascio il progetto MultipleSMS_v1 per il download.
Sergio Bertana
Amministratore del forumNo l’unico Data Block accessibile da Modbus è il DB100 accessibile con indirizzo Modbus 40000. Le System variables di sola lettura a cui tu fai riferimento sono mappate nel DB 0 e sono accessibili da programma utente con il loro indirizzo o meglio con il loro mnemonico, ma non possono essere lette da Modbus. La stessa cosa dicasi per le System variables di lettura e scrittura mappate nel DB 1.
Se ti serve accedere a queste variabili da Modbus li devi appoggiare ad una variabile allocata nel DB100.
Ottobre 22, 2019 alle 6:19 am in risposta a: Velocità comunicazione convertitore Ethernet-seriale ATC-1000 #50296Sergio Bertana
Amministratore del forumIl convertitore Ethernet/Seriale ATC-1000 è l’entry level a basso costo di una gamma di convertitori prodotta da ATC e il processore utilizzato non è tra i più veloci della gamma. Comunque è il convertitore Ethernet/Seriale più venduto e non abbiamo mai avuto feedbacks negativi sulla velocità.
Lo utilizzano moltissimi clienti per comunicazioni RS485 con inverter nel campo fotovoltaico o per acquisizione dati in automazione. Naturalmente come dico a tutti a volte il software di virtualizzazione introduce problemi e qui magari si può provare a utilizzare un software di virtualizzazione diverso. Puoi provare il HW VSP3 – Virtual Serial Port scaricabile dal nostro sito nella sezione download.
Dove è possibile consiglio di non utilizzare il software di virtualizzazione COM ma di accedere direttamente al convertitore con una connessione TCP/IP.
Venendo al tuo problema posso dirti di provare una connessione in UDP (Che non gestendo l’Ack è più veloce). Se puoi verifica la velocità con una connessione diretta in TCP senza usare il virtual COM.
Nei parametri di configurazione nel menù UART, hai mica impostato un valore di delimitazione sul Silent time ? Perchè in questo caso il convertitore attende il tempo impostato prima di inviare il pacchetto dati.
Sergio Bertana
Amministratore del forumIl tuo problema nasce dal fatto che non hai messo la spunta sul rispetto delle maiuscole/minuscole nel progetto, di default LogicLab lo lascia non attivo, occorre mettere manualmente la spunta. Troverai una indicazione come questa in molti post del forum.
Nel progetto conviene sempre attivare il tick Case sensivity, nel menù Project-> Options (Screenshot). In questo modo si controlla il case delle lettere nei nomi di variabili e funzioni evitando di dare nomi a variabili che possono essere in contrasto con nomi già predefiniti.
Poi se vuoi un esempio completo di utilizzo puoi fare riferimento alla knowledge relativa.
-
AutorePost