Vai al contenuto
PLC Forum


Server Libnodave - Client-server dataserver basato su libnodave


leonardi.mair

Messaggi consigliati


  • Risposte 85
  • Created
  • Ultima risposta

Top Posters In This Topic

  • Bruno

    28

  • leonardi.mair

    20

  • yahoo52

    19

  • borinid

    7

In fase di modifica del server libnodave (importazione del codice

da visual studio 2005 a devc++) ho provato l'installazione di wxdevcpp_6.10.2_al posto di devc++.

E' una versione decisamente migliore di devc++ anche in virtù del fatto

di avere un IDE grafico alla visual studio. Attenzione

a non installarlo sotto c:\programmi (percorso di default),

ma in c:\Dev-Cpp.

Disinstallare le precedenti versioni devc++ e cancellarne la cartella in c: prima

di installare wxdevcpp_6.10.2, pena un errore di linking

in fase di compilazione.

Link al commento
Condividi su altri siti

attenzione che utilizzand wxdevcpp_6.10.2, mingw utima release e gcc ultima release,

i parametri di compilazione per il progetto libnodave sono diversi da quelli contenuti

nel progetto presente nel forum. In pratica la libreria viene compilata e linkata correttamente, ma non

vengono esportate (rese visibili) le funzioni per vb. Quindi il richiamo da vb genera un

errore che indica la funzione non presente nella libreria.

Link al commento
Condividi su altri siti

Ciao

Al momento sono bloccato dall'influenza... appena possibile provo awxDev-C++,

unica cosa non ho capito il tuo ultimo post.

In ogni caso pubblica il file di progetto da usare.

Io sto provando la versione demo questo prodotto per testare il software senza PLC (solamente collegamento in TCP/IP con S7300).

BR1

(cough cough cough)

Link al commento
Condividi su altri siti

ciao,

auguri per una pronta guarigione.

Il file di progetto è lo stesso utilizzato per devc++. Oggi ho visto che il make è diverso,ma

anche cambiandolo non si risolve il problema. Probabilmente il problema riguarda

il file di definizioni delle funzioni perchè siano "visibili" anche da VB.

Link al commento
Condividi su altri siti

Non sono ancora ritornato tra i vivi, ma sto cercando di andare avanti con il codice:

purtroppo riesco a testare solo il protocollo in Ethernet in quanto a casa non ho un'interfaccia.

per quanto riguarda lo sviluppo in C# DOT.NET ho modificato:

1) il file libnodave.net.cs per creare la DLL di interfaccia per il framework

da:

    [DllImport("libnodave.dll" /*, PreserveSig=false */ )]
    public static extern int openS7online(
	[MarshalAs(UnmanagedType.LPStr)] string portName
    );
a:
    [DllImport("libnodave.dll" /*, PreserveSig=false */ )]
    public static extern int openS7online(
	[MarshalAs(UnmanagedType.LPStr)] string portName,
	int hw
    );
2) Naturalmente lancio il comando: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe /t:library libnodave.net.cs in modo da creare la DLL libnodave.nel.dll che referenzio nel progetto in C# 3) In modo analogo al VB6 la modifica della chiamata in c# diviene:
if ((int)LibNoDaveServer.myConnection.iProtoNum == libnodave.daveProtoS7online)
            {
				LibNoDaveServer.main_fds.rfd = libnodave.openS7online(LibNoDaveServer.myConnection.sAccessPoint, 0);
				LibNoDaveServer.main_fds.wfd = LibNoDaveServer.main_fds.rfd;
			}

Link al commento
Condividi su altri siti

Oggi in pausa pranzo ho verificato, con successo,il funzionamento delle modifiche

citate con un interfaccia PC ADAPTER USB (6ES7972-0CB20-0XA0) utilizzando

il collegamento /S7ONLINE .

