Vai al contenuto
PLC Forum


Snap7: Nuova Libreria Di Comunicazione S7


Messaggi consigliati

salve a tutti,
ho appena pubblicato una libreria di comunicazione open-source su sourceforge.
E' più di un semplice driver per leggere e scrivere dati da un PLC, l'ho denominata "suite" perché contiene tre componenti indipendenti:
  • Client
  • Server
  • Partner
Il Client, anche se è il componente più "scontato", presenta alcune caratteristiche abbastanza innovative come lo smart-connect e le funzioni asincrone che possono eseguire grandi trasferimenti dati in un thread separato.
Inoltre implementa alcune funzioni inedite come il set/clear della password, e l'upload di una DB senza conoscerne la dimensione a priori.
Il Server permette di connettere un pannello operatore/scada/opc server alla propria applicazione che viene vista come una CPU Siemens (S7315-2PN/DP); anche il simatic manager/TIA portal va online e mostra directory e informazioni di sistema.
Gestisce fino a 1024 clients contemporanei con accesso consistente ai dati condivisi.
Implementa un Log in coda circolare asincrona e callback per sincronizzarsi con l'attività dei clients.
(nota : è più lungo quello che ho scritto di quanto sia necessario per farlo funzionare).
Il Partner implementa l'architettura peer-to-peer (o client-client secondo Siemens).
Questo componente permette di realizzare lo store-on-demand : non è il PC ad interrogare in polling i PLC per verificare se hanno dei dati pronti, ma sono i PLC che mandano i dati quando decidono di farlo. Il PC li riceve in una callback in modo completamente asincrono.
Questo in genere si realizza attraverso una comunicazione TCP/IP generica, nel nostro caso tutto avviene sfruttando la robustezza del protocollo S7 : le funzioni lato PLC sono BSend/BRecv e permettono di trasferire fino a 64k nello stesso job.
L'utilizzo di questo componente non è banalissimo (perché non è banalissimo l'utilizzo dei partners secondo Siemens :( ) ho scritto comunque una guida dettagliatissima su come farlo e ci sono gli esempi pronti all'uso.
Sono gestite, con alcune limitazioni, anche le CPU 1200/1500 e i drive SINAMICS con interfaccia Ethernet.
Alcune caratteristiche comuni
Licenza:
  • LGPL V3.0 (potete utilizzare Snap7 nei vostri programmi senza l'obbligo di distribuirne il sorgente e senza l'obbligo che i vostri programmi stessi vengano distribuiti con licenza open source).
Architetture supportate:
  • 32/64 bit Intel/AMD per tutte le piattaforme ed i linguaggi supportati.
  • 32 bit ARM piattaforma Linux, testata (esempi acclusi) su:
    • Raspberry PI
    • BeagleBoard Black
    • PcDuino
    • CubieBoard Dual core.
