Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Luglio 15, 2013 alle 7:49 am in risposta a: Configurazione Punto/Multipunto, UDP in broadcast #37702
Sergio Bertana
Amministratore del forumHo effettuato il test anche su ATC-2000, ma non accetta e non invia i dati su indirizzo di broadcast.
Per quanto riguarda il convertitore TRP-C37, ho verificato che è in grado di ricevere i dati inviati in broadcast nello stesso modo dell’ATC-1000 (Screenshot impostazione). Come per l’ATC-1000 anche il TRP-C37 non può inviare dati ad indirizzo di broadcast.
Luglio 15, 2013 alle 7:40 am in risposta a: Configurazione Punto/Multipunto, UDP in broadcast #37700Sergio Bertana
Amministratore del forumAggiungo che ho testato anche la possibilità di configurare l’ATC-1000 per inviare i dati in broadcast (Ho impostato come remote address 192.168.0.255) ma in questa configurazione l’ATC non invia i dati. Probabilmente non è gestito l’invio verso indirizzo broadcast.
Luglio 15, 2013 alle 6:50 am in risposta a: Configurazione Punto/Multipunto, UDP in broadcast #37699Sergio Bertana
Amministratore del forumHo effettuato le prove con un ATC-1000 configurato in connessione UDP (Screenshot), per il test ho utilizzato Toolly.
Come si vede dallo screenshot, inviando la stringa “From UDP” in broadcast UDP (192.168.0.255) sulla porta 21, la stringa viene ricevuta dall’ATC-1000 che la ritorna in seriale (E’ connesso con la porta COM4 del PC). Naturalmente la stessa stringa è ricevuta anche dal PC che è in ascolto sulla porta 21.
Inviando la stringa “From serial” dalla porta COM4 la stringa viene inviata dall’ATC-1000 all’indirizzo 192.168.0.88 e ricevuta dal PC che è in ascolto sulla porta 21. La stringa ricevuta è visualizzata nella finestra di Toolly.
Quindi da queste prove possiamo affermare che anche l’ATC-1000 può essere utilizzato nella configurazione da tè richiesta. Il PC invia i dati in broadcast a tutti gli ATC-1000 che saranno configurati per inviare i dati al solo IP del PC.
Luglio 12, 2013 alle 11:50 am in risposta a: Invio SMS con testo e variabili suddiviso su più righe #37698Sergio Bertana
Amministratore del forumCome spiegato in questo post, alcune librerie devono essere obbligatoriamente inserite nel progetto per poter utilizzare gli oggetti presenti, questo perchè la libreria oltre agli oggetti utilizzati nel programma e documentati nel manuale contiene anche oggetti e/o strutture dati utilizzati internamente, pertanto quando si utilizzano queste librerie non è possibile importare solo i singoli oggetti.
La libreria eModemLib deve essere inserita nel progetto menù Project -> Library manager, nella libreria infatti sono presenti dichiarazioni di alcune strutture dati, una di queste è proprio la MODEMCOREDATA e non essendo definita il compilatore genera errore.
Luglio 12, 2013 alle 9:01 am in risposta a: Visualizzazione array di variabili BOOL su indice #37696Sergio Bertana
Amministratore del forumEcco la macro BitArray che soluziona il problema.
macro_command main()
bool PLCBit
short Index, PLCWordGetData(Index, “Local HMI”, LW, 9200, 1) //Leggo valore indice “0”
GetData(PLCWord, “SlimLine”, 3x, 40064+((Index&15)/2), 1) //Leggo variabile word (16 bit)
GETBIT(PLCWord, PLCBit, ((Index&1)*8)) //Testo bit in base ad indice
SetData(PLCBit, “Local HMI”, LB, 0, 1) //Stato bit per visualizzazioneend macro_command
Viene letto il valore del registro indice “0” e trasferito in Index, poi eseguo lettura dallo SlimLine di un registro a 16 bit a partire dalla posizione di allocazione dell’array (DB 100.128 -> 40064) offsettato dal valore di Index e lo trasferisco in PLCWord.
Testo il bit della word in base ad Index (Bit 0 è il bit pari, bit 8 è il bit dispari), e ne trasferisco lo stato in PLCBit. Trasferisco lo stato nella variabile “LB 0” che sarà poi utilizzata per la visualizzazione. Allego un programma di esempio che esegue la visualizzazione di un array di 32 variabili BOOL (Download esempio).
Luglio 12, 2013 alle 8:54 am in risposta a: Visualizzazione array di variabili BOOL su indice #37695Sergio Bertana
Amministratore del forumL’utilizzo dell’indice su array di variabili BOOL in effetti nasconde una insidia, il terminale “ragiona” a word (16 Bit), quindi acquisisce 16 variabili BOOL alla volta e poi visualizza quella indicata. Quando utilizzi un indice il valore dell’indice sposta l’acquisizione di 16 bits.
Ecco quindi che l’indice 0 è effettivamente il primo BOOL del tuo array (Infatti funziona) mentre l’indice 1 punterà al 16esimo BOOL del tuo array, l’indice 2 al 32esimo, e così via. Per risolvere il problema bisogna affidarsi alle macro, vedrò di preparare un programma di esempio che illustri una possibile soluzione.
Luglio 11, 2013 alle 7:01 am in risposta a: Problemi di connessione seriale RS485 tra MT6070iH e PLC Twido #37694Sergio Bertana
Amministratore del forumHo rilevato le connessioni come riportate sul manuale Guida connessioni PLC e le ho riportate in questo schematico.
Ti raccomando anche di controllare l’indirizzo di nodo del PLC (Nel progetto di esempio del post precedente è impostato a 2), ma non so il tuo PLC che indirizzo di nodo ha, e non so neanche come si imposta. Dalla guida connessioni sembrerebbe che di default il Twido abbia indirizzo 1.
Luglio 10, 2013 alle 4:14 pm in risposta a: Problemi di connessione seriale RS485 tra MT6070iH e PLC Twido #37676Sergio Bertana
Amministratore del forumAbbiamo diversi clienti che utilizzano i pannelli operatore con i PLC Twido quindi siamo certi che sia perfettamente compatibile, ora bisogna solo capire dove risiede il problema. Purtroppo io non conosco il PLC Twido e non ne ho uno per fare delle prove, ma ho contattato un mio cliente che utilizza il pannello con il Twido che mi ha fornito alcune indicazioni.
Come PLC viene impostato il protocollo Modbus RTU zero based (Screenshot), ed i vari oggetti nelle pagine del pannello fano riferimento alle variabili PLC utilizzando i comando 0x per le variabili booleane e 4x per le variabili intere. Allego un progetto che mi ha inviato il mio cliente, vi è una pagina che fa riferimento a variabili del PLC Twido (Download progetto).
Sergio Bertana
Amministratore del forumSembrerebbe che se chiamato tramite il gestore di rete (Vodafone) il modem sul campo non riconosce la chiamata come una chiamata dati e pertanto non esegue la connessione .Per vedere di che tipo è la chiamata entrante basta attivare sul modem l’estensione dei RING con AT+CRC=1. Puoi provare a forzare il modem sul campo ad accettare tutte le chiamate in arrivo come chiamate dati utilizzando il comando AT+CSNS=4.
Luglio 9, 2013 alle 8:59 am in risposta a: Problemi di trasmissione dati su porta COM2 in RS485 #37689Sergio Bertana
Amministratore del forumLa porta COM2 dello SlimLine è configurata in RS485 2 fili, quindi supporta solo comunicazioni half-duplex, in pratica o trasmette o riceve. La selezione della modalità trasmissione/ricezione è gestita dal segnale DTR. Il sistema operativo può gestire il segnale DTR in modo automatico in base alla impostazione del membro DTRManagement della struttura Sm.
Sm.DTRManagement:=DTR_AUTO_WO_TIMES; (* DTR automatico senza interposizione tempi *)
Con l’impostazione automatica quando esegui una operazione di scrittura sulla porta (Nel tuo caso SysVarfprintf), SlimLine provvede a commutare la porta in trasmissione a trasmettere il dato e poi a ricommutare la porta in ricezione. Se utilizzi l’impostazione.
Sm.DTRManagement:=DTR_AUTO_W_TIMES; (* DTR automatico con interposizione tempi *)
Verranno aggiunti i tempi di ritardo definiti nei membri DTROnTime (Tempo di attesa dopo avere attivato il segnale DTR prima di trasmettere i dati), DTROffTime (Tempo di attesa dopo avere terminato la trasmissione dei dati prima di disattivare il segnale DTR).
Avendo nel tuo programma impostato DTR_OFF la porta è sempre in ricezione, viceversa impostando DTR_ON la porta sarebbe sempre in trasmissione.
Luglio 9, 2013 alle 7:50 am in risposta a: Sistema di monitoraggio e controllo dell’abitazione #37688Sergio Bertana
Amministratore del forumNel forum si trovano esempi di connessione allo SlimLine con softwares SCADA o con pannelli operatore touchscreen. Solitamente per la connessione viene utilizzata la porta ethernet con il protocollo Modbus OverIP, ricordo che lo SlimLine supporta il Modbus ascii ed RTU su porta seriale e OverIP su porta ethernet.
L’area di memoria indirizzabile dal protocollo Modbus è quella riferita alla DB 100 (Sono 4096 bytes di cui 2048 ritentivi), tutte le variabili allocate nella DB 100 (Da DB 100.0 a DB 100.4095) sono accessibili in lettura e scrittura da protocollo Modbus. L’indirizzamento modbus è il seguente (Attenzione! Notare che nei comandi accesso a registri l’indirizzo è diviso per 2):
0x01, 0x02 Read coil status, Read input status. Address: 40000-44095
0x03, 0x04 Read holding registers, Read input registers. Address: 40000-42047
0x05 Force single coil. Address: 40000-44095
0x06, 0x10 Preset single register, Preset multiple registers. Address: 40000-42047
In questo post vi è un esempio di connessione con Power HMI, in questo post vi è un esempio di connessione con Profilab Expert, in questo post vi è un esempio di connessione con un pannello operatore.Luglio 8, 2013 alle 3:31 pm in risposta a: Rete di comunicazione Ethernet/Seriale con più CNC #37686Sergio Bertana
Amministratore del forumIl software Virtual COM prevede la connessione con un unico convertitore ATC-1000, per realizzare reti Multicast devi utilizzare una connessione UDP tra un convertitore ATC-1000 connesso alla porta RS232 del PC e più convertitori ATC-1000 (Massimo 10) connessi ai vari CNC (Vedi post).
In questa configurazione puoi sicuramente dialogare con il PC con qualsiasi dei CNC connessi in Multicast (Uno alla volta), non mi è chiaro il punto della tua domanda in cui dici di volere comunicare contemporaneamente con più CNC.
Ma parli di RS232, questa connessione non permette il multidrop ed anche se utilizzando gli ATC-1000, elettricamente il multidrop è realizzabile (Ogni convertitore sarebbe connesso in RS232 con il proprio CNC), per poterlo gestire occorre che il protocollo di comunicazione (E quindi il software sul PC) gestisca connessioni multidrop.
L’utilizzo dei convertitori ATC-1000 non permette la gestione dei criteri seriali (DTR, CTS, RTS, ecc) ma sono veicolati i soli dati seriali (Rx e Tx). Quindi se la comunicazione prevede scambio di pacchetti dati molto grandi senza interruzione è possibile che i dati vengano persi e quindi la comunicazione non funzioni.
Per trasmettere i dati sulla Ethernet i dati sono racchiusi in pacchetti e i pacchetti sono inviati in rete quando la rete è libera, quindi in base al traffico di rete si possono avere rallentamenti nella comunicazione.
Luglio 8, 2013 alle 12:43 pm in risposta a: Sistema di monitoraggio e controllo dell’abitazione #37685Sergio Bertana
Amministratore del forumDirei che la scelta della famiglia SlimLine è sicuramente azzeccata, vediamo i vari punti da te citati come potrebbero essere affrontati.
– Inverter Power One, l’inverter non utilizza Modbus ma un protocollo proprietario, disponiamo di un blocco funzione che gestisce la connessione con l’inverter (Vedi post)
– Controllo energia, tramite ingressi digitali e/o analogici è possibile acquisire i dati di consumo (Vedi posts 1, 2, 3, 4, 5).
– Contatti allarme e gas, si possono acquisire con i normali ingressi logici.
– Temperatura, si può acquisire con sonde Pt1000 connesse al modulo acquisizione analogico.Tutta l’elaborazione dei dati è fatta dal modulo CPU opportunamente programmato, che provvederà tramite uscite digitali a gestire gli attuatori (Caldaia, EV Gas, ecc.).
Per l’interfacciamento con lo SCADA i sistemi SlimLine dispongono del protocollo Modbus sia RTU su porta seriale che over IP su interfaccia Ethernet. Basterà che il programma appoggi in variabili indirizzabili da Modbus le varie grandezze che si desidera monitorare e così lo SCADA potrà acquisirle.
Lo SlimLine può gestire anche il log dei dati creando files ad esempio in formato CSV, che poi potranno essere scaricati tramite connessione FTP (Vedi post). Questo garantisce il log dei dati anche a sistema SCADA non connesso.
Luglio 8, 2013 alle 9:24 am in risposta a: Gestire un display alfanumerico con un modulo SlimLine #37680Sergio Bertana
Amministratore del forumSi certo a tutti i modelli di CPU SlimLine anche i modelli Compact (Le versioni espandibili) può essere connesso un display LCD con interfaccia I2C. Cercando tra i vari distributori di materiale elettronico ho trovato ad esempio il modello BTHQ 21605V della BATRON (Codice RS-Components 743-6134), oppure il modello MCCOG21605C6W (Vedi datasheet) della MIDAS (Codice Farnell 2063203).Per la gestione abbiamo realizzato una specifica funzione SysI2CWrRd che permette di gestire l’accesso in lettura e scrittura di un qualsiasi dispositivo I2C connesso al bus.
Utilizzando questa funzione è possibile fare coesistere senza problemi il display con i nostri moduli di estensione. Naturalmente dovrai scriverti un apposito FB che utilizzando la funzione inizializza il display e gestisce la scrittura dei testi, magari prevedendo come ingresso della FB una stringa da 32 caratteri che saranno trasferiti sulle due righe da 16 caratteri del display.
Dato il basso consumo del display potrai attingere l’alimentazione dello stesso direttamente dal connettore di estensione del modulo SlimLine. Per ulteriori informazioni sulla connessione del display al connettore di espansione del modulo CPU consulta il Manuale riferimenti Hardware.
Sergio Bertana
Amministratore del forumHo realizzato un semplice programma (Vedi stampa) con il quale cerco di darti la spiegazione di cosa succede.
Nel programma LDErrato, ho utilizzato il blocco funzione RS appoggiando l’uscita sulla variabile OFlag di tipo Retain, credo sia la stessa cosa che hai fatto tu. In questo caso non si ottiene quello che desideri, alla accensione la variabile è sempre in condizione di reset.
All’interno del blocco funzione viene gestita una variabile locale che è poi copiata sulla sua uscita. Quindi alla accensione la variabile OFlag è attiva ma poi alla prima esecuzione del programma viene trasferito lo stato della uscita del blocco funzione RS (Che è resettato). Quindi in teoria si dovrebbe rendere Retain il blocco funzione, ma questo non è possibile.
Per soluzionare il problema dai una occhiata al programma LDOk, viene utilizzato direttamente il Set ed il Reset sulla variabile OFlag che in questo caso mantiene il suo stato alla accensione. Allego anche il programma sorgente con cui puoi testare direttamente il funzionamento.
-
AutorePost