Vai al contenuto
PLC Forum


S7 315-2 Pn/dp Libnodave Vb.net


gigi_plc

Messaggi consigliati

Salve a tutti,

inanzitutto complimenti per questo forum, è veramente utile e ricco di risorse.

Volevo chiedere il vostro aiuto a riguardo di un collegamento diretto tra CPU S7 315-2 PN/DP tramite ethernet con un PC con windows xp, librerie libnodave e programma sviluppato in visual basic .net. Ho usato la funzione cerca per trovare una risposta al mio problema ma niente.

Riporto il codice presente nel mio programma:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim localMPI As Integer = 0, plcMPI As Integer = 2

Dim fds As libnodave.daveOSserialType

Dim di As libnodave.daveInterface

Dim dc As libnodave.daveConnection

Dim res As Integer

' Dim a, b, c As Integer, d As Single

Dim buf(1000) As Byte

' Dim s As String

Dim args As String = "192.168.0.1"

Console.WriteLine("Hello World!")

fds.rfd = libnodave.openSocket(102, "192.168.000.001")

fds.wfd = fds.rfd

If fds.rfd > 0 Then

di = New libnodave.daveInterface(fds, "IF1", 0, libnodave.daveProtoMPI_IBH, libnodave.daveSpeed187k)

di.setTimeout(1000000)

res = di.initAdapter

If res = 0 Then

dc = New libnodave.daveConnection(di, 0, 0, 2)

res = dc.connectPLC()

Else

End

End If

End If

End Sub

quando il programma esegue la funzione open.socket, dopo circa 10 secondi la risposta è sempre zero e quindi non avviene la comunicazione.

uso un cavo ethernet incrociato che collega direttamente la cpu al pc. L'indirizzo ethernet del plc è quello impostato da programma, verificato 100 volte.

Le librerie sono presenti sia in system 32 che nel direttorio del programma.

Cosa posso ulteriormente verificare?

Vi ringrazio della vostra collaborazione..

Ciao a tutti

Link al commento
Condividi su altri siti

  • 4 months later...

Hai risolto?

Sarei molto interessato a sfruttare la tua esperienza sull'argomento ... ;)

Ho scaricato libnodave e ho creato un progetto vb.net pastando il tuo codice ... stranamente, ogni volta che lancio l'applicazione mi si skianta alla riga 17:

fds.rfd = libnodave.openSocket(102, "192.168.000.001")

Il compilatore segnala : DllNotFoundException not handle

Vorrei specificare che non ne so molto di VB ...

Ho usato Vb.net 2008 per eseguire il test ...

Link al commento
Condividi su altri siti

Consiglio ad entrambi di cercare nella sezione upload/download di questo sito gli esempi per l'utuilizzo delle librerie libnodave in:

VB6

VC# 2005

VB.NET 2005

facendo ricerche sulle discussioni passate con parola chiave "libnodave" troverete diversi aiuti....

dai non rifate gli errori di altri, sfruttate l'esperienza leggendo le discussioni passate.

ciao

BR1

P.S.

Quando vi sarete documentati postate nuovamente e verrete aiutati molto volentieri !!!

Link al commento
Condividi su altri siti

Fatto!

In realta' avevo gia' letto tutti :angry: i post relativi a LibNoDave, solamente che non riuscivo a downlodare gli esempi dalla sezione download :unsure:

Ora ci sono riuscito, ho provato Libnodave_VBNET.zip e funziona !!!!

Non mi resta che reciclare il codice che mi serve nella mia applicazione.

Grazie

Link al commento
Condividi su altri siti

Come ho già scritto quell'esempio non mi è venuto al meglio... per quanto riguarda la classe LibNoDave ti consigio di controllare la parte scritta in C#....

Sto preparando un esempio migliore in VB.NET, ma il tempo "libero" è tiranno.....

Se conosci solo il VB.NET controlla anche la classe scritta da Varg !