Linguaggi supportati con wrappers object oriented e esempi multipiattaforma:
  • Delphi/FreePascal
  • .NET/MONO (l'assembly è in C#)
  • C/C++
  • LabVIEW (83 vi dedicati ed una "glue" dll per l'utilizzo di buffers non tipizzati).
Piattaforme supportate (con librerie binarie distribuite):
  • Windows : da NT4.0 a Windows 8, esclusi WinCE e Win95/Me.
  • Linux (Intel/ARM)
  • BSD
  • Solaris 11
La documentazione è dettagliatissima (260 pagine di manuale) ma è tutta in inglese, purtroppo non ho il tempo per poter gestire la doppia lingua, in ogni caso è molto comprensibile per noi italiani (spero anche per gli inglesi).
Ad ogni modo sono a disposizione per ogni chiarimento nell'amato idioma italico ;).
Spero possa esservi utile, ovviamente commenti/critiche/suggerimenti/codice di esempio/bugreport sono graditissimi !!
Davide Nardella
Modificato: da dan64100
Link al commento
Condividi su altri siti


Scaricato e quando ho un attimo di tempo lo guarderò meglio. Da quello che vedo nella documentazione è un lavoro eccezionale...

Complimenti e grazie!!

Link al commento
Condividi su altri siti

  • 2 weeks later...

Grazie 1000 per i complimenti e l'interesse dimostrato ;)

Non vi nascondo che è stato un lavoraccio, soprattutto scrivere la documentazione e fare i test su tutte le piattaforme di tutti i demo in tutti i linguaggi.

La bestia nera è stata Solaris, un sistema operativo nato come open source a cui Oracle sta "cambiando pelle" chiudendolo progressivamente con il risultato che metà dello strato posix funziona male.

La parte divertente è stata l'implementazione o meglio il test (perché tutto è filato liscio come l'olio) sulle schedine arm linux tipo Raspberry.

Sono oggettini fantastici, nessuno di noi a primo impatto è portato a pensare che possano avere un futuro nell'automazione, fatta di grandi cifre (molto spesso ingiustificate vedi Siemens).

Ci sono tuttavia tante funzioni "accessorie" dove possono essere impiegati con successo, basti pensare ai pannelli tipo Andon, oggi con l'uscita degli smart tv è possibile trovare un televisore lcd 46" a prezzi ragionevolissimi.

Raspberry oltre a costare pochissimo, consuma poco, lo installi dove vuoi con un minimo di cablaggio e con un cavetto di rete raccogli dati da 75 plc autonomamente o da una tabella mysql.

Prevedo un futuro interessante....

Ciao

Davide

Link al commento
Condividi su altri siti

Giuseppe Signorella

e appena ho u n attimo vedo di fare qualche cosa con rasberry , economico , flessibile , e anche potente.

Stiamo elaborando un progetto con la gentile collaborazione di dan64100 per il raspberry connesso al un S7 1200.

Appena sarà pronto e verrà pubblicato sul forum, ci piacerebbe che anche altri utenti si uniscpno allo sviluppo ed ampliamento di tale progetto, pertanto Frank681 visto i tuoi buoni propositi tieniti "caldo"... :thumb_yello:

Modificato: da Giuseppe Signorella
Link al commento
Condividi su altri siti

Ciao dan64100.

Hai svolto un lavoro immenso ed incredibilmente ben documentato (anche meglio di tanti prodotti commerciali) che fa spiccare Snap7 tra gli altri. :thumb_yello:

Spero di avere l'opportunità di provarlo al più presto e ti auguro lo stesso successo (ed anche qualcosa in più visto che sei Italiano) della utilizzatissima ed apprezzata libnodave.

Grazie per la generosità di condividere il tuo lavoro :clap: .

bigalex :blink:

Link al commento
Condividi su altri siti

  • 4 weeks later...
Giuseppe Signorella

Stiamo elaborando un progetto con la gentile collaborazione di dan64100 per il raspberry connesso al un S7 1200.

Mentre il tutorial può essere letto qui:

E' stato chiamato Raspy7-HMI

Si tratta di un visualizzatore di testo. Con testi e visualizzazioni completamente programmabili dall'utente.

Quindi un vero e proprio mini pannello operatore-HMI low-cost, compatibile con i PLC della famiglia Siemens, e più precisamente per:

· S7-300

· S7-400

· S7-1200

· S7-1500

Low-cost in quando Il sistema è basato sulla famosa scheda rasbperry con sistema operativo Linux e di una scheda visualizzatore dotata di un display LCD 2x16 (2 righe per 16 caratteri), e 5 pulsanti per la gestione del menù.

Il risultato è molto accattivante oltre che perfettamente utilizzabile per compiti accessori di visualizzazione, per i quali cioè non è necessario soddisfare normative di sicurezza.

Modificato: da Giuseppe Signorella
Link al commento
Condividi su altri siti

  • 1 month later...
  • 2 months later...
marcellominafra

Ciao a tutti sono marcello,

innanzi tutto complimenti per il progetto snap7, grandioso! ho provato a installare (per la prima volta) lazarus per windows e sono riuscito a creare un piccolo programmino

client con snap7 funzionante, subito dopo ho provato a fare la stessa cosa con raspberry ma dopo aver istallato lazarus e copiata la libreria snap7 per (arm rasberry) ma

sto riscontrando dei problemi col progetto.

quando tento di aprire il progetto con lazarus su raspberry non mi si apre il form e tutti i file che invece si aprono con windows.

cosa sto sbagliando?

gentilmente vi chiedo un aiuto

Link al commento
Condividi su altri siti

marcellominafra

si lo aveva già visto e lo anche seguito alla lettera ! ma niente quando apro il progetto non mi si aprono tutti i file e di conseguenza non mi compila nulla.

in principio il mio progetto era quello di creare una sorta di pannellino eterne da collegare a un plc per eseguire movimenti manuali di una macchina, ci ho

provato con settimino + un diplay ST7565 spi ma non sono riuscito a far funzionare le librerie del display con quelle di settimino mi funzionavano o una o l'altra ma insieme no quindi sono

passato con raspberry ( ma sono poco pratico).

Link al commento
Condividi su altri siti

Con Arduino è un problema hardware : o usi Ethernet o usi il display. Con il Raspberry mi sembra strano che non ti carichi il progetto. Che non visualizzi i form in automatico ci può anche stare, dipende da quando ho salvato il progetto se form erano visibili o meno, ciò non toglie che il progetto debba essere compilato. Hai provato a creare un nuovo progetto con la form di default da zero e a compilarlo ? Se lo compila e lo manda in esecuzione allora prova a riscaricare Snap7 (o a riscompattarlo, magari ti sei perso qualcosa per strada). Se non lo compila il problema è nell'installazione di Lazarus. Ci sono altri due progetti : serverdemo.lpi e partnerdemo.lpi non carica nemmeno quelli ? Ciao

Link al commento
Condividi su altri siti

marcellominafra

Ciao ti ringrazio della risposta sei gentilissimo, allora lo stesso progetto della cartella raspberry con lazarus su Windows lo apro e lo compilo tranquillamente sicuramente sarà qualcosa nell'installazione di lazarus su raspberry, tutti e progetti presenti mi danno lo stesso problema ma se ne creo uno nuovo il form che e si compila. Ti dico un'altra cosa io ho creato una piccola applicazione su Windows come console con snap7 poi la ho portata su raspberry be li nella compilazione sulla finestra di output sembrava che la libreria snap7 la compilasse tranquillamente ma si bloccava dicendomi qualcosa sulla finestra di console. oggi conto di fare altre prove vediamo cosa ne esce fuori. Grazie ancora

Link al commento
Condividi su altri siti

...allora lo stesso progetto della cartella raspberry con lazarus su Windows lo apro e lo compilo tranquillamente...

Attenzione che non è un cross-compiling, in Windows devi usare i progetti *.lpi che trovi in \rich-demos\i386-win32 , nel Raspberry quelli presenti in /rich-demos/Raspberry.

Le forms ed altri files sono comuni a tutti i progetti (essendo Lazarus multi-platform) e il compilatore li trova in \rich-demos\ ma i files di progetto devono essere quelli della piattaforma in cui lanci Lazarus.

Per usare ServerDemo ed usufruire di alcune proprietà del client (tipo lo smart-connect) i programmi devono avere i diritti di root sotto unix (Linux/BSD/Solaris/OSX) non ti racconto i dettagli per non toglierti il gusto di leggere la documentazione ;)