Adesso metterò in rete un file definibile libnodave starter kit composto da:

  • Ver 0.8.2
  1. - Sorgenti ver.0.8.2 con files necessari per compilare la DLL con Dev-Cpp
  2. - Sorgenti per esempio in VB6 che usano la DLL compilata
  3. - Sorgenti per compilare DLL per Framawork DOT.NET 2.0
  4. - Sorgenti per esempio in C# che usano la DLL compilata
  • Ver 0.8.4
  1. - Sorgenti ver.0.8.4 con files necessari per compilare la DLL con Dev-Cpp
  2. - Sorgenti per esempio in VB6 che usano la DLL compilata
  3. - Sorgenti per compilare DLL per Framawork DOT.NET 2.0
  4. - Sorgenti per esempio in C# che usano la DLL compilata
  • Vorrei anche aggiungere un programma (liberamente scaricabile) che emula il PLC (nel caso Ethernet). Ma per questo prima contatto uno dei moderatori.
Ciao

BR1

"Good night and Good luck"

Link al commento
Condividi su altri siti

Ciao Bruno,

sei riuscito a mettere lo "starter kit" in rete?

Io sto provando a sviluppare un programma in VB.NET ma non riesco a fargli digerire la libnodave.dll

Sai darmi indicazioni su come riesca a farlo?

Grazie 1000.

Daniele.

Link al commento
Condividi su altri siti

Ho preparato i due starter kit, uno per la versione 0.8.4 e uno per la versione 0.8.2

ma non riesco ad eseguire l'upload :(

La dimensione degli Zip é inferiore ai 2 MB, ma non riesco ad eseguire l'upload !

aiuta me

aiuta us

BR1

per il tuo problema: hai referenziato la libnodave.net.dll ? Hai copiato la libnodave.dll nello stesso direttorio dove haib l'eseguibile ? Hai compilato la DLL per lo stesso framework che usi con VB.NET (1.0, 1.1, 2.0)

Modificato: da Bruno
Link al commento
Condividi su altri siti

ho eseguito un pò di prove e ho notato che non funzionano nemmeno gli esempi nella cartella DOT.NET. ho compilato il file libnodave.net.cs per avere la dll. ho copiato quella e la libnodave.dll prelevata dal tuo programma di test fatto in vb6, ma quando eseguo uno qualunque fra gli eseguibili della cartella CS ottengo un errore. ho provato a compilare la dll sia col framework 1.1 che col framework 2.0 ma il risultato è identico.. quindi con #DEVELOP ho convertito il file libnodave.net.cs in VB inserendolo direttamente nel progetto, nessun problema nel senso che aggancia le procedure dalla libnodave.dll purtroppo però connectplc ritorna -1 .. non riesco a capire perchè, sto prendendo spunto dal tuo testolibnodave in VB6 (0.8.4) quello funziona da dio,sia collegandolo al simulatore che direttamente al plc. Ne deduco che commetto un errore quando importo in dot.net.... non riesco a capire dove però!!!!!

Link al commento
Condividi su altri siti

L'area download è offline da venerdi, dannazione!!!!!!!!!!!!

Sono riuscito a referenziare la libnodave.net.dll era un problema di framework.... (ma và??) purtroppo stesso risultato: connectPLC=-1

