bernyit2001 Inserito: 28 giugno 2013 Segnala Inserito: 28 giugno 2013 Salve, premetto che non conosco assolutamente niente del mondo PLC ma programmo da molti anni in Visual Basic 6, devo riportare le temperature di una cella frigo sul pc per poterle controllare in automatico. Le sonde attualmente sono collegate e funzionanti ma le temperature le posso solo guardare su dei visori a led. Ho acquistato il modulo della Seneca Z-4RTD2 della Seneca che mi è sembrato avere il miglior rapporto qualità/prezzo e per quello che devo fare io è anche troppo! Al momento sto provando con il test che fa il loro programma Z-NET3 e sembra funzionare tutto ma volevo fare qualcosa in VB, non cose stratosferiche ma leggere solo la temperatura delle 2 sonde! Qualcuno può aiutarmi?
Livio Orsini Inserita: 28 giugno 2013 Segnala Inserita: 28 giugno 2013 Dovresti specificare che tipo di aiuto ti serve.
bernyit2001 Inserita: 28 giugno 2013 Autore Segnala Inserita: 28 giugno 2013 Tenendo presente che sul VB 6 ho solo il controllo MSCOMM volevo sapere come inviare il comando per la lettura delle temperature di ogni singola sonda e come leggere il messaggio di ritorno. Se chiedo troppo ti autorizzo a mandarmi a .... ma non conoscendo il protocollo modbus e non avendo moltissimo tempo per potermici dedicare se fosse possibile avere un aiutino... ti ringrazio in anticipo!
Livio Orsini Inserita: 28 giugno 2013 Segnala Inserita: 28 giugno 2013 Abbiamo gia qualche dato in più. Dovresti recuerare anche i comandi necessari/registri per le operazioni che vuoi fare. Interfacciare un protocollo modbus tramite VB non è difficile, anzi se fai una piccola ricerca sul webb, su siti specialistici di VB, trovi anche libreirie pronte. Attenzione che esistono 2 tipi di Modbus che differiscono per il controllo di parità. Il più semplice fa uso di XOR.
bernyit2001 Inserita: 28 giugno 2013 Autore Segnala Inserita: 28 giugno 2013 L'impostazione della porta è Indirizzo: COM6 Baud rate: 38400 Parity...: N Bit dati.: 8 Stop bit.: 1 Dal manuale la struttura del comando: The Seneca Z-PC Line has been developed using ModBUS RTU protocol, which is based on a communication message constituted by: 1 start bit (unchangeable), 8 data bits, 1 parity bit (optional), 1 or 2 stop bits and a bit sequence to control the data packet (CRC-16, 16 bit Cyclic Redundancy Checksum). The structure of an data packet is shown in the following figure: Module Address-Functional Code-Data Field-CRC-16 - Module Address (first byte). When a Master node requires the data, it sends (through bus) a data packet with Module Address equal to the queried-Slave address; - Functional Code: it represents the function to execute or has already been executed; - Data Field (2 bytes to each value). it represents all the data necessary to detail the operation to execute; - CRC-16. A me purtroppo non dice niente, qualcuno sa come impostare ed inviare un comando per leggere qualcosa?
bernyit2001 Inserita: 28 giugno 2013 Autore Segnala Inserita: 28 giugno 2013 Altrimenti tempo fà mi ero imbattuto in una dll che si chiamava modbus.dll, mi pare freeware, che era proprio per visual basic 6, sai dove posso trovarla per vedere se fa al mio caso?
Giuseppe Signorella Inserita: 28 giugno 2013 Segnala Inserita: 28 giugno 2013 (modificato) A me purtroppo non dice niente, qualcuno sa come impostare ed inviare un comando per leggere qualcosa?Certo, quella è la struttura del protocollo modbus, se vuoi qualche info in più puoi guardare nella sezione didattica dove vi è un piccolo accenno su come è fatta la struttura del protocollo modbus rtu. In rete, puoi trovare diverso materiale sul protocollo modbus. Esso (e non credo di esagerare) se dico che a tutt'oggi è forse il protocollo più utilizzato in assoluto.Se vuoi posso girarti un sorgente in VB6 e modbus per un progettino che ho realizzato un bel pò di anni fa. Ne volevo realizzare di recente un tutorial per metterlo qui sul forum, ma non ho mai trovato il tempo per farlo.Ma te lo cedo ad una sola condizione........ Se una volta che hai fatto il tuo lavoro, visto che dici di conoscere il VB6, ne realizzi tu un tutorial per il forum. In cambio riceverai la forum cardse ti va, mandami un MP, oppure una email a (giuseppe.signorella[at]plcforum.eu) che ne parliamo. Ciao Giuseppe Modificato: 28 giugno 2013 da Giuseppe Signorella
Adelino Rossi Inserita: 28 giugno 2013 Segnala Inserita: 28 giugno 2013 per rilevare le misure devi prima verificare i segnali disponibili sulle sonde, o hai le pt100 o altri sensori, se ad esempio sono pt100, devono essere doppie, una sezione collegata al regolatore/indicatore attuale e l'altra da collegare al seneca ingresso pt100, oppure hai una ritrasmissione del segnale dal regolatore/indicatori, segnale tipo 0-10 vdc o 4-20 ma da inviare al seneca. poi con il protocollo e vb6 le visualizzi sul pc. poterle controllare in automatico per poter fare questo serve sapere con precisione la modalità di comando attuale del frigo.
Dario VBM Inserita: 30 giugno 2013 Segnala Inserita: 30 giugno 2013 da quello che scrivi nel messaggio 5 sembra che il MODBUS sia una tramissione di tipo seriale asincrona bidirezionale Half-Duplex, composta da un dispositivo Master che interroga gli Slave connessi ad esso uno alla volta e ad intervalli di tempo regolari, definibili dall'utente ma comunque non inferiori ad un certo limite, direttamente proporzionale al baud rate ed al numero stesso di dispositivi collegati. Il modus operandi potrebbe essere il seguente: -Il Master (quindi il PC tramite l'app in VB) attraverso il MODBUS invia una prima stringa che contiene l'indirizzo dello slave da leggere (devi quindi sapere che indirizzo è impostato di default nel Seneca, oppure impostarlo tu stesso) -una seconda stringa contiene la funzione da eseguire (es. leggi ingresso sonda 1, leggi ingresso sonda 2, manda in stand by il dipositivo, ecc), sul manuale utente c'e sicuramente una tabella con i codici in binario che corrispondono a queste funzioni. -la terza stringa contiene il dato restituito dal Seneca che corrisponde ad esempio al valore in binario della conversione della temperatuta. la stringa può avere la lunghezza di un byte o più, a seconda delle caratteristiche e del modus operandi del Seneca. Ciao
bernyit2001 Inserita: 1 luglio 2013 Autore Segnala Inserita: 1 luglio 2013 Qualcuno ha un esempio di comando da inviare al plc? Dal manuale allegato sembrerebbe addirittura che si possa leggere anche la temperatura delle sonde collegate? Metto un passo del manuale: Name Range Interpretation of register R/W Default Address MachineID / MSB, LSB R 40001 Id_Code (Module ID) 0x16 Bit [15:8] Ext_Rev (Module version) Bit [7:0] Errors / Bit R 40002 Input 1 error: 0=there isn’t; 1=there is / Bit 15 Input 2 error: 0=there isn’t; 1=there is / Bit 14 Input 3 error: 0=there isn’t; 1=there is / Bit 13 Input 4 error: 0=there isn’t; 1=there is / Bit 12 Input 1 burn-out error: 0=there isn’t; 1=there is / Bit 11 Input 2 burn-out error: 0=there isn’t; 1=there is / Bit 10 Input 3 burn-out error: 0=there isn’t; 1=there is / Bit 9 Input 4 burn-out error: 0=there isn’t; 1=there is / Bit 8 Input 1 temperature-acquired error: 0=there isn’t; 1=there is / Bit 7 Input 2 temperature-acquired error: 0=there isn’t; 1=there is / Bit 6 Input 3 temperature-acquired error: 0=there isn’t; 1=there is / Bit 5 Input 4 temperature-acquired error: 0=there isn’t; 1=there is / Bit 4 Initialization error for input 1: 0=there isn’t; 1=there is / Bit 3 Initialization error for input 2: 0=there isn’t; 1=there is / Bit 2 Initialization error for input 3: 0=there isn’t; 1=there is / Bit 1 Initialization error for input 4: 0=there isn’t; 1=there is / Bit 0 Se qualcuno mi può dare un'idea del comando da inviare e come ricevere la risposta potrei capirci qualcosa... :worthy:
Livio Orsini Inserita: 1 luglio 2013 Segnala Inserita: 1 luglio 2013 Modbus è uno standard. non importa quali informazioni sian contenute nei byte, la procedura è sempre quella ed illustrata chiaramente nella specifica MUDBUS RTU. Devi inviare i comandi esattamente come specificato dal manuale Modbus.
bernyit2001 Inserita: 1 luglio 2013 Autore Segnala Inserita: 1 luglio 2013 Infatti, chiedevo un aiuto proprio su questo! Non conoscendo affatto il protocollo modbus, mi serviva un esempio di comando da inviare per poter leggere le temperature delle sonde collegate! Se qualcuno può darmi una mano mi farebbe un grosso piacere!
Livio Orsini Inserita: 1 luglio 2013 Segnala Inserita: 1 luglio 2013 (modificato) Ma le hai lette le specifiche Modbus? Poi questo è il forum dedicato ai PLC, e tu hai parlato di PC e VB. Modificato: 1 luglio 2013 da Livio Orsini
signo76 Inserita: 18 luglio 2013 Segnala Inserita: 18 luglio 2013 Ciao Bernyit2001, Sono Luca e mi occupo del supporto tecnico di Seneca. Riguardo alla tua richiesta, il comando che devi inviare al Z-4RTD2 è il seguente (espresso in byte e codificato in esadecimale): 01 03 00 02 00 04 E5 C9 in cui 01 è l'indirizzo del modulo 03 è la funzione che utilizzi per la lettura degli holding register 00 02 è l'HOLDING REGISTER di partenza (40003) 00 04 indica quanti registri leggere (4 registri) E5 C9 è il crc Il frame che ottieni contiene la lettura di tutti i 4 canali. Per l'interpretazione della risposta ti rimando alla lettura del manuale del modbus. Per quanto riguarda i valori che ottieni ti segnalo che le temperature sono rappresentate in decimi di grado. Ad esempio nella risposta avrai il canale uno rappresentato con il valore 215 che corrisponde al valore di 21,5 gradi. in ogni caso ti suggerisco di collegarti al sito di seneca (www.seneca.it) dove, registrandoti, puoi scaricare anche le librerie per la comunicazione con Visual Basic. Luca
bernyit2001 Inserita: 18 luglio 2013 Autore Segnala Inserita: 18 luglio 2013 Grazie Luca, ho risolto da un po' di giorni, ho trovato i comandi da mandare ed ho fatto un programma per visualizzare le temperature sia quelle con 1 decimale fixed che quelle effettive a virgola mobile, l'unica cosa è che, non so se è colpa delle sonde provvisorie che ho collegato sui moduli, ma ho notato che ci sono delle differenze con un datalogger che usiamo per controllare se ci sono degli errori sulle sonde, puoi dirmi qualcosa in proposito? Adesso sto collegando un modem gsm per mandare degli allarmi poi in seguito vorrei ampliare la cosa con altri dispositivi del tipo sensore acqua sul fondo della cella frigo, ecc. ecc.
signo76 Inserita: 18 luglio 2013 Segnala Inserita: 18 luglio 2013 Dipende da come è configurato lo Z4RTD2 e da che sonde utilizzi. Sono a 2, 3 o 4 fili? Hai selezionato la compensazione? Qual è la differenza che leggi dal datalogger? Infine ho una curiosità: che modem stai usando per inviare allarmi? Se non lo hai già scelto, ti consiglio di prendere in considerazione lo Z-GPRS2 che produciamo in Seneca. Luca
bernyit2001 Inserita: 18 luglio 2013 Autore Segnala Inserita: 18 luglio 2013 Le sonde sono PT100 a 3 fili, la differenza è su una di 1 grado circa in meno mentre sull'altra ci sono dei decimali in più (0,2-0,5). Per quanto riguarda il modem ancora devo vedere perché prima vorrei accertarmi che con le sonde collegate "ufficialmente" alle celle non ci siano problemi! La compensazione non so cosa sia, non ho trovato niente nei vari manuali! Tieni presente che il programma che ho fatto io legge i dati e li visualizza, poi controlla il limite della temperatura preimpostato e se è superiore manda degli allarmi, al momento solo visivi!
Livio Orsini Inserita: 18 luglio 2013 Segnala Inserita: 18 luglio 2013 Hai un unico modo per verificare senza ombra di dubbio se il mdulo legge correttamente e se le differenze dipendono dal modulo o dalla sonda. Usa resistori di precisione e verifica che le letture coincidano nei 2 canali. PS sposto la discussione nella sezione più corretta, visto che non ha nulla a che vedere con i PLC
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora