Bruno Inserita: 30 novembre 2006 Segnala Inserita: 30 novembre 2006 Vain nella home del portale trovi una sezione chiamata "up_download" e da lì potrai uplodare i tuoi file (naturalmente anche downloadare quelli che gli altri utenti ).Attenzione !!! Devi fare un nuovo login (Magari con la stessa tua utenza ).CiaoBR1
Adriano71 Inserita: 30 novembre 2006 Segnala Inserita: 30 novembre 2006 Allora sabato allego le 2 classi con un esempio ed anche un piccolo simulatore di CP343 (sempre in C#).
Gabriele Corrieri Inserita: 1 dicembre 2006 Segnala Inserita: 1 dicembre 2006 Ciaose hai bisogno di ulteriore spazio i moderatori e colllaboratori sono disponibili per linkare file di grande formato, contatta qualcuno dello staff.Ciao
Adriano71 Inserita: 2 dicembre 2006 Segnala Inserita: 2 dicembre 2006 Ho pubblicato un esempio funzionante (spero!) delle classi indicate in precedenza. Il file l'ho chiamato PLCForum...... (forse lo trovate cercando l'utente)Inoltre ho aggiunto anche il simulatore di CP343 (in realta' e' un po' stupido ma e' quanto basta). Anche lui inizia con PLCForum.....N.B. All'interno del programma (il primo) trovate una classe "conversione" che converte da byte a int16 e int32 e viceversa.Se qualcuno conosce un metodo veloce per convertire un numero da 4 byte a float (real del PLC) mi aiuti.Sul mio PC utilizzando l'esempio, ho ottenuto i seguenti dati:Numero di letture medie di 2Kb di dati da PLC pari a 13.333 utilizzando una connessione WiFi.La rete e' cosi' composta: FieldPG in WiFi->Access Point->Router 8 porte->CP343.P.S. ho illustrato anche come evitare errori di cross-thread..: ho dimenticato di illustrare come scrivere al PLC.Esempio di scrittura:inserire un button e sul suo click incollare il seguente codice://Incremento il valore in DB101 int V = DB101[0] + 1; if (V > 255) V = 0; byte[] Vb =new byte[2]; Vb[0]=(byte)V; Vb[1]=(byte)(255-Vb[0]); s7SKWR[0].Invia(Vb, 101, 0, 2);Questo legge il valore del byte 0 in DB101 lo incrementa di 1 e lo rispedisce al PLC.Per il byte 1 fa' 255-byte0;N.B. ricordarsi che bisogna sempre spedire e leggere un numero pari di byte.Spero che i commenti nel primo programma vi siano di aiuto.E scusate se sono un po' pasticcioneSaluti Adriano71
Adriano71 Inserita: 2 dicembre 2006 Segnala Inserita: 2 dicembre 2006 Ooops, nella tabella del software di test (bisognera' che gli dia un nome), la colonna "Numero di bye", riporta il byte nel DB sbagliato. Bisogna togliere 1.Inoltre dove visualizza le letture eseguite la scritta "Tempo tra letture", in realta' deve essere "Tempo tra 10 letture".Se qualche moderatore mi spiega come poter spedire una nuova versione senza passare un duplicato le saro' grato.P.S.: per adesso utilizzate questo esempio, fatemi sapere se ci sono problemi, poi nella prossima versione li aggiustero':Risaluti Adriano71
Gabriele Corrieri Inserita: 2 dicembre 2006 Segnala Inserita: 2 dicembre 2006 Ciao Adrianonella gestione upload non è tecnicamente possibile, per fare ciò dovresti scrivere a un amministratore che ha i diritti su quella sezione di PLCForum.Se mandi i file a un moderatore o collaboratore egli può linkare e aggiornare le versioni, per fare ciò contattatalo via email, quando avrai l'indirizzo email potrai allegare i files che ti saranno pubblicati e linkati.Ciao
tavazzi Inserita: 5 dicembre 2006 Segnala Inserita: 5 dicembre 2006 x Bruno : ho fatto un test rapido con LibNoDave. In Delphi ho acquisito i l componente e compilato l'esempio. Niente male con i tempi, ma' che tu sappia, con questo componente si e' limitati ad un max di circa 220 bytes x ciclo ? guardando il sorgente sembrerebbe che ci siano 2 diverse funzioni di lettura, a seconda della q. di dati da leggere. Hai indagato in merito ? Ciao, Sergio
tavazzi Inserita: 5 dicembre 2006 Segnala Inserita: 5 dicembre 2006 Mi rispondo da solo (dalle FAQ di LibNoDave) :Q: What is the largest block of bytes LIBNODAVE can read/write to a PLC?A: This is limited by the maximum length of a PDU, which in turn depends on your CPU type.For 240 byte PDU length, you can read 222 bytes and write 218 bytes in a single transaction. Q: The xy software can write larger blocks, or?
tavazzi Inserita: 5 dicembre 2006 Segnala Inserita: 5 dicembre 2006 A: No,whichever software hides that limit from you has to split larger blocks into multiple requests.
Bruno Inserita: 5 dicembre 2006 Segnala Inserita: 5 dicembre 2006 Esattamente...Anche se era stato scitto anche in questa stessa discussione (pochi giorni fa), se dai un'occhiata all'esempio pubblicato puoi trarne un'idea di come fare a superare qusto limite.Infatti io ho fatto una funzioncina che spacchetta i messaggi in modo che l'utente del mio modulo non si debba preuccupare di certi limiti.Ciao
Adriano71 Inserita: 5 dicembre 2006 Segnala Inserita: 5 dicembre 2006 x Bruno.Ho provato a guardare le LibNoDave ma l'esempio in C# non sono riuscito a farlo funzionare.Non avresti un esempio diverso dal quello fornito?Grazie Adriano
Bruno Inserita: 5 dicembre 2006 Segnala Inserita: 5 dicembre 2006 Posso provare a postare qualcosa di non definitivo (una specie di VAT)fra un paio di giorni...Pensi che ti vada bene ?CiaoP.S.Che problema hai avuto con l'esempio ? io l'ho compilato così:1) Creazione della DLL per il framework (che utilizza la DLL in win32)C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe /t:library libnodave.net.cs2) compilazione dell'esempio all'interno del direttorio CSC:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe /r:libnodave.net.dll CS\simpleISO_TCP.cs
Bruno Inserita: 9 dicembre 2006 Segnala Inserita: 9 dicembre 2006 Per AdrianoNella sezione up_download files (Home/software) ho inserito un piccolo esempio sviluppato in C# (io utilizzo SharpDevelop, ma puoi usare tranquillamente Visual c# 2005 Express Edition), si tratta di una specie di VAT in cui puoi leggere del PLC.Ho cercato di togliere tutto il contorno che utilizzo io per quel progetto:Multi ThreadLogger (per debug)Server TCP per richieste remotein modo da renderlo il più semplice e comprensibile possibile, le parti che ti interessano dovrebbero essere:MDI_Main.cs : Form main dove viene fatta la connessione al PLCLibNoDaveServer.cs : classe per l'utilizzo delle funzione della DLLfrmDebug.cs : Form con la VAT vera e propriaresource\libnodave_net.dll : DLL compilata per il Framework 2.0Buon divertimento, con un po di pazienza metterò il progetto definitivo...Ciao
Gianmario Pedrani Inserita: 9 dicembre 2006 Segnala Inserita: 9 dicembre 2006 Ciao Ragazzi anche io sto mettendo hiu un piccolo esempio con libnodave fatto sempre in c#, anch eio ho trovato un po di problemi ha far funzionare gli esempi di dave, anche perche sembra che quello compilato gia da lui non sia esattamente quello del sorgente, ma con un po di pazienza sono riuscito a farlo girare....Io utilizzo borland c# che è liberamente scaricabile e utilizzabile previo una piccola registrazione ciao.apena finisco le prove cerco di mettere in linea qualcosa.
Gianmario Pedrani Inserita: 9 dicembre 2006 Segnala Inserita: 9 dicembre 2006 Ho provato a scaricare SharpDevelop devo dire che è veramente un bel ide cmplimenti per la dritta
Bruno Inserita: 9 dicembre 2006 Segnala Inserita: 9 dicembre 2006 (modificato) Sempre per questioni di dritte:Se ti interessa per la compilazione della libreria in C prima usavo il compilatore free a riga di comando della Borland, ma poi ho trovato questo: http://www.bloodshed.net/dev/devcpp.htmlE riesco a ricompilare le librerie libnodave e a debuggare gli esempi in C (cosa molto utile).Si potrebbe richiedere a qualche moderatore di creare un'apposita sezione per i protocolli (nella sezione up_download) dove mettere i vari esempi di comunicazione con diversi PLC e con diversi linguaggi:Io in passato mi sono avventurato (come molti di noi) in comunicazioni con:Siemens S5, Siemens S7-200, Siemens S7-300, Omron, Texas Instrument e GE-Fanuc (lm90-30) mari potremmo unire le nostre conoscenze....Ricordatevi che se due fruttivendoli si scambiano una mela hanno una mela a testa invece se due softweristi si scambiano una idea alla fine hanno due idee a testa.CiaoBR1P.S.Il fatto del moderatore era una battuta Modificato: 9 dicembre 2006 da Bruno
Adriano71 Inserita: 13 dicembre 2006 Segnala Inserita: 13 dicembre 2006 Grazie Bruno per l'esempio, pultroppo non riesco nemmeno ad inizializzare il socket di connessione, in particolare:1. In MDI_Main non viene mai impostato step=2;Ho modificato step=2 (in origine step=1) dopo aver letto impostazioni (prima di if (step == 2)In questo modo accedo all'inizializzazione della connessione.2. Nella classe LibNoDaveServer, ho la variabile bAutoLogon a false. Forzo la chiamata a initHardware.il valore di return della chiamata e' sempre 0LibNoDaveServer.main_fds.rfd = libnodave.openSocket(2000, LibNoDaveServer.myConnection.sPLC_IP);Il primo parametro e' la port di uno dei socket aperti in hardware configuration?Scusa la mia ignoranza, mi sorge un dubbio, tu non stai utilizzando fetch/write?Mi puoi far sapere.Adesso comunque provo ad impostare sulla CP343 un protocollo diverso.Grazie e saluti.
Adriano71 Inserita: 13 dicembre 2006 Segnala Inserita: 13 dicembre 2006 OK, sono riuscito a far funzionare il tuo esempio.A parte la modifica dello step=2 dopo aver riletto tutti i tuoi messaggi ho trovato dov'era l'inghippo (io ero l'inghippo, visto che ho impostato l'indirizzo tpc/ip sbagliato!) ed ora funziona perfettamente.Sto valutando se passare alle librerie LibNoDave o se utilizzare le mie classi.RicapitolandoPRO LibNoDave Nessuna configurazione su PLC Possibilita' di accedere ad area superiore a 255 Passaggio da un'interfaccia all'altra immediatoCONTRO LibNoDave Limitazione numero di byte letti o inviatiPRO Librerie Fetch/Write Nessuna limitazione nella quantita' di byte da leggere o scrivere Semplicita' d'uso (piu' easy con solo 2 classi)CONTRO Librerie Fetch/Write Configurazione su PLC Non e' possibile accedere ad area con indirizzo superiore a 255 (Attualmente non ho ancora implementato possibilita' di leggere M, E, A. Implementazione comunque possibile)Secondo ME, ricapitolando: per una configurazione elastica meglio le LibNoDave, mentre per una configurazione rigida ma piu' performante (> ~200 byte) classi Fetch/Write.Comunque sia, due metodi validi.Saluti Adriano
Bruno Inserita: 13 dicembre 2006 Segnala Inserita: 13 dicembre 2006 Ciao AdrianoMi spiace per l'errore nell'esempio (al più presto correggerò il sorgente), purtroppo cancellando alcune funzionalità ho fatto un danno.Un'altra cosettina contro il protocollo FETCH/WRITE (che considerò comunque valido) è il fatto che l'accesso ai dati mi sembra limitato a word (essendo un protocollo nato per S5).Questa limitazione in lettura non mi dà noia ma in scrittura limita in alcuni casi se il PLC con cui scambiare dati non è di mia fornitura o le aree non sono state progettate in modo conforme.Ciao BR1
Adriano71 Inserita: 13 dicembre 2006 Segnala Inserita: 13 dicembre 2006 Pienamente concorde.Infatti penso che la soluzione migliore per F/W S5 sia quando sviluppi sia automazione che supervisione!Non preoccuparti per errore. Sapessi io quanti ne faccio.... (l'importante per non rimanere somari ed ottusi e riconoscerli, solo cosi' si migliora) , e comunque il tuo non era un errore, e' uno dei cosidetti figli di taglia e incolla.Siccome e' da qualche mese che utilizzo C#, mi sollazza l'uso della classe XML per settings (mai usata) e mi hai illustrato come mettere i commenti (INFO) alle funzioni e alle variabili. Non ero mai riuscito a trovarlo su internet.Quindi mi hai dato 3 aiutoni: LibNoDave, XML e <summary>.GrazieSalutiAdriano
Bruno Inserita: 12 gennaio 2007 Segnala Inserita: 12 gennaio 2007 (modificato) Ciao a tuttiHo ritirato fuori questa discussione per avvertire che è stata rilasciata una nuova versione delle Librerie LibNoDave, nei file txt ho letto che sono stati eliminati alcuni bug.Io ho provato la nuova versione della DLL con l'esempino in VB6 e non ci sono stati problemi.Per cui se volete potete tranquillamente scaricare scaricare la nuova versione da:Download libnodavela descrizione della release è consultabile qui:Release NoteCiao Modificato: 12 gennaio 2007 da Bruno
giviscovo Inserita: 14 gennaio 2007 Segnala Inserita: 14 gennaio 2007 Salve ragazzi la vostra discussione mi intriga molto anche io avrei bisogno di imparare ad utilizzare questi protocolli ma non conosco il c# come posso utilizzarle per comunicare con un S7 224 da cui devo leggere 10 VW e scriverle in un file TXT ogni 5 mituti.Grazie per eventuali suggerimenti
Bruno Inserita: 14 gennaio 2007 Segnala Inserita: 14 gennaio 2007 Se riesci a "smanettare" un poco in VB6 puoi controllare nella sezione up_download troverail'esempio (con sorgenti) che citavo all'inizio di questa discussione.Magari partendo dallo stesso esempio ti basterebbe aggiungere un timer che esegue le operazioni ad intervallo di tempo.Un paio di consigli:1) Se devi leggere solo ogni 5 minuti, apri e chiudi la connessione ogni volta2) Invece di salvare su file TXT salva anche su DB, successivamente se devi elaborare i dati sono comodi (alme non salvare solo su file)Ciao
giviscovo Inserita: 15 gennaio 2007 Segnala Inserita: 15 gennaio 2007 Ciao Bruno ho appena finito di intallare VB6 e comincio a dare un occhiata al tuo esempio ma come dicevo prima è la prima volta per me.Cercherò di segure i tuoi consigli, comunque il file TXT mi seve proprio per interfacciare con un altro programma VB per visualizzare le variabili e salvare in un DB Acces.Grazie ancoraGiuseppe
giviscovo Inserita: 25 gennaio 2007 Segnala Inserita: 25 gennaio 2007 Ciao a tutti seguendo i consigli di Bruno sono riuscito a far funzionare il sul esempio ( Complimenti Bruno ) e a modificarlo per una lettura continua dei dati.Mi sevirebbe una dritta per salvare il messaggio della textbox in un file!Cercando in rete non sono riuscito a trovare esempi significativi per il mio scopo.Mi potreste aiutare?Grazie.Giuseppe
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