Vai al contenuto
PLC Forum


Snap7 & Vb.net


Messaggi consigliati

Salve a tutti.

Sto provando a sviluppare un applicativo in VB Net usando Visual Studio 2015.

Purtroppo non riesco a uscire dal buco, nel senso che non riesco a integrare in maniera corretta lo snap al sistema, infatti quando faccio il debug mi dice che va tutto bene, ma quando lo faccio partire "Start" mi dice che non riesce a accedere al snap7.net.dll ..

 

Ho seguito quello che avete scritto, ma nulla, non riesco.

 

Volevo chiedervi, mi riuscite a inviare un esempio di collegamento con gia integrato il tutto? cosí da iniziare da li e confrontare la soluzione che ho giá fatto.

Cosí poi da postare il mio errore (qualora lo trovassi)

grazie mille

Link al commento
Condividi su altri siti


Giuseppe Signorella

Ciao tafanoide e benvenuto sul forum.

Ti eri accodato ad una discussione esistente. L'accodamento è vietato dal regolamento del forum.

Ho separato il tuo intervento per creare una nuova discussione tutta tua.

 

 

All'interno del forum trovi molto materiale su SNAP7, esempi compresi.

E' sufficiente fare una ricerca.

Poi se vai sulla pagina ufficiale di snap7, trovi tutto ciò che ti serve.

Ciao e buona permanenza sul forum.

 

Link al commento
Condividi su altri siti

Buongiorno, 

Grazie della risposta e di aver creato una discussione tutta mia.

Ho guardato nel forum, ci sono tanti esempi ma non quello che sto cercando io (o forse mi sbaglio, ma a me non sembra)

Sono andato sul sito di snap7, ma non riesco a capire che cosa devo fare per integrarlo nel mio progetto VB in modo tale che alla compilazione e al run possa accedere alla libreria senza problemi

 

Grazie

 

Link al commento
Condividi su altri siti

Ho scritto un capitolo apposito per .NET sul sito e nel manuale:

http://snap7.sourceforge.net/dotnet.html#key_concepts

 

Inoltre nella cartella \examples\dot.net\WinForm del package trovi progetti già pronti e funzionanti per VB e C#.

Poi c'è anche una solution VB/C# (nella cartella VB_Mixed) che ti permette di ricompilare l'assembly Snap7.net.dll insieme al tuo progetto svincolandoti dalla versione del framework.

 

 

Link al commento
Condividi su altri siti

Salve, 

Ottimo! Sono riuscito, partendo dal tuo progetto in examples/dot.net a fare qualcosa di utile.

Ora ho solo una domanda ancora , ho letto la documentazione ma non ho capito come posso usare la funzione DBREAD, qualora volessi leggere per esempio db400.dbd4 che é una DINT, come sarebbe la sintassi specifica per DBREAD ? 

Grazie mille

Link al commento
Condividi su altri siti

Gli esempi nel paragrafo Data Access Example di .NET Environment a pag.271 fanno proprio quello che chiedi.

che trovi anche qui:

http://snap7.sourceforge.net/dotnet.html#example

 

Senti, già scrivere codice in VB mi provoca pruriti su tutto il corpo e secchezza delle fauci (tipo gli antibiotici scaduti) :D

Almeno guardateli ;)

 

Link al commento
Condividi su altri siti

Avevo giá guardato quell´esempio, infatti é li che mi sorge il dubbio.

questo é il mio codice :

 

        Dim DBNumber As Integer
        Dim Size As Integer
        Dim Result As Integer
        Dim Address As Integer
        Dim s As Integer
        Dim Buffer(6000) As Byte

        DBNumber = 20
        Size = 32   'grandezza Dint
        ' Read "Size" bytes from the DB "DBNumber" starting from 0 and puts them into Buffer.
        Result = Client.DBRead(DBNumber, 0, 6000, Buffer)
        ShowResult(Result)
        '***************************************************************

        '***************************************************************
        Address = 2160      
        Result = Client.DBRead(DBNumber, Address, Size, Buffer)
        ShowResult(Result)
        If Result = 0 Then
            s = S7.GetDIntAt(Buffer, Address)
            Label30.ForeColor = Color.LightGreen
            Label30.Text = System.Convert.ToString(s)
        End If

 

se lascio cosí mi legge il valore giusto da DB20.DBD2160, se invece commento il secondo o il primo DBRead allora non leggo niente (commentando il secondo mi dice che vado out of range, mentre commentando il secondo leggo 0 nella label30) .

Non riesco proprio a capire. 

Mi dispiace che ti provoco in te sintomi da antibiotici scaduti :D .. potessi eviterei in pieno :D 

Sicuramente sto facendo un errore da principiante, ma non riesco a vederlo e mi manda fuori di testa e mi provoca gli stessi sintomi che hai tu ;) 

Link al commento
Condividi su altri siti

Ci sono 3 imprecisioni:

 

1) La dimensione di DINT è 4 non 32

2) Il buffer di lettura viene sempre riempito a partire dal byte 0 a prescindere dall'offset di lettura della DB

3) Hai concatenato due letture usando la stessa variabile di ritorno (Result) la seconda riscrive la prima e l'IF non è coerente.

 

Così dovrebbe funzionare:

Dim DBNumber As Integer
        Dim Size As Integer
        Dim Result As Integer
        Dim Address As Integer
        Dim s As Integer
        Dim Buffer(6000) As Byte ' <-- In effetti ne servono solo 4

        DBNumber = 20
        Address = 2160      
        Size = 4   'grandezza Dint
        'Legge 4 bytes da DB20 a partire da 2160 e li mette in Buffer a partire da 0
        Result = Client.DBRead(DBNumber, Address, Size, Buffer)
        ShowResult(Result)
        If Result =  Then
            s = S7.GetDIntAt(Buffer,0) ' Il buffer viene sempre riempito dal byte 
            Label30.ForeColor = Color.LightGreen
            Label30.Text = System.Convert.ToString(s)
        End If

 

 

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...