Modificato: da dan64100
Link al commento
Condividi su altri siti

marcellominafra

si infatti non mi è chiaro perchè io ho aperto il progetto clientdemo dalla cartella raspberry con windows (chiaramente in system ho messo snap7.dll di win) e sono riuscito a compilarlo e funziona perfettamente, mentre lo faccio con raspberry e non mi funziona....

comunque si leggerò la documentazione purtroppo sono più un tipo da prova su campo.

Link al commento
Condividi su altri siti

marcellominafra

ancora una cosa, visitando il tuo sito in cerca di documentazione "http://snap7.sourceforge.net/" mi sono accorto che io ho avuto modo di conoscerti in ******************..

non so se ti ricordi sono Marcello Minafra. programmatore plc presso************************ ho avuto modo spesso di interfacciarmi con.***********************************.

Complimenti ancora per l'ottimo lavoro fatto SNAP7 . :smile:

Modificato: da Giuseppe Signorella
Link al commento
Condividi su altri siti

  • 1 month later...

Buongiorno,

vorrei capire come

********

Grazie in antico e buona giornata.

Saluti..

******* nota del moderatore.

Gli accodamenti sono vietati dal regolamento perchè son causa di disguidi e confusioni.

Se vuoi apri una discussi0one sull'argomento

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

Ospite
Questa discussione è chiusa alle risposte.
×
×
  • Crea nuovo/a...