Magari potresti postare tu un esempio funzionante, stand-alone, ordinato e semplice :rolleyes:

ciao

BR1

Link al commento
Condividi su altri siti

ho provato a scaricare i 3 files ma non funzia , non capisco , dopo aver cliccato sull'icona scarica si apre ua pagina che non

mi dice niente :huh: ......riva ......

Link al commento
Condividi su altri siti

Sul lato PLC non bisogna fare nulla !

ho provato a scaricare i 3 files ma non funzia , non capisco , dopo aver cliccato sull'icona scarica si apre ua pagina che non

mi dice niente

Ricordati che bisogna loggarsi per poter scaricare i files

Ciao

BR1

Link al commento
Condividi su altri siti

ciao a tutti ,

ho avuto modo di utilizzare la nuova cpu della siemens 315_2pn_dp che integra la device ethernet .

come diceva un mio amico , bella , design accativante , economicamente conveniente ma ........... "cpu di mer....."

io e pinze un mio collega oramai ex .... ci siamo imbattuti nella necessità di creare un protocollo TCp tra Cpu e cpu x201485 B&R.

per le prime prove abbiamo configurato la cpu come server e abbiamo realizzto un client in vb6 ;

subito abbiamo visto che con questa cpu bisognava configurare un db parametri secondo le specifiche dell' UDT 120 di siemens.

qui vengono definiti ip , porte in ascolta fino a 8 , e il tipo di conessione (client server).

lato plc abbiamo configurato due blocchi send recive , un connect e un disconnet basati su protocollo send recive.

ok .

tutto bene ci siamo accorti che con questa cpu ogni porta riesce a gestire fino a 1480 byte a differenza del vecchio send recive su cpu 343-1 eth. . 240 byte

ma utilizzandola , abbiamo visto che la 343-1 e piu' solida e garantisce una diagnostica delle connessioni.

questa cpu non supporta fetch and write , ed è nata per lavorar con pannelli siemens , se qualcuno vuole qualcosa di diverso come nel mio caso

siemens rende la strada lunga e contorta .

se qualcuno e' interessato posso rigirare un po di codice.

Link al commento
Condividi su altri siti

sono loggato ...altrimenti non potrei nemmeno rispondere nei post .

Sarei interessato a scaricare tutti i files di libnodave per contribuire anche ad un'estensione

Pero non mi fa' scaricare