:(

Lavori a Reggio Emilia? Io lavoro in provincia di Parma....

Link al commento
Condividi su altri siti

Ho provato nuovamente a fare l'upload, ma è fallito ancora.

Ho visto che il download funziona, puoi provare a scaricare il file LibNoDave_C.zip lo trovi nella sezione Home / Software

è in C# framework 2.0 ed è per la versione 0.8.2 ma è funzionante puoi testare se con quello va e poi controlli le differenze.

Che connessione usi ?

Io preferisco la ISOonTCP ! Ed è quella che conosco meglio (oltre a non richiedere DLL siemens come il collegamento /S7ONLINE.

Dai che ci riesci !

BR1

Reggio/Parma magari ci siamo anche conosciuti, faccio questo lavoro da 1988 (poki ai ventanni) :D

Link al commento
Condividi su altri siti

Ok, il programmino di test in C# funziona alla perfezione! ora l'unico problema è che uso VB.NET 2003 il quale è all'oscuro dell'esistenza del framwork 2.0 (almeno credo) farò una prova domani con #Develop.. spero di risolvere appoggiandomi al 2.0.. ho paura però di avere troppa confusione di framework nel pc.. comunque, grazie dell'aiuto, ti terrò informato, per dovere di cronaca, dei miei progressi.

Complimenti per il ventennale di esperienza... io sono un pò indietro, a metà dicembre festeggerò il primo mese di guerra con i PLC... :blink::D

Link al commento
Condividi su altri siti

Con VB.NET 2003 stai utilizzando il framework 1.1, la DLL dovrebbe essere compilata per il 2.0, ma TRANQUI !

Per la compilazione io uso il comando

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe /t:library libnodave.net.cs

dove csc.exe è il compilatore, tu dovresti trovare dove si trova quello per la tua versione e ricompilare

penso proprio che non dovresti avere problemi, infatti la libreria LIBNODAVE.NET.DLL non è altro che un interfaccia

tra il framework e la libreria statica.

BR1

Link al commento
Condividi su altri siti

Sono riuscito!!! Ho installato #Develop che non è razzista con i framework e li accetta tutti, poi la libnodaveserver.cs l'ho convertata in vb, ho copiato le dll e tutto funziona alla perfezione!!Attualmente un mini versione è già operativa, devo concentrarmi sulle ottimizzazioni e la gestione delle eccezioni.

Grazie ancora per il supporto e l'aiuto, vedere un'applicazione di 19 Kb che fa le stesse cose di un OPC server pesante, lento e macchinoso è una soddisfazione!!!

Link al commento
Condividi su altri siti

Dopo vari tentativi di uploadare (forma verbale interessante) lo starter kit (tutti falliti) oggi

ho avuto il messaggio di limite mensile raggiunto.....

Ci riproverò la settimana prox.

Ciao

Link al commento
Condividi su altri siti

ciao Bruno,

sono rientrato ieri da una trasferta...

ho visto che hai fatto progressi nella compilazione. La prossima settimana mi rimetto

al lavoro anch'io alla libreria (ho nuove funzioni da integrare per processare stringhe di bit e allarmi).

Link al commento
Condividi su altri siti

Bentornato !

Io al momento sto lavorando sulla DLL per il framework, infatti nell'interfaccia rilasciata dall'autore (Thomas Hergenhahn) non sono pubblicate tutte le funzioni della libreria, quali:

  • davePut8(uc *b,int v);
  • davePut16(uc *b,int v);
  • davePut32(uc *b,int v);
  • davePutFloat(uc *b,float v);
  • davePut8At(uc *b, int pos, int v);
  • davePut16At(uc *b, int pos, int v);
  • davePut32At(uc *b, int pos, int v);
  • davePutFloatAt(uc *b,int pos, float v);
oltre a quello sto facendo delle prove con il framework 3.5 (ho scaricato visual studio 2008 express edition).

stay tuned

BR1

Link al commento
Condividi su altri siti

ho avuto conferma dalla Siemens che la pdu delle 300 (io utilizzo una S7-300T)

è stata aumentata a 8192 da 240. Ho provato la funzione davereadbytes con

un valore maggiore di 240, ma non sembra funzionare. Probabilmente 240 è una costante

all'interno della libreria libnodave. Aumentare questo limite aumenterebbe

considerevolmente la velocità di trasmissione per un elevato numero di

words da leggere.

Link al commento
Condividi su altri siti

Il limite (con la versione 0.8.4) dovrebbe essere 1920 e viene diminuito a 240 byte per le connessioni/interfacce:

IBH (sia MPI che PPI), AS511.

Con la connessione /S7ONLINE viene acquisita dalla DLL siemens.

Considero sempre importante che le connessioni funzionino indipendentemente dalla configurazione HW, per cui bisognerebbe

verificare che il sw sia in grado di testare la versione del PLC e adeguarsi in modo automatico o rimanere limitato a 240 in modo

del tutto trasparente all'utente finale.

Ciao

Link al commento
Condividi su altri siti

il limite di 8192 è per la connessione ethernet, secondo me al variare dell'interfaccia

dovrebbe corrispondere un adeguamento della pdu in modo da ottimizzare il rendimento

al tipo di collegamento scelto.

Link al commento
Condividi su altri siti

Tu hai fatto una prova con un numero leggermente inferiore a 1920 ?

Io non ho ancora avuto il tempo...

Se con 1900 funziona (18 byte sono di header) la modifica è molto ben identificabile...

BR1

Link al commento
Condividi su altri siti

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora

×
×
  • Crea nuovo/a...