Qualora non sia necessaria la forum card (visto che non ce l'ho ) , vorrei chiedere gentilmente se qualcuno

potrebbe inviarmi il malloppo via mail

I files interessati sono :

LIBNODAVE_VBNET01.ZIP

LIBNODAVE_C.ZIP

LIBNODAVE_C2.ZIP

LIBNODAVE_VBNET.ZIP

STARTERKIT_084.ZIP

grazie

walter

Link al commento
Condividi su altri siti

sono loggato ...altrimenti non potrei nemmeno rispondere nei post .
Nell'area up/download files occorre una nuova registrazione che e' indipendente da quella del forum

Link al commento
Condividi su altri siti

Come ho già scritto quell'esempio non mi è venuto al meglio... per quanto riguarda la classe LibNoDave ti consigio di controllare la parte scritta in C#....

Sto preparando un esempio migliore in VB.NET, ma il tempo "libero" è tiranno.....

Se conosci solo il VB.NET controlla anche la classe scritta da Varg !

Magari potresti postare tu un esempio funzionante, stand-alone, ordinato e semplice

Dici bene ... MAGARI!

:( Ho provato ad usare la classe di Varg ma, date le mie scarse conoscenze di VB (sono solo uno smanettone), non sono riuscito neanche a leggere un byte! :blink:

E' un peccato, la classe di Varg sembra essere Molto ottimizzata ... Posto il codice usato per il mio test, dove ho provato a connettermi via TCP all'indirizzo 192.168.0.102 ...

Dim S7MainConn As New modSiemens2.MainConn
        S7MainConn.bAutoLogon = False
        S7MainConn.iMPI = 4
        S7MainConn.iProtoNum = modSiemens2.EmpTypeProto.daveProtoISOTCP
        S7MainConn.iRack = 0
        S7MainConn.iSlot = 2
        S7MainConn.sAccessPoint = "/S7ONLINE"
        S7MainConn.sBaudRate = "38400"
        S7MainConn.sCommPort = "COM1"
        S7MainConn.sParity = "E"
        S7MainConn.sPLC_IP = "192.168.0.102"

        Dim S7Conn As New modSiemens2.LibNoDaveServer(S7MainConn)
        Dim byBuffer() As Byte
        Dim obj As Object

        S7Conn.initHardware()
        S7Conn.initPlcConn()

        ReDim byBuffer(10)
        obj = S7Conn.ReadByteFromPLC(S7Main2.daveblocktype_db, txtDB.Text, txtElement.Text, txtLenght.Text, byBuffer)
        Me.lblValue.Text = byBuffer(0)

        S7Conn.CloseHardware(modSiemens2.EmpTypeProto.daveProtoISOTCP)
        S7Conn.ClosePlcConn()

Modificando il tuo esempio (usando la tua classe) sono riuscito a leggere variabili e scansionare la CPU alla ricerca delle DB configurate e loro lunghezza ...

comunque sia provero' ancora con la classe di Varg ... tempo permettendo ...

Modificato: da caracarogna
Link al commento
Condividi su altri siti

Salve a tutti facciamo un po di luce sulla classe di gestione in VB.NET

Per farla andare è una cosa semplice

    
Dim PLC As MainConn
Dim PLCConn As LibNoDaveServer
PLC Rappresenta la Configurazione del Vostro PLC PLCConn Rappresenta la Connesione tra il PC e il PLC
Configurate Decentemente PLC, con tutti i dati necessari per il vostro PLC, come seriale, protocollo, ethernet o altro... Ricordatevi di settare bAutoLogon a true cosi si connette da solo finito di configurare PLC
    
PLCConn = New LibNoDaveServer(PLC)

a questo punto avere la connessione PLCConn gia connessa e funzionante e potete fare tutto quello che volete leggere scrivere o altro...

Modificato: da varg
Link al commento
Condividi su altri siti

Grazie Varg!

Sono riuscito a leggere dal mio S7-300, posto il codice che ho utilizzato per la connessione con il mio HW (CPU 317 2PN/DP con CP 343-1), N.B. in questo esempio la connessione avviene con protocollo TCP (ethernet)

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdConnetti.Click

        Dim PLC As modSiemens2.MainConn
        Dim PLCConn As modSiemens2.LibNoDaveServer

        PLC.bAutoLogon = True
        PLC.iMPI = 2
        PLC.iRack = 0
        PLC.iSlot = 2
        PLC.iProtoNum = modSiemens2.EmpTypeProto.daveProtoISOTCP
        PLC.sPLC_IP = "192.168.0.102"

        PLCConn = New modSiemens2.LibNoDaveServer(PLC)

        Dim byBuffer() As Byte

        'txtDB.Text         ---> textbox contenente il numero della DB da leggere
        'txtElement.Text, ---> textbox contenente l'indice del primo byte della DB da leggere
        'txtLenght.Text    ---> textbox contenente il numero di byte da leggere
        ReDim byBuffer(txtLenght.Text)
        PLCConn.ReadByteFromPLC(libnodave.daveDB, txtDB.Text, txtElement.Text, txtLenght.Text, byBuffer)

        'per test scrivo il primo valore letto in una label
        Me.lblValue.Text = byBuffer(0)

        'Chiusura della connessione con il Plc
        PLCConn.ClosePlcConn()

    End Sub

Dimenticavo, ovviamente per eseguire il test si deve scaricare (sezione download) LibNoDaveVBNET01.zip (by Varg) e le LibNoDave da sourceforge ...

Grazie a tutti !!!!

Modificato: da caracarogna
Link al commento
Condividi su altri siti

  • 1 month later...

la cosa che non capisco e' che se si tratta di comunicazione ethernet ma ci sono i parametri anche della seriale

Ho provato 5 minuti fa con l'applicazione test form che fa riferimento all assembly per .net

Nella scehda option si possono scegliere dei protocolli , poi c'e' l'indirizzo ip , la seriale ect

Io vorrei fare una prova di comunicazione con CP5512 in MPI , collegato al plc in mpi .

Il simatic net e' installato ect .......

Sapete se con queste caratteristiche posso comunicare ?

grazie

walter

Link al commento
Condividi su altri siti

Ciao Walter

Il fatto che le librerie libnodave non sono solo ethernet, se stai provando il programmino che penso io puoi instaurare la comunicazione in diversi modi:

  • 0 = MPI for S7 300/400
  • 1 = MPI for S7 300/400, "Andrew's WITH"
  • 2 = MPI for S7 300/400, Step 7 Version, not yet implemented
  • 3 = MPI for S7 300/400, "Andrew's WITHOUT"
  • 10 = PPI for S7 200
  • 20 = S5 via programming interface
  • 50 = S7 using Siemens libraries & drivers for transport
  • 122 = ISO over TCP

Nel casi da 0 a 3 si intende una comunicazione MPI attraverso porta seriale e interfaccia PG/PC (quindi non interfaccia USB o CP 5512), in questi casi devi impostare i paratri per la porta seriale (ignora pure l'indirizzo IP)

Nel caso 10 si intende comunicazione PPI con S7-200 attraverso cavo seriale, anche in questo casi devi impostare i parametri per la porta seriale (ignora pure l'indirizzo IP)

Nel caso 20 si intende comunicazioe AS511 (porta CPU) con PLC serie S5 attraverso cavo seriale con opportuna interfaccia in current loop, impostare parametri seriali (in questo caso ignora pure IP ma anche rack e slot che non hanno senso)

Tutti questi casi appena elencati fanno riferimento ad una seriale del PC, sono validi sia in linux che in Windows.

Nel caso 50 la libreria utilizza le DLL della siemens per la comunicazione con i PLC seria S7300 il parametro che indica la tipologia di comunicazione da usare è "access point" (normalmente /S7ONLINE), quindi utilizzando il software Siemens "Imposta interfaccia PG/PC" da pannello di comando definisci come comunicare se via Ethernet (con scheda di rete) o via MPI (con interfacce tipo USB o CP5512). Quindi a seconda del collegamento il parametro che indica il PLC con cui comunicare è l'indirizzo IP in un caso e l'indirizzo MPI nell'altro. ATTENZIONE: con questa tipologia di comunicazione risulta necessiaro che sul PC in questione sia installato software Siemens tipo S7 manager o Simatic NET o altro (quindi attenzione alle licenze), di conseguenza questo caso è limitato al sistema operativi windows.

Il caso 122 (il mio preferito) fa riferimento alla comunicazione ISO on TCP (utilizza la porta 112) il parametro che devi impostare è l'indirizzo IP (ignora pure gli altri). Come nel caso seriale questa comunicazione funziona in ambienti windows e linux. Sempre come negli altri casi (tranne che il 50) non necessita di nessuna installazione commerciale (licenze OK).

Spero di esserti stato utile.

Ciao

BR1

Link al commento
Condividi su altri siti

ok , il 122 sarebbe anche il mio preferito , solo che 1000 euro di scheda ethernet l'azienda non me li porge sopra l'unghia ..... :)

Io nei vari pc nuovi la seriale non ce l'ho.

Uso spesso , anzo solo , la CP5512 , attraverso la quale (settando l'interfaccia Pc Internal ) posso programmare e debuggare il plc e contemporaneamente lanciare un'applicazione client su opc server , fino qualche annetto fa .

Quindi opterei per la scehda CPxxx

Se invece il pc di supervisione non ha step 7 allora puo darsi abbia la seriale , o la CP5611

Ultimamente si sta cercando di eliminare le scehde seriali per ovvi motivi e per una macchina o impianto di solito non si opta per la scheda ethernet , a meno che non ci siano clien , livello 2 , e altri plc in rete .

Con il 50 come dici tu dovrei riuscire ad instaurare un collegamento , 50 sarebbe il valore dell'indice dell'enumeratore che permette di scegliere tramite combo box il protocollo ....se ho visto giusto nel progetto C#

:(

Link al commento
Condividi su altri siti

  • 9 months later...

Ciao a tutti.

Ho un problemino da risolvere... Sto facendo dei lavori in cucina in occasione della sostituzione dei mobili e degli elettrodomestici.

Devo aggiungere dei punti presa. Per rompere il meno possibile, ho intercettato il tubo esistente, che andava a servire un'altra presa più in là.

Il fatto è che ho rotto la mattonella per farci passare la 503, ma adesso il foro che ho aperto è troppo grande per essere coperto con una qualsiasi placca in commercio. Ovviamente a far bene dovrei rompere tutta la mattonella e tagliarne una nuova a misura.

Io mi chiedevo se esiste in commercio qualche accessorio che risolva questo problema estetico, ossia qualcosa che si avviti sulla 503 e che vada a coprire oltre la dimensione di una normale placca...

Allego una foto per capirci meglio.

cucina-web.jpg

Voi che fareste?

Grazie, Nicola

Link al commento
Condividi su altri siti

Sicuramente dal punto di cista estetico la soluzione migliore consiste nel sostituire la piastrella rotta.

Allego una foto per capirci meglio.
Dov'è? Modificato: da Ivan Botta
Link al commento
Condividi su altri siti

Avete ragione il link non funziona...

La metto come allegato..

Supponiamo che volessi abbandonare per principio l'idea di sostituire l'intera piastrella, quale potrebbe essere un'altra soluzione anche se magari più "mediocre"?

Modificato: da nicola1
Link al commento
Condividi su altri siti

In commercio c'è una specie di "salvamuro" ( non so come si chiama e chi li produce ), che farebbe al caso tuo. In pratica si mette dietro il supporto e, stringendo quest'ultimo alle sue viti,copre tutto il contorno del supporto in maniera rilevante e impedisce, appunto, di sporcare i muri

Unico neo per quanto riguarda lo scopo a cui serve a te,è trasparente.. La dovresti decorare in qualche modo..

Ciao

Link al commento
Condividi su altri siti

Mauro Dalseno

Cosi' a occhio e croce mi sembra che se muri la scatola ben centrata, la placca riesce a coprire il foro.... Ovviamente dipende da che serie civile utilizzi, quelle moderne hanno delle placche abbastanza grosse

sondaggio_serie_civile.gif

Modificato: da Mauro Dalseno
Link al commento
Condividi su altri siti

In commercio c'è una specie di "salvamuro" ( non so come si chiama e chi li produce ), che farebbe al caso tuo. In pratica si mette dietro il supporto e, stringendo quest'ultimo alle sue viti,copre tutto il contorno del supporto in maniera rilevante e impedisce, appunto, di sporcare i muri

Cercavo proprio qualcosa del genere... Il top sarebbe ovviamente che ci fossero bianchi :) Qualcuno sa essere piu' preciso sul nome commerciale di questi accessori? Mi fareste un gran favore...

Cosi' a occhio e croce mi sembra che se muri la scatola ben centrata, la placca riesce a coprire il foro.... Ovviamente dipende da che serie civile utilizzi, quelle moderne hanno delle placche abbastanza grosse

Purtroppo ho già fatto un tentativo al volo sia con la International sia con la Idea ma nessuna delle due copre il foro completamente...

Vedrò di informarmi meglio anche dal mio fornitore su questi "salvamuro"...

Grazie, ogni ulteriore consiglio e' ben accetto :) Buona giornata...

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